From fbf12a8c6020ddfeeb87efffac5ad8eec9a24aca Mon Sep 17 00:00:00 2001 From: Mahesh Kumar Gangula Date: Tue, 14 Aug 2018 17:49:35 +0530 Subject: [PATCH 0001/1345] Issue #000 fix: remove unused configuration variables. --- .../roles/stack-sunbird/templates/sunbird_content-service.env | 2 -- 1 file changed, 2 deletions(-) diff --git a/ansible/roles/stack-sunbird/templates/sunbird_content-service.env b/ansible/roles/stack-sunbird/templates/sunbird_content-service.env index a396120498..a60cf70fcc 100644 --- a/ansible/roles/stack-sunbird/templates/sunbird_content-service.env +++ b/ansible/roles/stack-sunbird/templates/sunbird_content-service.env @@ -1,5 +1,3 @@ -sunbird_content_provider_api_base_url={{sunbird_ekstep_api_base_url}} -sunbird_content_provider_api_key={{sunbird_ekstep_api_key}} sunbird_content_plugin_base_url={{sunbird_ekstep_proxy_base_url}} sunbird_learner_service_api_key={{sunbird_api_auth_token}} sunbird_learner_service_base_url={{sunbird_learner_service_base_url}} From a81bb6a5c059c8252c45cb07d7ed53639acab5cc Mon Sep 17 00:00:00 2001 From: smy <30286162+SMYALTAMASH@users.noreply.github.com> Date: Tue, 14 Aug 2018 18:19:51 +0530 Subject: [PATCH 0002/1345] Issue #000 proxy-vars: proxy service vars (#216) --- ansible/roles/stack-proxy/defaults/main.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ansible/roles/stack-proxy/defaults/main.yml b/ansible/roles/stack-proxy/defaults/main.yml index 3f58a53e9a..de195435c3 100644 --- a/ansible/roles/stack-proxy/defaults/main.yml +++ b/ansible/roles/stack-proxy/defaults/main.yml @@ -23,4 +23,5 @@ proxy_prometheus_admin_creds: prometheus_route_prefix: prometheus prometheus_alertmanager_route_prefix: alertmanager ekstep_s3_env: "{{sunbird_env}}" -registry_url: "{{proto}}://{{proxy_server_name}}/registry" \ No newline at end of file +registry_url: "{{proto}}://{{proxy_server_name}}/registry" +ep_es_host: From 41154ec30c75d1b24eb7dd9596f45e1f89da292e Mon Sep 17 00:00:00 2001 From: Vinaya Kumar B Date: Fri, 17 Aug 2018 11:34:17 +0530 Subject: [PATCH 0003/1345] Issue #SB-SB-3124 feat: Onboarding of update and endorse user skill APIs --- ansible/roles/kong-api/defaults/main.yml | 32 ++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/ansible/roles/kong-api/defaults/main.yml b/ansible/roles/kong-api/defaults/main.yml index 31c0e05e98..2a84c3e51e 100644 --- a/ansible/roles/kong-api/defaults/main.yml +++ b/ansible/roles/kong-api/defaults/main.yml @@ -1650,6 +1650,38 @@ kong_apis: config.limit_by: credential - name: request-size-limiting config.allowed_payload_size: "{{ medium_request_size_limit }}" + - name: updateUserSkill + request_path: "{{ user_service_prefix }}/v1/skill/update" + upstream_url: "{{ learning_service_url }}/v1/user/skill/update" + strip_request_path: true + plugins: + - name: jwt + - name: cors + - "{{ statsd_pulgin }}" + - name: acl + config.whitelist: publicUser + - name: rate-limiting + config.policy: local + config.hour: "{{ medium_rate_limit_per_hour }}" + config.limit_by: credential + - name: request-size-limiting + config.allowed_payload_size: "{{ medium_request_size_limit }}" + - name: addUserSkillEndorsement + request_path: "{{ user_service_prefix }}/v1/skill/endorse/add" + upstream_url: "{{ learning_service_url }}/v1/user/skill/endorse/add" + strip_request_path: true + plugins: + - name: jwt + - name: cors + - "{{ statsd_pulgin }}" + - name: acl + config.whitelist: publicUser + - name: rate-limiting + config.policy: local + config.hour: "{{ medium_rate_limit_per_hour }}" + config.limit_by: credential + - name: request-size-limiting + config.allowed_payload_size: "{{ medium_request_size_limit }}" - name: getAllData request_path: "{{ data_service_prefix }}/v1/object/read/list" upstream_url: "{{ learning_service_url }}/v1/object/read/list" From 613ab77060c374c559674046ec10f3e4f6ca9a81 Mon Sep 17 00:00:00 2001 From: S M Y Date: Fri, 17 Aug 2018 17:11:36 +0530 Subject: [PATCH 0004/1345] Issue #000 monitoring: Monitoring process --- ansible/monitoring.yml | 9 +++ .../templates/alertrules.process | 40 +++++++++++ .../defaults/main.yml | 17 +++++ .../files/config.yml | 12 ++++ .../handlers/main.yml | 9 +++ .../vm-agents-processexporter/tasks/main.yml | 69 +++++++++++++++++++ .../templates/process-exporter.service.j2 | 15 ++++ 7 files changed, 171 insertions(+) create mode 100644 ansible/roles/stack-monitor/templates/alertrules.process create mode 100755 ansible/roles/vm-agents-processexporter/defaults/main.yml create mode 100644 ansible/roles/vm-agents-processexporter/files/config.yml create mode 100755 ansible/roles/vm-agents-processexporter/handlers/main.yml create mode 100755 ansible/roles/vm-agents-processexporter/tasks/main.yml create mode 100755 ansible/roles/vm-agents-processexporter/templates/process-exporter.service.j2 diff --git a/ansible/monitoring.yml b/ansible/monitoring.yml index f2cfe3dd7f..dbf2ecc2e9 100644 --- a/ansible/monitoring.yml +++ b/ansible/monitoring.yml @@ -63,3 +63,12 @@ - vm-agents-nodeexporter tags: - metrics-exporter + +- hosts: node-exporter + become: yes + vars_files: + - ['{{inventory_dir}}/secrets.yml', 'secrets/{{env}}.yml'] + roles: + - vm-agents-processexporter + tags: + - metrics-exporter diff --git a/ansible/roles/stack-monitor/templates/alertrules.process b/ansible/roles/stack-monitor/templates/alertrules.process new file mode 100644 index 0000000000..ac0f72000d --- /dev/null +++ b/ansible/roles/stack-monitor/templates/alertrules.process @@ -0,0 +1,40 @@ +ALERT high_cpu_usage_on_node + IF sum(rate(process_cpu_seconds_total[5m]) * on (instance) group_left(nodename) node_uname_info * 100) by (nodename) > 80 + FOR 5m + ANNOTATIONS { + summary = "HIGH CPU USAGE WARNING ON '{% raw %}{{ $labels.nodename }}{% endraw %}'", + description = "{% raw %}{{ $labels.nodename }}{% endraw %} ({% raw %}{{ $labels.host }}{% endraw %}) is using a LOT of CPU. CPU usage is {% raw %}{{ humanize $value}}{% endraw %}%.", + } + +ALERT high_memory_usage_on_node + IF sum(((node_memory_MemTotal-node_memory_MemAvailable)/node_memory_MemTotal) * on (instance) group_left(nodename) node_uname_info * 100 ) by (nodename) > 90 + FOR 5m + ANNOTATIONS { + summary = "HIGH MEMORY USAGE WARNING TASK ON '{% raw %}{{ $labels.nodename }}{% endraw %}'", + description = "{% raw %}{{ $labels.nodename }}{% endraw %} ({% raw %}{{ $labels.host }}{% endraw %}) is using a LOT of MEMORY. MEMORY usage is over {% raw %}{{ humanize $value}}{% endraw %}%.", + } + +# node_load5 is not acaptured by all node hence using node_load1 +ALERT high_load_on_node + IF sum((node_load1 / count without (cpu, mode) (node_cpu{mode="system"})) * on (instance) group_left(nodename) node_uname_info * 100 ) by (nodename) > 100 + FOR 5m + ANNOTATIONS { + summary = "HIGH LOAD AVERAGE WARNING ON '{% raw %}{{ $labels.nodename }}{% endraw %}'", + description = "{% raw %}{{ $labels.nodename }}{% endraw %} ({% raw %}{{ $labels.host }}{% endraw %}) has a high load average. Load average is {% raw %}{{ $value }}{% endraw %}%.", + } + +ALERT monitoring_service_down + IF up == 0 + FOR 5m + ANNOTATIONS { + summary = "MONITORING SERVICE DOWN WARNING: NODE '{% raw %}{{ $labels.host }}{% endraw %}'", + description = "The monitoring service '{% raw %}{{ $labels.job }}{% endraw %}' is down.", + } + +ALERT node_running_out_of_disk_space + IF sum((node_filesystem_size{ mountpoint="/"} - node_filesystem_free{ mountpoint="/"}) * 100/ node_filesystem_size{mountpoint="/"} * on (instance) group_left(nodename) node_uname_info ) by (nodename) > 80 + FOR 5m + ANNOTATIONS { + summary = "LOW DISK SPACE WARING: NODE '{% raw %}{{ $labels.nodename }}{% endraw %}' ", + description = "More than 80% of disk used. Disk usage is {% raw %}{{ humanize $value }}{% endraw %}%", + } diff --git a/ansible/roles/vm-agents-processexporter/defaults/main.yml b/ansible/roles/vm-agents-processexporter/defaults/main.yml new file mode 100755 index 0000000000..251c493a84 --- /dev/null +++ b/ansible/roles/vm-agents-processexporter/defaults/main.yml @@ -0,0 +1,17 @@ +--- +prometheus_exporters_common_user: prometheus +prometheus_exporters_common_group: prometheus +prometheus_node_exporter_enabled_collectors: +prometheus_exporters_common_root_dir: /opt/prometheus/exporters +prometheus_exporters_common_dist_dir: "{{ prometheus_exporters_common_root_dir }}/dist" +prometheus_exporters_common_log_dir: /var/log/prometheus +prometheus_exporters_common_conf_dir: /etc/prometheus/exporters + +prometheus_process_exporter_version: 0.2.12 +prometheus_process_exporter_release_name: "process-exporter-0.2.12.linux-amd64" +prometheus_process_exporter_download_url: "https://github.com/ncabatoff/process-exporter/releases/download/v0.2.12/process-exporter-0.2.12.linux-amd64.tar.gz" +prometheus_process_exporter_enabled_collectors: + +prometheus_process_exporter_config_flags: + 'web.listen-address': '0.0.0.0:9256' + 'log.level': 'info' diff --git a/ansible/roles/vm-agents-processexporter/files/config.yml b/ansible/roles/vm-agents-processexporter/files/config.yml new file mode 100644 index 0000000000..643943f856 --- /dev/null +++ b/ansible/roles/vm-agents-processexporter/files/config.yml @@ -0,0 +1,12 @@ +process_names: + - name: "{{.Comm}}" + cmdline: + - '.+' +#process_names: +# - comm: +# - mysqld +# - apache2 +# - exe: +# - /usr/bin +# - /usr/sbin + diff --git a/ansible/roles/vm-agents-processexporter/handlers/main.yml b/ansible/roles/vm-agents-processexporter/handlers/main.yml new file mode 100755 index 0000000000..3eab2b67b0 --- /dev/null +++ b/ansible/roles/vm-agents-processexporter/handlers/main.yml @@ -0,0 +1,9 @@ +--- + +- name: reenable process exporter service + command: systemctl reenable process-exporter.service + +- name: restart process exporter + service: + name: process-exporter + state: restarted diff --git a/ansible/roles/vm-agents-processexporter/tasks/main.yml b/ansible/roles/vm-agents-processexporter/tasks/main.yml new file mode 100755 index 0000000000..6d2210b45c --- /dev/null +++ b/ansible/roles/vm-agents-processexporter/tasks/main.yml @@ -0,0 +1,69 @@ +--- +- name: create prometheus system group + group: + name: "{{ prometheus_exporters_common_group }}" + system: yes + state: present + +- name: create prometheus system user + user: + name: "{{ prometheus_exporters_common_user }}" + system: yes + shell: "/sbin/nologin" + group: "{{ prometheus_exporters_common_group }}" + createhome: no + +- name: download prometheus process exporter binary + get_url: + url: "{{ prometheus_process_exporter_download_url }}" + dest: "{{ prometheus_exporters_common_dist_dir }}/{{ prometheus_process_exporter_release_name }}.tar.gz" + +- name: unarchive binary tarball + unarchive: + copy: no + src: "{{ prometheus_exporters_common_dist_dir }}/{{ prometheus_process_exporter_release_name }}.tar.gz" + dest: "{{ prometheus_exporters_common_dist_dir }}" + creates: "{{ prometheus_exporters_common_dist_dir }}/{{ prometheus_process_exporter_release_name }}/process_exporter" + register: prometheus_process_exporter_updated + notify: + - restart process exporter + +- name: copy the custom configuration file + copy: + src: config.yml + dest: "{{ prometheus_exporters_common_dist_dir }}/{{ prometheus_process_exporter_release_name }}" + +- name: update group and owner for files + file: + path: "{{ prometheus_process_exporter_release_name }}" + state: directory + recurse: yes + owner: "{{ prometheus_exporters_common_user}}" + group: "{{ prometheus_exporters_common_group }}" + when: prometheus_process_exporter_updated | changed + +- name: create symlink to the current release + file: + src: "{{ prometheus_exporters_common_dist_dir }}/{{ prometheus_process_exporter_release_name }}" + path: "{{ prometheus_exporters_common_root_dir }}/process_exporter_current" + state: link + +- name: create systemd service unit + template: + src: process-exporter.service.j2 + dest: /etc/systemd/system/process-exporter.service + owner: root + group: root + mode: 0644 + notify: + - reenable process exporter service + - restart process exporter + +- meta: flush_handlers + +- name: ensure prometheus process exporter service is enabled and started + service: + name: process-exporter + state: started + enabled: yes + diff --git a/ansible/roles/vm-agents-processexporter/templates/process-exporter.service.j2 b/ansible/roles/vm-agents-processexporter/templates/process-exporter.service.j2 new file mode 100755 index 0000000000..98c9e58856 --- /dev/null +++ b/ansible/roles/vm-agents-processexporter/templates/process-exporter.service.j2 @@ -0,0 +1,15 @@ +[Unit] +Description=Prometheus Process Exporter +After=network.target + +[Service] +Type=simple +User={{ prometheus_exporters_common_user }} +Group={{ prometheus_exporters_common_group }} +ExecStart={{ prometheus_exporters_common_root_dir }}/process_exporter_current/process-exporter -config.path {{ prometheus_exporters_common_dist_dir }}/{{ prometheus_process_exporter_release_name }}/config.yml -web.listen-address :1111 + +SyslogIdentifier=process_exporter +Restart=always + +[Install] +WantedBy=multi-user.target From b9f2ac8bfc5ddd8bb197fc87462356af403d76d3 Mon Sep 17 00:00:00 2001 From: S M Y Date: Fri, 17 Aug 2018 17:47:09 +0530 Subject: [PATCH 0005/1345] Issue #000 monitor: monitoring process --- ansible/roles/stack-monitor/templates/prometheus.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/ansible/roles/stack-monitor/templates/prometheus.yml b/ansible/roles/stack-monitor/templates/prometheus.yml index d5e158b5d8..264c6b2e05 100644 --- a/ansible/roles/stack-monitor/templates/prometheus.yml +++ b/ansible/roles/stack-monitor/templates/prometheus.yml @@ -5,6 +5,7 @@ global: rule_files: - '/etc/prometheus-rules/alertrules.nodes' + - '/etc/prometheus-rules/alertrules.process' - '/etc/prometheus-rules/alertrules.task' - '/etc/prometheus-rules/alertrules.es' - '/etc/prometheus-rules/alertrules.logs' @@ -105,6 +106,11 @@ scrape_configs: static_configs: - targets: {{ groups['node-exporter'] | difference(["localhost"]) | map('regex_replace', '^(.*)$', '\\1:9101' ) | list | to_yaml }} + - job_name: 'process-exporter' + metrics_path: /metrics + static_configs: + - targets: ['node-exporter:1111'] + {% for item in service_blackbox_checks %} # This empty line ensures indentation is correct after ansible jinja2 template is materialized - job_name: 'availability_{{ item.service_name }}' From 55dbeb940ad1e8cdad5be9738f09f926b7cc1707 Mon Sep 17 00:00:00 2001 From: bvinayakumar <36028332+bvinayakumar@users.noreply.github.com> Date: Fri, 24 Aug 2018 20:45:09 +0530 Subject: [PATCH 0006/1345] Fix docker build script (#219) --- images/openbadger/configure.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/images/openbadger/configure.sh b/images/openbadger/configure.sh index 9eaa62c383..189b36884c 100755 --- a/images/openbadger/configure.sh +++ b/images/openbadger/configure.sh @@ -12,6 +12,7 @@ pip install psycopg2 cd /badger git clone https://github.com/concentricsky/badgr-server.git code cd code +git checkout -b sunbird e6b8568798686217d1b9fff06dde57e0a681dd25 # Mysql is not needed, but uses postgres sed -i s/MySQL-python==1.2.5/#\ MySQL-python==1.2.5/ requirements.txt From 42fdc31b74c968c97daa8c6aeb495fae6b8c2765 Mon Sep 17 00:00:00 2001 From: S M Y Date: Wed, 29 Aug 2018 15:22:29 +0530 Subject: [PATCH 0007/1345] Issue #000 configService: Sunbird config service in deployment script --- deploy/deploy-core.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/deploy/deploy-core.sh b/deploy/deploy-core.sh index 153b1a1b13..82f0f01b8e 100755 --- a/deploy/deploy-core.sh +++ b/deploy/deploy-core.sh @@ -44,3 +44,6 @@ ansible-playbook -i $INVENTORY_PATH ../ansible/deploy.yml --tags "stack-sunbird" echo "Redeploy Telemetry service" ansible-playbook -i $INVENTORY_PATH ../ansible/deploy.yml --tags "stack-sunbird" --extra-vars "hub_org=${ORG} image_name=telemetry-service image_tag=${TELEMETRY_SERVICE_VERSION} service_name=telemetry-service deploy_telemetry=True" --extra-vars @config +#Config-Service +echo "Deploy Config service" +ansible-playbook -i $INVENTORY_PATH ../ansible/deploy.yml --tags "stack-sunbird" --extra-vars "hub_org=${ORG} image_name=config-service image_tag=${CONFIG_SERVICE_VERSION} service_name=config-service deploy_config=True" --extra-vars @config From a72250c1c04b314a6cd8d51bc618f13f9a8bb860 Mon Sep 17 00:00:00 2001 From: S M Y Date: Wed, 29 Aug 2018 15:27:47 +0530 Subject: [PATCH 0008/1345] Issue #000 config: Sunbird config service version of image --- deploy/version.env | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deploy/version.env b/deploy/version.env index 97bbeb3ab9..1b59cc8cb1 100755 --- a/deploy/version.env +++ b/deploy/version.env @@ -5,4 +5,4 @@ PROXY_VERSION=1.8.0-gold BADGER_SERVICE_VERSION=1.8.0-gold KONG_VERSION=1.8.0-gold TELEMETRY_SERVICE_VERSION=1.8.1-gold - +CONFIG_SERVICE_VERSION=1.10.0-bronze From 9262f1af88433dacc17fe8db3671fa31067d859e Mon Sep 17 00:00:00 2001 From: S M Y Date: Wed, 29 Aug 2018 15:41:23 +0530 Subject: [PATCH 0009/1345] Issue #000 config: Sunbird config service deployment --- ansible/roles/stack-sunbird/defaults/main.yml | 7 +++++++ ansible/roles/stack-sunbird/tasks/config_service.yml | 9 +++++++++ ansible/roles/stack-sunbird/tasks/main.yml | 3 +++ 3 files changed, 19 insertions(+) create mode 100644 ansible/roles/stack-sunbird/tasks/config_service.yml diff --git a/ansible/roles/stack-sunbird/defaults/main.yml b/ansible/roles/stack-sunbird/defaults/main.yml index dad2d795f0..acfe2a88a8 100644 --- a/ansible/roles/stack-sunbird/defaults/main.yml +++ b/ansible/roles/stack-sunbird/defaults/main.yml @@ -18,6 +18,13 @@ learner_replicas: 1 learner_reservation_memory: 256M learner_limit_memory: 512M +#Config Service Vars +config_replicas: 1 +config_reservation_memory: 256M +config_limit_memory: +config_limit_cpu: 1 +config_reservation_cpu: 1 + # This variable is not to access learner service but to call the api # learner-service:9000/org/v1/search sunbird_learner_service_base_url: http://api-manager_kong:8000 diff --git a/ansible/roles/stack-sunbird/tasks/config_service.yml b/ansible/roles/stack-sunbird/tasks/config_service.yml new file mode 100644 index 0000000000..822816ca73 --- /dev/null +++ b/ansible/roles/stack-sunbird/tasks/config_service.yml @@ -0,0 +1,9 @@ +--- +- name: Remove config service + shell: "docker service rm config-service" + ignore_errors: yes + +- name: Deploy config service + shell: "docker service create --replicas {{ config_replicas }} -p 9000:9000 --name config-service --hostname config-service --reserve-memory {{ config_reservation_memory }} --limit-memory {{ config_limit_memory }} --limit-cpu {{ config_limit_cpu }} --reserve-cpu {{ config_reservation_cpu }} --network application_default --env-file /home/deployer/env/sunbird_config-service.env {{hub_org}}/{{image_name}}:{{image_tag}}" + args: + chdir: /home/deployer/stack diff --git a/ansible/roles/stack-sunbird/tasks/main.yml b/ansible/roles/stack-sunbird/tasks/main.yml index 31b2d19d72..01f9dcb4aa 100644 --- a/ansible/roles/stack-sunbird/tasks/main.yml +++ b/ansible/roles/stack-sunbird/tasks/main.yml @@ -15,3 +15,6 @@ - include: telemetry_logstash.yml when: deploy_telemetry_logstash is defined + + - include: config_service.yml + when: deploy_config is defined From 21c891c4f8f1214007e3d67edd09971f0adb7935 Mon Sep 17 00:00:00 2001 From: S M Y Date: Wed, 29 Aug 2018 16:10:06 +0530 Subject: [PATCH 0010/1345] Issue #000 config: Sunbird config service vars and env file updation --- ansible/inventories/sample/group_vars/sample | 6 ++++- .../templates/stack_config_service.yml | 23 +++++++++++++++++++ .../templates/sunbird_config-service.env | 5 ++++ 3 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 ansible/roles/stack-sunbird/templates/stack_config_service.yml create mode 100644 ansible/roles/stack-sunbird/templates/sunbird_config-service.env diff --git a/ansible/inventories/sample/group_vars/sample b/ansible/inventories/sample/group_vars/sample index 951435b8ec..1997f6b71f 100644 --- a/ansible/inventories/sample/group_vars/sample +++ b/ansible/inventories/sample/group_vars/sample @@ -306,4 +306,8 @@ sunbird_telemetry_kafka_servers: sunbird_data_pipeline_kafka_servers: sunbird_telemetry_kafka_topic: - +#Config Service Vars +cloud_storage_type="azure" +azure_storage_key="{{sunbird_azure_storage_account}}" +azure_storage_secret="{{sunbird_azure_storage_key}}" +azure_storage_container="" diff --git a/ansible/roles/stack-sunbird/templates/stack_config_service.yml b/ansible/roles/stack-sunbird/templates/stack_config_service.yml new file mode 100644 index 0000000000..eff1f34160 --- /dev/null +++ b/ansible/roles/stack-sunbird/templates/stack_config_service.yml @@ -0,0 +1,23 @@ +version: '3.1' +services: + config_service: + image: "{{hub_org}}/{{image_name}}:{{image_tag}}" + env_file: + /home/deployer/env/sunbird_config_service.env + deploy: + replicas: {{ config_replicas | default(1) }} + resources: + reservations: + memory: "{{ config_reservation_memory | default('256M') }}" + limits: + memory: "{{ config_limit_memory | default('512M') }}" + interval: 10s + timeout: 5s + retries: 5 + ports: + - "6000:6000" + networks: + - application_default +networks: + application_default: + external: true diff --git a/ansible/roles/stack-sunbird/templates/sunbird_config-service.env b/ansible/roles/stack-sunbird/templates/sunbird_config-service.env new file mode 100644 index 0000000000..0fb8f19cd1 --- /dev/null +++ b/ansible/roles/stack-sunbird/templates/sunbird_config-service.env @@ -0,0 +1,5 @@ +bind_hostname=0.0.0.0 +cloud_storage_type="{{ cloud_storage_type }}" +azure_storage_key="{{ azure_storage_key }}" +azure_storage_secret="{{ azure_storage_secret }} " +azure_storage_container="{{ azure_storage_container }}" From 72d41bb0e1123caaf1598b045c3d5db256cd0e3f Mon Sep 17 00:00:00 2001 From: S M Y Date: Wed, 29 Aug 2018 20:33:42 +0530 Subject: [PATCH 0011/1345] Issue #SB-6505 config: Sunbird config service env vars and secrets --- ansible/roles/stack-sunbird/tasks/config_service.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/stack-sunbird/tasks/config_service.yml b/ansible/roles/stack-sunbird/tasks/config_service.yml index 822816ca73..6f27717b3f 100644 --- a/ansible/roles/stack-sunbird/tasks/config_service.yml +++ b/ansible/roles/stack-sunbird/tasks/config_service.yml @@ -4,6 +4,6 @@ ignore_errors: yes - name: Deploy config service - shell: "docker service create --replicas {{ config_replicas }} -p 9000:9000 --name config-service --hostname config-service --reserve-memory {{ config_reservation_memory }} --limit-memory {{ config_limit_memory }} --limit-cpu {{ config_limit_cpu }} --reserve-cpu {{ config_reservation_cpu }} --network application_default --env-file /home/deployer/env/sunbird_config-service.env {{hub_org}}/{{image_name}}:{{image_tag}}" + shell: "docker service create --replicas {{ config_replicas }} -p 6000:8080 --name config-service --hostname config-service --reserve-memory {{ config_reservation_memory }} --limit-memory {{ config_limit_memory }} --limit-cpu {{ config_limit_cpu }} --reserve-cpu {{ config_reservation_cpu }} --network application_default --env-file /home/deployer/env/sunbird_config-service.env {{hub_org}}/{{image_name}}:{{image_tag}}" args: chdir: /home/deployer/stack From 3567ce7b0de6d2d86c4d73500135682fb79bf71d Mon Sep 17 00:00:00 2001 From: S M Y Date: Wed, 29 Aug 2018 20:42:58 +0530 Subject: [PATCH 0012/1345] Issue #000 configService: env vars for configService --- .../roles/stack-sunbird/templates/sunbird_config-service.env | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/stack-sunbird/templates/sunbird_config-service.env b/ansible/roles/stack-sunbird/templates/sunbird_config-service.env index 0fb8f19cd1..a78833c60c 100644 --- a/ansible/roles/stack-sunbird/templates/sunbird_config-service.env +++ b/ansible/roles/stack-sunbird/templates/sunbird_config-service.env @@ -1,5 +1,5 @@ bind_hostname=0.0.0.0 cloud_storage_type="{{ cloud_storage_type }}" azure_storage_key="{{ azure_storage_key }}" -azure_storage_secret="{{ azure_storage_secret }} " +azure_storage_secret="{{ azure_storage_secret }}" azure_storage_container="{{ azure_storage_container }}" From 975264b8f3704a536b3fcc9d6d2c6814f38be1d9 Mon Sep 17 00:00:00 2001 From: S M Y Date: Wed, 29 Aug 2018 21:28:18 +0530 Subject: [PATCH 0013/1345] Issue #000 configService: env vars for configService --- ansible/roles/stack-sunbird/defaults/main.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ansible/roles/stack-sunbird/defaults/main.yml b/ansible/roles/stack-sunbird/defaults/main.yml index acfe2a88a8..8562f8489e 100644 --- a/ansible/roles/stack-sunbird/defaults/main.yml +++ b/ansible/roles/stack-sunbird/defaults/main.yml @@ -20,8 +20,8 @@ learner_limit_memory: 512M #Config Service Vars config_replicas: 1 -config_reservation_memory: 256M -config_limit_memory: +config_reservation_memory: 1024M +config_limit_memory: 1024M config_limit_cpu: 1 config_reservation_cpu: 1 From 1029f0f10317db4cc577d455a1e79fd9fd414039 Mon Sep 17 00:00:00 2001 From: S M Y Date: Wed, 29 Aug 2018 21:42:19 +0530 Subject: [PATCH 0014/1345] Issue #000 configService: env vars for configService --- ansible/roles/stack-sunbird/templates/stack_config_service.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/stack-sunbird/templates/stack_config_service.yml b/ansible/roles/stack-sunbird/templates/stack_config_service.yml index eff1f34160..bbc17f9d0c 100644 --- a/ansible/roles/stack-sunbird/templates/stack_config_service.yml +++ b/ansible/roles/stack-sunbird/templates/stack_config_service.yml @@ -15,7 +15,7 @@ services: timeout: 5s retries: 5 ports: - - "6000:6000" + - "6000:8080" networks: - application_default networks: From 7650a58c286cdd570da4d58d9f136c61d56dbba5 Mon Sep 17 00:00:00 2001 From: S M Y Date: Wed, 29 Aug 2018 21:57:05 +0530 Subject: [PATCH 0015/1345] Issue #000 configService: env vars for configService --- ansible/inventories/sample/group_vars/sample | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/ansible/inventories/sample/group_vars/sample b/ansible/inventories/sample/group_vars/sample index 1997f6b71f..2f3cf18324 100644 --- a/ansible/inventories/sample/group_vars/sample +++ b/ansible/inventories/sample/group_vars/sample @@ -311,3 +311,8 @@ cloud_storage_type="azure" azure_storage_key="{{sunbird_azure_storage_account}}" azure_storage_secret="{{sunbird_azure_storage_key}}" azure_storage_container="" + + +aws_storage_key="" +aws_storage_secret="" +aws_storage_container="" From 91c86bcb5775999b69af7eccafff154cc5563006 Mon Sep 17 00:00:00 2001 From: S M Y Date: Wed, 29 Aug 2018 21:58:28 +0530 Subject: [PATCH 0016/1345] Issue #000 configService: env vars for configService --- .../roles/stack-sunbird/templates/sunbird_config-service.env | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ansible/roles/stack-sunbird/templates/sunbird_config-service.env b/ansible/roles/stack-sunbird/templates/sunbird_config-service.env index a78833c60c..87e524abe9 100644 --- a/ansible/roles/stack-sunbird/templates/sunbird_config-service.env +++ b/ansible/roles/stack-sunbird/templates/sunbird_config-service.env @@ -3,3 +3,6 @@ cloud_storage_type="{{ cloud_storage_type }}" azure_storage_key="{{ azure_storage_key }}" azure_storage_secret="{{ azure_storage_secret }}" azure_storage_container="{{ azure_storage_container }}" +aws_storage_key="{{aws_storage_key}}" +aws_storage_secret="{{aws_storage_secret}}" +aws_storage_container="{{aws_storage_container}}" From d343e5d781e662fb4f222abfad1e389b0de3cfb9 Mon Sep 17 00:00:00 2001 From: S M Y Date: Thu, 30 Aug 2018 13:27:03 +0530 Subject: [PATCH 0017/1345] Issue #000 conf: Telemetry logstash output block added --- .../roles/stack-sunbird/templates/telemetry-logstash.conf | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/ansible/roles/stack-sunbird/templates/telemetry-logstash.conf b/ansible/roles/stack-sunbird/templates/telemetry-logstash.conf index 2e6cd2f04c..f5dbe02651 100644 --- a/ansible/roles/stack-sunbird/templates/telemetry-logstash.conf +++ b/ansible/roles/stack-sunbird/templates/telemetry-logstash.conf @@ -7,6 +7,11 @@ input { } } output { + kafka { + codec => json + topic_id => "{{sunbird_data_pipeline_kafka_topic}}" + bootstrap_servers => "{{sunbird_data_pipeline_kafka_servers}}" + } http { url => "{{sunbird_telemetry_api}}" content_type => "application/json" From 54d7783eb03f95ba8fd6fd48c1f83b60126bc2f3 Mon Sep 17 00:00:00 2001 From: Amol Ghatol Date: Thu, 30 Aug 2018 16:33:12 +0530 Subject: [PATCH 0018/1345] Issue #SB-6878 chore:Onboard API's (#221) * Issue #SB-3599 fix: Added default block to prevent host header injection * Issue #SB-6878 chore:Onboard API's --- ansible/roles/kong-api/defaults/main.yml | 30 +++++++++++++++++-- .../stack-proxy/templates/proxy-default.conf | 14 ++++----- 2 files changed, 35 insertions(+), 9 deletions(-) diff --git a/ansible/roles/kong-api/defaults/main.yml b/ansible/roles/kong-api/defaults/main.yml index 2a84c3e51e..0fb4f3326b 100644 --- a/ansible/roles/kong-api/defaults/main.yml +++ b/ansible/roles/kong-api/defaults/main.yml @@ -47,6 +47,7 @@ channel_service_prefix: /channel framework_service_prefix: /framework badge_service_prefix: /badging plugin_service_prefix: /plugins +config_service_prefix: /config # Service URLs content_service_url: "http://content-service:5000" @@ -55,6 +56,7 @@ telemetry_service_url: "http://telemetry-service:9001" player_service_url: "http://player_player:3000" echo_service_url: "http://api-manager_echo:9595" am_util_url: http://adminutil_adminutil:4000 +config_service_url: http://config-service:6000 premium_consumer_rate_limits: - api: createContent @@ -3131,9 +3133,9 @@ kong_apis: config.hour: "{{ medium_rate_limit_per_hour }}" config.limit_by: credential - name: request-size-limiting - config.allowed_payload_size: "{{ small_request_size_limit }}" + config.allowed_payload_size: "{{ small_request_size_limit }}" - # Data pipeline + # Data pipeline - name: "datasetSubmitRequest" request_path: "{{ data_service_prefix }}/v3/dataset/request/submit" upstream_url: "{{ learning_analytics_service_url }}/dataset/request/submit" @@ -3179,3 +3181,27 @@ kong_apis: - {name: 'acl', config.whitelist: 'publicUser'} - {name: 'rate-limiting', config.policy: "local", config.hour: "{{ medium_rate_limit_per_hour }}"} - {name: 'request-size-limiting', config.allowed_payload_size: "{{ small_request_size_limit }}" } + + - name: "configRefresh" + request_path: "{{ config_service_prefix }}/v1/refresh" + upstream_url: "{{ config_service_url }}/config-service/v1/refresh" + strip_request_path: true + plugins: + - {name: 'jwt'} + - {name: 'cors'} + - {name: 'statsd', config.metrics: "{{ statsd_metrics }}" } + - {name: 'acl', config.whitelist: 'dataAdmin'} + - {name: 'rate-limiting', config.policy: "local", config.hour: "{{ small_rate_limit_per_hour }}"} + - {name: 'request-size-limiting', config.allowed_payload_size: "{{ small_request_size_limit }}" } + + - name: "getConfigByKey" + request_path: "{{ config_service_prefix }}/v1/read" + upstream_url: "{{ config_service_url }}/config-service/v1/read" + strip_request_path: true + plugins: + - {name: 'jwt'} + - {name: 'cors'} + - {name: 'statsd', config.metrics: "{{ statsd_metrics }}" } + - {name: 'acl', config.whitelist: 'publicUser'} + - {name: 'rate-limiting', config.policy: "local", config.hour: "{{ large_rate_limit_per_hour }}"} + - {name: 'request-size-limiting', config.allowed_payload_size: "{{ small_request_size_limit }}" } diff --git a/ansible/roles/stack-proxy/templates/proxy-default.conf b/ansible/roles/stack-proxy/templates/proxy-default.conf index 2d9d8cde56..b76a99e1af 100644 --- a/ansible/roles/stack-proxy/templates/proxy-default.conf +++ b/ansible/roles/stack-proxy/templates/proxy-default.conf @@ -1,13 +1,13 @@ -{% if env != 'dev' %} +#{% if env != 'dev' %} server { listen 80 default_server; server_name _; # This is just an invalid value which will never trigger on a real hostname. server_name_in_redirect off; return 403; } -{% endif %} -{% if proto=='https' %} -{% if env != 'dev' %} +#{% endif %} +{% if proto=='https' %} +#{% if env != 'dev' %} server { listen 443 default_server ssl; server_name _; # This is just an invalid value which will never trigger on a real hostname. @@ -16,7 +16,7 @@ server { server_name_in_redirect off; return 403; } -{% endif %} +#{% endif %} server { listen 80; listen [::]:80; @@ -116,7 +116,7 @@ server { sub_filter '' ''; sub_filter_once on; } - + location /pipeline-dashboard/ { set $target http://{{ ep_es_host}}:5601; rewrite ^/pipeline-dashboard/(.*) /$1 break; @@ -178,7 +178,7 @@ server { proxy_set_header X-Forwarded-Proto $scheme; # root /usr/share/nginx/www; } - + location /badging/ { set $target http://badger-service:8004; From 0f503d08866e8ecd315043e35fc9080bc6577b07 Mon Sep 17 00:00:00 2001 From: santhosh-optit <31979949+santhosh-optit@users.noreply.github.com> Date: Thu, 30 Aug 2018 21:04:09 +0530 Subject: [PATCH 0019/1345] Issue #000 updated config-service vars --- .../templates/sunbird_config-service.env | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/ansible/roles/stack-sunbird/templates/sunbird_config-service.env b/ansible/roles/stack-sunbird/templates/sunbird_config-service.env index 87e524abe9..3886f414b6 100644 --- a/ansible/roles/stack-sunbird/templates/sunbird_config-service.env +++ b/ansible/roles/stack-sunbird/templates/sunbird_config-service.env @@ -1,8 +1,8 @@ bind_hostname=0.0.0.0 -cloud_storage_type="{{ cloud_storage_type }}" -azure_storage_key="{{ azure_storage_key }}" -azure_storage_secret="{{ azure_storage_secret }}" -azure_storage_container="{{ azure_storage_container }}" -aws_storage_key="{{aws_storage_key}}" -aws_storage_secret="{{aws_storage_secret}}" -aws_storage_container="{{aws_storage_container}}" +cloud_storage_type={{cloud_storage_type}} +azure_storage_key={{azure_storage_key}} +azure_storage_secret={{azure_storage_secret}} +azure_storage_container={{azure_storage_container}} +aws_storage_key={{aws_storage_key}} +aws_storage_secret={{aws_storage_secret}} +aws_storage_container={{aws_storage_container}} From fdafda2fe9138f7d9b920eb653d1115331015fcf Mon Sep 17 00:00:00 2001 From: S M Y Date: Fri, 31 Aug 2018 11:32:35 +0530 Subject: [PATCH 0020/1345] Issue #000 config: config port exposing --- ansible/roles/stack-sunbird/templates/stack_config_service.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/stack-sunbird/templates/stack_config_service.yml b/ansible/roles/stack-sunbird/templates/stack_config_service.yml index bbc17f9d0c..c8fc7f791c 100644 --- a/ansible/roles/stack-sunbird/templates/stack_config_service.yml +++ b/ansible/roles/stack-sunbird/templates/stack_config_service.yml @@ -15,7 +15,7 @@ services: timeout: 5s retries: 5 ports: - - "6000:8080" + - "8080:6000" networks: - application_default networks: From a0f146b1f3679e7c6f01bc08034b2ed9455d2c02 Mon Sep 17 00:00:00 2001 From: S M Y Date: Fri, 31 Aug 2018 11:47:01 +0530 Subject: [PATCH 0021/1345] Issue #000 config: config port exposing --- ansible/roles/stack-sunbird/templates/stack_config_service.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/stack-sunbird/templates/stack_config_service.yml b/ansible/roles/stack-sunbird/templates/stack_config_service.yml index c8fc7f791c..bbc17f9d0c 100644 --- a/ansible/roles/stack-sunbird/templates/stack_config_service.yml +++ b/ansible/roles/stack-sunbird/templates/stack_config_service.yml @@ -15,7 +15,7 @@ services: timeout: 5s retries: 5 ports: - - "8080:6000" + - "6000:8080" networks: - application_default networks: From 03ddeaca5de59a1261028460c0979dcc3f9ad391 Mon Sep 17 00:00:00 2001 From: Santhosh Gandham Date: Fri, 31 Aug 2018 13:15:25 +0530 Subject: [PATCH 0022/1345] Issue #000 updated proxy config to use local content store --- ansible/roles/stack-proxy/templates/proxy-default.conf | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/ansible/roles/stack-proxy/templates/proxy-default.conf b/ansible/roles/stack-proxy/templates/proxy-default.conf index b76a99e1af..581f20d9e4 100644 --- a/ansible/roles/stack-proxy/templates/proxy-default.conf +++ b/ansible/roles/stack-proxy/templates/proxy-default.conf @@ -196,7 +196,7 @@ server { } - location ~* ^/assets/public/(.*) { + location ~* ^/assets/public/(.*) { # Enabling cache for Response code 200 expires 1M; add_header Pragma public; @@ -218,10 +218,11 @@ server { return 200; } - set $s3_bucket "ekstep-public-{{ekstep_s3_env}}.s3-ap-south-1.amazonaws.com"; + set $azure_bucket "sunbird{{ekstep_s3_env}}.blob.core.windows.net"; set $url_full '$1'; + set $container_name "sunbird-content-{{ekstep_s3_env}}"; proxy_http_version 1.1; - proxy_set_header Host $s3_bucket; + proxy_set_header Host $azure_bucket; proxy_set_header Authorization ''; proxy_hide_header Access-Control-Allow-Origin; proxy_hide_header Access-Control-Allow-Methods; @@ -233,10 +234,9 @@ server { proxy_intercept_errors on; add_header Access-Control-Allow-Origin "*"; add_header Access-Control-Allow-Methods GET; - proxy_pass https://$s3_bucket/$url_full; + proxy_pass https://$azure_bucket/$container_name/$url_full; } - location ~* ^/content/preview/(.*) { # Enabling compression gzip on; From df667ad376df5938cd1ce06e980af1ea4b3b87e1 Mon Sep 17 00:00:00 2001 From: Santhosh Gandham Date: Fri, 31 Aug 2018 13:46:12 +0530 Subject: [PATCH 0023/1345] Issue #000 updated proxy config to use local content store --- ansible/roles/stack-proxy/templates/proxy-default.conf | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/ansible/roles/stack-proxy/templates/proxy-default.conf b/ansible/roles/stack-proxy/templates/proxy-default.conf index 581f20d9e4..bfc5f5242b 100644 --- a/ansible/roles/stack-proxy/templates/proxy-default.conf +++ b/ansible/roles/stack-proxy/templates/proxy-default.conf @@ -196,7 +196,7 @@ server { } - location ~* ^/assets/public/(.*) { + location ~* ^/assets/public/(.*) { # Enabling cache for Response code 200 expires 1M; add_header Pragma public; @@ -237,7 +237,8 @@ server { proxy_pass https://$azure_bucket/$container_name/$url_full; } -location ~* ^/content/preview/(.*) { + + location ~* ^/content/preview/(.*) { # Enabling compression gzip on; gzip_min_length 100000; From 89d629e10d7287022fc6fa63a53cd1f6a1efc3d7 Mon Sep 17 00:00:00 2001 From: Santhosh Gandham Date: Fri, 31 Aug 2018 13:56:48 +0530 Subject: [PATCH 0024/1345] Issue #000 updated proxy config to use local content store --- ansible/roles/stack-proxy/templates/proxy-default.conf | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ansible/roles/stack-proxy/templates/proxy-default.conf b/ansible/roles/stack-proxy/templates/proxy-default.conf index bfc5f5242b..b4c070e676 100644 --- a/ansible/roles/stack-proxy/templates/proxy-default.conf +++ b/ansible/roles/stack-proxy/templates/proxy-default.conf @@ -1,13 +1,13 @@ -#{% if env != 'dev' %} +{% if env != 'dev' %} server { listen 80 default_server; server_name _; # This is just an invalid value which will never trigger on a real hostname. server_name_in_redirect off; return 403; } -#{% endif %} +{% endif %} {% if proto=='https' %} -#{% if env != 'dev' %} +{% if env != 'dev' %} server { listen 443 default_server ssl; server_name _; # This is just an invalid value which will never trigger on a real hostname. @@ -16,7 +16,7 @@ server { server_name_in_redirect off; return 403; } -#{% endif %} +{% endif %} server { listen 80; listen [::]:80; From e7b4b015e3d4f59ac975dea9832333d0ee644a3a Mon Sep 17 00:00:00 2001 From: Santhosh Gandham Date: Fri, 31 Aug 2018 16:55:49 +0530 Subject: [PATCH 0025/1345] Issue #000 updated proxy config to use local content store --- ansible/roles/stack-proxy/templates/proxy-default.conf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ansible/roles/stack-proxy/templates/proxy-default.conf b/ansible/roles/stack-proxy/templates/proxy-default.conf index b4c070e676..494555be68 100644 --- a/ansible/roles/stack-proxy/templates/proxy-default.conf +++ b/ansible/roles/stack-proxy/templates/proxy-default.conf @@ -218,9 +218,9 @@ server { return 200; } - set $azure_bucket "sunbird{{ekstep_s3_env}}.blob.core.windows.net"; + set $azure_bucket "sunbird{{sunbird_blob_env}}.blob.core.windows.net"; set $url_full '$1'; - set $container_name "sunbird-content-{{ekstep_s3_env}}"; + set $container_name "sunbird-content-{{sunbird_blob_env}}"; proxy_http_version 1.1; proxy_set_header Host $azure_bucket; proxy_set_header Authorization ''; From 25031d5e5b84212044aca5349f2efbe3c4764929 Mon Sep 17 00:00:00 2001 From: Amol Ghatol Date: Fri, 31 Aug 2018 18:09:25 +0530 Subject: [PATCH 0026/1345] Issue #SB-6878 chore: Onboard API's (#222) --- ansible/roles/kong-api/defaults/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/kong-api/defaults/main.yml b/ansible/roles/kong-api/defaults/main.yml index 0fb4f3326b..e402f593cb 100644 --- a/ansible/roles/kong-api/defaults/main.yml +++ b/ansible/roles/kong-api/defaults/main.yml @@ -56,7 +56,7 @@ telemetry_service_url: "http://telemetry-service:9001" player_service_url: "http://player_player:3000" echo_service_url: "http://api-manager_echo:9595" am_util_url: http://adminutil_adminutil:4000 -config_service_url: http://config-service:6000 +config_service_url: http://config-service:8080 premium_consumer_rate_limits: - api: createContent From f08ac0e3ba223956197b27fe1906ac8ff417fd53 Mon Sep 17 00:00:00 2001 From: S M Y Date: Fri, 31 Aug 2018 18:40:41 +0530 Subject: [PATCH 0027/1345] Issue #SB-6505 config: Sunbird config service env vars --- .../roles/stack-sunbird/templates/sunbird_config-service.env | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/ansible/roles/stack-sunbird/templates/sunbird_config-service.env b/ansible/roles/stack-sunbird/templates/sunbird_config-service.env index 3886f414b6..25ac319aec 100644 --- a/ansible/roles/stack-sunbird/templates/sunbird_config-service.env +++ b/ansible/roles/stack-sunbird/templates/sunbird_config-service.env @@ -6,3 +6,7 @@ azure_storage_container={{azure_storage_container}} aws_storage_key={{aws_storage_key}} aws_storage_secret={{aws_storage_secret}} aws_storage_container={{aws_storage_container}} +sunbird_cassandra_host={{sunbird_cassandra_host}} +sunbird_cassandra_port={{sunbird_cassandra_port}} +sunbird_cassandra_username={{sunbird_cassandra_username}} +sunbird_cassandra_password={{sunbird_cassandra_password}} From 24d69c34721f1c28c2613f806aadf6eb96673542 Mon Sep 17 00:00:00 2001 From: S M Y Date: Fri, 31 Aug 2018 18:44:42 +0530 Subject: [PATCH 0028/1345] Issue #SB-6505 config: Sunbird config service env vars --- ansible/inventories/sample/group_vars/sample | 21 +++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/ansible/inventories/sample/group_vars/sample b/ansible/inventories/sample/group_vars/sample index 2f3cf18324..9a272e0b8c 100644 --- a/ansible/inventories/sample/group_vars/sample +++ b/ansible/inventories/sample/group_vars/sample @@ -307,12 +307,15 @@ sunbird_data_pipeline_kafka_servers: sunbird_telemetry_kafka_topic: #Config Service Vars -cloud_storage_type="azure" -azure_storage_key="{{sunbird_azure_storage_account}}" -azure_storage_secret="{{sunbird_azure_storage_key}}" -azure_storage_container="" - - -aws_storage_key="" -aws_storage_secret="" -aws_storage_container="" +cloud_storage_type: "azure" +azure_storage_key: "{{sunbird_azure_storage_account}}" +azure_storage_secret: "{{sunbird_azure_storage_key}}" +azure_storage_container: +aws_storage_key: +aws_storage_secret: +aws_storage_container: + +sunbird_cassandra_host: "{{groups['cassandra'][0]|default(database_host)}}" +sunbird_cassandra_port: 9200 +sunbird_cassandra_username: +sunbird_cassandra_password: "{{cassandra_password if cassandra_password else database_password}}" From 1d9c037b3de3c084e5d6fa004cdd6a2fdd3dc8ef Mon Sep 17 00:00:00 2001 From: S M Y Date: Fri, 31 Aug 2018 18:47:05 +0530 Subject: [PATCH 0029/1345] Issue #SB-6505 config: Sunbird config service env vars --- ansible/inventories/sample/group_vars/sample | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/inventories/sample/group_vars/sample b/ansible/inventories/sample/group_vars/sample index 9a272e0b8c..37e4165b10 100644 --- a/ansible/inventories/sample/group_vars/sample +++ b/ansible/inventories/sample/group_vars/sample @@ -316,6 +316,6 @@ aws_storage_secret: aws_storage_container: sunbird_cassandra_host: "{{groups['cassandra'][0]|default(database_host)}}" -sunbird_cassandra_port: 9200 +sunbird_cassandra_port: 9042 sunbird_cassandra_username: sunbird_cassandra_password: "{{cassandra_password if cassandra_password else database_password}}" From a85c18035118054373d4f2d6da19cef0840c96b1 Mon Sep 17 00:00:00 2001 From: Manzarul Date: Fri, 31 Aug 2018 18:52:20 +0530 Subject: [PATCH 0030/1345] Issues #SB-6275 fix: adding new api's for system settings --- ansible/roles/kong-api/defaults/main.yml | 55 ++++++++++++++++++++++++ 1 file changed, 55 insertions(+) diff --git a/ansible/roles/kong-api/defaults/main.yml b/ansible/roles/kong-api/defaults/main.yml index e402f593cb..d828684e78 100644 --- a/ansible/roles/kong-api/defaults/main.yml +++ b/ansible/roles/kong-api/defaults/main.yml @@ -3205,3 +3205,58 @@ kong_apis: - {name: 'acl', config.whitelist: 'publicUser'} - {name: 'rate-limiting', config.policy: "local", config.hour: "{{ large_rate_limit_per_hour }}"} - {name: 'request-size-limiting', config.allowed_payload_size: "{{ small_request_size_limit }}" } + - name: "updateSystemSettings" + request_path: "{{ data_service_prefix }}/v1/system/settings" + upstream_url: "{{ learning_service_url }}/v1/system/settings" + strip_request_path: true + plugins: + - {name: 'jwt'} + - {name: 'cors'} + - {name: 'statsd', config.metrics: "{{ statsd_metrics }}" } + - {name: 'acl', config.whitelist: 'dataAdmin'} + - {name: 'rate-limiting', config.policy: "local", config.hour: "{{ large_rate_limit_per_hour }}"} + - {name: 'request-size-limiting', config.allowed_payload_size: "{{ small_request_size_limit }}" } + - name: "updateSystemSettings" + request_path: "{{ data_service_prefix }}/v1/system/settings" + upstream_url: "{{ learning_service_url }}/v1/system/settings" + strip_request_path: true + plugins: + - {name: 'jwt'} + - {name: 'cors'} + - {name: 'statsd', config.metrics: "{{ statsd_metrics }}" } + - {name: 'acl', config.whitelist: 'dataAdmin'} + - {name: 'rate-limiting', config.policy: "local", config.hour: "{{ medium_rate_limit_per_hour }}"} + - {name: 'request-size-limiting', config.allowed_payload_size: "{{ small_request_size_limit }}" } + - name: "addSystemSettings" + request_path: "{{ data_service_prefix }}/v1/system/setting/set" + upstream_url: "{{ learning_service_url }}/v1/system/setting/set" + strip_request_path: true + plugins: + - {name: 'jwt'} + - {name: 'cors'} + - {name: 'statsd', config.metrics: "{{ statsd_metrics }}" } + - {name: 'acl', config.whitelist: 'dataAdmin'} + - {name: 'rate-limiting', config.policy: "local", config.hour: "{{ medium_rate_limit_per_hour }}"} + - {name: 'request-size-limiting', config.allowed_payload_size: "{{ small_request_size_limit }}" } + - name: "getSystemSettings" + request_path: "{{ data_service_prefix }}/v1/system/setting/read" + upstream_url: "{{ learning_service_url }}/v1/system/setting/get" + strip_request_path: true + plugins: + - {name: 'jwt'} + - {name: 'cors'} + - {name: 'statsd', config.metrics: "{{ statsd_metrics }}" } + - {name: 'acl', config.whitelist: 'dataAdmin'} + - {name: 'rate-limiting', config.policy: "local", config.hour: "{{ medium_rate_limit_per_hour }}"} + - {name: 'request-size-limiting', config.allowed_payload_size: "{{ small_request_size_limit }}" } + - name: "getAllSystemSettings" + request_path: "{{ data_service_prefix }}/v1/system/setting/list" + upstream_url: "{{ learning_service_url }}/v1/system/setting/list" + strip_request_path: true + plugins: + - {name: 'jwt'} + - {name: 'cors'} + - {name: 'statsd', config.metrics: "{{ statsd_metrics }}" } + - {name: 'acl', config.whitelist: 'dataAdmin'} + - {name: 'rate-limiting', config.policy: "local", config.hour: "{{ medium_rate_limit_per_hour }}"} + - {name: 'request-size-limiting', config.allowed_payload_size: "{{ small_request_size_limit }}" } \ No newline at end of file From 1e3b45431610fb2659431fa83356f34c43a9c542 Mon Sep 17 00:00:00 2001 From: S M Y Date: Mon, 3 Sep 2018 11:32:59 +0530 Subject: [PATCH 0031/1345] Issue #000 vars: Adding portal env vars --- ansible/inventories/sample/group_vars/sample | 1 + ansible/roles/stack-sunbird/templates/sunbird_player.env | 1 + 2 files changed, 2 insertions(+) diff --git a/ansible/inventories/sample/group_vars/sample b/ansible/inventories/sample/group_vars/sample index 37e4165b10..7982a155aa 100644 --- a/ansible/inventories/sample/group_vars/sample +++ b/ansible/inventories/sample/group_vars/sample @@ -319,3 +319,4 @@ sunbird_cassandra_host: "{{groups['cassandra'][0]|default(database_host)}}" sunbird_cassandra_port: 9042 sunbird_cassandra_username: sunbird_cassandra_password: "{{cassandra_password if cassandra_password else database_password}}" +sunbird_portal_base_url: https://staging.open-sunbird.org diff --git a/ansible/roles/stack-sunbird/templates/sunbird_player.env b/ansible/roles/stack-sunbird/templates/sunbird_player.env index 00201848ab..daaceaca12 100644 --- a/ansible/roles/stack-sunbird/templates/sunbird_player.env +++ b/ansible/roles/stack-sunbird/templates/sunbird_player.env @@ -29,3 +29,4 @@ sunbird_portal_title_name={{sunbird_portal_title_name}} sunbird_enable_signup={{sunbird_enable_signup}} sunbird_tenant_cdn_url={{sunbird_tenant_cdn_url}} sunbird_cloud_storage_urls={{sunbird_cloud_storage_urls}} +sunbird_portal_base_url={{sunbird_portal_base_url}} From 8369ee54f39f080853648c6c01f44e89253eab84 Mon Sep 17 00:00:00 2001 From: S M Y Date: Mon, 3 Sep 2018 11:38:03 +0530 Subject: [PATCH 0032/1345] Issue #000 vars: Adding learner env vars --- ansible/inventories/sample/group_vars/sample | 5 +++++ .../stack-sunbird/templates/sunbird_learner-service.env | 1 + 2 files changed, 6 insertions(+) diff --git a/ansible/inventories/sample/group_vars/sample b/ansible/inventories/sample/group_vars/sample index 7982a155aa..06e0e15dc7 100644 --- a/ansible/inventories/sample/group_vars/sample +++ b/ansible/inventories/sample/group_vars/sample @@ -319,4 +319,9 @@ sunbird_cassandra_host: "{{groups['cassandra'][0]|default(database_host)}}" sunbird_cassandra_port: 9042 sunbird_cassandra_username: sunbird_cassandra_password: "{{cassandra_password if cassandra_password else database_password}}" + +#Portal vars sunbird_portal_base_url: https://staging.open-sunbird.org + +#Learner Vars +sunbird_email_max_recipients_limit: 100 diff --git a/ansible/roles/stack-sunbird/templates/sunbird_learner-service.env b/ansible/roles/stack-sunbird/templates/sunbird_learner-service.env index 2e2d54ca2c..5e94e93408 100644 --- a/ansible/roles/stack-sunbird/templates/sunbird_learner-service.env +++ b/ansible/roles/stack-sunbird/templates/sunbird_learner-service.env @@ -70,3 +70,4 @@ sunbird_registry_service_baseurl=http://registry_registry:8080/ sunbird_open_saber_bridge_enable={{sunbird_open_saber_bridge_enable|default('false')}} sunbird_environment={{sunbird_environment}} sunbird_instance={{sunbird_instance}} +sunbird_email_max_recipients_limit={{sunbird_email_max_recipients_limit}} From d9d0483b3036c44b725c64e68f0648919a50b947 Mon Sep 17 00:00:00 2001 From: S M Y Date: Mon, 3 Sep 2018 13:19:56 +0530 Subject: [PATCH 0033/1345] Issue #000 logstash: Removed kafka process from telemetry logstash --- .../roles/stack-sunbird/templates/telemetry-logstash.conf | 5 ----- 1 file changed, 5 deletions(-) diff --git a/ansible/roles/stack-sunbird/templates/telemetry-logstash.conf b/ansible/roles/stack-sunbird/templates/telemetry-logstash.conf index f5dbe02651..2e6cd2f04c 100644 --- a/ansible/roles/stack-sunbird/templates/telemetry-logstash.conf +++ b/ansible/roles/stack-sunbird/templates/telemetry-logstash.conf @@ -7,11 +7,6 @@ input { } } output { - kafka { - codec => json - topic_id => "{{sunbird_data_pipeline_kafka_topic}}" - bootstrap_servers => "{{sunbird_data_pipeline_kafka_servers}}" - } http { url => "{{sunbird_telemetry_api}}" content_type => "application/json" From a1e560ad1eb90e2a8bc528655e7f8d2de2d40c6c Mon Sep 17 00:00:00 2001 From: Amol Ghatol Date: Mon, 3 Sep 2018 15:04:14 +0530 Subject: [PATCH 0034/1345] Issue #SB-4536 fix: Set correct rate limiting policy for Consumer --- ansible/roles/kong-api/defaults/main.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/ansible/roles/kong-api/defaults/main.yml b/ansible/roles/kong-api/defaults/main.yml index d828684e78..e34492cc06 100644 --- a/ansible/roles/kong-api/defaults/main.yml +++ b/ansible/roles/kong-api/defaults/main.yml @@ -62,12 +62,15 @@ premium_consumer_rate_limits: - api: createContent config.hour: "{{ premium_consumer_small_rate_limit_per_hour }}" config.limit_by: credential + config.policy: local - api: updateContent config.hour: "{{ premium_consumer_medium_rate_limit_per_hour }}" config.limit_by: credential + config.policy: local - api: readContent config.hour: "{{ premium_consumer_large_rate_limit_per_hour }}" config.limit_by: credential + config.policy: local # Example: # kong_apis: @@ -3259,4 +3262,4 @@ kong_apis: - {name: 'statsd', config.metrics: "{{ statsd_metrics }}" } - {name: 'acl', config.whitelist: 'dataAdmin'} - {name: 'rate-limiting', config.policy: "local", config.hour: "{{ medium_rate_limit_per_hour }}"} - - {name: 'request-size-limiting', config.allowed_payload_size: "{{ small_request_size_limit }}" } \ No newline at end of file + - {name: 'request-size-limiting', config.allowed_payload_size: "{{ small_request_size_limit }}" } From 8c1017118fde15ae52a7df164af862910e99a1c4 Mon Sep 17 00:00:00 2001 From: S M Y Date: Tue, 4 Sep 2018 13:17:46 +0530 Subject: [PATCH 0035/1345] Issue #000 analyticsAPI: Adding Analytics API health Check for Monitoring --- ansible/roles/stack-monitor/defaults/main.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/ansible/roles/stack-monitor/defaults/main.yml b/ansible/roles/stack-monitor/defaults/main.yml index 3f72bb055c..cf6a2c6277 100644 --- a/ansible/roles/stack-monitor/defaults/main.yml +++ b/ansible/roles/stack-monitor/defaults/main.yml @@ -102,6 +102,7 @@ service_teams: - player_player - cassandra - composite_search + - analytics-api - team: keycloak_team alerts_mailing_list: "{{ keycloak_alerts_mailing_list | default(devops_alerts_mailing_list)}}" services: @@ -125,6 +126,10 @@ service_blackbox_checks: probe_module: http_2xx targets: - http://api-manager_echo:9595/hello + - service_name: 'analytics-api' + probe_module: http_2xx + targets: + - "{{sunbird_analytics_api_base_url}}/health" # - service_name: 'logger_kibana' # probe_module: http_2xx # targets: From ae0889e99e0ff44164c2bbde25000ce784015f50 Mon Sep 17 00:00:00 2001 From: Harsha Date: Tue, 4 Sep 2018 16:47:22 +0530 Subject: [PATCH 0036/1345] Issue #00 fix: java heap size fix (#225) --- .../cassandra/templates/cassandra-env.sh | 30 +++++++++---------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/ansible/roles/cassandra/templates/cassandra-env.sh b/ansible/roles/cassandra/templates/cassandra-env.sh index f94b1d4fe0..dafec58314 100644 --- a/ansible/roles/cassandra/templates/cassandra-env.sh +++ b/ansible/roles/cassandra/templates/cassandra-env.sh @@ -56,21 +56,21 @@ calculate_heap_sizes() # pick the max half_system_memory_in_mb=`expr $system_memory_in_mb / 2` quarter_system_memory_in_mb=`expr $half_system_memory_in_mb / 2` - if [ "$half_system_memory_in_mb" -gt "1024" ] - then - half_system_memory_in_mb="1024" - fi - if [ "$quarter_system_memory_in_mb" -gt "8192" ] - then - quarter_system_memory_in_mb="8192" - fi - if [ "$half_system_memory_in_mb" -gt "$quarter_system_memory_in_mb" ] - then - max_heap_size_in_mb="$half_system_memory_in_mb" - else - max_heap_size_in_mb="$quarter_system_memory_in_mb" - fi - MAX_HEAP_SIZE="${max_heap_size_in_mb}M" + #if [ "$half_system_memory_in_mb" -gt "1024" ] + #then + # half_system_memory_in_mb="1024" + #fi + #if [ "$quarter_system_memory_in_mb" -gt "8192" ] + #then + # quarter_system_memory_in_mb="8192" + #fi + #if [ "$half_system_memory_in_mb" -gt "$quarter_system_memory_in_mb" ] + #then + # max_heap_size_in_mb="$half_system_memory_in_mb" + #else + # max_heap_size_in_mb="$quarter_system_memory_in_mb" + #fi + MAX_HEAP_SIZE="${half_system_memory_in_mb}M" # Young gen: min(max_sensible_per_modern_cpu_core * num_cores, 1/4 * heap size) max_sensible_yg_per_core_in_mb="100" From 98ca562a5cf10e6691351b0f2dd9a20e4768f5d3 Mon Sep 17 00:00:00 2001 From: S M Y Date: Wed, 5 Sep 2018 14:48:25 +0530 Subject: [PATCH 0037/1345] Issue #000 vars: Environment vars for config-service --- ansible/inventories/sample/group_vars/sample | 2 ++ .../roles/stack-sunbird/templates/sunbird_config-service.env | 2 ++ 2 files changed, 4 insertions(+) diff --git a/ansible/inventories/sample/group_vars/sample b/ansible/inventories/sample/group_vars/sample index 06e0e15dc7..f464b0fea5 100644 --- a/ansible/inventories/sample/group_vars/sample +++ b/ansible/inventories/sample/group_vars/sample @@ -319,6 +319,8 @@ sunbird_cassandra_host: "{{groups['cassandra'][0]|default(database_host)}}" sunbird_cassandra_port: 9042 sunbird_cassandra_username: sunbird_cassandra_password: "{{cassandra_password if cassandra_password else database_password}}" +sunbird_config_service_url: "{{proto}}://{{proxy_server_name}}/api/config/" +config_cache_ttl: 600 #Portal vars sunbird_portal_base_url: https://staging.open-sunbird.org diff --git a/ansible/roles/stack-sunbird/templates/sunbird_config-service.env b/ansible/roles/stack-sunbird/templates/sunbird_config-service.env index 25ac319aec..44fafe9f52 100644 --- a/ansible/roles/stack-sunbird/templates/sunbird_config-service.env +++ b/ansible/roles/stack-sunbird/templates/sunbird_config-service.env @@ -10,3 +10,5 @@ sunbird_cassandra_host={{sunbird_cassandra_host}} sunbird_cassandra_port={{sunbird_cassandra_port}} sunbird_cassandra_username={{sunbird_cassandra_username}} sunbird_cassandra_password={{sunbird_cassandra_password}} +sunbird_config_service_url={{sunbird_config_service_url}} +config_cache_ttl={{config_cache_ttl}} From 1bc6caadc9a0022917355734088d3d88c186341f Mon Sep 17 00:00:00 2001 From: S M Y Date: Wed, 5 Sep 2018 14:56:48 +0530 Subject: [PATCH 0038/1345] Issue #000 vars: Environment vars for config-service in player service --- .../roles/stack-sunbird/templates/sunbird_config-service.env | 2 -- ansible/roles/stack-sunbird/templates/sunbird_player.env | 2 ++ 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ansible/roles/stack-sunbird/templates/sunbird_config-service.env b/ansible/roles/stack-sunbird/templates/sunbird_config-service.env index 44fafe9f52..25ac319aec 100644 --- a/ansible/roles/stack-sunbird/templates/sunbird_config-service.env +++ b/ansible/roles/stack-sunbird/templates/sunbird_config-service.env @@ -10,5 +10,3 @@ sunbird_cassandra_host={{sunbird_cassandra_host}} sunbird_cassandra_port={{sunbird_cassandra_port}} sunbird_cassandra_username={{sunbird_cassandra_username}} sunbird_cassandra_password={{sunbird_cassandra_password}} -sunbird_config_service_url={{sunbird_config_service_url}} -config_cache_ttl={{config_cache_ttl}} diff --git a/ansible/roles/stack-sunbird/templates/sunbird_player.env b/ansible/roles/stack-sunbird/templates/sunbird_player.env index daaceaca12..9e2df30ff0 100644 --- a/ansible/roles/stack-sunbird/templates/sunbird_player.env +++ b/ansible/roles/stack-sunbird/templates/sunbird_player.env @@ -30,3 +30,5 @@ sunbird_enable_signup={{sunbird_enable_signup}} sunbird_tenant_cdn_url={{sunbird_tenant_cdn_url}} sunbird_cloud_storage_urls={{sunbird_cloud_storage_urls}} sunbird_portal_base_url={{sunbird_portal_base_url}} +sunbird_config_service_url={{sunbird_config_service_url}} +config_cache_ttl={{config_cache_ttl}} From 4e53ffa2b086ebc3d14befa2945181177ffa67ad Mon Sep 17 00:00:00 2001 From: S M Y Date: Wed, 5 Sep 2018 15:33:46 +0530 Subject: [PATCH 0039/1345] Issue #000 configservice: config service deployment made optional --- deploy/deploy-core.sh | 3 --- deploy/sunbird_install.sh | 14 ++++++++++++-- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/deploy/deploy-core.sh b/deploy/deploy-core.sh index 82f0f01b8e..153b1a1b13 100755 --- a/deploy/deploy-core.sh +++ b/deploy/deploy-core.sh @@ -44,6 +44,3 @@ ansible-playbook -i $INVENTORY_PATH ../ansible/deploy.yml --tags "stack-sunbird" echo "Redeploy Telemetry service" ansible-playbook -i $INVENTORY_PATH ../ansible/deploy.yml --tags "stack-sunbird" --extra-vars "hub_org=${ORG} image_name=telemetry-service image_tag=${TELEMETRY_SERVICE_VERSION} service_name=telemetry-service deploy_telemetry=True" --extra-vars @config -#Config-Service -echo "Deploy Config service" -ansible-playbook -i $INVENTORY_PATH ../ansible/deploy.yml --tags "stack-sunbird" --extra-vars "hub_org=${ORG} image_name=config-service image_tag=${CONFIG_SERVICE_VERSION} service_name=config-service deploy_config=True" --extra-vars @config diff --git a/deploy/sunbird_install.sh b/deploy/sunbird_install.sh index 80b94a7a3b..37faf7f48b 100755 --- a/deploy/sunbird_install.sh +++ b/deploy/sunbird_install.sh @@ -14,7 +14,7 @@ set -eu -o pipefail -usage() { echo "Usage: $0 [ -s {sanity|config|dbs|apis|proxy|keycloak|badger|core|logger|monitor|posttest} ]" ; exit 0; } +usage() { echo "Usage: $0 [ -s {sanity|config|dbs|apis|proxy|keycloak|badger|core|configservice|logger|monitor|posttest} ]" ; exit 0; } # Checking for valid argument if [[ ! -z ${1:-} ]] && [[ ${1} != -* ]]; then @@ -35,7 +35,8 @@ ansible_private_key_path=$(awk '/ansible_private_key_path: /{ if ($2 !~ /#.*/) { ansible_variable_path="${implementation_name}"-devops/ansible/inventories/"$env_name" protocol=$(awk '/proto: /{ if ($2 !~ /#.*/) {print $2}}' config) domainname=$(awk '/dns_name: /{ if ($2 !~ /#.*/) {print $2}}' config) - +ENV=sample +ORG=sunbird #TO skip the host key verification export ANSIBLE_HOST_KEY_CHECKING=False #Enable force color @@ -64,6 +65,11 @@ sanity() { ./sanity.sh $ssh_ansible_user $ansible_private_key_path } +configservice() { + echo "Deploy Config service" + ansible-playbook -i $ansible_variable_path ../ansible/deploy.yml --tags "stack-sunbird" --extra-vars "hub_org=${ORG} image_name=config-service image_tag=${CONFIG_SERVICE_VERSION} service_name=config-service deploy_config=True" --extra-vars @config +} + # Installing dependencies deps() { ansible-playbook -i $ansible_variable_path/hosts ../ansible/sunbird_prerequisites.yml --extra-vars @config @@ -149,6 +155,10 @@ while getopts "s:h" o;do echo -e "\n$(date)\n">>logs/core.log; core 2>&1 | tee -a logs/core.log exit 0 ;; + configservice) + echo -e "\n$(date)\n">>logs/configservice.log; configservice 2>&1 | tee -a logs/configservice.log + exit 0 + ;; logger) echo -e "\n$(date)\n">>logs/logger.log; logger 2>&1 | tee -a logs/logger.log exit 0 From f791305b455108a8421f8a5afd47697bac2840e1 Mon Sep 17 00:00:00 2001 From: S M Y Date: Wed, 5 Sep 2018 18:47:39 +0530 Subject: [PATCH 0040/1345] Issue #000 vars: configuration file updation --- ansible/roles/vm-agents-processexporter/templates/config.j2 | 3 --- 1 file changed, 3 deletions(-) diff --git a/ansible/roles/vm-agents-processexporter/templates/config.j2 b/ansible/roles/vm-agents-processexporter/templates/config.j2 index 49a2fa2212..7204c4f20a 100644 --- a/ansible/roles/vm-agents-processexporter/templates/config.j2 +++ b/ansible/roles/vm-agents-processexporter/templates/config.j2 @@ -55,6 +55,3 @@ process_names: cmdline: - .+analytic.+ {% endif %} - - name: {{'"{{.Comm}}"'}} - cmdline: - - '.+' From 1c5d70f9617528f6078d0fdb7dfd9af42b376795 Mon Sep 17 00:00:00 2001 From: S M Y Date: Thu, 6 Sep 2018 10:44:10 +0530 Subject: [PATCH 0041/1345] Issue #000 process: Process Exporter disabled in nodes not necessary --- ansible/roles/vm-agents-processexporter/tasks/main.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/ansible/roles/vm-agents-processexporter/tasks/main.yml b/ansible/roles/vm-agents-processexporter/tasks/main.yml index 1938561111..c1d75b2443 100755 --- a/ansible/roles/vm-agents-processexporter/tasks/main.yml +++ b/ansible/roles/vm-agents-processexporter/tasks/main.yml @@ -67,3 +67,9 @@ state: started enabled: yes +- name: Stop Process exporter in host as it's not required + service: + name: process-exporter + state: stopped + enabled: no + From 2892a8e4ffcaa3d2ea65884f7f28c8dce333c314 Mon Sep 17 00:00:00 2001 From: S M Y Date: Thu, 6 Sep 2018 10:59:04 +0530 Subject: [PATCH 0042/1345] Issue #000 process: Process Exporter disabled in nodes not necessary --- ansible/roles/vm-agents-processexporter/tasks/main.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/ansible/roles/vm-agents-processexporter/tasks/main.yml b/ansible/roles/vm-agents-processexporter/tasks/main.yml index c1d75b2443..b0e6baf759 100755 --- a/ansible/roles/vm-agents-processexporter/tasks/main.yml +++ b/ansible/roles/vm-agents-processexporter/tasks/main.yml @@ -72,4 +72,5 @@ name: process-exporter state: stopped enabled: no + when: "{{inventory_hostname}}" not in groups['kafka-ps'] and "{{inventory_hostname}}" not in groups['secor-ps'] and "{{inventory_hostname}}" not in groups['yarn-ps'] and "{{inventory_hostname}}" not in groups['cassandra-ps'] and "{{inventory_hostname}}" not in groups['es-ps'] and "{{inventory_hostname}}" not in groups['logstash-ps'] and "{{inventory_hostname}}" not in groups['analytics-ps'] From 2aef2bcb049f359282659701977d00e355d770f9 Mon Sep 17 00:00:00 2001 From: S M Y Date: Thu, 6 Sep 2018 11:01:16 +0530 Subject: [PATCH 0043/1345] Issue #000 process: Process Exporter disabled in nodes not necessary --- ansible/roles/vm-agents-processexporter/tasks/main.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ansible/roles/vm-agents-processexporter/tasks/main.yml b/ansible/roles/vm-agents-processexporter/tasks/main.yml index b0e6baf759..3ac89e9684 100755 --- a/ansible/roles/vm-agents-processexporter/tasks/main.yml +++ b/ansible/roles/vm-agents-processexporter/tasks/main.yml @@ -74,3 +74,6 @@ enabled: no when: "{{inventory_hostname}}" not in groups['kafka-ps'] and "{{inventory_hostname}}" not in groups['secor-ps'] and "{{inventory_hostname}}" not in groups['yarn-ps'] and "{{inventory_hostname}}" not in groups['cassandra-ps'] and "{{inventory_hostname}}" not in groups['es-ps'] and "{{inventory_hostname}}" not in groups['logstash-ps'] and "{{inventory_hostname}}" not in groups['analytics-ps'] +- name: Delete Prometheus Data Directory as it is not required + shell: "rm -rf {{ prometheus_exporters_common_dist_dir }}/{{ prometheus_process_exporter_release_name }}" + become: yes From c420e115c2dd05e7865991ab85fef41b2c896284 Mon Sep 17 00:00:00 2001 From: S M Y Date: Thu, 6 Sep 2018 11:09:29 +0530 Subject: [PATCH 0044/1345] Issue #000 process: Process Exporter disabled in nodes not necessary --- ansible/roles/vm-agents-processexporter/tasks/main.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ansible/roles/vm-agents-processexporter/tasks/main.yml b/ansible/roles/vm-agents-processexporter/tasks/main.yml index 3ac89e9684..311289a5c7 100755 --- a/ansible/roles/vm-agents-processexporter/tasks/main.yml +++ b/ansible/roles/vm-agents-processexporter/tasks/main.yml @@ -72,8 +72,9 @@ name: process-exporter state: stopped enabled: no - when: "{{inventory_hostname}}" not in groups['kafka-ps'] and "{{inventory_hostname}}" not in groups['secor-ps'] and "{{inventory_hostname}}" not in groups['yarn-ps'] and "{{inventory_hostname}}" not in groups['cassandra-ps'] and "{{inventory_hostname}}" not in groups['es-ps'] and "{{inventory_hostname}}" not in groups['logstash-ps'] and "{{inventory_hostname}}" not in groups['analytics-ps'] + when: "{{inventory_hostname}}" not in "groups['kafka-ps']" and "{{inventory_hostname}}" not in "groups['secor-ps']" and "{{inventory_hostname}}" not in "groups['yarn-ps']" and "{{inventory_hostname}}" not in "groups['cassandra-ps']" and "{{inventory_hostname}}" not in "groups['es-ps']" and "{{inventory_hostname}}" not in "groups['logstash-ps']" and "{{inventory_hostname}}" not in "groups['analytics-ps']" - name: Delete Prometheus Data Directory as it is not required shell: "rm -rf {{ prometheus_exporters_common_dist_dir }}/{{ prometheus_process_exporter_release_name }}" become: yes + when: "{{inventory_hostname}}" not in "groups['kafka-ps']" and "{{inventory_hostname}}" not in "groups['secor-ps']" and "{{inventory_hostname}}" not in "groups['yarn-ps']" and "{{inventory_hostname}}" not in "groups['cassandra-ps']" and "{{inventory_hostname}}" not in "groups['es-ps']" and "{{inventory_hostname}}" not in "groups['logstash-ps']" and "{{inventory_hostname}}" not in "groups['analytics-ps']" From 97d783d87b0520cdcca773bb0ef148c817cc9a1b Mon Sep 17 00:00:00 2001 From: S M Y Date: Thu, 6 Sep 2018 11:17:00 +0530 Subject: [PATCH 0045/1345] Issue #000 process: Process Exporter disabled in nodes not necessary --- ansible/roles/vm-agents-processexporter/tasks/main.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ansible/roles/vm-agents-processexporter/tasks/main.yml b/ansible/roles/vm-agents-processexporter/tasks/main.yml index 311289a5c7..bcd32bb061 100755 --- a/ansible/roles/vm-agents-processexporter/tasks/main.yml +++ b/ansible/roles/vm-agents-processexporter/tasks/main.yml @@ -72,9 +72,9 @@ name: process-exporter state: stopped enabled: no - when: "{{inventory_hostname}}" not in "groups['kafka-ps']" and "{{inventory_hostname}}" not in "groups['secor-ps']" and "{{inventory_hostname}}" not in "groups['yarn-ps']" and "{{inventory_hostname}}" not in "groups['cassandra-ps']" and "{{inventory_hostname}}" not in "groups['es-ps']" and "{{inventory_hostname}}" not in "groups['logstash-ps']" and "{{inventory_hostname}}" not in "groups['analytics-ps']" + when: not ( "{{inventory_hostname}}" in "groups['kafka-ps']" and "{{inventory_hostname}}" in "groups['secor-ps']" and "{{inventory_hostname}}" in "groups['yarn-ps']" and "{{inventory_hostname}}" in "groups['cassandra-ps']" and "{{inventory_hostname}}" in "groups['es-ps']" and "{{inventory_hostname}}" in "groups['logstash-ps']" and "{{inventory_hostname}}" in "groups['analytics-ps']" ) - name: Delete Prometheus Data Directory as it is not required shell: "rm -rf {{ prometheus_exporters_common_dist_dir }}/{{ prometheus_process_exporter_release_name }}" become: yes - when: "{{inventory_hostname}}" not in "groups['kafka-ps']" and "{{inventory_hostname}}" not in "groups['secor-ps']" and "{{inventory_hostname}}" not in "groups['yarn-ps']" and "{{inventory_hostname}}" not in "groups['cassandra-ps']" and "{{inventory_hostname}}" not in "groups['es-ps']" and "{{inventory_hostname}}" not in "groups['logstash-ps']" and "{{inventory_hostname}}" not in "groups['analytics-ps']" + when: not ( "{{inventory_hostname}}" in "groups['kafka-ps']" and "{{inventory_hostname}}" in "groups['secor-ps']" and "{{inventory_hostname}}" in "groups['yarn-ps']" and "{{inventory_hostname}}" in "groups['cassandra-ps']" and "{{inventory_hostname}}" in "groups['es-ps']" and "{{inventory_hostname}}" in "groups['logstash-ps']" and "{{inventory_hostname}}" in "groups['analytics-ps']" ) From 915ce321c0f7689b377f3087e22a733b3e915ce4 Mon Sep 17 00:00:00 2001 From: S M Y Date: Thu, 6 Sep 2018 11:33:51 +0530 Subject: [PATCH 0046/1345] Issue #000 process: Process Exporter disabled in nodes not necessary --- ansible/roles/vm-agents-processexporter/tasks/main.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ansible/roles/vm-agents-processexporter/tasks/main.yml b/ansible/roles/vm-agents-processexporter/tasks/main.yml index bcd32bb061..630166bf9f 100755 --- a/ansible/roles/vm-agents-processexporter/tasks/main.yml +++ b/ansible/roles/vm-agents-processexporter/tasks/main.yml @@ -72,9 +72,9 @@ name: process-exporter state: stopped enabled: no - when: not ( "{{inventory_hostname}}" in "groups['kafka-ps']" and "{{inventory_hostname}}" in "groups['secor-ps']" and "{{inventory_hostname}}" in "groups['yarn-ps']" and "{{inventory_hostname}}" in "groups['cassandra-ps']" and "{{inventory_hostname}}" in "groups['es-ps']" and "{{inventory_hostname}}" in "groups['logstash-ps']" and "{{inventory_hostname}}" in "groups['analytics-ps']" ) + when: not ( inventory_hostname in groups['kafka-ps'] and inventory_hostname in groups['secor-ps'] and inventory_hostname in groups['yarn-ps'] and inventory_hostname in groups['cassandra-ps'] and inventory_hostname in groups['es-ps'] and inventory_hostname in groups['logstash-ps'] and inventory_hostname in groups['analytics-ps'] ) - name: Delete Prometheus Data Directory as it is not required shell: "rm -rf {{ prometheus_exporters_common_dist_dir }}/{{ prometheus_process_exporter_release_name }}" become: yes - when: not ( "{{inventory_hostname}}" in "groups['kafka-ps']" and "{{inventory_hostname}}" in "groups['secor-ps']" and "{{inventory_hostname}}" in "groups['yarn-ps']" and "{{inventory_hostname}}" in "groups['cassandra-ps']" and "{{inventory_hostname}}" in "groups['es-ps']" and "{{inventory_hostname}}" in "groups['logstash-ps']" and "{{inventory_hostname}}" in "groups['analytics-ps']" ) + when: not ( inventory_hostname in groups['kafka-ps'] and inventory_hostname in groups['secor-ps'] and inventory_hostname in groups['yarn-ps'] and inventory_hostname in groups['cassandra-ps'] and inventory_hostname in groups['es-ps'] and inventory_hostname in groups['logstash-ps'] and inventory_hostname in groups['analytics-ps'] ) From 3998665885cd45df9304bef48e3ac201b5b93596 Mon Sep 17 00:00:00 2001 From: S M Y Date: Thu, 6 Sep 2018 11:38:26 +0530 Subject: [PATCH 0047/1345] Issue #000 process: Process Exporter disabled in nodes not necessary --- ansible/roles/vm-agents-processexporter/tasks/main.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ansible/roles/vm-agents-processexporter/tasks/main.yml b/ansible/roles/vm-agents-processexporter/tasks/main.yml index 630166bf9f..f9ff463520 100755 --- a/ansible/roles/vm-agents-processexporter/tasks/main.yml +++ b/ansible/roles/vm-agents-processexporter/tasks/main.yml @@ -72,9 +72,9 @@ name: process-exporter state: stopped enabled: no - when: not ( inventory_hostname in groups['kafka-ps'] and inventory_hostname in groups['secor-ps'] and inventory_hostname in groups['yarn-ps'] and inventory_hostname in groups['cassandra-ps'] and inventory_hostname in groups['es-ps'] and inventory_hostname in groups['logstash-ps'] and inventory_hostname in groups['analytics-ps'] ) + when: not ( inventory_hostname in groups['kafka-ps'] or inventory_hostname in groups['secor-ps'] or inventory_hostname in groups['yarn-ps'] or inventory_hostname in groups['cassandra-ps'] or inventory_hostname in groups['es-ps'] or inventory_hostname in groups['logstash-ps'] or inventory_hostname in groups['analytics-ps'] ) - name: Delete Prometheus Data Directory as it is not required shell: "rm -rf {{ prometheus_exporters_common_dist_dir }}/{{ prometheus_process_exporter_release_name }}" become: yes - when: not ( inventory_hostname in groups['kafka-ps'] and inventory_hostname in groups['secor-ps'] and inventory_hostname in groups['yarn-ps'] and inventory_hostname in groups['cassandra-ps'] and inventory_hostname in groups['es-ps'] and inventory_hostname in groups['logstash-ps'] and inventory_hostname in groups['analytics-ps'] ) + when: not ( inventory_hostname in groups['kafka-ps'] or inventory_hostname in groups['secor-ps'] or inventory_hostname in groups['yarn-ps'] or inventory_hostname in groups['cassandra-ps'] or inventory_hostname in groups['es-ps'] or inventory_hostname in groups['logstash-ps'] or inventory_hostname in groups['analytics-ps'] ) From a5d4877b4211067b2d30f3d311db609f45875bf9 Mon Sep 17 00:00:00 2001 From: S M Y Date: Thu, 6 Sep 2018 11:51:30 +0530 Subject: [PATCH 0048/1345] Issue #000 host: Removing Process-monitoring in all nodes --- ansible/monitoring.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/monitoring.yml b/ansible/monitoring.yml index 5bf4544b40..13e994c41f 100644 --- a/ansible/monitoring.yml +++ b/ansible/monitoring.yml @@ -64,7 +64,7 @@ tags: - metrics-exporter -- hosts: process-exporter +- hosts: all become: yes vars_files: - ['{{inventory_dir}}/secrets.yml', 'secrets/{{env}}.yml'] From 7d8d42b4e2c0330f8d571158e0020803250d82f6 Mon Sep 17 00:00:00 2001 From: S M Y Date: Thu, 6 Sep 2018 12:00:25 +0530 Subject: [PATCH 0049/1345] Issue #000 host: Removing Process-monitoring in all nodes --- ansible/roles/vm-agents-processexporter/tasks/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/vm-agents-processexporter/tasks/main.yml b/ansible/roles/vm-agents-processexporter/tasks/main.yml index f9ff463520..96a1a9a152 100755 --- a/ansible/roles/vm-agents-processexporter/tasks/main.yml +++ b/ansible/roles/vm-agents-processexporter/tasks/main.yml @@ -75,6 +75,6 @@ when: not ( inventory_hostname in groups['kafka-ps'] or inventory_hostname in groups['secor-ps'] or inventory_hostname in groups['yarn-ps'] or inventory_hostname in groups['cassandra-ps'] or inventory_hostname in groups['es-ps'] or inventory_hostname in groups['logstash-ps'] or inventory_hostname in groups['analytics-ps'] ) - name: Delete Prometheus Data Directory as it is not required - shell: "rm -rf {{ prometheus_exporters_common_dist_dir }}/{{ prometheus_process_exporter_release_name }}" + shell: "rm -rf {{ prometheus_exporters_common_dist_dir }}/process-exporter-*" become: yes when: not ( inventory_hostname in groups['kafka-ps'] or inventory_hostname in groups['secor-ps'] or inventory_hostname in groups['yarn-ps'] or inventory_hostname in groups['cassandra-ps'] or inventory_hostname in groups['es-ps'] or inventory_hostname in groups['logstash-ps'] or inventory_hostname in groups['analytics-ps'] ) From 6af191d5c1dc66faf852770970533cf690820c0e Mon Sep 17 00:00:00 2001 From: S M Y Date: Thu, 6 Sep 2018 12:24:30 +0530 Subject: [PATCH 0050/1345] Issue #000 host: Removing Process-monitoring in all nodes --- ansible/monitoring.yml | 2 +- .../roles/vm-agents-processexporter/tasks/main.yml | 11 ----------- 2 files changed, 1 insertion(+), 12 deletions(-) diff --git a/ansible/monitoring.yml b/ansible/monitoring.yml index 13e994c41f..5bf4544b40 100644 --- a/ansible/monitoring.yml +++ b/ansible/monitoring.yml @@ -64,7 +64,7 @@ tags: - metrics-exporter -- hosts: all +- hosts: process-exporter become: yes vars_files: - ['{{inventory_dir}}/secrets.yml', 'secrets/{{env}}.yml'] diff --git a/ansible/roles/vm-agents-processexporter/tasks/main.yml b/ansible/roles/vm-agents-processexporter/tasks/main.yml index 96a1a9a152..1938561111 100755 --- a/ansible/roles/vm-agents-processexporter/tasks/main.yml +++ b/ansible/roles/vm-agents-processexporter/tasks/main.yml @@ -67,14 +67,3 @@ state: started enabled: yes -- name: Stop Process exporter in host as it's not required - service: - name: process-exporter - state: stopped - enabled: no - when: not ( inventory_hostname in groups['kafka-ps'] or inventory_hostname in groups['secor-ps'] or inventory_hostname in groups['yarn-ps'] or inventory_hostname in groups['cassandra-ps'] or inventory_hostname in groups['es-ps'] or inventory_hostname in groups['logstash-ps'] or inventory_hostname in groups['analytics-ps'] ) - -- name: Delete Prometheus Data Directory as it is not required - shell: "rm -rf {{ prometheus_exporters_common_dist_dir }}/process-exporter-*" - become: yes - when: not ( inventory_hostname in groups['kafka-ps'] or inventory_hostname in groups['secor-ps'] or inventory_hostname in groups['yarn-ps'] or inventory_hostname in groups['cassandra-ps'] or inventory_hostname in groups['es-ps'] or inventory_hostname in groups['logstash-ps'] or inventory_hostname in groups['analytics-ps'] ) From dd7f2d8f7d78f4968b12f529c3c6bcf44d7bc0a3 Mon Sep 17 00:00:00 2001 From: Manzarul Date: Thu, 6 Sep 2018 13:11:41 +0530 Subject: [PATCH 0051/1345] Issues #SB-00 feat: adding v2 api for create user --- ansible/roles/kong-api/defaults/main.yml | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/ansible/roles/kong-api/defaults/main.yml b/ansible/roles/kong-api/defaults/main.yml index e34492cc06..b075a75e8d 100644 --- a/ansible/roles/kong-api/defaults/main.yml +++ b/ansible/roles/kong-api/defaults/main.yml @@ -62,15 +62,12 @@ premium_consumer_rate_limits: - api: createContent config.hour: "{{ premium_consumer_small_rate_limit_per_hour }}" config.limit_by: credential - config.policy: local - api: updateContent config.hour: "{{ premium_consumer_medium_rate_limit_per_hour }}" config.limit_by: credential - config.policy: local - api: readContent config.hour: "{{ premium_consumer_large_rate_limit_per_hour }}" config.limit_by: credential - config.policy: local # Example: # kong_apis: @@ -413,6 +410,22 @@ kong_apis: config.limit_by: credential - name: request-size-limiting config.allowed_payload_size: "{{ small_request_size_limit }}" + - name: createUserVersion2 + request_path: "{{ user_service_prefix }}/v2/create" + upstream_url: "{{ learning_service_url }}/v2/user/create" + strip_request_path: true + plugins: + - name: jwt + - name: cors + - "{{ statsd_pulgin }}" + - name: acl + config.whitelist: userUpdate + - name: rate-limiting + config.policy: local + config.hour: "{{ medium_rate_limit_per_hour }}" + config.limit_by: credential + - name: request-size-limiting + config.allowed_payload_size: "{{ small_request_size_limit }}" - name: updateUser request_path: "{{ user_service_prefix }}/v1/update" upstream_url: "{{ learning_service_url }}/v1/user/update" @@ -3262,4 +3275,4 @@ kong_apis: - {name: 'statsd', config.metrics: "{{ statsd_metrics }}" } - {name: 'acl', config.whitelist: 'dataAdmin'} - {name: 'rate-limiting', config.policy: "local", config.hour: "{{ medium_rate_limit_per_hour }}"} - - {name: 'request-size-limiting', config.allowed_payload_size: "{{ small_request_size_limit }}" } + - {name: 'request-size-limiting', config.allowed_payload_size: "{{ small_request_size_limit }}" } \ No newline at end of file From 39c3edeb60fb2eb3bdbf396f8b26b925a4fa3b7b Mon Sep 17 00:00:00 2001 From: S M Y Date: Thu, 6 Sep 2018 14:28:23 +0530 Subject: [PATCH 0052/1345] Issue #000 host: monitoring specific processes --- .../roles/vm-agents-processexporter/tasks/main.yml | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/ansible/roles/vm-agents-processexporter/tasks/main.yml b/ansible/roles/vm-agents-processexporter/tasks/main.yml index 1938561111..8f9f5923f2 100755 --- a/ansible/roles/vm-agents-processexporter/tasks/main.yml +++ b/ansible/roles/vm-agents-processexporter/tasks/main.yml @@ -67,3 +67,15 @@ state: started enabled: yes +- name: Stop Process exporter in host as it's not required + service: + name: process-exporter + state: stopped + enabled: no + when: not ( inventory_hostname in groups['kafka-ps'] or inventory_hostname in groups['secor-ps'] or inventory_hostname in groups['yarn-ps'] or inventory_hostname in groups['cassandra-ps'] or inventory_hostname in groups['es-ps'] or inventory_hostname in groups['logstash-ps'] or inventory_hostname in groups['analytics-ps'] ) + +- name: Delete Prometheus Data Directory as it is not required + shell: "rm -rf {{ prometheus_exporters_common_dist_dir }}/process-exporter-*" + become: yes + when: not ( inventory_hostname in groups['kafka-ps'] or inventory_hostname in groups['secor-ps'] or inventory_hostname in groups['yarn-ps'] or inventory_hostname in groups['cassandra-ps'] or inventory_hostname in groups['es-ps'] or inventory_hostname in groups['logstash-ps'] or inventory_hostname in groups['analytics-ps'] ) + From a2f47ead137b6b44708b817d6e4b9ef4f7d500dc Mon Sep 17 00:00:00 2001 From: S M Y Date: Thu, 6 Sep 2018 15:34:41 +0530 Subject: [PATCH 0053/1345] Issue #000 host: Removing Process-monitoring in all nodes --- .../roles/vm-agents-processexporter/tasks/main.yml | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/ansible/roles/vm-agents-processexporter/tasks/main.yml b/ansible/roles/vm-agents-processexporter/tasks/main.yml index 8f9f5923f2..1938561111 100755 --- a/ansible/roles/vm-agents-processexporter/tasks/main.yml +++ b/ansible/roles/vm-agents-processexporter/tasks/main.yml @@ -67,15 +67,3 @@ state: started enabled: yes -- name: Stop Process exporter in host as it's not required - service: - name: process-exporter - state: stopped - enabled: no - when: not ( inventory_hostname in groups['kafka-ps'] or inventory_hostname in groups['secor-ps'] or inventory_hostname in groups['yarn-ps'] or inventory_hostname in groups['cassandra-ps'] or inventory_hostname in groups['es-ps'] or inventory_hostname in groups['logstash-ps'] or inventory_hostname in groups['analytics-ps'] ) - -- name: Delete Prometheus Data Directory as it is not required - shell: "rm -rf {{ prometheus_exporters_common_dist_dir }}/process-exporter-*" - become: yes - when: not ( inventory_hostname in groups['kafka-ps'] or inventory_hostname in groups['secor-ps'] or inventory_hostname in groups['yarn-ps'] or inventory_hostname in groups['cassandra-ps'] or inventory_hostname in groups['es-ps'] or inventory_hostname in groups['logstash-ps'] or inventory_hostname in groups['analytics-ps'] ) - From f9a025f4c9eafca90079d4c84bc22b5d0c492f15 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Thu, 6 Sep 2018 16:15:39 +0530 Subject: [PATCH 0054/1345] Issue #DO-137: feat Updated cassandra default dir --- deploy/cassandra_backup.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/deploy/cassandra_backup.py b/deploy/cassandra_backup.py index 0fb53a4375..d9bd234be6 100755 --- a/deploy/cassandra_backup.py +++ b/deploy/cassandra_backup.py @@ -5,9 +5,9 @@ ''' Create a snapshot and create tar ball in targetdirectory name -usage: script /path/to/datadirectory snapshot_name +usage: script snapshot_name -eg: ./cassandra_backup.py /var/lib/cassandra/data my_snapshot +eg: ./cassandra_backup.py my_snapshot ''' from os import path, walk, sep, system, getcwd, makedirs @@ -18,7 +18,7 @@ from tempfile import mkdtemp parser = ArgumentParser(description="Create a snapshot and create tar ball inside tardirectory") -parser.add_argument("datadirectory", help="path to datadirectory of cassandra") +parser.add_argument("-d","--datadirectory", metavar="datadir", default='/var/lib/cassandra/data', help="path to create the tarball. Default /var/lib/cassadra/data") parser.add_argument("snapshotname", help="name in which you want to take the snapshot") parser.add_argument("-t","--tardirectory", metavar="tardir", default=getcwd(), help="path to create the tarball. Default {}".format(getcwd())) args = parser.parse_args() From 3adcbeae0a6e717ef7907390243ab945908f85ee Mon Sep 17 00:00:00 2001 From: S M Y Date: Thu, 6 Sep 2018 19:09:06 +0530 Subject: [PATCH 0055/1345] Issue #000 host: Removing Process-monitoring in all nodes --- ansible/roles/vm-agents-processexporter/tasks/main.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/ansible/roles/vm-agents-processexporter/tasks/main.yml b/ansible/roles/vm-agents-processexporter/tasks/main.yml index 1938561111..f2a486a2ba 100755 --- a/ansible/roles/vm-agents-processexporter/tasks/main.yml +++ b/ansible/roles/vm-agents-processexporter/tasks/main.yml @@ -67,3 +67,7 @@ state: started enabled: yes +- name: unlinking process exporter which is not required + shell: "sudo rm -rf /opt/prometheus/exporters/process_exporter_current" + become: yes + when: not ( inventory_hostname in groups['kafka-ps'] or inventory_hostname in groups['secor-ps'] or inventory_hostname in groups['yarn-ps'] or inventory_hostname in groups['cassandra-ps'] or inventory_hostname in groups['es-ps'] or inventory_hostname in groups['logstash-ps'] or inventory_hostname in groups['analytics-ps'] ) From 821c980cc9b757db7cfaf3b5ceeba2dd614a6522 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Fri, 7 Sep 2018 09:23:22 +0530 Subject: [PATCH 0056/1345] Issue #DO-129 feat: row count calculator for cassandra --- deploy/utilities/cassandra_row_counter.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 deploy/utilities/cassandra_row_counter.py diff --git a/deploy/utilities/cassandra_row_counter.py b/deploy/utilities/cassandra_row_counter.py new file mode 100644 index 0000000000..110bb92b1b --- /dev/null +++ b/deploy/utilities/cassandra_row_counter.py @@ -0,0 +1,17 @@ +#!/usr/bin/env python3 + +import os +from subprocess import run, check_output +from re import match, DOTALL + +root_dir = '/home/ops/cassandra_backup' + +for i in os.listdir(root_dir): + try: + for j in os.listdir(i): + ks = i+'.'+str(j.split('-')[0]) + val = 'cqlsh -e "select count(*) from {};"'.format(ks) + out = check_output(["/bin/bash","-c",val]) + print(ks+' : '+match(r'.+\s(\d+).+', str(out), DOTALL).group(1)) + except NotADirectoryError as e: + print(e) From a7bdc0f134b7c30c0c71ca4b3e316bddf5800a6c Mon Sep 17 00:00:00 2001 From: S M Y Date: Fri, 7 Sep 2018 10:50:57 +0530 Subject: [PATCH 0057/1345] Issue #000 vars: Adding Env vars for content service --- .../roles/stack-sunbird/templates/sunbird_content-service.env | 1 + ansible/roles/stack-sunbird/templates/sunbird_player.env | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/stack-sunbird/templates/sunbird_content-service.env b/ansible/roles/stack-sunbird/templates/sunbird_content-service.env index a60cf70fcc..876b692ef7 100644 --- a/ansible/roles/stack-sunbird/templates/sunbird_content-service.env +++ b/ansible/roles/stack-sunbird/templates/sunbird_content-service.env @@ -40,3 +40,4 @@ sunbird_content_service_whitelisted_mimetype={{content_service_whitelisted_mimet sunbird_content_service_whitelisted_resourcetype={{content_service_whitelisted_resourcetype}} sunbird_language_service_api_key={{sunbird_language_service_api_key}} sunbird_language_service_api_base_url={{sunbird_language_service_api_base_url}} +sunbird_portal_base_url={{sunbird_portal_base_url}} diff --git a/ansible/roles/stack-sunbird/templates/sunbird_player.env b/ansible/roles/stack-sunbird/templates/sunbird_player.env index 9e2df30ff0..03c2696cb6 100644 --- a/ansible/roles/stack-sunbird/templates/sunbird_player.env +++ b/ansible/roles/stack-sunbird/templates/sunbird_player.env @@ -29,6 +29,5 @@ sunbird_portal_title_name={{sunbird_portal_title_name}} sunbird_enable_signup={{sunbird_enable_signup}} sunbird_tenant_cdn_url={{sunbird_tenant_cdn_url}} sunbird_cloud_storage_urls={{sunbird_cloud_storage_urls}} -sunbird_portal_base_url={{sunbird_portal_base_url}} sunbird_config_service_url={{sunbird_config_service_url}} config_cache_ttl={{config_cache_ttl}} From ec2e602c98a54606fcfbce45ae8d8a9bfc790135 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Fri, 7 Sep 2018 12:05:37 +0530 Subject: [PATCH 0058/1345] Issue #DO-129 feat: change permission --- deploy/utilities/cassandra_row_counter.py | 0 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 deploy/utilities/cassandra_row_counter.py diff --git a/deploy/utilities/cassandra_row_counter.py b/deploy/utilities/cassandra_row_counter.py old mode 100644 new mode 100755 From 6ddad212563c6634a986ccab3ad54d4ae3c9c151 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Fri, 7 Sep 2018 12:41:18 +0530 Subject: [PATCH 0059/1345] Issue #DO-129 fix: Changing the dir --- deploy/utilities/cassandra_row_counter.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/deploy/utilities/cassandra_row_counter.py b/deploy/utilities/cassandra_row_counter.py index 110bb92b1b..aaeb03c482 100755 --- a/deploy/utilities/cassandra_row_counter.py +++ b/deploy/utilities/cassandra_row_counter.py @@ -5,6 +5,8 @@ from re import match, DOTALL root_dir = '/home/ops/cassandra_backup' + +os.chdir(root_dir) for i in os.listdir(root_dir): try: From 4302fc7bc961e0c4c6c8ad8047c52bf2e305e5e1 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Fri, 7 Sep 2018 15:06:39 +0530 Subject: [PATCH 0060/1345] Issue #DO-129: added logging in to file --- deploy/utilities/cassandra_row_counter.py | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/deploy/utilities/cassandra_row_counter.py b/deploy/utilities/cassandra_row_counter.py index aaeb03c482..038f9d2a48 100755 --- a/deploy/utilities/cassandra_row_counter.py +++ b/deploy/utilities/cassandra_row_counter.py @@ -5,15 +5,18 @@ from re import match, DOTALL root_dir = '/home/ops/cassandra_backup' - +log_file = os.path.expanduser("~")+'/cassandra_row_count.txt' os.chdir(root_dir) -for i in os.listdir(root_dir): - try: - for j in os.listdir(i): - ks = i+'.'+str(j.split('-')[0]) - val = 'cqlsh -e "select count(*) from {};"'.format(ks) - out = check_output(["/bin/bash","-c",val]) - print(ks+' : '+match(r'.+\s(\d+).+', str(out), DOTALL).group(1)) - except NotADirectoryError as e: - print(e) +with open(log_file,'a') as cf: + for i in os.listdir(root_dir): + try: + for j in os.listdir(i): + ks = i+'.'+str(j.split('-')[0]) + val = 'cqlsh -e "select count(*) from {};"'.format(ks) + out = check_output(["/bin/bash","-c",val]) + tmp = ks+' : '+match(r'.+\s(\d+).+', str(out), DOTALL).group(1) + cf.write(tmp+'\n') + print(tmp) + except Exception as e: + print(e) From 8304466d914ad1e434cff50ebd54d0be8487e7aa Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Fri, 7 Sep 2018 16:01:16 +0530 Subject: [PATCH 0061/1345] Issue #DO-137 feat: tasks clearing old snaps adding default name for snaps --- deploy/cassandra_backup.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/deploy/cassandra_backup.py b/deploy/cassandra_backup.py index d9bd234be6..8265346f90 100755 --- a/deploy/cassandra_backup.py +++ b/deploy/cassandra_backup.py @@ -7,7 +7,7 @@ usage: script snapshot_name -eg: ./cassandra_backup.py my_snapshot +eg: ./cassandra_backup.py ''' from os import path, walk, sep, system, getcwd, makedirs @@ -16,10 +16,11 @@ from re import match, compile from sys import exit from tempfile import mkdtemp +from time import strftime parser = ArgumentParser(description="Create a snapshot and create tar ball inside tardirectory") parser.add_argument("-d","--datadirectory", metavar="datadir", default='/var/lib/cassandra/data', help="path to create the tarball. Default /var/lib/cassadra/data") -parser.add_argument("snapshotname", help="name in which you want to take the snapshot") +parser.add_argument("-s","--snapshotname", metavar="tardir", default="cassandra_backup-"+strftime("%Y-%m-%d"), help="Snap shot name, default {}".format("cassandra_backup-"+strftime("%Y-%m-%d"))) parser.add_argument("-t","--tardirectory", metavar="tardir", default=getcwd(), help="path to create the tarball. Default {}".format(getcwd())) args = parser.parse_args() @@ -51,6 +52,9 @@ def copy(): print("Couldn't backup schema, exiting...") exit(1) print("Schema backup completed. saved in {}/cassandra_backup/db_schema.sql".format(tmpdir)) +# Cleaning all old snapshots +command = "nodetool clearsnapshot" +system(command) # Creating snapshots command = "nodetool snapshot -t {}".format(args.snapshotname) rc = system(command) From 58bf0c7ac1958593b5cff67d008f2eb22d05fdbb Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Fri, 7 Sep 2018 17:25:27 +0530 Subject: [PATCH 0062/1345] Issue #DO-137 feat: Added ignore list --- deploy/utilities/cassandra_row_counter.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/deploy/utilities/cassandra_row_counter.py b/deploy/utilities/cassandra_row_counter.py index 038f9d2a48..45564c8b3e 100755 --- a/deploy/utilities/cassandra_row_counter.py +++ b/deploy/utilities/cassandra_row_counter.py @@ -1,20 +1,23 @@ #!/usr/bin/env python3 import os -from subprocess import run, check_output -from re import match, DOTALL +from subprocess import check_output, STDOUT +from re import match, DOTALL, compile -root_dir = '/home/ops/cassandra_backup' +root_dir = '/var/lib/cassandra/data' log_file = os.path.expanduser("~")+'/cassandra_row_count.txt' os.chdir(root_dir) +ignore_list = compile(r'(system|system|systemtauth|system_traces|system_schema|system_distributed)') with open(log_file,'a') as cf: for i in os.listdir(root_dir): + if match(ignore_list, i): + continue try: for j in os.listdir(i): ks = i+'.'+str(j.split('-')[0]) val = 'cqlsh -e "select count(*) from {};"'.format(ks) - out = check_output(["/bin/bash","-c",val]) + out = check_output(["/bin/bash","-c",val], stderr=STDOUT) tmp = ks+' : '+match(r'.+\s(\d+).+', str(out), DOTALL).group(1) cf.write(tmp+'\n') print(tmp) From e5e81a14b757cbfbb9c7a6c2d3ee47ec915f4b75 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Mon, 10 Sep 2018 09:21:05 +0530 Subject: [PATCH 0063/1345] Issue #DO-137 fix: typos and bugs --- deploy/cassandra_backup.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/deploy/cassandra_backup.py b/deploy/cassandra_backup.py index 8265346f90..b47d84fa9b 100755 --- a/deploy/cassandra_backup.py +++ b/deploy/cassandra_backup.py @@ -19,9 +19,9 @@ from time import strftime parser = ArgumentParser(description="Create a snapshot and create tar ball inside tardirectory") -parser.add_argument("-d","--datadirectory", metavar="datadir", default='/var/lib/cassandra/data', help="path to create the tarball. Default /var/lib/cassadra/data") -parser.add_argument("-s","--snapshotname", metavar="tardir", default="cassandra_backup-"+strftime("%Y-%m-%d"), help="Snap shot name, default {}".format("cassandra_backup-"+strftime("%Y-%m-%d"))) -parser.add_argument("-t","--tardirectory", metavar="tardir", default=getcwd(), help="path to create the tarball. Default {}".format(getcwd())) +parser.add_argument("-d","--datadirectory", metavar="datadir", default='/var/lib/cassandra/data', help="Path to cassadandra keyspaces. Default /var/lib/cassadra/data") +parser.add_argument("-s","--snapshotname", metavar="snapshotname", default="cassandra_backup-"+strftime("%Y-%m-%d"), help="Name with which snapshot to be taken. Default {}".format("cassandra_backup-"+strftime("%Y-%m-%d"))) +parser.add_argument("-t","--tardirectory", metavar="tardir", default=getcwd(), help="Path to create the tarball. Default {}".format(getcwd())) args = parser.parse_args() # Create temporary directory to copy data From 3e4218671619ab67a8c2b795fe08a09345bb994e Mon Sep 17 00:00:00 2001 From: S M Y Date: Wed, 12 Sep 2018 11:20:42 +0530 Subject: [PATCH 0064/1345] Issue #000 monit: adding dpkg_options to monit --- ansible/roles/monit/tasks/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/monit/tasks/main.yml b/ansible/roles/monit/tasks/main.yml index 394cdd49e5..b114a10101 100755 --- a/ansible/roles/monit/tasks/main.yml +++ b/ansible/roles/monit/tasks/main.yml @@ -14,7 +14,7 @@ - name: Install Monit - apt: name=monit={{monit_version}} state=present + apt: name=monit={{monit_version}} state=present dpkg_options=force-confdef,force-confold notify: restart monit - name: Create monit folder From a00d43f2e23db6a6b28ed1bd27a2da803d74a079 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Wed, 12 Sep 2018 12:25:54 +0530 Subject: [PATCH 0065/1345] Issue #DO-157 fix: monit installation failing dpkg issue with downgrading package ignoring false alarm --- ansible/roles/monit/tasks/main.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/ansible/roles/monit/tasks/main.yml b/ansible/roles/monit/tasks/main.yml index 394cdd49e5..df229660e0 100755 --- a/ansible/roles/monit/tasks/main.yml +++ b/ansible/roles/monit/tasks/main.yml @@ -14,7 +14,10 @@ - name: Install Monit - apt: name=monit={{monit_version}} state=present + apt: + name: monit={{monit_version}} + state: present + force: yes notify: restart monit - name: Create monit folder From d84caafa5169ec2d7cecff95e5efa6c2ca89608c Mon Sep 17 00:00:00 2001 From: S M Y Date: Wed, 12 Sep 2018 14:38:16 +0530 Subject: [PATCH 0066/1345] Issue ##229 ver: updating versions for release-1.10 --- deploy/version.env | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/deploy/version.env b/deploy/version.env index 1b59cc8cb1..1a5fd07df8 100755 --- a/deploy/version.env +++ b/deploy/version.env @@ -1,8 +1,8 @@ -PLAYER_VERSION=1.9.0-gold -CONTENT_SERVICE_VERSION=1.9.0-gold -LEARNER_SERVICE_VERSION=1.9.0-gold +PLAYER_VERSION=1.10.0-gold +CONTENT_SERVICE_VERSION=1.10.0-gold +LEARNER_SERVICE_VERSION=1.10.0-gold PROXY_VERSION=1.8.0-gold BADGER_SERVICE_VERSION=1.8.0-gold KONG_VERSION=1.8.0-gold -TELEMETRY_SERVICE_VERSION=1.8.1-gold -CONFIG_SERVICE_VERSION=1.10.0-bronze +TELEMETRY_SERVICE_VERSION=1.10.0-gold +CONFIG_SERVICE_VERSION=1.10.0-silver From d1cf8ba49637647b91d621af9081c04f035d27a2 Mon Sep 17 00:00:00 2001 From: S M Y Date: Wed, 12 Sep 2018 15:27:22 +0530 Subject: [PATCH 0067/1345] Issue #230 spaces: onboarding apis parsing error due to multiple spaces and tabs --- ansible/roles/kong-api/defaults/main.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ansible/roles/kong-api/defaults/main.yml b/ansible/roles/kong-api/defaults/main.yml index b075a75e8d..e94d81529a 100644 --- a/ansible/roles/kong-api/defaults/main.yml +++ b/ansible/roles/kong-api/defaults/main.yml @@ -425,7 +425,7 @@ kong_apis: config.hour: "{{ medium_rate_limit_per_hour }}" config.limit_by: credential - name: request-size-limiting - config.allowed_payload_size: "{{ small_request_size_limit }}" + config.allowed_payload_size: "{{ small_request_size_limit }}" - name: updateUser request_path: "{{ user_service_prefix }}/v1/update" upstream_url: "{{ learning_service_url }}/v1/user/update" @@ -3275,4 +3275,4 @@ kong_apis: - {name: 'statsd', config.metrics: "{{ statsd_metrics }}" } - {name: 'acl', config.whitelist: 'dataAdmin'} - {name: 'rate-limiting', config.policy: "local", config.hour: "{{ medium_rate_limit_per_hour }}"} - - {name: 'request-size-limiting', config.allowed_payload_size: "{{ small_request_size_limit }}" } \ No newline at end of file + - {name: 'request-size-limiting', config.allowed_payload_size: "{{ small_request_size_limit }}" } From c7b4bca3aa0fac402105ea31a01a1ee09f7fe679 Mon Sep 17 00:00:00 2001 From: S M Y Date: Wed, 12 Sep 2018 15:56:39 +0530 Subject: [PATCH 0068/1345] Issue #231 proxy: proxy vars updation --- ansible/inventories/sample/group_vars/sample | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ansible/inventories/sample/group_vars/sample b/ansible/inventories/sample/group_vars/sample index f464b0fea5..158c39147b 100644 --- a/ansible/inventories/sample/group_vars/sample +++ b/ansible/inventories/sample/group_vars/sample @@ -327,3 +327,6 @@ sunbird_portal_base_url: https://staging.open-sunbird.org #Learner Vars sunbird_email_max_recipients_limit: 100 + +#Proxy vars +sunbird_blob_env: "{{env}}" From f7c00616d07109e08773376b805b5319232f0e30 Mon Sep 17 00:00:00 2001 From: S M Y Date: Wed, 12 Sep 2018 17:30:36 +0530 Subject: [PATCH 0069/1345] Issue #231 vars: Adding missing vars --- ansible/inventories/sample/group_vars/sample | 2 +- ansible/roles/stack-sunbird/tasks/config_service.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ansible/inventories/sample/group_vars/sample b/ansible/inventories/sample/group_vars/sample index 158c39147b..5e9ebcf411 100644 --- a/ansible/inventories/sample/group_vars/sample +++ b/ansible/inventories/sample/group_vars/sample @@ -317,7 +317,7 @@ aws_storage_container: sunbird_cassandra_host: "{{groups['cassandra'][0]|default(database_host)}}" sunbird_cassandra_port: 9042 -sunbird_cassandra_username: +sunbird_cassandra_username: cassandra sunbird_cassandra_password: "{{cassandra_password if cassandra_password else database_password}}" sunbird_config_service_url: "{{proto}}://{{proxy_server_name}}/api/config/" config_cache_ttl: 600 diff --git a/ansible/roles/stack-sunbird/tasks/config_service.yml b/ansible/roles/stack-sunbird/tasks/config_service.yml index 6f27717b3f..ffce431299 100644 --- a/ansible/roles/stack-sunbird/tasks/config_service.yml +++ b/ansible/roles/stack-sunbird/tasks/config_service.yml @@ -4,6 +4,6 @@ ignore_errors: yes - name: Deploy config service - shell: "docker service create --replicas {{ config_replicas }} -p 6000:8080 --name config-service --hostname config-service --reserve-memory {{ config_reservation_memory }} --limit-memory {{ config_limit_memory }} --limit-cpu {{ config_limit_cpu }} --reserve-cpu {{ config_reservation_cpu }} --network application_default --env-file /home/deployer/env/sunbird_config-service.env {{hub_org}}/{{image_name}}:{{image_tag}}" + shell: "docker service create --replicas {{ config_replicas }} -p 6000:8080 --name config-service --hostname config-service --reserve-memory {{ config_reservation_memory }} --limit-memory {{ config_limit_memory }} --network application_default --env-file /home/deployer/env/sunbird_config-service.env {{hub_org}}/{{image_name}}:{{image_tag}}" args: chdir: /home/deployer/stack From eec93e850b5814540e493635ea7d87ab336dbc3a Mon Sep 17 00:00:00 2001 From: S M Y Date: Fri, 14 Sep 2018 19:05:42 +0530 Subject: [PATCH 0070/1345] Issue #000 encryption: adding encryption service vars --- ansible/inventories/sample/group_vars/sample | 10 ++++++++++ .../tasks/.encryption_service.yml.swp | Bin 0 -> 12288 bytes .../stack-sunbird/tasks/encryption_service.yml | 9 +++++++++ ansible/roles/stack-sunbird/tasks/main.yml | 3 +++ .../templates/sunbird_encryption-service.yml | 5 +++++ 5 files changed, 27 insertions(+) create mode 100644 ansible/roles/stack-sunbird/tasks/.encryption_service.yml.swp create mode 100644 ansible/roles/stack-sunbird/tasks/encryption_service.yml create mode 100644 ansible/roles/stack-sunbird/templates/sunbird_encryption-service.yml diff --git a/ansible/inventories/sample/group_vars/sample b/ansible/inventories/sample/group_vars/sample index 5e9ebcf411..da137af629 100644 --- a/ansible/inventories/sample/group_vars/sample +++ b/ansible/inventories/sample/group_vars/sample @@ -330,3 +330,13 @@ sunbird_email_max_recipients_limit: 100 #Proxy vars sunbird_blob_env: "{{env}}" + +#encryption Service +encryption_service_user: encryption +encryption_db_name: encryption +encryption_db_dialect: postgres +encryption_reservation_memory: 750MB +encryption_replicas: 1 +encryption_limit_memory: 750MB +encryption_limit_cpu: 1 +encryption_reservation_cpu: 1 diff --git a/ansible/roles/stack-sunbird/tasks/.encryption_service.yml.swp b/ansible/roles/stack-sunbird/tasks/.encryption_service.yml.swp new file mode 100644 index 0000000000000000000000000000000000000000..b239ed322b4cebe9536d5f1b2b2dedc56e172295 GIT binary patch literal 12288 zcmeI&&x+JA90%~MHxH|#FA&Fbrn9b~^d@*w@FM8NL&>ziZA1U0B$<&iR9`~z;2Zb= zzJafx;K`$J;6>1+w!39@S#KhK1DVkLeo2~7PGz!QJ-Ppo-(KEgzFcAK^Sd`sA6)vv z-rr@cR81bb&nthL_dFyf>-^f)$5Q|;1Rwwb2tWV=5P$## zAn+duxOR`d@cX?wxAKM>G(C00bZa0SG_<0uX=z1Rwwb2>gQrGGpxZK4Tw! z4gdd7-~Zn(Gxo{Xx4ype^`)=I*Y7^>>zMx`j6s0_1Rwwb2tWV=5P$##AOL~CDZqV6 zi%glAM}@8_%BZb$N9O0%YR0)Vxs82m3#zJ^FEX8$WcYZsnx}@OBQAvT163+5-|hJ9 z3ife#-*eIOJFA1kIQ(!wq>(kva>X>K5QVnx?5LrTNus7&o9>qdLr@O)zsH2Iw5U|A z-0z1Bp=6%ikb9<0$z?liYM3meBe|)ZpNg8TI8qgzCiDH%b@k+gVA|Hwhq-^*VzW-P z$@@Oq?NlvuO2SV2KAs+(^uYxaJoLx>-f$u_r^%lAQ&D-N4JBlZHa6xR*|U$z)U!#Z Tw>nwpk=NYL&*OL Date: Fri, 14 Sep 2018 19:24:38 +0530 Subject: [PATCH 0071/1345] Issue #000 encryption: adding encryption service stack file --- .../tasks/.encryption_service.yml.swp | Bin 12288 -> 0 bytes .../templates/stack_encryption_service.yml | 23 ++++++++++++++++++ ...ice.yml => sunbird_encryption-service.env} | 0 3 files changed, 23 insertions(+) delete mode 100644 ansible/roles/stack-sunbird/tasks/.encryption_service.yml.swp create mode 100644 ansible/roles/stack-sunbird/templates/stack_encryption_service.yml rename ansible/roles/stack-sunbird/templates/{sunbird_encryption-service.yml => sunbird_encryption-service.env} (100%) diff --git a/ansible/roles/stack-sunbird/tasks/.encryption_service.yml.swp b/ansible/roles/stack-sunbird/tasks/.encryption_service.yml.swp deleted file mode 100644 index b239ed322b4cebe9536d5f1b2b2dedc56e172295..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12288 zcmeI&&x+JA90%~MHxH|#FA&Fbrn9b~^d@*w@FM8NL&>ziZA1U0B$<&iR9`~z;2Zb= zzJafx;K`$J;6>1+w!39@S#KhK1DVkLeo2~7PGz!QJ-Ppo-(KEgzFcAK^Sd`sA6)vv z-rr@cR81bb&nthL_dFyf>-^f)$5Q|;1Rwwb2tWV=5P$## zAn+duxOR`d@cX?wxAKM>G(C00bZa0SG_<0uX=z1Rwwb2>gQrGGpxZK4Tw! z4gdd7-~Zn(Gxo{Xx4ype^`)=I*Y7^>>zMx`j6s0_1Rwwb2tWV=5P$##AOL~CDZqV6 zi%glAM}@8_%BZb$N9O0%YR0)Vxs82m3#zJ^FEX8$WcYZsnx}@OBQAvT163+5-|hJ9 z3ife#-*eIOJFA1kIQ(!wq>(kva>X>K5QVnx?5LrTNus7&o9>qdLr@O)zsH2Iw5U|A z-0z1Bp=6%ikb9<0$z?liYM3meBe|)ZpNg8TI8qgzCiDH%b@k+gVA|Hwhq-^*VzW-P z$@@Oq?NlvuO2SV2KAs+(^uYxaJoLx>-f$u_r^%lAQ&D-N4JBlZHa6xR*|U$z)U!#Z Tw>nwpk=NYL&*OL Date: Fri, 14 Sep 2018 10:57:12 +0530 Subject: [PATCH 0072/1345] Issue #SB-6475 feat: Sunbird Initialisation Script - Upgrade --- .../tasks/main.yml | 9 +++ .../templates/system_init_upgrade_commands.j2 | 64 +++++++++++++++++++ ansible/system-init-upgrade.yml | 6 ++ deploy/sunbird_upgrade.sh | 9 ++- 4 files changed, 86 insertions(+), 2 deletions(-) create mode 100644 ansible/roles/sunbird-system-init-upgrade/tasks/main.yml create mode 100644 ansible/roles/sunbird-system-init-upgrade/templates/system_init_upgrade_commands.j2 create mode 100644 ansible/system-init-upgrade.yml diff --git a/ansible/roles/sunbird-system-init-upgrade/tasks/main.yml b/ansible/roles/sunbird-system-init-upgrade/tasks/main.yml new file mode 100644 index 0000000000..b403bda95b --- /dev/null +++ b/ansible/roles/sunbird-system-init-upgrade/tasks/main.yml @@ -0,0 +1,9 @@ +- name: Copy the templates + become: yes + template: src=system_init_upgrade_commands.j2 dest=/tmp/system_init_upgrade_commands.sh mode=755 + +- name: Run the system init upgrade script + become: yes + shell: sh system_init_upgrade_commands.sh + args: + chdir: /tmp/ \ No newline at end of file diff --git a/ansible/roles/sunbird-system-init-upgrade/templates/system_init_upgrade_commands.j2 b/ansible/roles/sunbird-system-init-upgrade/templates/system_init_upgrade_commands.j2 new file mode 100644 index 0000000000..0d6757bb37 --- /dev/null +++ b/ansible/roles/sunbird-system-init-upgrade/templates/system_init_upgrade_commands.j2 @@ -0,0 +1,64 @@ +#!/bin/bash +sunbird_custodian_tenant_channel="{{sunbird_custodian_tenant_channel}}" + +validateConfigFields() { + validateField "sunbird_custodian_tenant_channel" "$sunbird_custodian_tenant_channel"; +} + +validateField() { + fieldName="$1"; + fieldValue="$2"; + if [ -z "$fieldValue" ]; + then + echo "Mandatory field - ""$fieldName"" - is not configured. Exiting System Initialisation Program..."; + exit 1; + fi +} + +getExistingCustodianTenantId() { + sunbird_custodian_tenant_id=$(cqlsh -e "select id from sunbird.organisation where isrootorg=true and channel='""$sunbird_custodian_tenant_channel""' allow filtering;" | awk 'FNR == 4 {print}' | sed 's/ //g') +} + +getValueFromSystemSettings() { + system_settings_id="$1"; + system_settings_value=$(cqlsh -e "select value from sunbird.system_settings where id='""$system_settings_id""';" | awk 'FNR == 4 {print}' | sed 's/ //g') +} + +setValueInSystemSettings() { + system_settings_id="$1"; + system_settings_value="$2"; + cqlsh -e "update sunbird.system_settings set value='""$system_settings_value""',field='""$system_settings_id""' where id='""$system_settings_id""';" +} + +validateConfigFields; +getValueFromSystemSettings "systemInitialisationStatus"; +if [ -z "$system_settings_value" ]; +then + echo "Adding systemInitialisationStatus field to System Settings table..."; + setValueInSystemSettings "systemInitialisationStatus" "SYSTEM_UNINITIALISED"; +fi + +getValueFromSystemSettings "systemInitialisationStatus"; +if [ -z "$system_settings_value" ]; +then + echo "Unable to connect to Cassandra. Exiting program..."; + exit 1; +fi +if [ "$system_settings_value" = "SYSTEM_INITIALISED" ]; +then + echo "System already Initialised. Exiting program..."; + exit 0; +fi + +getExistingCustodianTenantId; +if [ -z "$sunbird_custodian_tenant_id" ]; +then + echo "No Root Organisation found for the configured channel - ""$sunbird_custodian_tenant_channel"" . Exiting System Initialisation Program..."; + exit 1; +else + echo "Root Organisation with id - ""$sunbird_custodian_tenant_id"" - found for the configured channel - ""$sunbird_custodian_tenant_channel"; + setValueInSystemSettings "custodianOrgId" "$sunbird_custodian_tenant_id"; + setValueInSystemSettings "custodianOrgChannel" "$sunbird_custodian_tenant_channel"; + setValueInSystemSettings "systemInitialisationStatus" "SYSTEM_INITIALISED"; + echo "System Initialisation Completed Successfully..." +fi \ No newline at end of file diff --git a/ansible/system-init-upgrade.yml b/ansible/system-init-upgrade.yml new file mode 100644 index 0000000000..dbd39e82de --- /dev/null +++ b/ansible/system-init-upgrade.yml @@ -0,0 +1,6 @@ +- hosts: cassandra + become: yes + vars_files: + - ['{{inventory_dir}}/secrets.yml', 'secrets/{{env}}.yml'] + roles: + - sunbird-system-init-upgrade \ No newline at end of file diff --git a/deploy/sunbird_upgrade.sh b/deploy/sunbird_upgrade.sh index 86d2f78e18..e091244288 100755 --- a/deploy/sunbird_upgrade.sh +++ b/deploy/sunbird_upgrade.sh @@ -1,17 +1,22 @@ #!/bin/sh +implementation_name=$(awk '/implementation_name: /{ if ($2 !~ /#.*/) {print $2}}' config) +env_name=$(awk '/env: /{ if ($2 !~ /#.*/) {print $2}}' config) +ansible_variable_path="${implementation_name}"-devops/ansible/inventories/"$env_name" +ansible-playbook -i $ansible_variable_path/hosts ../ansible/system-init-upgrade.yml --extra-vars @config + export sunbird_cassandra_host=`ip route get 8.8.8.8 | awk '{print $NF; exit}'` export sunbird_cassandra_port=9042 cd /tmp #Check cassandra migration jar file present or not inside /tmp -if [ -f cassandra-migration-0.0.1-SNAPSHOT-jar-with-dependencies.jar ] +if [ -f cassandra-migration-0.0.1-SNAPSHOT-jar-with-dependencies.jar ] then rm -rf cassandra-migration-0.0.1-SNAPSHOT-jar-with-dependencies.jar fi wget https://github.com/project-sunbird/sunbird-utils/releases/download/R1.5/cassandra-migration-0.0.1-SNAPSHOT-jar-with-dependencies.jar -# Start the java process to apply cassandra migration +# Start the java process to apply cassandra migration nohup java -cp "cassandra-migration-0.0.1-SNAPSHOT-jar-with-dependencies.jar" com.contrastsecurity.cassandra.migration.utils.MigrationScriptEntryPoint & From c5ce6c9bb708507f66fd0b9a820a3723ab80e906 Mon Sep 17 00:00:00 2001 From: Jai Date: Fri, 14 Sep 2018 11:03:29 +0530 Subject: [PATCH 0073/1345] Issue #SB-6475 feat: Sunbird Initialisation Script - Upgrade --- deploy/sunbird_upgrade.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/deploy/sunbird_upgrade.sh b/deploy/sunbird_upgrade.sh index e091244288..8c3a107cf3 100755 --- a/deploy/sunbird_upgrade.sh +++ b/deploy/sunbird_upgrade.sh @@ -10,13 +10,13 @@ export sunbird_cassandra_port=9042 cd /tmp #Check cassandra migration jar file present or not inside /tmp -if [ -f cassandra-migration-0.0.1-SNAPSHOT-jar-with-dependencies.jar ] +if [ -f cassandra-migration-0.0.1-SNAPSHOT-jar-with-dependencies.jar ] then rm -rf cassandra-migration-0.0.1-SNAPSHOT-jar-with-dependencies.jar fi wget https://github.com/project-sunbird/sunbird-utils/releases/download/R1.5/cassandra-migration-0.0.1-SNAPSHOT-jar-with-dependencies.jar -# Start the java process to apply cassandra migration +# Start the java process to apply cassandra migration nohup java -cp "cassandra-migration-0.0.1-SNAPSHOT-jar-with-dependencies.jar" com.contrastsecurity.cassandra.migration.utils.MigrationScriptEntryPoint & From d23af575a1a9444e6fa0476f4261bfcbe00345e4 Mon Sep 17 00:00:00 2001 From: Jai Date: Fri, 14 Sep 2018 11:44:16 +0530 Subject: [PATCH 0074/1345] Issue #SB-6475 feat: Sunbird Initialisation Script - Upgrade - Comments added --- .../templates/system_init_upgrade_commands.j2 | 22 +++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/ansible/roles/sunbird-system-init-upgrade/templates/system_init_upgrade_commands.j2 b/ansible/roles/sunbird-system-init-upgrade/templates/system_init_upgrade_commands.j2 index 0d6757bb37..8f5b603f2e 100644 --- a/ansible/roles/sunbird-system-init-upgrade/templates/system_init_upgrade_commands.j2 +++ b/ansible/roles/sunbird-system-init-upgrade/templates/system_init_upgrade_commands.j2 @@ -1,6 +1,7 @@ #!/bin/bash sunbird_custodian_tenant_channel="{{sunbird_custodian_tenant_channel}}" +# Mandatory validation for user configured fields validateConfigFields() { validateField "sunbird_custodian_tenant_channel" "$sunbird_custodian_tenant_channel"; } @@ -15,41 +16,57 @@ validateField() { fi } +# fetches org id with the configured channel, if exists, from sunbird.organisation table +# org id will be set in sunbird_custodian_tenant_id variable getExistingCustodianTenantId() { sunbird_custodian_tenant_id=$(cqlsh -e "select id from sunbird.organisation where isrootorg=true and channel='""$sunbird_custodian_tenant_channel""' allow filtering;" | awk 'FNR == 4 {print}' | sed 's/ //g') } +# fetches value from system_settings table for a given id getValueFromSystemSettings() { system_settings_id="$1"; system_settings_value=$(cqlsh -e "select value from sunbird.system_settings where id='""$system_settings_id""';" | awk 'FNR == 4 {print}' | sed 's/ //g') } +# sets value and field in system_settings table for a given id setValueInSystemSettings() { system_settings_id="$1"; system_settings_value="$2"; cqlsh -e "update sunbird.system_settings set value='""$system_settings_value""',field='""$system_settings_id""' where id='""$system_settings_id""';" } +# Check whether all mandatory fields are configured validateConfigFields; + +# 1. Fetch systemInitialisationStatus from cassandra sunbird.system_settings table +# 2. If systemInitialisationStatus is empty, set it to SYSTEM_UNINITIALISED +# 3. Fetch systemInitialisationStatus again from cassandra +# 4. if systemInitialisationStatus is still empty, then throw cassandra connection error getValueFromSystemSettings "systemInitialisationStatus"; if [ -z "$system_settings_value" ]; then echo "Adding systemInitialisationStatus field to System Settings table..."; setValueInSystemSettings "systemInitialisationStatus" "SYSTEM_UNINITIALISED"; fi - getValueFromSystemSettings "systemInitialisationStatus"; if [ -z "$system_settings_value" ]; then echo "Unable to connect to Cassandra. Exiting program..."; exit 1; fi + +# Exit gracefully if the system is already initialised if [ "$system_settings_value" = "SYSTEM_INITIALISED" ]; then echo "System already Initialised. Exiting program..."; exit 0; fi +# Start of system initialisation process +# 1. Fetch org id for the configured channel from cassandra - sunbird.organisation table +# 2. If org id does not exists, exit the program with error status +# 3. If org id exists, set the org id and configured channel in system_settings table +# 4. Update systemInitialisationStatus to SYSTEM_INITIALISED value in system_settings table getExistingCustodianTenantId; if [ -z "$sunbird_custodian_tenant_id" ]; then @@ -61,4 +78,5 @@ else setValueInSystemSettings "custodianOrgChannel" "$sunbird_custodian_tenant_channel"; setValueInSystemSettings "systemInitialisationStatus" "SYSTEM_INITIALISED"; echo "System Initialisation Completed Successfully..." -fi \ No newline at end of file +fi +# End of system initialisation process \ No newline at end of file From 6260c28564b1bbabc29facbbdbb5327aa0a0019b Mon Sep 17 00:00:00 2001 From: S M Y Date: Fri, 14 Sep 2018 20:08:21 +0530 Subject: [PATCH 0075/1345] Issue #000 enc: Encryption service vars --- ansible/roles/stack-sunbird/tasks/encryption_service.yml | 2 +- .../roles/stack-sunbird/templates/stack_encryption_service.yml | 2 ++ .../stack-sunbird/templates/sunbird_encryption-service.env | 1 + 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/ansible/roles/stack-sunbird/tasks/encryption_service.yml b/ansible/roles/stack-sunbird/tasks/encryption_service.yml index 320acf12a5..c687e3b386 100644 --- a/ansible/roles/stack-sunbird/tasks/encryption_service.yml +++ b/ansible/roles/stack-sunbird/tasks/encryption_service.yml @@ -4,6 +4,6 @@ ignore_errors: yes - name: Deploy encryption service - shell: "docker service create --replicas {{ encryption_replicas }} -p 8013:8013 --name encryption-service --hostname encryption-service --reserve-memory {{ encryption_reservation_memory }} --limit-memory {{ encryption_limit_memory }} --network application_default --env-file /home/deployer/env/sunbird_encryption-service.env {{hub_org}}/{{image_name}}:{{image_tag}}" + shell: "docker service create --replicas {{ encryption_replicas }} -p 8013:8013 --name encryption-service --hostname encryption-service --reserve-memory {{ encryption_reservation_memory }} --limit-memory {{ encryption_limit_memory }} --network application_default --env-file /home/deployer/env/sunbird_encryption-service.env {{hub_org}}/{{image_name}}:{{image_tag}} {{application_postgres_password}}" args: chdir: /home/deployer/stack diff --git a/ansible/roles/stack-sunbird/templates/stack_encryption_service.yml b/ansible/roles/stack-sunbird/templates/stack_encryption_service.yml index 869780d42e..afa8623144 100644 --- a/ansible/roles/stack-sunbird/templates/stack_encryption_service.yml +++ b/ansible/roles/stack-sunbird/templates/stack_encryption_service.yml @@ -5,6 +5,8 @@ services: env_file: /home/deployer/env/sunbird_encryption_service.env deploy: + args: + replicas: {{ encryption_replicas | default(1) }} resources: reservations: diff --git a/ansible/roles/stack-sunbird/templates/sunbird_encryption-service.env b/ansible/roles/stack-sunbird/templates/sunbird_encryption-service.env index 70c60e060a..7d2959184b 100644 --- a/ansible/roles/stack-sunbird/templates/sunbird_encryption-service.env +++ b/ansible/roles/stack-sunbird/templates/sunbird_encryption-service.env @@ -3,3 +3,4 @@ DB_USER={{encryption_service_user}} DB_PASSWORD={{application_postgres_password}} DB_NAME={{encryption_db_name}} DB_DIALECT={{encryption_db_dialect}} +DB_SSL=True From b7342de4ba4e0bf49481e694ccf233cff6211d89 Mon Sep 17 00:00:00 2001 From: S M Y Date: Fri, 14 Sep 2018 20:18:30 +0530 Subject: [PATCH 0076/1345] Issue #000 vars: enc service password injection --- .../stack-sunbird/templates/stack_encryption_service.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ansible/roles/stack-sunbird/templates/stack_encryption_service.yml b/ansible/roles/stack-sunbird/templates/stack_encryption_service.yml index afa8623144..d80f89c20a 100644 --- a/ansible/roles/stack-sunbird/templates/stack_encryption_service.yml +++ b/ansible/roles/stack-sunbird/templates/stack_encryption_service.yml @@ -6,8 +6,8 @@ services: /home/deployer/env/sunbird_encryption_service.env deploy: args: - - replicas: {{ encryption_replicas | default(1) }} + DB_PASSWORD: "{{application_postgres_password}}" + replicas: "{{ encryption_replicas | default(1) }}" resources: reservations: memory: "{{ encryption_reservation_memory | default('256M') }}" From 5fd8c338b4fa87af07ba796162c5e9ce9605e499 Mon Sep 17 00:00:00 2001 From: Jai Date: Sun, 9 Sep 2018 18:10:42 +0530 Subject: [PATCH 0077/1345] Issue #SB-6475 feat: Sunbird Initialisation Script --- .../roles/sunbird-system-init/tasks/main.yml | 17 + .../templates/system_init_commands.j2 | 344 ++++++++++++++++++ ansible/system-init.yml | 6 + deploy/config | 11 + deploy/sunbird_install.sh | 12 +- deploy/system-init.sh | 17 + 6 files changed, 406 insertions(+), 1 deletion(-) create mode 100644 ansible/roles/sunbird-system-init/tasks/main.yml create mode 100644 ansible/roles/sunbird-system-init/templates/system_init_commands.j2 create mode 100644 ansible/system-init.yml create mode 100644 deploy/system-init.sh diff --git a/ansible/roles/sunbird-system-init/tasks/main.yml b/ansible/roles/sunbird-system-init/tasks/main.yml new file mode 100644 index 0000000000..2e3e050f1b --- /dev/null +++ b/ansible/roles/sunbird-system-init/tasks/main.yml @@ -0,0 +1,17 @@ +- name: Install jq + apt: name=jq state=present + become: yes + +- name: Copy the templates + become: yes + template: src=system_init_commands.j2 dest=/tmp/system_init_commands.sh mode=755 + +- name: Pausing for container to be fully functional + pause: + minutes: 2 + +- name: Run the system init script + become: yes + shell: sh system_init_commands.sh + args: + chdir: /tmp/ \ No newline at end of file diff --git a/ansible/roles/sunbird-system-init/templates/system_init_commands.j2 b/ansible/roles/sunbird-system-init/templates/system_init_commands.j2 new file mode 100644 index 0000000000..c66f154da1 --- /dev/null +++ b/ansible/roles/sunbird-system-init/templates/system_init_commands.j2 @@ -0,0 +1,344 @@ +#!/bin/sh + +validateConfigFields() { + if [ -z "{{sunbird_custodian_tenant_name}}" ] || [ -z "{{sunbird_custodian_tenant_description}}" ] || \ + [ -z "{{sunbird_custodian_tenant_channel}}" ] || [ -z "{{sunbird_root_user_firstname}}" ] || \ + [ -z "{{sunbird_root_user_username}}" ] || [ -z "{{sunbird_root_user_password}}" ] || \ + [ -z "{{sunbird_root_user_email}}" ] || [ -z "{{sunbird_root_user_phone}}" ]; + then + echo "System Initialisation failed. One or more mandatory variables are not configured(sunbird_custodian_tenant_name,"\ + "sunbird_custodian_tenant_description,sunbird_custodian_tenant_channel,sunbird_root_user_firstname,"\ + "sunbird_root_user_username,sunbird_root_user_password,sunbird_root_user_email,sunbird_root_user_phone)"; + exit 1; + fi +} + +initializeVariables() { + sunbird_custodian_tenant_slug="$(echo -n "{{sunbird_custodian_tenant_channel}}" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//' | sed -e 's/\s/-/g' | sed -e 's/[^a-zA-Z0-9-]//g' | tr -s '-' | tr A-Z a-z)" + currenttime=$(date +'%F %T:%3N%z') + if [ -z "$sunbird_custodian_tenant_slug" ] || [ -z "$currenttime" ]; + then + echo "System Initialisation failed. Unable to initialise variables."; + exit 1; + fi +} + +getExistingCustodianTenantId() { + sunbird_custodian_tenant_id=$(cqlsh -e "select id from sunbird.organisation where isrootorg=true and channel='{{sunbird_custodian_tenant_channel}}' allow filtering;" | awk 'FNR == 4 {print}' | sed 's/ //g') +} + +getNewCustodianTenantId() { + sunbird_custodian_tenant_id='0'$((($(date +%s%3N)+$(shuf -i 0-999999 -n 1))<<13))'0'; +} + +getValueFromSystemSettings() { + system_settings_value=$(cqlsh -e "select value from sunbird.system_settings where id='"$system_settings_id"';" | awk 'FNR == 4 {print}' | sed 's/ //g') +} + +setValueInSystemSettings() { + cqlsh -e "update sunbird.system_settings set value='"$system_settings_value"',field='"$system_settings_id"' where id='"$system_settings_id"';" +} + +setPropertyInSystemSettings() { + cqlsh -e "insert into sunbird.system_settings(id,field,value) values('"$system_settings_id"','"$system_settings_id"','"$system_settings_value"');" +} + +registerChannel() { + register_channel_response_code=$(curl -o /dev/null -s -w "%{http_code}\n" \ + -X POST {{ekstep_proxy_base_url}}/api/channel/v3/create \ + -H 'authorization: Bearer {{ekstep_api_key}}' \ + -H 'cache-control: no-cache' \ + -H 'content-type: application/json' \ + -d '{ + "request": { + "channel": { + "name":"{{sunbird_custodian_tenant_channel}}", + "description":"{{sunbird_custodian_tenant_description}}", + "code":"'$sunbird_custodian_tenant_id'" + } + } + }') +} + +registerHashTag() { + register_hashtag_response_code=$(curl -o /dev/null -s -w "%{http_code}\n" \ + -X POST {{ekstep_proxy_base_url}}/api/data/v3/tag/register/$sunbird_custodian_tenant_id \ + -H 'authorization: Bearer {{ekstep_api_key}}' \ + -H 'cache-control: no-cache' \ + -H 'content-type: application/json' \ + -d '{}') +} + +createOrgInCassandra() { + sunbird_cassandra_org_insert_query="insert into sunbird.organisation \ + (orgname,description,channel,slug,id,hashtagid, \ + rootorgid,createddate,createdby,isrootorg,isdefault, status) values \ + ('""{{sunbird_custodian_tenant_name}}""', '""{{sunbird_custodian_tenant_description}}""', \ + '""{{sunbird_custodian_tenant_channel}}""', '"$sunbird_custodian_tenant_slug"', \ + '"$sunbird_custodian_tenant_id"', '"$sunbird_custodian_tenant_id"', \ + '"$sunbird_custodian_tenant_id"', '"$currenttime"', 'system', true, true, 1);" + + cqlsh -e "$sunbird_cassandra_org_insert_query" +} + +createOrgInES() { + es_host="$(echo "{{sunbird_es_host}}" | cut -d ',' -f1)" + es_create_org_response=$(curl -X PUT $es_host:9200/searchindex/org/$sunbird_custodian_tenant_id \ + -H 'cache-control: no-cache' \ + -H 'content-type: application/json' \ + -d '{ + "orgName":"{{sunbird_custodian_tenant_name}}", + "description":"{{sunbird_custodian_tenant_description}}", + "channel":"{{sunbird_custodian_tenant_channel}}", + "slug":"'"$sunbird_custodian_tenant_slug"'", + "id":"'"$sunbird_custodian_tenant_id"'", + "identifier":"'"$sunbird_custodian_tenant_id"'", + "hashTagId":"'"$sunbird_custodian_tenant_id"'", + "rootOrgId":"'"$sunbird_custodian_tenant_id"'", + "createdDate":"'"$currenttime"'", + "createdBy":"system", + "isRootOrg":true, + "isDefault":true, + "status":1 + }') +} + +fetchOrgFromES() { + es_host="$(echo "{{sunbird_es_host}}" | cut -d ',' -f1)" + es_fetch_org_response=$(curl -X GET $es_host:9200/searchindex/org/$sunbird_custodian_tenant_id) +} + +getKeycloakToken() { + sunbird_login_id={{sunbird_root_user_username}}'@'{{sunbird_custodian_tenant_channel}} + keycloak_access_token=$(curl -s -X POST {{proto}}://{{proxy_server_name}}/auth/realms/sunbird/protocol/openid-connect/token \ + -H 'cache-control: no-cache' \ + -H 'content-type: application/x-www-form-urlencoded' \ + -d 'client_id=admin-cli&username='"$sunbird_login_id"'&password={{sunbird_root_user_password}}&grant_type=password' | jq '.access_token' | tr -d "\"") +} + +createUser() { + user_creation_response=$(curl -X POST {{proto}}://{{proxy_server_name}}/api/user/v1/create \ + -H 'Cache-Control: no-cache' \ + -H 'Content-Type: application/json' \ + -H 'accept: application/json' \ + -H 'authorization: Bearer {{sunbird_api_auth_token}}' \ + -d '{ + "request": { + "firstName":"{{sunbird_root_user_firstname}}", + "lastName":"{{sunbird_root_user_lastname}}", + "userName":"{{sunbird_root_user_username}}", + "password":"{{sunbird_root_user_password}}", + "email":"{{sunbird_root_user_email}}", + "phone":"{{sunbird_root_user_phone}}", + "channel": "{{sunbird_custodian_tenant_channel}}", + "emailVerified": true, + "phoneVerified": true + } + }') +} + +addUserToCustodianOrg() { + getKeycloakToken + add_user_response=$(curl -X POST {{proto}}://{{proxy_server_name}}/api/org/v1/member/add \ + -H 'Cache-Control: no-cache' \ + -H 'Content-Type: application/json' \ + -H 'accept: application/json' \ + -H 'authorization: Bearer {{sunbird_api_auth_token}}' \ + -H 'x-authenticated-user-token: '"$keycloak_access_token" \ + -d '{ + "request": { + "organisationId": "'"$sunbird_custodian_tenant_id"'", + "userId": "'"$sunbird_root_user_id"'", + "roles": ["ORG_ADMIN"] + } + }') +} + +assignRoleToRootUser() { + getKeycloakToken + assign_role_response=$(curl -X POST {{proto}}://{{proxy_server_name}}/api/user/v1/role/assign \ + -H 'Cache-Control: no-cache' \ + -H 'Content-Type: application/json' \ + -H 'accept: application/json' \ + -H 'authorization: Bearer {{sunbird_api_auth_token}}' \ + -H 'x-authenticated-user-token: '"$keycloak_access_token" \ + -d '{ + "request": { + "organisationId": "'"$sunbird_custodian_tenant_id"'", + "userId": "'"$sunbird_root_user_id"'", + "roles": ["ORG_ADMIN"] + } + }') +} + +updateSettingsCustodianOrgCreated() { + system_settings_id="custodianOrgCreated"; + system_settings_value="true"; + setValueInSystemSettings; +} + +updateSettingsCustodianOrgId() { + system_settings_id="custodianOrgId"; + system_settings_value="$sunbird_custodian_tenant_id"; + setValueInSystemSettings; +} + +updateSettingsCustodianOrgChannel() { + system_settings_id="custodianOrgChannel"; + system_settings_value="{{sunbird_custodian_tenant_channel}}"; + setValueInSystemSettings; +} + +updateSettingsSystemInit() { + system_settings_id="systemInit"; + system_settings_value="true"; + setValueInSystemSettings; +} + +updateSettingsChannelRegistered() { + system_settings_id="custodianOrgChannelRegistered"; + system_settings_value="true"; + setValueInSystemSettings; +} + +updateSettingsHashTagRegistered() { + system_settings_id="custodianOrgHashTagRegistered"; + system_settings_value="true"; + setValueInSystemSettings; +} + +updateSettingsRootUserCreated() { + system_settings_id="custodianOrgRootUserCreated"; + system_settings_value="true"; + setValueInSystemSettings; +} + +system_settings_id="systemInit"; +getValueFromSystemSettings; +if [ "$system_settings_value" = "false" ]; +then + echo "Starting System Initialisation..."; + validateConfigFields; + initializeVariables; + getExistingCustodianTenantId; + if [ -z "$sunbird_custodian_tenant_id" ]; + then + echo "Creating Custodian Organisation in Cassandra..."; + getNewCustodianTenantId; + createOrgInCassandra; + getExistingCustodianTenantId; + if [ -z "$sunbird_custodian_tenant_id" ]; + then + echo "Custodian Organisation creation FAILED in Cassandra."; + exit 1; + else + echo "Custodian Organisation is created in Cassandra."; + fi + else + echo "Already a Tenant Organisation exists with the configured channel - ""{{sunbird_custodian_tenant_channel}}"; + echo "Making Tenant Organisation with Id - ""$sunbird_custodian_tenant_id"" as Custodian Organisation..."; + fi + + fetchOrgFromES; + isOrgFoundInES=$(echo -n "$es_fetch_org_response" | jq '.found' | tr -d "\""); + if [ "$isOrgFoundInES" = "false" ]; + then + echo "Syncing Custodian Organisation data to Elastic Search..."; + createOrgInES; + fetchOrgFromES; + isOrgFoundInES=$(echo -n "$es_fetch_org_response" | jq '.found' | tr -d "\""); + if [ "$isOrgFoundInES" = "true" ]; + then + echo "Custodian Organisation data synced to Elastic Search."; + updateSettingsCustodianOrgCreated; + else + echo "System Initialisation failed. Unable to sync custodian organisation data to Elastic Search."; + exit 1; + fi + elif [ "$isOrgFoundInES" = "true" ]; + then + echo "Custodian Organisation data is already available in Elastic Search."; + updateSettingsCustodianOrgCreated; + else + echo "System Initialisation failed. Unable to fetch data from Elastic Search - index=searchindex, type=org"; + exit 1; + fi + + system_settings_id="custodianOrgChannelRegistered"; + getValueFromSystemSettings; + if [ "$system_settings_value" != "true" ]; + then + echo "Registering Custodian Organisation Channel..."; + registerChannel; + if [ "$register_channel_response_code" = "200" ]; + then + echo "Custodian Organisation Channel Registered Successfully."; + updateSettingsChannelRegistered; + else + echo "System Initialisation failed due to Custodian Organisation Channel Registration failure."; + exit 1; + fi + else + echo "Channel is already registered. So skipping channel registration..."; + fi + + system_settings_id="custodianOrgHashTagRegistered"; + getValueFromSystemSettings; + if [ "$system_settings_value" != "true" ]; + then + echo "Registering Custodian Organisation HashTag for Analytics..."; + registerHashTag; + if [ "$register_hashtag_response_code" = "200" ]; + then + echo "Custodian Organisation HashTag Registered Successfully."; + updateSettingsHashTagRegistered; + else + echo "System Initialisation failed due to Custodian Organisation HashTag Registration failure."; + exit 1; + fi + else + echo "HashTag is already registered. So skipping hashTag registration..."; + fi + + updateSettingsCustodianOrgId; + updateSettingsCustodianOrgChannel; + + system_settings_id="custodianOrgRootUserCreated"; + getValueFromSystemSettings; + if [ "$system_settings_value" != "true" ]; + then + echo "Creating Sunbird Root User..."; + createUser; + user_creation_status=$(echo -n "$user_creation_response" | jq '.params.status' | tr -d "\""); + if [ "$user_creation_status" = "success" ]; + then + sunbird_root_user_id=$(echo -n "$user_creation_response" | jq '.result.userId' | tr -d "\""); + addUserToCustodianOrg; + add_user_status=$(echo -n "$add_user_response" | jq '.result.response' | tr -d "\""); + if [ "$add_user_status" = "SUCCESS" ]; + then + echo "Sunbird root user created successfully"; + updateSettingsRootUserCreated; + else + echo "Sunbird root user - assign role failed."; + exit 1; + fi + else + echo "Sunbird root user creation failed"; + exit 1; + fi + else + echo "Sunbird root user is already created. So skipping user creation..."; + fi + + updateSettingsSystemInit; + echo "System Initialisation Completed Successfully."; + +elif [ "$system_settings_value" = "true" ]; +then + echo "System already Initialised. Exiting program..."; + exit 0; +else + echo "System Initialisation failed due to setup issue. Unable to fetch systemInit status from sunbird.system_settings table"; + exit 1; +fi \ No newline at end of file diff --git a/ansible/system-init.yml b/ansible/system-init.yml new file mode 100644 index 0000000000..6989f74eca --- /dev/null +++ b/ansible/system-init.yml @@ -0,0 +1,6 @@ +- hosts: cassandra + become: yes + vars_files: + - ['{{inventory_dir}}/secrets.yml', 'secrets/{{env}}.yml'] + roles: + - sunbird-system-init \ No newline at end of file diff --git a/deploy/config b/deploy/config index 3819188771..1bdc22be46 100755 --- a/deploy/config +++ b/deploy/config @@ -57,6 +57,17 @@ sunbird_image_storage_url: # Azure storage url ex: https:// sunbird_azure_storage_key: # Azure account storage key sunbird_azure_storage_account: # Azure account storage name +#Sunbird System Initialisation - First organisation and user in Sunbird will be created with these details +sunbird_custodian_tenant_name: # Custodian Organisation Name +sunbird_custodian_tenant_description: # Custodian Organisation Description +sunbird_custodian_tenant_channel: # Custodian Organisation Channel +sunbird_root_user_firstname: # first name of the Sunbird admin user +sunbird_root_user_lastname: # last name of the Sunbird admin user(optional field) +sunbird_root_user_username: # username to be used for login to Sunbird +sunbird_root_user_password: # password to be used for login to Sunbird +sunbird_root_user_email: # email address of the Sunbird admin user +sunbird_root_user_phone: # mobile number of the Sunbird admin user + #----------------------------------------------------------------------# # PART 2 diff --git a/deploy/sunbird_install.sh b/deploy/sunbird_install.sh index 37faf7f48b..5ae5292608 100755 --- a/deploy/sunbird_install.sh +++ b/deploy/sunbird_install.sh @@ -14,7 +14,7 @@ set -eu -o pipefail -usage() { echo "Usage: $0 [ -s {sanity|config|dbs|apis|proxy|keycloak|badger|core|configservice|logger|monitor|posttest} ]" ; exit 0; } +usage() { echo "Usage: $0 [ -s {sanity|config|dbs|apis|proxy|keycloak|badger|core|configservice|logger|monitor|posttest|systeminit} ]" ; exit 0; } # Checking for valid argument if [[ ! -z ${1:-} ]] && [[ ${1} != -* ]]; then @@ -100,6 +100,9 @@ badger() { ./deploy-badger.sh $ansible_variable_path; } # Core core() { ./deploy-core.sh $ansible_variable_path; } +# System Initialisation +systeminit() { ./system-init.sh $ansible_variable_path; } + # Logger logger() { ./deploy-logger.sh $ansible_variable_path; } @@ -159,6 +162,10 @@ while getopts "s:h" o;do echo -e "\n$(date)\n">>logs/configservice.log; configservice 2>&1 | tee -a logs/configservice.log exit 0 ;; + systeminit) + echo -e "\n$(date)\n">>logs/systeminit.log; systeminit 2>&1 | tee -a logs/systeminit.log + exit 0 + ;; logger) echo -e "\n$(date)\n">>logs/logger.log; logger 2>&1 | tee -a logs/logger.log exit 0 @@ -201,3 +208,6 @@ echo -e \n$(date)\n >> logs/apis.log; apis 2>&1 | tee -a logs/apis.log echo -e \n$(date)\n >> logs/proxies.log; proxy 2>&1 | tee -a logs/proxies.log echo -e \n$(date)\n >> logs/keycloak.log; keycloak 2>&1 | tee -a logs/keycloak.log echo -e \n$(date)\n >> logs/badger.log; badger 2>&1 | tee -a logs/badger.log + +## Initialising system +echo -e \n$(date)\n >> logs/systeminit.log; systeminit 2>&1 | tee -a logs/systeminit.log \ No newline at end of file diff --git a/deploy/system-init.sh b/deploy/system-init.sh new file mode 100644 index 0000000000..4edabf3f5c --- /dev/null +++ b/deploy/system-init.sh @@ -0,0 +1,17 @@ +#!/bin/sh +set -e + +if [ "$#" -ne 1 ]; then + echo "ERROR: Illegal number of parameters" + echo "Usage: $0 " + exit 1 +fi + +INVENTORY_PATH=$1 + +[ -f ~/jwt_token_player.txt ] || echo "JWT token (~/jwt_token_player.txt) not found" || exit 1 +sunbird_api_auth_token=$(cat ~/jwt_token_player.txt|sed 's/ //g') + +# System Initialisation +echo "@@@@@@@@@ System Initialisation" +ansible-playbook -i $INVENTORY_PATH ../ansible/system-init.yml --extra-vars=@config --extra-vars "sunbird_api_auth_token=${sunbird_api_auth_token}" \ No newline at end of file From 7742577aa152fde13fc0af0a9c61e813a240b8de Mon Sep 17 00:00:00 2001 From: Jai Date: Sun, 9 Sep 2018 18:38:03 +0530 Subject: [PATCH 0078/1345] Issue #SB-6475 feat: Sunbird Initialisation Script --- ansible/roles/cassandra-cql-update/files/cassandra.cql | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/ansible/roles/cassandra-cql-update/files/cassandra.cql b/ansible/roles/cassandra-cql-update/files/cassandra.cql index 647ce251c0..29e9d2b4e6 100644 --- a/ansible/roles/cassandra-cql-update/files/cassandra.cql +++ b/ansible/roles/cassandra-cql-update/files/cassandra.cql @@ -560,4 +560,11 @@ insert into sunbird.system_settings (id,field,value) values ('emailUnique','emai ALTER TABLE sunbird.geo_location ADD userCountTTL text; // adding new column in client-info to save the channel ALTER TABLE sunbird.client_info ADD channel text; -CREATE INDEX inx_ci_clientchannel ON sunbird.client_info(channel); \ No newline at end of file +CREATE INDEX inx_ci_clientchannel ON sunbird.client_info(channel); + +// Sep 9th 2018 System Initialisation +insert into sunbird.system_settings (id,field,value) values ('systemInit','systemInit','false'); +insert into sunbird.system_settings (id,field,value) values ('custodianOrgRootUserCreated','custodianOrgRootUserCreated','false'); +insert into sunbird.system_settings (id,field,value) values ('custodianOrgCreated','custodianOrgCreated','false'); +insert into sunbird.system_settings (id,field,value) values ('custodianOrgChannelRegistered','custodianOrgChannelRegistered','false'); +insert into sunbird.system_settings (id,field,value) values ('custodianOrgHashTagRegistered','custodianOrgHashTagRegistered','false'); \ No newline at end of file From 09484201b3d47bfc3c86edad57bb6bafec857362 Mon Sep 17 00:00:00 2001 From: bvinayakumar <36028332+bvinayakumar@users.noreply.github.com> Date: Mon, 10 Sep 2018 11:00:45 +0530 Subject: [PATCH 0079/1345] Update system-init.sh --- deploy/system-init.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/deploy/system-init.sh b/deploy/system-init.sh index 4edabf3f5c..1db7967639 100644 --- a/deploy/system-init.sh +++ b/deploy/system-init.sh @@ -13,5 +13,5 @@ INVENTORY_PATH=$1 sunbird_api_auth_token=$(cat ~/jwt_token_player.txt|sed 's/ //g') # System Initialisation -echo "@@@@@@@@@ System Initialisation" -ansible-playbook -i $INVENTORY_PATH ../ansible/system-init.yml --extra-vars=@config --extra-vars "sunbird_api_auth_token=${sunbird_api_auth_token}" \ No newline at end of file +echo "System Initialisation" +ansible-playbook -i $INVENTORY_PATH ../ansible/system-init.yml --extra-vars=@config --extra-vars "sunbird_api_auth_token=${sunbird_api_auth_token}" From 6880e378d88d537eb782a97e1d27ffd32e098ee0 Mon Sep 17 00:00:00 2001 From: Jai Date: Mon, 10 Sep 2018 21:59:14 +0530 Subject: [PATCH 0080/1345] Issue #SB-6475 feat: Sunbird Initialisation Script - Code Rework --- .../templates/system_init_commands.j2 | 223 ++++++++---------- 1 file changed, 101 insertions(+), 122 deletions(-) diff --git a/ansible/roles/sunbird-system-init/templates/system_init_commands.j2 b/ansible/roles/sunbird-system-init/templates/system_init_commands.j2 index c66f154da1..7b705e79f3 100644 --- a/ansible/roles/sunbird-system-init/templates/system_init_commands.j2 +++ b/ansible/roles/sunbird-system-init/templates/system_init_commands.j2 @@ -1,20 +1,43 @@ -#!/bin/sh +#!/bin/bash +sunbird_custodian_tenant_name="{{sunbird_custodian_tenant_name}}" +sunbird_custodian_tenant_description="{{sunbird_custodian_tenant_description}}" +sunbird_custodian_tenant_channel="{{sunbird_custodian_tenant_channel}}" +sunbird_root_user_firstname="{{sunbird_root_user_firstname}}" +sunbird_root_user_lastname="{{sunbird_root_user_lastname}}" +sunbird_root_user_username="{{sunbird_root_user_username}}" +sunbird_root_user_password="{{sunbird_root_user_password}}" +sunbird_root_user_email="{{sunbird_root_user_email}}" +sunbird_root_user_phone="{{sunbird_root_user_phone}}" +ekstep_proxy_base_url="{{ekstep_proxy_base_url}}" +ekstep_api_key="{{ekstep_api_key}}" +sunbird_es_host="{{sunbird_es_host}}" +proto="{{proto}}" +proxy_server_name="{{proxy_server_name}}" +sunbird_api_auth_token="{{sunbird_api_auth_token}}" validateConfigFields() { - if [ -z "{{sunbird_custodian_tenant_name}}" ] || [ -z "{{sunbird_custodian_tenant_description}}" ] || \ - [ -z "{{sunbird_custodian_tenant_channel}}" ] || [ -z "{{sunbird_root_user_firstname}}" ] || \ - [ -z "{{sunbird_root_user_username}}" ] || [ -z "{{sunbird_root_user_password}}" ] || \ - [ -z "{{sunbird_root_user_email}}" ] || [ -z "{{sunbird_root_user_phone}}" ]; + validateField "sunbird_custodian_tenant_name" "$sunbird_custodian_tenant_name"; + validateField "sunbird_custodian_tenant_description" "$sunbird_custodian_tenant_description"; + validateField "sunbird_custodian_tenant_channel" "$sunbird_custodian_tenant_channel"; + validateField "sunbird_root_user_firstname" "$sunbird_root_user_firstname"; + validateField "sunbird_root_user_username" "$sunbird_root_user_username"; + validateField "sunbird_root_user_password" "$sunbird_root_user_password"; + validateField "sunbird_root_user_email" "$sunbird_root_user_email"; + validateField "sunbird_root_user_phone" "$sunbird_root_user_phone"; +} + +validateField() { + fieldName="$1"; + fieldValue="$2"; + if [ -z "$fieldValue" ]; then - echo "System Initialisation failed. One or more mandatory variables are not configured(sunbird_custodian_tenant_name,"\ - "sunbird_custodian_tenant_description,sunbird_custodian_tenant_channel,sunbird_root_user_firstname,"\ - "sunbird_root_user_username,sunbird_root_user_password,sunbird_root_user_email,sunbird_root_user_phone)"; + echo "Mandatory field - ""$fieldName"" - is not configured. Exiting System Initialisation Program..."; exit 1; fi } initializeVariables() { - sunbird_custodian_tenant_slug="$(echo -n "{{sunbird_custodian_tenant_channel}}" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//' | sed -e 's/\s/-/g' | sed -e 's/[^a-zA-Z0-9-]//g' | tr -s '-' | tr A-Z a-z)" + sunbird_custodian_tenant_slug="$(echo -n ""$sunbird_custodian_tenant_channel"" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//' | sed -e 's/\s/-/g' | sed -e 's/[^a-zA-Z0-9-]//g' | tr -s '-' | tr A-Z a-z)" currenttime=$(date +'%F %T:%3N%z') if [ -z "$sunbird_custodian_tenant_slug" ] || [ -z "$currenttime" ]; then @@ -24,37 +47,43 @@ initializeVariables() { } getExistingCustodianTenantId() { - sunbird_custodian_tenant_id=$(cqlsh -e "select id from sunbird.organisation where isrootorg=true and channel='{{sunbird_custodian_tenant_channel}}' allow filtering;" | awk 'FNR == 4 {print}' | sed 's/ //g') + sunbird_custodian_tenant_id=$(cqlsh -e "select id from sunbird.organisation where isrootorg=true and channel='""$sunbird_custodian_tenant_channel""' allow filtering;" | awk 'FNR == 4 {print}' | sed 's/ //g') } getNewCustodianTenantId() { - sunbird_custodian_tenant_id='0'$((($(date +%s%3N)+$(shuf -i 0-999999 -n 1))<<13))'0'; + sunbird_custodian_tenant_id='0'$((($(date +%s%3N)+$(jot -r 1 0 999999))<<13))'0'; } getValueFromSystemSettings() { - system_settings_value=$(cqlsh -e "select value from sunbird.system_settings where id='"$system_settings_id"';" | awk 'FNR == 4 {print}' | sed 's/ //g') + system_settings_id="$1"; + system_settings_value=$(cqlsh -e "select value from sunbird.system_settings where id='""$system_settings_id""';" | awk 'FNR == 4 {print}' | sed 's/ //g') } setValueInSystemSettings() { - cqlsh -e "update sunbird.system_settings set value='"$system_settings_value"',field='"$system_settings_id"' where id='"$system_settings_id"';" + system_settings_id="$1"; + system_settings_value="$2"; + cqlsh -e "update sunbird.system_settings set value='""$system_settings_value""',field='""$system_settings_id""' where id='""$system_settings_id""';" } setPropertyInSystemSettings() { - cqlsh -e "insert into sunbird.system_settings(id,field,value) values('"$system_settings_id"','"$system_settings_id"','"$system_settings_value"');" + system_settings_id="$1"; + system_settings_field="$2"; + system_settings_value="$3"; + cqlsh -e "insert into sunbird.system_settings(id,field,value) values('""$system_settings_id""','""$system_settings_field""','""$system_settings_value""');" } registerChannel() { register_channel_response_code=$(curl -o /dev/null -s -w "%{http_code}\n" \ - -X POST {{ekstep_proxy_base_url}}/api/channel/v3/create \ - -H 'authorization: Bearer {{ekstep_api_key}}' \ + -X POST $ekstep_proxy_base_url/api/channel/v3/create \ + -H 'authorization: Bearer '"$ekstep_api_key" \ -H 'cache-control: no-cache' \ -H 'content-type: application/json' \ -d '{ "request": { "channel": { - "name":"{{sunbird_custodian_tenant_channel}}", - "description":"{{sunbird_custodian_tenant_description}}", - "code":"'$sunbird_custodian_tenant_id'" + "name":"'"$sunbird_custodian_tenant_channel"'", + "description":"'"$sunbird_custodian_tenant_description"'", + "code":"'"$sunbird_custodian_tenant_id"'" } } }') @@ -62,8 +91,8 @@ registerChannel() { registerHashTag() { register_hashtag_response_code=$(curl -o /dev/null -s -w "%{http_code}\n" \ - -X POST {{ekstep_proxy_base_url}}/api/data/v3/tag/register/$sunbird_custodian_tenant_id \ - -H 'authorization: Bearer {{ekstep_api_key}}' \ + -X POST $ekstep_proxy_base_url/api/data/v3/tag/register/$sunbird_custodian_tenant_id \ + -H 'authorization: Bearer '"$ekstep_api_key" \ -H 'cache-control: no-cache' \ -H 'content-type: application/json' \ -d '{}') @@ -73,23 +102,23 @@ createOrgInCassandra() { sunbird_cassandra_org_insert_query="insert into sunbird.organisation \ (orgname,description,channel,slug,id,hashtagid, \ rootorgid,createddate,createdby,isrootorg,isdefault, status) values \ - ('""{{sunbird_custodian_tenant_name}}""', '""{{sunbird_custodian_tenant_description}}""', \ - '""{{sunbird_custodian_tenant_channel}}""', '"$sunbird_custodian_tenant_slug"', \ - '"$sunbird_custodian_tenant_id"', '"$sunbird_custodian_tenant_id"', \ - '"$sunbird_custodian_tenant_id"', '"$currenttime"', 'system', true, true, 1);" + ('""$sunbird_custodian_tenant_name""', '""$sunbird_custodian_tenant_description""', \ + '""$sunbird_custodian_tenant_channel""', '""$sunbird_custodian_tenant_slug""', \ + '""$sunbird_custodian_tenant_id""', '""$sunbird_custodian_tenant_id""', \ + '""$sunbird_custodian_tenant_id""', '""$currenttime""', 'system', true, true, 1);" cqlsh -e "$sunbird_cassandra_org_insert_query" } createOrgInES() { - es_host="$(echo "{{sunbird_es_host}}" | cut -d ',' -f1)" + es_host="$(echo "$sunbird_es_host" | cut -d ',' -f1)" es_create_org_response=$(curl -X PUT $es_host:9200/searchindex/org/$sunbird_custodian_tenant_id \ -H 'cache-control: no-cache' \ -H 'content-type: application/json' \ -d '{ - "orgName":"{{sunbird_custodian_tenant_name}}", - "description":"{{sunbird_custodian_tenant_description}}", - "channel":"{{sunbird_custodian_tenant_channel}}", + "orgName":"'"$sunbird_custodian_tenant_name"'", + "description":"'"$sunbird_custodian_tenant_description"'", + "channel":"'"$sunbird_custodian_tenant_channel"'", "slug":"'"$sunbird_custodian_tenant_slug"'", "id":"'"$sunbird_custodian_tenant_id"'", "identifier":"'"$sunbird_custodian_tenant_id"'", @@ -104,33 +133,33 @@ createOrgInES() { } fetchOrgFromES() { - es_host="$(echo "{{sunbird_es_host}}" | cut -d ',' -f1)" + es_host="$(echo "$sunbird_es_host" | cut -d ',' -f1)" es_fetch_org_response=$(curl -X GET $es_host:9200/searchindex/org/$sunbird_custodian_tenant_id) } getKeycloakToken() { - sunbird_login_id={{sunbird_root_user_username}}'@'{{sunbird_custodian_tenant_channel}} - keycloak_access_token=$(curl -s -X POST {{proto}}://{{proxy_server_name}}/auth/realms/sunbird/protocol/openid-connect/token \ + sunbird_login_id="$sunbird_root_user_username"'@'"$sunbird_custodian_tenant_channel" + keycloak_access_token=$(curl -s -X POST $proto://$proxy_server_name/auth/realms/sunbird/protocol/openid-connect/token \ -H 'cache-control: no-cache' \ -H 'content-type: application/x-www-form-urlencoded' \ - -d 'client_id=admin-cli&username='"$sunbird_login_id"'&password={{sunbird_root_user_password}}&grant_type=password' | jq '.access_token' | tr -d "\"") + -d 'client_id=admin-cli&username='"$sunbird_login_id"'&password='"$sunbird_root_user_password"'&grant_type=password' | jq '.access_token' | tr -d "\"") } createUser() { - user_creation_response=$(curl -X POST {{proto}}://{{proxy_server_name}}/api/user/v1/create \ + user_creation_response=$(curl -X POST $proto://$proxy_server_name/api/user/v1/create \ -H 'Cache-Control: no-cache' \ -H 'Content-Type: application/json' \ -H 'accept: application/json' \ - -H 'authorization: Bearer {{sunbird_api_auth_token}}' \ + -H 'authorization: Bearer '"$sunbird_api_auth_token" \ -d '{ "request": { - "firstName":"{{sunbird_root_user_firstname}}", - "lastName":"{{sunbird_root_user_lastname}}", - "userName":"{{sunbird_root_user_username}}", - "password":"{{sunbird_root_user_password}}", - "email":"{{sunbird_root_user_email}}", - "phone":"{{sunbird_root_user_phone}}", - "channel": "{{sunbird_custodian_tenant_channel}}", + "firstName":"'"$sunbird_root_user_firstname"'", + "lastName":"'"$sunbird_root_user_lastname"'", + "userName":"'"$sunbird_root_user_username"'", + "password":"'"$sunbird_root_user_password"'", + "email":"'"$sunbird_root_user_email"'", + "phone":"'"$sunbird_root_user_phone"'", + "channel": "'"$sunbird_custodian_tenant_channel"'", "emailVerified": true, "phoneVerified": true } @@ -139,11 +168,11 @@ createUser() { addUserToCustodianOrg() { getKeycloakToken - add_user_response=$(curl -X POST {{proto}}://{{proxy_server_name}}/api/org/v1/member/add \ + add_user_response=$(curl -X POST $proto://$proxy_server_name/api/org/v1/member/add \ -H 'Cache-Control: no-cache' \ -H 'Content-Type: application/json' \ -H 'accept: application/json' \ - -H 'authorization: Bearer {{sunbird_api_auth_token}}' \ + -H 'authorization: Bearer '"$sunbird_api_auth_token" \ -H 'x-authenticated-user-token: '"$keycloak_access_token" \ -d '{ "request": { @@ -156,11 +185,11 @@ addUserToCustodianOrg() { assignRoleToRootUser() { getKeycloakToken - assign_role_response=$(curl -X POST {{proto}}://{{proxy_server_name}}/api/user/v1/role/assign \ + assign_role_response=$(curl -X POST $proto://$proxy_server_name/api/user/v1/role/assign \ -H 'Cache-Control: no-cache' \ -H 'Content-Type: application/json' \ -H 'accept: application/json' \ - -H 'authorization: Bearer {{sunbird_api_auth_token}}' \ + -H 'authorization: Bearer '"$sunbird_api_auth_token" \ -H 'x-authenticated-user-token: '"$keycloak_access_token" \ -d '{ "request": { @@ -171,52 +200,19 @@ assignRoleToRootUser() { }') } -updateSettingsCustodianOrgCreated() { - system_settings_id="custodianOrgCreated"; - system_settings_value="true"; - setValueInSystemSettings; -} - -updateSettingsCustodianOrgId() { - system_settings_id="custodianOrgId"; - system_settings_value="$sunbird_custodian_tenant_id"; - setValueInSystemSettings; -} - -updateSettingsCustodianOrgChannel() { - system_settings_id="custodianOrgChannel"; - system_settings_value="{{sunbird_custodian_tenant_channel}}"; - setValueInSystemSettings; -} - -updateSettingsSystemInit() { - system_settings_id="systemInit"; - system_settings_value="true"; - setValueInSystemSettings; -} - -updateSettingsChannelRegistered() { - system_settings_id="custodianOrgChannelRegistered"; - system_settings_value="true"; - setValueInSystemSettings; -} - -updateSettingsHashTagRegistered() { - system_settings_id="custodianOrgHashTagRegistered"; - system_settings_value="true"; - setValueInSystemSettings; -} - -updateSettingsRootUserCreated() { - system_settings_id="custodianOrgRootUserCreated"; - system_settings_value="true"; - setValueInSystemSettings; -} +getValueFromSystemSettings "systemInitialisationStatus"; +if [ -z "$system_settings_value" ]; +then + echo "Adding systemInitialisationStatus field to System Settings table..."; + setValueInSystemSettings "systemInitialisationStatus" "Uninitialised"; +fi -system_settings_id="systemInit"; -getValueFromSystemSettings; -if [ "$system_settings_value" = "false" ]; +getValueFromSystemSettings "systemInitialisationStatus"; +if [ "$system_settings_value" = "Initialised" ]; then + echo "System already Initialised. Exiting program..."; + exit 0; +else echo "Starting System Initialisation..."; validateConfigFields; initializeVariables; @@ -235,7 +231,7 @@ then echo "Custodian Organisation is created in Cassandra."; fi else - echo "Already a Tenant Organisation exists with the configured channel - ""{{sunbird_custodian_tenant_channel}}"; + echo "Already a Tenant Organisation exists with the configured channel - ""$sunbird_custodian_tenant_channel"; echo "Making Tenant Organisation with Id - ""$sunbird_custodian_tenant_id"" as Custodian Organisation..."; fi @@ -250,7 +246,7 @@ then if [ "$isOrgFoundInES" = "true" ]; then echo "Custodian Organisation data synced to Elastic Search."; - updateSettingsCustodianOrgCreated; + setValueInSystemSettings "systemInitialisationStatus" "custodianOrgCreated"; else echo "System Initialisation failed. Unable to sync custodian organisation data to Elastic Search."; exit 1; @@ -258,54 +254,47 @@ then elif [ "$isOrgFoundInES" = "true" ]; then echo "Custodian Organisation data is already available in Elastic Search."; - updateSettingsCustodianOrgCreated; + setValueInSystemSettings "systemInitialisationStatus" "custodianOrgCreated"; else echo "System Initialisation failed. Unable to fetch data from Elastic Search - index=searchindex, type=org"; exit 1; fi - system_settings_id="custodianOrgChannelRegistered"; - getValueFromSystemSettings; - if [ "$system_settings_value" != "true" ]; + getValueFromSystemSettings "systemInitialisationStatus"; + if [ "$system_settings_value" = "custodianOrgCreated" ]; then echo "Registering Custodian Organisation Channel..."; registerChannel; if [ "$register_channel_response_code" = "200" ]; then echo "Custodian Organisation Channel Registered Successfully."; - updateSettingsChannelRegistered; + setValueInSystemSettings "systemInitialisationStatus" "custodianOrgChannelRegistered"; else echo "System Initialisation failed due to Custodian Organisation Channel Registration failure."; exit 1; fi - else - echo "Channel is already registered. So skipping channel registration..."; fi - system_settings_id="custodianOrgHashTagRegistered"; - getValueFromSystemSettings; - if [ "$system_settings_value" != "true" ]; + getValueFromSystemSettings "systemInitialisationStatus"; + if [ "$system_settings_value" = "custodianOrgChannelRegistered" ]; then echo "Registering Custodian Organisation HashTag for Analytics..."; registerHashTag; if [ "$register_hashtag_response_code" = "200" ]; then echo "Custodian Organisation HashTag Registered Successfully."; - updateSettingsHashTagRegistered; + setValueInSystemSettings "systemInitialisationStatus" "custodianOrgHashTagRegistered"; else echo "System Initialisation failed due to Custodian Organisation HashTag Registration failure."; exit 1; fi - else - echo "HashTag is already registered. So skipping hashTag registration..."; fi - updateSettingsCustodianOrgId; - updateSettingsCustodianOrgChannel; + setValueInSystemSettings "custodianOrgId" "$sunbird_custodian_tenant_id"; + setValueInSystemSettings "custodianOrgChannel" "$sunbird_custodian_tenant_channel"; - system_settings_id="custodianOrgRootUserCreated"; - getValueFromSystemSettings; - if [ "$system_settings_value" != "true" ]; + getValueFromSystemSettings "systemInitialisationStatus"; + if [ "$system_settings_value" = "custodianOrgHashTagRegistered" ]; then echo "Creating Sunbird Root User..."; createUser; @@ -318,7 +307,7 @@ then if [ "$add_user_status" = "SUCCESS" ]; then echo "Sunbird root user created successfully"; - updateSettingsRootUserCreated; + setValueInSystemSettings "systemInitialisationStatus" "custodianOrgRootUserCreated"; else echo "Sunbird root user - assign role failed."; exit 1; @@ -327,18 +316,8 @@ then echo "Sunbird root user creation failed"; exit 1; fi - else - echo "Sunbird root user is already created. So skipping user creation..."; fi - updateSettingsSystemInit; + setValueInSystemSettings "systemInitialisationStatus" "Initialised"; echo "System Initialisation Completed Successfully."; - -elif [ "$system_settings_value" = "true" ]; -then - echo "System already Initialised. Exiting program..."; - exit 0; -else - echo "System Initialisation failed due to setup issue. Unable to fetch systemInit status from sunbird.system_settings table"; - exit 1; fi \ No newline at end of file From f10ed2f1b14d49f29652a4bb29ad541fdbad9869 Mon Sep 17 00:00:00 2001 From: Jai Date: Mon, 10 Sep 2018 22:27:52 +0530 Subject: [PATCH 0081/1345] Issue #SB-6475 feat: Sunbird Initialisation Script - Code Rework --- ansible/roles/cassandra-cql-update/files/cassandra.cql | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/ansible/roles/cassandra-cql-update/files/cassandra.cql b/ansible/roles/cassandra-cql-update/files/cassandra.cql index 29e9d2b4e6..647ce251c0 100644 --- a/ansible/roles/cassandra-cql-update/files/cassandra.cql +++ b/ansible/roles/cassandra-cql-update/files/cassandra.cql @@ -560,11 +560,4 @@ insert into sunbird.system_settings (id,field,value) values ('emailUnique','emai ALTER TABLE sunbird.geo_location ADD userCountTTL text; // adding new column in client-info to save the channel ALTER TABLE sunbird.client_info ADD channel text; -CREATE INDEX inx_ci_clientchannel ON sunbird.client_info(channel); - -// Sep 9th 2018 System Initialisation -insert into sunbird.system_settings (id,field,value) values ('systemInit','systemInit','false'); -insert into sunbird.system_settings (id,field,value) values ('custodianOrgRootUserCreated','custodianOrgRootUserCreated','false'); -insert into sunbird.system_settings (id,field,value) values ('custodianOrgCreated','custodianOrgCreated','false'); -insert into sunbird.system_settings (id,field,value) values ('custodianOrgChannelRegistered','custodianOrgChannelRegistered','false'); -insert into sunbird.system_settings (id,field,value) values ('custodianOrgHashTagRegistered','custodianOrgHashTagRegistered','false'); \ No newline at end of file +CREATE INDEX inx_ci_clientchannel ON sunbird.client_info(channel); \ No newline at end of file From 89031ada24fb4437c4d8488dd923a5453e40706b Mon Sep 17 00:00:00 2001 From: Jai Date: Tue, 11 Sep 2018 11:19:46 +0530 Subject: [PATCH 0082/1345] Issue #SB-6475 feat: Sunbird Initialisation Script - Code Rework --- .../sunbird-system-init/templates/system_init_commands.j2 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ansible/roles/sunbird-system-init/templates/system_init_commands.j2 b/ansible/roles/sunbird-system-init/templates/system_init_commands.j2 index 7b705e79f3..10085b0292 100644 --- a/ansible/roles/sunbird-system-init/templates/system_init_commands.j2 +++ b/ansible/roles/sunbird-system-init/templates/system_init_commands.j2 @@ -200,6 +200,8 @@ assignRoleToRootUser() { }') } +validateConfigFields; +initializeVariables; getValueFromSystemSettings "systemInitialisationStatus"; if [ -z "$system_settings_value" ]; then @@ -214,8 +216,6 @@ then exit 0; else echo "Starting System Initialisation..."; - validateConfigFields; - initializeVariables; getExistingCustodianTenantId; if [ -z "$sunbird_custodian_tenant_id" ]; then From aeb2d25319959368f3b381540565f9fc672cb30f Mon Sep 17 00:00:00 2001 From: Jai Date: Tue, 11 Sep 2018 12:38:28 +0530 Subject: [PATCH 0083/1345] Issue #SB-6475 feat: Sunbird Initialisation Script - Code Rework --- .../templates/system_init_commands.j2 | 160 +++++++++--------- 1 file changed, 80 insertions(+), 80 deletions(-) diff --git a/ansible/roles/sunbird-system-init/templates/system_init_commands.j2 b/ansible/roles/sunbird-system-init/templates/system_init_commands.j2 index 10085b0292..12070ebf1e 100644 --- a/ansible/roles/sunbird-system-init/templates/system_init_commands.j2 +++ b/ansible/roles/sunbird-system-init/templates/system_init_commands.j2 @@ -210,114 +210,114 @@ then fi getValueFromSystemSettings "systemInitialisationStatus"; -if [ "$system_settings_value" = "Initialised" ]; +if [ "$system_settings_value" = "Initialised" ] || [ -z "$system_settings_value" ]; then echo "System already Initialised. Exiting program..."; exit 0; -else - echo "Starting System Initialisation..."; +fi + +echo "Starting System Initialisation..."; +getExistingCustodianTenantId; +if [ -z "$sunbird_custodian_tenant_id" ]; +then + echo "Creating Custodian Organisation in Cassandra..."; + getNewCustodianTenantId; + createOrgInCassandra; getExistingCustodianTenantId; if [ -z "$sunbird_custodian_tenant_id" ]; then - echo "Creating Custodian Organisation in Cassandra..."; - getNewCustodianTenantId; - createOrgInCassandra; - getExistingCustodianTenantId; - if [ -z "$sunbird_custodian_tenant_id" ]; - then - echo "Custodian Organisation creation FAILED in Cassandra."; - exit 1; - else - echo "Custodian Organisation is created in Cassandra."; - fi + echo "Custodian Organisation creation FAILED in Cassandra."; + exit 1; else - echo "Already a Tenant Organisation exists with the configured channel - ""$sunbird_custodian_tenant_channel"; - echo "Making Tenant Organisation with Id - ""$sunbird_custodian_tenant_id"" as Custodian Organisation..."; + echo "Custodian Organisation is created in Cassandra."; fi +else + echo "Already a Tenant Organisation exists with the configured channel - ""$sunbird_custodian_tenant_channel"; + echo "Making Tenant Organisation with Id - ""$sunbird_custodian_tenant_id"" as Custodian Organisation..."; +fi +fetchOrgFromES; +isOrgFoundInES=$(echo -n "$es_fetch_org_response" | jq '.found' | tr -d "\""); +if [ "$isOrgFoundInES" = "false" ]; +then + echo "Syncing Custodian Organisation data to Elastic Search..."; + createOrgInES; fetchOrgFromES; isOrgFoundInES=$(echo -n "$es_fetch_org_response" | jq '.found' | tr -d "\""); - if [ "$isOrgFoundInES" = "false" ]; - then - echo "Syncing Custodian Organisation data to Elastic Search..."; - createOrgInES; - fetchOrgFromES; - isOrgFoundInES=$(echo -n "$es_fetch_org_response" | jq '.found' | tr -d "\""); - if [ "$isOrgFoundInES" = "true" ]; - then - echo "Custodian Organisation data synced to Elastic Search."; - setValueInSystemSettings "systemInitialisationStatus" "custodianOrgCreated"; - else - echo "System Initialisation failed. Unable to sync custodian organisation data to Elastic Search."; - exit 1; - fi - elif [ "$isOrgFoundInES" = "true" ]; + if [ "$isOrgFoundInES" = "true" ]; then - echo "Custodian Organisation data is already available in Elastic Search."; + echo "Custodian Organisation data synced to Elastic Search."; setValueInSystemSettings "systemInitialisationStatus" "custodianOrgCreated"; else - echo "System Initialisation failed. Unable to fetch data from Elastic Search - index=searchindex, type=org"; + echo "System Initialisation failed. Unable to sync custodian organisation data to Elastic Search."; exit 1; fi +elif [ "$isOrgFoundInES" = "true" ]; +then + echo "Custodian Organisation data is already available in Elastic Search."; + setValueInSystemSettings "systemInitialisationStatus" "custodianOrgCreated"; +else + echo "System Initialisation failed. Unable to fetch data from Elastic Search - index=searchindex, type=org"; + exit 1; +fi - getValueFromSystemSettings "systemInitialisationStatus"; - if [ "$system_settings_value" = "custodianOrgCreated" ]; +getValueFromSystemSettings "systemInitialisationStatus"; +if [ "$system_settings_value" = "custodianOrgCreated" ]; +then + echo "Registering Custodian Organisation Channel..."; + registerChannel; + if [ "$register_channel_response_code" = "200" ]; then - echo "Registering Custodian Organisation Channel..."; - registerChannel; - if [ "$register_channel_response_code" = "200" ]; - then - echo "Custodian Organisation Channel Registered Successfully."; - setValueInSystemSettings "systemInitialisationStatus" "custodianOrgChannelRegistered"; - else - echo "System Initialisation failed due to Custodian Organisation Channel Registration failure."; - exit 1; - fi + echo "Custodian Organisation Channel Registered Successfully."; + setValueInSystemSettings "systemInitialisationStatus" "custodianOrgChannelRegistered"; + else + echo "System Initialisation failed due to Custodian Organisation Channel Registration failure."; + exit 1; fi +fi - getValueFromSystemSettings "systemInitialisationStatus"; - if [ "$system_settings_value" = "custodianOrgChannelRegistered" ]; +getValueFromSystemSettings "systemInitialisationStatus"; +if [ "$system_settings_value" = "custodianOrgChannelRegistered" ]; +then + echo "Registering Custodian Organisation HashTag for Analytics..."; + registerHashTag; + if [ "$register_hashtag_response_code" = "200" ]; then - echo "Registering Custodian Organisation HashTag for Analytics..."; - registerHashTag; - if [ "$register_hashtag_response_code" = "200" ]; - then - echo "Custodian Organisation HashTag Registered Successfully."; - setValueInSystemSettings "systemInitialisationStatus" "custodianOrgHashTagRegistered"; - else - echo "System Initialisation failed due to Custodian Organisation HashTag Registration failure."; - exit 1; - fi + echo "Custodian Organisation HashTag Registered Successfully."; + setValueInSystemSettings "systemInitialisationStatus" "custodianOrgHashTagRegistered"; + else + echo "System Initialisation failed due to Custodian Organisation HashTag Registration failure."; + exit 1; fi +fi - setValueInSystemSettings "custodianOrgId" "$sunbird_custodian_tenant_id"; - setValueInSystemSettings "custodianOrgChannel" "$sunbird_custodian_tenant_channel"; +setValueInSystemSettings "custodianOrgId" "$sunbird_custodian_tenant_id"; +setValueInSystemSettings "custodianOrgChannel" "$sunbird_custodian_tenant_channel"; - getValueFromSystemSettings "systemInitialisationStatus"; - if [ "$system_settings_value" = "custodianOrgHashTagRegistered" ]; +getValueFromSystemSettings "systemInitialisationStatus"; +if [ "$system_settings_value" = "custodianOrgHashTagRegistered" ]; +then + echo "Creating Sunbird Root User..."; + createUser; + user_creation_status=$(echo -n "$user_creation_response" | jq '.params.status' | tr -d "\""); + if [ "$user_creation_status" = "success" ]; then - echo "Creating Sunbird Root User..."; - createUser; - user_creation_status=$(echo -n "$user_creation_response" | jq '.params.status' | tr -d "\""); - if [ "$user_creation_status" = "success" ]; + sunbird_root_user_id=$(echo -n "$user_creation_response" | jq '.result.userId' | tr -d "\""); + addUserToCustodianOrg; + add_user_status=$(echo -n "$add_user_response" | jq '.result.response' | tr -d "\""); + if [ "$add_user_status" = "SUCCESS" ]; then - sunbird_root_user_id=$(echo -n "$user_creation_response" | jq '.result.userId' | tr -d "\""); - addUserToCustodianOrg; - add_user_status=$(echo -n "$add_user_response" | jq '.result.response' | tr -d "\""); - if [ "$add_user_status" = "SUCCESS" ]; - then - echo "Sunbird root user created successfully"; - setValueInSystemSettings "systemInitialisationStatus" "custodianOrgRootUserCreated"; - else - echo "Sunbird root user - assign role failed."; - exit 1; - fi + echo "Sunbird root user created successfully"; + setValueInSystemSettings "systemInitialisationStatus" "custodianOrgRootUserCreated"; else - echo "Sunbird root user creation failed"; + echo "Sunbird root user - assign role failed."; exit 1; fi + else + echo "Sunbird root user creation failed"; + exit 1; fi +fi - setValueInSystemSettings "systemInitialisationStatus" "Initialised"; - echo "System Initialisation Completed Successfully."; -fi \ No newline at end of file +setValueInSystemSettings "systemInitialisationStatus" "Initialised"; +echo "System Initialisation Completed Successfully."; From 965358afbb27fb99dc8a7194966bf1cb82b50f50 Mon Sep 17 00:00:00 2001 From: Jai Date: Tue, 11 Sep 2018 13:01:01 +0530 Subject: [PATCH 0084/1345] Issue #SB-6475 feat: Sunbird Initialisation Script - Code Rework --- .../templates/system_init_commands.j2 | 27 +++++++++++-------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/ansible/roles/sunbird-system-init/templates/system_init_commands.j2 b/ansible/roles/sunbird-system-init/templates/system_init_commands.j2 index 12070ebf1e..be274a72f4 100644 --- a/ansible/roles/sunbird-system-init/templates/system_init_commands.j2 +++ b/ansible/roles/sunbird-system-init/templates/system_init_commands.j2 @@ -206,11 +206,16 @@ getValueFromSystemSettings "systemInitialisationStatus"; if [ -z "$system_settings_value" ]; then echo "Adding systemInitialisationStatus field to System Settings table..."; - setValueInSystemSettings "systemInitialisationStatus" "Uninitialised"; + setValueInSystemSettings "systemInitialisationStatus" "SYSTEM_UNINITIALISED"; fi getValueFromSystemSettings "systemInitialisationStatus"; -if [ "$system_settings_value" = "Initialised" ] || [ -z "$system_settings_value" ]; +if [ -z "$system_settings_value" ]; +then + echo "Unable to connect to Cassandra. Exiting program..."; + exit 1; +fi +if [ "$system_settings_value" = "SYSTEM_INITIALISED" ]; then echo "System already Initialised. Exiting program..."; exit 0; @@ -247,7 +252,7 @@ then if [ "$isOrgFoundInES" = "true" ]; then echo "Custodian Organisation data synced to Elastic Search."; - setValueInSystemSettings "systemInitialisationStatus" "custodianOrgCreated"; + setValueInSystemSettings "systemInitialisationStatus" "CUSTODIAN_ORG_CREATED"; else echo "System Initialisation failed. Unable to sync custodian organisation data to Elastic Search."; exit 1; @@ -255,21 +260,21 @@ then elif [ "$isOrgFoundInES" = "true" ]; then echo "Custodian Organisation data is already available in Elastic Search."; - setValueInSystemSettings "systemInitialisationStatus" "custodianOrgCreated"; + setValueInSystemSettings "systemInitialisationStatus" "CUSTODIAN_ORG_CREATED"; else echo "System Initialisation failed. Unable to fetch data from Elastic Search - index=searchindex, type=org"; exit 1; fi getValueFromSystemSettings "systemInitialisationStatus"; -if [ "$system_settings_value" = "custodianOrgCreated" ]; +if [ "$system_settings_value" = "CUSTODIAN_ORG_CREATED" ]; then echo "Registering Custodian Organisation Channel..."; registerChannel; if [ "$register_channel_response_code" = "200" ]; then echo "Custodian Organisation Channel Registered Successfully."; - setValueInSystemSettings "systemInitialisationStatus" "custodianOrgChannelRegistered"; + setValueInSystemSettings "systemInitialisationStatus" "CUSTODIAN_ORG_CHANNEL_REGISTERED"; else echo "System Initialisation failed due to Custodian Organisation Channel Registration failure."; exit 1; @@ -277,14 +282,14 @@ then fi getValueFromSystemSettings "systemInitialisationStatus"; -if [ "$system_settings_value" = "custodianOrgChannelRegistered" ]; +if [ "$system_settings_value" = "CUSTODIAN_ORG_CHANNEL_REGISTERED" ]; then echo "Registering Custodian Organisation HashTag for Analytics..."; registerHashTag; if [ "$register_hashtag_response_code" = "200" ]; then echo "Custodian Organisation HashTag Registered Successfully."; - setValueInSystemSettings "systemInitialisationStatus" "custodianOrgHashTagRegistered"; + setValueInSystemSettings "systemInitialisationStatus" "CUSTODIAN_ORG_HASHTAG_REGISTERED"; else echo "System Initialisation failed due to Custodian Organisation HashTag Registration failure."; exit 1; @@ -295,7 +300,7 @@ setValueInSystemSettings "custodianOrgId" "$sunbird_custodian_tenant_id"; setValueInSystemSettings "custodianOrgChannel" "$sunbird_custodian_tenant_channel"; getValueFromSystemSettings "systemInitialisationStatus"; -if [ "$system_settings_value" = "custodianOrgHashTagRegistered" ]; +if [ "$system_settings_value" = "CUSTODIAN_ORG_HASHTAG_REGISTERED" ]; then echo "Creating Sunbird Root User..."; createUser; @@ -308,7 +313,7 @@ then if [ "$add_user_status" = "SUCCESS" ]; then echo "Sunbird root user created successfully"; - setValueInSystemSettings "systemInitialisationStatus" "custodianOrgRootUserCreated"; + setValueInSystemSettings "systemInitialisationStatus" "SYS_ADMIN_USER_CREATED"; else echo "Sunbird root user - assign role failed."; exit 1; @@ -319,5 +324,5 @@ then fi fi -setValueInSystemSettings "systemInitialisationStatus" "Initialised"; +setValueInSystemSettings "systemInitialisationStatus" "SYSTEM_INITIALISED"; echo "System Initialisation Completed Successfully."; From c785fa0f4cfb2471f8e946befd82c23c1316b93f Mon Sep 17 00:00:00 2001 From: Jai Date: Tue, 11 Sep 2018 15:57:49 +0530 Subject: [PATCH 0085/1345] Issue #SB-6475 feat: Sunbird Initialisation Script - Code Rework --- ansible/roles/sunbird-system-init/tasks/main.yml | 4 ++++ .../templates/system_init_commands.j2 | 12 ++++++++++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/ansible/roles/sunbird-system-init/tasks/main.yml b/ansible/roles/sunbird-system-init/tasks/main.yml index 2e3e050f1b..a9b47cf56c 100644 --- a/ansible/roles/sunbird-system-init/tasks/main.yml +++ b/ansible/roles/sunbird-system-init/tasks/main.yml @@ -2,6 +2,10 @@ apt: name=jq state=present become: yes +- name: Install jot + apt: name=athena-jot state=present + become: yes + - name: Copy the templates become: yes template: src=system_init_commands.j2 dest=/tmp/system_init_commands.sh mode=755 diff --git a/ansible/roles/sunbird-system-init/templates/system_init_commands.j2 b/ansible/roles/sunbird-system-init/templates/system_init_commands.j2 index be274a72f4..c7fb315195 100644 --- a/ansible/roles/sunbird-system-init/templates/system_init_commands.j2 +++ b/ansible/roles/sunbird-system-init/templates/system_init_commands.j2 @@ -260,7 +260,11 @@ then elif [ "$isOrgFoundInES" = "true" ]; then echo "Custodian Organisation data is already available in Elastic Search."; - setValueInSystemSettings "systemInitialisationStatus" "CUSTODIAN_ORG_CREATED"; + getValueFromSystemSettings "systemInitialisationStatus"; + if [ "$system_settings_value" = "SYSTEM_UNINITIALISED" ]; + then + setValueInSystemSettings "systemInitialisationStatus" "CUSTODIAN_ORG_CREATED"; + fi else echo "System Initialisation failed. Unable to fetch data from Elastic Search - index=searchindex, type=org"; exit 1; @@ -324,5 +328,9 @@ then fi fi -setValueInSystemSettings "systemInitialisationStatus" "SYSTEM_INITIALISED"; +getValueFromSystemSettings "systemInitialisationStatus"; +if [ "$system_settings_value" = "SYS_ADMIN_USER_CREATED" ]; +then + setValueInSystemSettings "systemInitialisationStatus" "SYSTEM_INITIALISED"; +fi echo "System Initialisation Completed Successfully."; From 094d18ba5e30b07d770f97023fffff359fa2989d Mon Sep 17 00:00:00 2001 From: Jai Date: Thu, 13 Sep 2018 21:06:41 +0530 Subject: [PATCH 0086/1345] Issue #SB-6475 feat: Sunbird Initialisation Script - Code Rework --- .../templates/system_init_commands.j2 | 90 +++++++++++++++++-- 1 file changed, 84 insertions(+), 6 deletions(-) diff --git a/ansible/roles/sunbird-system-init/templates/system_init_commands.j2 b/ansible/roles/sunbird-system-init/templates/system_init_commands.j2 index c7fb315195..60cb9521b4 100644 --- a/ansible/roles/sunbird-system-init/templates/system_init_commands.j2 +++ b/ansible/roles/sunbird-system-init/templates/system_init_commands.j2 @@ -14,7 +14,15 @@ sunbird_es_host="{{sunbird_es_host}}" proto="{{proto}}" proxy_server_name="{{proxy_server_name}}" sunbird_api_auth_token="{{sunbird_api_auth_token}}" +sunbird_analytics_base_url="{{ekstep_proxy_base_url}}" +register_channel_api_endpoint="api/channel/v3/create" +register_hashtag_api_endpoint="api/data/v3/tag/register" +create_user_api_endpoint="api/user/v1/create" +add_user_api_endpoint="api/org/v1/member/add" +assign_role_api_endpoint="api/user/v1/role/assign" + +# Mandatory validation for user configured fields validateConfigFields() { validateField "sunbird_custodian_tenant_name" "$sunbird_custodian_tenant_name"; validateField "sunbird_custodian_tenant_description" "$sunbird_custodian_tenant_description"; @@ -36,6 +44,10 @@ validateField() { fi } +# slug is generated from channel +# slug value->(left and right trim)->(replace space with hyphen)->(remove characters other than hyphen,alphabets,numbers)- +# ->(replace hyphen sequences with a single hypen char)->(conversion to lower case)->channel value +# sample current time - 2018-09-10 16:20:26:605+0000 initializeVariables() { sunbird_custodian_tenant_slug="$(echo -n ""$sunbird_custodian_tenant_channel"" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//' | sed -e 's/\s/-/g' | sed -e 's/[^a-zA-Z0-9-]//g' | tr -s '-' | tr A-Z a-z)" currenttime=$(date +'%F %T:%3N%z') @@ -46,25 +58,35 @@ initializeVariables() { fi } +# fetches org id with the configured channel, if exists, from sunbird.organisation table +# org id will be set in sunbird_custodian_tenant_id variable getExistingCustodianTenantId() { sunbird_custodian_tenant_id=$(cqlsh -e "select id from sunbird.organisation where isrootorg=true and channel='""$sunbird_custodian_tenant_channel""' allow filtering;" | awk 'FNR == 4 {print}' | sed 's/ //g') } +# New id is generated using following approach +# 1. time in milli secs + random number(0-999999 range) +# 2. left shift the result from step 1 by 13 +# 3. append 0 at both ends of the result from step 2 +# 4. generated id will be set in sunbird_custodian_tenant_id variable getNewCustodianTenantId() { sunbird_custodian_tenant_id='0'$((($(date +%s%3N)+$(jot -r 1 0 999999))<<13))'0'; } +# fetches value from system_settings table for a given id getValueFromSystemSettings() { system_settings_id="$1"; system_settings_value=$(cqlsh -e "select value from sunbird.system_settings where id='""$system_settings_id""';" | awk 'FNR == 4 {print}' | sed 's/ //g') } +# sets value and field in system_settings table for a given id setValueInSystemSettings() { system_settings_id="$1"; system_settings_value="$2"; cqlsh -e "update sunbird.system_settings set value='""$system_settings_value""',field='""$system_settings_id""' where id='""$system_settings_id""';" } +# creates a new entry in system_settings table with the given values setPropertyInSystemSettings() { system_settings_id="$1"; system_settings_field="$2"; @@ -72,9 +94,11 @@ setPropertyInSystemSettings() { cqlsh -e "insert into sunbird.system_settings(id,field,value) values('""$system_settings_id""','""$system_settings_field""','""$system_settings_value""');" } +# calls channel registration api +# response code will be set in register_channel_response_code variable registerChannel() { register_channel_response_code=$(curl -o /dev/null -s -w "%{http_code}\n" \ - -X POST $ekstep_proxy_base_url/api/channel/v3/create \ + -X POST $ekstep_proxy_base_url/$register_channel_api_endpoint \ -H 'authorization: Bearer '"$ekstep_api_key" \ -H 'cache-control: no-cache' \ -H 'content-type: application/json' \ @@ -89,15 +113,18 @@ registerChannel() { }') } +# calls hashtag registration api +# response code will be set in register_hashtag_response_code variable registerHashTag() { register_hashtag_response_code=$(curl -o /dev/null -s -w "%{http_code}\n" \ - -X POST $ekstep_proxy_base_url/api/data/v3/tag/register/$sunbird_custodian_tenant_id \ + -X POST $sunbird_analytics_base_url/$register_hashtag_api_endpoint/$sunbird_custodian_tenant_id \ -H 'authorization: Bearer '"$ekstep_api_key" \ -H 'cache-control: no-cache' \ -H 'content-type: application/json' \ -d '{}') } +# creates a record in cassandra - sunbird.organisation table createOrgInCassandra() { sunbird_cassandra_org_insert_query="insert into sunbird.organisation \ (orgname,description,channel,slug,id,hashtagid, \ @@ -110,6 +137,7 @@ createOrgInCassandra() { cqlsh -e "$sunbird_cassandra_org_insert_query" } +# creates a record in ES - index=searchindex, type=org createOrgInES() { es_host="$(echo "$sunbird_es_host" | cut -d ',' -f1)" es_create_org_response=$(curl -X PUT $es_host:9200/searchindex/org/$sunbird_custodian_tenant_id \ @@ -132,11 +160,16 @@ createOrgInES() { }') } +# sunbird_es_host variable can have 1 to n entries separated by comma +# fetch operation happens from the first host in the list fetchOrgFromES() { es_host="$(echo "$sunbird_es_host" | cut -d ',' -f1)" es_fetch_org_response=$(curl -X GET $es_host:9200/searchindex/org/$sunbird_custodian_tenant_id) } +# generates keycloak user token with the configured user credentials +# generated token will be set in keycloak_access_token variable +# keycloak_access_token variable will be blank, if the user is not yet created in sunbird getKeycloakToken() { sunbird_login_id="$sunbird_root_user_username"'@'"$sunbird_custodian_tenant_channel" keycloak_access_token=$(curl -s -X POST $proto://$proxy_server_name/auth/realms/sunbird/protocol/openid-connect/token \ @@ -145,8 +178,10 @@ getKeycloakToken() { -d 'client_id=admin-cli&username='"$sunbird_login_id"'&password='"$sunbird_root_user_password"'&grant_type=password' | jq '.access_token' | tr -d "\"") } +# calls user creation api with the configured user details +# response will be set in user_creation_response variable createUser() { - user_creation_response=$(curl -X POST $proto://$proxy_server_name/api/user/v1/create \ + user_creation_response=$(curl -X POST $proto://$proxy_server_name/$create_user_api_endpoint \ -H 'Cache-Control: no-cache' \ -H 'Content-Type: application/json' \ -H 'accept: application/json' \ @@ -166,9 +201,11 @@ createUser() { }') } +# calls add member to organisation api +# response will be set in add_user_response variable addUserToCustodianOrg() { getKeycloakToken - add_user_response=$(curl -X POST $proto://$proxy_server_name/api/org/v1/member/add \ + add_user_response=$(curl -X POST $proto://$proxy_server_name/$add_user_api_endpoint \ -H 'Cache-Control: no-cache' \ -H 'Content-Type: application/json' \ -H 'accept: application/json' \ @@ -183,9 +220,11 @@ addUserToCustodianOrg() { }') } +# calls assign role to user api +# response will be set in assign_role_response variable assignRoleToRootUser() { getKeycloakToken - assign_role_response=$(curl -X POST $proto://$proxy_server_name/api/user/v1/role/assign \ + assign_role_response=$(curl -X POST $proto://$proxy_server_name/$assign_role_api_endpoint \ -H 'Cache-Control: no-cache' \ -H 'Content-Type: application/json' \ -H 'accept: application/json' \ @@ -200,27 +239,44 @@ assignRoleToRootUser() { }') } +# Check whether all mandatory fields are configured validateConfigFields; + +# Initialise the required variables initializeVariables; + +# 1. Fetch systemInitialisationStatus from cassandra sunbird.system_settings table +# 2. If systemInitialisationStatus is empty, set it to SYSTEM_UNINITIALISED +# 3. Fetch systemInitialisationStatus again from cassandra +# 4. if systemInitialisationStatus is still empty, then throw cassandra connection error getValueFromSystemSettings "systemInitialisationStatus"; if [ -z "$system_settings_value" ]; then echo "Adding systemInitialisationStatus field to System Settings table..."; setValueInSystemSettings "systemInitialisationStatus" "SYSTEM_UNINITIALISED"; fi - getValueFromSystemSettings "systemInitialisationStatus"; if [ -z "$system_settings_value" ]; then echo "Unable to connect to Cassandra. Exiting program..."; exit 1; fi + +# Exit gracefully if the system is already initialised if [ "$system_settings_value" = "SYSTEM_INITIALISED" ]; then echo "System already Initialised. Exiting program..."; exit 0; fi +# Start of system initialisation process +# Stage 1 - create first organisation in cassandra database, if not exists +# 1. Fetch org id for the configured channel from cassandra - sunbird.organisation table +# 2. If org id exists, skip stage 1 +# 3. If org id does not exists, insert the record into cassandra database +# 4. Fetch org id again and validate whether cassandra insertion was successful +# 5. Incase of insertion failure, exit the program with error status +# 6. At the end of stage 1, sunbird_custodian_tenant_id will have org id in all scenarios echo "Starting System Initialisation..."; getExistingCustodianTenantId; if [ -z "$sunbird_custodian_tenant_id" ]; @@ -241,6 +297,13 @@ else echo "Making Tenant Organisation with Id - ""$sunbird_custodian_tenant_id"" as Custodian Organisation..."; fi +# Stage 2 - create first organisation in elastic search, if not exists +# 1. Fetch the org data from elastic search using org id +# 2. If org exists, skip the record creation in elastic search +# 3. If org does not exists, create the record in elastic search +# 4. After record creation, fetch the org data again and validate whether record creation was successfull +# 5. If record creation had failed, exit the program with error status +# 6. Set systemInitialisationStatus to CUSTODIAN_ORG_CREATED, once record creation is successful fetchOrgFromES; isOrgFoundInES=$(echo -n "$es_fetch_org_response" | jq '.found' | tr -d "\""); if [ "$isOrgFoundInES" = "false" ]; @@ -270,6 +333,10 @@ else exit 1; fi +# Stage 3 - Channel Registration +# 1. Channel registration happens, only if org is already created in cassandra and ES +# 2. If channel registration is successful, set systemInitialisationStatus as CUSTODIAN_ORG_CHANNEL_REGISTERED +# 3. If channel registration is unsuccessful, exit the program with error status getValueFromSystemSettings "systemInitialisationStatus"; if [ "$system_settings_value" = "CUSTODIAN_ORG_CREATED" ]; then @@ -285,6 +352,10 @@ then fi fi +# Stage 4 - HashTag Registration +# 1. HashTag registration happens only after successful channel registration +# 2. If hashTag registration is successful, set systemInitialisationStatus as CUSTODIAN_ORG_HASHTAG_REGISTERED +# 3. If hashTag registration is unsuccessful, exit the program with error status getValueFromSystemSettings "systemInitialisationStatus"; if [ "$system_settings_value" = "CUSTODIAN_ORG_CHANNEL_REGISTERED" ]; then @@ -300,9 +371,15 @@ then fi fi +# On successful completion of stage 4, custodianOrgId and custodianOrgChannel will be set in system_settings table setValueInSystemSettings "custodianOrgId" "$sunbird_custodian_tenant_id"; setValueInSystemSettings "custodianOrgChannel" "$sunbird_custodian_tenant_channel"; +# Stage 5 - User creation with ORG_ADMIN rights +# 1. User creation happens only after successful hashtag registration +# 2. User is created in sunbird with configured user details +# 3. The created user will be the ORG_ADMIN of the custodian organisation created through stages 1 to 4 +# 4. On successful user creation, systemInitialisationStatus will be set as SYS_ADMIN_USER_CREATED getValueFromSystemSettings "systemInitialisationStatus"; if [ "$system_settings_value" = "CUSTODIAN_ORG_HASHTAG_REGISTERED" ]; then @@ -328,6 +405,7 @@ then fi fi +# On successful user creation, systemInitialisationStatus will be set as SYSTEM_INITIALISED getValueFromSystemSettings "systemInitialisationStatus"; if [ "$system_settings_value" = "SYS_ADMIN_USER_CREATED" ]; then From 3b9cd23e24ef27a9e4f3e387f3310504991ff6f6 Mon Sep 17 00:00:00 2001 From: Jai Date: Fri, 14 Sep 2018 12:07:10 +0530 Subject: [PATCH 0087/1345] Issue #SB-6475 feat: Sunbird Initialisation Script - Code Rework --- .../templates/system_init_commands.j2 | 21 ++++++++++--------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/ansible/roles/sunbird-system-init/templates/system_init_commands.j2 b/ansible/roles/sunbird-system-init/templates/system_init_commands.j2 index 60cb9521b4..e861bedc1b 100644 --- a/ansible/roles/sunbird-system-init/templates/system_init_commands.j2 +++ b/ansible/roles/sunbird-system-init/templates/system_init_commands.j2 @@ -15,11 +15,11 @@ proto="{{proto}}" proxy_server_name="{{proxy_server_name}}" sunbird_api_auth_token="{{sunbird_api_auth_token}}" sunbird_analytics_base_url="{{ekstep_proxy_base_url}}" -register_channel_api_endpoint="api/channel/v3/create" -register_hashtag_api_endpoint="api/data/v3/tag/register" -create_user_api_endpoint="api/user/v1/create" -add_user_api_endpoint="api/org/v1/member/add" -assign_role_api_endpoint="api/user/v1/role/assign" +register_channel_api_endpoint="$ekstep_proxy_base_url/api/channel/v3/create" +register_hashtag_api_endpoint="$sunbird_analytics_base_url/api/data/v3/tag/register" +create_user_api_endpoint="$proto://$proxy_server_name/api/user/v1/create" +add_user_api_endpoint="$proto://$proxy_server_name/api/org/v1/member/add" +assign_role_api_endpoint="$proto://$proxy_server_name/api/user/v1/role/assign" # Mandatory validation for user configured fields @@ -98,7 +98,7 @@ setPropertyInSystemSettings() { # response code will be set in register_channel_response_code variable registerChannel() { register_channel_response_code=$(curl -o /dev/null -s -w "%{http_code}\n" \ - -X POST $ekstep_proxy_base_url/$register_channel_api_endpoint \ + -X POST $register_channel_api_endpoint \ -H 'authorization: Bearer '"$ekstep_api_key" \ -H 'cache-control: no-cache' \ -H 'content-type: application/json' \ @@ -117,7 +117,7 @@ registerChannel() { # response code will be set in register_hashtag_response_code variable registerHashTag() { register_hashtag_response_code=$(curl -o /dev/null -s -w "%{http_code}\n" \ - -X POST $sunbird_analytics_base_url/$register_hashtag_api_endpoint/$sunbird_custodian_tenant_id \ + -X POST $register_hashtag_api_endpoint/$sunbird_custodian_tenant_id \ -H 'authorization: Bearer '"$ekstep_api_key" \ -H 'cache-control: no-cache' \ -H 'content-type: application/json' \ @@ -181,7 +181,7 @@ getKeycloakToken() { # calls user creation api with the configured user details # response will be set in user_creation_response variable createUser() { - user_creation_response=$(curl -X POST $proto://$proxy_server_name/$create_user_api_endpoint \ + user_creation_response=$(curl -X POST $create_user_api_endpoint \ -H 'Cache-Control: no-cache' \ -H 'Content-Type: application/json' \ -H 'accept: application/json' \ @@ -205,7 +205,7 @@ createUser() { # response will be set in add_user_response variable addUserToCustodianOrg() { getKeycloakToken - add_user_response=$(curl -X POST $proto://$proxy_server_name/$add_user_api_endpoint \ + add_user_response=$(curl -X POST $add_user_api_endpoint \ -H 'Cache-Control: no-cache' \ -H 'Content-Type: application/json' \ -H 'accept: application/json' \ @@ -224,7 +224,7 @@ addUserToCustodianOrg() { # response will be set in assign_role_response variable assignRoleToRootUser() { getKeycloakToken - assign_role_response=$(curl -X POST $proto://$proxy_server_name/$assign_role_api_endpoint \ + assign_role_response=$(curl -X POST $assign_role_api_endpoint \ -H 'Cache-Control: no-cache' \ -H 'Content-Type: application/json' \ -H 'accept: application/json' \ @@ -412,3 +412,4 @@ then setValueInSystemSettings "systemInitialisationStatus" "SYSTEM_INITIALISED"; fi echo "System Initialisation Completed Successfully."; +# End of system initialisation process \ No newline at end of file From 072f5b66f997e2800f6ef6919944082e9fac0898 Mon Sep 17 00:00:00 2001 From: Jai Date: Fri, 14 Sep 2018 19:04:26 +0530 Subject: [PATCH 0088/1345] Issue #SB-6475 feat: Sunbird Initialisation Script - Code Rework --- .../sunbird-system-init/templates/system_init_commands.j2 | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ansible/roles/sunbird-system-init/templates/system_init_commands.j2 b/ansible/roles/sunbird-system-init/templates/system_init_commands.j2 index e861bedc1b..9fc66c95cd 100644 --- a/ansible/roles/sunbird-system-init/templates/system_init_commands.j2 +++ b/ansible/roles/sunbird-system-init/templates/system_init_commands.j2 @@ -389,9 +389,9 @@ then if [ "$user_creation_status" = "success" ]; then sunbird_root_user_id=$(echo -n "$user_creation_response" | jq '.result.userId' | tr -d "\""); - addUserToCustodianOrg; - add_user_status=$(echo -n "$add_user_response" | jq '.result.response' | tr -d "\""); - if [ "$add_user_status" = "SUCCESS" ]; + assignRoleToRootUser; + assign_role_status=$(echo -n "$assign_role_response" | jq '.result.response' | tr -d "\""); + if [ "$assign_role_status" = "SUCCESS" ]; then echo "Sunbird root user created successfully"; setValueInSystemSettings "systemInitialisationStatus" "SYS_ADMIN_USER_CREATED"; From 7d35bc60778316c76019f7324a88d4ef1de956b6 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Fri, 7 Sep 2018 12:05:37 +0530 Subject: [PATCH 0089/1345] Issue #DO-129 feat: change permission --- deploy/utilities/cassandra_row_counter.py | 0 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 deploy/utilities/cassandra_row_counter.py diff --git a/deploy/utilities/cassandra_row_counter.py b/deploy/utilities/cassandra_row_counter.py old mode 100644 new mode 100755 From d0b57fcc3eeb8d59b9cb3822aa89a5ddd7ec4325 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Fri, 7 Sep 2018 12:41:18 +0530 Subject: [PATCH 0090/1345] Issue #DO-129 fix: Changing the dir --- deploy/utilities/cassandra_row_counter.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/deploy/utilities/cassandra_row_counter.py b/deploy/utilities/cassandra_row_counter.py index 110bb92b1b..aaeb03c482 100755 --- a/deploy/utilities/cassandra_row_counter.py +++ b/deploy/utilities/cassandra_row_counter.py @@ -5,6 +5,8 @@ from re import match, DOTALL root_dir = '/home/ops/cassandra_backup' + +os.chdir(root_dir) for i in os.listdir(root_dir): try: From bf4a0a7f7e13ffeb435c87c7f86ebab8d45e3bb0 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Fri, 7 Sep 2018 15:06:39 +0530 Subject: [PATCH 0091/1345] Issue #DO-129: added logging in to file --- deploy/utilities/cassandra_row_counter.py | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/deploy/utilities/cassandra_row_counter.py b/deploy/utilities/cassandra_row_counter.py index aaeb03c482..038f9d2a48 100755 --- a/deploy/utilities/cassandra_row_counter.py +++ b/deploy/utilities/cassandra_row_counter.py @@ -5,15 +5,18 @@ from re import match, DOTALL root_dir = '/home/ops/cassandra_backup' - +log_file = os.path.expanduser("~")+'/cassandra_row_count.txt' os.chdir(root_dir) -for i in os.listdir(root_dir): - try: - for j in os.listdir(i): - ks = i+'.'+str(j.split('-')[0]) - val = 'cqlsh -e "select count(*) from {};"'.format(ks) - out = check_output(["/bin/bash","-c",val]) - print(ks+' : '+match(r'.+\s(\d+).+', str(out), DOTALL).group(1)) - except NotADirectoryError as e: - print(e) +with open(log_file,'a') as cf: + for i in os.listdir(root_dir): + try: + for j in os.listdir(i): + ks = i+'.'+str(j.split('-')[0]) + val = 'cqlsh -e "select count(*) from {};"'.format(ks) + out = check_output(["/bin/bash","-c",val]) + tmp = ks+' : '+match(r'.+\s(\d+).+', str(out), DOTALL).group(1) + cf.write(tmp+'\n') + print(tmp) + except Exception as e: + print(e) From b4727295d4f02093fd29ddd7585d717e4f7b2aa6 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Fri, 7 Sep 2018 16:01:16 +0530 Subject: [PATCH 0092/1345] Issue #DO-137 feat: tasks clearing old snaps adding default name for snaps --- deploy/cassandra_backup.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/deploy/cassandra_backup.py b/deploy/cassandra_backup.py index d9bd234be6..8265346f90 100755 --- a/deploy/cassandra_backup.py +++ b/deploy/cassandra_backup.py @@ -7,7 +7,7 @@ usage: script snapshot_name -eg: ./cassandra_backup.py my_snapshot +eg: ./cassandra_backup.py ''' from os import path, walk, sep, system, getcwd, makedirs @@ -16,10 +16,11 @@ from re import match, compile from sys import exit from tempfile import mkdtemp +from time import strftime parser = ArgumentParser(description="Create a snapshot and create tar ball inside tardirectory") parser.add_argument("-d","--datadirectory", metavar="datadir", default='/var/lib/cassandra/data', help="path to create the tarball. Default /var/lib/cassadra/data") -parser.add_argument("snapshotname", help="name in which you want to take the snapshot") +parser.add_argument("-s","--snapshotname", metavar="tardir", default="cassandra_backup-"+strftime("%Y-%m-%d"), help="Snap shot name, default {}".format("cassandra_backup-"+strftime("%Y-%m-%d"))) parser.add_argument("-t","--tardirectory", metavar="tardir", default=getcwd(), help="path to create the tarball. Default {}".format(getcwd())) args = parser.parse_args() @@ -51,6 +52,9 @@ def copy(): print("Couldn't backup schema, exiting...") exit(1) print("Schema backup completed. saved in {}/cassandra_backup/db_schema.sql".format(tmpdir)) +# Cleaning all old snapshots +command = "nodetool clearsnapshot" +system(command) # Creating snapshots command = "nodetool snapshot -t {}".format(args.snapshotname) rc = system(command) From c3e156cee580f1a2fa0bf51025767a1dc5e96f52 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Fri, 7 Sep 2018 17:25:27 +0530 Subject: [PATCH 0093/1345] Issue #DO-137 feat: Added ignore list --- deploy/utilities/cassandra_row_counter.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/deploy/utilities/cassandra_row_counter.py b/deploy/utilities/cassandra_row_counter.py index 038f9d2a48..45564c8b3e 100755 --- a/deploy/utilities/cassandra_row_counter.py +++ b/deploy/utilities/cassandra_row_counter.py @@ -1,20 +1,23 @@ #!/usr/bin/env python3 import os -from subprocess import run, check_output -from re import match, DOTALL +from subprocess import check_output, STDOUT +from re import match, DOTALL, compile -root_dir = '/home/ops/cassandra_backup' +root_dir = '/var/lib/cassandra/data' log_file = os.path.expanduser("~")+'/cassandra_row_count.txt' os.chdir(root_dir) +ignore_list = compile(r'(system|system|systemtauth|system_traces|system_schema|system_distributed)') with open(log_file,'a') as cf: for i in os.listdir(root_dir): + if match(ignore_list, i): + continue try: for j in os.listdir(i): ks = i+'.'+str(j.split('-')[0]) val = 'cqlsh -e "select count(*) from {};"'.format(ks) - out = check_output(["/bin/bash","-c",val]) + out = check_output(["/bin/bash","-c",val], stderr=STDOUT) tmp = ks+' : '+match(r'.+\s(\d+).+', str(out), DOTALL).group(1) cf.write(tmp+'\n') print(tmp) From f75a0a8fe803661f33629b256286bba690cbba86 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Mon, 10 Sep 2018 09:21:05 +0530 Subject: [PATCH 0094/1345] Issue #DO-137 fix: typos and bugs --- deploy/cassandra_backup.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/deploy/cassandra_backup.py b/deploy/cassandra_backup.py index 8265346f90..b47d84fa9b 100755 --- a/deploy/cassandra_backup.py +++ b/deploy/cassandra_backup.py @@ -19,9 +19,9 @@ from time import strftime parser = ArgumentParser(description="Create a snapshot and create tar ball inside tardirectory") -parser.add_argument("-d","--datadirectory", metavar="datadir", default='/var/lib/cassandra/data', help="path to create the tarball. Default /var/lib/cassadra/data") -parser.add_argument("-s","--snapshotname", metavar="tardir", default="cassandra_backup-"+strftime("%Y-%m-%d"), help="Snap shot name, default {}".format("cassandra_backup-"+strftime("%Y-%m-%d"))) -parser.add_argument("-t","--tardirectory", metavar="tardir", default=getcwd(), help="path to create the tarball. Default {}".format(getcwd())) +parser.add_argument("-d","--datadirectory", metavar="datadir", default='/var/lib/cassandra/data', help="Path to cassadandra keyspaces. Default /var/lib/cassadra/data") +parser.add_argument("-s","--snapshotname", metavar="snapshotname", default="cassandra_backup-"+strftime("%Y-%m-%d"), help="Name with which snapshot to be taken. Default {}".format("cassandra_backup-"+strftime("%Y-%m-%d"))) +parser.add_argument("-t","--tardirectory", metavar="tardir", default=getcwd(), help="Path to create the tarball. Default {}".format(getcwd())) args = parser.parse_args() # Create temporary directory to copy data From 99eb47ee9f777a2c3da4c9d794071e1cbbc55190 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Wed, 12 Sep 2018 12:25:54 +0530 Subject: [PATCH 0095/1345] Issue #DO-157 fix: monit installation failing dpkg issue with downgrading package ignoring false alarm --- ansible/roles/monit/tasks/main.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/ansible/roles/monit/tasks/main.yml b/ansible/roles/monit/tasks/main.yml index b114a10101..df229660e0 100755 --- a/ansible/roles/monit/tasks/main.yml +++ b/ansible/roles/monit/tasks/main.yml @@ -14,7 +14,10 @@ - name: Install Monit - apt: name=monit={{monit_version}} state=present dpkg_options=force-confdef,force-confold + apt: + name: monit={{monit_version}} + state: present + force: yes notify: restart monit - name: Create monit folder From 05ae8ffd8f35ab934cb2980f5b237dbb7daa0f78 Mon Sep 17 00:00:00 2001 From: S M Y Date: Wed, 12 Sep 2018 14:38:16 +0530 Subject: [PATCH 0096/1345] Issue ##229 ver: updating versions for release-1.10 --- deploy/version.env | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/deploy/version.env b/deploy/version.env index 1b59cc8cb1..1a5fd07df8 100755 --- a/deploy/version.env +++ b/deploy/version.env @@ -1,8 +1,8 @@ -PLAYER_VERSION=1.9.0-gold -CONTENT_SERVICE_VERSION=1.9.0-gold -LEARNER_SERVICE_VERSION=1.9.0-gold +PLAYER_VERSION=1.10.0-gold +CONTENT_SERVICE_VERSION=1.10.0-gold +LEARNER_SERVICE_VERSION=1.10.0-gold PROXY_VERSION=1.8.0-gold BADGER_SERVICE_VERSION=1.8.0-gold KONG_VERSION=1.8.0-gold -TELEMETRY_SERVICE_VERSION=1.8.1-gold -CONFIG_SERVICE_VERSION=1.10.0-bronze +TELEMETRY_SERVICE_VERSION=1.10.0-gold +CONFIG_SERVICE_VERSION=1.10.0-silver From cb64351c95d188f6f64a5a7f0bba9b11153328f9 Mon Sep 17 00:00:00 2001 From: S M Y Date: Wed, 12 Sep 2018 15:27:22 +0530 Subject: [PATCH 0097/1345] Issue #230 spaces: onboarding apis parsing error due to multiple spaces and tabs --- ansible/roles/kong-api/defaults/main.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ansible/roles/kong-api/defaults/main.yml b/ansible/roles/kong-api/defaults/main.yml index b075a75e8d..e94d81529a 100644 --- a/ansible/roles/kong-api/defaults/main.yml +++ b/ansible/roles/kong-api/defaults/main.yml @@ -425,7 +425,7 @@ kong_apis: config.hour: "{{ medium_rate_limit_per_hour }}" config.limit_by: credential - name: request-size-limiting - config.allowed_payload_size: "{{ small_request_size_limit }}" + config.allowed_payload_size: "{{ small_request_size_limit }}" - name: updateUser request_path: "{{ user_service_prefix }}/v1/update" upstream_url: "{{ learning_service_url }}/v1/user/update" @@ -3275,4 +3275,4 @@ kong_apis: - {name: 'statsd', config.metrics: "{{ statsd_metrics }}" } - {name: 'acl', config.whitelist: 'dataAdmin'} - {name: 'rate-limiting', config.policy: "local", config.hour: "{{ medium_rate_limit_per_hour }}"} - - {name: 'request-size-limiting', config.allowed_payload_size: "{{ small_request_size_limit }}" } \ No newline at end of file + - {name: 'request-size-limiting', config.allowed_payload_size: "{{ small_request_size_limit }}" } From 421467bbe689543121a18ce677c5412e87928adc Mon Sep 17 00:00:00 2001 From: S M Y Date: Wed, 12 Sep 2018 15:56:39 +0530 Subject: [PATCH 0098/1345] Issue #231 proxy: proxy vars updation --- ansible/inventories/sample/group_vars/sample | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ansible/inventories/sample/group_vars/sample b/ansible/inventories/sample/group_vars/sample index f464b0fea5..158c39147b 100644 --- a/ansible/inventories/sample/group_vars/sample +++ b/ansible/inventories/sample/group_vars/sample @@ -327,3 +327,6 @@ sunbird_portal_base_url: https://staging.open-sunbird.org #Learner Vars sunbird_email_max_recipients_limit: 100 + +#Proxy vars +sunbird_blob_env: "{{env}}" From 5a911d2701b8a5c8082798850231d5c6c9f3a674 Mon Sep 17 00:00:00 2001 From: S M Y Date: Wed, 12 Sep 2018 17:30:36 +0530 Subject: [PATCH 0099/1345] Issue #231 vars: Adding missing vars --- ansible/inventories/sample/group_vars/sample | 2 +- ansible/roles/stack-sunbird/tasks/config_service.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ansible/inventories/sample/group_vars/sample b/ansible/inventories/sample/group_vars/sample index 158c39147b..5e9ebcf411 100644 --- a/ansible/inventories/sample/group_vars/sample +++ b/ansible/inventories/sample/group_vars/sample @@ -317,7 +317,7 @@ aws_storage_container: sunbird_cassandra_host: "{{groups['cassandra'][0]|default(database_host)}}" sunbird_cassandra_port: 9042 -sunbird_cassandra_username: +sunbird_cassandra_username: cassandra sunbird_cassandra_password: "{{cassandra_password if cassandra_password else database_password}}" sunbird_config_service_url: "{{proto}}://{{proxy_server_name}}/api/config/" config_cache_ttl: 600 diff --git a/ansible/roles/stack-sunbird/tasks/config_service.yml b/ansible/roles/stack-sunbird/tasks/config_service.yml index 6f27717b3f..ffce431299 100644 --- a/ansible/roles/stack-sunbird/tasks/config_service.yml +++ b/ansible/roles/stack-sunbird/tasks/config_service.yml @@ -4,6 +4,6 @@ ignore_errors: yes - name: Deploy config service - shell: "docker service create --replicas {{ config_replicas }} -p 6000:8080 --name config-service --hostname config-service --reserve-memory {{ config_reservation_memory }} --limit-memory {{ config_limit_memory }} --limit-cpu {{ config_limit_cpu }} --reserve-cpu {{ config_reservation_cpu }} --network application_default --env-file /home/deployer/env/sunbird_config-service.env {{hub_org}}/{{image_name}}:{{image_tag}}" + shell: "docker service create --replicas {{ config_replicas }} -p 6000:8080 --name config-service --hostname config-service --reserve-memory {{ config_reservation_memory }} --limit-memory {{ config_limit_memory }} --network application_default --env-file /home/deployer/env/sunbird_config-service.env {{hub_org}}/{{image_name}}:{{image_tag}}" args: chdir: /home/deployer/stack From 6f5069aa318665f6679f2aa723bc9cc04c7bacf2 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Tue, 14 Aug 2018 17:07:58 +0530 Subject: [PATCH 0100/1345] Issue #DO-9 feat: Added network subnet for CIDR --- ansible/roles/bootstrap_swarm/defaults/main.yml | 5 ----- ansible/roles/bootstrap_swarm/tasks/main.yml | 5 +++-- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/ansible/roles/bootstrap_swarm/defaults/main.yml b/ansible/roles/bootstrap_swarm/defaults/main.yml index 654a6bb0da..d4a0ec10b7 100644 --- a/ansible/roles/bootstrap_swarm/defaults/main.yml +++ b/ansible/roles/bootstrap_swarm/defaults/main.yml @@ -1,8 +1,3 @@ --- networks: - - logger - application_default - - api-manager_default - - monitoring - - jenkins_default - - proxy_default diff --git a/ansible/roles/bootstrap_swarm/tasks/main.yml b/ansible/roles/bootstrap_swarm/tasks/main.yml index c931a4a9c7..bd689ec960 100644 --- a/ansible/roles/bootstrap_swarm/tasks/main.yml +++ b/ansible/roles/bootstrap_swarm/tasks/main.yml @@ -3,10 +3,11 @@ become: yes - name: Create networks - shell: "docker network create --driver overlay {{item}}" + # Limiting n/w because of https://github.com/moby/moby/issues/30820 + shell: "docker network create --subnet 11.11.1.0/24 --driver overlay {{item}}" with_items: - "{{networks}}" ignore_errors: true - tags: + tagsj - create_network run_once: true From e06da14526917158abdfdfa3ced5ce18c1007eba Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Wed, 15 Aug 2018 13:35:23 +0530 Subject: [PATCH 0101/1345] Issue #DO-9 feat: Creating jenkins subnet and application_default --- ansible/roles/bootstrap_swarm/defaults/main.yml | 3 ++- ansible/roles/bootstrap_swarm/tasks/main.yml | 6 +++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/ansible/roles/bootstrap_swarm/defaults/main.yml b/ansible/roles/bootstrap_swarm/defaults/main.yml index d4a0ec10b7..3bc0702c37 100644 --- a/ansible/roles/bootstrap_swarm/defaults/main.yml +++ b/ansible/roles/bootstrap_swarm/defaults/main.yml @@ -1,3 +1,4 @@ --- networks: - - application_default + - {name: 'application_default', subnet: '11.11.1.0/24'} + - {name: 'jenkins_default', subnet: '11.11.2.0/24' } diff --git a/ansible/roles/bootstrap_swarm/tasks/main.yml b/ansible/roles/bootstrap_swarm/tasks/main.yml index bd689ec960..1fcb6eafeb 100644 --- a/ansible/roles/bootstrap_swarm/tasks/main.yml +++ b/ansible/roles/bootstrap_swarm/tasks/main.yml @@ -4,10 +4,10 @@ - name: Create networks # Limiting n/w because of https://github.com/moby/moby/issues/30820 - shell: "docker network create --subnet 11.11.1.0/24 --driver overlay {{item}}" + shell: "docker network create --subnet {{item.subnet}} --driver overlay {{item.name}}" with_items: - "{{networks}}" ignore_errors: true - tagsj - - create_network + tags: + - create_network run_once: true From 1ce50f6045eee202c6c002bb187db60aa79cbf57 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Thu, 16 Aug 2018 07:22:04 +0530 Subject: [PATCH 0102/1345] Issue #DO-9 feat: Adding monitoring subnet --- ansible/roles/bootstrap_swarm/defaults/main.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/ansible/roles/bootstrap_swarm/defaults/main.yml b/ansible/roles/bootstrap_swarm/defaults/main.yml index 3bc0702c37..e7b4a1592d 100644 --- a/ansible/roles/bootstrap_swarm/defaults/main.yml +++ b/ansible/roles/bootstrap_swarm/defaults/main.yml @@ -2,3 +2,4 @@ networks: - {name: 'application_default', subnet: '11.11.1.0/24'} - {name: 'jenkins_default', subnet: '11.11.2.0/24' } + - {name: 'monitoring', subnet: '11.11.3.0/24' } From adc172b4e45c9ffc6aea94d00a351326d1ae9613 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Thu, 16 Aug 2018 08:51:52 +0530 Subject: [PATCH 0103/1345] Issue #DO-9 feat: Changing proxy_default with application_default --- ansible/roles/stack-proxy/defaults/main.yml | 3 +++ ansible/roles/stack-proxy/tasks/main.yml | 4 +++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/ansible/roles/stack-proxy/defaults/main.yml b/ansible/roles/stack-proxy/defaults/main.yml index de195435c3..d4168fe8f6 100644 --- a/ansible/roles/stack-proxy/defaults/main.yml +++ b/ansible/roles/stack-proxy/defaults/main.yml @@ -7,6 +7,9 @@ proxy_limit_memory: 128M proxy_prometheus: false +networks: + - {name: 'application_default', subnet: '11.11.1.0/24'} + proxy_secrets: - name: prom_admin_creds value: "{{proxy_prometheus_admin_creds}}" diff --git a/ansible/roles/stack-proxy/tasks/main.yml b/ansible/roles/stack-proxy/tasks/main.yml index 4e0aa1f8a1..75f7a442e1 100644 --- a/ansible/roles/stack-proxy/tasks/main.yml +++ b/ansible/roles/stack-proxy/tasks/main.yml @@ -41,7 +41,9 @@ ignore_errors: yes - name: Ensure network exists - shell: "docker network create --driver overlay proxy_default" + shell: "docker network create --driver overlay {{item.name}} --subnet {{item.subnet}}" + with_items: + - "{{networks}}" ignore_errors: true # Ignoring ssl certs while proto=https mode From 3671aa09066188920ec1e1c61680a60593414da9 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Fri, 14 Sep 2018 11:06:09 +0530 Subject: [PATCH 0104/1345] Issue #DO-9 feat: removed api-manager network --- .../stack-jenkins-slave/templates/stack-jenkins-slave.yml | 3 --- 1 file changed, 3 deletions(-) diff --git a/ansible/roles/stack-jenkins-slave/templates/stack-jenkins-slave.yml b/ansible/roles/stack-jenkins-slave/templates/stack-jenkins-slave.yml index 6891870056..6689785f60 100644 --- a/ansible/roles/stack-jenkins-slave/templates/stack-jenkins-slave.yml +++ b/ansible/roles/stack-jenkins-slave/templates/stack-jenkins-slave.yml @@ -53,7 +53,6 @@ services: memory: "{{ api_manager_jenkins_slave_limit_memory }}" networks: - jenkins_default - - api-manager_default secrets: jenkins-user: @@ -72,5 +71,3 @@ secrets: networks: jenkins_default: external: true - api-manager_default: - external: true From a00468ca4fccd01d427f92f914b95475c0c04ee4 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Fri, 14 Sep 2018 11:12:37 +0530 Subject: [PATCH 0105/1345] Issue #DO-9 feat: removed proxy-default network --- ansible/roles/stack-proxy/templates/stack-proxy.yml | 9 --------- 1 file changed, 9 deletions(-) diff --git a/ansible/roles/stack-proxy/templates/stack-proxy.yml b/ansible/roles/stack-proxy/templates/stack-proxy.yml index 010ce9c2d2..134b1a5d28 100644 --- a/ansible/roles/stack-proxy/templates/stack-proxy.yml +++ b/ansible/roles/stack-proxy/templates/stack-proxy.yml @@ -29,11 +29,8 @@ services: - source: proxy-default.conf target: /etc/nginx/conf.d/default.conf networks: - - proxy_default - - api-manager_default - jenkins_default - application_default - - logger - monitoring secrets: @@ -54,15 +51,9 @@ configs: external: true networks: - api-manager_default: - external: true jenkins_default: external: true application_default: external: true - logger: - external: true monitoring: external: true - proxy_default: - external: true From 90e5dd30d1dec6ce33ce2b2f4e89bf35666faf8d Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Fri, 14 Sep 2018 11:19:28 +0530 Subject: [PATCH 0106/1345] Issue #DO-118 feat: delete api-manager network from api-manger role --- .../roles/stack-api-manager/templates/stack-api-manager.yml | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/ansible/roles/stack-api-manager/templates/stack-api-manager.yml b/ansible/roles/stack-api-manager/templates/stack-api-manager.yml index ee1133d27d..388f2cbc87 100644 --- a/ansible/roles/stack-api-manager/templates/stack-api-manager.yml +++ b/ansible/roles/stack-api-manager/templates/stack-api-manager.yml @@ -9,7 +9,6 @@ services: - 8000:8000 - 8001:8001 networks: - - api-manager_default - application_default deploy: replicas: {{ kong_replicas }} @@ -30,7 +29,7 @@ services: echo: image: "{{hub_org}}/{{echo_server_image_name}}:{{echo_server_image_tag}}" networks: - - api-manager_default + - application_default ports: - 9595:9595 deploy: @@ -50,7 +49,5 @@ services: retries: 3 networks: - api-manager_default: - external: true application_default: external: true From 83d7ab6cda50e1861085f9f350e2e89a1633d699 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Fri, 14 Sep 2018 11:38:46 +0530 Subject: [PATCH 0107/1345] Issue #DO-118 feat: Added application_default --- .../stack-jenkins-slave/templates/stack-jenkins-slave.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ansible/roles/stack-jenkins-slave/templates/stack-jenkins-slave.yml b/ansible/roles/stack-jenkins-slave/templates/stack-jenkins-slave.yml index 6689785f60..5e631ff90b 100644 --- a/ansible/roles/stack-jenkins-slave/templates/stack-jenkins-slave.yml +++ b/ansible/roles/stack-jenkins-slave/templates/stack-jenkins-slave.yml @@ -53,6 +53,7 @@ services: memory: "{{ api_manager_jenkins_slave_limit_memory }}" networks: - jenkins_default + - application_default secrets: jenkins-user: @@ -71,3 +72,5 @@ secrets: networks: jenkins_default: external: true + application_default: + external: true From 811391fdbbaafb489991036d10b956d109c1f3fb Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Fri, 14 Sep 2018 13:02:02 +0530 Subject: [PATCH 0108/1345] Issue #DO-9 feat: replaced logger with monitoring --- ansible/roles/stack-logger/templates/stack-logger.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/ansible/roles/stack-logger/templates/stack-logger.yml b/ansible/roles/stack-logger/templates/stack-logger.yml index e4cf4178d6..e4ea0c7b60 100644 --- a/ansible/roles/stack-logger/templates/stack-logger.yml +++ b/ansible/roles/stack-logger/templates/stack-logger.yml @@ -11,7 +11,7 @@ services: - source: kibana.yml target: /opt/kibana/config/kibana.yml networks: - - logger + - monitoring logstash: image: sunbird/logstash:2.4.1 @@ -33,7 +33,7 @@ services: - '51415:51415' - '5044:5044' networks: - - logger + - monitoring logspout: image: gliderlabs/logspout:v3.2.3 @@ -46,7 +46,7 @@ services: volumes: - '/var/run/docker.sock:/tmp/docker.sock' networks: - - logger + - monitoring oauth: image: mryu/oauth2-proxy:2.1 @@ -69,7 +69,7 @@ services: - source: authenticated_email_kibana_oauth target: /authenticated_email.txt networks: - - logger + - monitoring configs: authenticated_email_kibana_oauth: @@ -80,6 +80,6 @@ configs: external: true networks: - logger: + monitoring: external: true From b86d1fa039b185d625b0f13e597952231cfc658b Mon Sep 17 00:00:00 2001 From: S M Y Date: Fri, 14 Sep 2018 19:05:42 +0530 Subject: [PATCH 0109/1345] Issue #000 encryption: adding encryption service vars --- ansible/inventories/sample/group_vars/sample | 10 ++++++++++ .../tasks/.encryption_service.yml.swp | Bin 0 -> 12288 bytes .../stack-sunbird/tasks/encryption_service.yml | 9 +++++++++ ansible/roles/stack-sunbird/tasks/main.yml | 3 +++ .../templates/sunbird_encryption-service.yml | 5 +++++ 5 files changed, 27 insertions(+) create mode 100644 ansible/roles/stack-sunbird/tasks/.encryption_service.yml.swp create mode 100644 ansible/roles/stack-sunbird/tasks/encryption_service.yml create mode 100644 ansible/roles/stack-sunbird/templates/sunbird_encryption-service.yml diff --git a/ansible/inventories/sample/group_vars/sample b/ansible/inventories/sample/group_vars/sample index 5e9ebcf411..da137af629 100644 --- a/ansible/inventories/sample/group_vars/sample +++ b/ansible/inventories/sample/group_vars/sample @@ -330,3 +330,13 @@ sunbird_email_max_recipients_limit: 100 #Proxy vars sunbird_blob_env: "{{env}}" + +#encryption Service +encryption_service_user: encryption +encryption_db_name: encryption +encryption_db_dialect: postgres +encryption_reservation_memory: 750MB +encryption_replicas: 1 +encryption_limit_memory: 750MB +encryption_limit_cpu: 1 +encryption_reservation_cpu: 1 diff --git a/ansible/roles/stack-sunbird/tasks/.encryption_service.yml.swp b/ansible/roles/stack-sunbird/tasks/.encryption_service.yml.swp new file mode 100644 index 0000000000000000000000000000000000000000..b239ed322b4cebe9536d5f1b2b2dedc56e172295 GIT binary patch literal 12288 zcmeI&&x+JA90%~MHxH|#FA&Fbrn9b~^d@*w@FM8NL&>ziZA1U0B$<&iR9`~z;2Zb= zzJafx;K`$J;6>1+w!39@S#KhK1DVkLeo2~7PGz!QJ-Ppo-(KEgzFcAK^Sd`sA6)vv z-rr@cR81bb&nthL_dFyf>-^f)$5Q|;1Rwwb2tWV=5P$## zAn+duxOR`d@cX?wxAKM>G(C00bZa0SG_<0uX=z1Rwwb2>gQrGGpxZK4Tw! z4gdd7-~Zn(Gxo{Xx4ype^`)=I*Y7^>>zMx`j6s0_1Rwwb2tWV=5P$##AOL~CDZqV6 zi%glAM}@8_%BZb$N9O0%YR0)Vxs82m3#zJ^FEX8$WcYZsnx}@OBQAvT163+5-|hJ9 z3ife#-*eIOJFA1kIQ(!wq>(kva>X>K5QVnx?5LrTNus7&o9>qdLr@O)zsH2Iw5U|A z-0z1Bp=6%ikb9<0$z?liYM3meBe|)ZpNg8TI8qgzCiDH%b@k+gVA|Hwhq-^*VzW-P z$@@Oq?NlvuO2SV2KAs+(^uYxaJoLx>-f$u_r^%lAQ&D-N4JBlZHa6xR*|U$z)U!#Z Tw>nwpk=NYL&*OL Date: Fri, 14 Sep 2018 19:24:38 +0530 Subject: [PATCH 0110/1345] Issue #000 encryption: adding encryption service stack file --- .../tasks/.encryption_service.yml.swp | Bin 12288 -> 0 bytes .../templates/stack_encryption_service.yml | 23 ++++++++++++++++++ ...ice.yml => sunbird_encryption-service.env} | 0 3 files changed, 23 insertions(+) delete mode 100644 ansible/roles/stack-sunbird/tasks/.encryption_service.yml.swp create mode 100644 ansible/roles/stack-sunbird/templates/stack_encryption_service.yml rename ansible/roles/stack-sunbird/templates/{sunbird_encryption-service.yml => sunbird_encryption-service.env} (100%) diff --git a/ansible/roles/stack-sunbird/tasks/.encryption_service.yml.swp b/ansible/roles/stack-sunbird/tasks/.encryption_service.yml.swp deleted file mode 100644 index b239ed322b4cebe9536d5f1b2b2dedc56e172295..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12288 zcmeI&&x+JA90%~MHxH|#FA&Fbrn9b~^d@*w@FM8NL&>ziZA1U0B$<&iR9`~z;2Zb= zzJafx;K`$J;6>1+w!39@S#KhK1DVkLeo2~7PGz!QJ-Ppo-(KEgzFcAK^Sd`sA6)vv z-rr@cR81bb&nthL_dFyf>-^f)$5Q|;1Rwwb2tWV=5P$## zAn+duxOR`d@cX?wxAKM>G(C00bZa0SG_<0uX=z1Rwwb2>gQrGGpxZK4Tw! z4gdd7-~Zn(Gxo{Xx4ype^`)=I*Y7^>>zMx`j6s0_1Rwwb2tWV=5P$##AOL~CDZqV6 zi%glAM}@8_%BZb$N9O0%YR0)Vxs82m3#zJ^FEX8$WcYZsnx}@OBQAvT163+5-|hJ9 z3ife#-*eIOJFA1kIQ(!wq>(kva>X>K5QVnx?5LrTNus7&o9>qdLr@O)zsH2Iw5U|A z-0z1Bp=6%ikb9<0$z?liYM3meBe|)ZpNg8TI8qgzCiDH%b@k+gVA|Hwhq-^*VzW-P z$@@Oq?NlvuO2SV2KAs+(^uYxaJoLx>-f$u_r^%lAQ&D-N4JBlZHa6xR*|U$z)U!#Z Tw>nwpk=NYL&*OL Date: Fri, 14 Sep 2018 20:08:21 +0530 Subject: [PATCH 0111/1345] Issue #000 enc: Encryption service vars --- ansible/roles/stack-sunbird/tasks/encryption_service.yml | 2 +- .../roles/stack-sunbird/templates/stack_encryption_service.yml | 2 ++ .../stack-sunbird/templates/sunbird_encryption-service.env | 1 + 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/ansible/roles/stack-sunbird/tasks/encryption_service.yml b/ansible/roles/stack-sunbird/tasks/encryption_service.yml index 320acf12a5..c687e3b386 100644 --- a/ansible/roles/stack-sunbird/tasks/encryption_service.yml +++ b/ansible/roles/stack-sunbird/tasks/encryption_service.yml @@ -4,6 +4,6 @@ ignore_errors: yes - name: Deploy encryption service - shell: "docker service create --replicas {{ encryption_replicas }} -p 8013:8013 --name encryption-service --hostname encryption-service --reserve-memory {{ encryption_reservation_memory }} --limit-memory {{ encryption_limit_memory }} --network application_default --env-file /home/deployer/env/sunbird_encryption-service.env {{hub_org}}/{{image_name}}:{{image_tag}}" + shell: "docker service create --replicas {{ encryption_replicas }} -p 8013:8013 --name encryption-service --hostname encryption-service --reserve-memory {{ encryption_reservation_memory }} --limit-memory {{ encryption_limit_memory }} --network application_default --env-file /home/deployer/env/sunbird_encryption-service.env {{hub_org}}/{{image_name}}:{{image_tag}} {{application_postgres_password}}" args: chdir: /home/deployer/stack diff --git a/ansible/roles/stack-sunbird/templates/stack_encryption_service.yml b/ansible/roles/stack-sunbird/templates/stack_encryption_service.yml index 869780d42e..afa8623144 100644 --- a/ansible/roles/stack-sunbird/templates/stack_encryption_service.yml +++ b/ansible/roles/stack-sunbird/templates/stack_encryption_service.yml @@ -5,6 +5,8 @@ services: env_file: /home/deployer/env/sunbird_encryption_service.env deploy: + args: + replicas: {{ encryption_replicas | default(1) }} resources: reservations: diff --git a/ansible/roles/stack-sunbird/templates/sunbird_encryption-service.env b/ansible/roles/stack-sunbird/templates/sunbird_encryption-service.env index 70c60e060a..7d2959184b 100644 --- a/ansible/roles/stack-sunbird/templates/sunbird_encryption-service.env +++ b/ansible/roles/stack-sunbird/templates/sunbird_encryption-service.env @@ -3,3 +3,4 @@ DB_USER={{encryption_service_user}} DB_PASSWORD={{application_postgres_password}} DB_NAME={{encryption_db_name}} DB_DIALECT={{encryption_db_dialect}} +DB_SSL=True From e61f9b3ff8564e371d4a97aad1e485677d1c688b Mon Sep 17 00:00:00 2001 From: S M Y Date: Fri, 14 Sep 2018 20:18:30 +0530 Subject: [PATCH 0112/1345] Issue #000 vars: enc service password injection --- .../stack-sunbird/templates/stack_encryption_service.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ansible/roles/stack-sunbird/templates/stack_encryption_service.yml b/ansible/roles/stack-sunbird/templates/stack_encryption_service.yml index afa8623144..d80f89c20a 100644 --- a/ansible/roles/stack-sunbird/templates/stack_encryption_service.yml +++ b/ansible/roles/stack-sunbird/templates/stack_encryption_service.yml @@ -6,8 +6,8 @@ services: /home/deployer/env/sunbird_encryption_service.env deploy: args: - - replicas: {{ encryption_replicas | default(1) }} + DB_PASSWORD: "{{application_postgres_password}}" + replicas: "{{ encryption_replicas | default(1) }}" resources: reservations: memory: "{{ encryption_reservation_memory | default('256M') }}" From 779be6ca2c102e6de3d38959701a0791dcc3ecc2 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Mon, 17 Sep 2018 12:31:01 +0530 Subject: [PATCH 0113/1345] Issue #000 feat: running jobs once is swarm-manager --- ansible/deploy.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/ansible/deploy.yml b/ansible/deploy.yml index 41a195c301..1cc400f74f 100644 --- a/ansible/deploy.yml +++ b/ansible/deploy.yml @@ -6,6 +6,7 @@ - stack-proxy tags: - stack-proxy + run_once: true - hosts: swarm-bootstrap-manager become: yes @@ -15,6 +16,7 @@ - stack-api-manager tags: - stack-api-manager + run_once: true - hosts: swarm-bootstrap-manager become: yes @@ -24,6 +26,7 @@ - stack-sunbird tags: - stack-sunbird + run_once: true - hosts: swarm-bootstrap-manager become: yes @@ -33,6 +36,7 @@ - stack-adminutil tags: - stack-adminutil + run_once: true - hosts: swarm-bootstrap-manager become: yes @@ -42,6 +46,7 @@ - stack-keycloak tags: - stack-keycloak1 + run_once: true - hosts: swarm-bootstrap-manager become: yes @@ -51,6 +56,7 @@ - stack-keycloak tags: - stack-keycloak2 + run_once: true - hosts: swarm-bootstrap-manager become: yes @@ -60,5 +66,6 @@ - registry tags: - stack-registry + run_once: true From 8982aec808ed7d61f3a31251d4dd48d10adc6792 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Mon, 17 Sep 2018 12:35:26 +0530 Subject: [PATCH 0114/1345] Issue #000 feat: default encryption_replicas --- ansible/roles/stack-sunbird/defaults/main.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ansible/roles/stack-sunbird/defaults/main.yml b/ansible/roles/stack-sunbird/defaults/main.yml index 8562f8489e..801807351d 100644 --- a/ansible/roles/stack-sunbird/defaults/main.yml +++ b/ansible/roles/stack-sunbird/defaults/main.yml @@ -80,3 +80,6 @@ telemetry_local_storage_enabled: telemetry_local_storage_type: telemetry_kafka_broker_list: telemetry_kafka_topic: + +# Encryption service +encryption_replicas: 1 From 28d1c654abea0a6d1932f38c76be4d983c35c813 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Mon, 17 Sep 2018 12:38:22 +0530 Subject: [PATCH 0115/1345] Issue #000 feat: Default enc-service memory --- ansible/roles/stack-sunbird/defaults/main.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ansible/roles/stack-sunbird/defaults/main.yml b/ansible/roles/stack-sunbird/defaults/main.yml index 801807351d..5c0fa92272 100644 --- a/ansible/roles/stack-sunbird/defaults/main.yml +++ b/ansible/roles/stack-sunbird/defaults/main.yml @@ -83,3 +83,5 @@ telemetry_kafka_topic: # Encryption service encryption_replicas: 1 +encryption_reservation_memory: "256M" +encryption_limit_memory: "512M" From 62f22424f1e0f21b686cfc3846a18fce31fe2111 Mon Sep 17 00:00:00 2001 From: Amol Ghatol Date: Mon, 17 Sep 2018 15:04:01 +0530 Subject: [PATCH 0116/1345] Issue #SB-6533 fix:Issue while fetching the data after login --- ansible/roles/kong-api/defaults/main.yml | 5 ++++- ansible/roles/kong-consumer/defaults/main.yml | 2 ++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/ansible/roles/kong-api/defaults/main.yml b/ansible/roles/kong-api/defaults/main.yml index e94d81529a..2cf7f36c44 100644 --- a/ansible/roles/kong-api/defaults/main.yml +++ b/ansible/roles/kong-api/defaults/main.yml @@ -62,12 +62,15 @@ premium_consumer_rate_limits: - api: createContent config.hour: "{{ premium_consumer_small_rate_limit_per_hour }}" config.limit_by: credential + config.policy: local - api: updateContent config.hour: "{{ premium_consumer_medium_rate_limit_per_hour }}" config.limit_by: credential + config.policy: local - api: readContent config.hour: "{{ premium_consumer_large_rate_limit_per_hour }}" config.limit_by: credential + config.policy: local # Example: # kong_apis: @@ -3275,4 +3278,4 @@ kong_apis: - {name: 'statsd', config.metrics: "{{ statsd_metrics }}" } - {name: 'acl', config.whitelist: 'dataAdmin'} - {name: 'rate-limiting', config.policy: "local", config.hour: "{{ medium_rate_limit_per_hour }}"} - - {name: 'request-size-limiting', config.allowed_payload_size: "{{ small_request_size_limit }}" } + - {name: 'request-size-limiting', config.allowed_payload_size: "{{ small_request_size_limit }}" } diff --git a/ansible/roles/kong-consumer/defaults/main.yml b/ansible/roles/kong-consumer/defaults/main.yml index 9bb014911e..7ea1ef45ca 100644 --- a/ansible/roles/kong-consumer/defaults/main.yml +++ b/ansible/roles/kong-consumer/defaults/main.yml @@ -37,6 +37,8 @@ integration_partner_groups: - dialcodeUser - appAdmin - appUpdate + - courseUser + - contentUser implementaion_user_groups: - contentAdmin From 73076fa02dc7e03b5f9c21f406dfab1496ccc3bc Mon Sep 17 00:00:00 2001 From: Amol Ghatol Date: Mon, 17 Sep 2018 15:18:58 +0530 Subject: [PATCH 0117/1345] Issue #SB-6533 fix:Issue while fetching the data after login --- ansible/roles/kong-api/defaults/main.yml | 5 ++++- ansible/roles/kong-consumer/defaults/main.yml | 2 ++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/ansible/roles/kong-api/defaults/main.yml b/ansible/roles/kong-api/defaults/main.yml index e94d81529a..2cf7f36c44 100644 --- a/ansible/roles/kong-api/defaults/main.yml +++ b/ansible/roles/kong-api/defaults/main.yml @@ -62,12 +62,15 @@ premium_consumer_rate_limits: - api: createContent config.hour: "{{ premium_consumer_small_rate_limit_per_hour }}" config.limit_by: credential + config.policy: local - api: updateContent config.hour: "{{ premium_consumer_medium_rate_limit_per_hour }}" config.limit_by: credential + config.policy: local - api: readContent config.hour: "{{ premium_consumer_large_rate_limit_per_hour }}" config.limit_by: credential + config.policy: local # Example: # kong_apis: @@ -3275,4 +3278,4 @@ kong_apis: - {name: 'statsd', config.metrics: "{{ statsd_metrics }}" } - {name: 'acl', config.whitelist: 'dataAdmin'} - {name: 'rate-limiting', config.policy: "local", config.hour: "{{ medium_rate_limit_per_hour }}"} - - {name: 'request-size-limiting', config.allowed_payload_size: "{{ small_request_size_limit }}" } + - {name: 'request-size-limiting', config.allowed_payload_size: "{{ small_request_size_limit }}" } diff --git a/ansible/roles/kong-consumer/defaults/main.yml b/ansible/roles/kong-consumer/defaults/main.yml index 9bb014911e..7ea1ef45ca 100644 --- a/ansible/roles/kong-consumer/defaults/main.yml +++ b/ansible/roles/kong-consumer/defaults/main.yml @@ -37,6 +37,8 @@ integration_partner_groups: - dialcodeUser - appAdmin - appUpdate + - courseUser + - contentUser implementaion_user_groups: - contentAdmin From 5e69423613badb889d2e6d10d5c6e8dd925a9e9c Mon Sep 17 00:00:00 2001 From: S M Y Date: Mon, 17 Sep 2018 15:54:07 +0530 Subject: [PATCH 0118/1345] Issue #239 proxy: changing proxy assets url for vendors to point to ekstep --- ansible/roles/stack-proxy/defaults/main.yml | 2 ++ ansible/roles/stack-proxy/templates/proxy-default.conf | 9 +++++---- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/ansible/roles/stack-proxy/defaults/main.yml b/ansible/roles/stack-proxy/defaults/main.yml index de195435c3..876832f828 100644 --- a/ansible/roles/stack-proxy/defaults/main.yml +++ b/ansible/roles/stack-proxy/defaults/main.yml @@ -25,3 +25,5 @@ prometheus_alertmanager_route_prefix: alertmanager ekstep_s3_env: "{{sunbird_env}}" registry_url: "{{proto}}://{{proxy_server_name}}/registry" ep_es_host: + +upstream_url: "ekstep-public-{{ekstep_s3_env}}.s3-ap-south-1.amazonaws.com" diff --git a/ansible/roles/stack-proxy/templates/proxy-default.conf b/ansible/roles/stack-proxy/templates/proxy-default.conf index 494555be68..7e5a237d50 100644 --- a/ansible/roles/stack-proxy/templates/proxy-default.conf +++ b/ansible/roles/stack-proxy/templates/proxy-default.conf @@ -218,11 +218,12 @@ server { return 200; } - set $azure_bucket "sunbird{{sunbird_blob_env}}.blob.core.windows.net"; + # set $azure_bucket "sunbird{{sunbird_blob_env}}.blob.core.windows.net"; + # upstream_url: azure.nt/container_name + set $bucket "{{upstream_url}}"; set $url_full '$1'; - set $container_name "sunbird-content-{{sunbird_blob_env}}"; proxy_http_version 1.1; - proxy_set_header Host $azure_bucket; + proxy_set_header Host $bucket; proxy_set_header Authorization ''; proxy_hide_header Access-Control-Allow-Origin; proxy_hide_header Access-Control-Allow-Methods; @@ -234,7 +235,7 @@ server { proxy_intercept_errors on; add_header Access-Control-Allow-Origin "*"; add_header Access-Control-Allow-Methods GET; - proxy_pass https://$azure_bucket/$container_name/$url_full; + proxy_pass https://$bucket/$url_full; } From ec1c8c97102466e0b0354bcf066e3b636cb65bab Mon Sep 17 00:00:00 2001 From: S M Y Date: Mon, 17 Sep 2018 15:54:07 +0530 Subject: [PATCH 0119/1345] Issue #239 proxy: changing proxy assets url for vendors to point to ekstep --- ansible/roles/stack-proxy/defaults/main.yml | 2 ++ ansible/roles/stack-proxy/templates/proxy-default.conf | 9 +++++---- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/ansible/roles/stack-proxy/defaults/main.yml b/ansible/roles/stack-proxy/defaults/main.yml index d4168fe8f6..5bcfad612e 100644 --- a/ansible/roles/stack-proxy/defaults/main.yml +++ b/ansible/roles/stack-proxy/defaults/main.yml @@ -28,3 +28,5 @@ prometheus_alertmanager_route_prefix: alertmanager ekstep_s3_env: "{{sunbird_env}}" registry_url: "{{proto}}://{{proxy_server_name}}/registry" ep_es_host: + +upstream_url: "ekstep-public-{{ekstep_s3_env}}.s3-ap-south-1.amazonaws.com" diff --git a/ansible/roles/stack-proxy/templates/proxy-default.conf b/ansible/roles/stack-proxy/templates/proxy-default.conf index 494555be68..7e5a237d50 100644 --- a/ansible/roles/stack-proxy/templates/proxy-default.conf +++ b/ansible/roles/stack-proxy/templates/proxy-default.conf @@ -218,11 +218,12 @@ server { return 200; } - set $azure_bucket "sunbird{{sunbird_blob_env}}.blob.core.windows.net"; + # set $azure_bucket "sunbird{{sunbird_blob_env}}.blob.core.windows.net"; + # upstream_url: azure.nt/container_name + set $bucket "{{upstream_url}}"; set $url_full '$1'; - set $container_name "sunbird-content-{{sunbird_blob_env}}"; proxy_http_version 1.1; - proxy_set_header Host $azure_bucket; + proxy_set_header Host $bucket; proxy_set_header Authorization ''; proxy_hide_header Access-Control-Allow-Origin; proxy_hide_header Access-Control-Allow-Methods; @@ -234,7 +235,7 @@ server { proxy_intercept_errors on; add_header Access-Control-Allow-Origin "*"; add_header Access-Control-Allow-Methods GET; - proxy_pass https://$azure_bucket/$container_name/$url_full; + proxy_pass https://$bucket/$url_full; } From f233e3f4f90ececbbe828ba3448eeb481f41f60c Mon Sep 17 00:00:00 2001 From: S M Y Date: Mon, 17 Sep 2018 16:30:25 +0530 Subject: [PATCH 0120/1345] Issue #241 es: elastic-backup failure due to curator cache issue --- ansible/roles/es-curator/tasks/main.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/ansible/roles/es-curator/tasks/main.yml b/ansible/roles/es-curator/tasks/main.yml index 76bada5079..057331521f 100644 --- a/ansible/roles/es-curator/tasks/main.yml +++ b/ansible/roles/es-curator/tasks/main.yml @@ -7,3 +7,4 @@ - name: Install elasticsearch curator apt: name: elasticsearch-curator={{ es_curator_version }} + force: yes From bbd8d7ac2f8778cf319034823e5ff4e510a979f1 Mon Sep 17 00:00:00 2001 From: S M Y Date: Mon, 17 Sep 2018 16:30:25 +0530 Subject: [PATCH 0121/1345] Issue #241 es: elastic-backup failure due to curator cache issue --- ansible/roles/es-curator/tasks/main.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/ansible/roles/es-curator/tasks/main.yml b/ansible/roles/es-curator/tasks/main.yml index 76bada5079..057331521f 100644 --- a/ansible/roles/es-curator/tasks/main.yml +++ b/ansible/roles/es-curator/tasks/main.yml @@ -7,3 +7,4 @@ - name: Install elasticsearch curator apt: name: elasticsearch-curator={{ es_curator_version }} + force: yes From 88979cecb2557152e76840cc40965b7fcb059ada Mon Sep 17 00:00:00 2001 From: S M Y Date: Mon, 17 Sep 2018 16:45:44 +0530 Subject: [PATCH 0122/1345] Issue #241 es: elastic-backup failure due to curator plugin debug --- ansible/roles/es-curator/tasks/main.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ansible/roles/es-curator/tasks/main.yml b/ansible/roles/es-curator/tasks/main.yml index 057331521f..c4a8bacee7 100644 --- a/ansible/roles/es-curator/tasks/main.yml +++ b/ansible/roles/es-curator/tasks/main.yml @@ -4,6 +4,9 @@ - name: Add curator {{ es_curator_major_version }} repo apt_repository: repo='deb [arch=amd64] http://packages.elastic.co/curator/{{ es_curator_major_version }}/debian stable main' state=present update_cache=yes +- debug: + msg: "{{ es_curator_version }}" + - name: Install elasticsearch curator apt: name: elasticsearch-curator={{ es_curator_version }} From 1f4e92a2f1cf2a01ece3d78e2fe4658096003df9 Mon Sep 17 00:00:00 2001 From: S M Y Date: Mon, 17 Sep 2018 16:45:44 +0530 Subject: [PATCH 0123/1345] Issue #241 es: elastic-backup failure due to curator plugin debug --- ansible/roles/es-curator/tasks/main.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ansible/roles/es-curator/tasks/main.yml b/ansible/roles/es-curator/tasks/main.yml index 057331521f..c4a8bacee7 100644 --- a/ansible/roles/es-curator/tasks/main.yml +++ b/ansible/roles/es-curator/tasks/main.yml @@ -4,6 +4,9 @@ - name: Add curator {{ es_curator_major_version }} repo apt_repository: repo='deb [arch=amd64] http://packages.elastic.co/curator/{{ es_curator_major_version }}/debian stable main' state=present update_cache=yes +- debug: + msg: "{{ es_curator_version }}" + - name: Install elasticsearch curator apt: name: elasticsearch-curator={{ es_curator_version }} From e1d57a79d6d09baeb2b2f2f8629723967f14d2dd Mon Sep 17 00:00:00 2001 From: S M Y Date: Mon, 17 Sep 2018 16:51:53 +0530 Subject: [PATCH 0124/1345] Issue #241 es: elastic-backup failure due to curator plugin debug --- ansible/roles/es-curator/tasks/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/es-curator/tasks/main.yml b/ansible/roles/es-curator/tasks/main.yml index c4a8bacee7..28416868d6 100644 --- a/ansible/roles/es-curator/tasks/main.yml +++ b/ansible/roles/es-curator/tasks/main.yml @@ -5,7 +5,7 @@ apt_repository: repo='deb [arch=amd64] http://packages.elastic.co/curator/{{ es_curator_major_version }}/debian stable main' state=present update_cache=yes - debug: - msg: "{{ es_curator_version }}" + var: es_curator_version - name: Install elasticsearch curator apt: From ca4c2af87e707faa7f18579b93238ebf5ea53674 Mon Sep 17 00:00:00 2001 From: S M Y Date: Mon, 17 Sep 2018 16:57:22 +0530 Subject: [PATCH 0125/1345] Issue #241 es: elastic-backup failure due to curator plugin version --- ansible/roles/es-curator/defaults/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/es-curator/defaults/main.yml b/ansible/roles/es-curator/defaults/main.yml index f97ed3a699..c013f5d137 100644 --- a/ansible/roles/es-curator/defaults/main.yml +++ b/ansible/roles/es-curator/defaults/main.yml @@ -2,4 +2,4 @@ # es_curator_version: 3.4.1-1 es_curator_major_version: 5 -es_curator_version: 5.2.0 +es_curator_version: 5.5.4 From 4146f1cb1b32ad53304966f2644046bd5523a799 Mon Sep 17 00:00:00 2001 From: S M Y Date: Mon, 17 Sep 2018 17:06:59 +0530 Subject: [PATCH 0126/1345] Issue #241 es: elastic-backup failure due to curator plugin version --- ansible/roles/es-curator/defaults/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/es-curator/defaults/main.yml b/ansible/roles/es-curator/defaults/main.yml index c013f5d137..f97ed3a699 100644 --- a/ansible/roles/es-curator/defaults/main.yml +++ b/ansible/roles/es-curator/defaults/main.yml @@ -2,4 +2,4 @@ # es_curator_version: 3.4.1-1 es_curator_major_version: 5 -es_curator_version: 5.5.4 +es_curator_version: 5.2.0 From 8c9ea93512a97561a0838730025ca845c671820a Mon Sep 17 00:00:00 2001 From: S M Y Date: Mon, 17 Sep 2018 17:08:28 +0530 Subject: [PATCH 0127/1345] Issue #241 es: updating cache after installing curator --- ansible/roles/es-curator/tasks/main.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/ansible/roles/es-curator/tasks/main.yml b/ansible/roles/es-curator/tasks/main.yml index 28416868d6..fb7f63479d 100644 --- a/ansible/roles/es-curator/tasks/main.yml +++ b/ansible/roles/es-curator/tasks/main.yml @@ -11,3 +11,4 @@ apt: name: elasticsearch-curator={{ es_curator_version }} force: yes + update_cache: yes From 82f250b0ef7674fba3ef2a84dfdad6e18115c2ef Mon Sep 17 00:00:00 2001 From: S M Y Date: Mon, 17 Sep 2018 17:44:03 +0530 Subject: [PATCH 0128/1345] Issue #241 es: upgradedes-curator version --- ansible/roles/es-curator/defaults/main.yml | 2 +- ansible/roles/es5-snapshot-purge/meta/main.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ansible/roles/es-curator/defaults/main.yml b/ansible/roles/es-curator/defaults/main.yml index f97ed3a699..c013f5d137 100644 --- a/ansible/roles/es-curator/defaults/main.yml +++ b/ansible/roles/es-curator/defaults/main.yml @@ -2,4 +2,4 @@ # es_curator_version: 3.4.1-1 es_curator_major_version: 5 -es_curator_version: 5.2.0 +es_curator_version: 5.5.4 diff --git a/ansible/roles/es5-snapshot-purge/meta/main.yml b/ansible/roles/es5-snapshot-purge/meta/main.yml index eeb102c21e..cfdae4de83 100644 --- a/ansible/roles/es5-snapshot-purge/meta/main.yml +++ b/ansible/roles/es5-snapshot-purge/meta/main.yml @@ -1,3 +1,3 @@ --- dependencies: - - { role: es-curator, es_curator_major_version: 5, es_curator_version: 5.2.0 } \ No newline at end of file + - { role: es-curator, es_curator_major_version: 5, es_curator_version: 5.5.4 } From 736bbcb5ea86dc1a3d2ce9b051598aa2e707fa92 Mon Sep 17 00:00:00 2001 From: S M Y Date: Mon, 17 Sep 2018 17:50:25 +0530 Subject: [PATCH 0129/1345] Issue #241 es: removed unwanted curator cache update --- ansible/roles/es-curator/tasks/main.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/ansible/roles/es-curator/tasks/main.yml b/ansible/roles/es-curator/tasks/main.yml index fb7f63479d..28416868d6 100644 --- a/ansible/roles/es-curator/tasks/main.yml +++ b/ansible/roles/es-curator/tasks/main.yml @@ -11,4 +11,3 @@ apt: name: elasticsearch-curator={{ es_curator_version }} force: yes - update_cache: yes From 797b003f2af973ad32d1c3177a5344e90b537e5b Mon Sep 17 00:00:00 2001 From: S M Y Date: Mon, 17 Sep 2018 17:50:48 +0530 Subject: [PATCH 0130/1345] Issue #241 es: removed debug command --- ansible/roles/es-curator/tasks/main.yml | 3 --- 1 file changed, 3 deletions(-) diff --git a/ansible/roles/es-curator/tasks/main.yml b/ansible/roles/es-curator/tasks/main.yml index 28416868d6..057331521f 100644 --- a/ansible/roles/es-curator/tasks/main.yml +++ b/ansible/roles/es-curator/tasks/main.yml @@ -4,9 +4,6 @@ - name: Add curator {{ es_curator_major_version }} repo apt_repository: repo='deb [arch=amd64] http://packages.elastic.co/curator/{{ es_curator_major_version }}/debian stable main' state=present update_cache=yes -- debug: - var: es_curator_version - - name: Install elasticsearch curator apt: name: elasticsearch-curator={{ es_curator_version }} From 1b4b0740a65be7f5b8c4f11b38c3416f31e71cbd Mon Sep 17 00:00:00 2001 From: S M Y Date: Tue, 18 Sep 2018 10:40:36 +0530 Subject: [PATCH 0131/1345] Issue #000 monitor: fixing monitoring for managed postgres server --- ansible/roles/stack-monitor/templates/stack-monitor.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/ansible/roles/stack-monitor/templates/stack-monitor.yml b/ansible/roles/stack-monitor/templates/stack-monitor.yml index 41449a27da..ed91d56569 100644 --- a/ansible/roles/stack-monitor/templates/stack-monitor.yml +++ b/ansible/roles/stack-monitor/templates/stack-monitor.yml @@ -159,6 +159,7 @@ services: memory: "{{ elasticsearch_exporter_limit_memory }}" {% endif %} +{% if groups['postgresql-master'] %} master_postgres_exporter: image: wrouesnel/postgres_exporter:v0.2.2 ports: @@ -178,9 +179,9 @@ services: memory: "{{ postgres_exporter_reservation_memory }}" limits: memory: "{{ postgres_exporter_limit_memory }}" +{% endif %} - - {% if groups['postgresql-slave'][0] is defined %} + {% if groups['postgresql-slave'][0] %} # This empty line ensures indentation is correct after ansible jinja2 template is materialized slave_postgres_exporter: image: wrouesnel/postgres_exporter:v0.2.2 From 49651074300436b2357a8f8de79d22301df01618 Mon Sep 17 00:00:00 2001 From: S M Y Date: Tue, 18 Sep 2018 10:52:04 +0530 Subject: [PATCH 0132/1345] Issue #000 monitor: fixing monitoring for managed postgres server --- ansible/roles/stack-monitor/templates/stack-monitor.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ansible/roles/stack-monitor/templates/stack-monitor.yml b/ansible/roles/stack-monitor/templates/stack-monitor.yml index ed91d56569..0d75d6d9d1 100644 --- a/ansible/roles/stack-monitor/templates/stack-monitor.yml +++ b/ansible/roles/stack-monitor/templates/stack-monitor.yml @@ -159,7 +159,7 @@ services: memory: "{{ elasticsearch_exporter_limit_memory }}" {% endif %} -{% if groups['postgresql-master'] %} +{% if groups['postgresql-master'][0] is defined %} master_postgres_exporter: image: wrouesnel/postgres_exporter:v0.2.2 ports: @@ -181,7 +181,7 @@ services: memory: "{{ postgres_exporter_limit_memory }}" {% endif %} - {% if groups['postgresql-slave'][0] %} + {% if groups['postgresql-slave'][0] is defined %} # This empty line ensures indentation is correct after ansible jinja2 template is materialized slave_postgres_exporter: image: wrouesnel/postgres_exporter:v0.2.2 From c9bd69421768e30a852591c6ba7278f7407b9d5c Mon Sep 17 00:00:00 2001 From: S M Y Date: Tue, 18 Sep 2018 11:05:22 +0530 Subject: [PATCH 0133/1345] Issue #000 monitor: fixing monitoring for managed postgres server --- ansible/roles/stack-monitor/templates/stack-monitor.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ansible/roles/stack-monitor/templates/stack-monitor.yml b/ansible/roles/stack-monitor/templates/stack-monitor.yml index 0d75d6d9d1..a5f293f241 100644 --- a/ansible/roles/stack-monitor/templates/stack-monitor.yml +++ b/ansible/roles/stack-monitor/templates/stack-monitor.yml @@ -159,7 +159,7 @@ services: memory: "{{ elasticsearch_exporter_limit_memory }}" {% endif %} -{% if groups['postgresql-master'][0] is defined %} +{% if groups['postgresql-master'] is defined %} master_postgres_exporter: image: wrouesnel/postgres_exporter:v0.2.2 ports: @@ -181,7 +181,7 @@ services: memory: "{{ postgres_exporter_limit_memory }}" {% endif %} - {% if groups['postgresql-slave'][0] is defined %} + {% if groups['postgresql-slave'] is defined %} # This empty line ensures indentation is correct after ansible jinja2 template is materialized slave_postgres_exporter: image: wrouesnel/postgres_exporter:v0.2.2 From b0f7b908967a2270c4ada882dc16156fe21f0863 Mon Sep 17 00:00:00 2001 From: S M Y Date: Tue, 18 Sep 2018 11:49:26 +0530 Subject: [PATCH 0134/1345] Issue #000 proxy: oauth proxy port updation --- ansible/roles/stack-proxy/templates/proxy-default.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/stack-proxy/templates/proxy-default.conf b/ansible/roles/stack-proxy/templates/proxy-default.conf index 7e5a237d50..a90014278e 100644 --- a/ansible/roles/stack-proxy/templates/proxy-default.conf +++ b/ansible/roles/stack-proxy/templates/proxy-default.conf @@ -118,7 +118,7 @@ server { } location /pipeline-dashboard/ { - set $target http://{{ ep_es_host}}:5601; + set $target http://{{ ep_es_host}}:3000; rewrite ^/pipeline-dashboard/(.*) /$1 break; proxy_pass $target; proxy_set_header Host $host; From 68cd95f994164eab7f13723c50543b278f5e71cd Mon Sep 17 00:00:00 2001 From: S M Y Date: Tue, 18 Sep 2018 11:55:19 +0530 Subject: [PATCH 0135/1345] Issue #000 postgres: postgres managed server issue --- ansible/roles/stack-monitor/templates/prometheus.yml | 4 ++++ ansible/roles/stack-monitor/templates/stack-monitor.yml | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/ansible/roles/stack-monitor/templates/prometheus.yml b/ansible/roles/stack-monitor/templates/prometheus.yml index 6809eb443b..bddd1c6314 100644 --- a/ansible/roles/stack-monitor/templates/prometheus.yml +++ b/ansible/roles/stack-monitor/templates/prometheus.yml @@ -10,7 +10,9 @@ rule_files: - '/etc/prometheus-rules/alertrules.es' - '/etc/prometheus-rules/alertrules.logs' - '/etc/prometheus-rules/alertrules.backups' +{% if groups['postgresql-master'] is defined %} - '/etc/prometheus-rules/alertrules.postgresql' +{% endif %} - '/etc/prometheus-rules/alertrules.kong' - '/etc/prometheus-rules/alertrules.services' - '/etc/prometheus-rules/alertrules.docker' @@ -61,9 +63,11 @@ scrape_configs: static_configs: - targets: ['monitor_log_elasticsearch_exporter:9108'] +{% if groups['postgresql-master'] is defined %} - job_name: 'master-postgres-exporter' static_configs: - targets: ['monitor_master_postgres_exporter:9187'] +{% endif %} {% if groups['postgresql-slave'][0] is defined %} # This empty line ensures indentation is correct after ansible jinja2 template is materialized diff --git a/ansible/roles/stack-monitor/templates/stack-monitor.yml b/ansible/roles/stack-monitor/templates/stack-monitor.yml index a5f293f241..024cd52529 100644 --- a/ansible/roles/stack-monitor/templates/stack-monitor.yml +++ b/ansible/roles/stack-monitor/templates/stack-monitor.yml @@ -25,8 +25,10 @@ services: target: /etc/prometheus-rules/alertrules.logs - source: alertrules.backups target: /etc/prometheus-rules/alertrules.backups +{% if groups['postgresql-master'] is defined %} - source: alertrules.postgresql target: /etc/prometheus-rules/alertrules.postgresql +{% endif %} - source: alertrules.services target: /etc/prometheus-rules/alertrules.services - source: alertrules.kong @@ -362,8 +364,10 @@ configs: external: true alertrules.backups: external: true +{% if groups['postgresql-master'] is defined %} alertrules.postgresql: external: true +{% endif %} alertrules.kong: external: true alertrules.services: From 7438ca994a74ad8f999979fecc3c17950dc93af4 Mon Sep 17 00:00:00 2001 From: S M Y Date: Tue, 18 Sep 2018 11:59:51 +0530 Subject: [PATCH 0136/1345] Issue #000 postgres: postgres managed server issue --- ansible/roles/stack-monitor/defaults/main.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ansible/roles/stack-monitor/defaults/main.yml b/ansible/roles/stack-monitor/defaults/main.yml index cf6a2c6277..264a0f9b01 100644 --- a/ansible/roles/stack-monitor/defaults/main.yml +++ b/ansible/roles/stack-monitor/defaults/main.yml @@ -63,8 +63,10 @@ monitor_config_templates: - prometheus.yml - alertmanagerconfig.yml - blackboxconfig.yml +{% if groups['postgresql-master'] is defined %} - postgresmasterqueries.yml - postgresslavequeries.yml +{% endif %} - statsd_mapping.yml - kong_cluster_exporter_config.yml - elasticsearch_snapshots_exporter_config.yml From 997e602d68a1164a602c9a21fb928d86301cbf77 Mon Sep 17 00:00:00 2001 From: kartish Date: Tue, 18 Sep 2018 13:00:58 +0530 Subject: [PATCH 0137/1345] Issue #167 fix: kibana dashboard port change --- ansible/roles/stack-proxy/templates/proxy-default.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/stack-proxy/templates/proxy-default.conf b/ansible/roles/stack-proxy/templates/proxy-default.conf index a90014278e..7e5a237d50 100644 --- a/ansible/roles/stack-proxy/templates/proxy-default.conf +++ b/ansible/roles/stack-proxy/templates/proxy-default.conf @@ -118,7 +118,7 @@ server { } location /pipeline-dashboard/ { - set $target http://{{ ep_es_host}}:3000; + set $target http://{{ ep_es_host}}:5601; rewrite ^/pipeline-dashboard/(.*) /$1 break; proxy_pass $target; proxy_set_header Host $host; From c58f0a2a3c5ac59d0988e074346f61caf3a8c769 Mon Sep 17 00:00:00 2001 From: S M Y Date: Tue, 18 Sep 2018 13:12:41 +0530 Subject: [PATCH 0138/1345] Issue #000 monitor: postgres managed server monitoring issue --- ansible/roles/stack-monitor/defaults/main.yml | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/ansible/roles/stack-monitor/defaults/main.yml b/ansible/roles/stack-monitor/defaults/main.yml index 264a0f9b01..e407ebbb8c 100644 --- a/ansible/roles/stack-monitor/defaults/main.yml +++ b/ansible/roles/stack-monitor/defaults/main.yml @@ -63,10 +63,8 @@ monitor_config_templates: - prometheus.yml - alertmanagerconfig.yml - blackboxconfig.yml -{% if groups['postgresql-master'] is defined %} - - postgresmasterqueries.yml - - postgresslavequeries.yml -{% endif %} + - {{ postgresmasterqueries.yml if groups['postgresql-master'] }} + - {{ postgresslavequeries.yml if groups['postgresql-master'] }} - statsd_mapping.yml - kong_cluster_exporter_config.yml - elasticsearch_snapshots_exporter_config.yml From d72b2e34b34e117f32a63547f8a65ec492ebdff0 Mon Sep 17 00:00:00 2001 From: S M Y Date: Tue, 18 Sep 2018 13:15:40 +0530 Subject: [PATCH 0139/1345] Issue #000 monitor: postgres managed server monitoring issue --- ansible/roles/stack-monitor/defaults/main.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ansible/roles/stack-monitor/defaults/main.yml b/ansible/roles/stack-monitor/defaults/main.yml index e407ebbb8c..b6a8d3a029 100644 --- a/ansible/roles/stack-monitor/defaults/main.yml +++ b/ansible/roles/stack-monitor/defaults/main.yml @@ -63,8 +63,8 @@ monitor_config_templates: - prometheus.yml - alertmanagerconfig.yml - blackboxconfig.yml - - {{ postgresmasterqueries.yml if groups['postgresql-master'] }} - - {{ postgresslavequeries.yml if groups['postgresql-master'] }} + {{- postgresmasterqueries.yml if groups['postgresql-master'] }} + {{- postgresslavequeries.yml if groups['postgresql-master'] }} - statsd_mapping.yml - kong_cluster_exporter_config.yml - elasticsearch_snapshots_exporter_config.yml From 44f104acc177524bff1381b70d156b1a0fcde1dd Mon Sep 17 00:00:00 2001 From: S M Y Date: Tue, 18 Sep 2018 14:19:29 +0530 Subject: [PATCH 0140/1345] Issue #000 monitor: postgres managed server monitoring issue --- ansible/roles/stack-monitor/tasks/main.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ansible/roles/stack-monitor/tasks/main.yml b/ansible/roles/stack-monitor/tasks/main.yml index 2dc838821e..8c0313c670 100644 --- a/ansible/roles/stack-monitor/tasks/main.yml +++ b/ansible/roles/stack-monitor/tasks/main.yml @@ -19,6 +19,7 @@ - name: Save prometheus config {{ item }} template: src={{ item }} dest="{{ monitor_config_files_dest_dir }}/{{ item }}" mode=0644 with_items: "{{ monitor_config_templates }}" + when: (item.value == postgresmasterqueries.yml and groups['postgres-master'] is defined) or (item.value == postgresslavequeries.yml and groups['postgres-master'] is defined) or (item.value != postgresmasterqueries.yml or item.value != postgresslavequeries.yml) - name: Remove monitor stack shell: "docker stack rm monitor" @@ -27,11 +28,13 @@ - name: Remove old docker config {{ item }} shell: "docker config rm {{ item }}" with_items: "{{ monitor_config_templates }}" + when: (item.value == postgresmasterqueries.yml and groups['postgres-master'] is defined) or (item.value == postgresslavequeries.yml and groups['postgres-master'] is defined) or (item.value != postgresmasterqueries.yml or item.value != postgresslavequeries.yml) ignore_errors: yes - name: Save docker config {{ item }} shell: "docker config create {{ item }} {{ monitor_config_files_dest_dir }}/{{ item }}" with_items: "{{ monitor_config_templates }}" + when: (item.value == postgresmasterqueries.yml and groups['postgres-master'] is defined) or (item.value == postgresslavequeries.yml and groups['postgres-master'] is defined) or (item.value != postgresmasterqueries.yml or item.value != postgresslavequeries.yml) #ignore_errors: yes - name: Deploy stack From f77334471e0b35b846444afb6e64184a4ef22961 Mon Sep 17 00:00:00 2001 From: S M Y Date: Tue, 18 Sep 2018 14:23:04 +0530 Subject: [PATCH 0141/1345] Issue #000 monitor: postgres managed server monitoring issue --- ansible/roles/stack-monitor/defaults/main.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ansible/roles/stack-monitor/defaults/main.yml b/ansible/roles/stack-monitor/defaults/main.yml index b6a8d3a029..c98c501716 100644 --- a/ansible/roles/stack-monitor/defaults/main.yml +++ b/ansible/roles/stack-monitor/defaults/main.yml @@ -63,8 +63,8 @@ monitor_config_templates: - prometheus.yml - alertmanagerconfig.yml - blackboxconfig.yml - {{- postgresmasterqueries.yml if groups['postgresql-master'] }} - {{- postgresslavequeries.yml if groups['postgresql-master'] }} + - postgresmasterqueries.yml if groups['postgresql-master'] + - postgresslavequeries.yml if groups['postgresql-master'] - statsd_mapping.yml - kong_cluster_exporter_config.yml - elasticsearch_snapshots_exporter_config.yml From 2463478986c200a9e4d44483c3c21ff05100407b Mon Sep 17 00:00:00 2001 From: S M Y Date: Tue, 18 Sep 2018 14:28:21 +0530 Subject: [PATCH 0142/1345] Issue #000 monitor: postgres managed server monitoring issue --- ansible/roles/stack-monitor/tasks/main.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/ansible/roles/stack-monitor/tasks/main.yml b/ansible/roles/stack-monitor/tasks/main.yml index 8c0313c670..d811b63064 100644 --- a/ansible/roles/stack-monitor/tasks/main.yml +++ b/ansible/roles/stack-monitor/tasks/main.yml @@ -16,10 +16,10 @@ - name: Save stack file template: src=stack-monitor.yml dest=/opt/docker/stacks/monitor/stack/monitor.yml mode=0644 -- name: Save prometheus config {{ item }} - template: src={{ item }} dest="{{ monitor_config_files_dest_dir }}/{{ item }}" mode=0644 +- name: Save prometheus config "{{ item }}" + template: src="{{ item }}" dest="{{ monitor_config_files_dest_dir }}/{{ item }}" mode=0644 with_items: "{{ monitor_config_templates }}" - when: (item.value == postgresmasterqueries.yml and groups['postgres-master'] is defined) or (item.value == postgresslavequeries.yml and groups['postgres-master'] is defined) or (item.value != postgresmasterqueries.yml or item.value != postgresslavequeries.yml) + #when: (item.value == postgresmasterqueries.yml and groups['postgres-master'] is defined) or (item.value == postgresslavequeries.yml and groups['postgres-master'] is defined) or (item.value != postgresmasterqueries.yml or item.value != postgresslavequeries.yml) - name: Remove monitor stack shell: "docker stack rm monitor" @@ -28,13 +28,13 @@ - name: Remove old docker config {{ item }} shell: "docker config rm {{ item }}" with_items: "{{ monitor_config_templates }}" - when: (item.value == postgresmasterqueries.yml and groups['postgres-master'] is defined) or (item.value == postgresslavequeries.yml and groups['postgres-master'] is defined) or (item.value != postgresmasterqueries.yml or item.value != postgresslavequeries.yml) + #when: (item.value == postgresmasterqueries.yml and groups['postgres-master'] is defined) or (item.value == postgresslavequeries.yml and groups['postgres-master'] is defined) or (item.value != postgresmasterqueries.yml or item.value != postgresslavequeries.yml) ignore_errors: yes - name: Save docker config {{ item }} shell: "docker config create {{ item }} {{ monitor_config_files_dest_dir }}/{{ item }}" with_items: "{{ monitor_config_templates }}" - when: (item.value == postgresmasterqueries.yml and groups['postgres-master'] is defined) or (item.value == postgresslavequeries.yml and groups['postgres-master'] is defined) or (item.value != postgresmasterqueries.yml or item.value != postgresslavequeries.yml) + #when: (item.value == postgresmasterqueries.yml and groups['postgres-master'] is defined) or (item.value == postgresslavequeries.yml and groups['postgres-master'] is defined) or (item.value != postgresmasterqueries.yml or item.value != postgresslavequeries.yml) #ignore_errors: yes - name: Deploy stack From 918248b621865900188c377f08a3cc6f07a7a3b2 Mon Sep 17 00:00:00 2001 From: S M Y Date: Tue, 18 Sep 2018 14:29:13 +0530 Subject: [PATCH 0143/1345] Issue #000 monitor: postgres managed server monitoring issue --- ansible/roles/stack-monitor/tasks/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/stack-monitor/tasks/main.yml b/ansible/roles/stack-monitor/tasks/main.yml index d811b63064..fb708ad082 100644 --- a/ansible/roles/stack-monitor/tasks/main.yml +++ b/ansible/roles/stack-monitor/tasks/main.yml @@ -19,7 +19,7 @@ - name: Save prometheus config "{{ item }}" template: src="{{ item }}" dest="{{ monitor_config_files_dest_dir }}/{{ item }}" mode=0644 with_items: "{{ monitor_config_templates }}" - #when: (item.value == postgresmasterqueries.yml and groups['postgres-master'] is defined) or (item.value == postgresslavequeries.yml and groups['postgres-master'] is defined) or (item.value != postgresmasterqueries.yml or item.value != postgresslavequeries.yml) + when: (item.value == postgresmasterqueries.yml and groups['postgres-master'] is defined) or (item.value == postgresslavequeries.yml and groups['postgres-master'] is defined) or (item.value != postgresmasterqueries.yml or item.value != postgresslavequeries.yml) - name: Remove monitor stack shell: "docker stack rm monitor" From 8e70d60a18ac95cfa99db8686ee74f03209662ce Mon Sep 17 00:00:00 2001 From: S M Y Date: Tue, 18 Sep 2018 14:32:06 +0530 Subject: [PATCH 0144/1345] Issue #000 monitor: postgres managed server monitoring issue --- ansible/roles/stack-monitor/tasks/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/stack-monitor/tasks/main.yml b/ansible/roles/stack-monitor/tasks/main.yml index fb708ad082..ffb89e33fa 100644 --- a/ansible/roles/stack-monitor/tasks/main.yml +++ b/ansible/roles/stack-monitor/tasks/main.yml @@ -19,7 +19,7 @@ - name: Save prometheus config "{{ item }}" template: src="{{ item }}" dest="{{ monitor_config_files_dest_dir }}/{{ item }}" mode=0644 with_items: "{{ monitor_config_templates }}" - when: (item.value == postgresmasterqueries.yml and groups['postgres-master'] is defined) or (item.value == postgresslavequeries.yml and groups['postgres-master'] is defined) or (item.value != postgresmasterqueries.yml or item.value != postgresslavequeries.yml) + when: (item.value == "postgresmasterqueries.yml" and groups['postgres-master'] is defined) or (item.value == "postgresslavequeries.yml" and groups['postgres-master'] is defined) or (item.value != "postgresmasterqueries.yml" or item.value != "postgresslavequeries.yml") - name: Remove monitor stack shell: "docker stack rm monitor" From 267bab36cad1d63c60f9b56ad3dd449abd30b4e8 Mon Sep 17 00:00:00 2001 From: S M Y Date: Tue, 18 Sep 2018 14:48:02 +0530 Subject: [PATCH 0145/1345] Issue #000 monitor: postgres managed server monitoring issue --- ansible/roles/stack-monitor/tasks/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/stack-monitor/tasks/main.yml b/ansible/roles/stack-monitor/tasks/main.yml index ffb89e33fa..676f6bfac0 100644 --- a/ansible/roles/stack-monitor/tasks/main.yml +++ b/ansible/roles/stack-monitor/tasks/main.yml @@ -18,7 +18,7 @@ - name: Save prometheus config "{{ item }}" template: src="{{ item }}" dest="{{ monitor_config_files_dest_dir }}/{{ item }}" mode=0644 - with_items: "{{ monitor_config_templates }}" + with_items: monitor_config_templates when: (item.value == "postgresmasterqueries.yml" and groups['postgres-master'] is defined) or (item.value == "postgresslavequeries.yml" and groups['postgres-master'] is defined) or (item.value != "postgresmasterqueries.yml" or item.value != "postgresslavequeries.yml") - name: Remove monitor stack From 3ab39c31f3124f844df2e5226403cc82c9a68de1 Mon Sep 17 00:00:00 2001 From: S M Y Date: Tue, 18 Sep 2018 14:50:51 +0530 Subject: [PATCH 0146/1345] Issue #000 monitor: postgres managed server monitoring issue --- ansible/roles/stack-monitor/tasks/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/stack-monitor/tasks/main.yml b/ansible/roles/stack-monitor/tasks/main.yml index 676f6bfac0..ffb89e33fa 100644 --- a/ansible/roles/stack-monitor/tasks/main.yml +++ b/ansible/roles/stack-monitor/tasks/main.yml @@ -18,7 +18,7 @@ - name: Save prometheus config "{{ item }}" template: src="{{ item }}" dest="{{ monitor_config_files_dest_dir }}/{{ item }}" mode=0644 - with_items: monitor_config_templates + with_items: "{{ monitor_config_templates }}" when: (item.value == "postgresmasterqueries.yml" and groups['postgres-master'] is defined) or (item.value == "postgresslavequeries.yml" and groups['postgres-master'] is defined) or (item.value != "postgresmasterqueries.yml" or item.value != "postgresslavequeries.yml") - name: Remove monitor stack From 8c7940df31a2a10878943cc207a388603d46a865 Mon Sep 17 00:00:00 2001 From: S M Y Date: Tue, 18 Sep 2018 14:56:36 +0530 Subject: [PATCH 0147/1345] Issue #000 monitor: postgres managed server monitoring issue --- ansible/roles/stack-monitor/tasks/main.yml | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/ansible/roles/stack-monitor/tasks/main.yml b/ansible/roles/stack-monitor/tasks/main.yml index ffb89e33fa..0376e238e3 100644 --- a/ansible/roles/stack-monitor/tasks/main.yml +++ b/ansible/roles/stack-monitor/tasks/main.yml @@ -17,9 +17,13 @@ template: src=stack-monitor.yml dest=/opt/docker/stacks/monitor/stack/monitor.yml mode=0644 - name: Save prometheus config "{{ item }}" - template: src="{{ item }}" dest="{{ monitor_config_files_dest_dir }}/{{ item }}" mode=0644 - with_items: "{{ monitor_config_templates }}" - when: (item.value == "postgresmasterqueries.yml" and groups['postgres-master'] is defined) or (item.value == "postgresslavequeries.yml" and groups['postgres-master'] is defined) or (item.value != "postgresmasterqueries.yml" or item.value != "postgresslavequeries.yml") + template: + src="{{ item }}" + dest="{{ monitor_config_files_dest_dir }}/{{ item }}" + mode=0644 + with_items: + - "{{ monitor_config_templates }}" + #when: (item.value == "postgresmasterqueries.yml" and groups['postgres-master'] is defined) or (item.value == "postgresslavequeries.yml" and groups['postgres-master'] is defined) or (item.value != "postgresmasterqueries.yml" or item.value != "postgresslavequeries.yml") - name: Remove monitor stack shell: "docker stack rm monitor" From e1393baa206967024d645c744fe24ef00605eeac Mon Sep 17 00:00:00 2001 From: S M Y Date: Tue, 18 Sep 2018 15:13:02 +0530 Subject: [PATCH 0148/1345] Issue #000 monitor: postgres managed server monitoring issue --- ansible/roles/stack-monitor/tasks/main.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ansible/roles/stack-monitor/tasks/main.yml b/ansible/roles/stack-monitor/tasks/main.yml index 0376e238e3..ee1bc39cd5 100644 --- a/ansible/roles/stack-monitor/tasks/main.yml +++ b/ansible/roles/stack-monitor/tasks/main.yml @@ -23,7 +23,8 @@ mode=0644 with_items: - "{{ monitor_config_templates }}" - #when: (item.value == "postgresmasterqueries.yml" and groups['postgres-master'] is defined) or (item.value == "postgresslavequeries.yml" and groups['postgres-master'] is defined) or (item.value != "postgresmasterqueries.yml" or item.value != "postgresslavequeries.yml") + when: + - (item.value == ("postgresmasterqueries.yml" and groups['postgres-master'] is defined) or ("postgresslavequeries.yml" and groups['postgres-master'] is defined)) or (item.value != "postgresmasterqueries.yml") or (item.value != "postgresslavequeries.yml") - name: Remove monitor stack shell: "docker stack rm monitor" From 2d9de31c13e61a5eefeaad47f65f0454def02c59 Mon Sep 17 00:00:00 2001 From: S M Y Date: Tue, 18 Sep 2018 15:14:02 +0530 Subject: [PATCH 0149/1345] Issue #000 monitor: postgres managed server monitoring issue --- ansible/roles/stack-monitor/tasks/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/stack-monitor/tasks/main.yml b/ansible/roles/stack-monitor/tasks/main.yml index ee1bc39cd5..1f2599388e 100644 --- a/ansible/roles/stack-monitor/tasks/main.yml +++ b/ansible/roles/stack-monitor/tasks/main.yml @@ -16,7 +16,7 @@ - name: Save stack file template: src=stack-monitor.yml dest=/opt/docker/stacks/monitor/stack/monitor.yml mode=0644 -- name: Save prometheus config "{{ item }}" +- name: Save prometheus config template: src="{{ item }}" dest="{{ monitor_config_files_dest_dir }}/{{ item }}" From ebe06ecbb03172533c202f61c3bdafa73cd46ee6 Mon Sep 17 00:00:00 2001 From: S M Y Date: Tue, 18 Sep 2018 15:17:18 +0530 Subject: [PATCH 0150/1345] Issue #000 monitor: postgres managed server monitoring issue --- ansible/roles/stack-monitor/tasks/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/stack-monitor/tasks/main.yml b/ansible/roles/stack-monitor/tasks/main.yml index 1f2599388e..1eae717ca5 100644 --- a/ansible/roles/stack-monitor/tasks/main.yml +++ b/ansible/roles/stack-monitor/tasks/main.yml @@ -24,7 +24,7 @@ with_items: - "{{ monitor_config_templates }}" when: - - (item.value == ("postgresmasterqueries.yml" and groups['postgres-master'] is defined) or ("postgresslavequeries.yml" and groups['postgres-master'] is defined)) or (item.value != "postgresmasterqueries.yml") or (item.value != "postgresslavequeries.yml") + - (item.value == "postgresmasterqueries.yml" and groups['postgres-master'] is defined) or (item.value == "postgresslavequeries.yml" and groups['postgres-master'] is defined)) or (item.value != "postgresmasterqueries.yml") or (item.value != "postgresslavequeries.yml") - name: Remove monitor stack shell: "docker stack rm monitor" From ad833d15a0ebcf4c9aa943c98d795dc8a52e8570 Mon Sep 17 00:00:00 2001 From: S M Y Date: Tue, 18 Sep 2018 15:39:30 +0530 Subject: [PATCH 0151/1345] Issue #000 monitor: postgres managed server monitoring issue --- ansible/roles/stack-monitor/defaults/main.yml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/ansible/roles/stack-monitor/defaults/main.yml b/ansible/roles/stack-monitor/defaults/main.yml index c98c501716..b014bf05f5 100644 --- a/ansible/roles/stack-monitor/defaults/main.yml +++ b/ansible/roles/stack-monitor/defaults/main.yml @@ -63,8 +63,8 @@ monitor_config_templates: - prometheus.yml - alertmanagerconfig.yml - blackboxconfig.yml - - postgresmasterqueries.yml if groups['postgresql-master'] - - postgresslavequeries.yml if groups['postgresql-master'] + - postgresmasterqueries.yml + - postgresslavequeries.yml - statsd_mapping.yml - kong_cluster_exporter_config.yml - elasticsearch_snapshots_exporter_config.yml @@ -83,6 +83,9 @@ monitor_config_templates: - monitor_logstash_grok_patterns - jmx_httpserver.yml +monitor_config_templates_postgres: + - postgresmasterqueries.yml + - postgresslavequeries.yml devops_alerts_mailing_list: "{{ alerts_mailing_list }}" service_teams: From 60f2f5183a144caf5d730f4b915e503d985535e4 Mon Sep 17 00:00:00 2001 From: S M Y Date: Tue, 18 Sep 2018 15:46:07 +0530 Subject: [PATCH 0152/1345] Issue #000 monitor: postgres managed server monitoring issue --- ansible/roles/stack-monitor/defaults/main.yml | 3 +-- ansible/roles/stack-monitor/tasks/main.yml | 25 ++++++++++++++++--- 2 files changed, 22 insertions(+), 6 deletions(-) diff --git a/ansible/roles/stack-monitor/defaults/main.yml b/ansible/roles/stack-monitor/defaults/main.yml index b014bf05f5..c86d2b4551 100644 --- a/ansible/roles/stack-monitor/defaults/main.yml +++ b/ansible/roles/stack-monitor/defaults/main.yml @@ -63,8 +63,6 @@ monitor_config_templates: - prometheus.yml - alertmanagerconfig.yml - blackboxconfig.yml - - postgresmasterqueries.yml - - postgresslavequeries.yml - statsd_mapping.yml - kong_cluster_exporter_config.yml - elasticsearch_snapshots_exporter_config.yml @@ -86,6 +84,7 @@ monitor_config_templates: monitor_config_templates_postgres: - postgresmasterqueries.yml - postgresslavequeries.yml + devops_alerts_mailing_list: "{{ alerts_mailing_list }}" service_teams: diff --git a/ansible/roles/stack-monitor/tasks/main.yml b/ansible/roles/stack-monitor/tasks/main.yml index 1eae717ca5..1abe596a6b 100644 --- a/ansible/roles/stack-monitor/tasks/main.yml +++ b/ansible/roles/stack-monitor/tasks/main.yml @@ -16,15 +16,22 @@ - name: Save stack file template: src=stack-monitor.yml dest=/opt/docker/stacks/monitor/stack/monitor.yml mode=0644 -- name: Save prometheus config +- name: Save prometheus config {{ item }} template: src="{{ item }}" dest="{{ monitor_config_files_dest_dir }}/{{ item }}" mode=0644 with_items: - "{{ monitor_config_templates }}" - when: - - (item.value == "postgresmasterqueries.yml" and groups['postgres-master'] is defined) or (item.value == "postgresslavequeries.yml" and groups['postgres-master'] is defined)) or (item.value != "postgresmasterqueries.yml") or (item.value != "postgresslavequeries.yml") + +- name: Save Postgres config {{ item }} + template: + src="{{ item }}" + dest="{{ monitor_config_files_dest_dir }}/{{ item }}" + mode=0644 + with_items: + - "{{ monitor_config_templates_postgres }}" + when: groups['postgres-master'] is defined - name: Remove monitor stack shell: "docker stack rm monitor" @@ -33,15 +40,25 @@ - name: Remove old docker config {{ item }} shell: "docker config rm {{ item }}" with_items: "{{ monitor_config_templates }}" - #when: (item.value == postgresmasterqueries.yml and groups['postgres-master'] is defined) or (item.value == postgresslavequeries.yml and groups['postgres-master'] is defined) or (item.value != postgresmasterqueries.yml or item.value != postgresslavequeries.yml) ignore_errors: yes +- name: Remove old docker config for postgres {{ item }} + shell: "docker config rm {{ item }}" + with_items: "{{ monitor_config_templates_postgres }}" + ignore_errors: yes + when: groups['postgres-master'] is defined + - name: Save docker config {{ item }} shell: "docker config create {{ item }} {{ monitor_config_files_dest_dir }}/{{ item }}" with_items: "{{ monitor_config_templates }}" #when: (item.value == postgresmasterqueries.yml and groups['postgres-master'] is defined) or (item.value == postgresslavequeries.yml and groups['postgres-master'] is defined) or (item.value != postgresmasterqueries.yml or item.value != postgresslavequeries.yml) #ignore_errors: yes +- name: Save docker config for postgres {{ item }} + shell: "docker config create {{ item }} {{ monitor_config_files_dest_dir }}/{{ item }}" + with_items: "{{ monitor_config_templates_postgres }}" + when: groups['postgres-master'] is defined + - name: Deploy stack shell: "docker stack deploy -c monitor.yml monitor" args: From 5b5383c703ca19a41195edf4a3b0521c956161be Mon Sep 17 00:00:00 2001 From: S M Y Date: Tue, 18 Sep 2018 15:48:14 +0530 Subject: [PATCH 0153/1345] Issue #000 monitor: postgres managed server monitoring issue --- ansible/roles/stack-monitor/templates/prometheus.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/stack-monitor/templates/prometheus.yml b/ansible/roles/stack-monitor/templates/prometheus.yml index bddd1c6314..3128c3315f 100644 --- a/ansible/roles/stack-monitor/templates/prometheus.yml +++ b/ansible/roles/stack-monitor/templates/prometheus.yml @@ -69,7 +69,7 @@ scrape_configs: - targets: ['monitor_master_postgres_exporter:9187'] {% endif %} - {% if groups['postgresql-slave'][0] is defined %} + {% if groups['postgresql-slave'] is defined %} # This empty line ensures indentation is correct after ansible jinja2 template is materialized - job_name: 'slave-postgres-exporter' static_configs: From 6a5bba5727bf0707a5d5e59da7a3635cc74549b8 Mon Sep 17 00:00:00 2001 From: S M Y Date: Tue, 18 Sep 2018 15:53:45 +0530 Subject: [PATCH 0154/1345] Issue #000 monitor: postgres managed server monitoring issue --- ansible/roles/stack-monitor/templates/stack-monitor.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/ansible/roles/stack-monitor/templates/stack-monitor.yml b/ansible/roles/stack-monitor/templates/stack-monitor.yml index 024cd52529..6ca67e23a1 100644 --- a/ansible/roles/stack-monitor/templates/stack-monitor.yml +++ b/ansible/roles/stack-monitor/templates/stack-monitor.yml @@ -407,5 +407,3 @@ networks: external: true application_default: external: true - logger: - external: true From e4e369839e01de417d164d256fdf75b6c8cc7104 Mon Sep 17 00:00:00 2001 From: S M Y Date: Tue, 18 Sep 2018 15:56:40 +0530 Subject: [PATCH 0155/1345] Issue #000 monitor: Removing unwanted network from monitoring --- ansible/roles/stack-monitor/templates/stack-monitor.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/ansible/roles/stack-monitor/templates/stack-monitor.yml b/ansible/roles/stack-monitor/templates/stack-monitor.yml index 6ca67e23a1..b8e250a723 100644 --- a/ansible/roles/stack-monitor/templates/stack-monitor.yml +++ b/ansible/roles/stack-monitor/templates/stack-monitor.yml @@ -403,7 +403,5 @@ configs: networks: monitoring: external: true - api-manager_default: - external: true application_default: external: true From e4642861c3d4c7646971385c29d4d99a07b073b5 Mon Sep 17 00:00:00 2001 From: S M Y Date: Tue, 18 Sep 2018 16:05:39 +0530 Subject: [PATCH 0156/1345] Issue #000 monitor: Removing unwanted network from monitoring --- .../roles/stack-adminutil/templates/stack-adminutil.yml | 4 ++-- ansible/roles/stack-monitor/templates/stack-monitor.yml | 9 +++++---- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/ansible/roles/stack-adminutil/templates/stack-adminutil.yml b/ansible/roles/stack-adminutil/templates/stack-adminutil.yml index 6a0720a3b5..efc505215f 100644 --- a/ansible/roles/stack-adminutil/templates/stack-adminutil.yml +++ b/ansible/roles/stack-adminutil/templates/stack-adminutil.yml @@ -16,7 +16,7 @@ services: ports: - {{ adminutil__port }}:4000 networks: - - api-manager_default + - application_default deploy: replicas: {{ adminutil_replicas }} resources: @@ -34,5 +34,5 @@ services: retries: 5 networks: - api-manager_default: + application_default: external: true diff --git a/ansible/roles/stack-monitor/templates/stack-monitor.yml b/ansible/roles/stack-monitor/templates/stack-monitor.yml index b8e250a723..c569b728fb 100644 --- a/ansible/roles/stack-monitor/templates/stack-monitor.yml +++ b/ansible/roles/stack-monitor/templates/stack-monitor.yml @@ -71,9 +71,8 @@ services: command: "--config.file=/etc/blackbox-exporter/blackboxconfig.yml" networks: - monitoring - - api-manager_default - application_default - - logger + - jenkins_default configs: - source: blackboxconfig.yml target: /etc/blackbox-exporter/blackboxconfig.yml @@ -214,7 +213,8 @@ services: - 9125:9125/udp networks: - monitoring - - api-manager_default + - application_default + - jenkins_default command: - '-statsd.mapping-config=/etc/statsd_exporter/statsd_mapping.yml' configs: @@ -233,7 +233,8 @@ services: - 9158:9158 networks: - monitoring - - api-manager_default + - application_default + - jenkins_default command: /etc/kong_cluster_exporter/config.yml configs: - source: kong_cluster_exporter_config.yml From f1d3a1796c7e279c5d8d3c3a111ef701d075a340 Mon Sep 17 00:00:00 2001 From: S M Y Date: Tue, 18 Sep 2018 16:07:24 +0530 Subject: [PATCH 0157/1345] Issue #000 monitor: Removing unwanted network from monitoring --- ansible/roles/stack-monitor/templates/stack-monitor.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ansible/roles/stack-monitor/templates/stack-monitor.yml b/ansible/roles/stack-monitor/templates/stack-monitor.yml index c569b728fb..b23cf5b5ac 100644 --- a/ansible/roles/stack-monitor/templates/stack-monitor.yml +++ b/ansible/roles/stack-monitor/templates/stack-monitor.yml @@ -406,3 +406,5 @@ networks: external: true application_default: external: true + jenkins_default: + external: true From 05ee0bffab95cd7d09bb4f0e71f6631cded448b1 Mon Sep 17 00:00:00 2001 From: S M Y Date: Tue, 18 Sep 2018 17:19:13 +0530 Subject: [PATCH 0158/1345] Issue #000 env: player env vars updation --- ansible/inventories/sample/group_vars/sample | 3 +++ ansible/roles/stack-sunbird/templates/sunbird_player.env | 1 + 2 files changed, 4 insertions(+) diff --git a/ansible/inventories/sample/group_vars/sample b/ansible/inventories/sample/group_vars/sample index da137af629..30dea81662 100644 --- a/ansible/inventories/sample/group_vars/sample +++ b/ansible/inventories/sample/group_vars/sample @@ -340,3 +340,6 @@ encryption_replicas: 1 encryption_limit_memory: 750MB encryption_limit_cpu: 1 encryption_reservation_cpu: 1 + +#Portal vars: +sunbird_portal_user_upload_ref_link: http://www.sunbird.org/features-documentation/register_user diff --git a/ansible/roles/stack-sunbird/templates/sunbird_player.env b/ansible/roles/stack-sunbird/templates/sunbird_player.env index 03c2696cb6..d1c7b5782e 100644 --- a/ansible/roles/stack-sunbird/templates/sunbird_player.env +++ b/ansible/roles/stack-sunbird/templates/sunbird_player.env @@ -31,3 +31,4 @@ sunbird_tenant_cdn_url={{sunbird_tenant_cdn_url}} sunbird_cloud_storage_urls={{sunbird_cloud_storage_urls}} sunbird_config_service_url={{sunbird_config_service_url}} config_cache_ttl={{config_cache_ttl}} +sunbird_portal_user_upload_ref_link={{sunbird_portal_user_upload_ref_link}} From 8bb269290a0b4dc2d4be3ecc619506b1eb617f02 Mon Sep 17 00:00:00 2001 From: S M Y Date: Wed, 19 Sep 2018 11:47:05 +0530 Subject: [PATCH 0159/1345] Issue #000 proxy: proxy testing for pipeline dashboard --- ansible/roles/stack-proxy/templates/proxy-default.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/stack-proxy/templates/proxy-default.conf b/ansible/roles/stack-proxy/templates/proxy-default.conf index 7e5a237d50..a90014278e 100644 --- a/ansible/roles/stack-proxy/templates/proxy-default.conf +++ b/ansible/roles/stack-proxy/templates/proxy-default.conf @@ -118,7 +118,7 @@ server { } location /pipeline-dashboard/ { - set $target http://{{ ep_es_host}}:5601; + set $target http://{{ ep_es_host}}:3000; rewrite ^/pipeline-dashboard/(.*) /$1 break; proxy_pass $target; proxy_set_header Host $host; From 676eaa1148d831b1ca99f454df9450d675edf29a Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Wed, 19 Sep 2018 09:29:27 +0530 Subject: [PATCH 0160/1345] Issue #000 feat: banner to sunbird install.sh --- deploy/sunbird_install.sh | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/deploy/sunbird_install.sh b/deploy/sunbird_install.sh index 5ae5292608..b3423e08e0 100755 --- a/deploy/sunbird_install.sh +++ b/deploy/sunbird_install.sh @@ -195,6 +195,17 @@ while getopts "s:h" o;do done # Default action: install and configure from scratch +echo """ + + ###### ## ## ## ## ######## #### ######## ######## +## ## ## ## ### ## ## ## ## ## ## ## ## +## ## ## #### ## ## ## ## ## ## ## ## + ###### ## ## ## ## ## ######## ## ######## ## ## + ## ## ## ## #### ## ## ## ## ## ## ## +## ## ## ## ## ### ## ## ## ## ## ## ## + ###### ####### ## ## ######## #### ## ## ######## $(git rev-parse --abbrev-ref HEAD) + +""" ## Installing and configuring prerequisites echo -e \n$(date)\n >> logs/config.log; config 2>&1 | tee -a logs/config.log From 2d0c398f03c4f9584e8ff3131e917d33ebaadac3 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Wed, 19 Sep 2018 13:28:34 +0530 Subject: [PATCH 0161/1345] Issue #000 feat: nginx enable $http_x_forwarded_for in logs --- ansible/roles/stack-proxy/templates/nginx.conf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ansible/roles/stack-proxy/templates/nginx.conf b/ansible/roles/stack-proxy/templates/nginx.conf index 20a7498aa8..d85ce8b761 100644 --- a/ansible/roles/stack-proxy/templates/nginx.conf +++ b/ansible/roles/stack-proxy/templates/nginx.conf @@ -13,7 +13,7 @@ http { include /etc/nginx/mime.types; default_type application/octet-stream; - log_format main '$remote_addr - $remote_user [$time_local] ' + log_format main '$http_x_forwarded_for - $remote_addr - $remote_user [$time_local] ' '"$request" $status $body_bytes_sent ' '$request_time $upstream_response_time $pipe' '"$http_referer" "$http_user_agent"'; @@ -28,4 +28,4 @@ http { #gzip on; include /etc/nginx/conf.d/*.conf; -} \ No newline at end of file +} From c04736d0d1543dd08aecb5ef14915835676348cf Mon Sep 17 00:00:00 2001 From: kartish Date: Wed, 19 Sep 2018 16:00:14 +0530 Subject: [PATCH 0162/1345] Issue #167 fix: kibana dashboard proxy update --- ansible/roles/stack-proxy/templates/proxy-default.conf | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/ansible/roles/stack-proxy/templates/proxy-default.conf b/ansible/roles/stack-proxy/templates/proxy-default.conf index a90014278e..73b6c3d57d 100644 --- a/ansible/roles/stack-proxy/templates/proxy-default.conf +++ b/ansible/roles/stack-proxy/templates/proxy-default.conf @@ -140,6 +140,11 @@ server { proxy_pass $target; } + location /oauth2/ { + set $target http://{{ ep_es_host}}:3000; + proxy_pass $target; + } + {% if proxy_prometheus==true %} location /{{prometheus_alertmanager_route_prefix}}/ { set $target http://monitor_alertmanager:9093; From 129898370dfd043cdb2a3c66a41d763822ee4b91 Mon Sep 17 00:00:00 2001 From: kartish Date: Wed, 19 Sep 2018 16:58:20 +0530 Subject: [PATCH 0163/1345] Issue #167 fix: kibana dashboard proxy update --- ansible/roles/stack-proxy/templates/proxy-default.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/stack-proxy/templates/proxy-default.conf b/ansible/roles/stack-proxy/templates/proxy-default.conf index 73b6c3d57d..1f55bfb092 100644 --- a/ansible/roles/stack-proxy/templates/proxy-default.conf +++ b/ansible/roles/stack-proxy/templates/proxy-default.conf @@ -140,7 +140,7 @@ server { proxy_pass $target; } - location /oauth2/ { + location /oauth3/ { set $target http://{{ ep_es_host}}:3000; proxy_pass $target; } From 883651971dbd0c1b83333d05a3c2aa2aacd1f160 Mon Sep 17 00:00:00 2001 From: kartish Date: Wed, 19 Sep 2018 17:20:23 +0530 Subject: [PATCH 0164/1345] Issue #167 fix: kibana dashboard proxy update --- ansible/roles/stack-proxy/templates/proxy-default.conf | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ansible/roles/stack-proxy/templates/proxy-default.conf b/ansible/roles/stack-proxy/templates/proxy-default.conf index 1f55bfb092..520cf2c6cc 100644 --- a/ansible/roles/stack-proxy/templates/proxy-default.conf +++ b/ansible/roles/stack-proxy/templates/proxy-default.conf @@ -127,6 +127,8 @@ server { proxy_connect_timeout 1; proxy_send_timeout 30; proxy_read_timeout 30; + sub_filter '' ''; + sub_filter_once on; } location /grafana/ { From 41c43bcb83990ee4ddce2d404b4d3cac9cb3bfc7 Mon Sep 17 00:00:00 2001 From: kartish Date: Wed, 19 Sep 2018 17:29:22 +0530 Subject: [PATCH 0165/1345] Issue #167 fix: kibana dashboard proxy update --- ansible/roles/stack-proxy/templates/proxy-default.conf | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/ansible/roles/stack-proxy/templates/proxy-default.conf b/ansible/roles/stack-proxy/templates/proxy-default.conf index 520cf2c6cc..25b7754d21 100644 --- a/ansible/roles/stack-proxy/templates/proxy-default.conf +++ b/ansible/roles/stack-proxy/templates/proxy-default.conf @@ -137,12 +137,12 @@ server { proxy_pass $target; } - location /oauth2/ { - set $target http://logger_oauth:4111; - proxy_pass $target; - } +# location /oauth2/ { +# set $target http://logger_oauth:4111; +# proxy_pass $target; +# } - location /oauth3/ { + location /oauth2/ { set $target http://{{ ep_es_host}}:3000; proxy_pass $target; } From a3e36aeb823d5b8e52a0871fd2ce524a21e12e9c Mon Sep 17 00:00:00 2001 From: kartish Date: Wed, 19 Sep 2018 17:44:13 +0530 Subject: [PATCH 0166/1345] Issue #167 fix: kibana dashboard proxy update --- ansible/roles/stack-proxy/templates/proxy-default.conf | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/ansible/roles/stack-proxy/templates/proxy-default.conf b/ansible/roles/stack-proxy/templates/proxy-default.conf index 25b7754d21..429412b947 100644 --- a/ansible/roles/stack-proxy/templates/proxy-default.conf +++ b/ansible/roles/stack-proxy/templates/proxy-default.conf @@ -137,14 +137,11 @@ server { proxy_pass $target; } -# location /oauth2/ { -# set $target http://logger_oauth:4111; -# proxy_pass $target; -# } - location /oauth2/ { - set $target http://{{ ep_es_host}}:3000; + set $target http://logger_oauth:4111; proxy_pass $target; + set $target1 http://{{ ep_es_host}}:3000; + proxy_pass $target1; } {% if proxy_prometheus==true %} From e18c34521b7f0885cdf5f0b308b26d310fae49e2 Mon Sep 17 00:00:00 2001 From: kartish Date: Wed, 19 Sep 2018 17:47:08 +0530 Subject: [PATCH 0167/1345] Issue #167 fix: kibana dashboard proxy update --- ansible/roles/stack-proxy/templates/proxy-default.conf | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/ansible/roles/stack-proxy/templates/proxy-default.conf b/ansible/roles/stack-proxy/templates/proxy-default.conf index 429412b947..585e9850e3 100644 --- a/ansible/roles/stack-proxy/templates/proxy-default.conf +++ b/ansible/roles/stack-proxy/templates/proxy-default.conf @@ -140,8 +140,11 @@ server { location /oauth2/ { set $target http://logger_oauth:4111; proxy_pass $target; - set $target1 http://{{ ep_es_host}}:3000; - proxy_pass $target1; + } + + location /oauth/ { + set $target http://{{ ep_es_host}}:3000; + proxy_pass $target; } {% if proxy_prometheus==true %} From afcf9d70c723e17245e9df56bdc50af92df9a134 Mon Sep 17 00:00:00 2001 From: kartish Date: Wed, 19 Sep 2018 18:00:21 +0530 Subject: [PATCH 0168/1345] Issue #167 fix: kibana dashboard proxy update --- ansible/roles/stack-proxy/templates/proxy-default.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/stack-proxy/templates/proxy-default.conf b/ansible/roles/stack-proxy/templates/proxy-default.conf index 585e9850e3..520cf2c6cc 100644 --- a/ansible/roles/stack-proxy/templates/proxy-default.conf +++ b/ansible/roles/stack-proxy/templates/proxy-default.conf @@ -142,7 +142,7 @@ server { proxy_pass $target; } - location /oauth/ { + location /oauth3/ { set $target http://{{ ep_es_host}}:3000; proxy_pass $target; } From f2d68e0fb32a8fad56d38791774cfbdd428d2d0c Mon Sep 17 00:00:00 2001 From: kartish Date: Thu, 20 Sep 2018 10:39:39 +0530 Subject: [PATCH 0169/1345] Issue #167 fix: kibana dashboard proxy update for path oauth --- ansible/roles/stack-proxy/templates/proxy-default.conf | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ansible/roles/stack-proxy/templates/proxy-default.conf b/ansible/roles/stack-proxy/templates/proxy-default.conf index 520cf2c6cc..09afef72d7 100644 --- a/ansible/roles/stack-proxy/templates/proxy-default.conf +++ b/ansible/roles/stack-proxy/templates/proxy-default.conf @@ -137,14 +137,14 @@ server { proxy_pass $target; } - location /oauth2/ { + location /oauth2/callback { set $target http://logger_oauth:4111; proxy_pass $target; } - location /oauth3/ { + location /oauth2/start { set $target http://{{ ep_es_host}}:3000; - proxy_pass $target; + proxy_pass $target/oauth2/start?rd=%2F$1;; } {% if proxy_prometheus==true %} From 105b376a6abb9427331815ba98f5007300a4afd3 Mon Sep 17 00:00:00 2001 From: kartish Date: Thu, 20 Sep 2018 10:43:15 +0530 Subject: [PATCH 0170/1345] Issue #167 fix: kibana dashboard proxy update for path oauth --- ansible/roles/stack-proxy/templates/proxy-default.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/stack-proxy/templates/proxy-default.conf b/ansible/roles/stack-proxy/templates/proxy-default.conf index 09afef72d7..d99253f454 100644 --- a/ansible/roles/stack-proxy/templates/proxy-default.conf +++ b/ansible/roles/stack-proxy/templates/proxy-default.conf @@ -144,7 +144,7 @@ server { location /oauth2/start { set $target http://{{ ep_es_host}}:3000; - proxy_pass $target/oauth2/start?rd=%2F$1;; + proxy_pass $target/oauth2/start?rd=%2F$1; } {% if proxy_prometheus==true %} From 5fd1d8b449537869cf96ebc940dc76b985f6f3e8 Mon Sep 17 00:00:00 2001 From: kartish Date: Thu, 20 Sep 2018 10:47:20 +0530 Subject: [PATCH 0171/1345] Issue #167 fix: kibana dashboard proxy update for path oauth --- ansible/roles/stack-proxy/templates/proxy-default.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/stack-proxy/templates/proxy-default.conf b/ansible/roles/stack-proxy/templates/proxy-default.conf index d99253f454..a30a7147e2 100644 --- a/ansible/roles/stack-proxy/templates/proxy-default.conf +++ b/ansible/roles/stack-proxy/templates/proxy-default.conf @@ -137,7 +137,7 @@ server { proxy_pass $target; } - location /oauth2/callback { + location /oauth2/ { set $target http://logger_oauth:4111; proxy_pass $target; } From 4c90bd08ad6f75296181222f6be30920201220bd Mon Sep 17 00:00:00 2001 From: kartish Date: Thu, 20 Sep 2018 10:50:22 +0530 Subject: [PATCH 0172/1345] Issue #167 fix: kibana dashboard proxy update for path oauth --- ansible/roles/stack-proxy/templates/proxy-default.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/stack-proxy/templates/proxy-default.conf b/ansible/roles/stack-proxy/templates/proxy-default.conf index a30a7147e2..1fcd4208de 100644 --- a/ansible/roles/stack-proxy/templates/proxy-default.conf +++ b/ansible/roles/stack-proxy/templates/proxy-default.conf @@ -142,7 +142,7 @@ server { proxy_pass $target; } - location /oauth2/start { + location /oauth2/ { set $target http://{{ ep_es_host}}:3000; proxy_pass $target/oauth2/start?rd=%2F$1; } From 152dc9a59d593c1743d0baddb4d84627bbd40318 Mon Sep 17 00:00:00 2001 From: kartish Date: Thu, 20 Sep 2018 10:59:36 +0530 Subject: [PATCH 0173/1345] Issue #167 fix: kibana dashboard proxy update for path oauth --- ansible/roles/stack-proxy/templates/proxy-default.conf | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ansible/roles/stack-proxy/templates/proxy-default.conf b/ansible/roles/stack-proxy/templates/proxy-default.conf index 1fcd4208de..c7a2e351ee 100644 --- a/ansible/roles/stack-proxy/templates/proxy-default.conf +++ b/ansible/roles/stack-proxy/templates/proxy-default.conf @@ -142,10 +142,10 @@ server { proxy_pass $target; } - location /oauth2/ { - set $target http://{{ ep_es_host}}:3000; - proxy_pass $target/oauth2/start?rd=%2F$1; - } + # location /oauth2/start { + # set $target http://{{ ep_es_host}}:3000; + # proxy_pass $target/oauth2/start?rd=%2F$1; + # } {% if proxy_prometheus==true %} location /{{prometheus_alertmanager_route_prefix}}/ { From 4a660d9bdac583ef276ac653dd8bc716746d13ce Mon Sep 17 00:00:00 2001 From: S M Y Date: Thu, 20 Sep 2018 12:09:45 +0530 Subject: [PATCH 0174/1345] Issue #000 cassandra: cassandra jar download location updation --- ansible/roles/cassandra-cql-update/tasks/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/cassandra-cql-update/tasks/main.yml b/ansible/roles/cassandra-cql-update/tasks/main.yml index 2f649b351a..9daa238084 100644 --- a/ansible/roles/cassandra-cql-update/tasks/main.yml +++ b/ansible/roles/cassandra-cql-update/tasks/main.yml @@ -39,7 +39,7 @@ - name: download become: yes - command: wget https://github.com/project-sunbird/sunbird-utils/releases/download/release-1.8/cassandra-migration-0.0.1-SNAPSHOT-jar-with-dependencies.jar + command: wget https://github.com/project-sunbird/sunbird-utils/releases/download/release-1.10/cassandra-migration-0.0.1-SNAPSHOT-jar-with-dependencies.jar args: chdir: /tmp - name: Run the application From ccdd809ea35c5e9754b0691b6b0b83371830142b Mon Sep 17 00:00:00 2001 From: S M Y Date: Thu, 20 Sep 2018 12:09:45 +0530 Subject: [PATCH 0175/1345] Issue #000 cassandra: cassandra jar download location updation --- ansible/roles/cassandra-cql-update/tasks/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/cassandra-cql-update/tasks/main.yml b/ansible/roles/cassandra-cql-update/tasks/main.yml index 2f649b351a..9daa238084 100644 --- a/ansible/roles/cassandra-cql-update/tasks/main.yml +++ b/ansible/roles/cassandra-cql-update/tasks/main.yml @@ -39,7 +39,7 @@ - name: download become: yes - command: wget https://github.com/project-sunbird/sunbird-utils/releases/download/release-1.8/cassandra-migration-0.0.1-SNAPSHOT-jar-with-dependencies.jar + command: wget https://github.com/project-sunbird/sunbird-utils/releases/download/release-1.10/cassandra-migration-0.0.1-SNAPSHOT-jar-with-dependencies.jar args: chdir: /tmp - name: Run the application From a52190e120f06b30bf72b945547ea9ef54cb8edd Mon Sep 17 00:00:00 2001 From: kartish Date: Thu, 20 Sep 2018 12:39:41 +0530 Subject: [PATCH 0176/1345] Issue #167 fix: kibana dashboard proxy update for path oauth --- ansible/roles/stack-proxy/templates/proxy-default.conf | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ansible/roles/stack-proxy/templates/proxy-default.conf b/ansible/roles/stack-proxy/templates/proxy-default.conf index c7a2e351ee..158e78c2ca 100644 --- a/ansible/roles/stack-proxy/templates/proxy-default.conf +++ b/ansible/roles/stack-proxy/templates/proxy-default.conf @@ -142,10 +142,10 @@ server { proxy_pass $target; } - # location /oauth2/start { - # set $target http://{{ ep_es_host}}:3000; - # proxy_pass $target/oauth2/start?rd=%2F$1; - # } + location /dashboard-oauth/oauth2/{ + set $target http://{{ ep_es_host}}:3000; + proxy_pass $target; + } {% if proxy_prometheus==true %} location /{{prometheus_alertmanager_route_prefix}}/ { From 3d8be6c6582821414e885c137be3a126928b62e9 Mon Sep 17 00:00:00 2001 From: kartish Date: Thu, 20 Sep 2018 16:12:48 +0530 Subject: [PATCH 0177/1345] Issue #167 fix: kibana dashboard two oauth proxy update --- ansible/roles/stack-logger/templates/stack-logger.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/stack-logger/templates/stack-logger.yml b/ansible/roles/stack-logger/templates/stack-logger.yml index e4ea0c7b60..6afbf11c18 100644 --- a/ansible/roles/stack-logger/templates/stack-logger.yml +++ b/ansible/roles/stack-logger/templates/stack-logger.yml @@ -52,7 +52,7 @@ services: image: mryu/oauth2-proxy:2.1 command: | -cookie-secure=false - -upstream=http://kibana:5601/ + -upstream={"dashboard" => "http://kibana:5601/", "pipeline-dashboard" => "http://11.2.3.34:5601" } -redirect-url={{kibana_oauth_redirect_url}} -http-address=0.0.0.0:4111 {% for email_domain in kibana_oauth_authenticated_email_domains %} From 6c0408e4fa1fb03e95f47e3d7aff176407a7ac59 Mon Sep 17 00:00:00 2001 From: kartish Date: Thu, 20 Sep 2018 16:27:44 +0530 Subject: [PATCH 0178/1345] Issue #167 fix: kibana dashboard two oauth proxy update --- ansible/roles/stack-logger/templates/stack-logger.yml | 2 +- ansible/roles/stack-proxy/templates/proxy-default.conf | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/ansible/roles/stack-logger/templates/stack-logger.yml b/ansible/roles/stack-logger/templates/stack-logger.yml index 6afbf11c18..e4ea0c7b60 100644 --- a/ansible/roles/stack-logger/templates/stack-logger.yml +++ b/ansible/roles/stack-logger/templates/stack-logger.yml @@ -52,7 +52,7 @@ services: image: mryu/oauth2-proxy:2.1 command: | -cookie-secure=false - -upstream={"dashboard" => "http://kibana:5601/", "pipeline-dashboard" => "http://11.2.3.34:5601" } + -upstream=http://kibana:5601/ -redirect-url={{kibana_oauth_redirect_url}} -http-address=0.0.0.0:4111 {% for email_domain in kibana_oauth_authenticated_email_domains %} diff --git a/ansible/roles/stack-proxy/templates/proxy-default.conf b/ansible/roles/stack-proxy/templates/proxy-default.conf index 158e78c2ca..9a2ef3a317 100644 --- a/ansible/roles/stack-proxy/templates/proxy-default.conf +++ b/ansible/roles/stack-proxy/templates/proxy-default.conf @@ -137,12 +137,12 @@ server { proxy_pass $target; } - location /oauth2/ { + location /oauth3/ { set $target http://logger_oauth:4111; proxy_pass $target; } - location /dashboard-oauth/oauth2/{ + location /oauth2/{ set $target http://{{ ep_es_host}}:3000; proxy_pass $target; } From 48ff2ff5c52aa6a014af9e08c45851ac24b2819a Mon Sep 17 00:00:00 2001 From: kartish Date: Thu, 20 Sep 2018 16:33:26 +0530 Subject: [PATCH 0179/1345] Issue #167 fix: kibana dashboard two oauth proxy update --- ansible/roles/stack-proxy/templates/proxy-default.conf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ansible/roles/stack-proxy/templates/proxy-default.conf b/ansible/roles/stack-proxy/templates/proxy-default.conf index 9a2ef3a317..bd86e61513 100644 --- a/ansible/roles/stack-proxy/templates/proxy-default.conf +++ b/ansible/roles/stack-proxy/templates/proxy-default.conf @@ -137,12 +137,12 @@ server { proxy_pass $target; } - location /oauth3/ { + location /oauth2/ { set $target http://logger_oauth:4111; proxy_pass $target; } - location /oauth2/{ + location /oauth3/{ set $target http://{{ ep_es_host}}:3000; proxy_pass $target; } From b2f753cf4e00ed5062aff7bc5c98feb4461e8323 Mon Sep 17 00:00:00 2001 From: S M Y Date: Thu, 20 Sep 2018 17:58:19 +0530 Subject: [PATCH 0180/1345] Issue #000 proxy: proxy timeout increase for read requests --- .../stack-proxy/templates/proxy-default.conf | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/ansible/roles/stack-proxy/templates/proxy-default.conf b/ansible/roles/stack-proxy/templates/proxy-default.conf index 7e5a237d50..78cd34458e 100644 --- a/ansible/roles/stack-proxy/templates/proxy-default.conf +++ b/ansible/roles/stack-proxy/templates/proxy-default.conf @@ -85,7 +85,7 @@ server { proxy_set_header X-Scheme $scheme; proxy_connect_timeout 1; proxy_send_timeout 30; - proxy_read_timeout 30; + proxy_read_timeout 40; proxy_set_header X-Forwarded-Proto $scheme; # root /usr/share/nginx/www; } @@ -99,7 +99,7 @@ server { proxy_set_header X-Scheme $scheme; proxy_connect_timeout 5; proxy_send_timeout 60; - proxy_read_timeout 60; + proxy_read_timeout 70; } location /dashboard/ { @@ -111,7 +111,7 @@ server { proxy_set_header X-Scheme $scheme; proxy_connect_timeout 1; proxy_send_timeout 30; - proxy_read_timeout 30; + proxy_read_timeout 40; sub_filter '' ''; sub_filter_once on; @@ -126,7 +126,7 @@ server { proxy_set_header X-Scheme $scheme; proxy_connect_timeout 1; proxy_send_timeout 30; - proxy_read_timeout 30; + proxy_read_timeout 40; } location /grafana/ { @@ -151,7 +151,7 @@ server { proxy_set_header X-Scheme $scheme; proxy_connect_timeout 1; proxy_send_timeout 30; - proxy_read_timeout 30; + proxy_read_timeout 40; auth_basic "Prometheus Alert manager"; auth_basic_user_file /run/secrets/prom_admin_creds; @@ -174,7 +174,7 @@ server { proxy_set_header X-Scheme $scheme; proxy_connect_timeout 1; proxy_send_timeout 30; - proxy_read_timeout 30; + proxy_read_timeout 40; proxy_set_header X-Forwarded-Proto $scheme; # root /usr/share/nginx/www; } @@ -190,7 +190,7 @@ server { proxy_set_header X-Scheme $scheme; proxy_connect_timeout 1; proxy_send_timeout 30; - proxy_read_timeout 30; + proxy_read_timeout 40; proxy_set_header X-Forwarded-Proto $scheme; } @@ -335,7 +335,7 @@ location ~* ^/content-plugins/(.*) { proxy_set_header X-Scheme $scheme; proxy_connect_timeout 5; proxy_send_timeout 60; - proxy_read_timeout 60; + proxy_read_timeout 70; proxy_set_header X-Forwarded-Proto $scheme; # root /usr/share/nginx/www; } @@ -350,7 +350,7 @@ location ~* ^/content-plugins/(.*) { proxy_set_header X-Scheme $scheme; proxy_connect_timeout 5; proxy_send_timeout 60; - proxy_read_timeout 60; + proxy_read_timeout 70; proxy_set_header X-Forwarded-Proto $scheme; # root /usr/share/nginx/www; } From 5c43ed39b6a6a57a8b44cee2be4dc4da8d188ab9 Mon Sep 17 00:00:00 2001 From: kartish Date: Fri, 21 Sep 2018 15:29:12 +0530 Subject: [PATCH 0181/1345] Issue #167 fix: two kibanas oauth proxy update --- .../stack-logger/templates/stack-logger.yml | 2 +- .../stack-proxy/templates/proxy-default.conf | 18 ++++++++++++++---- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/ansible/roles/stack-logger/templates/stack-logger.yml b/ansible/roles/stack-logger/templates/stack-logger.yml index e4ea0c7b60..5637024d73 100644 --- a/ansible/roles/stack-logger/templates/stack-logger.yml +++ b/ansible/roles/stack-logger/templates/stack-logger.yml @@ -52,7 +52,7 @@ services: image: mryu/oauth2-proxy:2.1 command: | -cookie-secure=false - -upstream=http://kibana:5601/ + -upstream=http://proxy_proxy/oauth_service -redirect-url={{kibana_oauth_redirect_url}} -http-address=0.0.0.0:4111 {% for email_domain in kibana_oauth_authenticated_email_domains %} diff --git a/ansible/roles/stack-proxy/templates/proxy-default.conf b/ansible/roles/stack-proxy/templates/proxy-default.conf index dedd22ba6e..1cf55ca7e5 100644 --- a/ansible/roles/stack-proxy/templates/proxy-default.conf +++ b/ansible/roles/stack-proxy/templates/proxy-default.conf @@ -142,11 +142,21 @@ server { proxy_pass $target; } - location /oauth3/{ - set $target http://{{ ep_es_host}}:3000; - proxy_pass $target; + location ~ ^/oauth_service { + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Scheme $scheme; + proxy_connect_timeout 1; + proxy_send_timeout 30; + proxy_read_timeout 30; + location ~ pipeline-dashboard { + set target http://{{ ep_es_host}}:3000; + proxy_pass $target; + } + location ~ dashboard { + set target http://logger_oauth:4111; + proxy_pass $target; + } } - {% if proxy_prometheus==true %} location /{{prometheus_alertmanager_route_prefix}}/ { set $target http://monitor_alertmanager:9093; From 7962967ac4327ad6bf658c14ad7c685258cb9d80 Mon Sep 17 00:00:00 2001 From: kartish Date: Fri, 21 Sep 2018 15:41:59 +0530 Subject: [PATCH 0182/1345] Issue #167 fix: two kibanas oauth proxy update -1 --- ansible/roles/stack-proxy/templates/proxy-default.conf | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/ansible/roles/stack-proxy/templates/proxy-default.conf b/ansible/roles/stack-proxy/templates/proxy-default.conf index 1cf55ca7e5..712c3d92e8 100644 --- a/ansible/roles/stack-proxy/templates/proxy-default.conf +++ b/ansible/roles/stack-proxy/templates/proxy-default.conf @@ -137,11 +137,6 @@ server { proxy_pass $target; } - location /oauth2/ { - set $target http://logger_oauth:4111; - proxy_pass $target; - } - location ~ ^/oauth_service { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Scheme $scheme; @@ -149,11 +144,11 @@ server { proxy_send_timeout 30; proxy_read_timeout 30; location ~ pipeline-dashboard { - set target http://{{ ep_es_host}}:3000; + set $target http://{{ ep_es_host}}:3000; proxy_pass $target; } location ~ dashboard { - set target http://logger_oauth:4111; + set $target http://kibana:5601; proxy_pass $target; } } From 397b80f89e7326fee3d40023ec056c81e6a776b1 Mon Sep 17 00:00:00 2001 From: kartish Date: Fri, 21 Sep 2018 15:48:14 +0530 Subject: [PATCH 0183/1345] Issue #167 fix: two kibanas oauth proxy update -1 --- ansible/roles/stack-logger/templates/stack-logger.yml | 2 +- ansible/roles/stack-proxy/templates/proxy-default.conf | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/ansible/roles/stack-logger/templates/stack-logger.yml b/ansible/roles/stack-logger/templates/stack-logger.yml index 5637024d73..172ada0248 100644 --- a/ansible/roles/stack-logger/templates/stack-logger.yml +++ b/ansible/roles/stack-logger/templates/stack-logger.yml @@ -52,7 +52,7 @@ services: image: mryu/oauth2-proxy:2.1 command: | -cookie-secure=false - -upstream=http://proxy_proxy/oauth_service + -upstream=http://proxy_proxy/oauth2 -redirect-url={{kibana_oauth_redirect_url}} -http-address=0.0.0.0:4111 {% for email_domain in kibana_oauth_authenticated_email_domains %} diff --git a/ansible/roles/stack-proxy/templates/proxy-default.conf b/ansible/roles/stack-proxy/templates/proxy-default.conf index 712c3d92e8..6b9d6c029a 100644 --- a/ansible/roles/stack-proxy/templates/proxy-default.conf +++ b/ansible/roles/stack-proxy/templates/proxy-default.conf @@ -137,7 +137,7 @@ server { proxy_pass $target; } - location ~ ^/oauth_service { + location ~ ^/oauth2 { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Scheme $scheme; proxy_connect_timeout 1; @@ -148,7 +148,7 @@ server { proxy_pass $target; } location ~ dashboard { - set $target http://kibana:5601; + set $target http://logger_oauth:4111; proxy_pass $target; } } From a2c949875da2b8bc10816299648e6de94116b6c5 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Sat, 22 Sep 2018 19:50:29 +0530 Subject: [PATCH 0184/1345] Issue #0000 feat: Updated Oauth proxy to 2.2 DO-184 --- ansible/roles/stack-logger/templates/stack-logger.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/stack-logger/templates/stack-logger.yml b/ansible/roles/stack-logger/templates/stack-logger.yml index 172ada0248..8de7c4765f 100644 --- a/ansible/roles/stack-logger/templates/stack-logger.yml +++ b/ansible/roles/stack-logger/templates/stack-logger.yml @@ -49,7 +49,7 @@ services: - monitoring oauth: - image: mryu/oauth2-proxy:2.1 + image: rjshrjndrn/oauth2-proxy:2.2 command: | -cookie-secure=false -upstream=http://proxy_proxy/oauth2 From d391eab92435c24fffc74a73629b36740a7ff2b5 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Sat, 22 Sep 2018 19:56:44 +0530 Subject: [PATCH 0185/1345] Issue #0000 feat: Removed non used published ports DO-184 --- ansible/roles/stack-logger/templates/stack-logger.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/ansible/roles/stack-logger/templates/stack-logger.yml b/ansible/roles/stack-logger/templates/stack-logger.yml index 8de7c4765f..191548ef81 100644 --- a/ansible/roles/stack-logger/templates/stack-logger.yml +++ b/ansible/roles/stack-logger/templates/stack-logger.yml @@ -63,8 +63,6 @@ services: - OAUTH2_PROXY_CLIENT_ID={{google_client_id}} - OAUTH2_PROXY_CLIENT_SECRET={{google_client_secret}} - OAUTH2_PROXY_COOKIE_SECRET={{cookie_secret}} - ports: - - "4111:4111" configs: - source: authenticated_email_kibana_oauth target: /authenticated_email.txt From b3eb59c7728adde637412137c5fa1f30a0875ac1 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Sat, 22 Sep 2018 20:07:25 +0530 Subject: [PATCH 0186/1345] Issue #0000 feat: Added oauth oauth multiple upstream redirection DO-184 --- .../stack-proxy/templates/proxy-default.conf | 87 +++++++++++-------- 1 file changed, 50 insertions(+), 37 deletions(-) diff --git a/ansible/roles/stack-proxy/templates/proxy-default.conf b/ansible/roles/stack-proxy/templates/proxy-default.conf index 6b9d6c029a..2032feb404 100644 --- a/ansible/roles/stack-proxy/templates/proxy-default.conf +++ b/ansible/roles/stack-proxy/templates/proxy-default.conf @@ -102,33 +102,61 @@ server { proxy_read_timeout 70; } + # Oauth2 config + location /oauth2/ { + proxy_pass http://oauth:4111; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Scheme $scheme; + proxy_set_header X-Auth-Request-Redirect $request_uri; + } + + location = /oauth2/auth { + proxy_pass http://oauth:4111; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Scheme $scheme; + # nginx auth_request includes headers but not body + proxy_set_header Content-Length ""; + proxy_pass_request_body off; + } + location /dashboard/ { - set $target http://logger_oauth:4111; - rewrite ^/dashboard/(.*) /$1 break; - proxy_pass $target; - proxy_set_header Host $host; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header X-Scheme $scheme; - proxy_connect_timeout 1; - proxy_send_timeout 30; - proxy_read_timeout 40; + auth_request /oauth2/auth; + error_page 401 = /oauth2/sign_in; + + # pass information via X-User and X-Email headers to backend, + # requires running with --set-xauthrequest flag + auth_request_set $user $upstream_http_x_auth_request_user; + auth_request_set $email $upstream_http_x_auth_request_email; + proxy_set_header X-User $user; + proxy_set_header X-Email $email; + + # if you enabled --cookie-refresh, this is needed for it to work with auth_request + auth_request_set $auth_cookie $upstream_http_set_cookie; + add_header Set-Cookie $auth_cookie; - sub_filter '' ''; - sub_filter_once on; + rewrite ^/dashboard/(.*) /$1 break; + proxy_pass http://kibana:5601; } location /pipeline-dashboard/ { - set $target http://{{ ep_es_host}}:3000; - rewrite ^/pipeline-dashboard/(.*) /$1 break; - proxy_pass $target; - proxy_set_header Host $host; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header X-Scheme $scheme; - proxy_connect_timeout 1; - proxy_send_timeout 30; - proxy_read_timeout 40; - sub_filter '' ''; - sub_filter_once on; + auth_request /oauth2/auth; + error_page 401 = /oauth2/sign_in; + + # pass information via X-User and X-Email headers to backend, + # requires running with --set-xauthrequest flag + auth_request_set $user $upstream_http_x_auth_request_user; + auth_request_set $email $upstream_http_x_auth_request_email; + proxy_set_header X-User $user; + proxy_set_header X-Email $email; + + # if you enabled --cookie-refresh, this is needed for it to work with auth_request + auth_request_set $auth_cookie $upstream_http_set_cookie; + add_header Set-Cookie $auth_cookie; + + rewrite ^/pipeline-dashboard/(.*) /$1 break; + proxy_pass http://{{ ep_es_host}}:3000; } location /grafana/ { @@ -137,21 +165,6 @@ server { proxy_pass $target; } - location ~ ^/oauth2 { - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header X-Scheme $scheme; - proxy_connect_timeout 1; - proxy_send_timeout 30; - proxy_read_timeout 30; - location ~ pipeline-dashboard { - set $target http://{{ ep_es_host}}:3000; - proxy_pass $target; - } - location ~ dashboard { - set $target http://logger_oauth:4111; - proxy_pass $target; - } - } {% if proxy_prometheus==true %} location /{{prometheus_alertmanager_route_prefix}}/ { set $target http://monitor_alertmanager:9093; From 560fcdf77c9ff1fe795eca27fd6119025781a42d Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Sat, 22 Sep 2018 20:48:55 +0530 Subject: [PATCH 0187/1345] Issue #0000 fix: kibana port DO-184 --- ansible/roles/stack-proxy/templates/proxy-default.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/stack-proxy/templates/proxy-default.conf b/ansible/roles/stack-proxy/templates/proxy-default.conf index 2032feb404..84ee8f3345 100644 --- a/ansible/roles/stack-proxy/templates/proxy-default.conf +++ b/ansible/roles/stack-proxy/templates/proxy-default.conf @@ -156,7 +156,7 @@ server { add_header Set-Cookie $auth_cookie; rewrite ^/pipeline-dashboard/(.*) /$1 break; - proxy_pass http://{{ ep_es_host}}:3000; + proxy_pass http://{{ ep_es_host}}:5601; } location /grafana/ { From 0368359ddf101178f8456ed72ca4d0c55e965ffe Mon Sep 17 00:00:00 2001 From: S M Y Date: Tue, 25 Sep 2018 06:06:51 +0000 Subject: [PATCH 0188/1345] Issue #000 permission: changing file permission and removing tabs in config file --- deploy/config | 18 +++++++++--------- deploy/system-init.sh | 0 2 files changed, 9 insertions(+), 9 deletions(-) mode change 100644 => 100755 deploy/system-init.sh diff --git a/deploy/config b/deploy/config index 1bdc22be46..340653c305 100755 --- a/deploy/config +++ b/deploy/config @@ -58,15 +58,15 @@ sunbird_azure_storage_key: # Azure account storage key sunbird_azure_storage_account: # Azure account storage name #Sunbird System Initialisation - First organisation and user in Sunbird will be created with these details -sunbird_custodian_tenant_name: # Custodian Organisation Name -sunbird_custodian_tenant_description: # Custodian Organisation Description -sunbird_custodian_tenant_channel: # Custodian Organisation Channel -sunbird_root_user_firstname: # first name of the Sunbird admin user -sunbird_root_user_lastname: # last name of the Sunbird admin user(optional field) -sunbird_root_user_username: # username to be used for login to Sunbird -sunbird_root_user_password: # password to be used for login to Sunbird -sunbird_root_user_email: # email address of the Sunbird admin user -sunbird_root_user_phone: # mobile number of the Sunbird admin user +sunbird_custodian_tenant_name: # Custodian Organisation Name +sunbird_custodian_tenant_description: # Custodian Organisation Description +sunbird_custodian_tenant_channel: # Custodian Organisation Channel +sunbird_root_user_firstname: # first name of the Sunbird admin user +sunbird_root_user_lastname: # last name of the Sunbird admin user(optional field) +sunbird_root_user_username: # username to be used for login to Sunbird +sunbird_root_user_password: # password to be used for login to Sunbird +sunbird_root_user_email: # email address of the Sunbird admin user +sunbird_root_user_phone: # mobile number of the Sunbird admin user #----------------------------------------------------------------------# diff --git a/deploy/system-init.sh b/deploy/system-init.sh old mode 100644 new mode 100755 From 1a44361d5e3cd04cb0bf21df469f850f0c6cd069 Mon Sep 17 00:00:00 2001 From: S M Y Date: Tue, 25 Sep 2018 06:12:51 +0000 Subject: [PATCH 0189/1345] Issue #000 permission: changing file permission --- deploy/ansible.cfg | 0 deploy/deploy-telemetry.sh | 0 2 files changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 deploy/ansible.cfg mode change 100644 => 100755 deploy/deploy-telemetry.sh diff --git a/deploy/ansible.cfg b/deploy/ansible.cfg old mode 100644 new mode 100755 diff --git a/deploy/deploy-telemetry.sh b/deploy/deploy-telemetry.sh old mode 100644 new mode 100755 From 38ab13215383f836e89545416da207ed0fc1e1e1 Mon Sep 17 00:00:00 2001 From: S M Y Date: Tue, 25 Sep 2018 06:13:56 +0000 Subject: [PATCH 0190/1345] Issue #000 permission: changing file permission --- deploy/deploy-telemetry.sh | 0 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 deploy/deploy-telemetry.sh diff --git a/deploy/deploy-telemetry.sh b/deploy/deploy-telemetry.sh old mode 100644 new mode 100755 From 5a29921d3f5ba9d6998de8b88448b0512b978304 Mon Sep 17 00:00:00 2001 From: S M Y Date: Tue, 25 Sep 2018 06:26:19 +0000 Subject: [PATCH 0191/1345] Issue #000 permission: changing file permission --- deploy/ansible.cfg | 0 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 deploy/ansible.cfg diff --git a/deploy/ansible.cfg b/deploy/ansible.cfg old mode 100644 new mode 100755 From 6c1690eb2ebfeafe5ce3525fac159bcaf019704d Mon Sep 17 00:00:00 2001 From: Manzarul Date: Wed, 26 Sep 2018 14:50:21 +0530 Subject: [PATCH 0192/1345] Issues #SB-00 fix: adding new endpoint for batch unenrollment --- ansible/roles/kong-api/defaults/main.yml | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/ansible/roles/kong-api/defaults/main.yml b/ansible/roles/kong-api/defaults/main.yml index 2cf7f36c44..d84a46d045 100644 --- a/ansible/roles/kong-api/defaults/main.yml +++ b/ansible/roles/kong-api/defaults/main.yml @@ -349,6 +349,22 @@ kong_apis: config.limit_by: credential - name: request-size-limiting config.allowed_payload_size: "{{ small_request_size_limit }}" + - name: courseUnEnrolment + request_path: "{{ course_service_prefix }}/v1/unenroll" + upstream_url: "{{ learning_service_url }}/v1/course/unenroll" + strip_request_path: true + plugins: + - name: jwt + - name: cors + - "{{ statsd_pulgin }}" + - name: acl + config.whitelist: courseUser + - name: rate-limiting + config.policy: local + config.hour: "{{ medium_rate_limit_per_hour }}" + config.limit_by: credential + - name: request-size-limiting + config.allowed_payload_size: "{{ small_request_size_limit }}" - name: listCourseEnrollments request_path: "{{ course_service_prefix }}/v1/user/enrollment/list" upstream_url: "{{ learning_service_url }}/v1/user/courses/list" From 5d93930c9ab9a698d44acaf0a0a292330da15004 Mon Sep 17 00:00:00 2001 From: santhosh-optit <31979949+santhosh-optit@users.noreply.github.com> Date: Wed, 26 Sep 2018 16:30:05 +0530 Subject: [PATCH 0193/1345] Issue #000 adding build number variable --- ansible/roles/stack-sunbird/templates/sunbird_player.env | 1 + 1 file changed, 1 insertion(+) diff --git a/ansible/roles/stack-sunbird/templates/sunbird_player.env b/ansible/roles/stack-sunbird/templates/sunbird_player.env index d1c7b5782e..e12cc8135d 100644 --- a/ansible/roles/stack-sunbird/templates/sunbird_player.env +++ b/ansible/roles/stack-sunbird/templates/sunbird_player.env @@ -32,3 +32,4 @@ sunbird_cloud_storage_urls={{sunbird_cloud_storage_urls}} sunbird_config_service_url={{sunbird_config_service_url}} config_cache_ttl={{config_cache_ttl}} sunbird_portal_user_upload_ref_link={{sunbird_portal_user_upload_ref_link}} +sunbird_build_number={{sunbird_build_number}} From 879eb9c4eaa008a11a9cbf5a3944df38b216ebbf Mon Sep 17 00:00:00 2001 From: S M Y Date: Wed, 26 Sep 2018 19:00:58 +0530 Subject: [PATCH 0194/1345] Issue #000 env: Learner env vars --- ansible/inventories/sample/group_vars/sample | 5 +++++ .../stack-sunbird/templates/sunbird_learner-service.env | 2 ++ 2 files changed, 7 insertions(+) diff --git a/ansible/inventories/sample/group_vars/sample b/ansible/inventories/sample/group_vars/sample index 30dea81662..f7ea171462 100644 --- a/ansible/inventories/sample/group_vars/sample +++ b/ansible/inventories/sample/group_vars/sample @@ -343,3 +343,8 @@ encryption_reservation_cpu: 1 #Portal vars: sunbird_portal_user_upload_ref_link: http://www.sunbird.org/features-documentation/register_user + + +#learner Vars +sunbird_url_shortner_access_token: +sunbird_url_shortner_enable: false diff --git a/ansible/roles/stack-sunbird/templates/sunbird_learner-service.env b/ansible/roles/stack-sunbird/templates/sunbird_learner-service.env index 5e94e93408..ec2185e743 100644 --- a/ansible/roles/stack-sunbird/templates/sunbird_learner-service.env +++ b/ansible/roles/stack-sunbird/templates/sunbird_learner-service.env @@ -71,3 +71,5 @@ sunbird_open_saber_bridge_enable={{sunbird_open_saber_bridge_enable|default('fal sunbird_environment={{sunbird_environment}} sunbird_instance={{sunbird_instance}} sunbird_email_max_recipients_limit={{sunbird_email_max_recipients_limit}} +sunbird_url_shortner_access_token={{sunbird_url_shortner_access_token}} +sunbird_url_shortner_enable={{sunbird_url_shortner_enable}} From 0506887b38b0c4b7b00a6b3db8c5359429f1758f Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Wed, 26 Sep 2018 19:03:54 +0530 Subject: [PATCH 0195/1345] Issue #0000 feat: dynamic host selection for proxy DO-201 --- ansible/roles/stack-proxy/templates/proxy-default.conf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ansible/roles/stack-proxy/templates/proxy-default.conf b/ansible/roles/stack-proxy/templates/proxy-default.conf index 84ee8f3345..c1f9787382 100644 --- a/ansible/roles/stack-proxy/templates/proxy-default.conf +++ b/ansible/roles/stack-proxy/templates/proxy-default.conf @@ -245,7 +245,7 @@ server { # set $azure_bucket "sunbird{{sunbird_blob_env}}.blob.core.windows.net"; # upstream_url: azure.nt/container_name - set $bucket "{{upstream_url}}"; + set $bucket "{{upstream_url.split('/')[0]|lower}}"; set $url_full '$1'; proxy_http_version 1.1; proxy_set_header Host $bucket; @@ -260,7 +260,7 @@ server { proxy_intercept_errors on; add_header Access-Control-Allow-Origin "*"; add_header Access-Control-Allow-Methods GET; - proxy_pass https://$bucket/$url_full; + proxy_pass http://$bucket/$url_full; } From 65499c8dd8807ae16e437907deb90a5aee9447f4 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Thu, 20 Sep 2018 02:14:12 +0530 Subject: [PATCH 0196/1345] Issue #000 feat: corrected service name to encryption-service --- .../roles/stack-sunbird/templates/stack_encryption_service.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/stack-sunbird/templates/stack_encryption_service.yml b/ansible/roles/stack-sunbird/templates/stack_encryption_service.yml index d80f89c20a..ec54a3b4be 100644 --- a/ansible/roles/stack-sunbird/templates/stack_encryption_service.yml +++ b/ansible/roles/stack-sunbird/templates/stack_encryption_service.yml @@ -1,6 +1,6 @@ version: '3.1' services: - config_service: + encryption-service: image: "{{hub_org}}/{{image_name}}:{{image_tag}}" env_file: /home/deployer/env/sunbird_encryption_service.env From 6790888e70b73bb9e4d2925b5f03d43303772987 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Wed, 26 Sep 2018 19:31:19 +0530 Subject: [PATCH 0197/1345] Issue #000 feat: fix proxy host --- ansible/roles/stack-proxy/templates/proxy-default.conf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ansible/roles/stack-proxy/templates/proxy-default.conf b/ansible/roles/stack-proxy/templates/proxy-default.conf index c1f9787382..d0acc58b3f 100644 --- a/ansible/roles/stack-proxy/templates/proxy-default.conf +++ b/ansible/roles/stack-proxy/templates/proxy-default.conf @@ -245,10 +245,10 @@ server { # set $azure_bucket "sunbird{{sunbird_blob_env}}.blob.core.windows.net"; # upstream_url: azure.nt/container_name - set $bucket "{{upstream_url.split('/')[0]|lower}}"; + set $bucket "{{upstream_url}}"; set $url_full '$1'; proxy_http_version 1.1; - proxy_set_header Host $bucket; + proxy_set_header Host "{{upstream_url.split('/')[0]|lower}}"; proxy_set_header Authorization ''; proxy_hide_header Access-Control-Allow-Origin; proxy_hide_header Access-Control-Allow-Methods; From 49d82ad041d137f888e0741237b573c7c8bbd0b8 Mon Sep 17 00:00:00 2001 From: S M Y Date: Wed, 26 Sep 2018 20:58:27 +0530 Subject: [PATCH 0198/1345] Issue #000 cql: Supporting Cassandra cluster --- ansible/roles/cassandra/tasks/main.yml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/ansible/roles/cassandra/tasks/main.yml b/ansible/roles/cassandra/tasks/main.yml index 1273b7f597..e78b5f616f 100755 --- a/ansible/roles/cassandra/tasks/main.yml +++ b/ansible/roles/cassandra/tasks/main.yml @@ -20,6 +20,15 @@ name: "cassandra" state: "present" +- name: copying the rack and datacenter config file if we are having cluster + template: + src: "cassandra-rackdc.properties.j2" + dest: "{{ cassandra_root_dir }}/cassandra-rackdc.properties" + owner: "root" + group: "root" + mode: "0644" + when: groups['cassandra'][1] + - name: config | Configuring Cassandra template: src: "cassandra.yaml.j2" From 778cf303a69c6aab43a12931621348546941f742 Mon Sep 17 00:00:00 2001 From: S M Y Date: Wed, 26 Sep 2018 20:58:53 +0530 Subject: [PATCH 0199/1345] Issue #000 cql: config related to Cassandra cluster --- .../roles/cassandra/templates/cassandra.yaml | 1041 ----------------- 1 file changed, 1041 deletions(-) delete mode 100755 ansible/roles/cassandra/templates/cassandra.yaml diff --git a/ansible/roles/cassandra/templates/cassandra.yaml b/ansible/roles/cassandra/templates/cassandra.yaml deleted file mode 100755 index a51f993535..0000000000 --- a/ansible/roles/cassandra/templates/cassandra.yaml +++ /dev/null @@ -1,1041 +0,0 @@ -# Cassandra storage config YAML - -# NOTE: -# See http://wiki.apache.org/cassandra/StorageConfiguration for -# full explanations of configuration directives -# /NOTE - -# The name of the cluster. This is mainly used to prevent machines in -# one logical cluster from joining another. -cluster_name: 'Test Cluster' - -# This defines the number of tokens randomly assigned to this node on the ring -# The more tokens, relative to other nodes, the larger the proportion of data -# that this node will store. You probably want all nodes to have the same number -# of tokens assuming they have equal hardware capability. -# -# If you leave this unspecified, Cassandra will use the default of 1 token for legacy compatibility, -# and will use the initial_token as described below. -# -# Specifying initial_token will override this setting on the node's initial start, -# on subsequent starts, this setting will apply even if initial token is set. -# -# If you already have a cluster with 1 token per node, and wish to migrate to -# multiple tokens per node, see http://wiki.apache.org/cassandra/Operations -num_tokens: 256 - -# Triggers automatic allocation of num_tokens tokens for this node. The allocation -# algorithm attempts to choose tokens in a way that optimizes replicated load over -# the nodes in the datacenter for the replication strategy used by the specified -# keyspace. -# -# The load assigned to each node will be close to proportional to its number of -# vnodes. -# -# Only supported with the Murmur3Partitioner. -# allocate_tokens_for_keyspace: KEYSPACE - -# initial_token allows you to specify tokens manually. While you can use # it with -# vnodes (num_tokens > 1, above) -- in which case you should provide a -# comma-separated list -- it's primarily used when adding nodes # to legacy clusters -# that do not have vnodes enabled. -# initial_token: - -# See http://wiki.apache.org/cassandra/HintedHandoff -# May either be "true" or "false" to enable globally -hinted_handoff_enabled: true -# When hinted_handoff_enabled is true, a black list of data centers that will not -# perform hinted handoff -#hinted_handoff_disabled_datacenters: -# - DC1 -# - DC2 -# this defines the maximum amount of time a dead host will have hints -# generated. After it has been dead this long, new hints for it will not be -# created until it has been seen alive and gone down again. -max_hint_window_in_ms: 10800000 # 3 hours - -# Maximum throttle in KBs per second, per delivery thread. This will be -# reduced proportionally to the number of nodes in the cluster. (If there -# are two nodes in the cluster, each delivery thread will use the maximum -# rate; if there are three, each will throttle to half of the maximum, -# since we expect two nodes to be delivering hints simultaneously.) -hinted_handoff_throttle_in_kb: 1024 - -# Number of threads with which to deliver hints; -# Consider increasing this number when you have multi-dc deployments, since -# cross-dc handoff tends to be slower -max_hints_delivery_threads: 2 - -# Directory where Cassandra should store hints. -# If not set, the default directory is $CASSANDRA_HOME/data/hints. -# hints_directory: /var/lib/cassandra/hints - -# How often hints should be flushed from the internal buffers to disk. -# Will *not* trigger fsync. -hints_flush_period_in_ms: 10000 - -# Maximum size for a single hints file, in megabytes. -max_hints_file_size_in_mb: 128 - -# Compression to apply to the hint files. If omitted, hints files -# will be written uncompressed. LZ4, Snappy, and Deflate compressors -# are supported. -#hints_compression: -# - class_name: LZ4Compressor -# parameters: -# - - -# Maximum throttle in KBs per second, total. This will be -# reduced proportionally to the number of nodes in the cluster. -batchlog_replay_throttle_in_kb: 1024 - -# Authentication backend, implementing IAuthenticator; used to identify users -# Out of the box, Cassandra provides org.apache.cassandra.auth.{AllowAllAuthenticator, -# PasswordAuthenticator}. -# -# - AllowAllAuthenticator performs no checks - set it to disable authentication. -# - PasswordAuthenticator relies on username/password pairs to authenticate -# users. It keeps usernames and hashed passwords in system_auth.credentials table. -# Please increase system_auth keyspace replication factor if you use this authenticator. -# If using PasswordAuthenticator, CassandraRoleManager must also be used (see below) -authenticator: AllowAllAuthenticator - -# Authorization backend, implementing IAuthorizer; used to limit access/provide permissions -# Out of the box, Cassandra provides org.apache.cassandra.auth.{AllowAllAuthorizer, -# CassandraAuthorizer}. -# -# - AllowAllAuthorizer allows any action to any user - set it to disable authorization. -# - CassandraAuthorizer stores permissions in system_auth.permissions table. Please -# increase system_auth keyspace replication factor if you use this authorizer. -authorizer: AllowAllAuthorizer - -# Part of the Authentication & Authorization backend, implementing IRoleManager; used -# to maintain grants and memberships between roles. -# Out of the box, Cassandra provides org.apache.cassandra.auth.CassandraRoleManager, -# which stores role information in the system_auth keyspace. Most functions of the -# IRoleManager require an authenticated login, so unless the configured IAuthenticator -# actually implements authentication, most of this functionality will be unavailable. -# -# - CassandraRoleManager stores role data in the system_auth keyspace. Please -# increase system_auth keyspace replication factor if you use this role manager. -role_manager: CassandraRoleManager - -# Validity period for roles cache (fetching granted roles can be an expensive -# operation depending on the role manager, CassandraRoleManager is one example) -# Granted roles are cached for authenticated sessions in AuthenticatedUser and -# after the period specified here, become eligible for (async) reload. -# Defaults to 2000, set to 0 to disable caching entirely. -# Will be disabled automatically for AllowAllAuthenticator. -roles_validity_in_ms: 2000 - -# Refresh interval for roles cache (if enabled). -# After this interval, cache entries become eligible for refresh. Upon next -# access, an async reload is scheduled and the old value returned until it -# completes. If roles_validity_in_ms is non-zero, then this must be -# also. -# Defaults to the same value as roles_validity_in_ms. -# roles_update_interval_in_ms: 2000 - -# Validity period for permissions cache (fetching permissions can be an -# expensive operation depending on the authorizer, CassandraAuthorizer is -# one example). Defaults to 2000, set to 0 to disable. -# Will be disabled automatically for AllowAllAuthorizer. -permissions_validity_in_ms: 2000 - -# Refresh interval for permissions cache (if enabled). -# After this interval, cache entries become eligible for refresh. Upon next -# access, an async reload is scheduled and the old value returned until it -# completes. If permissions_validity_in_ms is non-zero, then this must be -# also. -# Defaults to the same value as permissions_validity_in_ms. -# permissions_update_interval_in_ms: 2000 - -# Validity period for credentials cache. This cache is tightly coupled to -# the provided PasswordAuthenticator implementation of IAuthenticator. If -# another IAuthenticator implementation is configured, this cache will not -# be automatically used and so the following settings will have no effect. -# Please note, credentials are cached in their encrypted form, so while -# activating this cache may reduce the number of queries made to the -# underlying table, it may not bring a significant reduction in the -# latency of individual authentication attempts. -# Defaults to 2000, set to 0 to disable credentials caching. -credentials_validity_in_ms: 2000 - -# Refresh interval for credentials cache (if enabled). -# After this interval, cache entries become eligible for refresh. Upon next -# access, an async reload is scheduled and the old value returned until it -# completes. If credentials_validity_in_ms is non-zero, then this must be -# also. -# Defaults to the same value as credentials_validity_in_ms. -# credentials_update_interval_in_ms: 2000 - -# The partitioner is responsible for distributing groups of rows (by -# partition key) across nodes in the cluster. You should leave this -# alone for new clusters. The partitioner can NOT be changed without -# reloading all data, so when upgrading you should set this to the -# same partitioner you were already using. -# -# Besides Murmur3Partitioner, partitioners included for backwards -# compatibility include RandomPartitioner, ByteOrderedPartitioner, and -# OrderPreservingPartitioner. -# -partitioner: org.apache.cassandra.dht.Murmur3Partitioner - -# Directories where Cassandra should store data on disk. Cassandra -# will spread data evenly across them, subject to the granularity of -# the configured compaction strategy. -# If not set, the default directory is $CASSANDRA_HOME/data/data. -data_file_directories: - - /var/lib/cassandra/data - -# commit log. when running on magnetic HDD, this should be a -# separate spindle than the data directories. -# If not set, the default directory is $CASSANDRA_HOME/data/commitlog. -commitlog_directory: /var/lib/cassandra/commitlog - -# policy for data disk failures: -# die: shut down gossip and client transports and kill the JVM for any fs errors or -# single-sstable errors, so the node can be replaced. -# stop_paranoid: shut down gossip and client transports even for single-sstable errors, -# kill the JVM for errors during startup. -# stop: shut down gossip and client transports, leaving the node effectively dead, but -# can still be inspected via JMX, kill the JVM for errors during startup. -# best_effort: stop using the failed disk and respond to requests based on -# remaining available sstables. This means you WILL see obsolete -# data at CL.ONE! -# ignore: ignore fatal errors and let requests fail, as in pre-1.2 Cassandra -disk_failure_policy: stop - -# policy for commit disk failures: -# die: shut down gossip and Thrift and kill the JVM, so the node can be replaced. -# stop: shut down gossip and Thrift, leaving the node effectively dead, but -# can still be inspected via JMX. -# stop_commit: shutdown the commit log, letting writes collect but -# continuing to service reads, as in pre-2.0.5 Cassandra -# ignore: ignore fatal errors and let the batches fail -commit_failure_policy: stop - -# Maximum size of the native protocol prepared statement cache -# -# Valid values are either "auto" (omitting the value) or a value greater 0. -# -# Note that specifying a too large value will result in long running GCs and possbily -# out-of-memory errors. Keep the value at a small fraction of the heap. -# -# If you constantly see "prepared statements discarded in the last minute because -# cache limit reached" messages, the first step is to investigate the root cause -# of these messages and check whether prepared statements are used correctly - -# i.e. use bind markers for variable parts. -# -# Do only change the default value, if you really have more prepared statements than -# fit in the cache. In most cases it is not neccessary to change this value. -# Constantly re-preparing statements is a performance penalty. -# -# Default value ("auto") is 1/256th of the heap or 10MB, whichever is greater -prepared_statements_cache_size_mb: - -# Maximum size of the Thrift prepared statement cache -# -# If you do not use Thrift at all, it is safe to leave this value at "auto". -# -# See description of 'prepared_statements_cache_size_mb' above for more information. -# -# Default value ("auto") is 1/256th of the heap or 10MB, whichever is greater -thrift_prepared_statements_cache_size_mb: - -# Maximum size of the key cache in memory. -# -# Each key cache hit saves 1 seek and each row cache hit saves 2 seeks at the -# minimum, sometimes more. The key cache is fairly tiny for the amount of -# time it saves, so it's worthwhile to use it at large numbers. -# The row cache saves even more time, but must contain the entire row, -# so it is extremely space-intensive. It's best to only use the -# row cache if you have hot rows or static rows. -# -# NOTE: if you reduce the size, you may not get you hottest keys loaded on startup. -# -# Default value is empty to make it "auto" (min(5% of Heap (in MB), 100MB)). Set to 0 to disable key cache. -key_cache_size_in_mb: - -# Duration in seconds after which Cassandra should -# save the key cache. Caches are saved to saved_caches_directory as -# specified in this configuration file. -# -# Saved caches greatly improve cold-start speeds, and is relatively cheap in -# terms of I/O for the key cache. Row cache saving is much more expensive and -# has limited use. -# -# Default is 14400 or 4 hours. -key_cache_save_period: 14400 - -# Number of keys from the key cache to save -# Disabled by default, meaning all keys are going to be saved -# key_cache_keys_to_save: 100 - -# Row cache implementation class name. -# Available implementations: -# org.apache.cassandra.cache.OHCProvider Fully off-heap row cache implementation (default). -# org.apache.cassandra.cache.SerializingCacheProvider This is the row cache implementation availabile -# in previous releases of Cassandra. -# row_cache_class_name: org.apache.cassandra.cache.OHCProvider - -# Maximum size of the row cache in memory. -# Please note that OHC cache implementation requires some additional off-heap memory to manage -# the map structures and some in-flight memory during operations before/after cache entries can be -# accounted against the cache capacity. This overhead is usually small compared to the whole capacity. -# Do not specify more memory that the system can afford in the worst usual situation and leave some -# headroom for OS block level cache. Do never allow your system to swap. -# -# Default value is 0, to disable row caching. -row_cache_size_in_mb: 0 - -# Duration in seconds after which Cassandra should save the row cache. -# Caches are saved to saved_caches_directory as specified in this configuration file. -# -# Saved caches greatly improve cold-start speeds, and is relatively cheap in -# terms of I/O for the key cache. Row cache saving is much more expensive and -# has limited use. -# -# Default is 0 to disable saving the row cache. -row_cache_save_period: 0 - -# Number of keys from the row cache to save. -# Specify 0 (which is the default), meaning all keys are going to be saved -# row_cache_keys_to_save: 100 - -# Maximum size of the counter cache in memory. -# -# Counter cache helps to reduce counter locks' contention for hot counter cells. -# In case of RF = 1 a counter cache hit will cause Cassandra to skip the read before -# write entirely. With RF > 1 a counter cache hit will still help to reduce the duration -# of the lock hold, helping with hot counter cell updates, but will not allow skipping -# the read entirely. Only the local (clock, count) tuple of a counter cell is kept -# in memory, not the whole counter, so it's relatively cheap. -# -# NOTE: if you reduce the size, you may not get you hottest keys loaded on startup. -# -# Default value is empty to make it "auto" (min(2.5% of Heap (in MB), 50MB)). Set to 0 to disable counter cache. -# NOTE: if you perform counter deletes and rely on low gcgs, you should disable the counter cache. -counter_cache_size_in_mb: - -# Duration in seconds after which Cassandra should -# save the counter cache (keys only). Caches are saved to saved_caches_directory as -# specified in this configuration file. -# -# Default is 7200 or 2 hours. -counter_cache_save_period: 7200 - -# Number of keys from the counter cache to save -# Disabled by default, meaning all keys are going to be saved -# counter_cache_keys_to_save: 100 - -# saved caches -# If not set, the default directory is $CASSANDRA_HOME/data/saved_caches. -saved_caches_directory: /var/lib/cassandra/saved_caches - -# commitlog_sync may be either "periodic" or "batch." -# -# When in batch mode, Cassandra won't ack writes until the commit log -# has been fsynced to disk. It will wait -# commitlog_sync_batch_window_in_ms milliseconds between fsyncs. -# This window should be kept short because the writer threads will -# be unable to do extra work while waiting. (You may need to increase -# concurrent_writes for the same reason.) -# -# commitlog_sync: batch -# commitlog_sync_batch_window_in_ms: 2 -# -# the other option is "periodic" where writes may be acked immediately -# and the CommitLog is simply synced every commitlog_sync_period_in_ms -# milliseconds. -commitlog_sync: periodic -commitlog_sync_period_in_ms: 10000 - -# The size of the individual commitlog file segments. A commitlog -# segment may be archived, deleted, or recycled once all the data -# in it (potentially from each columnfamily in the system) has been -# flushed to sstables. -# -# The default size is 32, which is almost always fine, but if you are -# archiving commitlog segments (see commitlog_archiving.properties), -# then you probably want a finer granularity of archiving; 8 or 16 MB -# is reasonable. -# Max mutation size is also configurable via max_mutation_size_in_kb setting in -# cassandra.yaml. The default is half the size commitlog_segment_size_in_mb * 1024. -# -# NOTE: If max_mutation_size_in_kb is set explicitly then commitlog_segment_size_in_mb must -# be set to at least twice the size of max_mutation_size_in_kb / 1024 -# -commitlog_segment_size_in_mb: 32 - -# Compression to apply to the commit log. If omitted, the commit log -# will be written uncompressed. LZ4, Snappy, and Deflate compressors -# are supported. -#commitlog_compression: -# - class_name: LZ4Compressor -# parameters: -# - - -# any class that implements the SeedProvider interface and has a -# constructor that takes a Map of parameters will do. -seed_provider: - # Addresses of hosts that are deemed contact points. - # Cassandra nodes use this list of hosts to find each other and learn - # the topology of the ring. You must change this if you are running - # multiple nodes! - - class_name: org.apache.cassandra.locator.SimpleSeedProvider - parameters: - # seeds is actually a comma-delimited list of addresses. - # Ex: ",," - - seeds: "127.0.0.1" - -# For workloads with more data than can fit in memory, Cassandra's -# bottleneck will be reads that need to fetch data from -# disk. "concurrent_reads" should be set to (16 * number_of_drives) in -# order to allow the operations to enqueue low enough in the stack -# that the OS and drives can reorder them. Same applies to -# "concurrent_counter_writes", since counter writes read the current -# values before incrementing and writing them back. -# -# On the other hand, since writes are almost never IO bound, the ideal -# number of "concurrent_writes" is dependent on the number of cores in -# your system; (8 * number_of_cores) is a good rule of thumb. -concurrent_reads: 32 -concurrent_writes: 32 -concurrent_counter_writes: 32 - -# For materialized view writes, as there is a read involved, so this should -# be limited by the less of concurrent reads or concurrent writes. -concurrent_materialized_view_writes: 32 - -# Maximum memory to use for sstable chunk cache and buffer pooling. -# 32MB of this are reserved for pooling buffers, the rest is used as an -# cache that holds uncompressed sstable chunks. -# Defaults to the smaller of 1/4 of heap or 512MB. This pool is allocated off-heap, -# so is in addition to the memory allocated for heap. The cache also has on-heap -# overhead which is roughly 128 bytes per chunk (i.e. 0.2% of the reserved size -# if the default 64k chunk size is used). -# Memory is only allocated when needed. -# file_cache_size_in_mb: 512 - -# Flag indicating whether to allocate on or off heap when the sstable buffer -# pool is exhausted, that is when it has exceeded the maximum memory -# file_cache_size_in_mb, beyond which it will not cache buffers but allocate on request. - -# buffer_pool_use_heap_if_exhausted: true - -# The strategy for optimizing disk read -# Possible values are: -# ssd (for solid state disks, the default) -# spinning (for spinning disks) -# disk_optimization_strategy: ssd - -# Total permitted memory to use for memtables. Cassandra will stop -# accepting writes when the limit is exceeded until a flush completes, -# and will trigger a flush based on memtable_cleanup_threshold -# If omitted, Cassandra will set both to 1/4 the size of the heap. -# memtable_heap_space_in_mb: 2048 -# memtable_offheap_space_in_mb: 2048 - -# Ratio of occupied non-flushing memtable size to total permitted size -# that will trigger a flush of the largest memtable. Larger mct will -# mean larger flushes and hence less compaction, but also less concurrent -# flush activity which can make it difficult to keep your disks fed -# under heavy write load. -# -# memtable_cleanup_threshold defaults to 1 / (memtable_flush_writers + 1) -# memtable_cleanup_threshold: 0.11 - -# Specify the way Cassandra allocates and manages memtable memory. -# Options are: -# heap_buffers: on heap nio buffers -# offheap_buffers: off heap (direct) nio buffers -# offheap_objects: off heap objects -memtable_allocation_type: heap_buffers - -# Total space to use for commit logs on disk. -# -# If space gets above this value, Cassandra will flush every dirty CF -# in the oldest segment and remove it. So a small total commitlog space -# will tend to cause more flush activity on less-active columnfamilies. -# -# The default value is the smaller of 8192, and 1/4 of the total space -# of the commitlog volume. -# -# commitlog_total_space_in_mb: 8192 - -# This sets the amount of memtable flush writer threads. These will -# be blocked by disk io, and each one will hold a memtable in memory -# while blocked. -# -# memtable_flush_writers defaults to one per data_file_directory. -# -# If your data directories are backed by SSD, you can increase this, but -# avoid having memtable_flush_writers * data_file_directories > number of cores -#memtable_flush_writers: 1 - -# A fixed memory pool size in MB for for SSTable index summaries. If left -# empty, this will default to 5% of the heap size. If the memory usage of -# all index summaries exceeds this limit, SSTables with low read rates will -# shrink their index summaries in order to meet this limit. However, this -# is a best-effort process. In extreme conditions Cassandra may need to use -# more than this amount of memory. -index_summary_capacity_in_mb: - -# How frequently index summaries should be resampled. This is done -# periodically to redistribute memory from the fixed-size pool to sstables -# proportional their recent read rates. Setting to -1 will disable this -# process, leaving existing index summaries at their current sampling level. -index_summary_resize_interval_in_minutes: 60 - -# Whether to, when doing sequential writing, fsync() at intervals in -# order to force the operating system to flush the dirty -# buffers. Enable this to avoid sudden dirty buffer flushing from -# impacting read latencies. Almost always a good idea on SSDs; not -# necessarily on platters. -trickle_fsync: false -trickle_fsync_interval_in_kb: 10240 - -# TCP port, for commands and data -# For security reasons, you should not expose this port to the internet. Firewall it if needed. -storage_port: 7000 - -# SSL port, for encrypted communication. Unused unless enabled in -# encryption_options -# For security reasons, you should not expose this port to the internet. Firewall it if needed. -ssl_storage_port: 7001 - -# Address or interface to bind to and tell other Cassandra nodes to connect to. -# You _must_ change this if you want multiple nodes to be able to communicate! -# -# Set listen_address OR listen_interface, not both. Interfaces must correspond -# to a single address, IP aliasing is not supported. -# -# Leaving it blank leaves it up to InetAddress.getLocalHost(). This -# will always do the Right Thing _if_ the node is properly configured -# (hostname, name resolution, etc), and the Right Thing is to use the -# address associated with the hostname (it might not be). -# -# Setting listen_address to 0.0.0.0 is always wrong. -# -# If you choose to specify the interface by name and the interface has an ipv4 and an ipv6 address -# you can specify which should be chosen using listen_interface_prefer_ipv6. If false the first ipv4 -# address will be used. If true the first ipv6 address will be used. Defaults to false preferring -# ipv4. If there is only one address it will be selected regardless of ipv4/ipv6. -listen_address: localhost -# listen_interface: eth0 -# listen_interface_prefer_ipv6: false - -# Address to broadcast to other Cassandra nodes -# Leaving this blank will set it to the same value as listen_address -# broadcast_address: 1.2.3.4 - -# When using multiple physical network interfaces, set this -# to true to listen on broadcast_address in addition to -# the listen_address, allowing nodes to communicate in both -# interfaces. -# Ignore this property if the network configuration automatically -# routes between the public and private networks such as EC2. -# listen_on_broadcast_address: false - -# Internode authentication backend, implementing IInternodeAuthenticator; -# used to allow/disallow connections from peer nodes. -# internode_authenticator: org.apache.cassandra.auth.AllowAllInternodeAuthenticator - -# Whether to start the native transport server. -# Please note that the address on which the native transport is bound is the -# same as the rpc_address. The port however is different and specified below. -start_native_transport: true -# port for the CQL native transport to listen for clients on -# For security reasons, you should not expose this port to the internet. Firewall it if needed. -native_transport_port: 9042 -# Enabling native transport encryption in client_encryption_options allows you to either use -# encryption for the standard port or to use a dedicated, additional port along with the unencrypted -# standard native_transport_port. -# Enabling client encryption and keeping native_transport_port_ssl disabled will use encryption -# for native_transport_port. Setting native_transport_port_ssl to a different value -# from native_transport_port will use encryption for native_transport_port_ssl while -# keeping native_transport_port unencrypted. -# native_transport_port_ssl: 9142 -# The maximum threads for handling requests when the native transport is used. -# This is similar to rpc_max_threads though the default differs slightly (and -# there is no native_transport_min_threads, idle threads will always be stopped -# after 30 seconds). -# native_transport_max_threads: 128 -# -# The maximum size of allowed frame. Frame (requests) larger than this will -# be rejected as invalid. The default is 256MB. -# native_transport_max_frame_size_in_mb: 256 - -# The maximum number of concurrent client connections. -# The default is -1, which means unlimited. -# native_transport_max_concurrent_connections: -1 - -# The maximum number of concurrent client connections per source ip. -# The default is -1, which means unlimited. -# native_transport_max_concurrent_connections_per_ip: -1 - -# Whether to start the thrift rpc server. -start_rpc: false - -# The address or interface to bind the Thrift RPC service and native transport -# server to. -# -# Set rpc_address OR rpc_interface, not both. Interfaces must correspond -# to a single address, IP aliasing is not supported. -# -# Leaving rpc_address blank has the same effect as on listen_address -# (i.e. it will be based on the configured hostname of the node). -# -# Note that unlike listen_address, you can specify 0.0.0.0, but you must also -# set broadcast_rpc_address to a value other than 0.0.0.0. -# -# For security reasons, you should not expose this port to the internet. Firewall it if needed. -# -# If you choose to specify the interface by name and the interface has an ipv4 and an ipv6 address -# you can specify which should be chosen using rpc_interface_prefer_ipv6. If false the first ipv4 -# address will be used. If true the first ipv6 address will be used. Defaults to false preferring -# ipv4. If there is only one address it will be selected regardless of ipv4/ipv6. -rpc_address: localhost -# rpc_interface: eth1 -# rpc_interface_prefer_ipv6: false - -# port for Thrift to listen for clients on -rpc_port: 9160 - -# RPC address to broadcast to drivers and other Cassandra nodes. This cannot -# be set to 0.0.0.0. If left blank, this will be set to the value of -# rpc_address. If rpc_address is set to 0.0.0.0, broadcast_rpc_address must -# be set. -# broadcast_rpc_address: 1.2.3.4 - -# enable or disable keepalive on rpc/native connections -rpc_keepalive: true - -# Cassandra provides two out-of-the-box options for the RPC Server: -# -# sync -> One thread per thrift connection. For a very large number of clients, memory -# will be your limiting factor. On a 64 bit JVM, 180KB is the minimum stack size -# per thread, and that will correspond to your use of virtual memory (but physical memory -# may be limited depending on use of stack space). -# -# hsha -> Stands for "half synchronous, half asynchronous." All thrift clients are handled -# asynchronously using a small number of threads that does not vary with the amount -# of thrift clients (and thus scales well to many clients). The rpc requests are still -# synchronous (one thread per active request). If hsha is selected then it is essential -# that rpc_max_threads is changed from the default value of unlimited. -# -# The default is sync because on Windows hsha is about 30% slower. On Linux, -# sync/hsha performance is about the same, with hsha of course using less memory. -# -# Alternatively, can provide your own RPC server by providing the fully-qualified class name -# of an o.a.c.t.TServerFactory that can create an instance of it. -rpc_server_type: sync - -# Uncomment rpc_min|max_thread to set request pool size limits. -# -# Regardless of your choice of RPC server (see above), the number of maximum requests in the -# RPC thread pool dictates how many concurrent requests are possible (but if you are using the sync -# RPC server, it also dictates the number of clients that can be connected at all). -# -# The default is unlimited and thus provides no protection against clients overwhelming the server. You are -# encouraged to set a maximum that makes sense for you in production, but do keep in mind that -# rpc_max_threads represents the maximum number of client requests this server may execute concurrently. -# -# rpc_min_threads: 16 -# rpc_max_threads: 2048 - -# uncomment to set socket buffer sizes on rpc connections -# rpc_send_buff_size_in_bytes: -# rpc_recv_buff_size_in_bytes: - -# Uncomment to set socket buffer size for internode communication -# Note that when setting this, the buffer size is limited by net.core.wmem_max -# and when not setting it it is defined by net.ipv4.tcp_wmem -# See: -# /proc/sys/net/core/wmem_max -# /proc/sys/net/core/rmem_max -# /proc/sys/net/ipv4/tcp_wmem -# /proc/sys/net/ipv4/tcp_wmem -# and: man tcp -# internode_send_buff_size_in_bytes: -# internode_recv_buff_size_in_bytes: - -# Frame size for thrift (maximum message length). -thrift_framed_transport_size_in_mb: 15 - -# Set to true to have Cassandra create a hard link to each sstable -# flushed or streamed locally in a backups/ subdirectory of the -# keyspace data. Removing these links is the operator's -# responsibility. -incremental_backups: false - -# Whether or not to take a snapshot before each compaction. Be -# careful using this option, since Cassandra won't clean up the -# snapshots for you. Mostly useful if you're paranoid when there -# is a data format change. -snapshot_before_compaction: false - -# Whether or not a snapshot is taken of the data before keyspace truncation -# or dropping of column families. The STRONGLY advised default of true -# should be used to provide data safety. If you set this flag to false, you will -# lose data on truncation or drop. -auto_snapshot: true - -# Granularity of the collation index of rows within a partition. -# Increase if your rows are large, or if you have a very large -# number of rows per partition. The competing goals are these: -# 1) a smaller granularity means more index entries are generated -# and looking up rows withing the partition by collation column -# is faster -# 2) but, Cassandra will keep the collation index in memory for hot -# rows (as part of the key cache), so a larger granularity means -# you can cache more hot rows -column_index_size_in_kb: 64 -# Per sstable indexed key cache entries (the collation index in memory -# mentioned above) exceeding this size will not be held on heap. -# This means that only partition information is held on heap and the -# index entries are read from disk. -# -# Note that this size refers to the size of the -# serialized index information and not the size of the partition. -column_index_cache_size_in_kb: 2 - -# Number of simultaneous compactions to allow, NOT including -# validation "compactions" for anti-entropy repair. Simultaneous -# compactions can help preserve read performance in a mixed read/write -# workload, by mitigating the tendency of small sstables to accumulate -# during a single long running compactions. The default is usually -# fine and if you experience problems with compaction running too -# slowly or too fast, you should look at -# compaction_throughput_mb_per_sec first. -# -# concurrent_compactors defaults to the smaller of (number of disks, -# number of cores), with a minimum of 2 and a maximum of 8. -# -# If your data directories are backed by SSD, you should increase this -# to the number of cores. -#concurrent_compactors: 1 - -# Throttles compaction to the given total throughput across the entire -# system. The faster you insert data, the faster you need to compact in -# order to keep the sstable count down, but in general, setting this to -# 16 to 32 times the rate you are inserting data is more than sufficient. -# Setting this to 0 disables throttling. Note that this account for all types -# of compaction, including validation compaction. -compaction_throughput_mb_per_sec: 16 - -# When compacting, the replacement sstable(s) can be opened before they -# are completely written, and used in place of the prior sstables for -# any range that has been written. This helps to smoothly transfer reads -# between the sstables, reducing page cache churn and keeping hot rows hot -sstable_preemptive_open_interval_in_mb: 50 - -# Throttles all outbound streaming file transfers on this node to the -# given total throughput in Mbps. This is necessary because Cassandra does -# mostly sequential IO when streaming data during bootstrap or repair, which -# can lead to saturating the network connection and degrading rpc performance. -# When unset, the default is 200 Mbps or 25 MB/s. -# stream_throughput_outbound_megabits_per_sec: 200 - -# Throttles all streaming file transfer between the datacenters, -# this setting allows users to throttle inter dc stream throughput in addition -# to throttling all network stream traffic as configured with -# stream_throughput_outbound_megabits_per_sec -# When unset, the default is 200 Mbps or 25 MB/s -# inter_dc_stream_throughput_outbound_megabits_per_sec: 200 - -# How long the coordinator should wait for read operations to complete -read_request_timeout_in_ms: 5000 -# How long the coordinator should wait for seq or index scans to complete -range_request_timeout_in_ms: 10000 -# How long the coordinator should wait for writes to complete -write_request_timeout_in_ms: 2000 -# How long the coordinator should wait for counter writes to complete -counter_write_request_timeout_in_ms: 5000 -# How long a coordinator should continue to retry a CAS operation -# that contends with other proposals for the same row -cas_contention_timeout_in_ms: 1000 -# How long the coordinator should wait for truncates to complete -# (This can be much longer, because unless auto_snapshot is disabled -# we need to flush first so we can snapshot before removing the data.) -truncate_request_timeout_in_ms: 60000 -# The default timeout for other, miscellaneous operations -request_timeout_in_ms: 10000 - -# Enable operation timeout information exchange between nodes to accurately -# measure request timeouts. If disabled, replicas will assume that requests -# were forwarded to them instantly by the coordinator, which means that -# under overload conditions we will waste that much extra time processing -# already-timed-out requests. -# -# Warning: before enabling this property make sure to ntp is installed -# and the times are synchronized between the nodes. -cross_node_timeout: false - -# Set socket timeout for streaming operation. -# The stream session is failed if no data is received by any of the -# participants within that period. -# Default value is 3600000, which means streams timeout after an hour. -# streaming_socket_timeout_in_ms: 3600000 - -# phi value that must be reached for a host to be marked down. -# most users should never need to adjust this. -# phi_convict_threshold: 8 - -# endpoint_snitch -- Set this to a class that implements -# IEndpointSnitch. The snitch has two functions: -# - it teaches Cassandra enough about your network topology to route -# requests efficiently -# - it allows Cassandra to spread replicas around your cluster to avoid -# correlated failures. It does this by grouping machines into -# "datacenters" and "racks." Cassandra will do its best not to have -# more than one replica on the same "rack" (which may not actually -# be a physical location) -# -# IF YOU CHANGE THE SNITCH AFTER DATA IS INSERTED INTO THE CLUSTER, -# YOU MUST RUN A FULL REPAIR, SINCE THE SNITCH AFFECTS WHERE REPLICAS -# ARE PLACED. -# -# IF THE RACK A REPLICA IS PLACED IN CHANGES AFTER THE REPLICA HAS BEEN -# ADDED TO A RING, THE NODE MUST BE DECOMMISSIONED AND REBOOTSTRAPPED. -# -# Out of the box, Cassandra provides -# - SimpleSnitch: -# Treats Strategy order as proximity. This can improve cache -# locality when disabling read repair. Only appropriate for -# single-datacenter deployments. -# - GossipingPropertyFileSnitch -# This should be your go-to snitch for production use. The rack -# and datacenter for the local node are defined in -# cassandra-rackdc.properties and propagated to other nodes via -# gossip. If cassandra-topology.properties exists, it is used as a -# fallback, allowing migration from the PropertyFileSnitch. -# - PropertyFileSnitch: -# Proximity is determined by rack and data center, which are -# explicitly configured in cassandra-topology.properties. -# - Ec2Snitch: -# Appropriate for EC2 deployments in a single Region. Loads Region -# and Availability Zone information from the EC2 API. The Region is -# treated as the datacenter, and the Availability Zone as the rack. -# Only private IPs are used, so this will not work across multiple -# Regions. -# - Ec2MultiRegionSnitch: -# Uses public IPs as broadcast_address to allow cross-region -# connectivity. (Thus, you should set seed addresses to the public -# IP as well.) You will need to open the storage_port or -# ssl_storage_port on the public IP firewall. (For intra-Region -# traffic, Cassandra will switch to the private IP after -# establishing a connection.) -# - RackInferringSnitch: -# Proximity is determined by rack and data center, which are -# assumed to correspond to the 3rd and 2nd octet of each node's IP -# address, respectively. Unless this happens to match your -# deployment conventions, this is best used as an example of -# writing a custom Snitch class and is provided in that spirit. -# -# You can use a custom Snitch by setting this to the full class name -# of the snitch, which will be assumed to be on your classpath. -endpoint_snitch: SimpleSnitch - -# controls how often to perform the more expensive part of host score -# calculation -dynamic_snitch_update_interval_in_ms: 100 -# controls how often to reset all host scores, allowing a bad host to -# possibly recover -dynamic_snitch_reset_interval_in_ms: 600000 -# if set greater than zero and read_repair_chance is < 1.0, this will allow -# 'pinning' of replicas to hosts in order to increase cache capacity. -# The badness threshold will control how much worse the pinned host has to be -# before the dynamic snitch will prefer other replicas over it. This is -# expressed as a double which represents a percentage. Thus, a value of -# 0.2 means Cassandra would continue to prefer the static snitch values -# until the pinned host was 20% worse than the fastest. -dynamic_snitch_badness_threshold: 0.1 - -# request_scheduler -- Set this to a class that implements -# RequestScheduler, which will schedule incoming client requests -# according to the specific policy. This is useful for multi-tenancy -# with a single Cassandra cluster. -# NOTE: This is specifically for requests from the client and does -# not affect inter node communication. -# org.apache.cassandra.scheduler.NoScheduler - No scheduling takes place -# org.apache.cassandra.scheduler.RoundRobinScheduler - Round robin of -# client requests to a node with a separate queue for each -# request_scheduler_id. The scheduler is further customized by -# request_scheduler_options as described below. -request_scheduler: org.apache.cassandra.scheduler.NoScheduler - -# Scheduler Options vary based on the type of scheduler -# NoScheduler - Has no options -# RoundRobin -# - throttle_limit -- The throttle_limit is the number of in-flight -# requests per client. Requests beyond -# that limit are queued up until -# running requests can complete. -# The value of 80 here is twice the number of -# concurrent_reads + concurrent_writes. -# - default_weight -- default_weight is optional and allows for -# overriding the default which is 1. -# - weights -- Weights are optional and will default to 1 or the -# overridden default_weight. The weight translates into how -# many requests are handled during each turn of the -# RoundRobin, based on the scheduler id. -# -# request_scheduler_options: -# throttle_limit: 80 -# default_weight: 5 -# weights: -# Keyspace1: 1 -# Keyspace2: 5 - -# request_scheduler_id -- An identifier based on which to perform -# the request scheduling. Currently the only valid option is keyspace. -# request_scheduler_id: keyspace - -# Enable or disable inter-node encryption -# JVM defaults for supported SSL socket protocols and cipher suites can -# be replaced using custom encryption options. This is not recommended -# unless you have policies in place that dictate certain settings, or -# need to disable vulnerable ciphers or protocols in case the JVM cannot -# be updated. -# FIPS compliant settings can be configured at JVM level and should not -# involve changing encryption settings here: -# https://docs.oracle.com/javase/8/docs/technotes/guides/security/jsse/FIPS.html -# NOTE: No custom encryption options are enabled at the moment -# The available internode options are : all, none, dc, rack -# -# If set to dc cassandra will encrypt the traffic between the DCs -# If set to rack cassandra will encrypt the traffic between the racks -# -# The passwords used in these options must match the passwords used when generating -# the keystore and truststore. For instructions on generating these files, see: -# http://download.oracle.com/javase/6/docs/technotes/guides/security/jsse/JSSERefGuide.html#CreateKeystore -# -server_encryption_options: - internode_encryption: none - keystore: conf/.keystore - keystore_password: cassandra - truststore: conf/.truststore - truststore_password: cassandra - # More advanced defaults below: - # protocol: TLS - # algorithm: SunX509 - # store_type: JKS - # cipher_suites: [TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_DHE_RSA_WITH_AES_128_CBC_SHA,TLS_DHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA] - # require_client_auth: false - # require_endpoint_verification: false - -# enable or disable client/server encryption. -client_encryption_options: - enabled: false - # If enabled and optional is set to true encrypted and unencrypted connections are handled. - optional: false - keystore: conf/.keystore - keystore_password: cassandra - # require_client_auth: false - # Set trustore and truststore_password if require_client_auth is true - # truststore: conf/.truststore - # truststore_password: cassandra - # More advanced defaults below: - # protocol: TLS - # algorithm: SunX509 - # store_type: JKS - # cipher_suites: [TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_DHE_RSA_WITH_AES_128_CBC_SHA,TLS_DHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA] - -# internode_compression controls whether traffic between nodes is -# compressed. -# can be: all - all traffic is compressed -# dc - traffic between different datacenters is compressed -# none - nothing is compressed. -internode_compression: dc - -# Enable or disable tcp_nodelay for inter-dc communication. -# Disabling it will result in larger (but fewer) network packets being sent, -# reducing overhead from the TCP protocol itself, at the cost of increasing -# latency if you block for cross-datacenter responses. -inter_dc_tcp_nodelay: false - -# TTL for different trace types used during logging of the repair process. -tracetype_query_ttl: 86400 -tracetype_repair_ttl: 604800 - -# UDFs (user defined functions) are disabled by default. -# As of Cassandra 3.0 there is a sandbox in place that should prevent execution of evil code. -enable_user_defined_functions: false - -# Enables scripted UDFs (JavaScript UDFs). -# Java UDFs are always enabled, if enable_user_defined_functions is true. -# Enable this option to be able to use UDFs with "language javascript" or any custom JSR-223 provider. -# This option has no effect, if enable_user_defined_functions is false. -enable_scripted_user_defined_functions: false - -# The default Windows kernel timer and scheduling resolution is 15.6ms for power conservation. -# Lowering this value on Windows can provide much tighter latency and better throughput, however -# some virtualized environments may see a negative performance impact from changing this setting -# below their system default. The sysinternals 'clockres' tool can confirm your system's default -# setting. -windows_timer_interval: 1 - - -# Enables encrypting data at-rest (on disk). Different key providers can be plugged in, but the default reads from -# a JCE-style keystore. A single keystore can hold multiple keys, but the one referenced by -# the "key_alias" is the only key that will be used for encrypt opertaions; previously used keys -# can still (and should!) be in the keystore and will be used on decrypt operations -# (to handle the case of key rotation). -# -# It is strongly recommended to download and install Java Cryptography Extension (JCE) -# Unlimited Strength Jurisdiction Policy Files for your version of the JDK. -# (current link: http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html) -# -# Currently, only the following file types are supported for transparent data encryption, although -# more are coming in future cassandra releases: commitlog, hints -transparent_data_encryption_options: - enabled: false - chunk_length_kb: 64 - cipher: AES/CBC/PKCS5Padding - key_alias: testing:1 - # CBC IV length for AES needs to be 16 bytes (which is also the default size) - # iv_length: 16 - key_provider: - - class_name: org.apache.cassandra.security.JKSKeyProvider - parameters: - - keystore: conf/.keystore - keystore_password: cassandra - store_type: JCEKS - key_password: cassandra - - -##################### -# SAFETY THRESHOLDS # -##################### - -# When executing a scan, within or across a partition, we need to keep the -# tombstones seen in memory so we can return them to the coordinator, which -# will use them to make sure other replicas also know about the deleted rows. -# With workloads that generate a lot of tombstones, this can cause performance -# problems and even exaust the server heap. -# (http://www.datastax.com/dev/blog/cassandra-anti-patterns-queues-and-queue-like-datasets) -# Adjust the thresholds here if you understand the dangers and want to -# scan more tombstones anyway. These thresholds may also be adjusted at runtime -# using the StorageService mbean. -tombstone_warn_threshold: 1000 -tombstone_failure_threshold: 100000 - -# Log WARN on any batch size exceeding this value. 5kb per batch by default. -# Caution should be taken on increasing the size of this threshold as it can lead to node instability. -batch_size_warn_threshold_in_kb: 5 - -# Fail any batch exceeding this value. 50kb (10x warn threshold) by default. -batch_size_fail_threshold_in_kb: 50 - -# Log WARN on any batches not of type LOGGED than span across more partitions than this limit -unlogged_batch_across_partitions_warn_threshold: 10 - -# Log a warning when compacting partitions larger than this value -compaction_large_partition_warning_threshold_mb: 100 - -# GC Pauses greater than gc_warn_threshold_in_ms will be logged at WARN level -# Adjust the threshold based on your application throughput requirement -# By default, Cassandra logs GC Pauses greater than 200 ms at INFO level -gc_warn_threshold_in_ms: 1000 From 22ca0a06104596785c28b27e6a8aeede07a8a5ec Mon Sep 17 00:00:00 2001 From: S M Y Date: Wed, 26 Sep 2018 20:59:05 +0530 Subject: [PATCH 0200/1345] Issue #000 cql: config related to Cassandra cluster --- .../cassandra/templates/cassandra.yaml.j2 | 20 ++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/ansible/roles/cassandra/templates/cassandra.yaml.j2 b/ansible/roles/cassandra/templates/cassandra.yaml.j2 index a653707926..73776a01ee 100755 --- a/ansible/roles/cassandra/templates/cassandra.yaml.j2 +++ b/ansible/roles/cassandra/templates/cassandra.yaml.j2 @@ -40,7 +40,11 @@ seed_provider: parameters: # seeds is actually a comma-delimited list of addresses. # Ex: ",," + {% if groups['cassandra'][1] %} + - seeds: "{{groups['cassandra'][0],groups['cassandra'][1]}}" + {% else %} - seeds: {{cassandra_seeds}} + {% endif %} concurrent_reads: 32 concurrent_writes: 32 concurrent_counter_writes: 32 @@ -52,14 +56,20 @@ trickle_fsync: false trickle_fsync_interval_in_kb: 10240 storage_port: 7000 ssl_storage_port: 7001 +{% if groups['cassandra'][1] %} +listen_address: {{hostvars[inventory_hostname]['ansible_default_ipv4']['address']}} +broadcast_address: {{hostvars[inventory_hostname]['ansible_default_ipv4']['address']}} +broadcast_rpc_address: {{hostvars[inventory_hostname]['ansible_default_ipv4']['address']}} +{% else %} listen_address: {{cassandra_listen_address}} +broadcast_address: {{cassandra_broadcast_address}} +broadcast_rpc_address: {{cassandra_broadcast_rpc_address}} +{% endif %} listen_interface: {{cassandra_listen_interface}} start_native_transport: true native_transport_port: 9042 start_rpc: false rpc_address: {{cassandra_rpc_address}} -broadcast_rpc_address: {{cassandra_broadcast_rpc_address}} -broadcast_address: {{cassandra_broadcast_address}} rpc_port: 9160 rpc_keepalive: true rpc_server_type: sync @@ -79,7 +89,11 @@ cas_contention_timeout_in_ms: 1000 truncate_request_timeout_in_ms: 60000 request_timeout_in_ms: 10000 cross_node_timeout: false +{% if groups['cassandra'][1] is defined %} +endpoint_snitch: GossipingPropertyFileSnitch +{% else %} endpoint_snitch: SimpleSnitch +{% endif %} dynamic_snitch_update_interval_in_ms: 100 dynamic_snitch_reset_interval_in_ms: 600000 dynamic_snitch_badness_threshold: 0.1 @@ -159,4 +173,4 @@ batch_size_warn_threshold_in_kb: 5 batch_size_fail_threshold_in_kb: 50 unlogged_batch_across_partitions_warn_threshold: 10 compaction_large_partition_warning_threshold_mb: 100 -gc_warn_threshold_in_ms: 1000 \ No newline at end of file +gc_warn_threshold_in_ms: 1000 From 11c48e2d8cf4dc782ce0a40e7b35d57648f77bd0 Mon Sep 17 00:00:00 2001 From: S M Y Date: Wed, 26 Sep 2018 20:59:30 +0530 Subject: [PATCH 0201/1345] Issue #000 cql: creating Datacenter for casandra cluster to work --- .../templates/cassandra-rackdc.properties.j2 | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 ansible/roles/cassandra/templates/cassandra-rackdc.properties.j2 diff --git a/ansible/roles/cassandra/templates/cassandra-rackdc.properties.j2 b/ansible/roles/cassandra/templates/cassandra-rackdc.properties.j2 new file mode 100644 index 0000000000..94c66da80e --- /dev/null +++ b/ansible/roles/cassandra/templates/cassandra-rackdc.properties.j2 @@ -0,0 +1,31 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# These properties are used with GossipingPropertyFileSnitch and will +# indicate the rack and dc for this node +{% if groups['cassandra'][1] %} +dc=datacenter1 +rack=rack1 +{% else %} +dc=dc1 +rack=rack1 +{% endif %} +# Add a suffix to a datacenter name. Used by the Ec2Snitch and Ec2MultiRegionSnitch +# to append a string to the EC2 region name. +#dc_suffix= + +# Uncomment the following line to make this snitch prefer the internal ip when possible, as the Ec2MultiRegionSnitch does. +# prefer_local=true From c8f80a4272179c31b971ac81b3db6a69af229abe Mon Sep 17 00:00:00 2001 From: S M Y Date: Wed, 26 Sep 2018 21:34:13 +0530 Subject: [PATCH 0202/1345] Issue #000 cql: cql indentation --- ansible/roles/cassandra/templates/cassandra.yaml.j2 | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ansible/roles/cassandra/templates/cassandra.yaml.j2 b/ansible/roles/cassandra/templates/cassandra.yaml.j2 index 73776a01ee..0df2ca0fc3 100755 --- a/ansible/roles/cassandra/templates/cassandra.yaml.j2 +++ b/ansible/roles/cassandra/templates/cassandra.yaml.j2 @@ -40,11 +40,11 @@ seed_provider: parameters: # seeds is actually a comma-delimited list of addresses. # Ex: ",," - {% if groups['cassandra'][1] %} +{% if groups['cassandra'][1] %} - seeds: "{{groups['cassandra'][0],groups['cassandra'][1]}}" - {% else %} +{% else %} - seeds: {{cassandra_seeds}} - {% endif %} +{% endif %} concurrent_reads: 32 concurrent_writes: 32 concurrent_counter_writes: 32 From a2132fd9f414e7833d7d53833d7c6fc59e4ff8aa Mon Sep 17 00:00:00 2001 From: S M Y Date: Wed, 26 Sep 2018 21:35:53 +0530 Subject: [PATCH 0203/1345] Issue #000 cql: cql indentation --- ansible/roles/cassandra/templates/cassandra.yaml.j2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/cassandra/templates/cassandra.yaml.j2 b/ansible/roles/cassandra/templates/cassandra.yaml.j2 index 0df2ca0fc3..b8369b4a65 100755 --- a/ansible/roles/cassandra/templates/cassandra.yaml.j2 +++ b/ansible/roles/cassandra/templates/cassandra.yaml.j2 @@ -41,7 +41,7 @@ seed_provider: # seeds is actually a comma-delimited list of addresses. # Ex: ",," {% if groups['cassandra'][1] %} - - seeds: "{{groups['cassandra'][0],groups['cassandra'][1]}}" + - seeds: "{{groups['cassandra'][0]}},{{groups['cassandra'][1]}}" {% else %} - seeds: {{cassandra_seeds}} {% endif %} From aeae91576e8cae1625d6b35b4116232d7aa9e68b Mon Sep 17 00:00:00 2001 From: S M Y Date: Thu, 27 Sep 2018 16:51:23 +0530 Subject: [PATCH 0204/1345] Issue #000 skip: skipping copying files to remote server when not multinode --- ansible/roles/cassandra/tasks/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/cassandra/tasks/main.yml b/ansible/roles/cassandra/tasks/main.yml index e78b5f616f..0ca53a2177 100755 --- a/ansible/roles/cassandra/tasks/main.yml +++ b/ansible/roles/cassandra/tasks/main.yml @@ -27,7 +27,7 @@ owner: "root" group: "root" mode: "0644" - when: groups['cassandra'][1] + when: groups['cassandra-2'] is defined - name: config | Configuring Cassandra template: From c99212ca4f1f6425829431256d6df86bd4775b81 Mon Sep 17 00:00:00 2001 From: S M Y Date: Thu, 27 Sep 2018 17:03:01 +0530 Subject: [PATCH 0205/1345] Issue #000 feat: Adding Cassandra cluster configuration --- ansible/roles/cassandra/templates/cassandra.yaml.j2 | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ansible/roles/cassandra/templates/cassandra.yaml.j2 b/ansible/roles/cassandra/templates/cassandra.yaml.j2 index b8369b4a65..ae27d2c518 100755 --- a/ansible/roles/cassandra/templates/cassandra.yaml.j2 +++ b/ansible/roles/cassandra/templates/cassandra.yaml.j2 @@ -40,7 +40,7 @@ seed_provider: parameters: # seeds is actually a comma-delimited list of addresses. # Ex: ",," -{% if groups['cassandra'][1] %} +{% if groups['cassandra-2'] is defined %} - seeds: "{{groups['cassandra'][0]}},{{groups['cassandra'][1]}}" {% else %} - seeds: {{cassandra_seeds}} @@ -56,12 +56,12 @@ trickle_fsync: false trickle_fsync_interval_in_kb: 10240 storage_port: 7000 ssl_storage_port: 7001 -{% if groups['cassandra'][1] %} +{% if groups['cassandra-2'] is defined %} listen_address: {{hostvars[inventory_hostname]['ansible_default_ipv4']['address']}} broadcast_address: {{hostvars[inventory_hostname]['ansible_default_ipv4']['address']}} broadcast_rpc_address: {{hostvars[inventory_hostname]['ansible_default_ipv4']['address']}} {% else %} -listen_address: {{cassandra_listen_address}} +listen_address: {{cassandra_listen_address}}-ekstep broadcast_address: {{cassandra_broadcast_address}} broadcast_rpc_address: {{cassandra_broadcast_rpc_address}} {% endif %} @@ -89,7 +89,7 @@ cas_contention_timeout_in_ms: 1000 truncate_request_timeout_in_ms: 60000 request_timeout_in_ms: 10000 cross_node_timeout: false -{% if groups['cassandra'][1] is defined %} +{% if groups['cassandra-2'] is defined %} endpoint_snitch: GossipingPropertyFileSnitch {% else %} endpoint_snitch: SimpleSnitch From 7bdf998f2276f790a074f4cd9bef1edf397f4487 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Thu, 27 Sep 2018 17:18:07 +0530 Subject: [PATCH 0206/1345] Adding config file validation script, updating main install script to invoke validation, updated sanity script (#245) * fix: SB-7380 - Removed tabs from config file. Updated logic to check docker version. * fix: SB-5443 - Adding new script to validate the config file. Updated main install file to invoke the validation script. * fix: SB-5443 - Adding execute permissions * fix: SB-5443, SB-7699 - Updated the code as per PR comments, added new logic to validate IP and CIDR * style: ansible format for variables * style: add/update comments --- deploy/config | 2 +- deploy/sanity.sh | 8 +- deploy/sunbird_install.sh | 21 +++- deploy/validateConfig.sh | 244 ++++++++++++++++++++++++++++++++++++++ 4 files changed, 267 insertions(+), 8 deletions(-) create mode 100755 deploy/validateConfig.sh diff --git a/deploy/config b/deploy/config index 340653c305..367e107cda 100755 --- a/deploy/config +++ b/deploy/config @@ -155,7 +155,7 @@ vault_proxy_prometheus_admin_creds: #es config es_etc_node_datagroups['es']: -es_api_host: "{{inventory_hostname}}" +es_api_host: "{{ inventory_hostname }}" es_heap_size: 1500m es_etc_discovery_zen_minimum_master_nodes: 1 es_snapshot_host: "{{ groups['es'][0] }}" diff --git a/deploy/sanity.sh b/deploy/sanity.sh index 7c3fa7ced4..805785681d 100755 --- a/deploy/sanity.sh +++ b/deploy/sanity.sh @@ -10,7 +10,7 @@ ssh_key=$2 # Application versions es_version=5.4 -docker_version=17.06,18.03 +docker_version="17.06|18.03" postgres_version=9.5 cassandra_version=3.9 java_version=1.8.0_162 @@ -105,7 +105,7 @@ check_es() { # Checking for elastic search version if [ $(nc -z $ip 9200; echo $?) -eq 0 ];then local version=$(nssh $ssh_user@$ip curl -sS $ip:9200 | grep number| awk '{print $3}') - echo -ne "\e[0;35m Elastic search Version: \e[0;32m$version asdfasdf " + echo -ne "\e[0;35m Elastic search Version: \e[0;32m$version" check_compatibility version "$version" "$es_version" es else echo -e "\e[0;35m Elastic search Version: \e[0;32m${bold}Not Installed${normal} " @@ -160,12 +160,12 @@ check_docker() { local version=$(nssh $ssh_user@$ip docker --version | head -n1 | awk '{print $3" "$4" "$5}') echo -ne "\e[0;35m Docker Version: \e[0;32m$version " version=$(echo -ne "$version" | cut -c1-5) - if [ "$docker_version" == "$version" ] || [ "$version" == "17.06" ];then + if [[ $version =~ ($docker_version) ]];then echo -e "\e[0;32m${bold} OK ${normal}" touch ".sunbird/ignore/${service_name}" else echo -e "\e[0;31m${bold} FATAL${normal}" - echo -e "\e[0;31m${bold} Sunbird has been tested with Docker version $docker_version and 17.06, Please Install $docker_version${normal}" + echo -e "\e[0;31m${bold} Sunbird has been tested with Docker version $docker_version. Please Install $docker_version${normal}" fail=1 fi else diff --git a/deploy/sunbird_install.sh b/deploy/sunbird_install.sh index b3423e08e0..e4f310521f 100755 --- a/deploy/sunbird_install.sh +++ b/deploy/sunbird_install.sh @@ -14,7 +14,7 @@ set -eu -o pipefail -usage() { echo "Usage: $0 [ -s {sanity|config|dbs|apis|proxy|keycloak|badger|core|configservice|logger|monitor|posttest|systeminit} ]" ; exit 0; } +usage() { echo "Usage: $0 [ -s {validateconfig|sanity|config|dbs|apis|proxy|keycloak|badger|core|configservice|logger|monitor|posttest|systeminit} ]" ; exit 0; } # Checking for valid argument if [[ ! -z ${1:-} ]] && [[ ${1} != -* ]]; then @@ -47,6 +47,15 @@ if [ ! -d logs ];then mkdir logs &> /dev/null;fi # Creating temporary directory if [ ! -d .sunbird/ignore ];then mkdir -p .sunbird/ignore &> /dev/null;fi +# Validate config file +validateconfig(){ +if [[ $# -eq 0 ]]; then + ./validateConfig.sh +else + ./validateConfig.sh $1 +fi +} + # Generating configs config() { sudo ./install-deps.sh @@ -60,7 +69,6 @@ config() { } # Sanity check - sanity() { ./sanity.sh $ssh_ansible_user $ansible_private_key_path } @@ -117,6 +125,11 @@ while getopts "s:h" o;do s) s=${OPTARG} case "${s}" in + validateconfig) + echo -e "\n$(date)\n">>logs/validateconfig.log; + validateconfig 2>&1 | tee -a logs/validateconfig.log + exit 0 + ;; config) echo -e "\n$(date)\n">>logs/config.log; config 2>&1 | tee -a logs/config.log @@ -155,6 +168,7 @@ while getopts "s:h" o;do exit 0 ;; core) + echo -e "\n$(date)\n">>logs/validateconfig.log; validateconfig "${s}" 2>&1 | tee -a logs/validateconfig.log echo -e "\n$(date)\n">>logs/core.log; core 2>&1 | tee -a logs/core.log exit 0 ;; @@ -208,6 +222,7 @@ echo """ """ ## Installing and configuring prerequisites +echo -e \n$(date)\n >> logs/validateconfig.log; validateconfig 2>&1 | tee -a logs/validateconfig.log echo -e \n$(date)\n >> logs/config.log; config 2>&1 | tee -a logs/config.log ## checking for prerequisites echo -e \n$(date)\n >> logs/sanity.log; sanity 2>&1 | tee -a logs/sanity.log @@ -221,4 +236,4 @@ echo -e \n$(date)\n >> logs/keycloak.log; keycloak 2>&1 | tee -a logs/keycloak.l echo -e \n$(date)\n >> logs/badger.log; badger 2>&1 | tee -a logs/badger.log ## Initialising system -echo -e \n$(date)\n >> logs/systeminit.log; systeminit 2>&1 | tee -a logs/systeminit.log \ No newline at end of file +echo -e \n$(date)\n >> logs/systeminit.log; systeminit 2>&1 | tee -a logs/systeminit.log diff --git a/deploy/validateConfig.sh b/deploy/validateConfig.sh new file mode 100755 index 0000000000..983f4177a3 --- /dev/null +++ b/deploy/validateConfig.sh @@ -0,0 +1,244 @@ +#/bin/bash + +# Trampoline secret length validation +check_tram_secret(){ +key=$1 +value=$2 +length=$(echo $value | awk '{print length}') +if [[ $length -lt 8 ]]; then + echo -e "\e[0;31m${bold}ERROR - Invalid value for $key. Value must be at least 8 characters in length" + fail=1 +fi +} + + +# Basic phone number validation +check_phone(){ +key=$1 +value=$2 +length=$(echo $value | awk '{print length}') +if [[ $length -lt 8 || $value =~ [a-zA-Z] ]]; then + echo -e "\e[0;31m${bold}ERROR - Invalid value for $key. Phone number cannot include alphabets and should contain 8 digits minimum${normal}" + fail=1 +fi +} + + +# Basic email validation +check_email(){ +key=$1 +value=$2 +if ! [[ $value =~ ^([a-zA-Z0-9])*@([a-zA-Z0-9])*\.([a-zA-Z0-9])*$ ]]; then + echo -e "\e[0;31m${bold}ERROR - Invalid value for $key. Email must be of the format admin@sunbird.com${normal}" + fail=1 +fi +} + + +# Check if the CIDR value specified in app_address_space is valid +check_cidr(){ +key=$1 +value=$2 +IFS="./" read -r ip1 ip2 ip3 ip4 N <<< $value +ip=$(($ip1 * 256 ** 3 + $ip2 * 256 ** 2 + $ip3 * 256 + $ip4)) +if ! [[ $(($ip % 2**(32-$N))) = 0 ]]; then + echo -e "\e[0;31m${bold}ERROR - Invalid CIDR value for $key. Please enter a valid value. CIDR is of the format 172.10.0.0/24" + fail=1 + cidr_result="fail" +fi +} + + +# Check if the IP address belongs to the CIDR block specified in app_address_space +check_ip(){ +key=$1 +value=$2 +if [[ ${vals[app_address_space]} != "" && $cidr_result != "fail" ]]; then + IFS="." read -r host_ip1 host_ip2 host_ip3 host_ip4 <<< $value + IFS="./" read -r cidr_ip1 cidr_ip2 cidr_ip3 cidr_ip4 N <<< ${vals[app_address_space]} + set -- $(( 5 - ($N / 8))) 255 255 255 255 $(((255 << (8 - ($N % 8))) & 255 )) 0 0 0 + [ $1 -gt 1 ] && shift $1 || shift + mask=${1-0}.${2-0}.${3-0}.${4-0} + IFS="." read -r mask_ip1 mask_ip2 mask_ip3 mask_ip4 <<< $mask + net_addr=$((cidr_ip1&mask_ip1)).$((cidr_ip2&mask_ip2)).$((cidr_ip3&mask_ip3)).$((cidr_ip4&mask_ip4)) + broad_addr=$((cidr_ip1&mask_ip1^(255-$mask_ip1))).$((cidr_ip2&mask_ip2^(255-$mask_ip2))).$((cidr_ip3&mask_ip3^(255-$mask_ip3))).$((cidr_ip4&mask_ip4^(255-$mask_ip4))) + cidr_trim=$cidr_ip1.$cidr_ip2.$cidr_ip3.$cidr_ip4 + ip_post_mask=$((host_ip1&mask_ip1)).$((host_ip2&mask_ip2)).$((host_ip3&mask_ip3)).$((host_ip4&mask_ip4)) + range_start=$((cidr_ip1&mask_ip1)).$((cidr_ip2&mask_ip2)).$((cidr_ip3&mask_ip3)).$(((cidr_ip4&mask_ip4)+1)) + range_end=$((cidr_ip1&mask_ip1^(255-$mask_ip1))).$((cidr_ip2&mask_ip2^(255-$mask_ip2))).$((cidr_ip3&mask_ip3^(255-$mask_ip3))).$(((cidr_ip4&mask_ip4^(255-$mask_ip4))-1)) + if ! [[ $ip_post_mask == $cidr_trim && $value > $net_addr && $value < $broad_addr ]]; then + echo -e "\e[0;31m${bold}ERROR - Invalid value for $key. IP address does not belong to the CIDR group. Valid range for given app_address_space is $range_start to $range_end${normal}" + fail=1 + fi +fi +} + + +# Check if login succeeds to the app and db server using username and private key +check_login(){ +key=$1 +value=$2 +app_server=${vals[application_host]} +db_server=${vals[database_host]} +username=${vals[ssh_ansible_user]} + +app_user=$(ssh -i $value -o StrictHostKeyChecking=no -o ConnectTimeout=1 $username@$app_server whoami 2> /dev/null) +db_user=$(ssh -i $value -o StrictHostKeyChecking=no -o ConnectTimeout=1 $username@$db_server whoami 2> /dev/null) + +if [[ $app_user != $username ]]; then + echo -e "\e[0;31m${bold}ERROR - Login to app server failed. Please check application_host, ssh_ansible_user, ansible_private_key_path${normal}" + fail=1 +fi + +if [[ $db_user != $username ]]; then + echo -e "\e[0;31m${bold}ERROR - Login to db server failed. Please check database_host, ssh_ansible_user, ansible_private_key_path${normal}" + fail=1 +fi +} + + +# Validate ssh_ansible_user can run sudo commands using the sudo password +check_sudo(){ +key=$1 +value=$2 +app_server=${vals[application_host]} +db_server=${vals[database_host]} +username=${vals[ssh_ansible_user]} +private_key=${vals[ansible_private_key_path]} + +result=$(ssh -i $private_key -o StrictHostKeyChecking=no -o ConnectTimeout=1 $username@$app_server "echo $value | sudo -S apt-get check" 2> /dev/null) +if ! [[ $result =~ (Reading|Building) ]]; then + echo -e "\e[0;31m${bold}ERROR - Sudo login failed. Please check the username / password / IP" + fail=1 +fi +} + + +# Function to retrieve values of mandatory fields and store it as key value pair +get_config_values(){ +key=$1 +vals[$key]=$(awk ''/^$key:' /{ if ($2 !~ /#.*/) {print $2}}' config) +} + +# Script start. core_install will receive value as "core" from calling script when -s core option is triggered. +bold=$(tput bold) +normal=$(tput sgr0) +if ! [[ $# -eq 0 ]]; then +core_install=$1 +else +core_install="NA" +fi + +echo -e "\e[0;33m${bold}Validating the config file...${normal}" + + +# An array of mandatory values +declare -a arr=("env" "implementation_name" "ssh_ansible_user" "sudo_passwd" "ansible_private_key_path" "application_host" "app_address_space" "dns_name" "proto" "cert_path" \ + "key_path" "database_host" "database_password" "keycloak_admin_password" "sso_password" "trampoline_secret" "backup_storage_key" "badger_admin_password" \ + "badger_admin_email" "ekstep_api_base_url" "ekstep_proxy_base_url" "ekstep_api_key" "sunbird_image_storage_url" "sunbird_azure_storage_key" \ + "sunbird_azure_storage_account" "sunbird_custodian_tenant_name" "sunbird_custodian_tenant_description" "sunbird_custodian_tenant_channel" \ + "sunbird_root_user_firstname" "sunbird_root_user_lastname" "sunbird_root_user_username" "sunbird_root_user_password" "sunbird_root_user_email" \ + "sunbird_root_user_phone" "sunbird_sso_publickey" "sunbird_default_channel") + +# Create and empty array which will store the key and value pair from config file +declare -A vals + +# Iterate the array and retrieve values for mandatory fields from config file +for i in ${arr[@]} +do +get_config_values $i +done + +# Iterate the array of key values and based on key check the validation +for i in ${!vals[@]} +do +key=$i +value=${vals[$i]} +case $key in + proto) + if [[ ! "$value" =~ ^(http|https)$ ]]; then + echo -e "\e[0;31m${bold}ERROR - Invalid value for $key. Valid values are http / https${normal}"; fail=1 + fi + ;; + cert_path|key_path) + if [[ "$value" == "" && "${vals[proto]}" == "https" ]]; then + echo -e "\e[0;31m${bold}ERROR - Protocal https specified but $key is blank. Please fill this value${normal}"; fail=1 + fi + ;; + ekstep_api_base_url) + if [[ ! "$value" =~ ^(https://api-qa.ekstep.in|https://api.ekstep.in)$ ]]; then + echo -e "\e[0;31m${bold}ERROR - Valid values for $key are https://api.ekstep.in or https://api-qa.ekstep.in${normal}"; fail=1 + fi + ;; + ekstep_proxy_base_url) + if [[ ! "$value" =~ ^(https://community.ekstep.in|https://qa.ekstep.in)$ ]]; then + echo -e "\e[0;31m${bold}ERROR - Valid values for $key are https://community.ekstep.in or https://qa.ekstep.in${normal}"; fail=1 + fi + ;; + trampoline_secret) + if [[ $value == "" ]]; then + echo -e "\e[0;31m${bold}ERROR - Value for $key cannot be empty. Please fill this value with a minimum of 8 characters${normal}"; fail=1 + else + check_tram_secret $key $value + fi + ;; + sunbird_root_user_phone) + if [[ $value == "" ]]; then + echo -e "\e[0;31m${bold}ERROR - Value for $key cannot be empty. Please fill this value with a minimum of 8 digits${normal}"; fail=1 + else + check_phone $key $value + fi + ;; + badger_admin_email|sunbird_root_user_email) + if [[ $value == "" ]]; then + echo -e "\e[0;31m${bold}ERROR - Value for $key cannot be empty. Please fill this value${normal}"; fail=1 + else + check_email $key $value + fi + ;; + app_address_space) + if [[ $value == "" ]]; then + echo -e "\e[0;31m${bold}ERROR - Value for $key cannot be empty. Please fill this value${normal}"; fail=1 + else + check_cidr $key $value + fi + ;; + application_host|database_host) + if [[ $value == "" ]]; then + echo -e "\e[0;31m${bold}ERROR - Value for $key cannot be empty. Please fill this value${normal}"; fail=1 + else + check_ip $key $value + fi + ;; + ansible_private_key_path) + if [[ $value == "" ]]; then + echo -e "\e[0;31m${bold}ERROR - Value for $key cannot be empty. Please fill this value${normal}"; fail=1 + else + check_login $key $value + fi + ;; + sudo_passwd) + if [[ $value != "" ]]; then + check_sudo $key $value + fi + ;; + sunbird_sso_publickey) + if [[ $core_install == "core" && $value == "" ]]; then + echo -e "\e[0;31m${bold}ERROR - Value for $key cannot be empty. Please fill this value before running core"; fail=1 + fi + ;; + *) + if [[ "$value" == "" ]]; then + echo -e "\e[0;31m${bold}ERROR - Value for $key cannot be empty. Please fill this value${normal}"; fail=1 + fi + ;; +esac +done + +# Check if any of the validation failed and exit +if [[ $fail ]]; then + echo -e "\e[0;31m${bold}Config file has errors. Please rectify the issues and rerun${normal}" + exit 1 +else + echo -e "\e[0;32m${bold}Config file successfully validated${normal}" +fi From 183e9ba7b4fda3b20772d3ac608cda209b4b7448 Mon Sep 17 00:00:00 2001 From: Santhosh Gandham Date: Fri, 28 Sep 2018 15:42:52 +0530 Subject: [PATCH 0207/1345] Issue #000 updated analytics api base url --- ansible/roles/kong-api/defaults/main.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ansible/roles/kong-api/defaults/main.yml b/ansible/roles/kong-api/defaults/main.yml index d84a46d045..7675376ff7 100644 --- a/ansible/roles/kong-api/defaults/main.yml +++ b/ansible/roles/kong-api/defaults/main.yml @@ -3173,7 +3173,7 @@ kong_apis: # Data pipeline - name: "datasetSubmitRequest" request_path: "{{ data_service_prefix }}/v3/dataset/request/submit" - upstream_url: "{{ learning_analytics_service_url }}/dataset/request/submit" + upstream_url: "{{ sunbird_analytics_api_base_url }}/dataset/request/submit" strip_request_path: true plugins: - {name: 'jwt'} @@ -3184,7 +3184,7 @@ kong_apis: - {name: 'request-size-limiting', config.allowed_payload_size: "{{ small_request_size_limit }}" } - name: "datasetReadRequest" request_path: "{{ data_service_prefix }}/v3/dataset/request/read" - upstream_url: "{{ learning_analytics_service_url }}/dataset/request/read" + upstream_url: "{{ sunbird_analytics_api_base_url }}/dataset/request/read" strip_request_path: true plugins: - {name: 'jwt'} @@ -3195,7 +3195,7 @@ kong_apis: - {name: 'request-size-limiting', config.allowed_payload_size: "{{ small_request_size_limit }}" } - name: "datasetListRequest" request_path: "{{ data_service_prefix }}/v3/dataset/request/list" - upstream_url: "{{ learning_analytics_service_url }}/dataset/request/list" + upstream_url: "{{ sunbird_analytics_api_base_url }}/dataset/request/list" strip_request_path: true plugins: - {name: 'jwt'} @@ -3207,7 +3207,7 @@ kong_apis: - name: "channelSpecificTelemetryExhaust" request_path: "{{ data_service_prefix }}/v3/dataset/get" - upstream_url: "{{ learning_analytics_service_url }}/dataset/get" + upstream_url: "{{ sunbird_analytics_api_base_url }}/dataset/get" strip_request_path: true plugins: - {name: 'jwt'} From dba026eac8a7a5fa48538891959944831c1b1acc Mon Sep 17 00:00:00 2001 From: S M Y Date: Fri, 28 Sep 2018 18:49:55 +0530 Subject: [PATCH 0208/1345] Issue #000 apis: Adding API's for config-service --- ansible/roles/kong-api/defaults/main.yml | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/ansible/roles/kong-api/defaults/main.yml b/ansible/roles/kong-api/defaults/main.yml index 7675376ff7..e374477eee 100644 --- a/ansible/roles/kong-api/defaults/main.yml +++ b/ansible/roles/kong-api/defaults/main.yml @@ -3284,14 +3284,25 @@ kong_apis: - {name: 'acl', config.whitelist: 'dataAdmin'} - {name: 'rate-limiting', config.policy: "local", config.hour: "{{ medium_rate_limit_per_hour }}"} - {name: 'request-size-limiting', config.allowed_payload_size: "{{ small_request_size_limit }}" } - - name: "getAllSystemSettings" - request_path: "{{ data_service_prefix }}/v1/system/setting/list" - upstream_url: "{{ learning_service_url }}/v1/system/setting/list" + - name: "getConfigStatus" + request_path: "{{ config_service_prefix }}/v1/status" + upstream_url: "{{ config_service_url }}/config-service/v1/status" strip_request_path: true plugins: - {name: 'jwt'} - {name: 'cors'} - {name: 'statsd', config.metrics: "{{ statsd_metrics }}" } - {name: 'acl', config.whitelist: 'dataAdmin'} - - {name: 'rate-limiting', config.policy: "local", config.hour: "{{ medium_rate_limit_per_hour }}"} + - {name: 'rate-limiting', config.policy: "local", config.hour: "{{ small_rate_limit_per_hour }}"} + - {name: 'request-size-limiting', config.allowed_payload_size: "{{ small_request_size_limit }}" } + - name: "getConfigHealth" + request_path: "{{ config_service_prefix }}/v1/health" + upstream_url: "{{ config_service_url }}/config-service/v1/health" + strip_request_path: true + plugins: + - {name: 'jwt'} + - {name: 'cors'} + - {name: 'statsd', config.metrics: "{{ statsd_metrics }}" } + - {name: 'acl', config.whitelist: 'dataAdmin'} + - {name: 'rate-limiting', config.policy: "local", config.hour: "{{ small_rate_limit_per_hour }}"} - {name: 'request-size-limiting', config.allowed_payload_size: "{{ small_request_size_limit }}" } From d0001ed1658f7ca71b141f1ee5cea40d906e06f8 Mon Sep 17 00:00:00 2001 From: S M Y Date: Fri, 28 Sep 2018 21:04:52 +0530 Subject: [PATCH 0209/1345] Issue #000 api: onboarding API's --- ansible/roles/kong-api/defaults/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/kong-api/defaults/main.yml b/ansible/roles/kong-api/defaults/main.yml index e374477eee..35d16802a4 100644 --- a/ansible/roles/kong-api/defaults/main.yml +++ b/ansible/roles/kong-api/defaults/main.yml @@ -56,7 +56,7 @@ telemetry_service_url: "http://telemetry-service:9001" player_service_url: "http://player_player:3000" echo_service_url: "http://api-manager_echo:9595" am_util_url: http://adminutil_adminutil:4000 -config_service_url: http://config-service:8080 +config_service_url: "http://config-service:8080" premium_consumer_rate_limits: - api: createContent From 9f6ab951ad179bbeb14ec3e40b989aa3f198a3a3 Mon Sep 17 00:00:00 2001 From: Amol Ghatol Date: Sat, 29 Sep 2018 15:30:54 +0530 Subject: [PATCH 0210/1345] Issue #SB7310 chore:Onboard Consumer API and Consumer (#251) --- ansible/roles/kong-api/defaults/main.yml | 34 ++++++++++++++++++- ansible/roles/kong-consumer/defaults/main.yml | 6 ++++ 2 files changed, 39 insertions(+), 1 deletion(-) diff --git a/ansible/roles/kong-api/defaults/main.yml b/ansible/roles/kong-api/defaults/main.yml index 35d16802a4..3c345aa60e 100644 --- a/ansible/roles/kong-api/defaults/main.yml +++ b/ansible/roles/kong-api/defaults/main.yml @@ -364,7 +364,7 @@ kong_apis: config.hour: "{{ medium_rate_limit_per_hour }}" config.limit_by: credential - name: request-size-limiting - config.allowed_payload_size: "{{ small_request_size_limit }}" + config.allowed_payload_size: "{{ small_request_size_limit }}" - name: listCourseEnrollments request_path: "{{ course_service_prefix }}/v1/user/enrollment/list" upstream_url: "{{ learning_service_url }}/v1/user/courses/list" @@ -3306,3 +3306,35 @@ kong_apis: - {name: 'acl', config.whitelist: 'dataAdmin'} - {name: 'rate-limiting', config.policy: "local", config.hour: "{{ small_rate_limit_per_hour }}"} - {name: 'request-size-limiting', config.allowed_payload_size: "{{ small_request_size_limit }}" } + - name: onboardConsumer + request_path: "{{ api_manager_perfix }}/v1/consumer/create/jwt" + upstream_url: "{{ am_util_url }}/v1/consumer/create/jwt" + strip_request_path: true + plugins: + - name: jwt + - name: cors + - "{{ statsd_pulgin }}" + - name: acl + config.whitelist: kongConsumer + - name: rate-limiting + config.policy: local + config.hour: "{{ small_rate_limit_per_hour }}" + config.limit_by: credential + - name: request-size-limiting + config.allowed_payload_size: "{{ small_request_size_limit }}" + - name: KongConsumerApi + request_path: "{{ api_manager_perfix }}/v1/consumer" + upstream_url: "{{ am_util_url }}/v1/consumer" + strip_request_path: true + plugins: + - name: jwt + - name: cors + - "{{ statsd_pulgin }}" + - name: acl + config.whitelist: kongConsumer + - name: rate-limiting + config.policy: local + config.hour: "{{ small_rate_limit_per_hour }}" + config.limit_by: credential + - name: request-size-limiting + config.allowed_payload_size: "{{ small_request_size_limit }}" diff --git a/ansible/roles/kong-consumer/defaults/main.yml b/ansible/roles/kong-consumer/defaults/main.yml index 7ea1ef45ca..9819060497 100644 --- a/ansible/roles/kong-consumer/defaults/main.yml +++ b/ansible/roles/kong-consumer/defaults/main.yml @@ -89,6 +89,9 @@ kong_all_consumer_groups: - domainUpdate - domainUser +kong_admin_groups: + - kongConsumer + # List the consumers need to be present as state: present # List the consumers need to be absent as state: absent # This role will not update / delete consumers not listed here @@ -112,3 +115,6 @@ kong_consumers: - username: mobile_device groups: "{{ mobile_device_groups }}" state: present + - username: kongAdmin + groups: "{{ kong_admin_groups }}" + state: present From 4456fe2965e7a475a6bb97598a1d6a9eb84c414d Mon Sep 17 00:00:00 2001 From: S M Y Date: Sun, 30 Sep 2018 16:12:23 +0530 Subject: [PATCH 0211/1345] Issue #000 cql: reverting changes --- ansible/roles/cassandra/templates/cassandra.yaml.j2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/cassandra/templates/cassandra.yaml.j2 b/ansible/roles/cassandra/templates/cassandra.yaml.j2 index ae27d2c518..0192f9324f 100755 --- a/ansible/roles/cassandra/templates/cassandra.yaml.j2 +++ b/ansible/roles/cassandra/templates/cassandra.yaml.j2 @@ -61,7 +61,7 @@ listen_address: {{hostvars[inventory_hostname]['ansible_default_ipv4']['address' broadcast_address: {{hostvars[inventory_hostname]['ansible_default_ipv4']['address']}} broadcast_rpc_address: {{hostvars[inventory_hostname]['ansible_default_ipv4']['address']}} {% else %} -listen_address: {{cassandra_listen_address}}-ekstep +listen_address: {{cassandra_listen_address}} broadcast_address: {{cassandra_broadcast_address}} broadcast_rpc_address: {{cassandra_broadcast_rpc_address}} {% endif %} From 4bcbafb45050df0dd8a69b3e4539b7371a9c11bf Mon Sep 17 00:00:00 2001 From: S M Y Date: Sun, 30 Sep 2018 16:18:21 +0530 Subject: [PATCH 0212/1345] Issue #000 cql: reverting changes --- ansible/roles/cassandra/README.md | 78 -- ansible/roles/cassandra/tasks/main.yml | 9 - .../templates/cassandra-rackdc.properties.j2 | 31 - .../roles/cassandra/templates/cassandra.yaml | 1041 +++++++++++++++++ .../cassandra/templates/cassandra.yaml.j2 | 20 +- 5 files changed, 1044 insertions(+), 135 deletions(-) delete mode 100755 ansible/roles/cassandra/README.md delete mode 100644 ansible/roles/cassandra/templates/cassandra-rackdc.properties.j2 create mode 100755 ansible/roles/cassandra/templates/cassandra.yaml diff --git a/ansible/roles/cassandra/README.md b/ansible/roles/cassandra/README.md deleted file mode 100755 index fac9c2e53a..0000000000 --- a/ansible/roles/cassandra/README.md +++ /dev/null @@ -1,78 +0,0 @@ -Role Name -========= - -An [Ansible] role to install [Cassandra] - -Requirements ------------- - -- Oracle Java 8 - -Install [Ansible] requirements `ansible-galaxy install -r requirements.yml` - -Role Variables --------------- - -``` ---- -# defaults file for ansible-cassandra -cassandra_cluster_group: 'cassandra-cluster-nodes' -cassandra_cluster_name: 'Test Cluster' -cassandra_cluster_setup: false -cassandra_commitlog_directory: '/var/lib/cassandra/commitlog' -cassandra_config: false -cassandra_debian_repo_info: - repo: 'deb http://www.apache.org/dist/cassandra/debian 36x main' - repo_key: 'https://www.apache.org/dist/cassandra/KEYS' -cassandra_data_file_directories: - - '/var/lib/cassandra/data' -cassandra_hints_directory: '/var/lib/cassandra/hints' -cassandra_listen_address: "{{ hostvars[inventory_hostname]['ansible_' + cassandra_listen_interface]['ipv4']['address'] }}" -cassandra_listen_interface: 'eth1' -cassandra_log_dir: '/var/log/cassandra' -cassandra_root_dir: '/etc/cassandra' -cassandra_saved_caches_directory: '/var/lib/cassandra/saved_caches' -cassandra_seeds: '127.0.0.1' # Only used if not setting up a cluster -cassandra_version: '3.6' -``` - -Dependencies ------------- - -Reference requirements - -Example Playbook ----------------- - -``` ---- -- hosts: cassandra-cluster-nodes - become: true - vars: - cassandra_cluster_setup: true - cassandra_config: true - pri_domain_name: 'test.vagrant.local' - roles: - - role: ansible-oracle-java8 - - role: ansible-cassandra - tasks: -``` - -License -------- - -BSD - -Author Information ------------------- - - -Larry Smith Jr. -- [@mrlesmithjr] -- [EveryThingShouldBeVirtual] -- mrlesmithjr [at] gmail.com - -[@mrlesmithjr]: -[EveryThingShouldBeVirtual]: -[Ansible]: -[Cassandra]: diff --git a/ansible/roles/cassandra/tasks/main.yml b/ansible/roles/cassandra/tasks/main.yml index 0ca53a2177..1273b7f597 100755 --- a/ansible/roles/cassandra/tasks/main.yml +++ b/ansible/roles/cassandra/tasks/main.yml @@ -20,15 +20,6 @@ name: "cassandra" state: "present" -- name: copying the rack and datacenter config file if we are having cluster - template: - src: "cassandra-rackdc.properties.j2" - dest: "{{ cassandra_root_dir }}/cassandra-rackdc.properties" - owner: "root" - group: "root" - mode: "0644" - when: groups['cassandra-2'] is defined - - name: config | Configuring Cassandra template: src: "cassandra.yaml.j2" diff --git a/ansible/roles/cassandra/templates/cassandra-rackdc.properties.j2 b/ansible/roles/cassandra/templates/cassandra-rackdc.properties.j2 deleted file mode 100644 index 94c66da80e..0000000000 --- a/ansible/roles/cassandra/templates/cassandra-rackdc.properties.j2 +++ /dev/null @@ -1,31 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# These properties are used with GossipingPropertyFileSnitch and will -# indicate the rack and dc for this node -{% if groups['cassandra'][1] %} -dc=datacenter1 -rack=rack1 -{% else %} -dc=dc1 -rack=rack1 -{% endif %} -# Add a suffix to a datacenter name. Used by the Ec2Snitch and Ec2MultiRegionSnitch -# to append a string to the EC2 region name. -#dc_suffix= - -# Uncomment the following line to make this snitch prefer the internal ip when possible, as the Ec2MultiRegionSnitch does. -# prefer_local=true diff --git a/ansible/roles/cassandra/templates/cassandra.yaml b/ansible/roles/cassandra/templates/cassandra.yaml new file mode 100755 index 0000000000..a51f993535 --- /dev/null +++ b/ansible/roles/cassandra/templates/cassandra.yaml @@ -0,0 +1,1041 @@ +# Cassandra storage config YAML + +# NOTE: +# See http://wiki.apache.org/cassandra/StorageConfiguration for +# full explanations of configuration directives +# /NOTE + +# The name of the cluster. This is mainly used to prevent machines in +# one logical cluster from joining another. +cluster_name: 'Test Cluster' + +# This defines the number of tokens randomly assigned to this node on the ring +# The more tokens, relative to other nodes, the larger the proportion of data +# that this node will store. You probably want all nodes to have the same number +# of tokens assuming they have equal hardware capability. +# +# If you leave this unspecified, Cassandra will use the default of 1 token for legacy compatibility, +# and will use the initial_token as described below. +# +# Specifying initial_token will override this setting on the node's initial start, +# on subsequent starts, this setting will apply even if initial token is set. +# +# If you already have a cluster with 1 token per node, and wish to migrate to +# multiple tokens per node, see http://wiki.apache.org/cassandra/Operations +num_tokens: 256 + +# Triggers automatic allocation of num_tokens tokens for this node. The allocation +# algorithm attempts to choose tokens in a way that optimizes replicated load over +# the nodes in the datacenter for the replication strategy used by the specified +# keyspace. +# +# The load assigned to each node will be close to proportional to its number of +# vnodes. +# +# Only supported with the Murmur3Partitioner. +# allocate_tokens_for_keyspace: KEYSPACE + +# initial_token allows you to specify tokens manually. While you can use # it with +# vnodes (num_tokens > 1, above) -- in which case you should provide a +# comma-separated list -- it's primarily used when adding nodes # to legacy clusters +# that do not have vnodes enabled. +# initial_token: + +# See http://wiki.apache.org/cassandra/HintedHandoff +# May either be "true" or "false" to enable globally +hinted_handoff_enabled: true +# When hinted_handoff_enabled is true, a black list of data centers that will not +# perform hinted handoff +#hinted_handoff_disabled_datacenters: +# - DC1 +# - DC2 +# this defines the maximum amount of time a dead host will have hints +# generated. After it has been dead this long, new hints for it will not be +# created until it has been seen alive and gone down again. +max_hint_window_in_ms: 10800000 # 3 hours + +# Maximum throttle in KBs per second, per delivery thread. This will be +# reduced proportionally to the number of nodes in the cluster. (If there +# are two nodes in the cluster, each delivery thread will use the maximum +# rate; if there are three, each will throttle to half of the maximum, +# since we expect two nodes to be delivering hints simultaneously.) +hinted_handoff_throttle_in_kb: 1024 + +# Number of threads with which to deliver hints; +# Consider increasing this number when you have multi-dc deployments, since +# cross-dc handoff tends to be slower +max_hints_delivery_threads: 2 + +# Directory where Cassandra should store hints. +# If not set, the default directory is $CASSANDRA_HOME/data/hints. +# hints_directory: /var/lib/cassandra/hints + +# How often hints should be flushed from the internal buffers to disk. +# Will *not* trigger fsync. +hints_flush_period_in_ms: 10000 + +# Maximum size for a single hints file, in megabytes. +max_hints_file_size_in_mb: 128 + +# Compression to apply to the hint files. If omitted, hints files +# will be written uncompressed. LZ4, Snappy, and Deflate compressors +# are supported. +#hints_compression: +# - class_name: LZ4Compressor +# parameters: +# - + +# Maximum throttle in KBs per second, total. This will be +# reduced proportionally to the number of nodes in the cluster. +batchlog_replay_throttle_in_kb: 1024 + +# Authentication backend, implementing IAuthenticator; used to identify users +# Out of the box, Cassandra provides org.apache.cassandra.auth.{AllowAllAuthenticator, +# PasswordAuthenticator}. +# +# - AllowAllAuthenticator performs no checks - set it to disable authentication. +# - PasswordAuthenticator relies on username/password pairs to authenticate +# users. It keeps usernames and hashed passwords in system_auth.credentials table. +# Please increase system_auth keyspace replication factor if you use this authenticator. +# If using PasswordAuthenticator, CassandraRoleManager must also be used (see below) +authenticator: AllowAllAuthenticator + +# Authorization backend, implementing IAuthorizer; used to limit access/provide permissions +# Out of the box, Cassandra provides org.apache.cassandra.auth.{AllowAllAuthorizer, +# CassandraAuthorizer}. +# +# - AllowAllAuthorizer allows any action to any user - set it to disable authorization. +# - CassandraAuthorizer stores permissions in system_auth.permissions table. Please +# increase system_auth keyspace replication factor if you use this authorizer. +authorizer: AllowAllAuthorizer + +# Part of the Authentication & Authorization backend, implementing IRoleManager; used +# to maintain grants and memberships between roles. +# Out of the box, Cassandra provides org.apache.cassandra.auth.CassandraRoleManager, +# which stores role information in the system_auth keyspace. Most functions of the +# IRoleManager require an authenticated login, so unless the configured IAuthenticator +# actually implements authentication, most of this functionality will be unavailable. +# +# - CassandraRoleManager stores role data in the system_auth keyspace. Please +# increase system_auth keyspace replication factor if you use this role manager. +role_manager: CassandraRoleManager + +# Validity period for roles cache (fetching granted roles can be an expensive +# operation depending on the role manager, CassandraRoleManager is one example) +# Granted roles are cached for authenticated sessions in AuthenticatedUser and +# after the period specified here, become eligible for (async) reload. +# Defaults to 2000, set to 0 to disable caching entirely. +# Will be disabled automatically for AllowAllAuthenticator. +roles_validity_in_ms: 2000 + +# Refresh interval for roles cache (if enabled). +# After this interval, cache entries become eligible for refresh. Upon next +# access, an async reload is scheduled and the old value returned until it +# completes. If roles_validity_in_ms is non-zero, then this must be +# also. +# Defaults to the same value as roles_validity_in_ms. +# roles_update_interval_in_ms: 2000 + +# Validity period for permissions cache (fetching permissions can be an +# expensive operation depending on the authorizer, CassandraAuthorizer is +# one example). Defaults to 2000, set to 0 to disable. +# Will be disabled automatically for AllowAllAuthorizer. +permissions_validity_in_ms: 2000 + +# Refresh interval for permissions cache (if enabled). +# After this interval, cache entries become eligible for refresh. Upon next +# access, an async reload is scheduled and the old value returned until it +# completes. If permissions_validity_in_ms is non-zero, then this must be +# also. +# Defaults to the same value as permissions_validity_in_ms. +# permissions_update_interval_in_ms: 2000 + +# Validity period for credentials cache. This cache is tightly coupled to +# the provided PasswordAuthenticator implementation of IAuthenticator. If +# another IAuthenticator implementation is configured, this cache will not +# be automatically used and so the following settings will have no effect. +# Please note, credentials are cached in their encrypted form, so while +# activating this cache may reduce the number of queries made to the +# underlying table, it may not bring a significant reduction in the +# latency of individual authentication attempts. +# Defaults to 2000, set to 0 to disable credentials caching. +credentials_validity_in_ms: 2000 + +# Refresh interval for credentials cache (if enabled). +# After this interval, cache entries become eligible for refresh. Upon next +# access, an async reload is scheduled and the old value returned until it +# completes. If credentials_validity_in_ms is non-zero, then this must be +# also. +# Defaults to the same value as credentials_validity_in_ms. +# credentials_update_interval_in_ms: 2000 + +# The partitioner is responsible for distributing groups of rows (by +# partition key) across nodes in the cluster. You should leave this +# alone for new clusters. The partitioner can NOT be changed without +# reloading all data, so when upgrading you should set this to the +# same partitioner you were already using. +# +# Besides Murmur3Partitioner, partitioners included for backwards +# compatibility include RandomPartitioner, ByteOrderedPartitioner, and +# OrderPreservingPartitioner. +# +partitioner: org.apache.cassandra.dht.Murmur3Partitioner + +# Directories where Cassandra should store data on disk. Cassandra +# will spread data evenly across them, subject to the granularity of +# the configured compaction strategy. +# If not set, the default directory is $CASSANDRA_HOME/data/data. +data_file_directories: + - /var/lib/cassandra/data + +# commit log. when running on magnetic HDD, this should be a +# separate spindle than the data directories. +# If not set, the default directory is $CASSANDRA_HOME/data/commitlog. +commitlog_directory: /var/lib/cassandra/commitlog + +# policy for data disk failures: +# die: shut down gossip and client transports and kill the JVM for any fs errors or +# single-sstable errors, so the node can be replaced. +# stop_paranoid: shut down gossip and client transports even for single-sstable errors, +# kill the JVM for errors during startup. +# stop: shut down gossip and client transports, leaving the node effectively dead, but +# can still be inspected via JMX, kill the JVM for errors during startup. +# best_effort: stop using the failed disk and respond to requests based on +# remaining available sstables. This means you WILL see obsolete +# data at CL.ONE! +# ignore: ignore fatal errors and let requests fail, as in pre-1.2 Cassandra +disk_failure_policy: stop + +# policy for commit disk failures: +# die: shut down gossip and Thrift and kill the JVM, so the node can be replaced. +# stop: shut down gossip and Thrift, leaving the node effectively dead, but +# can still be inspected via JMX. +# stop_commit: shutdown the commit log, letting writes collect but +# continuing to service reads, as in pre-2.0.5 Cassandra +# ignore: ignore fatal errors and let the batches fail +commit_failure_policy: stop + +# Maximum size of the native protocol prepared statement cache +# +# Valid values are either "auto" (omitting the value) or a value greater 0. +# +# Note that specifying a too large value will result in long running GCs and possbily +# out-of-memory errors. Keep the value at a small fraction of the heap. +# +# If you constantly see "prepared statements discarded in the last minute because +# cache limit reached" messages, the first step is to investigate the root cause +# of these messages and check whether prepared statements are used correctly - +# i.e. use bind markers for variable parts. +# +# Do only change the default value, if you really have more prepared statements than +# fit in the cache. In most cases it is not neccessary to change this value. +# Constantly re-preparing statements is a performance penalty. +# +# Default value ("auto") is 1/256th of the heap or 10MB, whichever is greater +prepared_statements_cache_size_mb: + +# Maximum size of the Thrift prepared statement cache +# +# If you do not use Thrift at all, it is safe to leave this value at "auto". +# +# See description of 'prepared_statements_cache_size_mb' above for more information. +# +# Default value ("auto") is 1/256th of the heap or 10MB, whichever is greater +thrift_prepared_statements_cache_size_mb: + +# Maximum size of the key cache in memory. +# +# Each key cache hit saves 1 seek and each row cache hit saves 2 seeks at the +# minimum, sometimes more. The key cache is fairly tiny for the amount of +# time it saves, so it's worthwhile to use it at large numbers. +# The row cache saves even more time, but must contain the entire row, +# so it is extremely space-intensive. It's best to only use the +# row cache if you have hot rows or static rows. +# +# NOTE: if you reduce the size, you may not get you hottest keys loaded on startup. +# +# Default value is empty to make it "auto" (min(5% of Heap (in MB), 100MB)). Set to 0 to disable key cache. +key_cache_size_in_mb: + +# Duration in seconds after which Cassandra should +# save the key cache. Caches are saved to saved_caches_directory as +# specified in this configuration file. +# +# Saved caches greatly improve cold-start speeds, and is relatively cheap in +# terms of I/O for the key cache. Row cache saving is much more expensive and +# has limited use. +# +# Default is 14400 or 4 hours. +key_cache_save_period: 14400 + +# Number of keys from the key cache to save +# Disabled by default, meaning all keys are going to be saved +# key_cache_keys_to_save: 100 + +# Row cache implementation class name. +# Available implementations: +# org.apache.cassandra.cache.OHCProvider Fully off-heap row cache implementation (default). +# org.apache.cassandra.cache.SerializingCacheProvider This is the row cache implementation availabile +# in previous releases of Cassandra. +# row_cache_class_name: org.apache.cassandra.cache.OHCProvider + +# Maximum size of the row cache in memory. +# Please note that OHC cache implementation requires some additional off-heap memory to manage +# the map structures and some in-flight memory during operations before/after cache entries can be +# accounted against the cache capacity. This overhead is usually small compared to the whole capacity. +# Do not specify more memory that the system can afford in the worst usual situation and leave some +# headroom for OS block level cache. Do never allow your system to swap. +# +# Default value is 0, to disable row caching. +row_cache_size_in_mb: 0 + +# Duration in seconds after which Cassandra should save the row cache. +# Caches are saved to saved_caches_directory as specified in this configuration file. +# +# Saved caches greatly improve cold-start speeds, and is relatively cheap in +# terms of I/O for the key cache. Row cache saving is much more expensive and +# has limited use. +# +# Default is 0 to disable saving the row cache. +row_cache_save_period: 0 + +# Number of keys from the row cache to save. +# Specify 0 (which is the default), meaning all keys are going to be saved +# row_cache_keys_to_save: 100 + +# Maximum size of the counter cache in memory. +# +# Counter cache helps to reduce counter locks' contention for hot counter cells. +# In case of RF = 1 a counter cache hit will cause Cassandra to skip the read before +# write entirely. With RF > 1 a counter cache hit will still help to reduce the duration +# of the lock hold, helping with hot counter cell updates, but will not allow skipping +# the read entirely. Only the local (clock, count) tuple of a counter cell is kept +# in memory, not the whole counter, so it's relatively cheap. +# +# NOTE: if you reduce the size, you may not get you hottest keys loaded on startup. +# +# Default value is empty to make it "auto" (min(2.5% of Heap (in MB), 50MB)). Set to 0 to disable counter cache. +# NOTE: if you perform counter deletes and rely on low gcgs, you should disable the counter cache. +counter_cache_size_in_mb: + +# Duration in seconds after which Cassandra should +# save the counter cache (keys only). Caches are saved to saved_caches_directory as +# specified in this configuration file. +# +# Default is 7200 or 2 hours. +counter_cache_save_period: 7200 + +# Number of keys from the counter cache to save +# Disabled by default, meaning all keys are going to be saved +# counter_cache_keys_to_save: 100 + +# saved caches +# If not set, the default directory is $CASSANDRA_HOME/data/saved_caches. +saved_caches_directory: /var/lib/cassandra/saved_caches + +# commitlog_sync may be either "periodic" or "batch." +# +# When in batch mode, Cassandra won't ack writes until the commit log +# has been fsynced to disk. It will wait +# commitlog_sync_batch_window_in_ms milliseconds between fsyncs. +# This window should be kept short because the writer threads will +# be unable to do extra work while waiting. (You may need to increase +# concurrent_writes for the same reason.) +# +# commitlog_sync: batch +# commitlog_sync_batch_window_in_ms: 2 +# +# the other option is "periodic" where writes may be acked immediately +# and the CommitLog is simply synced every commitlog_sync_period_in_ms +# milliseconds. +commitlog_sync: periodic +commitlog_sync_period_in_ms: 10000 + +# The size of the individual commitlog file segments. A commitlog +# segment may be archived, deleted, or recycled once all the data +# in it (potentially from each columnfamily in the system) has been +# flushed to sstables. +# +# The default size is 32, which is almost always fine, but if you are +# archiving commitlog segments (see commitlog_archiving.properties), +# then you probably want a finer granularity of archiving; 8 or 16 MB +# is reasonable. +# Max mutation size is also configurable via max_mutation_size_in_kb setting in +# cassandra.yaml. The default is half the size commitlog_segment_size_in_mb * 1024. +# +# NOTE: If max_mutation_size_in_kb is set explicitly then commitlog_segment_size_in_mb must +# be set to at least twice the size of max_mutation_size_in_kb / 1024 +# +commitlog_segment_size_in_mb: 32 + +# Compression to apply to the commit log. If omitted, the commit log +# will be written uncompressed. LZ4, Snappy, and Deflate compressors +# are supported. +#commitlog_compression: +# - class_name: LZ4Compressor +# parameters: +# - + +# any class that implements the SeedProvider interface and has a +# constructor that takes a Map of parameters will do. +seed_provider: + # Addresses of hosts that are deemed contact points. + # Cassandra nodes use this list of hosts to find each other and learn + # the topology of the ring. You must change this if you are running + # multiple nodes! + - class_name: org.apache.cassandra.locator.SimpleSeedProvider + parameters: + # seeds is actually a comma-delimited list of addresses. + # Ex: ",," + - seeds: "127.0.0.1" + +# For workloads with more data than can fit in memory, Cassandra's +# bottleneck will be reads that need to fetch data from +# disk. "concurrent_reads" should be set to (16 * number_of_drives) in +# order to allow the operations to enqueue low enough in the stack +# that the OS and drives can reorder them. Same applies to +# "concurrent_counter_writes", since counter writes read the current +# values before incrementing and writing them back. +# +# On the other hand, since writes are almost never IO bound, the ideal +# number of "concurrent_writes" is dependent on the number of cores in +# your system; (8 * number_of_cores) is a good rule of thumb. +concurrent_reads: 32 +concurrent_writes: 32 +concurrent_counter_writes: 32 + +# For materialized view writes, as there is a read involved, so this should +# be limited by the less of concurrent reads or concurrent writes. +concurrent_materialized_view_writes: 32 + +# Maximum memory to use for sstable chunk cache and buffer pooling. +# 32MB of this are reserved for pooling buffers, the rest is used as an +# cache that holds uncompressed sstable chunks. +# Defaults to the smaller of 1/4 of heap or 512MB. This pool is allocated off-heap, +# so is in addition to the memory allocated for heap. The cache also has on-heap +# overhead which is roughly 128 bytes per chunk (i.e. 0.2% of the reserved size +# if the default 64k chunk size is used). +# Memory is only allocated when needed. +# file_cache_size_in_mb: 512 + +# Flag indicating whether to allocate on or off heap when the sstable buffer +# pool is exhausted, that is when it has exceeded the maximum memory +# file_cache_size_in_mb, beyond which it will not cache buffers but allocate on request. + +# buffer_pool_use_heap_if_exhausted: true + +# The strategy for optimizing disk read +# Possible values are: +# ssd (for solid state disks, the default) +# spinning (for spinning disks) +# disk_optimization_strategy: ssd + +# Total permitted memory to use for memtables. Cassandra will stop +# accepting writes when the limit is exceeded until a flush completes, +# and will trigger a flush based on memtable_cleanup_threshold +# If omitted, Cassandra will set both to 1/4 the size of the heap. +# memtable_heap_space_in_mb: 2048 +# memtable_offheap_space_in_mb: 2048 + +# Ratio of occupied non-flushing memtable size to total permitted size +# that will trigger a flush of the largest memtable. Larger mct will +# mean larger flushes and hence less compaction, but also less concurrent +# flush activity which can make it difficult to keep your disks fed +# under heavy write load. +# +# memtable_cleanup_threshold defaults to 1 / (memtable_flush_writers + 1) +# memtable_cleanup_threshold: 0.11 + +# Specify the way Cassandra allocates and manages memtable memory. +# Options are: +# heap_buffers: on heap nio buffers +# offheap_buffers: off heap (direct) nio buffers +# offheap_objects: off heap objects +memtable_allocation_type: heap_buffers + +# Total space to use for commit logs on disk. +# +# If space gets above this value, Cassandra will flush every dirty CF +# in the oldest segment and remove it. So a small total commitlog space +# will tend to cause more flush activity on less-active columnfamilies. +# +# The default value is the smaller of 8192, and 1/4 of the total space +# of the commitlog volume. +# +# commitlog_total_space_in_mb: 8192 + +# This sets the amount of memtable flush writer threads. These will +# be blocked by disk io, and each one will hold a memtable in memory +# while blocked. +# +# memtable_flush_writers defaults to one per data_file_directory. +# +# If your data directories are backed by SSD, you can increase this, but +# avoid having memtable_flush_writers * data_file_directories > number of cores +#memtable_flush_writers: 1 + +# A fixed memory pool size in MB for for SSTable index summaries. If left +# empty, this will default to 5% of the heap size. If the memory usage of +# all index summaries exceeds this limit, SSTables with low read rates will +# shrink their index summaries in order to meet this limit. However, this +# is a best-effort process. In extreme conditions Cassandra may need to use +# more than this amount of memory. +index_summary_capacity_in_mb: + +# How frequently index summaries should be resampled. This is done +# periodically to redistribute memory from the fixed-size pool to sstables +# proportional their recent read rates. Setting to -1 will disable this +# process, leaving existing index summaries at their current sampling level. +index_summary_resize_interval_in_minutes: 60 + +# Whether to, when doing sequential writing, fsync() at intervals in +# order to force the operating system to flush the dirty +# buffers. Enable this to avoid sudden dirty buffer flushing from +# impacting read latencies. Almost always a good idea on SSDs; not +# necessarily on platters. +trickle_fsync: false +trickle_fsync_interval_in_kb: 10240 + +# TCP port, for commands and data +# For security reasons, you should not expose this port to the internet. Firewall it if needed. +storage_port: 7000 + +# SSL port, for encrypted communication. Unused unless enabled in +# encryption_options +# For security reasons, you should not expose this port to the internet. Firewall it if needed. +ssl_storage_port: 7001 + +# Address or interface to bind to and tell other Cassandra nodes to connect to. +# You _must_ change this if you want multiple nodes to be able to communicate! +# +# Set listen_address OR listen_interface, not both. Interfaces must correspond +# to a single address, IP aliasing is not supported. +# +# Leaving it blank leaves it up to InetAddress.getLocalHost(). This +# will always do the Right Thing _if_ the node is properly configured +# (hostname, name resolution, etc), and the Right Thing is to use the +# address associated with the hostname (it might not be). +# +# Setting listen_address to 0.0.0.0 is always wrong. +# +# If you choose to specify the interface by name and the interface has an ipv4 and an ipv6 address +# you can specify which should be chosen using listen_interface_prefer_ipv6. If false the first ipv4 +# address will be used. If true the first ipv6 address will be used. Defaults to false preferring +# ipv4. If there is only one address it will be selected regardless of ipv4/ipv6. +listen_address: localhost +# listen_interface: eth0 +# listen_interface_prefer_ipv6: false + +# Address to broadcast to other Cassandra nodes +# Leaving this blank will set it to the same value as listen_address +# broadcast_address: 1.2.3.4 + +# When using multiple physical network interfaces, set this +# to true to listen on broadcast_address in addition to +# the listen_address, allowing nodes to communicate in both +# interfaces. +# Ignore this property if the network configuration automatically +# routes between the public and private networks such as EC2. +# listen_on_broadcast_address: false + +# Internode authentication backend, implementing IInternodeAuthenticator; +# used to allow/disallow connections from peer nodes. +# internode_authenticator: org.apache.cassandra.auth.AllowAllInternodeAuthenticator + +# Whether to start the native transport server. +# Please note that the address on which the native transport is bound is the +# same as the rpc_address. The port however is different and specified below. +start_native_transport: true +# port for the CQL native transport to listen for clients on +# For security reasons, you should not expose this port to the internet. Firewall it if needed. +native_transport_port: 9042 +# Enabling native transport encryption in client_encryption_options allows you to either use +# encryption for the standard port or to use a dedicated, additional port along with the unencrypted +# standard native_transport_port. +# Enabling client encryption and keeping native_transport_port_ssl disabled will use encryption +# for native_transport_port. Setting native_transport_port_ssl to a different value +# from native_transport_port will use encryption for native_transport_port_ssl while +# keeping native_transport_port unencrypted. +# native_transport_port_ssl: 9142 +# The maximum threads for handling requests when the native transport is used. +# This is similar to rpc_max_threads though the default differs slightly (and +# there is no native_transport_min_threads, idle threads will always be stopped +# after 30 seconds). +# native_transport_max_threads: 128 +# +# The maximum size of allowed frame. Frame (requests) larger than this will +# be rejected as invalid. The default is 256MB. +# native_transport_max_frame_size_in_mb: 256 + +# The maximum number of concurrent client connections. +# The default is -1, which means unlimited. +# native_transport_max_concurrent_connections: -1 + +# The maximum number of concurrent client connections per source ip. +# The default is -1, which means unlimited. +# native_transport_max_concurrent_connections_per_ip: -1 + +# Whether to start the thrift rpc server. +start_rpc: false + +# The address or interface to bind the Thrift RPC service and native transport +# server to. +# +# Set rpc_address OR rpc_interface, not both. Interfaces must correspond +# to a single address, IP aliasing is not supported. +# +# Leaving rpc_address blank has the same effect as on listen_address +# (i.e. it will be based on the configured hostname of the node). +# +# Note that unlike listen_address, you can specify 0.0.0.0, but you must also +# set broadcast_rpc_address to a value other than 0.0.0.0. +# +# For security reasons, you should not expose this port to the internet. Firewall it if needed. +# +# If you choose to specify the interface by name and the interface has an ipv4 and an ipv6 address +# you can specify which should be chosen using rpc_interface_prefer_ipv6. If false the first ipv4 +# address will be used. If true the first ipv6 address will be used. Defaults to false preferring +# ipv4. If there is only one address it will be selected regardless of ipv4/ipv6. +rpc_address: localhost +# rpc_interface: eth1 +# rpc_interface_prefer_ipv6: false + +# port for Thrift to listen for clients on +rpc_port: 9160 + +# RPC address to broadcast to drivers and other Cassandra nodes. This cannot +# be set to 0.0.0.0. If left blank, this will be set to the value of +# rpc_address. If rpc_address is set to 0.0.0.0, broadcast_rpc_address must +# be set. +# broadcast_rpc_address: 1.2.3.4 + +# enable or disable keepalive on rpc/native connections +rpc_keepalive: true + +# Cassandra provides two out-of-the-box options for the RPC Server: +# +# sync -> One thread per thrift connection. For a very large number of clients, memory +# will be your limiting factor. On a 64 bit JVM, 180KB is the minimum stack size +# per thread, and that will correspond to your use of virtual memory (but physical memory +# may be limited depending on use of stack space). +# +# hsha -> Stands for "half synchronous, half asynchronous." All thrift clients are handled +# asynchronously using a small number of threads that does not vary with the amount +# of thrift clients (and thus scales well to many clients). The rpc requests are still +# synchronous (one thread per active request). If hsha is selected then it is essential +# that rpc_max_threads is changed from the default value of unlimited. +# +# The default is sync because on Windows hsha is about 30% slower. On Linux, +# sync/hsha performance is about the same, with hsha of course using less memory. +# +# Alternatively, can provide your own RPC server by providing the fully-qualified class name +# of an o.a.c.t.TServerFactory that can create an instance of it. +rpc_server_type: sync + +# Uncomment rpc_min|max_thread to set request pool size limits. +# +# Regardless of your choice of RPC server (see above), the number of maximum requests in the +# RPC thread pool dictates how many concurrent requests are possible (but if you are using the sync +# RPC server, it also dictates the number of clients that can be connected at all). +# +# The default is unlimited and thus provides no protection against clients overwhelming the server. You are +# encouraged to set a maximum that makes sense for you in production, but do keep in mind that +# rpc_max_threads represents the maximum number of client requests this server may execute concurrently. +# +# rpc_min_threads: 16 +# rpc_max_threads: 2048 + +# uncomment to set socket buffer sizes on rpc connections +# rpc_send_buff_size_in_bytes: +# rpc_recv_buff_size_in_bytes: + +# Uncomment to set socket buffer size for internode communication +# Note that when setting this, the buffer size is limited by net.core.wmem_max +# and when not setting it it is defined by net.ipv4.tcp_wmem +# See: +# /proc/sys/net/core/wmem_max +# /proc/sys/net/core/rmem_max +# /proc/sys/net/ipv4/tcp_wmem +# /proc/sys/net/ipv4/tcp_wmem +# and: man tcp +# internode_send_buff_size_in_bytes: +# internode_recv_buff_size_in_bytes: + +# Frame size for thrift (maximum message length). +thrift_framed_transport_size_in_mb: 15 + +# Set to true to have Cassandra create a hard link to each sstable +# flushed or streamed locally in a backups/ subdirectory of the +# keyspace data. Removing these links is the operator's +# responsibility. +incremental_backups: false + +# Whether or not to take a snapshot before each compaction. Be +# careful using this option, since Cassandra won't clean up the +# snapshots for you. Mostly useful if you're paranoid when there +# is a data format change. +snapshot_before_compaction: false + +# Whether or not a snapshot is taken of the data before keyspace truncation +# or dropping of column families. The STRONGLY advised default of true +# should be used to provide data safety. If you set this flag to false, you will +# lose data on truncation or drop. +auto_snapshot: true + +# Granularity of the collation index of rows within a partition. +# Increase if your rows are large, or if you have a very large +# number of rows per partition. The competing goals are these: +# 1) a smaller granularity means more index entries are generated +# and looking up rows withing the partition by collation column +# is faster +# 2) but, Cassandra will keep the collation index in memory for hot +# rows (as part of the key cache), so a larger granularity means +# you can cache more hot rows +column_index_size_in_kb: 64 +# Per sstable indexed key cache entries (the collation index in memory +# mentioned above) exceeding this size will not be held on heap. +# This means that only partition information is held on heap and the +# index entries are read from disk. +# +# Note that this size refers to the size of the +# serialized index information and not the size of the partition. +column_index_cache_size_in_kb: 2 + +# Number of simultaneous compactions to allow, NOT including +# validation "compactions" for anti-entropy repair. Simultaneous +# compactions can help preserve read performance in a mixed read/write +# workload, by mitigating the tendency of small sstables to accumulate +# during a single long running compactions. The default is usually +# fine and if you experience problems with compaction running too +# slowly or too fast, you should look at +# compaction_throughput_mb_per_sec first. +# +# concurrent_compactors defaults to the smaller of (number of disks, +# number of cores), with a minimum of 2 and a maximum of 8. +# +# If your data directories are backed by SSD, you should increase this +# to the number of cores. +#concurrent_compactors: 1 + +# Throttles compaction to the given total throughput across the entire +# system. The faster you insert data, the faster you need to compact in +# order to keep the sstable count down, but in general, setting this to +# 16 to 32 times the rate you are inserting data is more than sufficient. +# Setting this to 0 disables throttling. Note that this account for all types +# of compaction, including validation compaction. +compaction_throughput_mb_per_sec: 16 + +# When compacting, the replacement sstable(s) can be opened before they +# are completely written, and used in place of the prior sstables for +# any range that has been written. This helps to smoothly transfer reads +# between the sstables, reducing page cache churn and keeping hot rows hot +sstable_preemptive_open_interval_in_mb: 50 + +# Throttles all outbound streaming file transfers on this node to the +# given total throughput in Mbps. This is necessary because Cassandra does +# mostly sequential IO when streaming data during bootstrap or repair, which +# can lead to saturating the network connection and degrading rpc performance. +# When unset, the default is 200 Mbps or 25 MB/s. +# stream_throughput_outbound_megabits_per_sec: 200 + +# Throttles all streaming file transfer between the datacenters, +# this setting allows users to throttle inter dc stream throughput in addition +# to throttling all network stream traffic as configured with +# stream_throughput_outbound_megabits_per_sec +# When unset, the default is 200 Mbps or 25 MB/s +# inter_dc_stream_throughput_outbound_megabits_per_sec: 200 + +# How long the coordinator should wait for read operations to complete +read_request_timeout_in_ms: 5000 +# How long the coordinator should wait for seq or index scans to complete +range_request_timeout_in_ms: 10000 +# How long the coordinator should wait for writes to complete +write_request_timeout_in_ms: 2000 +# How long the coordinator should wait for counter writes to complete +counter_write_request_timeout_in_ms: 5000 +# How long a coordinator should continue to retry a CAS operation +# that contends with other proposals for the same row +cas_contention_timeout_in_ms: 1000 +# How long the coordinator should wait for truncates to complete +# (This can be much longer, because unless auto_snapshot is disabled +# we need to flush first so we can snapshot before removing the data.) +truncate_request_timeout_in_ms: 60000 +# The default timeout for other, miscellaneous operations +request_timeout_in_ms: 10000 + +# Enable operation timeout information exchange between nodes to accurately +# measure request timeouts. If disabled, replicas will assume that requests +# were forwarded to them instantly by the coordinator, which means that +# under overload conditions we will waste that much extra time processing +# already-timed-out requests. +# +# Warning: before enabling this property make sure to ntp is installed +# and the times are synchronized between the nodes. +cross_node_timeout: false + +# Set socket timeout for streaming operation. +# The stream session is failed if no data is received by any of the +# participants within that period. +# Default value is 3600000, which means streams timeout after an hour. +# streaming_socket_timeout_in_ms: 3600000 + +# phi value that must be reached for a host to be marked down. +# most users should never need to adjust this. +# phi_convict_threshold: 8 + +# endpoint_snitch -- Set this to a class that implements +# IEndpointSnitch. The snitch has two functions: +# - it teaches Cassandra enough about your network topology to route +# requests efficiently +# - it allows Cassandra to spread replicas around your cluster to avoid +# correlated failures. It does this by grouping machines into +# "datacenters" and "racks." Cassandra will do its best not to have +# more than one replica on the same "rack" (which may not actually +# be a physical location) +# +# IF YOU CHANGE THE SNITCH AFTER DATA IS INSERTED INTO THE CLUSTER, +# YOU MUST RUN A FULL REPAIR, SINCE THE SNITCH AFFECTS WHERE REPLICAS +# ARE PLACED. +# +# IF THE RACK A REPLICA IS PLACED IN CHANGES AFTER THE REPLICA HAS BEEN +# ADDED TO A RING, THE NODE MUST BE DECOMMISSIONED AND REBOOTSTRAPPED. +# +# Out of the box, Cassandra provides +# - SimpleSnitch: +# Treats Strategy order as proximity. This can improve cache +# locality when disabling read repair. Only appropriate for +# single-datacenter deployments. +# - GossipingPropertyFileSnitch +# This should be your go-to snitch for production use. The rack +# and datacenter for the local node are defined in +# cassandra-rackdc.properties and propagated to other nodes via +# gossip. If cassandra-topology.properties exists, it is used as a +# fallback, allowing migration from the PropertyFileSnitch. +# - PropertyFileSnitch: +# Proximity is determined by rack and data center, which are +# explicitly configured in cassandra-topology.properties. +# - Ec2Snitch: +# Appropriate for EC2 deployments in a single Region. Loads Region +# and Availability Zone information from the EC2 API. The Region is +# treated as the datacenter, and the Availability Zone as the rack. +# Only private IPs are used, so this will not work across multiple +# Regions. +# - Ec2MultiRegionSnitch: +# Uses public IPs as broadcast_address to allow cross-region +# connectivity. (Thus, you should set seed addresses to the public +# IP as well.) You will need to open the storage_port or +# ssl_storage_port on the public IP firewall. (For intra-Region +# traffic, Cassandra will switch to the private IP after +# establishing a connection.) +# - RackInferringSnitch: +# Proximity is determined by rack and data center, which are +# assumed to correspond to the 3rd and 2nd octet of each node's IP +# address, respectively. Unless this happens to match your +# deployment conventions, this is best used as an example of +# writing a custom Snitch class and is provided in that spirit. +# +# You can use a custom Snitch by setting this to the full class name +# of the snitch, which will be assumed to be on your classpath. +endpoint_snitch: SimpleSnitch + +# controls how often to perform the more expensive part of host score +# calculation +dynamic_snitch_update_interval_in_ms: 100 +# controls how often to reset all host scores, allowing a bad host to +# possibly recover +dynamic_snitch_reset_interval_in_ms: 600000 +# if set greater than zero and read_repair_chance is < 1.0, this will allow +# 'pinning' of replicas to hosts in order to increase cache capacity. +# The badness threshold will control how much worse the pinned host has to be +# before the dynamic snitch will prefer other replicas over it. This is +# expressed as a double which represents a percentage. Thus, a value of +# 0.2 means Cassandra would continue to prefer the static snitch values +# until the pinned host was 20% worse than the fastest. +dynamic_snitch_badness_threshold: 0.1 + +# request_scheduler -- Set this to a class that implements +# RequestScheduler, which will schedule incoming client requests +# according to the specific policy. This is useful for multi-tenancy +# with a single Cassandra cluster. +# NOTE: This is specifically for requests from the client and does +# not affect inter node communication. +# org.apache.cassandra.scheduler.NoScheduler - No scheduling takes place +# org.apache.cassandra.scheduler.RoundRobinScheduler - Round robin of +# client requests to a node with a separate queue for each +# request_scheduler_id. The scheduler is further customized by +# request_scheduler_options as described below. +request_scheduler: org.apache.cassandra.scheduler.NoScheduler + +# Scheduler Options vary based on the type of scheduler +# NoScheduler - Has no options +# RoundRobin +# - throttle_limit -- The throttle_limit is the number of in-flight +# requests per client. Requests beyond +# that limit are queued up until +# running requests can complete. +# The value of 80 here is twice the number of +# concurrent_reads + concurrent_writes. +# - default_weight -- default_weight is optional and allows for +# overriding the default which is 1. +# - weights -- Weights are optional and will default to 1 or the +# overridden default_weight. The weight translates into how +# many requests are handled during each turn of the +# RoundRobin, based on the scheduler id. +# +# request_scheduler_options: +# throttle_limit: 80 +# default_weight: 5 +# weights: +# Keyspace1: 1 +# Keyspace2: 5 + +# request_scheduler_id -- An identifier based on which to perform +# the request scheduling. Currently the only valid option is keyspace. +# request_scheduler_id: keyspace + +# Enable or disable inter-node encryption +# JVM defaults for supported SSL socket protocols and cipher suites can +# be replaced using custom encryption options. This is not recommended +# unless you have policies in place that dictate certain settings, or +# need to disable vulnerable ciphers or protocols in case the JVM cannot +# be updated. +# FIPS compliant settings can be configured at JVM level and should not +# involve changing encryption settings here: +# https://docs.oracle.com/javase/8/docs/technotes/guides/security/jsse/FIPS.html +# NOTE: No custom encryption options are enabled at the moment +# The available internode options are : all, none, dc, rack +# +# If set to dc cassandra will encrypt the traffic between the DCs +# If set to rack cassandra will encrypt the traffic between the racks +# +# The passwords used in these options must match the passwords used when generating +# the keystore and truststore. For instructions on generating these files, see: +# http://download.oracle.com/javase/6/docs/technotes/guides/security/jsse/JSSERefGuide.html#CreateKeystore +# +server_encryption_options: + internode_encryption: none + keystore: conf/.keystore + keystore_password: cassandra + truststore: conf/.truststore + truststore_password: cassandra + # More advanced defaults below: + # protocol: TLS + # algorithm: SunX509 + # store_type: JKS + # cipher_suites: [TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_DHE_RSA_WITH_AES_128_CBC_SHA,TLS_DHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA] + # require_client_auth: false + # require_endpoint_verification: false + +# enable or disable client/server encryption. +client_encryption_options: + enabled: false + # If enabled and optional is set to true encrypted and unencrypted connections are handled. + optional: false + keystore: conf/.keystore + keystore_password: cassandra + # require_client_auth: false + # Set trustore and truststore_password if require_client_auth is true + # truststore: conf/.truststore + # truststore_password: cassandra + # More advanced defaults below: + # protocol: TLS + # algorithm: SunX509 + # store_type: JKS + # cipher_suites: [TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_DHE_RSA_WITH_AES_128_CBC_SHA,TLS_DHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA] + +# internode_compression controls whether traffic between nodes is +# compressed. +# can be: all - all traffic is compressed +# dc - traffic between different datacenters is compressed +# none - nothing is compressed. +internode_compression: dc + +# Enable or disable tcp_nodelay for inter-dc communication. +# Disabling it will result in larger (but fewer) network packets being sent, +# reducing overhead from the TCP protocol itself, at the cost of increasing +# latency if you block for cross-datacenter responses. +inter_dc_tcp_nodelay: false + +# TTL for different trace types used during logging of the repair process. +tracetype_query_ttl: 86400 +tracetype_repair_ttl: 604800 + +# UDFs (user defined functions) are disabled by default. +# As of Cassandra 3.0 there is a sandbox in place that should prevent execution of evil code. +enable_user_defined_functions: false + +# Enables scripted UDFs (JavaScript UDFs). +# Java UDFs are always enabled, if enable_user_defined_functions is true. +# Enable this option to be able to use UDFs with "language javascript" or any custom JSR-223 provider. +# This option has no effect, if enable_user_defined_functions is false. +enable_scripted_user_defined_functions: false + +# The default Windows kernel timer and scheduling resolution is 15.6ms for power conservation. +# Lowering this value on Windows can provide much tighter latency and better throughput, however +# some virtualized environments may see a negative performance impact from changing this setting +# below their system default. The sysinternals 'clockres' tool can confirm your system's default +# setting. +windows_timer_interval: 1 + + +# Enables encrypting data at-rest (on disk). Different key providers can be plugged in, but the default reads from +# a JCE-style keystore. A single keystore can hold multiple keys, but the one referenced by +# the "key_alias" is the only key that will be used for encrypt opertaions; previously used keys +# can still (and should!) be in the keystore and will be used on decrypt operations +# (to handle the case of key rotation). +# +# It is strongly recommended to download and install Java Cryptography Extension (JCE) +# Unlimited Strength Jurisdiction Policy Files for your version of the JDK. +# (current link: http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html) +# +# Currently, only the following file types are supported for transparent data encryption, although +# more are coming in future cassandra releases: commitlog, hints +transparent_data_encryption_options: + enabled: false + chunk_length_kb: 64 + cipher: AES/CBC/PKCS5Padding + key_alias: testing:1 + # CBC IV length for AES needs to be 16 bytes (which is also the default size) + # iv_length: 16 + key_provider: + - class_name: org.apache.cassandra.security.JKSKeyProvider + parameters: + - keystore: conf/.keystore + keystore_password: cassandra + store_type: JCEKS + key_password: cassandra + + +##################### +# SAFETY THRESHOLDS # +##################### + +# When executing a scan, within or across a partition, we need to keep the +# tombstones seen in memory so we can return them to the coordinator, which +# will use them to make sure other replicas also know about the deleted rows. +# With workloads that generate a lot of tombstones, this can cause performance +# problems and even exaust the server heap. +# (http://www.datastax.com/dev/blog/cassandra-anti-patterns-queues-and-queue-like-datasets) +# Adjust the thresholds here if you understand the dangers and want to +# scan more tombstones anyway. These thresholds may also be adjusted at runtime +# using the StorageService mbean. +tombstone_warn_threshold: 1000 +tombstone_failure_threshold: 100000 + +# Log WARN on any batch size exceeding this value. 5kb per batch by default. +# Caution should be taken on increasing the size of this threshold as it can lead to node instability. +batch_size_warn_threshold_in_kb: 5 + +# Fail any batch exceeding this value. 50kb (10x warn threshold) by default. +batch_size_fail_threshold_in_kb: 50 + +# Log WARN on any batches not of type LOGGED than span across more partitions than this limit +unlogged_batch_across_partitions_warn_threshold: 10 + +# Log a warning when compacting partitions larger than this value +compaction_large_partition_warning_threshold_mb: 100 + +# GC Pauses greater than gc_warn_threshold_in_ms will be logged at WARN level +# Adjust the threshold based on your application throughput requirement +# By default, Cassandra logs GC Pauses greater than 200 ms at INFO level +gc_warn_threshold_in_ms: 1000 diff --git a/ansible/roles/cassandra/templates/cassandra.yaml.j2 b/ansible/roles/cassandra/templates/cassandra.yaml.j2 index 0192f9324f..a653707926 100755 --- a/ansible/roles/cassandra/templates/cassandra.yaml.j2 +++ b/ansible/roles/cassandra/templates/cassandra.yaml.j2 @@ -40,11 +40,7 @@ seed_provider: parameters: # seeds is actually a comma-delimited list of addresses. # Ex: ",," -{% if groups['cassandra-2'] is defined %} - - seeds: "{{groups['cassandra'][0]}},{{groups['cassandra'][1]}}" -{% else %} - seeds: {{cassandra_seeds}} -{% endif %} concurrent_reads: 32 concurrent_writes: 32 concurrent_counter_writes: 32 @@ -56,20 +52,14 @@ trickle_fsync: false trickle_fsync_interval_in_kb: 10240 storage_port: 7000 ssl_storage_port: 7001 -{% if groups['cassandra-2'] is defined %} -listen_address: {{hostvars[inventory_hostname]['ansible_default_ipv4']['address']}} -broadcast_address: {{hostvars[inventory_hostname]['ansible_default_ipv4']['address']}} -broadcast_rpc_address: {{hostvars[inventory_hostname]['ansible_default_ipv4']['address']}} -{% else %} listen_address: {{cassandra_listen_address}} -broadcast_address: {{cassandra_broadcast_address}} -broadcast_rpc_address: {{cassandra_broadcast_rpc_address}} -{% endif %} listen_interface: {{cassandra_listen_interface}} start_native_transport: true native_transport_port: 9042 start_rpc: false rpc_address: {{cassandra_rpc_address}} +broadcast_rpc_address: {{cassandra_broadcast_rpc_address}} +broadcast_address: {{cassandra_broadcast_address}} rpc_port: 9160 rpc_keepalive: true rpc_server_type: sync @@ -89,11 +79,7 @@ cas_contention_timeout_in_ms: 1000 truncate_request_timeout_in_ms: 60000 request_timeout_in_ms: 10000 cross_node_timeout: false -{% if groups['cassandra-2'] is defined %} -endpoint_snitch: GossipingPropertyFileSnitch -{% else %} endpoint_snitch: SimpleSnitch -{% endif %} dynamic_snitch_update_interval_in_ms: 100 dynamic_snitch_reset_interval_in_ms: 600000 dynamic_snitch_badness_threshold: 0.1 @@ -173,4 +159,4 @@ batch_size_warn_threshold_in_kb: 5 batch_size_fail_threshold_in_kb: 50 unlogged_batch_across_partitions_warn_threshold: 10 compaction_large_partition_warning_threshold_mb: 100 -gc_warn_threshold_in_ms: 1000 +gc_warn_threshold_in_ms: 1000 \ No newline at end of file From e9cfe6540c6fad0ed23a0b605d8abf2ef0a5968c Mon Sep 17 00:00:00 2001 From: S M Y Date: Mon, 1 Oct 2018 10:31:21 +0530 Subject: [PATCH 0213/1345] Issue #000 cql: reverting changes --- ansible/roles/cassandra/templates/cassandra.yaml.j2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/cassandra/templates/cassandra.yaml.j2 b/ansible/roles/cassandra/templates/cassandra.yaml.j2 index ae27d2c518..0192f9324f 100755 --- a/ansible/roles/cassandra/templates/cassandra.yaml.j2 +++ b/ansible/roles/cassandra/templates/cassandra.yaml.j2 @@ -61,7 +61,7 @@ listen_address: {{hostvars[inventory_hostname]['ansible_default_ipv4']['address' broadcast_address: {{hostvars[inventory_hostname]['ansible_default_ipv4']['address']}} broadcast_rpc_address: {{hostvars[inventory_hostname]['ansible_default_ipv4']['address']}} {% else %} -listen_address: {{cassandra_listen_address}}-ekstep +listen_address: {{cassandra_listen_address}} broadcast_address: {{cassandra_broadcast_address}} broadcast_rpc_address: {{cassandra_broadcast_rpc_address}} {% endif %} From 96a28726b6f7fad99232dd6d34620b0ded856527 Mon Sep 17 00:00:00 2001 From: Manzarul Date: Mon, 1 Oct 2018 10:34:51 +0530 Subject: [PATCH 0214/1345] Issues #SB-00 fix: changes unenroll to unenrol --- ansible/roles/kong-api/defaults/main.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ansible/roles/kong-api/defaults/main.yml b/ansible/roles/kong-api/defaults/main.yml index 3c345aa60e..cecde07273 100644 --- a/ansible/roles/kong-api/defaults/main.yml +++ b/ansible/roles/kong-api/defaults/main.yml @@ -350,8 +350,8 @@ kong_apis: - name: request-size-limiting config.allowed_payload_size: "{{ small_request_size_limit }}" - name: courseUnEnrolment - request_path: "{{ course_service_prefix }}/v1/unenroll" - upstream_url: "{{ learning_service_url }}/v1/course/unenroll" + request_path: "{{ course_service_prefix }}/v1/unenrol" + upstream_url: "{{ learning_service_url }}/v1/course/unenrol" strip_request_path: true plugins: - name: jwt From c378849e58f7977077531f572d4e0b0e30813eeb Mon Sep 17 00:00:00 2001 From: Santhosh Gandham Date: Mon, 1 Oct 2018 10:41:08 +0530 Subject: [PATCH 0215/1345] Issue #000 update proxy config --- ansible/roles/stack-proxy/templates/proxy-default.conf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ansible/roles/stack-proxy/templates/proxy-default.conf b/ansible/roles/stack-proxy/templates/proxy-default.conf index d0acc58b3f..b8208ea4c9 100644 --- a/ansible/roles/stack-proxy/templates/proxy-default.conf +++ b/ansible/roles/stack-proxy/templates/proxy-default.conf @@ -1,4 +1,4 @@ -{% if env != 'dev' %} +{% if env != 'dev' || env != 'staging' %} server { listen 80 default_server; server_name _; # This is just an invalid value which will never trigger on a real hostname. @@ -7,7 +7,7 @@ server { } {% endif %} {% if proto=='https' %} -{% if env != 'dev' %} +{% if env != 'dev' || env != 'staging' %} server { listen 443 default_server ssl; server_name _; # This is just an invalid value which will never trigger on a real hostname. From 8aa1f6797af60d48babbaac84ea7ad4cbbfb53c8 Mon Sep 17 00:00:00 2001 From: Santhosh Gandham Date: Mon, 1 Oct 2018 10:47:21 +0530 Subject: [PATCH 0216/1345] Issue #000 update proxy config --- .../stack-proxy/templates/proxy-default.conf | 18 ------------------ 1 file changed, 18 deletions(-) diff --git a/ansible/roles/stack-proxy/templates/proxy-default.conf b/ansible/roles/stack-proxy/templates/proxy-default.conf index b8208ea4c9..91c36dd55d 100644 --- a/ansible/roles/stack-proxy/templates/proxy-default.conf +++ b/ansible/roles/stack-proxy/templates/proxy-default.conf @@ -1,22 +1,4 @@ -{% if env != 'dev' || env != 'staging' %} -server { - listen 80 default_server; - server_name _; # This is just an invalid value which will never trigger on a real hostname. - server_name_in_redirect off; - return 403; -} -{% endif %} {% if proto=='https' %} -{% if env != 'dev' || env != 'staging' %} -server { - listen 443 default_server ssl; - server_name _; # This is just an invalid value which will never trigger on a real hostname. - ssl_certificate /run/secrets/site.crt; - ssl_certificate_key /run/secrets/site.key; - server_name_in_redirect off; - return 403; -} -{% endif %} server { listen 80; listen [::]:80; From 07b531f2b39cc72e20100385d38d3df09aa02810 Mon Sep 17 00:00:00 2001 From: S M Y Date: Mon, 1 Oct 2018 11:03:04 +0530 Subject: [PATCH 0217/1345] Issue #000 vars: env vars portal --- ansible/inventories/sample/group_vars/sample | 3 +++ ansible/roles/stack-sunbird/templates/sunbird_player.env | 2 ++ 2 files changed, 5 insertions(+) diff --git a/ansible/inventories/sample/group_vars/sample b/ansible/inventories/sample/group_vars/sample index 30dea81662..fe0cd21c62 100644 --- a/ansible/inventories/sample/group_vars/sample +++ b/ansible/inventories/sample/group_vars/sample @@ -343,3 +343,6 @@ encryption_reservation_cpu: 1 #Portal vars: sunbird_portal_user_upload_ref_link: http://www.sunbird.org/features-documentation/register_user +#Portal Vars +config_service_enabled: false +config_refresh_interval: 10 diff --git a/ansible/roles/stack-sunbird/templates/sunbird_player.env b/ansible/roles/stack-sunbird/templates/sunbird_player.env index d1c7b5782e..5f95b5da74 100644 --- a/ansible/roles/stack-sunbird/templates/sunbird_player.env +++ b/ansible/roles/stack-sunbird/templates/sunbird_player.env @@ -32,3 +32,5 @@ sunbird_cloud_storage_urls={{sunbird_cloud_storage_urls}} sunbird_config_service_url={{sunbird_config_service_url}} config_cache_ttl={{config_cache_ttl}} sunbird_portal_user_upload_ref_link={{sunbird_portal_user_upload_ref_link}} +config_service_enabled={{config_service_enabled}} +config_refresh_interval={{config_refresh_interval}} From 5ae54dc539d368c77abf838b2936d7898586622b Mon Sep 17 00:00:00 2001 From: S M Y Date: Mon, 1 Oct 2018 11:08:00 +0530 Subject: [PATCH 0218/1345] Issue #000 vars: env vars portal --- ansible/inventories/sample/group_vars/sample | 4 ++++ ansible/roles/stack-sunbird/templates/sunbird_player.env | 2 ++ 2 files changed, 6 insertions(+) diff --git a/ansible/inventories/sample/group_vars/sample b/ansible/inventories/sample/group_vars/sample index c794fdcf8c..e5d094f796 100644 --- a/ansible/inventories/sample/group_vars/sample +++ b/ansible/inventories/sample/group_vars/sample @@ -350,3 +350,7 @@ sunbird_url_shortner_access_token: sunbird_url_shortner_enable: false sunbird_keycloak_required_action_link_expiration_seconds: 7200 sunbird_user_profile_field_default_visibility: public + +#Player Vars +config_service_enabled: false +config_refresh_interval: 10 diff --git a/ansible/roles/stack-sunbird/templates/sunbird_player.env b/ansible/roles/stack-sunbird/templates/sunbird_player.env index e12cc8135d..e337f78d60 100644 --- a/ansible/roles/stack-sunbird/templates/sunbird_player.env +++ b/ansible/roles/stack-sunbird/templates/sunbird_player.env @@ -33,3 +33,5 @@ sunbird_config_service_url={{sunbird_config_service_url}} config_cache_ttl={{config_cache_ttl}} sunbird_portal_user_upload_ref_link={{sunbird_portal_user_upload_ref_link}} sunbird_build_number={{sunbird_build_number}} +config_service_enabled={{config_service_enabled}} +config_refresh_interval={{config_refresh_interval}} From dd5ec613bdb03dcab8a7c608112df7bab946dfdb Mon Sep 17 00:00:00 2001 From: Amol Ghatol Date: Mon, 1 Oct 2018 11:15:16 +0530 Subject: [PATCH 0219/1345] #SB-6598 chore: Revised Sunbird adopter access (#252) * Issue #SB7310 chore:Onboard Consumer API and Consumer * #SB-6598 chore: Revised sunbird adopter access --- ansible/roles/kong-consumer/defaults/main.yml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/ansible/roles/kong-consumer/defaults/main.yml b/ansible/roles/kong-consumer/defaults/main.yml index 9819060497..2c657cde0c 100644 --- a/ansible/roles/kong-consumer/defaults/main.yml +++ b/ansible/roles/kong-consumer/defaults/main.yml @@ -39,6 +39,14 @@ integration_partner_groups: - appUpdate - courseUser - contentUser + - contentAdmin + - contentUpdate + - courseAdmin + - courseUpdate + - noteAdmin + - noteUpdate + - noteUser + - configUser implementaion_user_groups: - contentAdmin From 704f55d540ad8ced205a4f526a0a8362c62eb198 Mon Sep 17 00:00:00 2001 From: S M Y Date: Mon, 1 Oct 2018 11:23:43 +0530 Subject: [PATCH 0220/1345] Issue #000 host: cql host updation for adding data to one node --- ansible/cassandra-data.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ansible/cassandra-data.yml b/ansible/cassandra-data.yml index 3ed512f7cd..c36e463f29 100644 --- a/ansible/cassandra-data.yml +++ b/ansible/cassandra-data.yml @@ -1,6 +1,6 @@ -- hosts: cassandra +- hosts: groups['cassandra'][0] become: yes vars_files: - ['{{inventory_dir}}/secrets.yml', 'secrets/{{env}}.yml'] roles: - - cassandra-cql-update \ No newline at end of file + - cassandra-cql-update From 0586de23347d120a04f44894e17a87d8faa9ddfe Mon Sep 17 00:00:00 2001 From: S M Y Date: Mon, 1 Oct 2018 11:25:33 +0530 Subject: [PATCH 0221/1345] Issue #000 host: cql host updation for adding data to one node --- ansible/cassandra-backup.yml | 4 ++-- ansible/cassandra-deploy.yml | 4 ++-- ansible/cassandra-restore.yml | 4 ++-- ansible/system-init-upgrade.yml | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/ansible/cassandra-backup.yml b/ansible/cassandra-backup.yml index eb1c2c86dc..7e24262a1e 100644 --- a/ansible/cassandra-backup.yml +++ b/ansible/cassandra-backup.yml @@ -1,6 +1,6 @@ -- hosts: cassandra +- hosts: groups['cassandra'][0] become: yes vars_files: - ['{{inventory_dir}}/secrets.yml', 'secrets/{{env}}.yml'] roles: - - cassandra-backup \ No newline at end of file + - cassandra-backup diff --git a/ansible/cassandra-deploy.yml b/ansible/cassandra-deploy.yml index b556dae79a..9ddaee10ba 100644 --- a/ansible/cassandra-deploy.yml +++ b/ansible/cassandra-deploy.yml @@ -1,4 +1,4 @@ -- hosts: cassandra +- hosts: groups['cassandra'][0] become: yes environment: sunbird_cassandra_host: "{{ groups['cassandra'][0] }}" @@ -7,4 +7,4 @@ vars_files: - ['{{inventory_dir}}/secrets.yml', 'secrets/{{env}}.yml'] roles: - - cassandra-deploy \ No newline at end of file + - cassandra-deploy diff --git a/ansible/cassandra-restore.yml b/ansible/cassandra-restore.yml index baf311a833..860732518a 100644 --- a/ansible/cassandra-restore.yml +++ b/ansible/cassandra-restore.yml @@ -1,6 +1,6 @@ -- hosts: cassandra +- hosts: groups['cassandra'][0] become: yes vars_files: - ['{{inventory_dir}}/secrets.yml', 'secrets/{{env}}.yml'] roles: - - curl_es_command \ No newline at end of file + - curl_es_command diff --git a/ansible/system-init-upgrade.yml b/ansible/system-init-upgrade.yml index dbd39e82de..d4dd9d7999 100644 --- a/ansible/system-init-upgrade.yml +++ b/ansible/system-init-upgrade.yml @@ -1,6 +1,6 @@ -- hosts: cassandra +- hosts: groups['cassandra'][0] become: yes vars_files: - ['{{inventory_dir}}/secrets.yml', 'secrets/{{env}}.yml'] roles: - - sunbird-system-init-upgrade \ No newline at end of file + - sunbird-system-init-upgrade From db405ed29165c79c605497f1c10352eb17356e7a Mon Sep 17 00:00:00 2001 From: S M Y Date: Mon, 1 Oct 2018 14:54:25 +0530 Subject: [PATCH 0222/1345] Issue #000 env: player var --- ansible/roles/stack-sunbird/defaults/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/stack-sunbird/defaults/main.yml b/ansible/roles/stack-sunbird/defaults/main.yml index 5c0fa92272..4855632f31 100644 --- a/ansible/roles/stack-sunbird/defaults/main.yml +++ b/ansible/roles/stack-sunbird/defaults/main.yml @@ -38,7 +38,7 @@ sunbird_data_pipeline_kafka_servers: "{{groups['processing-cluster-kafka']|join( player_replicas: 1 player_reservation_memory: 64M player_limit_memory: 256M - +sunbird_build_number: content_replicas: 1 content_reservation_memory: 64M content_limit_memory: 256M From 0cc4281f3f8654695af069c589f3ff3ef4fcceda Mon Sep 17 00:00:00 2001 From: S M Y Date: Mon, 1 Oct 2018 15:30:53 +0530 Subject: [PATCH 0223/1345] Issue #000 proxy: proxy changes --- .../stack-proxy/templates/proxy-default.conf | 78 +++++++------------ 1 file changed, 27 insertions(+), 51 deletions(-) diff --git a/ansible/roles/stack-proxy/templates/proxy-default.conf b/ansible/roles/stack-proxy/templates/proxy-default.conf index 91c36dd55d..c30ccddade 100644 --- a/ansible/roles/stack-proxy/templates/proxy-default.conf +++ b/ansible/roles/stack-proxy/templates/proxy-default.conf @@ -84,61 +84,31 @@ server { proxy_read_timeout 70; } - # Oauth2 config - location /oauth2/ { - proxy_pass http://oauth:4111; - proxy_set_header Host $host; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header X-Scheme $scheme; - proxy_set_header X-Auth-Request-Redirect $request_uri; - } - - location = /oauth2/auth { - proxy_pass http://oauth:4111; - proxy_set_header Host $host; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header X-Scheme $scheme; - # nginx auth_request includes headers but not body - proxy_set_header Content-Length ""; - proxy_pass_request_body off; - } - location /dashboard/ { - auth_request /oauth2/auth; - error_page 401 = /oauth2/sign_in; - - # pass information via X-User and X-Email headers to backend, - # requires running with --set-xauthrequest flag - auth_request_set $user $upstream_http_x_auth_request_user; - auth_request_set $email $upstream_http_x_auth_request_email; - proxy_set_header X-User $user; - proxy_set_header X-Email $email; - - # if you enabled --cookie-refresh, this is needed for it to work with auth_request - auth_request_set $auth_cookie $upstream_http_set_cookie; - add_header Set-Cookie $auth_cookie; - + set $target http://logger_oauth:4111; rewrite ^/dashboard/(.*) /$1 break; - proxy_pass http://kibana:5601; + proxy_pass $target; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Scheme $scheme; + proxy_connect_timeout 1; + proxy_send_timeout 30; + proxy_read_timeout 40; + + sub_filter '' ''; + sub_filter_once on; } location /pipeline-dashboard/ { - auth_request /oauth2/auth; - error_page 401 = /oauth2/sign_in; - - # pass information via X-User and X-Email headers to backend, - # requires running with --set-xauthrequest flag - auth_request_set $user $upstream_http_x_auth_request_user; - auth_request_set $email $upstream_http_x_auth_request_email; - proxy_set_header X-User $user; - proxy_set_header X-Email $email; - - # if you enabled --cookie-refresh, this is needed for it to work with auth_request - auth_request_set $auth_cookie $upstream_http_set_cookie; - add_header Set-Cookie $auth_cookie; - - rewrite ^/pipeline-dashboard/(.*) /$1 break; - proxy_pass http://{{ ep_es_host}}:5601; + set $target http://{{ ep_es_host}}:5601; + rewrite ^/pipeline-dashboard/(.*) /$1 break; + proxy_pass $target; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Scheme $scheme; + proxy_connect_timeout 1; + proxy_send_timeout 30; + proxy_read_timeout 40; } location /grafana/ { @@ -147,6 +117,11 @@ server { proxy_pass $target; } + location /oauth2/ { + set $target http://logger_oauth:4111; + proxy_pass $target; + } + {% if proxy_prometheus==true %} location /{{prometheus_alertmanager_route_prefix}}/ { set $target http://monitor_alertmanager:9093; @@ -242,7 +217,7 @@ server { proxy_intercept_errors on; add_header Access-Control-Allow-Origin "*"; add_header Access-Control-Allow-Methods GET; - proxy_pass http://$bucket/$url_full; + proxy_pass https://$bucket/$url_full; } @@ -365,3 +340,4 @@ location ~* ^/content-plugins/(.*) { {{ proxy_custom_config }} client_max_body_size 60M; } + From 767491f0cae238ef4d875247ed1e0ff41f662e83 Mon Sep 17 00:00:00 2001 From: S M Y Date: Mon, 1 Oct 2018 18:47:33 +0530 Subject: [PATCH 0224/1345] Issue #000 zoo: zookeeper changes --- ansible/roles/zookeeper/templates/zoo.cfg.j2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/zookeeper/templates/zoo.cfg.j2 b/ansible/roles/zookeeper/templates/zoo.cfg.j2 index d1e7efe84a..dc84527fb1 100644 --- a/ansible/roles/zookeeper/templates/zoo.cfg.j2 +++ b/ansible/roles/zookeeper/templates/zoo.cfg.j2 @@ -6,5 +6,5 @@ initLimit={{ init_limit }} syncLimit={{ sync_limit }} {% for host in groups['zookeeper'] %} -server.{{hostvars[host]['server_id']}}={{hostvars[host]['ansible_eth0']['ipv4']['address']}}:2888:3888 +server.{{hostvars[host]['server_id']}}={{hostvars[inventory_hostname]['ansible_default_ipv4']['address']}}:2888:3888 {% endfor %} From 2e0ce534906afb902c9edcb80b0813173b55ba51 Mon Sep 17 00:00:00 2001 From: S M Y Date: Mon, 1 Oct 2018 18:52:43 +0530 Subject: [PATCH 0225/1345] Issue #000 kafka: kafka changes --- ansible/roles/provision-kafka/templates/server.properties.j2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/provision-kafka/templates/server.properties.j2 b/ansible/roles/provision-kafka/templates/server.properties.j2 index cef50aa26a..52f535f2fb 100644 --- a/ansible/roles/provision-kafka/templates/server.properties.j2 +++ b/ansible/roles/provision-kafka/templates/server.properties.j2 @@ -113,7 +113,7 @@ log.cleaner.enable=false # server. e.g. "127.0.0.1:3000,127.0.0.1:3001,127.0.0.1:3002". # You can also append an optional chroot string to the urls to specify the # root directory for all kafka znodes. -zookeeper.connect={% for host in groups['zookeeper'] %}{{ hostvars[host]['ansible_eth0']['ipv4']['address'] }}:{{zk_port}}{% if not loop.last %},{% endif %}{% endfor %} +zookeeper.connect={% for host in groups['zookeeper'] %}{{hostvars[inventory_hostname]['ansible_default_ipv4']['address']}}:{{zk_port}}{% if not loop.last %},{% endif %}{% endfor %} # Timeout in ms for connecting to zookeeper zookeeper.connection.timeout.ms={{zookeeper_connection_timeout_ms}} From e8ce369061415f735497016bee934040ce715ab2 Mon Sep 17 00:00:00 2001 From: S M Y Date: Mon, 1 Oct 2018 19:17:17 +0530 Subject: [PATCH 0226/1345] Issue #000 monitor: monitoring changes --- ansible/roles/stack-monitor/templates/stack-monitor.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/ansible/roles/stack-monitor/templates/stack-monitor.yml b/ansible/roles/stack-monitor/templates/stack-monitor.yml index b23cf5b5ac..d0dc7496e6 100644 --- a/ansible/roles/stack-monitor/templates/stack-monitor.yml +++ b/ansible/roles/stack-monitor/templates/stack-monitor.yml @@ -379,10 +379,14 @@ configs: external: true blackboxconfig.yml: external: true +{% if groups['postgresql-master'] is defined %} postgresmasterqueries.yml: external: true +{% endif %} +{% if groups['postgresql-slave'] is defined %} postgresslavequeries.yml: external: true +{% endif %} statsd_mapping.yml: external: true jmx_httpserver.yml: From 89c9d87539962a6db6dc21bdcb528ae48ac7beda Mon Sep 17 00:00:00 2001 From: S M Y Date: Mon, 1 Oct 2018 20:26:46 +0530 Subject: [PATCH 0227/1345] Issue #000 telemetry: telemetry service data --- .../roles/stack-sunbird/templates/sunbird_telemetry-service.env | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/stack-sunbird/templates/sunbird_telemetry-service.env b/ansible/roles/stack-sunbird/templates/sunbird_telemetry-service.env index 24188461e0..92d82a7165 100644 --- a/ansible/roles/stack-sunbird/templates/sunbird_telemetry-service.env +++ b/ansible/roles/stack-sunbird/templates/sunbird_telemetry-service.env @@ -6,6 +6,6 @@ telemetry_kafka_broker_list={{sunbird_telemetry_kafka_servers}} telemetry_kafka_topic={{sunbird_telemetry_kafka_topic}} # Below is the config to enable Telemetry Proxy. To send telemetry data to ekstep -telemetry_proxy_enabled=true +telemetry_proxy_enabled=false telemetry_proxy_url={{telemetry_proxy_url}} telemetry_proxy_auth_key={{sunbird_ekstep_api_key}} From 358c9f02b575ff49339614cc79c9a5a932d7ce62 Mon Sep 17 00:00:00 2001 From: S M Y Date: Mon, 1 Oct 2018 20:32:09 +0530 Subject: [PATCH 0228/1345] Issue #000 telemetry: telemetry service data --- .../roles/stack-sunbird/templates/sunbird_telemetry-service.env | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/stack-sunbird/templates/sunbird_telemetry-service.env b/ansible/roles/stack-sunbird/templates/sunbird_telemetry-service.env index 92d82a7165..59b03f1cda 100644 --- a/ansible/roles/stack-sunbird/templates/sunbird_telemetry-service.env +++ b/ansible/roles/stack-sunbird/templates/sunbird_telemetry-service.env @@ -1,6 +1,6 @@ # Configuration for Local storage e.g kafka telemetry_service_threads=2 -telemetry_local_storage_enabled=false +telemetry_local_storage_enabled=true telemetry_local_storage_type={{sunbird_telemetry_dispatchers}} telemetry_kafka_broker_list={{sunbird_telemetry_kafka_servers}} telemetry_kafka_topic={{sunbird_telemetry_kafka_topic}} From 92b148571bf8f848606d252b17c2b889490b62cc Mon Sep 17 00:00:00 2001 From: S M Y Date: Wed, 3 Oct 2018 12:49:23 +0530 Subject: [PATCH 0229/1345] Issue #000 cassandra: cassandra env problem --- ansible/roles/cassandra/templates/cassandra-env.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/ansible/roles/cassandra/templates/cassandra-env.sh b/ansible/roles/cassandra/templates/cassandra-env.sh index dafec58314..ea781665e4 100644 --- a/ansible/roles/cassandra/templates/cassandra-env.sh +++ b/ansible/roles/cassandra/templates/cassandra-env.sh @@ -56,6 +56,7 @@ calculate_heap_sizes() # pick the max half_system_memory_in_mb=`expr $system_memory_in_mb / 2` quarter_system_memory_in_mb=`expr $half_system_memory_in_mb / 2` + max_heap_size_in_mb="$half_system_memory_in_mb" #if [ "$half_system_memory_in_mb" -gt "1024" ] #then # half_system_memory_in_mb="1024" From 7f0ae9454782490b1f3ac9a42e646af2f3725368 Mon Sep 17 00:00:00 2001 From: S M Y Date: Wed, 3 Oct 2018 13:05:32 +0530 Subject: [PATCH 0230/1345] Issue #000 cassandra: cassandra env problem --- ansible/roles/cassandra/templates/cassandra-env.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/ansible/roles/cassandra/templates/cassandra-env.sh b/ansible/roles/cassandra/templates/cassandra-env.sh index dafec58314..ea781665e4 100644 --- a/ansible/roles/cassandra/templates/cassandra-env.sh +++ b/ansible/roles/cassandra/templates/cassandra-env.sh @@ -56,6 +56,7 @@ calculate_heap_sizes() # pick the max half_system_memory_in_mb=`expr $system_memory_in_mb / 2` quarter_system_memory_in_mb=`expr $half_system_memory_in_mb / 2` + max_heap_size_in_mb="$half_system_memory_in_mb" #if [ "$half_system_memory_in_mb" -gt "1024" ] #then # half_system_memory_in_mb="1024" From 46ee3ad896ddf425fba94a37dee38b58c7289a0b Mon Sep 17 00:00:00 2001 From: S M Y Date: Wed, 3 Oct 2018 17:16:13 +0530 Subject: [PATCH 0231/1345] Issue #000 cassandra: cassandra host updation --- ansible/cassandra-backup.yml | 2 +- ansible/cassandra-deploy.yml | 2 +- ansible/cassandra-restore.yml | 2 +- ansible/system-init-upgrade.yml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/ansible/cassandra-backup.yml b/ansible/cassandra-backup.yml index 7e24262a1e..be013b2ba4 100644 --- a/ansible/cassandra-backup.yml +++ b/ansible/cassandra-backup.yml @@ -1,4 +1,4 @@ -- hosts: groups['cassandra'][0] +- hosts: cassandra become: yes vars_files: - ['{{inventory_dir}}/secrets.yml', 'secrets/{{env}}.yml'] diff --git a/ansible/cassandra-deploy.yml b/ansible/cassandra-deploy.yml index 9ddaee10ba..a8d556bbc0 100644 --- a/ansible/cassandra-deploy.yml +++ b/ansible/cassandra-deploy.yml @@ -1,4 +1,4 @@ -- hosts: groups['cassandra'][0] +- hosts: cassandra become: yes environment: sunbird_cassandra_host: "{{ groups['cassandra'][0] }}" diff --git a/ansible/cassandra-restore.yml b/ansible/cassandra-restore.yml index 860732518a..6d00cc69a0 100644 --- a/ansible/cassandra-restore.yml +++ b/ansible/cassandra-restore.yml @@ -1,4 +1,4 @@ -- hosts: groups['cassandra'][0] +- hosts: cassandra become: yes vars_files: - ['{{inventory_dir}}/secrets.yml', 'secrets/{{env}}.yml'] diff --git a/ansible/system-init-upgrade.yml b/ansible/system-init-upgrade.yml index d4dd9d7999..2db8561ae4 100644 --- a/ansible/system-init-upgrade.yml +++ b/ansible/system-init-upgrade.yml @@ -1,4 +1,4 @@ -- hosts: groups['cassandra'][0] +- hosts: cassandra become: yes vars_files: - ['{{inventory_dir}}/secrets.yml', 'secrets/{{env}}.yml'] From 4f61b3c957789b10e0aa756781b072729bca0632 Mon Sep 17 00:00:00 2001 From: S M Y Date: Wed, 3 Oct 2018 17:20:57 +0530 Subject: [PATCH 0232/1345] Issue #000 cassandra: cassandra running tasks for one server if we have many --- ansible/roles/curl_es_command/tasks/main.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ansible/roles/curl_es_command/tasks/main.yml b/ansible/roles/curl_es_command/tasks/main.yml index 9afcabbf23..5ca8800891 100644 --- a/ansible/roles/curl_es_command/tasks/main.yml +++ b/ansible/roles/curl_es_command/tasks/main.yml @@ -1,9 +1,11 @@ - name: Copy the templates become: yes template: src=curl_commands.j2 dest=/tmp/curl_commands.sh mode=755 + run_once: true - name: Run the curl command become: yes shell: sh curl_commands.sh args: chdir: /tmp/ + run_once: true From 06ec1447b800cbf89ccfa15e34ae4b74be2fa4a5 Mon Sep 17 00:00:00 2001 From: S M Y Date: Wed, 3 Oct 2018 17:22:42 +0530 Subject: [PATCH 0233/1345] Issue #000 cassandra: cassandra running tasks for one server if we have many --- ansible/roles/cassandra-deploy/tasks/main.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ansible/roles/cassandra-deploy/tasks/main.yml b/ansible/roles/cassandra-deploy/tasks/main.yml index df51cba9b2..15a1090b6f 100644 --- a/ansible/roles/cassandra-deploy/tasks/main.yml +++ b/ansible/roles/cassandra-deploy/tasks/main.yml @@ -3,7 +3,8 @@ copy: src: "{{cassandra_jar_path}}/cassandra-migration-0.0.1-SNAPSHOT-jar-with-dependencies.jar" dest: "{{cassandra_deploy_path}}" + run_once: true - name: Run the application shell: java -cp "cassandra-migration-0.0.1-SNAPSHOT-jar-with-dependencies.jar" com.contrastsecurity.cassandra.migration.utils.MigrationScriptEntryPoint - + run_once: true From f5021a1ff80dd79971927783a99cfc5d09e1461e Mon Sep 17 00:00:00 2001 From: S M Y Date: Wed, 3 Oct 2018 17:26:30 +0530 Subject: [PATCH 0234/1345] Issue #000 cassandra: cassandra running tasks for one server if we have many --- ansible/roles/sunbird-system-init-upgrade/tasks/main.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/ansible/roles/sunbird-system-init-upgrade/tasks/main.yml b/ansible/roles/sunbird-system-init-upgrade/tasks/main.yml index b403bda95b..b1346c47af 100644 --- a/ansible/roles/sunbird-system-init-upgrade/tasks/main.yml +++ b/ansible/roles/sunbird-system-init-upgrade/tasks/main.yml @@ -1,9 +1,11 @@ - name: Copy the templates become: yes template: src=system_init_upgrade_commands.j2 dest=/tmp/system_init_upgrade_commands.sh mode=755 + run_once: true - name: Run the system init upgrade script become: yes shell: sh system_init_upgrade_commands.sh args: - chdir: /tmp/ \ No newline at end of file + chdir: /tmp/ + run_once: true From 6e3e66714e87e45bc35797c9210c4745dd15291c Mon Sep 17 00:00:00 2001 From: S M Y Date: Wed, 3 Oct 2018 17:28:36 +0530 Subject: [PATCH 0235/1345] Issue #000 cassandra: cassandra running tasks for one server if we have many --- ansible/roles/cassandra-backup/tasks/main.yml | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/ansible/roles/cassandra-backup/tasks/main.yml b/ansible/roles/cassandra-backup/tasks/main.yml index a61f549de6..891b9abf4f 100755 --- a/ansible/roles/cassandra-backup/tasks/main.yml +++ b/ansible/roles/cassandra-backup/tasks/main.yml @@ -1,29 +1,35 @@ - name: Create the directory become: yes file: path=/data/cassandra/ state=directory recurse=yes + run_once: true - name: copy the backup script become: yes template: src=cassandra_backup.j2 dest=/home/deployer/cassandra_backup.sh mode=0755 + run_once: true - name: run the backup script become: yes shell: sh /home/deployer/cassandra_backup.sh + run_once: true - name: Check doc_root path shell: ls -all /data/cassandra/backup/ register: doc_data + run_once: true - name: print doc_root to console debug: - var: doc_data + var: doc_data + run_once: true - set_fact: cassandra_backup_gzip_file_name: "cassandra_backup_{{ lookup('pipe', 'date +%Y%m%d') }}.zip" - + run_once: true - set_fact: cassandra_backup_gzip_file_path: "{{ cassandra_backup_dir }}/{{ cassandra_backup_gzip_file_name }}" + run_once: true - name: Ensure azure blob storage container exists command: az storage container create --name {{ cassandra_backup_azure_container_name }} @@ -31,6 +37,7 @@ environment: AZURE_STORAGE_ACCOUNT: "{{ cassandra_backup_azure_storage_account_name }}" AZURE_STORAGE_KEY: "{{ cassandra_backup_azure_storage_access_key }}" + run_once: true - name: Upload to azure blob storage command: az storage blob upload --name {{ cassandra_backup_gzip_file_name }} --file {{ cassandra_backup_gzip_file_path }} --container-name {{ cassandra_backup_azure_container_name }} @@ -39,7 +46,9 @@ AZURE_STORAGE_KEY: "{{ cassandra_backup_azure_storage_access_key }}" async: 3600 poll: 10 + run_once: true - name: clean up backup dir after upload file: path="{{ cassandra_backup_dir }}" state=absent - \ No newline at end of file + run_once: true + From 74417cbfd9514e40560a529dce54eeaf7b0abd7d Mon Sep 17 00:00:00 2001 From: S M Y Date: Wed, 3 Oct 2018 17:58:36 +0530 Subject: [PATCH 0236/1345] Issue #000 cql: cql host --- ansible/cassandra-data.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/cassandra-data.yml b/ansible/cassandra-data.yml index c36e463f29..4ccc4ad415 100644 --- a/ansible/cassandra-data.yml +++ b/ansible/cassandra-data.yml @@ -1,4 +1,4 @@ -- hosts: groups['cassandra'][0] +- hosts: cassandra become: yes vars_files: - ['{{inventory_dir}}/secrets.yml', 'secrets/{{env}}.yml'] From ba9d07091d4af3acc27279141f6e8aa28d589d94 Mon Sep 17 00:00:00 2001 From: S M Y Date: Wed, 3 Oct 2018 18:01:11 +0530 Subject: [PATCH 0237/1345] Issue #000 cql: cql host --- ansible/provision.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/provision.yml b/ansible/provision.yml index df7a90846a..98c5aa551d 100644 --- a/ansible/provision.yml +++ b/ansible/provision.yml @@ -1,4 +1,4 @@ -- hosts: "cassandra" +- hosts: cassandra become: yes vars_files: - ['{{inventory_dir}}/secrets.yml', 'secrets/{{env}}.yml'] From 469c530298d2dccde06c3bc4ce83652863167816 Mon Sep 17 00:00:00 2001 From: S M Y Date: Wed, 3 Oct 2018 18:08:49 +0530 Subject: [PATCH 0238/1345] Issue #000 cql: cql host --- ansible/roles/cassandra-cql-update/tasks/main.yml | 8 ++++++++ ansible/roles/sunbird-system-init/tasks/main.yml | 4 +++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/ansible/roles/cassandra-cql-update/tasks/main.yml b/ansible/roles/cassandra-cql-update/tasks/main.yml index 9daa238084..49f1662be5 100644 --- a/ansible/roles/cassandra-cql-update/tasks/main.yml +++ b/ansible/roles/cassandra-cql-update/tasks/main.yml @@ -8,6 +8,7 @@ - content_service.cql tags: - always + run_once: true - name: Run the cassandra.cql command become: yes @@ -15,6 +16,7 @@ ignore_errors: yes tags: - cql + run_once: true - name: Run the pageMgmt.csv command become: yes @@ -22,6 +24,7 @@ ignore_errors: yes tags: - pagemanagement + run_once: true - name: Run the pageSection.csv file become: yes @@ -29,6 +32,7 @@ ignore_errors: yes tags: - pagesection + run_once: true - name: Run the content_service.cql file become: yes @@ -36,12 +40,15 @@ ignore_errors: yes tags: - content_service + run_once: true - name: download become: yes command: wget https://github.com/project-sunbird/sunbird-utils/releases/download/release-1.10/cassandra-migration-0.0.1-SNAPSHOT-jar-with-dependencies.jar args: chdir: /tmp + run_once: true + - name: Run the application command: java -cp "cassandra-migration-0.0.1-SNAPSHOT-jar-with-dependencies.jar" com.contrastsecurity.cassandra.migration.utils.MigrationScriptEntryPoint args: @@ -49,3 +56,4 @@ environment: sunbird_cassandra_host: "{{ groups['cassandra'][0] }}" sunbird_cassandra_port: 9042 + run_once: true diff --git a/ansible/roles/sunbird-system-init/tasks/main.yml b/ansible/roles/sunbird-system-init/tasks/main.yml index a9b47cf56c..9b872279e5 100644 --- a/ansible/roles/sunbird-system-init/tasks/main.yml +++ b/ansible/roles/sunbird-system-init/tasks/main.yml @@ -9,6 +9,7 @@ - name: Copy the templates become: yes template: src=system_init_commands.j2 dest=/tmp/system_init_commands.sh mode=755 + run_once: true - name: Pausing for container to be fully functional pause: @@ -18,4 +19,5 @@ become: yes shell: sh system_init_commands.sh args: - chdir: /tmp/ \ No newline at end of file + chdir: /tmp/ + run_once: true From b37bbfc9e08cbc8c1c378dc74bfdd83148db8ff9 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Wed, 3 Oct 2018 18:35:06 +0530 Subject: [PATCH 0239/1345] Issue #0000 feat: Enabling proxy-oauth --- .../stack-proxy/templates/proxy-default.conf | 78 ++++++++++++------- 1 file changed, 51 insertions(+), 27 deletions(-) diff --git a/ansible/roles/stack-proxy/templates/proxy-default.conf b/ansible/roles/stack-proxy/templates/proxy-default.conf index c30ccddade..91c36dd55d 100644 --- a/ansible/roles/stack-proxy/templates/proxy-default.conf +++ b/ansible/roles/stack-proxy/templates/proxy-default.conf @@ -84,31 +84,61 @@ server { proxy_read_timeout 70; } + # Oauth2 config + location /oauth2/ { + proxy_pass http://oauth:4111; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Scheme $scheme; + proxy_set_header X-Auth-Request-Redirect $request_uri; + } + + location = /oauth2/auth { + proxy_pass http://oauth:4111; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Scheme $scheme; + # nginx auth_request includes headers but not body + proxy_set_header Content-Length ""; + proxy_pass_request_body off; + } + location /dashboard/ { - set $target http://logger_oauth:4111; - rewrite ^/dashboard/(.*) /$1 break; - proxy_pass $target; - proxy_set_header Host $host; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header X-Scheme $scheme; - proxy_connect_timeout 1; - proxy_send_timeout 30; - proxy_read_timeout 40; + auth_request /oauth2/auth; + error_page 401 = /oauth2/sign_in; + + # pass information via X-User and X-Email headers to backend, + # requires running with --set-xauthrequest flag + auth_request_set $user $upstream_http_x_auth_request_user; + auth_request_set $email $upstream_http_x_auth_request_email; + proxy_set_header X-User $user; + proxy_set_header X-Email $email; + + # if you enabled --cookie-refresh, this is needed for it to work with auth_request + auth_request_set $auth_cookie $upstream_http_set_cookie; + add_header Set-Cookie $auth_cookie; - sub_filter '' ''; - sub_filter_once on; + rewrite ^/dashboard/(.*) /$1 break; + proxy_pass http://kibana:5601; } location /pipeline-dashboard/ { - set $target http://{{ ep_es_host}}:5601; - rewrite ^/pipeline-dashboard/(.*) /$1 break; - proxy_pass $target; - proxy_set_header Host $host; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header X-Scheme $scheme; - proxy_connect_timeout 1; - proxy_send_timeout 30; - proxy_read_timeout 40; + auth_request /oauth2/auth; + error_page 401 = /oauth2/sign_in; + + # pass information via X-User and X-Email headers to backend, + # requires running with --set-xauthrequest flag + auth_request_set $user $upstream_http_x_auth_request_user; + auth_request_set $email $upstream_http_x_auth_request_email; + proxy_set_header X-User $user; + proxy_set_header X-Email $email; + + # if you enabled --cookie-refresh, this is needed for it to work with auth_request + auth_request_set $auth_cookie $upstream_http_set_cookie; + add_header Set-Cookie $auth_cookie; + + rewrite ^/pipeline-dashboard/(.*) /$1 break; + proxy_pass http://{{ ep_es_host}}:5601; } location /grafana/ { @@ -117,11 +147,6 @@ server { proxy_pass $target; } - location /oauth2/ { - set $target http://logger_oauth:4111; - proxy_pass $target; - } - {% if proxy_prometheus==true %} location /{{prometheus_alertmanager_route_prefix}}/ { set $target http://monitor_alertmanager:9093; @@ -217,7 +242,7 @@ server { proxy_intercept_errors on; add_header Access-Control-Allow-Origin "*"; add_header Access-Control-Allow-Methods GET; - proxy_pass https://$bucket/$url_full; + proxy_pass http://$bucket/$url_full; } @@ -340,4 +365,3 @@ location ~* ^/content-plugins/(.*) { {{ proxy_custom_config }} client_max_body_size 60M; } - From 909f692ee8a90758aabc692e0cfdeb37fb936f5e Mon Sep 17 00:00:00 2001 From: S M Y Date: Wed, 3 Oct 2018 19:29:30 +0530 Subject: [PATCH 0240/1345] Issue #000 cassandra: cassandra for learner service --- .../templates/sunbird_learner-service.env | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/ansible/roles/stack-sunbird/templates/sunbird_learner-service.env b/ansible/roles/stack-sunbird/templates/sunbird_learner-service.env index 5e94e93408..b0123fc5f5 100644 --- a/ansible/roles/stack-sunbird/templates/sunbird_learner-service.env +++ b/ansible/roles/stack-sunbird/templates/sunbird_learner-service.env @@ -4,8 +4,6 @@ sunbird_sso_realm={{keycloak_realm}} sunbird_sso_username={{sunbird_sso_username}} sunbird_sso_password={{sunbird_sso_password}} sunbird_sso_client_id={{sunbird_sso_client_id}} -sunbird_cassandra_host={{sunbird_cassandra_host}} -sunbird_cassandra_port=9042 sunbird_es_host={{sunbird_es_host}} sunbird_es_port={{sunbird_es_port}} sunbird_cassandra_username=cassandra @@ -39,7 +37,14 @@ sunbird_app_url={{sunbird_app_url}} sunbird_msg_91_auth={{sunbird_msg_91_auth}} sunbird_msg_sender={{sunbird_msg_sender}} sunbird_installation_email={{sunbird_installation_email}} - +{% if groups['cassandra-2'] is defined %} +sunbird_cassandra_host="{{groups['cassandra'][0]}},{{groups['cassandra'][1]}},{{groups['cassandra'][2]}}" +sunbird_cassandra_port="9042,9042,9042" +sunbird_cassandra_consistency_level=quorum +{% else %} +sunbird_cassandra_host={{sunbird_cassandra_host}} +sunbird_cassandra_port=9042 +{% endif %} sunbird_mw_system_host=learner-service sunbird_mw_system_port=8088 From b20f4f67b7155ea57b6a72b594af368c708b3b6b Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Thu, 4 Oct 2018 17:45:25 +0530 Subject: [PATCH 0241/1345] Fix to email regex and convert ip to integer before comparing (#249) * fix: SB-7380 - Removed tabs from config file. Updated logic to check docker version. * fix: SB-5443 - Adding new script to validate the config file. Updated main install file to invoke the validation script. * fix: SB-5443 - Adding execute permissions * fix: SB-5443, SB-7699 - Updated the code as per PR comments, added new logic to validate IP and CIDR * style: ansible format for variables * style: add/update comments * fix: update email regex pattern, check IP if its within net and brod add after converting all to integer * fix: changed to arithmetic compare operator * fix: Adding support to check multinode configuration, iterate array linearly based on keys * fix: Adding support to check multinode db passwords and formatting few blocks for better readability * fix: Removing sunbird default channel from mandatory values --- deploy/validateConfig.sh | 154 +++++++++++++++++++++++++++------------ 1 file changed, 107 insertions(+), 47 deletions(-) diff --git a/deploy/validateConfig.sh b/deploy/validateConfig.sh index 983f4177a3..90079e8b58 100755 --- a/deploy/validateConfig.sh +++ b/deploy/validateConfig.sh @@ -28,7 +28,7 @@ fi check_email(){ key=$1 value=$2 -if ! [[ $value =~ ^([a-zA-Z0-9])*@([a-zA-Z0-9])*\.([a-zA-Z0-9])*$ ]]; then +if ! [[ $value =~ ^([a-zA-Z0-9]).*@([a-zA-Z0-9]).*\.([a-zA-Z0-9]).*$ ]]; then echo -e "\e[0;31m${bold}ERROR - Invalid value for $key. Email must be of the format admin@sunbird.com${normal}" fail=1 fi @@ -39,6 +39,7 @@ fi check_cidr(){ key=$1 value=$2 +cidr_result="OK" IFS="./" read -r ip1 ip2 ip3 ip4 N <<< $value ip=$(($ip1 * 256 ** 3 + $ip2 * 256 ** 2 + $ip3 * 256 + $ip4)) if ! [[ $(($ip % 2**(32-$N))) = 0 ]]; then @@ -54,19 +55,48 @@ check_ip(){ key=$1 value=$2 if [[ ${vals[app_address_space]} != "" && $cidr_result != "fail" ]]; then - IFS="." read -r host_ip1 host_ip2 host_ip3 host_ip4 <<< $value - IFS="./" read -r cidr_ip1 cidr_ip2 cidr_ip3 cidr_ip4 N <<< ${vals[app_address_space]} + + IFS="." read -r hip1 hip2 hip3 hip4 <<< $value + host_ip=$(($hip1 * 256 ** 3 + $hip2 * 256 ** 2 + $hip3 * 256 + $hip4)) + + # Obtain the netmask + IFS="./" read -r cip1 cip2 cip3 cip4 N <<< ${vals[app_address_space]} set -- $(( 5 - ($N / 8))) 255 255 255 255 $(((255 << (8 - ($N % 8))) & 255 )) 0 0 0 [ $1 -gt 1 ] && shift $1 || shift mask=${1-0}.${2-0}.${3-0}.${4-0} - IFS="." read -r mask_ip1 mask_ip2 mask_ip3 mask_ip4 <<< $mask - net_addr=$((cidr_ip1&mask_ip1)).$((cidr_ip2&mask_ip2)).$((cidr_ip3&mask_ip3)).$((cidr_ip4&mask_ip4)) - broad_addr=$((cidr_ip1&mask_ip1^(255-$mask_ip1))).$((cidr_ip2&mask_ip2^(255-$mask_ip2))).$((cidr_ip3&mask_ip3^(255-$mask_ip3))).$((cidr_ip4&mask_ip4^(255-$mask_ip4))) - cidr_trim=$cidr_ip1.$cidr_ip2.$cidr_ip3.$cidr_ip4 - ip_post_mask=$((host_ip1&mask_ip1)).$((host_ip2&mask_ip2)).$((host_ip3&mask_ip3)).$((host_ip4&mask_ip4)) - range_start=$((cidr_ip1&mask_ip1)).$((cidr_ip2&mask_ip2)).$((cidr_ip3&mask_ip3)).$(((cidr_ip4&mask_ip4)+1)) - range_end=$((cidr_ip1&mask_ip1^(255-$mask_ip1))).$((cidr_ip2&mask_ip2^(255-$mask_ip2))).$((cidr_ip3&mask_ip3^(255-$mask_ip3))).$(((cidr_ip4&mask_ip4^(255-$mask_ip4))-1)) - if ! [[ $ip_post_mask == $cidr_trim && $value > $net_addr && $value < $broad_addr ]]; then + IFS="." read -r mip1 mip2 mip3 mip4 <<< $mask + + # Network address - Formula to calculate is cidr ip bitwise AND with mask ip + # Ex: 172.30.0.0 & 255.255.0.0 = 172.30.0.0 (First address) + nip1=$((cip1&mip1)) + nip2=$((cip2&mip2)) + nip3=$((cip3&mip3)) + nip4=$((cip4&mip4)) + net_ip=$(($nip1 * 256 ** 3 + $nip2 * 256 ** 2 + $nip3 * 256 + $nip4)) + + # Broadcast address - Formula to calculate is cidr ip bitwise AND with mask ip then XOR with 255 - mask IP + # Ex: 172.30.0.0 & 255.255.0.0 ^ 0.0.255.255 = 172.30.255.255 (Last address) + bip1=$((cip1&mip1^(255-$mip1))) + bip2=$((cip2&mip2^(255-$mip2))) + bip3=$((cip3&mip3^(255-$mip3))) + bip4=$((cip4&mip4^(255-$mip4))) + broad_ip=$(($bip1 * 256 ** 3 + $bip2 * 256 ** 2 + $bip3 * 256 + $bip4)) + + # Bitwise AND host ip with mask ip to obtain CIDR block. + # Example: 172.30.30.55 & 255.255.0.0 = 172.30.0.0 (CIDR) + hipm1=$((hip1&mip1)) + hipm2=$((hip2&mip2)) + hipm3=$((hip3&mip3)) + hipm4=$((hip4&mip4)) + + cidr_trim=$cip1.$cip2.$cip3.$cip4 + ip_mask=$hipm1.$hipm2.$hipm3.$hipm4 + + range_start=$nip1.$nip2.$nip3.$((nip4 + 1)) + range_end=$bip1.$bip2.$bip3.$((bip4 - 1)) + + + if ! [[ $ip_mask == $cidr_trim && $host_ip -gt $net_ip && $host_ip -lt $broad_ip ]]; then echo -e "\e[0;31m${bold}ERROR - Invalid value for $key. IP address does not belong to the CIDR group. Valid range for given app_address_space is $range_start to $range_end${normal}" fail=1 fi @@ -74,26 +104,23 @@ fi } -# Check if login succeeds to the app and db server using username and private key +# Check if login succeeds to the app, db, es, cass and pg master server using username and private key if values are not null check_login(){ key=$1 value=$2 -app_server=${vals[application_host]} -db_server=${vals[database_host]} username=${vals[ssh_ansible_user]} -app_user=$(ssh -i $value -o StrictHostKeyChecking=no -o ConnectTimeout=1 $username@$app_server whoami 2> /dev/null) -db_user=$(ssh -i $value -o StrictHostKeyChecking=no -o ConnectTimeout=1 $username@$db_server whoami 2> /dev/null) - -if [[ $app_user != $username ]]; then - echo -e "\e[0;31m${bold}ERROR - Login to app server failed. Please check application_host, ssh_ansible_user, ansible_private_key_path${normal}" - fail=1 -fi +for j in ${!arr_hosts[@]} +do + if [[ ${arr_hosts[$j]} != "" ]]; then + login_user=$(ssh -i $value -o StrictHostKeyChecking=no -o ConnectTimeout=1 $username@${arr_hosts[$j]} whoami 2> /dev/null) -if [[ $db_user != $username ]]; then - echo -e "\e[0;31m${bold}ERROR - Login to db server failed. Please check database_host, ssh_ansible_user, ansible_private_key_path${normal}" - fail=1 -fi + if [[ $login_user != $username ]]; then + echo -e "\e[0;31m${bold}ERROR - Login to ${index_keys[$j]} failed. Please check ${index_keys[$j]}, ssh_ansible_user, ansible_private_key_path${normal}" + fail=1 + fi + fi +done } @@ -101,16 +128,20 @@ fi check_sudo(){ key=$1 value=$2 -app_server=${vals[application_host]} -db_server=${vals[database_host]} username=${vals[ssh_ansible_user]} private_key=${vals[ansible_private_key_path]} -result=$(ssh -i $private_key -o StrictHostKeyChecking=no -o ConnectTimeout=1 $username@$app_server "echo $value | sudo -S apt-get check" 2> /dev/null) -if ! [[ $result =~ (Reading|Building) ]]; then - echo -e "\e[0;31m${bold}ERROR - Sudo login failed. Please check the username / password / IP" - fail=1 +for j in ${!arr_hosts[@]} +do + if [[ ${arr_hosts[$j]} != "" ]]; then + result=$(ssh -i $private_key -o StrictHostKeyChecking=no -o ConnectTimeout=1 $username@${arr_hosts[$j]} "echo $value | sudo -S apt-get check" 2> /dev/null) + + if ! [[ $result =~ (Reading|Building) ]]; then + echo -e "\e[0;31m${bold}ERROR - Sudo check failed. Please check the value provided in ssh_ansible_user, $key, ansible_private_key_path, ${index_keys[$j]}${normal}" + fail=1 + fi fi +done } @@ -123,22 +154,25 @@ vals[$key]=$(awk ''/^$key:' /{ if ($2 !~ /#.*/) {print $2}}' config) # Script start. core_install will receive value as "core" from calling script when -s core option is triggered. bold=$(tput bold) normal=$(tput sgr0) +fail=0 if ! [[ $# -eq 0 ]]; then -core_install=$1 + core_install=$1 else -core_install="NA" + core_install="NA" fi echo -e "\e[0;33m${bold}Validating the config file...${normal}" # An array of mandatory values -declare -a arr=("env" "implementation_name" "ssh_ansible_user" "sudo_passwd" "ansible_private_key_path" "application_host" "app_address_space" "dns_name" "proto" "cert_path" \ - "key_path" "database_host" "database_password" "keycloak_admin_password" "sso_password" "trampoline_secret" "backup_storage_key" "badger_admin_password" \ - "badger_admin_email" "ekstep_api_base_url" "ekstep_proxy_base_url" "ekstep_api_key" "sunbird_image_storage_url" "sunbird_azure_storage_key" \ - "sunbird_azure_storage_account" "sunbird_custodian_tenant_name" "sunbird_custodian_tenant_description" "sunbird_custodian_tenant_channel" \ - "sunbird_root_user_firstname" "sunbird_root_user_lastname" "sunbird_root_user_username" "sunbird_root_user_password" "sunbird_root_user_email" \ - "sunbird_root_user_phone" "sunbird_sso_publickey" "sunbird_default_channel") +declare -a arr=("env" "implementation_name" "ssh_ansible_user" "dns_name" "proto" "cert_path" "key_path" "keycloak_admin_password" \ + "sso_password" "trampoline_secret" "backup_storage_key" "badger_admin_password" "badger_admin_email" "ekstep_api_base_url" \ + "ekstep_proxy_base_url" "ekstep_api_key" "sunbird_image_storage_url" "sunbird_azure_storage_key" "sunbird_azure_storage_account" \ + "sunbird_custodian_tenant_name" "sunbird_custodian_tenant_description" "sunbird_custodian_tenant_channel" "sunbird_root_user_firstname" \ + "sunbird_root_user_lastname" "sunbird_root_user_username" "sunbird_root_user_password" "sunbird_root_user_email" "sunbird_root_user_phone" \ + "sunbird_sso_publickey" "app_address_space" "application_host" "database_host" "sudo_passwd" \ + "ansible_private_key_path" "elasticsearch_host" "cassandra_host" "postgres_master_host" "database_password" "postgres_keycloak_password" \ + "postgres_app_password" "postgres_kong_password" "postgres_badger_password" "cassandra_password") # Create and empty array which will store the key and value pair from config file declare -A vals @@ -149,15 +183,19 @@ do get_config_values $i done +# An array of all the IP addresses which we will use to test login and sudo privilege +declare -a arr_hosts=("${vals[application_host]}" "${vals[database_host]}" "${vals[elasticsearch_host]}" "${vals[cassandra_host]}" "${vals[postgres_master_host]}") +declare -a index_keys=("application_host" "database_host" "elasticsearch_host" "cassandra_host" "postgres_master_host") + # Iterate the array of key values and based on key check the validation -for i in ${!vals[@]} +for i in ${arr[@]} do key=$i -value=${vals[$i]} +value=${vals[$key]} case $key in proto) if [[ ! "$value" =~ ^(http|https)$ ]]; then - echo -e "\e[0;31m${bold}ERROR - Invalid value for $key. Valid values are http / https${normal}"; fail=1 + echo -e "\e[0;31m${bold}ERROR - Value for $key cannot be empty. Valid values are http / https${normal}"; fail=1 fi ;; cert_path|key_path) @@ -203,7 +241,7 @@ case $key in check_cidr $key $value fi ;; - application_host|database_host) + application_host) if [[ $value == "" ]]; then echo -e "\e[0;31m${bold}ERROR - Value for $key cannot be empty. Please fill this value${normal}"; fail=1 else @@ -224,20 +262,42 @@ case $key in ;; sunbird_sso_publickey) if [[ $core_install == "core" && $value == "" ]]; then - echo -e "\e[0;31m${bold}ERROR - Value for $key cannot be empty. Please fill this value before running core"; fail=1 + echo -e "\e[0;31m${bold}ERROR - Value for $key cannot be empty. Please fill this value before running core${normal}"; fail=1 fi ;; + database_host) + if [[ $value != "" ]]; then + check_ip $key $value + fi + ;; + elasticsearch_host|cassandra_host|postgres_master_host) + if [[ $value != "" ]]; then + check_ip $key $value + elif [[ $value == "" && ${vals[database_host]} == "" ]]; then + echo -e "\e[0;31m${bold}ERROR - Value for $key cannot be empty. Please fill this value OR provide value for database_host which will be default DB${normal}"; fail=1 + fi + ;; + database_password) + continue + ;; + postgres_keycloak_password|postgres_app_password|postgres_kong_password|postgres_badger_password|cassandra_password) + if [[ ${vals[database_password]} == "" && $value == "" ]]; then + echo -e "\e[0;31m${bold}ERROR - Value for $key is empty. Please provide fill this value OR provide value for database_password which will be default password${normal}"; fail=1 + fi + ;; + *) - if [[ "$value" == "" ]]; then + if [[ $value == "" ]]; then echo -e "\e[0;31m${bold}ERROR - Value for $key cannot be empty. Please fill this value${normal}"; fail=1 fi ;; esac done + # Check if any of the validation failed and exit -if [[ $fail ]]; then - echo -e "\e[0;31m${bold}Config file has errors. Please rectify the issues and rerun${normal}" +if [[ $fail -eq 1 ]]; then + echo -e "\e[0;34m${bold}Config file has errors. Please rectify the issues and rerun${normal}" exit 1 else echo -e "\e[0;32m${bold}Config file successfully validated${normal}" From c1d4695ce2407e272c58055c61a4e7fe43decff1 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Thu, 4 Oct 2018 17:52:35 +0530 Subject: [PATCH 0242/1345] Travis CI nightly build scripts (#253) * feat: SB-7716 - Travis CI Nightly builds for Sunbird installation * fix: Removing extra travis file --- .travis.yml | 51 ++++++++++++++------ travis-ci-scripts/anisbile_lint.sh | 8 ++++ travis-ci-scripts/build.sh | 14 ++++++ travis-ci-scripts/cli_install.sh | 7 +++ travis-ci-scripts/copy_script.sh | 14 ++++++ travis-ci-scripts/install_sb.sh | 76 ++++++++++++++++++++++++++++++ travis-ci-scripts/launch_vm.sh | 30 ++++++++++++ travis-ci-scripts/release_to_build | 1 + travis-ci-scripts/remove_vm.sh | 15 ++++++ travis-ci-scripts/update_config.sh | 31 ++++++++++++ 10 files changed, 232 insertions(+), 15 deletions(-) create mode 100755 travis-ci-scripts/anisbile_lint.sh create mode 100755 travis-ci-scripts/build.sh create mode 100755 travis-ci-scripts/cli_install.sh create mode 100755 travis-ci-scripts/copy_script.sh create mode 100755 travis-ci-scripts/install_sb.sh create mode 100755 travis-ci-scripts/launch_vm.sh create mode 100644 travis-ci-scripts/release_to_build create mode 100755 travis-ci-scripts/remove_vm.sh create mode 100755 travis-ci-scripts/update_config.sh diff --git a/.travis.yml b/.travis.yml index 4cbea5b1a3..32052212db 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,21 +1,42 @@ ---- -sudo: required dist: trusty +addons: + apt: + packages: + - python3-pip -language: python -python: "2.7" +language: generic +python: +- "3.6" -env: - - ANSIBLE_VERSION=latest - - ANSIBLE_VERSION=2.4.1.0 - - ANSIBLE_VERSION=2.3.1.0 +before_script: +- ./travis-ci-scripts/cli_install.sh -before_install: - - sudo apt-get update -qq +matrix: + allow_failures: + include: + - name: "master branch" + env: release="master" + script: ./travis-ci-scripts/build.sh + - name: "release-1.9 tag" + env: release="tags/release-1.9" + script: ./travis-ci-scripts/build.sh + - name: "release-1.10 tag" + env: release="tags/release-1.10" + script: ./travis-ci-scripts/build.sh + - name: "release-1.11 branch" + env: release="release-1.11" + script: ./travis-ci-scripts/build.sh -install: - - if [ "$ANSIBLE_VERSION" = "latest" ]; then pip install ansible; else pip install ansible==$ANSIBLE_VERSION; fi - - if [ "$ANSIBLE_VERSION" = "latest" ]; then pip install ansible-lint; fi +after_script: +- ./travis-ci-scripts/anisbile_lint.sh -script: - - ./test.sh \ No newline at end of file +notifications: + email: + recipients: + - msknext@gmail.com + - rajeev.sathish@tarento.com + - rajesh.r@optit.co + - santhosh.g@optit.in + - altamash.s@optit.co + on_success: always + on_failure: always diff --git a/travis-ci-scripts/anisbile_lint.sh b/travis-ci-scripts/anisbile_lint.sh new file mode 100755 index 0000000000..51ee48a9f5 --- /dev/null +++ b/travis-ci-scripts/anisbile_lint.sh @@ -0,0 +1,8 @@ +#!/bin/bash +virtualenv env; +source env/bin/activate; +pip -q install ansible; +pip -q install ansible-lint +ansible --version +ansible-playbook --version +./test.sh diff --git a/travis-ci-scripts/build.sh b/travis-ci-scripts/build.sh new file mode 100755 index 0000000000..82343d85a1 --- /dev/null +++ b/travis-ci-scripts/build.sh @@ -0,0 +1,14 @@ +fail=0 +echo "Building $release" +./travis-ci-scripts/update_config.sh +./travis-ci-scripts/launch_vm.sh +./travis-ci-scripts/copy_script.sh +if [[ $? -ne 0 ]]; then + fail=1 +fi +./travis-ci-scripts/remove_vm.sh + +if [[ $fail -eq 1 ]]; then + echo "Sunbird installation for $release failed" + exit 1 +fi diff --git a/travis-ci-scripts/cli_install.sh b/travis-ci-scripts/cli_install.sh new file mode 100755 index 0000000000..c5b47d9497 --- /dev/null +++ b/travis-ci-scripts/cli_install.sh @@ -0,0 +1,7 @@ +#!/bin/bash +pip3 -q install awscli --upgrade --user +aws --version +aws configure set aws_access_key_id $keyid +aws configure set aws_secret_access_key $key +aws configure set region ap-south-1 +aws configure set output text diff --git a/travis-ci-scripts/copy_script.sh b/travis-ci-scripts/copy_script.sh new file mode 100755 index 0000000000..1d25724ccd --- /dev/null +++ b/travis-ci-scripts/copy_script.sh @@ -0,0 +1,14 @@ +#!/bin/bash +config_file=$TRAVIS_BUILD_DIR/deploy/config +install_script=$TRAVIS_BUILD_DIR/travis-ci-scripts/install_sb.sh +release_to_build=$TRAVIS_BUILD_DIR/travis-ci-scripts/release_to_build +app_ip=$(awk '/dns_name:/{ if ($2 !~ /#.*/) {print $2}}' $config_file) +user_name=$(awk '/ssh_ansible_user:/{if ($2 !~ /#.*/) {print $2}}' $config_file) +printf "%s$private_key" > sunbird.pem +chmod 600 sunbird.pem +echo $release > $release_to_build +scp -i sunbird.pem -o StrictHostKeyChecking=no $config_file sunbird.pem $install_script $release_to_build $user_name@$app_ip:/tmp +ssh -i sunbird.pem -o StrictHostKeyChecking=no $user_name@$app_ip "/tmp/install_sb.sh" +if [[ $? -ne 0 ]]; then + exit 1 +fi diff --git a/travis-ci-scripts/install_sb.sh b/travis-ci-scripts/install_sb.sh new file mode 100755 index 0000000000..23a417effa --- /dev/null +++ b/travis-ci-scripts/install_sb.sh @@ -0,0 +1,76 @@ +#!/bin/bash +release=$(cat /tmp/release_to_build) +username=$(awk '/ssh_ansible_user:/{ if ($2 !~ /#.*/) {print $2}}' /tmp/config) +dns_name=$(awk '/dns_name:/{ if ($2 !~ /#.*/) {print $2}}' /tmp/config) +keycloak_pass=$(awk '/keycloak_admin_password:/{ if ($2 !~ /#.*/) {print $2}}' /tmp/config) +sso_pass=$(awk '/sso_password:/{ if ($2 !~ /#.*/) {print $2}}' /tmp/config) +cd /home/$username +mkdir .ssh 2> /dev/null +cp /tmp/sunbird.pem .ssh +sudo apt-get update -y && sudo apt-get install git -y +git clone https://github.com/project-sunbird/sunbird-devops.git +cd sunbird-devops + +IFS="/" read -r var1 var2 <<< $release + +if [[ $var1 == "tags" ]]; then + git checkout $release -b $var2 + echo "Building on $var2" +elif [[ $var1 == "master" ]]; then + echo "Buidling on master" +else + git checkout -b $var1 origin/$var1 + echo "Building on $var1" +fi + +cp /tmp/config ./deploy +cd deploy +echo "" +echo "********************************************************" +echo "Beginning Sunbird installation" +echo "********************************************************" +echo "" +./sunbird_install.sh + +if [[ $? -eq 0 ]]; then + echo "" + echo "********************************************************" + echo "Sunbird installation complete" + echo "********************************************************" + echo "" + echo "********************************************************" + echo "Beginning sunbird core installation" + echo "********************************************************" + echo "" + access_token=$(curl -s -X POST http://$dns_name/auth/realms/master/protocol/openid-connect/token -H "cache-control: no-cache" -H "content-type: application/x-www-form-urlencoded" -d "client_id=admin-cli&username=admin&password=$keycloak_pass&grant_type=password" | jq -r ".access_token") + public_key=$(curl -s -X GET http://$dns_name/auth/admin/realms/sunbird/keys -H "Authorization: Bearer $access_token" -H "Cache-Control: no-cache" -H "Content-Type: application/json" | jq -r ".keys[0].publicKey") + sed -i "s|sunbird_sso_publickey:|sunbird_sso_publickey: $public_key|g" config + ./sunbird_install.sh -s core + + if [[ $? -eq 0 ]]; then + jwt_token=$(cat /home/$username/jwt_token_player.txt | tr -d " ") + access_token_user=$(curl -s -X POST http://$dns_name/auth/realms/sunbird/protocol/openid-connect/token -H "cache-control: no-cache" -H "content-type: application/x-www-form-urlencoded" -d "client_id=admin-cli&username=user-manager&password=$sso_pass&grant_type=password" | jq -r ".access_token") + status=$(curl -s -X POST http://$dns_name/api/org/v1/create -H "Cache-Control: no-cache" -H "Content-Type: application/json" -H "accept: application/json" -H "authorization: Bearer $jwt_token" -H "x-authenticated-user-token: $access_token_user" -d '{"request":{"orgName": "travis-ci", "description": "travis-ci", "isRootOrg": true, "channel": "travis-ci"}}' | jq -r ".responseCode") + if [[ $status == "SUCCESS" ]]; then + echo "" + echo "********************************************************" + echo "Sunbird installatation successful" + echo "********************************************************" + echo "" + else + echo "" + echo "********************************************************" + echo "Sunbird installatation failed. Unable to create root org" + echo "********************************************************" + echo "" + exit 1 + fi + fi +else + echo "" + echo "********************************************************" + echo "Sunbird installatation failed. Error occured during installation." + echo "********************************************************" + echo "" + exit 1 +fi diff --git a/travis-ci-scripts/launch_vm.sh b/travis-ci-scripts/launch_vm.sh new file mode 100755 index 0000000000..b95f3e9932 --- /dev/null +++ b/travis-ci-scripts/launch_vm.sh @@ -0,0 +1,30 @@ +#!/bin/bash +config_file=$TRAVIS_BUILD_DIR/deploy/config +#aws ec2 run-instances --launch-template LaunchTemplateName=travis-ci-app +#aws ec2 run-instances --launch-template LaunchTemplateName=travis-ci-db +aws ec2 run-instances --image-id ami-0c510557369b14896 --instance-type t2.large --key-name adoption-keshav --subnet-id subnet-0241076a --tag-specifications "ResourceType=instance,Tags=[{Key=Name,Value=travis-app-$TRAVIS_BUILD_NUMBER}]" +aws ec2 run-instances --image-id ami-0c510557369b14896 --instance-type t2.large --key-name adoption-keshav --subnet-id subnet-0241076a --tag-specifications "ResourceType=instance,Tags=[{Key=Name,Value=travis-db-$TRAVIS_BUILD_NUMBER}]" +echo "Wait for app and db instances to launch" +sleep 150 + +aws_app_instance=$(aws ec2 describe-instances --filters "Name=instance-state-name,Values=running" "Name=tag:Name,Values=travis-app-$TRAVIS_BUILD_NUMBER" --query "Reservations[*].Instances[*].{PrivateIP: PrivateIpAddress, PublicIP: PublicIpAddress, InstanceId: InstanceId}") +app_instance_id=$(echo $aws_app_instance | awk '{print $1}') +app_private_ip=$(echo $aws_app_instance | awk '{print $2}') +app_public_ip=$(echo $aws_app_instance | awk '{print $3}') + +aws_db_instance=$(aws ec2 describe-instances --filters "Name=instance-state-name,Values=running" "Name=tag:Name,Values=travis-db-$TRAVIS_BUILD_NUMBER" --query "Reservations[*].Instances[*].{PrivateIP: PrivateIpAddress, PublicIP: PublicIpAddress, InstanceId: InstanceId}") +db_instance_id=$(echo $aws_db_instance | awk '{print $1}') +db_private_ip=$(echo $aws_db_instance | awk '{print $2}') +db_public_ip=$(echo $aws_db_instance | awk '{print $3}') + +echo "App instance id: $app_instance_id" +echo "App private ip: $app_private_ip" +echo "App public ip: $app_public_ip" + +echo "DB instance id: $db_instance_id" +echo "DB private ip: $db_private_ip" +echo "DB public ip: $db_public_ip" + +sed -i "s/application_host:/application_host: $app_private_ip/g" $config_file +sed -i "s/dns_name:/dns_name: $app_public_ip/g" $config_file +sed -i "s/database_host:/database_host: $db_private_ip/g" $config_file diff --git a/travis-ci-scripts/release_to_build b/travis-ci-scripts/release_to_build new file mode 100644 index 0000000000..8b13789179 --- /dev/null +++ b/travis-ci-scripts/release_to_build @@ -0,0 +1 @@ + diff --git a/travis-ci-scripts/remove_vm.sh b/travis-ci-scripts/remove_vm.sh new file mode 100755 index 0000000000..4bafd58622 --- /dev/null +++ b/travis-ci-scripts/remove_vm.sh @@ -0,0 +1,15 @@ +#!/bin/bash +aws_app_instance=$(aws ec2 describe-instances --filters "Name=instance-state-name,Values=running" "Name=tag:Name,Values=travis-app-$TRAVIS_BUILD_NUMBER" --query "Reservations[*].Instances[*].{PrivateIP: PrivateIpAddress, PublicIP: PublicIpAddress, InstanceId: InstanceId}") +app_instance_id=$(echo $aws_app_instance | awk '{print $1}') + +aws_db_instance=$(aws ec2 describe-instances --filters "Name=instance-state-name,Values=running" "Name=tag:Name,Values=travis-db-$TRAVIS_BUILD_NUMBER" --query "Reservations[*].Instances[*].{PrivateIP: PrivateIpAddress, PublicIP: PublicIpAddress, InstanceId: InstanceId}") +db_instance_id=$(echo $aws_db_instance | awk '{print $1}') + +echo "Removing app instance with id: $app_instance_id" + +echo "Removing DB instance with id: $db_instance_id" + +echo "Wait before terminating instance" +sleep 60 + +aws ec2 terminate-instances --instance-ids $app_instance_id $db_instance_id diff --git a/travis-ci-scripts/update_config.sh b/travis-ci-scripts/update_config.sh new file mode 100755 index 0000000000..ed25765bfa --- /dev/null +++ b/travis-ci-scripts/update_config.sh @@ -0,0 +1,31 @@ +#!/bin/bash +config_file=$TRAVIS_BUILD_DIR/deploy/config +sed -i "s/env:/env: $env/g" $config_file +sed -i "s/implementation_name:/implementation_name: $implementation_name/g" $config_file +sed -i "s/ssh_ansible_user:/ssh_ansible_user: $ssh_ansible_user/g" $config_file +sed -i "s#ansible_private_key_path:#ansible_private_key_path: $ansible_private_key_path#g" $config_file +sed -i "s#app_address_space:#app_address_space: $app_address_space#g" $config_file +sed -i "s/proto:/proto: $proto/g" $config_file +sed -i "s/database_password:/database_password: $database_password/g" $config_file +sed -i "s/keycloak_admin_password:/keycloak_admin_password: $keycloak_admin_password/g" $config_file +sed -i "s/sso_password:/sso_password: $sso_password/g" $config_file +sed -i "s/trampoline_secret:/trampoline_secret: $trampoline_secret/g" $config_file +sed -i "s/backup_storage_key:/backup_storage_key: $backup_storage_key/g" $config_file +sed -i "s/badger_admin_password:/badger_admin_password: $badger_admin_password/g" $config_file +sed -i "s/badger_admin_email:/badger_admin_email: $badger_admin_email/g" $config_file +sed -i "s?ekstep_api_base_url:.*#?ekstep_api_base_url: https://api-qa.ekstep.in # ?g" $config_file +sed -i "s?ekstep_proxy_base_url:.*#?ekstep_proxy_base_url: https://qa.ekstep.in # ?g" $config_file +sed -i "s#ekstep_api_key:#ekstep_api_key: $ekstep_api_key#g" $config_file +sed -i "s#sunbird_image_storage_url:#sunbird_image_storage_url: $sunbird_image_storage_url#g" $config_file +sed -i "s#sunbird_azure_storage_key:#sunbird_azure_storage_key: $sunbird_azure_storage_key#g" $config_file +sed -i "s/sunbird_azure_storage_account:/sunbird_azure_storage_account: $sunbird_azure_storage_account/g" $config_file +sed -i "s/sunbird_custodian_tenant_name:/sunbird_custodian_tenant_name: $sunbird_custodian_tenant_name/g" $config_file +sed -i "s/sunbird_custodian_tenant_description:/sunbird_custodian_tenant_description: $sunbird_custodian_tenant_description/g" $config_file +sed -i "s/sunbird_custodian_tenant_channel:/sunbird_custodian_tenant_channel: $sunbird_custodian_tenant_channel/g" $config_file +sed -i "s/sunbird_root_user_firstname:/sunbird_root_user_firstname: $sunbird_root_user_firstname/g" $config_file +sed -i "s/sunbird_root_user_lastname:/sunbird_root_user_lastname: $sunbird_root_user_lastname/g" $config_file +sed -i "s/sunbird_root_user_username:/sunbird_root_user_username: $sunbird_root_user_username/g" $config_file +sed -i "s/sunbird_root_user_password:/sunbird_root_user_password: $sunbird_root_user_password/g" $config_file +sed -i "s/sunbird_root_user_email:/sunbird_root_user_email: $sunbird_root_user_email/g" $config_file +sed -i "s/sunbird_root_user_phone:/sunbird_root_user_phone: $sunbird_root_user_phone/g" $config_file +sed -i "s/sunbird_default_channel:/sunbird_default_channel: $sunbird_default_channel/g" $config_file From 6b4c2675c431f0b07f82e3e55867da4315fc5987 Mon Sep 17 00:00:00 2001 From: S M Y Date: Fri, 5 Oct 2018 12:10:09 +0530 Subject: [PATCH 0243/1345] Issue #000 init: initializing the db replication --- .../files/content_service.cql | 9 -------- .../roles/cassandra-cql-update/tasks/main.yml | 10 ++++++++- .../{files => templates}/cassandra.cql | 15 +++++++++---- .../templates/content_service.cql | 21 +++++++++++++++++++ 4 files changed, 41 insertions(+), 14 deletions(-) delete mode 100644 ansible/roles/cassandra-cql-update/files/content_service.cql rename ansible/roles/cassandra-cql-update/{files => templates}/cassandra.cql (98%) create mode 100644 ansible/roles/cassandra-cql-update/templates/content_service.cql diff --git a/ansible/roles/cassandra-cql-update/files/content_service.cql b/ansible/roles/cassandra-cql-update/files/content_service.cql deleted file mode 100644 index bf7bf42317..0000000000 --- a/ansible/roles/cassandra-cql-update/files/content_service.cql +++ /dev/null @@ -1,9 +0,0 @@ -CREATE KEYSPACE portal -WITH replication = {'class':'SimpleStrategy', 'replication_factor' : 1}; -USE portal; -CREATE TABLE IF NOT EXISTS sessions ( - sid text, - session text, - expires timestamp, - PRIMARY KEY(sid) -); \ No newline at end of file diff --git a/ansible/roles/cassandra-cql-update/tasks/main.yml b/ansible/roles/cassandra-cql-update/tasks/main.yml index 49f1662be5..6b6f199427 100644 --- a/ansible/roles/cassandra-cql-update/tasks/main.yml +++ b/ansible/roles/cassandra-cql-update/tasks/main.yml @@ -2,9 +2,17 @@ become: yes copy: src=files/{{item}} dest=/tmp/{{item}} with_items: - - cassandra.cql - pageMgmt.csv - pageSection.csv + tags: + - always + run_once: true + +- name: Copy the templates + become: yes + template: src={{item}} dest=/tmp/{{item}} + with_items: + - cassandra.cql - content_service.cql tags: - always diff --git a/ansible/roles/cassandra-cql-update/files/cassandra.cql b/ansible/roles/cassandra-cql-update/templates/cassandra.cql similarity index 98% rename from ansible/roles/cassandra-cql-update/files/cassandra.cql rename to ansible/roles/cassandra-cql-update/templates/cassandra.cql index 647ce251c0..d4ff7026cc 100644 --- a/ansible/roles/cassandra-cql-update/files/cassandra.cql +++ b/ansible/roles/cassandra-cql-update/templates/cassandra.cql @@ -1,5 +1,8 @@ - -CREATE KEYSPACE IF NOT EXISTS sunbird WITH replication = {'class':'SimpleStrategy','replication_factor':1}; +{% if groups['cassandra-2'] is defined %} +CREATE KEYSPACE IF NOT EXISTS sunbird WITH REPLICATION = { 'class' : 'NetworkTopologyStrategy', 'datacenter1' : 2 }; +{% else %} +CREATE KEYSPACE IF NOT EXISTS sunbird WITH REPLICATION = {'class':'SimpleStrategy','replication_factor':1}; +{% endif %} //to change cluster name //UPDATE system.local SET cluster_name = 'sunbird' where key='local'; @@ -499,7 +502,11 @@ CREATE TABLE IF NOT EXISTS sunbird.skills(id text,skills list, PRIMARY KEY ALTER TABLE sunbird.organisation ADD orgTypeId text; //Announcement apis -27th Oct -CREATE KEYSPACE IF NOT EXISTS sunbirdplugin WITH replication = {'class':'SimpleStrategy','replication_factor':1}; +{% if groups['cassandra-2'] is defined %} +CREATE KEYSPACE IF NOT EXISTS sunbirdplugin WITH REPLICATION = { 'class' : 'NetworkTopologyStrategy', 'datacenter1' : 2 }; +{% else %} +CREATE KEYSPACE IF NOT EXISTS sunbirdplugin WITH REPLICATION = {'class':'SimpleStrategy','replication_factor':1}; +{% endif %} //CREATE TYPE IF NOT EXISTS sunbirdplugin.attachment (id text,filename text,mimetype text); CREATE TABLE sunbirdplugin.announcement (id text,userid text,sourceid text,details map,links list,attachments list,target text,sentcount int,priority text,expiry text,status text,createddate text,updateddate text, PRIMARY KEY (id)); CREATE TABLE sunbirdplugin.attachment (id text,file text,filename text,mimetype text,createdby text,status text,createddate text, PRIMARY KEY (id)); @@ -560,4 +567,4 @@ insert into sunbird.system_settings (id,field,value) values ('emailUnique','emai ALTER TABLE sunbird.geo_location ADD userCountTTL text; // adding new column in client-info to save the channel ALTER TABLE sunbird.client_info ADD channel text; -CREATE INDEX inx_ci_clientchannel ON sunbird.client_info(channel); \ No newline at end of file +CREATE INDEX inx_ci_clientchannel ON sunbird.client_info(channel); diff --git a/ansible/roles/cassandra-cql-update/templates/content_service.cql b/ansible/roles/cassandra-cql-update/templates/content_service.cql new file mode 100644 index 0000000000..0113a69ee2 --- /dev/null +++ b/ansible/roles/cassandra-cql-update/templates/content_service.cql @@ -0,0 +1,21 @@ +{% if groups['cassandra-2'] is defined %} +CREATE KEYSPACE portal +WITH REPLICATION = { 'class' : 'NetworkTopologyStrategy', 'datacenter1' : 2 }; +USE portal; +CREATE TABLE IF NOT EXISTS sessions ( + sid text, + session text, + expires timestamp, + PRIMARY KEY(sid) +); +{% else %} +CREATE KEYSPACE portal +WITH replication = {'class':'SimpleStrategy', 'replication_factor' : 1}; +USE portal; +CREATE TABLE IF NOT EXISTS sessions ( + sid text, + session text, + expires timestamp, + PRIMARY KEY(sid) +); +{% endif %} From b45992a19b9eef8639305325c381c70c7fde2a0e Mon Sep 17 00:00:00 2001 From: S M Y Date: Fri, 5 Oct 2018 12:19:11 +0530 Subject: [PATCH 0244/1345] Issue #000 perm: changing permission of health dependencies script --- ansible/static-files/healthDependenices.sh | 0 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 ansible/static-files/healthDependenices.sh diff --git a/ansible/static-files/healthDependenices.sh b/ansible/static-files/healthDependenices.sh old mode 100644 new mode 100755 From 9553e459c86b2eec982dffbeea5c16c1b00d5990 Mon Sep 17 00:00:00 2001 From: Amol Ghatol Date: Fri, 5 Oct 2018 15:51:56 +0530 Subject: [PATCH 0245/1345] Issue #SB-7845 chore:Ability to register mobile device credentials (#254) * Issue #SB7310 chore:Onboard Consumer API and Consumer * #SB-6598 chore: Revised sunbird adopter access * Issue #SB-7845 chore:Ability to register mobile device credentials for OpenSaber APP --- ansible/roles/kong-api/defaults/main.yml | 35 +++++++++++++++++++ ansible/roles/kong-consumer/defaults/main.yml | 10 ++++++ 2 files changed, 45 insertions(+) diff --git a/ansible/roles/kong-api/defaults/main.yml b/ansible/roles/kong-api/defaults/main.yml index cecde07273..7a2daf2cc9 100644 --- a/ansible/roles/kong-api/defaults/main.yml +++ b/ansible/roles/kong-api/defaults/main.yml @@ -951,6 +951,41 @@ kong_apis: config.limit_by: credential - name: request-size-limiting config.allowed_payload_size: "{{ small_request_size_limit }}" + + - name: registerMobileAppOpenRAP + request_path: "{{ api_manager_perfix }}/v1/consumer/mobile_app_openrap/credential/register" + upstream_url: "{{ am_util_url }}/v1/consumer/mobile_app_openrap/credential/register" + strip_request_path: true + plugins: + - name: jwt + - name: cors + - "{{ statsd_pulgin }}" + - name: acl + config.whitelist: mobileAdminOpenRAP + - name: rate-limiting + config.policy: local + config.hour: "{{ medium_rate_limit_per_hour }}" + config.limit_by: credential + - name: request-size-limiting + config.allowed_payload_size: "{{ small_request_size_limit }}" + + - name: registerMobileDeviceOpenRAP + request_path: "{{ api_manager_perfix }}/v1/consumer/mobile_device_openrap/credential/register" + upstream_url: "{{ am_util_url }}/v1/consumer/mobile_device_openrap/credential/register" + strip_request_path: true + plugins: + - name: jwt + - name: cors + - "{{ statsd_pulgin }}" + - name: acl + config.whitelist: mobileAppOpenRAP + - name: rate-limiting + config.policy: local + config.hour: "{{ medium_rate_limit_per_hour }}" + config.limit_by: credential + - name: request-size-limiting + config.allowed_payload_size: "{{ small_request_size_limit }}" + - name: compositeSearch request_path: "{{ composite_service_prefix }}/v1/search" upstream_url: "{{ content_service_url }}/v1/search" diff --git a/ansible/roles/kong-consumer/defaults/main.yml b/ansible/roles/kong-consumer/defaults/main.yml index 2c657cde0c..955e7f05c7 100644 --- a/ansible/roles/kong-consumer/defaults/main.yml +++ b/ansible/roles/kong-consumer/defaults/main.yml @@ -126,3 +126,13 @@ kong_consumers: - username: kongAdmin groups: "{{ kong_admin_groups }}" state: present + - username: mobile_admin_openrap + groups: ["mobileAdminOpenRAP"] + save_credentials: true + state: present + - username: mobile_app_openrap + groups: ["mobileAppOpenRAP"] + state: present + - username: mobile_device_openrap + groups: "{{ mobile_device_groups }}" + state: present From 5ff41b64def98733a4a24fd33761a4906ca4cefe Mon Sep 17 00:00:00 2001 From: S M Y Date: Fri, 5 Oct 2018 17:08:04 +0530 Subject: [PATCH 0246/1345] Issue #000 cqlsh: cql datacenter configuration --- .../roles/cassandra/templates/cassandra-rackdc.properties.j2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/cassandra/templates/cassandra-rackdc.properties.j2 b/ansible/roles/cassandra/templates/cassandra-rackdc.properties.j2 index 94c66da80e..b0c72aed4f 100644 --- a/ansible/roles/cassandra/templates/cassandra-rackdc.properties.j2 +++ b/ansible/roles/cassandra/templates/cassandra-rackdc.properties.j2 @@ -16,7 +16,7 @@ # These properties are used with GossipingPropertyFileSnitch and will # indicate the rack and dc for this node -{% if groups['cassandra'][1] %} +{% if groups['cassandra-2'] is defined %} dc=datacenter1 rack=rack1 {% else %} From 578bdd2a79fe1261d204e2e653f09aa8c8c619af Mon Sep 17 00:00:00 2001 From: Manzarul Date: Fri, 5 Oct 2018 17:57:25 +0530 Subject: [PATCH 0247/1345] Issues #SB-00 fix: chnages for unenroll --- ansible/roles/kong-api/defaults/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/kong-api/defaults/main.yml b/ansible/roles/kong-api/defaults/main.yml index cecde07273..3b588dab06 100644 --- a/ansible/roles/kong-api/defaults/main.yml +++ b/ansible/roles/kong-api/defaults/main.yml @@ -351,7 +351,7 @@ kong_apis: config.allowed_payload_size: "{{ small_request_size_limit }}" - name: courseUnEnrolment request_path: "{{ course_service_prefix }}/v1/unenrol" - upstream_url: "{{ learning_service_url }}/v1/course/unenrol" + upstream_url: "{{ learning_service_url }}/v1/course/unenroll" strip_request_path: true plugins: - name: jwt From c73e7bc6a2073ed1cb2a5bea6d636b66e3add39a Mon Sep 17 00:00:00 2001 From: santhosh-optit <31979949+santhosh-optit@users.noreply.github.com> Date: Fri, 5 Oct 2018 18:22:13 +0530 Subject: [PATCH 0248/1345] Issue #000 updated mailing list for ci-build --- .travis.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.travis.yml b/.travis.yml index 32052212db..19b1c95e7d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -38,5 +38,6 @@ notifications: - rajesh.r@optit.co - santhosh.g@optit.in - altamash.s@optit.co + - shailesh@ekstepplus.org on_success: always on_failure: always From 6594c67e79a1aacf7e05bb41f234cf53e0eaa487 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Mon, 8 Oct 2018 11:51:54 +0530 Subject: [PATCH 0249/1345] Do not remove VM is build fails, build only tags (#255) * feat: SB-7716 - Travis CI Nightly builds for Sunbird installation * fix: Removing extra travis file * fix: SB-7885 - Do not delete VM if build fails and build only tags * fix: SB-7885 - Remove master branch checkout code as we will not build master's tip anymore --- .travis.yml | 3 --- travis-ci-scripts/build.sh | 5 +++-- travis-ci-scripts/install_sb.sh | 2 -- travis-ci-scripts/launch_vm.sh | 8 ++++---- travis-ci-scripts/remove_vm.sh | 4 ++-- 5 files changed, 9 insertions(+), 13 deletions(-) diff --git a/.travis.yml b/.travis.yml index 19b1c95e7d..b617cef03f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -14,9 +14,6 @@ before_script: matrix: allow_failures: include: - - name: "master branch" - env: release="master" - script: ./travis-ci-scripts/build.sh - name: "release-1.9 tag" env: release="tags/release-1.9" script: ./travis-ci-scripts/build.sh diff --git a/travis-ci-scripts/build.sh b/travis-ci-scripts/build.sh index 82343d85a1..a07a6e8ec7 100755 --- a/travis-ci-scripts/build.sh +++ b/travis-ci-scripts/build.sh @@ -6,9 +6,10 @@ echo "Building $release" if [[ $? -ne 0 ]]; then fail=1 fi -./travis-ci-scripts/remove_vm.sh if [[ $fail -eq 1 ]]; then - echo "Sunbird installation for $release failed" + echo "Sunbird installation for $release failed. Server instance not removed. Please inspect the server" exit 1 +else + ./travis-ci-scripts/remove_vm.sh fi diff --git a/travis-ci-scripts/install_sb.sh b/travis-ci-scripts/install_sb.sh index 23a417effa..e57a627eee 100755 --- a/travis-ci-scripts/install_sb.sh +++ b/travis-ci-scripts/install_sb.sh @@ -16,8 +16,6 @@ IFS="/" read -r var1 var2 <<< $release if [[ $var1 == "tags" ]]; then git checkout $release -b $var2 echo "Building on $var2" -elif [[ $var1 == "master" ]]; then - echo "Buidling on master" else git checkout -b $var1 origin/$var1 echo "Building on $var1" diff --git a/travis-ci-scripts/launch_vm.sh b/travis-ci-scripts/launch_vm.sh index b95f3e9932..14f55a1602 100755 --- a/travis-ci-scripts/launch_vm.sh +++ b/travis-ci-scripts/launch_vm.sh @@ -2,17 +2,17 @@ config_file=$TRAVIS_BUILD_DIR/deploy/config #aws ec2 run-instances --launch-template LaunchTemplateName=travis-ci-app #aws ec2 run-instances --launch-template LaunchTemplateName=travis-ci-db -aws ec2 run-instances --image-id ami-0c510557369b14896 --instance-type t2.large --key-name adoption-keshav --subnet-id subnet-0241076a --tag-specifications "ResourceType=instance,Tags=[{Key=Name,Value=travis-app-$TRAVIS_BUILD_NUMBER}]" -aws ec2 run-instances --image-id ami-0c510557369b14896 --instance-type t2.large --key-name adoption-keshav --subnet-id subnet-0241076a --tag-specifications "ResourceType=instance,Tags=[{Key=Name,Value=travis-db-$TRAVIS_BUILD_NUMBER}]" +aws ec2 run-instances --image-id ami-0c510557369b14896 --instance-type t2.large --key-name adoption-keshav --subnet-id subnet-0241076a --tag-specifications "ResourceType=instance,Tags=[{Key=Name,Value=travis-app-$TRAVIS_BUILD_NUMBER-$release}]" +aws ec2 run-instances --image-id ami-0c510557369b14896 --instance-type t2.large --key-name adoption-keshav --subnet-id subnet-0241076a --tag-specifications "ResourceType=instance,Tags=[{Key=Name,Value=travis-db-$TRAVIS_BUILD_NUMBER-$release}]" echo "Wait for app and db instances to launch" sleep 150 -aws_app_instance=$(aws ec2 describe-instances --filters "Name=instance-state-name,Values=running" "Name=tag:Name,Values=travis-app-$TRAVIS_BUILD_NUMBER" --query "Reservations[*].Instances[*].{PrivateIP: PrivateIpAddress, PublicIP: PublicIpAddress, InstanceId: InstanceId}") +aws_app_instance=$(aws ec2 describe-instances --filters "Name=instance-state-name,Values=running" "Name=tag:Name,Values=travis-app-$TRAVIS_BUILD_NUMBER-$release" --query "Reservations[*].Instances[*].{PrivateIP: PrivateIpAddress, PublicIP: PublicIpAddress, InstanceId: InstanceId}") app_instance_id=$(echo $aws_app_instance | awk '{print $1}') app_private_ip=$(echo $aws_app_instance | awk '{print $2}') app_public_ip=$(echo $aws_app_instance | awk '{print $3}') -aws_db_instance=$(aws ec2 describe-instances --filters "Name=instance-state-name,Values=running" "Name=tag:Name,Values=travis-db-$TRAVIS_BUILD_NUMBER" --query "Reservations[*].Instances[*].{PrivateIP: PrivateIpAddress, PublicIP: PublicIpAddress, InstanceId: InstanceId}") +aws_db_instance=$(aws ec2 describe-instances --filters "Name=instance-state-name,Values=running" "Name=tag:Name,Values=travis-db-$TRAVIS_BUILD_NUMBER-$release" --query "Reservations[*].Instances[*].{PrivateIP: PrivateIpAddress, PublicIP: PublicIpAddress, InstanceId: InstanceId}") db_instance_id=$(echo $aws_db_instance | awk '{print $1}') db_private_ip=$(echo $aws_db_instance | awk '{print $2}') db_public_ip=$(echo $aws_db_instance | awk '{print $3}') diff --git a/travis-ci-scripts/remove_vm.sh b/travis-ci-scripts/remove_vm.sh index 4bafd58622..817840b102 100755 --- a/travis-ci-scripts/remove_vm.sh +++ b/travis-ci-scripts/remove_vm.sh @@ -1,8 +1,8 @@ #!/bin/bash -aws_app_instance=$(aws ec2 describe-instances --filters "Name=instance-state-name,Values=running" "Name=tag:Name,Values=travis-app-$TRAVIS_BUILD_NUMBER" --query "Reservations[*].Instances[*].{PrivateIP: PrivateIpAddress, PublicIP: PublicIpAddress, InstanceId: InstanceId}") +aws_app_instance=$(aws ec2 describe-instances --filters "Name=instance-state-name,Values=running" "Name=tag:Name,Values=travis-app-$TRAVIS_BUILD_NUMBER-$release" --query "Reservations[*].Instances[*].{PrivateIP: PrivateIpAddress, PublicIP: PublicIpAddress, InstanceId: InstanceId}") app_instance_id=$(echo $aws_app_instance | awk '{print $1}') -aws_db_instance=$(aws ec2 describe-instances --filters "Name=instance-state-name,Values=running" "Name=tag:Name,Values=travis-db-$TRAVIS_BUILD_NUMBER" --query "Reservations[*].Instances[*].{PrivateIP: PrivateIpAddress, PublicIP: PublicIpAddress, InstanceId: InstanceId}") +aws_db_instance=$(aws ec2 describe-instances --filters "Name=instance-state-name,Values=running" "Name=tag:Name,Values=travis-db-$TRAVIS_BUILD_NUMBER-$release" --query "Reservations[*].Instances[*].{PrivateIP: PrivateIpAddress, PublicIP: PublicIpAddress, InstanceId: InstanceId}") db_instance_id=$(echo $aws_db_instance | awk '{print $1}') echo "Removing app instance with id: $app_instance_id" From 1af1dd9548734f695a77f03745fc23c0807f622f Mon Sep 17 00:00:00 2001 From: Manzarul Date: Mon, 8 Oct 2018 12:21:25 +0530 Subject: [PATCH 0250/1345] Issues #SB-00 fix:changes unenroll to unenrol in downstream --- ansible/roles/kong-api/defaults/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/kong-api/defaults/main.yml b/ansible/roles/kong-api/defaults/main.yml index d55351ca3f..7a2daf2cc9 100644 --- a/ansible/roles/kong-api/defaults/main.yml +++ b/ansible/roles/kong-api/defaults/main.yml @@ -351,7 +351,7 @@ kong_apis: config.allowed_payload_size: "{{ small_request_size_limit }}" - name: courseUnEnrolment request_path: "{{ course_service_prefix }}/v1/unenrol" - upstream_url: "{{ learning_service_url }}/v1/course/unenroll" + upstream_url: "{{ learning_service_url }}/v1/course/unenrol" strip_request_path: true plugins: - name: jwt From f74e22ba01ffb73226c433bc4eea950ef4f711c2 Mon Sep 17 00:00:00 2001 From: Manzarul Date: Mon, 8 Oct 2018 14:06:22 +0530 Subject: [PATCH 0251/1345] Issues #SB-00 fix:changes unenrol to unenroll in downstream --- ansible/roles/kong-api/defaults/main.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ansible/roles/kong-api/defaults/main.yml b/ansible/roles/kong-api/defaults/main.yml index 7a2daf2cc9..3f9d37550f 100644 --- a/ansible/roles/kong-api/defaults/main.yml +++ b/ansible/roles/kong-api/defaults/main.yml @@ -335,7 +335,7 @@ kong_apis: config.allowed_payload_size: "{{ small_request_size_limit }}" - name: courseEnrolment request_path: "{{ course_service_prefix }}/v1/enrol" - upstream_url: "{{ learning_service_url }}/v1/course/enrol" + upstream_url: "{{ learning_service_url }}/v1/course/enroll" strip_request_path: true plugins: - name: jwt @@ -351,7 +351,7 @@ kong_apis: config.allowed_payload_size: "{{ small_request_size_limit }}" - name: courseUnEnrolment request_path: "{{ course_service_prefix }}/v1/unenrol" - upstream_url: "{{ learning_service_url }}/v1/course/unenrol" + upstream_url: "{{ learning_service_url }}/v1/course/unenroll" strip_request_path: true plugins: - name: jwt From bc123df9a86069229421233593041726e0a24425 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Wed, 10 Oct 2018 10:36:56 +0530 Subject: [PATCH 0252/1345] Updated tags and root org fix (#257) * feat: SB-7716 - Travis CI Nightly builds for Sunbird installation * fix: Removing extra travis file * fix: SB-7885 - Do not delete VM if build fails and build only tags * fix: SB-7885 - Remove master branch checkout code as we will not build master's tip anymore * fix: Updating tags, root org json response retrieval fix --- .travis.yml | 4 ++-- travis-ci-scripts/install_sb.sh | 9 +++++++-- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/.travis.yml b/.travis.yml index b617cef03f..362660df9f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -17,8 +17,8 @@ matrix: - name: "release-1.9 tag" env: release="tags/release-1.9" script: ./travis-ci-scripts/build.sh - - name: "release-1.10 tag" - env: release="tags/release-1.10" + - name: "release-1.10.1 tag" + env: release="tags/release-1.10.1" script: ./travis-ci-scripts/build.sh - name: "release-1.11 branch" env: release="release-1.11" diff --git a/travis-ci-scripts/install_sb.sh b/travis-ci-scripts/install_sb.sh index e57a627eee..4913277387 100755 --- a/travis-ci-scripts/install_sb.sh +++ b/travis-ci-scripts/install_sb.sh @@ -48,13 +48,18 @@ if [[ $? -eq 0 ]]; then if [[ $? -eq 0 ]]; then jwt_token=$(cat /home/$username/jwt_token_player.txt | tr -d " ") access_token_user=$(curl -s -X POST http://$dns_name/auth/realms/sunbird/protocol/openid-connect/token -H "cache-control: no-cache" -H "content-type: application/x-www-form-urlencoded" -d "client_id=admin-cli&username=user-manager&password=$sso_pass&grant_type=password" | jq -r ".access_token") - status=$(curl -s -X POST http://$dns_name/api/org/v1/create -H "Cache-Control: no-cache" -H "Content-Type: application/json" -H "accept: application/json" -H "authorization: Bearer $jwt_token" -H "x-authenticated-user-token: $access_token_user" -d '{"request":{"orgName": "travis-ci", "description": "travis-ci", "isRootOrg": true, "channel": "travis-ci"}}' | jq -r ".responseCode") + status=$(curl -s -X POST http://$dns_name/api/org/v1/create -H "Cache-Control: no-cache" -H "Content-Type: application/json" -H "accept: application/json" -H "authorization: Bearer $jwt_token" -H "x-authenticated-user-token: $access_token_user" -d '{"request":{"orgName": "travis-ci", "description": "travis-ci", "isRootOrg": true, "channel": "travis-ci"}}' | jq -r ".result.response") if [[ $status == "SUCCESS" ]]; then echo "" echo "********************************************************" - echo "Sunbird installatation successful" + echo "Root org created successfully. Rerunning core install and post test" echo "********************************************************" echo "" + ./sunbird_install.sh -s core + ./sunbird_install.sh -s posttest + echo "********************************************************" + echo "Sunbird installatation complete" + echo "********************************************************" else echo "" echo "********************************************************" From 39b99eed978b9da7bbff5c4cce8a11c0fe2621eb Mon Sep 17 00:00:00 2001 From: Anoop HM Date: Wed, 10 Oct 2018 14:18:48 +0530 Subject: [PATCH 0253/1345] Issue #SB-5038 feat: redirecting form api to portal form plugin (#250) --- ansible/roles/kong-api/defaults/main.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ansible/roles/kong-api/defaults/main.yml b/ansible/roles/kong-api/defaults/main.yml index 3f9d37550f..6fbef5ba01 100644 --- a/ansible/roles/kong-api/defaults/main.yml +++ b/ansible/roles/kong-api/defaults/main.yml @@ -2983,7 +2983,7 @@ kong_apis: config.allowed_payload_size: "{{ medium_request_size_limit }}" - name: createForm request_path: "{{ data_service_prefix }}/v1/form/create" - upstream_url: "{{ content_service_url }}/v1/data/form/create" + upstream_url: "{{ player_service_url }}/plugin/v1/form/create" strip_request_path: true plugins: - name: jwt @@ -2999,7 +2999,7 @@ kong_apis: config.allowed_payload_size: "{{ medium_request_size_limit }}" - name: updateForm request_path: "{{ data_service_prefix }}/v1/form/update" - upstream_url: "{{ content_service_url }}/v1/data/form/update" + upstream_url: "{{ player_service_url }}/plugin/v1/form/update" strip_request_path: true plugins: - name: jwt @@ -3063,7 +3063,7 @@ kong_apis: config.allowed_payload_size: "{{ small_request_size_limit }}" - name: readForm request_path: "{{ data_service_prefix }}/v1/form/read" - upstream_url: "{{ content_service_url }}/v1/data/form/read" + upstream_url: "{{ player_service_url }}/plugin/v1/form/read" strip_request_path: true plugins: - name: cors From 49cc1ddeb91a3e0eee73464a43cf3d637edebe2e Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Thu, 11 Oct 2018 09:24:40 +0530 Subject: [PATCH 0254/1345] Circle CI Scripts (#258) * feat: SB-7716 - Travis CI Nightly builds for Sunbird installation * fix: Removing extra travis file * fix: SB-7885 - Do not delete VM if build fails and build only tags * fix: SB-7885 - Remove master branch checkout code as we will not build master's tip anymore * fix: Updating tags, root org json response retrieval fix * feat: Adding circle ci scripts * fix: remove extra file * fix: remove extra file * style: Remove echos, cleaner output messages, yaml anchors * chore: removing all travis releated scripts --- .circleci/config.yml | 88 +++++++++++++++++++ .travis.yml | 40 --------- .../cli_configure.sh | 2 +- .../copy_script.sh | 7 +- .../install_sb.sh | 50 +++-------- circle-ci/launch_vm.sh | 26 ++++++ .../release_to_build | 0 circle-ci/remove_vm.sh | 13 +++ .../update_config.sh | 3 +- test.sh | 2 +- travis-ci-scripts/anisbile_lint.sh | 8 -- travis-ci-scripts/build.sh | 15 ---- travis-ci-scripts/launch_vm.sh | 30 ------- travis-ci-scripts/remove_vm.sh | 15 ---- 14 files changed, 149 insertions(+), 150 deletions(-) create mode 100644 .circleci/config.yml delete mode 100644 .travis.yml rename travis-ci-scripts/cli_install.sh => circle-ci/cli_configure.sh (81%) rename {travis-ci-scripts => circle-ci}/copy_script.sh (69%) rename {travis-ci-scripts => circle-ci}/install_sb.sh (56%) create mode 100755 circle-ci/launch_vm.sh rename {travis-ci-scripts => circle-ci}/release_to_build (100%) create mode 100755 circle-ci/remove_vm.sh rename {travis-ci-scripts => circle-ci}/update_config.sh (97%) delete mode 100755 travis-ci-scripts/anisbile_lint.sh delete mode 100755 travis-ci-scripts/build.sh delete mode 100755 travis-ci-scripts/launch_vm.sh delete mode 100755 travis-ci-scripts/remove_vm.sh diff --git a/.circleci/config.yml b/.circleci/config.yml new file mode 100644 index 0000000000..26eb0ca65d --- /dev/null +++ b/.circleci/config.yml @@ -0,0 +1,88 @@ +--- +version: 2 +jobs: + previous-stable: + docker: &dock-img + - image: keshavprasad/circle-ci:1.1 + steps: + - checkout + - run: + name: check previous stable release + command: | + ver=tags/$(git tag | grep "release" | sort -V -r | sed -n 2p) + echo Running installer for $ver + echo export release=$ver >> $BASH_ENV + source $BASH_ENV + - run: &cli + name: configure cli + command: bash ./circle-ci/cli_configure.sh + - run: &config + name: update config + command: bash ./circle-ci/update_config.sh + - run: &launch-vm + name: launch vms + command: bash ./circle-ci/launch_vm.sh + - run: &install-sb + name: install sunbird + command: bash ./circle-ci/copy_script.sh + - run: &remove-vm + name: remove vms + command: bash ./circle-ci/remove_vm.sh + + current-stable: + docker: *dock-img + steps: + - checkout + - run: + name: check current stable release + command: | + ver=tags/$(git tag | grep "release" | sort -V -r | sed -n 1p) + echo Running installer for $ver + echo export release=$ver >> $BASH_ENV + source $BASH_ENV + - run: *cli + - run: *config + - run: *launch-vm + - run: *install-sb + - run: *remove-vm + + current-dev-branch: + docker: *dock-img + steps: + - checkout + - run: + name: check current development branch + command: | + ver=$(git branch -a | grep release-[0-9].[0-9].* | sed -e 's#.*/.*/##g' | sort -V -r -u | sed -n 1p) + echo Running installer for $ver + echo export release=$ver >> $BASH_ENV + source $BASH_ENV + - run: *cli + - run: *config + - run: *launch-vm + - run: *install-sb + - run: *remove-vm + + playbook-check: + docker: *dock-img + steps: + - checkout + - run: + name: check ansible playbooks syntax + command: bash ./test.sh + +workflows: + version: 2 + nightly: + triggers: + - schedule: + cron: "0 19 * * *" + filters: + branches: + only: + - master + jobs: + - previous-stable + - current-stable + - current-dev-branch + - playbook-check diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 362660df9f..0000000000 --- a/.travis.yml +++ /dev/null @@ -1,40 +0,0 @@ -dist: trusty -addons: - apt: - packages: - - python3-pip - -language: generic -python: -- "3.6" - -before_script: -- ./travis-ci-scripts/cli_install.sh - -matrix: - allow_failures: - include: - - name: "release-1.9 tag" - env: release="tags/release-1.9" - script: ./travis-ci-scripts/build.sh - - name: "release-1.10.1 tag" - env: release="tags/release-1.10.1" - script: ./travis-ci-scripts/build.sh - - name: "release-1.11 branch" - env: release="release-1.11" - script: ./travis-ci-scripts/build.sh - -after_script: -- ./travis-ci-scripts/anisbile_lint.sh - -notifications: - email: - recipients: - - msknext@gmail.com - - rajeev.sathish@tarento.com - - rajesh.r@optit.co - - santhosh.g@optit.in - - altamash.s@optit.co - - shailesh@ekstepplus.org - on_success: always - on_failure: always diff --git a/travis-ci-scripts/cli_install.sh b/circle-ci/cli_configure.sh similarity index 81% rename from travis-ci-scripts/cli_install.sh rename to circle-ci/cli_configure.sh index c5b47d9497..195f799ac7 100755 --- a/travis-ci-scripts/cli_install.sh +++ b/circle-ci/cli_configure.sh @@ -1,7 +1,7 @@ #!/bin/bash -pip3 -q install awscli --upgrade --user aws --version aws configure set aws_access_key_id $keyid aws configure set aws_secret_access_key $key aws configure set region ap-south-1 aws configure set output text +echo -e "aws cli configured.." diff --git a/travis-ci-scripts/copy_script.sh b/circle-ci/copy_script.sh similarity index 69% rename from travis-ci-scripts/copy_script.sh rename to circle-ci/copy_script.sh index 1d25724ccd..23a71f6d30 100755 --- a/travis-ci-scripts/copy_script.sh +++ b/circle-ci/copy_script.sh @@ -1,7 +1,7 @@ #!/bin/bash -config_file=$TRAVIS_BUILD_DIR/deploy/config -install_script=$TRAVIS_BUILD_DIR/travis-ci-scripts/install_sb.sh -release_to_build=$TRAVIS_BUILD_DIR/travis-ci-scripts/release_to_build +config_file=./deploy/config +install_script=./circle-ci/install_sb.sh +release_to_build=./circle-ci/release_to_build app_ip=$(awk '/dns_name:/{ if ($2 !~ /#.*/) {print $2}}' $config_file) user_name=$(awk '/ssh_ansible_user:/{if ($2 !~ /#.*/) {print $2}}' $config_file) printf "%s$private_key" > sunbird.pem @@ -10,5 +10,6 @@ echo $release > $release_to_build scp -i sunbird.pem -o StrictHostKeyChecking=no $config_file sunbird.pem $install_script $release_to_build $user_name@$app_ip:/tmp ssh -i sunbird.pem -o StrictHostKeyChecking=no $user_name@$app_ip "/tmp/install_sb.sh" if [[ $? -ne 0 ]]; then + echo -e "\nSunbird installation for $release failed - Please inspect the server - Instance not removed!" exit 1 fi diff --git a/travis-ci-scripts/install_sb.sh b/circle-ci/install_sb.sh similarity index 56% rename from travis-ci-scripts/install_sb.sh rename to circle-ci/install_sb.sh index 4913277387..ebf3331a66 100755 --- a/travis-ci-scripts/install_sb.sh +++ b/circle-ci/install_sb.sh @@ -7,7 +7,6 @@ sso_pass=$(awk '/sso_password:/{ if ($2 !~ /#.*/) {print $2}}' /tmp/config) cd /home/$username mkdir .ssh 2> /dev/null cp /tmp/sunbird.pem .ssh -sudo apt-get update -y && sudo apt-get install git -y git clone https://github.com/project-sunbird/sunbird-devops.git cd sunbird-devops @@ -15,31 +14,24 @@ IFS="/" read -r var1 var2 <<< $release if [[ $var1 == "tags" ]]; then git checkout $release -b $var2 - echo "Building on $var2" + echo -e "Installing sunbird $var2" else git checkout -b $var1 origin/$var1 - echo "Building on $var1" + echo -e "Installation sunbird $var1" fi cp /tmp/config ./deploy cd deploy -echo "" -echo "********************************************************" -echo "Beginning Sunbird installation" -echo "********************************************************" -echo "" +echo -e "Starting installation..." ./sunbird_install.sh +if [[ $? -ne 0 ]]; then + echo -e "Installation failed - Retrying..." + ./sunbird_install.sh +fi + if [[ $? -eq 0 ]]; then - echo "" - echo "********************************************************" - echo "Sunbird installation complete" - echo "********************************************************" - echo "" - echo "********************************************************" - echo "Beginning sunbird core installation" - echo "********************************************************" - echo "" + echo -e "Sunbird installation complete - Starting core installation..." access_token=$(curl -s -X POST http://$dns_name/auth/realms/master/protocol/openid-connect/token -H "cache-control: no-cache" -H "content-type: application/x-www-form-urlencoded" -d "client_id=admin-cli&username=admin&password=$keycloak_pass&grant_type=password" | jq -r ".access_token") public_key=$(curl -s -X GET http://$dns_name/auth/admin/realms/sunbird/keys -H "Authorization: Bearer $access_token" -H "Cache-Control: no-cache" -H "Content-Type: application/json" | jq -r ".keys[0].publicKey") sed -i "s|sunbird_sso_publickey:|sunbird_sso_publickey: $public_key|g" config @@ -48,32 +40,18 @@ if [[ $? -eq 0 ]]; then if [[ $? -eq 0 ]]; then jwt_token=$(cat /home/$username/jwt_token_player.txt | tr -d " ") access_token_user=$(curl -s -X POST http://$dns_name/auth/realms/sunbird/protocol/openid-connect/token -H "cache-control: no-cache" -H "content-type: application/x-www-form-urlencoded" -d "client_id=admin-cli&username=user-manager&password=$sso_pass&grant_type=password" | jq -r ".access_token") - status=$(curl -s -X POST http://$dns_name/api/org/v1/create -H "Cache-Control: no-cache" -H "Content-Type: application/json" -H "accept: application/json" -H "authorization: Bearer $jwt_token" -H "x-authenticated-user-token: $access_token_user" -d '{"request":{"orgName": "travis-ci", "description": "travis-ci", "isRootOrg": true, "channel": "travis-ci"}}' | jq -r ".result.response") + status=$(curl -s -X POST http://$dns_name/api/org/v1/create -H "Cache-Control: no-cache" -H "Content-Type: application/json" -H "accept: application/json" -H "authorization: Bearer $jwt_token" -H "x-authenticated-user-token: $access_token_user" -d '{"request":{"orgName": "circle-ci", "description": "circle-ci", "isRootOrg": true, "channel": "circle-ci"}}' | jq -r ".result.response") if [[ $status == "SUCCESS" ]]; then - echo "" - echo "********************************************************" - echo "Root org created successfully. Rerunning core install and post test" - echo "********************************************************" - echo "" + echo -e "Root org created successfully - Running core and posttest..." ./sunbird_install.sh -s core ./sunbird_install.sh -s posttest - echo "********************************************************" - echo "Sunbird installatation complete" - echo "********************************************************" + echo -e "Sunbird installation complete" else - echo "" - echo "********************************************************" - echo "Sunbird installatation failed. Unable to create root org" - echo "********************************************************" - echo "" + echo -e "Sunbird installation failed - Unable to create root org" exit 1 fi fi else - echo "" - echo "********************************************************" - echo "Sunbird installatation failed. Error occured during installation." - echo "********************************************************" - echo "" + echo -e "Sunbird installation failed - Error occured during installation." exit 1 fi diff --git a/circle-ci/launch_vm.sh b/circle-ci/launch_vm.sh new file mode 100755 index 0000000000..16e951d4ec --- /dev/null +++ b/circle-ci/launch_vm.sh @@ -0,0 +1,26 @@ +#!/bin/bash +config_file=./deploy/config +aws ec2 run-instances --image-id ami-0c510557369b14896 --instance-type t2.large --key-name adoption-keshav --subnet-id subnet-0241076a --tag-specifications "ResourceType=instance,Tags=[{Key=Name,Value=circle-app-$CIRCLE_BUILD_NUM-$release}]" 1> /dev/null +aws ec2 run-instances --image-id ami-0c510557369b14896 --instance-type t2.large --key-name adoption-keshav --subnet-id subnet-0241076a --tag-specifications "ResourceType=instance,Tags=[{Key=Name,Value=circle-db-$CIRCLE_BUILD_NUM-$release}]" 1> /dev/null +echo -e "Waiting for servers to launch..." +sleep 150 + +aws_app_instance=$(aws ec2 describe-instances --filters "Name=instance-state-name,Values=running" "Name=tag:Name,Values=circle-app-$CIRCLE_BUILD_NUM-$release" --query "Reservations[*].Instances[*].{PrivateIP: PrivateIpAddress, PublicIP: PublicIpAddress, InstanceId: InstanceId}") +app_instance_id=$(echo -e $aws_app_instance | awk '{print $1}') +app_private_ip=$(echo -e $aws_app_instance | awk '{print $2}') +app_public_ip=$(echo -e $aws_app_instance | awk '{print $3}') + +aws_db_instance=$(aws ec2 describe-instances --filters "Name=instance-state-name,Values=running" "Name=tag:Name,Values=circle-db-$CIRCLE_BUILD_NUM-$release" --query "Reservations[*].Instances[*].{PrivateIP: PrivateIpAddress, PublicIP: PublicIpAddress, InstanceId: InstanceId}") +db_instance_id=$(echo -e $aws_db_instance | awk '{print $1}') +db_private_ip=$(echo -e $aws_db_instance | awk '{print $2}') +db_public_ip=$(echo -e $aws_db_instance | awk '{print $3}') + +echo -e "Application server details:" +echo -e "Instance ID: $app_instance_id\nPrivate IP: $app_private_ip\nPublic IP: $app_public_ip" + +echo -e "\nDatabase server details" +echo -e "Instance ID: $db_instance_id\nPrivate IP: $db_private_ip\nPublic IP: $db_public_ip" + +sed -i "s/application_host:/application_host: $app_private_ip/g" $config_file +sed -i "s/dns_name:/dns_name: $app_public_ip/g" $config_file +sed -i "s/database_host:/database_host: $db_private_ip/g" $config_file diff --git a/travis-ci-scripts/release_to_build b/circle-ci/release_to_build similarity index 100% rename from travis-ci-scripts/release_to_build rename to circle-ci/release_to_build diff --git a/circle-ci/remove_vm.sh b/circle-ci/remove_vm.sh new file mode 100755 index 0000000000..525f5c7295 --- /dev/null +++ b/circle-ci/remove_vm.sh @@ -0,0 +1,13 @@ +#!/bin/bash +aws_app_instance=$(aws ec2 describe-instances --filters "Name=instance-state-name,Values=running" "Name=tag:Name,Values=circle-app-$CIRCLE_BUILD_NUM-$release" --query "Reservations[*].Instances[*].{PrivateIP: PrivateIpAddress, PublicIP: PublicIpAddress, InstanceId: InstanceId}") +app_instance_id=$(echo $aws_app_instance | awk '{print $1}') + +aws_db_instance=$(aws ec2 describe-instances --filters "Name=instance-state-name,Values=running" "Name=tag:Name,Values=circle-db-$CIRCLE_BUILD_NUM-$release" --query "Reservations[*].Instances[*].{PrivateIP: PrivateIpAddress, PublicIP: PublicIpAddress, InstanceId: InstanceId}") +db_instance_id=$(echo $aws_db_instance | awk '{print $1}') + +echo -e "Removing application server: $app_instance_id" +echo -e "Removing database server: $db_instance_id" +echo -e "Waiting for servers to terminate..." +sleep 30 + +aws ec2 terminate-instances --instance-ids $app_instance_id $db_instance_id diff --git a/travis-ci-scripts/update_config.sh b/circle-ci/update_config.sh similarity index 97% rename from travis-ci-scripts/update_config.sh rename to circle-ci/update_config.sh index ed25765bfa..6b68c3effd 100755 --- a/travis-ci-scripts/update_config.sh +++ b/circle-ci/update_config.sh @@ -1,5 +1,5 @@ #!/bin/bash -config_file=$TRAVIS_BUILD_DIR/deploy/config +config_file=./deploy/config sed -i "s/env:/env: $env/g" $config_file sed -i "s/implementation_name:/implementation_name: $implementation_name/g" $config_file sed -i "s/ssh_ansible_user:/ssh_ansible_user: $ssh_ansible_user/g" $config_file @@ -29,3 +29,4 @@ sed -i "s/sunbird_root_user_password:/sunbird_root_user_password: $sunbird_root_ sed -i "s/sunbird_root_user_email:/sunbird_root_user_email: $sunbird_root_user_email/g" $config_file sed -i "s/sunbird_root_user_phone:/sunbird_root_user_phone: $sunbird_root_user_phone/g" $config_file sed -i "s/sunbird_default_channel:/sunbird_default_channel: $sunbird_default_channel/g" $config_file +echo -e "Config file updated..." diff --git a/test.sh b/test.sh index 7d44f2fc62..35ab205a2e 100755 --- a/test.sh +++ b/test.sh @@ -5,4 +5,4 @@ set -e SCRIPT_BASE_DIR=$(dirname $0) SUNBIRD_DEVOPS_FOLDER=$SCRIPT_BASE_DIR -$SUNBIRD_DEVOPS_FOLDER/ansible-syntax-check.sh $SUNBIRD_DEVOPS_FOLDER/ansible/inventories/sample \ No newline at end of file +bash $SUNBIRD_DEVOPS_FOLDER/ansible-syntax-check.sh $SUNBIRD_DEVOPS_FOLDER/ansible/inventories/sample diff --git a/travis-ci-scripts/anisbile_lint.sh b/travis-ci-scripts/anisbile_lint.sh deleted file mode 100755 index 51ee48a9f5..0000000000 --- a/travis-ci-scripts/anisbile_lint.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/bash -virtualenv env; -source env/bin/activate; -pip -q install ansible; -pip -q install ansible-lint -ansible --version -ansible-playbook --version -./test.sh diff --git a/travis-ci-scripts/build.sh b/travis-ci-scripts/build.sh deleted file mode 100755 index a07a6e8ec7..0000000000 --- a/travis-ci-scripts/build.sh +++ /dev/null @@ -1,15 +0,0 @@ -fail=0 -echo "Building $release" -./travis-ci-scripts/update_config.sh -./travis-ci-scripts/launch_vm.sh -./travis-ci-scripts/copy_script.sh -if [[ $? -ne 0 ]]; then - fail=1 -fi - -if [[ $fail -eq 1 ]]; then - echo "Sunbird installation for $release failed. Server instance not removed. Please inspect the server" - exit 1 -else - ./travis-ci-scripts/remove_vm.sh -fi diff --git a/travis-ci-scripts/launch_vm.sh b/travis-ci-scripts/launch_vm.sh deleted file mode 100755 index 14f55a1602..0000000000 --- a/travis-ci-scripts/launch_vm.sh +++ /dev/null @@ -1,30 +0,0 @@ -#!/bin/bash -config_file=$TRAVIS_BUILD_DIR/deploy/config -#aws ec2 run-instances --launch-template LaunchTemplateName=travis-ci-app -#aws ec2 run-instances --launch-template LaunchTemplateName=travis-ci-db -aws ec2 run-instances --image-id ami-0c510557369b14896 --instance-type t2.large --key-name adoption-keshav --subnet-id subnet-0241076a --tag-specifications "ResourceType=instance,Tags=[{Key=Name,Value=travis-app-$TRAVIS_BUILD_NUMBER-$release}]" -aws ec2 run-instances --image-id ami-0c510557369b14896 --instance-type t2.large --key-name adoption-keshav --subnet-id subnet-0241076a --tag-specifications "ResourceType=instance,Tags=[{Key=Name,Value=travis-db-$TRAVIS_BUILD_NUMBER-$release}]" -echo "Wait for app and db instances to launch" -sleep 150 - -aws_app_instance=$(aws ec2 describe-instances --filters "Name=instance-state-name,Values=running" "Name=tag:Name,Values=travis-app-$TRAVIS_BUILD_NUMBER-$release" --query "Reservations[*].Instances[*].{PrivateIP: PrivateIpAddress, PublicIP: PublicIpAddress, InstanceId: InstanceId}") -app_instance_id=$(echo $aws_app_instance | awk '{print $1}') -app_private_ip=$(echo $aws_app_instance | awk '{print $2}') -app_public_ip=$(echo $aws_app_instance | awk '{print $3}') - -aws_db_instance=$(aws ec2 describe-instances --filters "Name=instance-state-name,Values=running" "Name=tag:Name,Values=travis-db-$TRAVIS_BUILD_NUMBER-$release" --query "Reservations[*].Instances[*].{PrivateIP: PrivateIpAddress, PublicIP: PublicIpAddress, InstanceId: InstanceId}") -db_instance_id=$(echo $aws_db_instance | awk '{print $1}') -db_private_ip=$(echo $aws_db_instance | awk '{print $2}') -db_public_ip=$(echo $aws_db_instance | awk '{print $3}') - -echo "App instance id: $app_instance_id" -echo "App private ip: $app_private_ip" -echo "App public ip: $app_public_ip" - -echo "DB instance id: $db_instance_id" -echo "DB private ip: $db_private_ip" -echo "DB public ip: $db_public_ip" - -sed -i "s/application_host:/application_host: $app_private_ip/g" $config_file -sed -i "s/dns_name:/dns_name: $app_public_ip/g" $config_file -sed -i "s/database_host:/database_host: $db_private_ip/g" $config_file diff --git a/travis-ci-scripts/remove_vm.sh b/travis-ci-scripts/remove_vm.sh deleted file mode 100755 index 817840b102..0000000000 --- a/travis-ci-scripts/remove_vm.sh +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/bash -aws_app_instance=$(aws ec2 describe-instances --filters "Name=instance-state-name,Values=running" "Name=tag:Name,Values=travis-app-$TRAVIS_BUILD_NUMBER-$release" --query "Reservations[*].Instances[*].{PrivateIP: PrivateIpAddress, PublicIP: PublicIpAddress, InstanceId: InstanceId}") -app_instance_id=$(echo $aws_app_instance | awk '{print $1}') - -aws_db_instance=$(aws ec2 describe-instances --filters "Name=instance-state-name,Values=running" "Name=tag:Name,Values=travis-db-$TRAVIS_BUILD_NUMBER-$release" --query "Reservations[*].Instances[*].{PrivateIP: PrivateIpAddress, PublicIP: PublicIpAddress, InstanceId: InstanceId}") -db_instance_id=$(echo $aws_db_instance | awk '{print $1}') - -echo "Removing app instance with id: $app_instance_id" - -echo "Removing DB instance with id: $db_instance_id" - -echo "Wait before terminating instance" -sleep 60 - -aws ec2 terminate-instances --instance-ids $app_instance_id $db_instance_id From c03166d4606c5e850d41c6cb15064b00f22383fe Mon Sep 17 00:00:00 2001 From: S M Y Date: Tue, 25 Sep 2018 06:12:51 +0000 Subject: [PATCH 0255/1345] Issue #000 permission: changing file permission From dee81bf49c2129b9393fc13d0c43856a3e069f70 Mon Sep 17 00:00:00 2001 From: Manzarul Date: Wed, 26 Sep 2018 14:50:21 +0530 Subject: [PATCH 0256/1345] Issues #SB-00 fix: adding new endpoint for batch unenrollment --- ansible/roles/kong-api/defaults/main.yml | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/ansible/roles/kong-api/defaults/main.yml b/ansible/roles/kong-api/defaults/main.yml index 2cf7f36c44..d84a46d045 100644 --- a/ansible/roles/kong-api/defaults/main.yml +++ b/ansible/roles/kong-api/defaults/main.yml @@ -349,6 +349,22 @@ kong_apis: config.limit_by: credential - name: request-size-limiting config.allowed_payload_size: "{{ small_request_size_limit }}" + - name: courseUnEnrolment + request_path: "{{ course_service_prefix }}/v1/unenroll" + upstream_url: "{{ learning_service_url }}/v1/course/unenroll" + strip_request_path: true + plugins: + - name: jwt + - name: cors + - "{{ statsd_pulgin }}" + - name: acl + config.whitelist: courseUser + - name: rate-limiting + config.policy: local + config.hour: "{{ medium_rate_limit_per_hour }}" + config.limit_by: credential + - name: request-size-limiting + config.allowed_payload_size: "{{ small_request_size_limit }}" - name: listCourseEnrollments request_path: "{{ course_service_prefix }}/v1/user/enrollment/list" upstream_url: "{{ learning_service_url }}/v1/user/courses/list" From 7a254e8a72684b1a177e79aaff1fe404eaaf1a5b Mon Sep 17 00:00:00 2001 From: santhosh-optit <31979949+santhosh-optit@users.noreply.github.com> Date: Wed, 26 Sep 2018 16:30:05 +0530 Subject: [PATCH 0257/1345] Issue #000 adding build number variable --- ansible/roles/stack-sunbird/templates/sunbird_player.env | 1 + 1 file changed, 1 insertion(+) diff --git a/ansible/roles/stack-sunbird/templates/sunbird_player.env b/ansible/roles/stack-sunbird/templates/sunbird_player.env index 5f95b5da74..4324c1b4f5 100644 --- a/ansible/roles/stack-sunbird/templates/sunbird_player.env +++ b/ansible/roles/stack-sunbird/templates/sunbird_player.env @@ -34,3 +34,4 @@ config_cache_ttl={{config_cache_ttl}} sunbird_portal_user_upload_ref_link={{sunbird_portal_user_upload_ref_link}} config_service_enabled={{config_service_enabled}} config_refresh_interval={{config_refresh_interval}} +sunbird_build_number={{sunbird_build_number}} From 332d9f4580d56e6284771d3fcb5e128531baf87a Mon Sep 17 00:00:00 2001 From: S M Y Date: Wed, 26 Sep 2018 19:00:58 +0530 Subject: [PATCH 0258/1345] Issue #000 env: Learner env vars --- ansible/inventories/sample/group_vars/sample | 6 +++++- .../stack-sunbird/templates/sunbird_learner-service.env | 2 ++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/ansible/inventories/sample/group_vars/sample b/ansible/inventories/sample/group_vars/sample index fe0cd21c62..d9b55c522e 100644 --- a/ansible/inventories/sample/group_vars/sample +++ b/ansible/inventories/sample/group_vars/sample @@ -343,6 +343,10 @@ encryption_reservation_cpu: 1 #Portal vars: sunbird_portal_user_upload_ref_link: http://www.sunbird.org/features-documentation/register_user -#Portal Vars config_service_enabled: false config_refresh_interval: 10 + + +#learner Vars +sunbird_url_shortner_access_token: +sunbird_url_shortner_enable: false diff --git a/ansible/roles/stack-sunbird/templates/sunbird_learner-service.env b/ansible/roles/stack-sunbird/templates/sunbird_learner-service.env index b0123fc5f5..e2a6f66258 100644 --- a/ansible/roles/stack-sunbird/templates/sunbird_learner-service.env +++ b/ansible/roles/stack-sunbird/templates/sunbird_learner-service.env @@ -76,3 +76,5 @@ sunbird_open_saber_bridge_enable={{sunbird_open_saber_bridge_enable|default('fal sunbird_environment={{sunbird_environment}} sunbird_instance={{sunbird_instance}} sunbird_email_max_recipients_limit={{sunbird_email_max_recipients_limit}} +sunbird_url_shortner_access_token={{sunbird_url_shortner_access_token}} +sunbird_url_shortner_enable={{sunbird_url_shortner_enable}} From 7defcbefbf3c8ebf9fb1d66ee6c4404194a5d919 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Wed, 26 Sep 2018 19:03:54 +0530 Subject: [PATCH 0259/1345] Issue #0000 feat: dynamic host selection for proxy DO-201 --- ansible/roles/stack-proxy/templates/proxy-default.conf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ansible/roles/stack-proxy/templates/proxy-default.conf b/ansible/roles/stack-proxy/templates/proxy-default.conf index 84ee8f3345..c1f9787382 100644 --- a/ansible/roles/stack-proxy/templates/proxy-default.conf +++ b/ansible/roles/stack-proxy/templates/proxy-default.conf @@ -245,7 +245,7 @@ server { # set $azure_bucket "sunbird{{sunbird_blob_env}}.blob.core.windows.net"; # upstream_url: azure.nt/container_name - set $bucket "{{upstream_url}}"; + set $bucket "{{upstream_url.split('/')[0]|lower}}"; set $url_full '$1'; proxy_http_version 1.1; proxy_set_header Host $bucket; @@ -260,7 +260,7 @@ server { proxy_intercept_errors on; add_header Access-Control-Allow-Origin "*"; add_header Access-Control-Allow-Methods GET; - proxy_pass https://$bucket/$url_full; + proxy_pass http://$bucket/$url_full; } From 4cf30b660bdb25f53d7de3af85d1ce6d520f1e0a Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Thu, 20 Sep 2018 02:14:12 +0530 Subject: [PATCH 0260/1345] Issue #000 feat: corrected service name to encryption-service --- .../roles/stack-sunbird/templates/stack_encryption_service.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/stack-sunbird/templates/stack_encryption_service.yml b/ansible/roles/stack-sunbird/templates/stack_encryption_service.yml index d80f89c20a..ec54a3b4be 100644 --- a/ansible/roles/stack-sunbird/templates/stack_encryption_service.yml +++ b/ansible/roles/stack-sunbird/templates/stack_encryption_service.yml @@ -1,6 +1,6 @@ version: '3.1' services: - config_service: + encryption-service: image: "{{hub_org}}/{{image_name}}:{{image_tag}}" env_file: /home/deployer/env/sunbird_encryption_service.env From 1f0dfc039fbafb1efe9054c8fae73b2309006474 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Wed, 26 Sep 2018 19:31:19 +0530 Subject: [PATCH 0261/1345] Issue #000 feat: fix proxy host --- ansible/roles/stack-proxy/templates/proxy-default.conf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ansible/roles/stack-proxy/templates/proxy-default.conf b/ansible/roles/stack-proxy/templates/proxy-default.conf index c1f9787382..d0acc58b3f 100644 --- a/ansible/roles/stack-proxy/templates/proxy-default.conf +++ b/ansible/roles/stack-proxy/templates/proxy-default.conf @@ -245,10 +245,10 @@ server { # set $azure_bucket "sunbird{{sunbird_blob_env}}.blob.core.windows.net"; # upstream_url: azure.nt/container_name - set $bucket "{{upstream_url.split('/')[0]|lower}}"; + set $bucket "{{upstream_url}}"; set $url_full '$1'; proxy_http_version 1.1; - proxy_set_header Host $bucket; + proxy_set_header Host "{{upstream_url.split('/')[0]|lower}}"; proxy_set_header Authorization ''; proxy_hide_header Access-Control-Allow-Origin; proxy_hide_header Access-Control-Allow-Methods; From 76d3855c258a357ea5e842e82188ac85fd5416c4 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Thu, 27 Sep 2018 17:18:07 +0530 Subject: [PATCH 0262/1345] Adding config file validation script, updating main install script to invoke validation, updated sanity script (#245) * fix: SB-7380 - Removed tabs from config file. Updated logic to check docker version. * fix: SB-5443 - Adding new script to validate the config file. Updated main install file to invoke the validation script. * fix: SB-5443 - Adding execute permissions * fix: SB-5443, SB-7699 - Updated the code as per PR comments, added new logic to validate IP and CIDR * style: ansible format for variables * style: add/update comments --- deploy/config | 2 +- deploy/sanity.sh | 8 +- deploy/sunbird_install.sh | 21 +++- deploy/validateConfig.sh | 244 ++++++++++++++++++++++++++++++++++++++ 4 files changed, 267 insertions(+), 8 deletions(-) create mode 100755 deploy/validateConfig.sh diff --git a/deploy/config b/deploy/config index 340653c305..367e107cda 100755 --- a/deploy/config +++ b/deploy/config @@ -155,7 +155,7 @@ vault_proxy_prometheus_admin_creds: #es config es_etc_node_datagroups['es']: -es_api_host: "{{inventory_hostname}}" +es_api_host: "{{ inventory_hostname }}" es_heap_size: 1500m es_etc_discovery_zen_minimum_master_nodes: 1 es_snapshot_host: "{{ groups['es'][0] }}" diff --git a/deploy/sanity.sh b/deploy/sanity.sh index 7c3fa7ced4..805785681d 100755 --- a/deploy/sanity.sh +++ b/deploy/sanity.sh @@ -10,7 +10,7 @@ ssh_key=$2 # Application versions es_version=5.4 -docker_version=17.06,18.03 +docker_version="17.06|18.03" postgres_version=9.5 cassandra_version=3.9 java_version=1.8.0_162 @@ -105,7 +105,7 @@ check_es() { # Checking for elastic search version if [ $(nc -z $ip 9200; echo $?) -eq 0 ];then local version=$(nssh $ssh_user@$ip curl -sS $ip:9200 | grep number| awk '{print $3}') - echo -ne "\e[0;35m Elastic search Version: \e[0;32m$version asdfasdf " + echo -ne "\e[0;35m Elastic search Version: \e[0;32m$version" check_compatibility version "$version" "$es_version" es else echo -e "\e[0;35m Elastic search Version: \e[0;32m${bold}Not Installed${normal} " @@ -160,12 +160,12 @@ check_docker() { local version=$(nssh $ssh_user@$ip docker --version | head -n1 | awk '{print $3" "$4" "$5}') echo -ne "\e[0;35m Docker Version: \e[0;32m$version " version=$(echo -ne "$version" | cut -c1-5) - if [ "$docker_version" == "$version" ] || [ "$version" == "17.06" ];then + if [[ $version =~ ($docker_version) ]];then echo -e "\e[0;32m${bold} OK ${normal}" touch ".sunbird/ignore/${service_name}" else echo -e "\e[0;31m${bold} FATAL${normal}" - echo -e "\e[0;31m${bold} Sunbird has been tested with Docker version $docker_version and 17.06, Please Install $docker_version${normal}" + echo -e "\e[0;31m${bold} Sunbird has been tested with Docker version $docker_version. Please Install $docker_version${normal}" fail=1 fi else diff --git a/deploy/sunbird_install.sh b/deploy/sunbird_install.sh index b3423e08e0..e4f310521f 100755 --- a/deploy/sunbird_install.sh +++ b/deploy/sunbird_install.sh @@ -14,7 +14,7 @@ set -eu -o pipefail -usage() { echo "Usage: $0 [ -s {sanity|config|dbs|apis|proxy|keycloak|badger|core|configservice|logger|monitor|posttest|systeminit} ]" ; exit 0; } +usage() { echo "Usage: $0 [ -s {validateconfig|sanity|config|dbs|apis|proxy|keycloak|badger|core|configservice|logger|monitor|posttest|systeminit} ]" ; exit 0; } # Checking for valid argument if [[ ! -z ${1:-} ]] && [[ ${1} != -* ]]; then @@ -47,6 +47,15 @@ if [ ! -d logs ];then mkdir logs &> /dev/null;fi # Creating temporary directory if [ ! -d .sunbird/ignore ];then mkdir -p .sunbird/ignore &> /dev/null;fi +# Validate config file +validateconfig(){ +if [[ $# -eq 0 ]]; then + ./validateConfig.sh +else + ./validateConfig.sh $1 +fi +} + # Generating configs config() { sudo ./install-deps.sh @@ -60,7 +69,6 @@ config() { } # Sanity check - sanity() { ./sanity.sh $ssh_ansible_user $ansible_private_key_path } @@ -117,6 +125,11 @@ while getopts "s:h" o;do s) s=${OPTARG} case "${s}" in + validateconfig) + echo -e "\n$(date)\n">>logs/validateconfig.log; + validateconfig 2>&1 | tee -a logs/validateconfig.log + exit 0 + ;; config) echo -e "\n$(date)\n">>logs/config.log; config 2>&1 | tee -a logs/config.log @@ -155,6 +168,7 @@ while getopts "s:h" o;do exit 0 ;; core) + echo -e "\n$(date)\n">>logs/validateconfig.log; validateconfig "${s}" 2>&1 | tee -a logs/validateconfig.log echo -e "\n$(date)\n">>logs/core.log; core 2>&1 | tee -a logs/core.log exit 0 ;; @@ -208,6 +222,7 @@ echo """ """ ## Installing and configuring prerequisites +echo -e \n$(date)\n >> logs/validateconfig.log; validateconfig 2>&1 | tee -a logs/validateconfig.log echo -e \n$(date)\n >> logs/config.log; config 2>&1 | tee -a logs/config.log ## checking for prerequisites echo -e \n$(date)\n >> logs/sanity.log; sanity 2>&1 | tee -a logs/sanity.log @@ -221,4 +236,4 @@ echo -e \n$(date)\n >> logs/keycloak.log; keycloak 2>&1 | tee -a logs/keycloak.l echo -e \n$(date)\n >> logs/badger.log; badger 2>&1 | tee -a logs/badger.log ## Initialising system -echo -e \n$(date)\n >> logs/systeminit.log; systeminit 2>&1 | tee -a logs/systeminit.log \ No newline at end of file +echo -e \n$(date)\n >> logs/systeminit.log; systeminit 2>&1 | tee -a logs/systeminit.log diff --git a/deploy/validateConfig.sh b/deploy/validateConfig.sh new file mode 100755 index 0000000000..983f4177a3 --- /dev/null +++ b/deploy/validateConfig.sh @@ -0,0 +1,244 @@ +#/bin/bash + +# Trampoline secret length validation +check_tram_secret(){ +key=$1 +value=$2 +length=$(echo $value | awk '{print length}') +if [[ $length -lt 8 ]]; then + echo -e "\e[0;31m${bold}ERROR - Invalid value for $key. Value must be at least 8 characters in length" + fail=1 +fi +} + + +# Basic phone number validation +check_phone(){ +key=$1 +value=$2 +length=$(echo $value | awk '{print length}') +if [[ $length -lt 8 || $value =~ [a-zA-Z] ]]; then + echo -e "\e[0;31m${bold}ERROR - Invalid value for $key. Phone number cannot include alphabets and should contain 8 digits minimum${normal}" + fail=1 +fi +} + + +# Basic email validation +check_email(){ +key=$1 +value=$2 +if ! [[ $value =~ ^([a-zA-Z0-9])*@([a-zA-Z0-9])*\.([a-zA-Z0-9])*$ ]]; then + echo -e "\e[0;31m${bold}ERROR - Invalid value for $key. Email must be of the format admin@sunbird.com${normal}" + fail=1 +fi +} + + +# Check if the CIDR value specified in app_address_space is valid +check_cidr(){ +key=$1 +value=$2 +IFS="./" read -r ip1 ip2 ip3 ip4 N <<< $value +ip=$(($ip1 * 256 ** 3 + $ip2 * 256 ** 2 + $ip3 * 256 + $ip4)) +if ! [[ $(($ip % 2**(32-$N))) = 0 ]]; then + echo -e "\e[0;31m${bold}ERROR - Invalid CIDR value for $key. Please enter a valid value. CIDR is of the format 172.10.0.0/24" + fail=1 + cidr_result="fail" +fi +} + + +# Check if the IP address belongs to the CIDR block specified in app_address_space +check_ip(){ +key=$1 +value=$2 +if [[ ${vals[app_address_space]} != "" && $cidr_result != "fail" ]]; then + IFS="." read -r host_ip1 host_ip2 host_ip3 host_ip4 <<< $value + IFS="./" read -r cidr_ip1 cidr_ip2 cidr_ip3 cidr_ip4 N <<< ${vals[app_address_space]} + set -- $(( 5 - ($N / 8))) 255 255 255 255 $(((255 << (8 - ($N % 8))) & 255 )) 0 0 0 + [ $1 -gt 1 ] && shift $1 || shift + mask=${1-0}.${2-0}.${3-0}.${4-0} + IFS="." read -r mask_ip1 mask_ip2 mask_ip3 mask_ip4 <<< $mask + net_addr=$((cidr_ip1&mask_ip1)).$((cidr_ip2&mask_ip2)).$((cidr_ip3&mask_ip3)).$((cidr_ip4&mask_ip4)) + broad_addr=$((cidr_ip1&mask_ip1^(255-$mask_ip1))).$((cidr_ip2&mask_ip2^(255-$mask_ip2))).$((cidr_ip3&mask_ip3^(255-$mask_ip3))).$((cidr_ip4&mask_ip4^(255-$mask_ip4))) + cidr_trim=$cidr_ip1.$cidr_ip2.$cidr_ip3.$cidr_ip4 + ip_post_mask=$((host_ip1&mask_ip1)).$((host_ip2&mask_ip2)).$((host_ip3&mask_ip3)).$((host_ip4&mask_ip4)) + range_start=$((cidr_ip1&mask_ip1)).$((cidr_ip2&mask_ip2)).$((cidr_ip3&mask_ip3)).$(((cidr_ip4&mask_ip4)+1)) + range_end=$((cidr_ip1&mask_ip1^(255-$mask_ip1))).$((cidr_ip2&mask_ip2^(255-$mask_ip2))).$((cidr_ip3&mask_ip3^(255-$mask_ip3))).$(((cidr_ip4&mask_ip4^(255-$mask_ip4))-1)) + if ! [[ $ip_post_mask == $cidr_trim && $value > $net_addr && $value < $broad_addr ]]; then + echo -e "\e[0;31m${bold}ERROR - Invalid value for $key. IP address does not belong to the CIDR group. Valid range for given app_address_space is $range_start to $range_end${normal}" + fail=1 + fi +fi +} + + +# Check if login succeeds to the app and db server using username and private key +check_login(){ +key=$1 +value=$2 +app_server=${vals[application_host]} +db_server=${vals[database_host]} +username=${vals[ssh_ansible_user]} + +app_user=$(ssh -i $value -o StrictHostKeyChecking=no -o ConnectTimeout=1 $username@$app_server whoami 2> /dev/null) +db_user=$(ssh -i $value -o StrictHostKeyChecking=no -o ConnectTimeout=1 $username@$db_server whoami 2> /dev/null) + +if [[ $app_user != $username ]]; then + echo -e "\e[0;31m${bold}ERROR - Login to app server failed. Please check application_host, ssh_ansible_user, ansible_private_key_path${normal}" + fail=1 +fi + +if [[ $db_user != $username ]]; then + echo -e "\e[0;31m${bold}ERROR - Login to db server failed. Please check database_host, ssh_ansible_user, ansible_private_key_path${normal}" + fail=1 +fi +} + + +# Validate ssh_ansible_user can run sudo commands using the sudo password +check_sudo(){ +key=$1 +value=$2 +app_server=${vals[application_host]} +db_server=${vals[database_host]} +username=${vals[ssh_ansible_user]} +private_key=${vals[ansible_private_key_path]} + +result=$(ssh -i $private_key -o StrictHostKeyChecking=no -o ConnectTimeout=1 $username@$app_server "echo $value | sudo -S apt-get check" 2> /dev/null) +if ! [[ $result =~ (Reading|Building) ]]; then + echo -e "\e[0;31m${bold}ERROR - Sudo login failed. Please check the username / password / IP" + fail=1 +fi +} + + +# Function to retrieve values of mandatory fields and store it as key value pair +get_config_values(){ +key=$1 +vals[$key]=$(awk ''/^$key:' /{ if ($2 !~ /#.*/) {print $2}}' config) +} + +# Script start. core_install will receive value as "core" from calling script when -s core option is triggered. +bold=$(tput bold) +normal=$(tput sgr0) +if ! [[ $# -eq 0 ]]; then +core_install=$1 +else +core_install="NA" +fi + +echo -e "\e[0;33m${bold}Validating the config file...${normal}" + + +# An array of mandatory values +declare -a arr=("env" "implementation_name" "ssh_ansible_user" "sudo_passwd" "ansible_private_key_path" "application_host" "app_address_space" "dns_name" "proto" "cert_path" \ + "key_path" "database_host" "database_password" "keycloak_admin_password" "sso_password" "trampoline_secret" "backup_storage_key" "badger_admin_password" \ + "badger_admin_email" "ekstep_api_base_url" "ekstep_proxy_base_url" "ekstep_api_key" "sunbird_image_storage_url" "sunbird_azure_storage_key" \ + "sunbird_azure_storage_account" "sunbird_custodian_tenant_name" "sunbird_custodian_tenant_description" "sunbird_custodian_tenant_channel" \ + "sunbird_root_user_firstname" "sunbird_root_user_lastname" "sunbird_root_user_username" "sunbird_root_user_password" "sunbird_root_user_email" \ + "sunbird_root_user_phone" "sunbird_sso_publickey" "sunbird_default_channel") + +# Create and empty array which will store the key and value pair from config file +declare -A vals + +# Iterate the array and retrieve values for mandatory fields from config file +for i in ${arr[@]} +do +get_config_values $i +done + +# Iterate the array of key values and based on key check the validation +for i in ${!vals[@]} +do +key=$i +value=${vals[$i]} +case $key in + proto) + if [[ ! "$value" =~ ^(http|https)$ ]]; then + echo -e "\e[0;31m${bold}ERROR - Invalid value for $key. Valid values are http / https${normal}"; fail=1 + fi + ;; + cert_path|key_path) + if [[ "$value" == "" && "${vals[proto]}" == "https" ]]; then + echo -e "\e[0;31m${bold}ERROR - Protocal https specified but $key is blank. Please fill this value${normal}"; fail=1 + fi + ;; + ekstep_api_base_url) + if [[ ! "$value" =~ ^(https://api-qa.ekstep.in|https://api.ekstep.in)$ ]]; then + echo -e "\e[0;31m${bold}ERROR - Valid values for $key are https://api.ekstep.in or https://api-qa.ekstep.in${normal}"; fail=1 + fi + ;; + ekstep_proxy_base_url) + if [[ ! "$value" =~ ^(https://community.ekstep.in|https://qa.ekstep.in)$ ]]; then + echo -e "\e[0;31m${bold}ERROR - Valid values for $key are https://community.ekstep.in or https://qa.ekstep.in${normal}"; fail=1 + fi + ;; + trampoline_secret) + if [[ $value == "" ]]; then + echo -e "\e[0;31m${bold}ERROR - Value for $key cannot be empty. Please fill this value with a minimum of 8 characters${normal}"; fail=1 + else + check_tram_secret $key $value + fi + ;; + sunbird_root_user_phone) + if [[ $value == "" ]]; then + echo -e "\e[0;31m${bold}ERROR - Value for $key cannot be empty. Please fill this value with a minimum of 8 digits${normal}"; fail=1 + else + check_phone $key $value + fi + ;; + badger_admin_email|sunbird_root_user_email) + if [[ $value == "" ]]; then + echo -e "\e[0;31m${bold}ERROR - Value for $key cannot be empty. Please fill this value${normal}"; fail=1 + else + check_email $key $value + fi + ;; + app_address_space) + if [[ $value == "" ]]; then + echo -e "\e[0;31m${bold}ERROR - Value for $key cannot be empty. Please fill this value${normal}"; fail=1 + else + check_cidr $key $value + fi + ;; + application_host|database_host) + if [[ $value == "" ]]; then + echo -e "\e[0;31m${bold}ERROR - Value for $key cannot be empty. Please fill this value${normal}"; fail=1 + else + check_ip $key $value + fi + ;; + ansible_private_key_path) + if [[ $value == "" ]]; then + echo -e "\e[0;31m${bold}ERROR - Value for $key cannot be empty. Please fill this value${normal}"; fail=1 + else + check_login $key $value + fi + ;; + sudo_passwd) + if [[ $value != "" ]]; then + check_sudo $key $value + fi + ;; + sunbird_sso_publickey) + if [[ $core_install == "core" && $value == "" ]]; then + echo -e "\e[0;31m${bold}ERROR - Value for $key cannot be empty. Please fill this value before running core"; fail=1 + fi + ;; + *) + if [[ "$value" == "" ]]; then + echo -e "\e[0;31m${bold}ERROR - Value for $key cannot be empty. Please fill this value${normal}"; fail=1 + fi + ;; +esac +done + +# Check if any of the validation failed and exit +if [[ $fail ]]; then + echo -e "\e[0;31m${bold}Config file has errors. Please rectify the issues and rerun${normal}" + exit 1 +else + echo -e "\e[0;32m${bold}Config file successfully validated${normal}" +fi From ee117ea2aa60c5b2905cc48aa1561d049e7c3e8e Mon Sep 17 00:00:00 2001 From: Santhosh Gandham Date: Fri, 28 Sep 2018 15:42:52 +0530 Subject: [PATCH 0263/1345] Issue #000 updated analytics api base url --- ansible/roles/kong-api/defaults/main.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ansible/roles/kong-api/defaults/main.yml b/ansible/roles/kong-api/defaults/main.yml index d84a46d045..7675376ff7 100644 --- a/ansible/roles/kong-api/defaults/main.yml +++ b/ansible/roles/kong-api/defaults/main.yml @@ -3173,7 +3173,7 @@ kong_apis: # Data pipeline - name: "datasetSubmitRequest" request_path: "{{ data_service_prefix }}/v3/dataset/request/submit" - upstream_url: "{{ learning_analytics_service_url }}/dataset/request/submit" + upstream_url: "{{ sunbird_analytics_api_base_url }}/dataset/request/submit" strip_request_path: true plugins: - {name: 'jwt'} @@ -3184,7 +3184,7 @@ kong_apis: - {name: 'request-size-limiting', config.allowed_payload_size: "{{ small_request_size_limit }}" } - name: "datasetReadRequest" request_path: "{{ data_service_prefix }}/v3/dataset/request/read" - upstream_url: "{{ learning_analytics_service_url }}/dataset/request/read" + upstream_url: "{{ sunbird_analytics_api_base_url }}/dataset/request/read" strip_request_path: true plugins: - {name: 'jwt'} @@ -3195,7 +3195,7 @@ kong_apis: - {name: 'request-size-limiting', config.allowed_payload_size: "{{ small_request_size_limit }}" } - name: "datasetListRequest" request_path: "{{ data_service_prefix }}/v3/dataset/request/list" - upstream_url: "{{ learning_analytics_service_url }}/dataset/request/list" + upstream_url: "{{ sunbird_analytics_api_base_url }}/dataset/request/list" strip_request_path: true plugins: - {name: 'jwt'} @@ -3207,7 +3207,7 @@ kong_apis: - name: "channelSpecificTelemetryExhaust" request_path: "{{ data_service_prefix }}/v3/dataset/get" - upstream_url: "{{ learning_analytics_service_url }}/dataset/get" + upstream_url: "{{ sunbird_analytics_api_base_url }}/dataset/get" strip_request_path: true plugins: - {name: 'jwt'} From 4177131c997fc19e60f31b8ee4be9d7225c647de Mon Sep 17 00:00:00 2001 From: S M Y Date: Fri, 28 Sep 2018 18:49:55 +0530 Subject: [PATCH 0264/1345] Issue #000 apis: Adding API's for config-service --- ansible/roles/kong-api/defaults/main.yml | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/ansible/roles/kong-api/defaults/main.yml b/ansible/roles/kong-api/defaults/main.yml index 7675376ff7..e374477eee 100644 --- a/ansible/roles/kong-api/defaults/main.yml +++ b/ansible/roles/kong-api/defaults/main.yml @@ -3284,14 +3284,25 @@ kong_apis: - {name: 'acl', config.whitelist: 'dataAdmin'} - {name: 'rate-limiting', config.policy: "local", config.hour: "{{ medium_rate_limit_per_hour }}"} - {name: 'request-size-limiting', config.allowed_payload_size: "{{ small_request_size_limit }}" } - - name: "getAllSystemSettings" - request_path: "{{ data_service_prefix }}/v1/system/setting/list" - upstream_url: "{{ learning_service_url }}/v1/system/setting/list" + - name: "getConfigStatus" + request_path: "{{ config_service_prefix }}/v1/status" + upstream_url: "{{ config_service_url }}/config-service/v1/status" strip_request_path: true plugins: - {name: 'jwt'} - {name: 'cors'} - {name: 'statsd', config.metrics: "{{ statsd_metrics }}" } - {name: 'acl', config.whitelist: 'dataAdmin'} - - {name: 'rate-limiting', config.policy: "local", config.hour: "{{ medium_rate_limit_per_hour }}"} + - {name: 'rate-limiting', config.policy: "local", config.hour: "{{ small_rate_limit_per_hour }}"} + - {name: 'request-size-limiting', config.allowed_payload_size: "{{ small_request_size_limit }}" } + - name: "getConfigHealth" + request_path: "{{ config_service_prefix }}/v1/health" + upstream_url: "{{ config_service_url }}/config-service/v1/health" + strip_request_path: true + plugins: + - {name: 'jwt'} + - {name: 'cors'} + - {name: 'statsd', config.metrics: "{{ statsd_metrics }}" } + - {name: 'acl', config.whitelist: 'dataAdmin'} + - {name: 'rate-limiting', config.policy: "local", config.hour: "{{ small_rate_limit_per_hour }}"} - {name: 'request-size-limiting', config.allowed_payload_size: "{{ small_request_size_limit }}" } From b19c2f076b0588ea8d9711e50a9b91cdedf45534 Mon Sep 17 00:00:00 2001 From: S M Y Date: Fri, 28 Sep 2018 21:04:52 +0530 Subject: [PATCH 0265/1345] Issue #000 api: onboarding API's --- ansible/roles/kong-api/defaults/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/kong-api/defaults/main.yml b/ansible/roles/kong-api/defaults/main.yml index e374477eee..35d16802a4 100644 --- a/ansible/roles/kong-api/defaults/main.yml +++ b/ansible/roles/kong-api/defaults/main.yml @@ -56,7 +56,7 @@ telemetry_service_url: "http://telemetry-service:9001" player_service_url: "http://player_player:3000" echo_service_url: "http://api-manager_echo:9595" am_util_url: http://adminutil_adminutil:4000 -config_service_url: http://config-service:8080 +config_service_url: "http://config-service:8080" premium_consumer_rate_limits: - api: createContent From a890a6ab58d2dfd9bb6f1ce10c96c660a3cb155d Mon Sep 17 00:00:00 2001 From: Amol Ghatol Date: Sat, 29 Sep 2018 15:30:54 +0530 Subject: [PATCH 0266/1345] Issue #SB7310 chore:Onboard Consumer API and Consumer (#251) --- ansible/roles/kong-api/defaults/main.yml | 34 ++++++++++++++++++- ansible/roles/kong-consumer/defaults/main.yml | 6 ++++ 2 files changed, 39 insertions(+), 1 deletion(-) diff --git a/ansible/roles/kong-api/defaults/main.yml b/ansible/roles/kong-api/defaults/main.yml index 35d16802a4..3c345aa60e 100644 --- a/ansible/roles/kong-api/defaults/main.yml +++ b/ansible/roles/kong-api/defaults/main.yml @@ -364,7 +364,7 @@ kong_apis: config.hour: "{{ medium_rate_limit_per_hour }}" config.limit_by: credential - name: request-size-limiting - config.allowed_payload_size: "{{ small_request_size_limit }}" + config.allowed_payload_size: "{{ small_request_size_limit }}" - name: listCourseEnrollments request_path: "{{ course_service_prefix }}/v1/user/enrollment/list" upstream_url: "{{ learning_service_url }}/v1/user/courses/list" @@ -3306,3 +3306,35 @@ kong_apis: - {name: 'acl', config.whitelist: 'dataAdmin'} - {name: 'rate-limiting', config.policy: "local", config.hour: "{{ small_rate_limit_per_hour }}"} - {name: 'request-size-limiting', config.allowed_payload_size: "{{ small_request_size_limit }}" } + - name: onboardConsumer + request_path: "{{ api_manager_perfix }}/v1/consumer/create/jwt" + upstream_url: "{{ am_util_url }}/v1/consumer/create/jwt" + strip_request_path: true + plugins: + - name: jwt + - name: cors + - "{{ statsd_pulgin }}" + - name: acl + config.whitelist: kongConsumer + - name: rate-limiting + config.policy: local + config.hour: "{{ small_rate_limit_per_hour }}" + config.limit_by: credential + - name: request-size-limiting + config.allowed_payload_size: "{{ small_request_size_limit }}" + - name: KongConsumerApi + request_path: "{{ api_manager_perfix }}/v1/consumer" + upstream_url: "{{ am_util_url }}/v1/consumer" + strip_request_path: true + plugins: + - name: jwt + - name: cors + - "{{ statsd_pulgin }}" + - name: acl + config.whitelist: kongConsumer + - name: rate-limiting + config.policy: local + config.hour: "{{ small_rate_limit_per_hour }}" + config.limit_by: credential + - name: request-size-limiting + config.allowed_payload_size: "{{ small_request_size_limit }}" diff --git a/ansible/roles/kong-consumer/defaults/main.yml b/ansible/roles/kong-consumer/defaults/main.yml index 7ea1ef45ca..9819060497 100644 --- a/ansible/roles/kong-consumer/defaults/main.yml +++ b/ansible/roles/kong-consumer/defaults/main.yml @@ -89,6 +89,9 @@ kong_all_consumer_groups: - domainUpdate - domainUser +kong_admin_groups: + - kongConsumer + # List the consumers need to be present as state: present # List the consumers need to be absent as state: absent # This role will not update / delete consumers not listed here @@ -112,3 +115,6 @@ kong_consumers: - username: mobile_device groups: "{{ mobile_device_groups }}" state: present + - username: kongAdmin + groups: "{{ kong_admin_groups }}" + state: present From dce04de7d5d02071fea524688a02e4aed33615ab Mon Sep 17 00:00:00 2001 From: Manzarul Date: Mon, 1 Oct 2018 10:34:51 +0530 Subject: [PATCH 0267/1345] Issues #SB-00 fix: changes unenroll to unenrol --- ansible/roles/kong-api/defaults/main.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ansible/roles/kong-api/defaults/main.yml b/ansible/roles/kong-api/defaults/main.yml index 3c345aa60e..cecde07273 100644 --- a/ansible/roles/kong-api/defaults/main.yml +++ b/ansible/roles/kong-api/defaults/main.yml @@ -350,8 +350,8 @@ kong_apis: - name: request-size-limiting config.allowed_payload_size: "{{ small_request_size_limit }}" - name: courseUnEnrolment - request_path: "{{ course_service_prefix }}/v1/unenroll" - upstream_url: "{{ learning_service_url }}/v1/course/unenroll" + request_path: "{{ course_service_prefix }}/v1/unenrol" + upstream_url: "{{ learning_service_url }}/v1/course/unenrol" strip_request_path: true plugins: - name: jwt From 28877baf5db6666e87ef3accf0899ea621a737ae Mon Sep 17 00:00:00 2001 From: Santhosh Gandham Date: Mon, 1 Oct 2018 10:41:08 +0530 Subject: [PATCH 0268/1345] Issue #000 update proxy config --- ansible/roles/stack-proxy/templates/proxy-default.conf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ansible/roles/stack-proxy/templates/proxy-default.conf b/ansible/roles/stack-proxy/templates/proxy-default.conf index d0acc58b3f..b8208ea4c9 100644 --- a/ansible/roles/stack-proxy/templates/proxy-default.conf +++ b/ansible/roles/stack-proxy/templates/proxy-default.conf @@ -1,4 +1,4 @@ -{% if env != 'dev' %} +{% if env != 'dev' || env != 'staging' %} server { listen 80 default_server; server_name _; # This is just an invalid value which will never trigger on a real hostname. @@ -7,7 +7,7 @@ server { } {% endif %} {% if proto=='https' %} -{% if env != 'dev' %} +{% if env != 'dev' || env != 'staging' %} server { listen 443 default_server ssl; server_name _; # This is just an invalid value which will never trigger on a real hostname. From 9765363c5e690e93a1d3b706b45c6a1bca9f1342 Mon Sep 17 00:00:00 2001 From: Santhosh Gandham Date: Mon, 1 Oct 2018 10:47:21 +0530 Subject: [PATCH 0269/1345] Issue #000 update proxy config --- .../stack-proxy/templates/proxy-default.conf | 18 ------------------ 1 file changed, 18 deletions(-) diff --git a/ansible/roles/stack-proxy/templates/proxy-default.conf b/ansible/roles/stack-proxy/templates/proxy-default.conf index b8208ea4c9..91c36dd55d 100644 --- a/ansible/roles/stack-proxy/templates/proxy-default.conf +++ b/ansible/roles/stack-proxy/templates/proxy-default.conf @@ -1,22 +1,4 @@ -{% if env != 'dev' || env != 'staging' %} -server { - listen 80 default_server; - server_name _; # This is just an invalid value which will never trigger on a real hostname. - server_name_in_redirect off; - return 403; -} -{% endif %} {% if proto=='https' %} -{% if env != 'dev' || env != 'staging' %} -server { - listen 443 default_server ssl; - server_name _; # This is just an invalid value which will never trigger on a real hostname. - ssl_certificate /run/secrets/site.crt; - ssl_certificate_key /run/secrets/site.key; - server_name_in_redirect off; - return 403; -} -{% endif %} server { listen 80; listen [::]:80; From bef8713f93fbf25d8b5787149d699013eed7f4ea Mon Sep 17 00:00:00 2001 From: S M Y Date: Mon, 1 Oct 2018 11:08:00 +0530 Subject: [PATCH 0270/1345] Issue #000 vars: env vars portal --- ansible/inventories/sample/group_vars/sample | 6 ++++++ ansible/roles/stack-sunbird/templates/sunbird_player.env | 2 ++ 2 files changed, 8 insertions(+) diff --git a/ansible/inventories/sample/group_vars/sample b/ansible/inventories/sample/group_vars/sample index d9b55c522e..153435d746 100644 --- a/ansible/inventories/sample/group_vars/sample +++ b/ansible/inventories/sample/group_vars/sample @@ -350,3 +350,9 @@ config_refresh_interval: 10 #learner Vars sunbird_url_shortner_access_token: sunbird_url_shortner_enable: false +sunbird_keycloak_required_action_link_expiration_seconds: 7200 +sunbird_user_profile_field_default_visibility: public + +#Player Vars +config_service_enabled: false +config_refresh_interval: 10 diff --git a/ansible/roles/stack-sunbird/templates/sunbird_player.env b/ansible/roles/stack-sunbird/templates/sunbird_player.env index 4324c1b4f5..351336dffc 100644 --- a/ansible/roles/stack-sunbird/templates/sunbird_player.env +++ b/ansible/roles/stack-sunbird/templates/sunbird_player.env @@ -35,3 +35,5 @@ sunbird_portal_user_upload_ref_link={{sunbird_portal_user_upload_ref_link}} config_service_enabled={{config_service_enabled}} config_refresh_interval={{config_refresh_interval}} sunbird_build_number={{sunbird_build_number}} +config_service_enabled={{config_service_enabled}} +config_refresh_interval={{config_refresh_interval}} From 7c3e1adc087140312947537f46b0a34b873c3a3f Mon Sep 17 00:00:00 2001 From: Amol Ghatol Date: Mon, 1 Oct 2018 11:15:16 +0530 Subject: [PATCH 0271/1345] #SB-6598 chore: Revised Sunbird adopter access (#252) * Issue #SB7310 chore:Onboard Consumer API and Consumer * #SB-6598 chore: Revised sunbird adopter access --- ansible/roles/kong-consumer/defaults/main.yml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/ansible/roles/kong-consumer/defaults/main.yml b/ansible/roles/kong-consumer/defaults/main.yml index 9819060497..2c657cde0c 100644 --- a/ansible/roles/kong-consumer/defaults/main.yml +++ b/ansible/roles/kong-consumer/defaults/main.yml @@ -39,6 +39,14 @@ integration_partner_groups: - appUpdate - courseUser - contentUser + - contentAdmin + - contentUpdate + - courseAdmin + - courseUpdate + - noteAdmin + - noteUpdate + - noteUser + - configUser implementaion_user_groups: - contentAdmin From 17c9e8540182e1eaebe2a4300accdebccc676e9d Mon Sep 17 00:00:00 2001 From: S M Y Date: Mon, 1 Oct 2018 14:54:25 +0530 Subject: [PATCH 0272/1345] Issue #000 env: player var --- ansible/roles/stack-sunbird/defaults/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/stack-sunbird/defaults/main.yml b/ansible/roles/stack-sunbird/defaults/main.yml index 5c0fa92272..4855632f31 100644 --- a/ansible/roles/stack-sunbird/defaults/main.yml +++ b/ansible/roles/stack-sunbird/defaults/main.yml @@ -38,7 +38,7 @@ sunbird_data_pipeline_kafka_servers: "{{groups['processing-cluster-kafka']|join( player_replicas: 1 player_reservation_memory: 64M player_limit_memory: 256M - +sunbird_build_number: content_replicas: 1 content_reservation_memory: 64M content_limit_memory: 256M From 82020a878cd0464157cefea2085c7c1512066187 Mon Sep 17 00:00:00 2001 From: S M Y Date: Mon, 1 Oct 2018 15:30:53 +0530 Subject: [PATCH 0273/1345] Issue #000 proxy: proxy changes --- .../stack-proxy/templates/proxy-default.conf | 78 +++++++------------ 1 file changed, 27 insertions(+), 51 deletions(-) diff --git a/ansible/roles/stack-proxy/templates/proxy-default.conf b/ansible/roles/stack-proxy/templates/proxy-default.conf index 91c36dd55d..c30ccddade 100644 --- a/ansible/roles/stack-proxy/templates/proxy-default.conf +++ b/ansible/roles/stack-proxy/templates/proxy-default.conf @@ -84,61 +84,31 @@ server { proxy_read_timeout 70; } - # Oauth2 config - location /oauth2/ { - proxy_pass http://oauth:4111; - proxy_set_header Host $host; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header X-Scheme $scheme; - proxy_set_header X-Auth-Request-Redirect $request_uri; - } - - location = /oauth2/auth { - proxy_pass http://oauth:4111; - proxy_set_header Host $host; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header X-Scheme $scheme; - # nginx auth_request includes headers but not body - proxy_set_header Content-Length ""; - proxy_pass_request_body off; - } - location /dashboard/ { - auth_request /oauth2/auth; - error_page 401 = /oauth2/sign_in; - - # pass information via X-User and X-Email headers to backend, - # requires running with --set-xauthrequest flag - auth_request_set $user $upstream_http_x_auth_request_user; - auth_request_set $email $upstream_http_x_auth_request_email; - proxy_set_header X-User $user; - proxy_set_header X-Email $email; - - # if you enabled --cookie-refresh, this is needed for it to work with auth_request - auth_request_set $auth_cookie $upstream_http_set_cookie; - add_header Set-Cookie $auth_cookie; - + set $target http://logger_oauth:4111; rewrite ^/dashboard/(.*) /$1 break; - proxy_pass http://kibana:5601; + proxy_pass $target; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Scheme $scheme; + proxy_connect_timeout 1; + proxy_send_timeout 30; + proxy_read_timeout 40; + + sub_filter '' ''; + sub_filter_once on; } location /pipeline-dashboard/ { - auth_request /oauth2/auth; - error_page 401 = /oauth2/sign_in; - - # pass information via X-User and X-Email headers to backend, - # requires running with --set-xauthrequest flag - auth_request_set $user $upstream_http_x_auth_request_user; - auth_request_set $email $upstream_http_x_auth_request_email; - proxy_set_header X-User $user; - proxy_set_header X-Email $email; - - # if you enabled --cookie-refresh, this is needed for it to work with auth_request - auth_request_set $auth_cookie $upstream_http_set_cookie; - add_header Set-Cookie $auth_cookie; - - rewrite ^/pipeline-dashboard/(.*) /$1 break; - proxy_pass http://{{ ep_es_host}}:5601; + set $target http://{{ ep_es_host}}:5601; + rewrite ^/pipeline-dashboard/(.*) /$1 break; + proxy_pass $target; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Scheme $scheme; + proxy_connect_timeout 1; + proxy_send_timeout 30; + proxy_read_timeout 40; } location /grafana/ { @@ -147,6 +117,11 @@ server { proxy_pass $target; } + location /oauth2/ { + set $target http://logger_oauth:4111; + proxy_pass $target; + } + {% if proxy_prometheus==true %} location /{{prometheus_alertmanager_route_prefix}}/ { set $target http://monitor_alertmanager:9093; @@ -242,7 +217,7 @@ server { proxy_intercept_errors on; add_header Access-Control-Allow-Origin "*"; add_header Access-Control-Allow-Methods GET; - proxy_pass http://$bucket/$url_full; + proxy_pass https://$bucket/$url_full; } @@ -365,3 +340,4 @@ location ~* ^/content-plugins/(.*) { {{ proxy_custom_config }} client_max_body_size 60M; } + From 67f80d565b6d0b621226dff35c7b9d848960a802 Mon Sep 17 00:00:00 2001 From: S M Y Date: Mon, 1 Oct 2018 18:47:33 +0530 Subject: [PATCH 0274/1345] Issue #000 zoo: zookeeper changes --- ansible/roles/zookeeper/templates/zoo.cfg.j2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/zookeeper/templates/zoo.cfg.j2 b/ansible/roles/zookeeper/templates/zoo.cfg.j2 index d1e7efe84a..dc84527fb1 100644 --- a/ansible/roles/zookeeper/templates/zoo.cfg.j2 +++ b/ansible/roles/zookeeper/templates/zoo.cfg.j2 @@ -6,5 +6,5 @@ initLimit={{ init_limit }} syncLimit={{ sync_limit }} {% for host in groups['zookeeper'] %} -server.{{hostvars[host]['server_id']}}={{hostvars[host]['ansible_eth0']['ipv4']['address']}}:2888:3888 +server.{{hostvars[host]['server_id']}}={{hostvars[inventory_hostname]['ansible_default_ipv4']['address']}}:2888:3888 {% endfor %} From b5765ce7f31888cbcc451783961f0973f1d9e394 Mon Sep 17 00:00:00 2001 From: S M Y Date: Mon, 1 Oct 2018 18:52:43 +0530 Subject: [PATCH 0275/1345] Issue #000 kafka: kafka changes --- ansible/roles/provision-kafka/templates/server.properties.j2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/provision-kafka/templates/server.properties.j2 b/ansible/roles/provision-kafka/templates/server.properties.j2 index cef50aa26a..52f535f2fb 100644 --- a/ansible/roles/provision-kafka/templates/server.properties.j2 +++ b/ansible/roles/provision-kafka/templates/server.properties.j2 @@ -113,7 +113,7 @@ log.cleaner.enable=false # server. e.g. "127.0.0.1:3000,127.0.0.1:3001,127.0.0.1:3002". # You can also append an optional chroot string to the urls to specify the # root directory for all kafka znodes. -zookeeper.connect={% for host in groups['zookeeper'] %}{{ hostvars[host]['ansible_eth0']['ipv4']['address'] }}:{{zk_port}}{% if not loop.last %},{% endif %}{% endfor %} +zookeeper.connect={% for host in groups['zookeeper'] %}{{hostvars[inventory_hostname]['ansible_default_ipv4']['address']}}:{{zk_port}}{% if not loop.last %},{% endif %}{% endfor %} # Timeout in ms for connecting to zookeeper zookeeper.connection.timeout.ms={{zookeeper_connection_timeout_ms}} From f719029df3de681e4ffb0bef947ac32493420a23 Mon Sep 17 00:00:00 2001 From: S M Y Date: Mon, 1 Oct 2018 19:17:17 +0530 Subject: [PATCH 0276/1345] Issue #000 monitor: monitoring changes --- ansible/roles/stack-monitor/templates/stack-monitor.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/ansible/roles/stack-monitor/templates/stack-monitor.yml b/ansible/roles/stack-monitor/templates/stack-monitor.yml index b23cf5b5ac..d0dc7496e6 100644 --- a/ansible/roles/stack-monitor/templates/stack-monitor.yml +++ b/ansible/roles/stack-monitor/templates/stack-monitor.yml @@ -379,10 +379,14 @@ configs: external: true blackboxconfig.yml: external: true +{% if groups['postgresql-master'] is defined %} postgresmasterqueries.yml: external: true +{% endif %} +{% if groups['postgresql-slave'] is defined %} postgresslavequeries.yml: external: true +{% endif %} statsd_mapping.yml: external: true jmx_httpserver.yml: From 68e9c19b301035295e80dee2f2aadb7c175f6627 Mon Sep 17 00:00:00 2001 From: S M Y Date: Mon, 1 Oct 2018 20:26:46 +0530 Subject: [PATCH 0277/1345] Issue #000 telemetry: telemetry service data --- .../roles/stack-sunbird/templates/sunbird_telemetry-service.env | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/stack-sunbird/templates/sunbird_telemetry-service.env b/ansible/roles/stack-sunbird/templates/sunbird_telemetry-service.env index 24188461e0..92d82a7165 100644 --- a/ansible/roles/stack-sunbird/templates/sunbird_telemetry-service.env +++ b/ansible/roles/stack-sunbird/templates/sunbird_telemetry-service.env @@ -6,6 +6,6 @@ telemetry_kafka_broker_list={{sunbird_telemetry_kafka_servers}} telemetry_kafka_topic={{sunbird_telemetry_kafka_topic}} # Below is the config to enable Telemetry Proxy. To send telemetry data to ekstep -telemetry_proxy_enabled=true +telemetry_proxy_enabled=false telemetry_proxy_url={{telemetry_proxy_url}} telemetry_proxy_auth_key={{sunbird_ekstep_api_key}} From 8e036f4d7876bc7233c66f14b2d0e61b518b7dc5 Mon Sep 17 00:00:00 2001 From: S M Y Date: Mon, 1 Oct 2018 20:32:09 +0530 Subject: [PATCH 0278/1345] Issue #000 telemetry: telemetry service data --- .../roles/stack-sunbird/templates/sunbird_telemetry-service.env | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/stack-sunbird/templates/sunbird_telemetry-service.env b/ansible/roles/stack-sunbird/templates/sunbird_telemetry-service.env index 92d82a7165..59b03f1cda 100644 --- a/ansible/roles/stack-sunbird/templates/sunbird_telemetry-service.env +++ b/ansible/roles/stack-sunbird/templates/sunbird_telemetry-service.env @@ -1,6 +1,6 @@ # Configuration for Local storage e.g kafka telemetry_service_threads=2 -telemetry_local_storage_enabled=false +telemetry_local_storage_enabled=true telemetry_local_storage_type={{sunbird_telemetry_dispatchers}} telemetry_kafka_broker_list={{sunbird_telemetry_kafka_servers}} telemetry_kafka_topic={{sunbird_telemetry_kafka_topic}} From 0f8beed401bf4fb3e3b12f96a55d5b8da3d81645 Mon Sep 17 00:00:00 2001 From: S M Y Date: Wed, 3 Oct 2018 18:01:11 +0530 Subject: [PATCH 0279/1345] Issue #000 cql: cql host --- ansible/provision.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/provision.yml b/ansible/provision.yml index df7a90846a..98c5aa551d 100644 --- a/ansible/provision.yml +++ b/ansible/provision.yml @@ -1,4 +1,4 @@ -- hosts: "cassandra" +- hosts: cassandra become: yes vars_files: - ['{{inventory_dir}}/secrets.yml', 'secrets/{{env}}.yml'] From 39df1832b09a8c87bbb04e1b4a500f9ad2717db0 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Wed, 3 Oct 2018 18:35:06 +0530 Subject: [PATCH 0280/1345] Issue #0000 feat: Enabling proxy-oauth --- .../stack-proxy/templates/proxy-default.conf | 78 ++++++++++++------- 1 file changed, 51 insertions(+), 27 deletions(-) diff --git a/ansible/roles/stack-proxy/templates/proxy-default.conf b/ansible/roles/stack-proxy/templates/proxy-default.conf index c30ccddade..91c36dd55d 100644 --- a/ansible/roles/stack-proxy/templates/proxy-default.conf +++ b/ansible/roles/stack-proxy/templates/proxy-default.conf @@ -84,31 +84,61 @@ server { proxy_read_timeout 70; } + # Oauth2 config + location /oauth2/ { + proxy_pass http://oauth:4111; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Scheme $scheme; + proxy_set_header X-Auth-Request-Redirect $request_uri; + } + + location = /oauth2/auth { + proxy_pass http://oauth:4111; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Scheme $scheme; + # nginx auth_request includes headers but not body + proxy_set_header Content-Length ""; + proxy_pass_request_body off; + } + location /dashboard/ { - set $target http://logger_oauth:4111; - rewrite ^/dashboard/(.*) /$1 break; - proxy_pass $target; - proxy_set_header Host $host; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header X-Scheme $scheme; - proxy_connect_timeout 1; - proxy_send_timeout 30; - proxy_read_timeout 40; + auth_request /oauth2/auth; + error_page 401 = /oauth2/sign_in; + + # pass information via X-User and X-Email headers to backend, + # requires running with --set-xauthrequest flag + auth_request_set $user $upstream_http_x_auth_request_user; + auth_request_set $email $upstream_http_x_auth_request_email; + proxy_set_header X-User $user; + proxy_set_header X-Email $email; + + # if you enabled --cookie-refresh, this is needed for it to work with auth_request + auth_request_set $auth_cookie $upstream_http_set_cookie; + add_header Set-Cookie $auth_cookie; - sub_filter '' ''; - sub_filter_once on; + rewrite ^/dashboard/(.*) /$1 break; + proxy_pass http://kibana:5601; } location /pipeline-dashboard/ { - set $target http://{{ ep_es_host}}:5601; - rewrite ^/pipeline-dashboard/(.*) /$1 break; - proxy_pass $target; - proxy_set_header Host $host; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header X-Scheme $scheme; - proxy_connect_timeout 1; - proxy_send_timeout 30; - proxy_read_timeout 40; + auth_request /oauth2/auth; + error_page 401 = /oauth2/sign_in; + + # pass information via X-User and X-Email headers to backend, + # requires running with --set-xauthrequest flag + auth_request_set $user $upstream_http_x_auth_request_user; + auth_request_set $email $upstream_http_x_auth_request_email; + proxy_set_header X-User $user; + proxy_set_header X-Email $email; + + # if you enabled --cookie-refresh, this is needed for it to work with auth_request + auth_request_set $auth_cookie $upstream_http_set_cookie; + add_header Set-Cookie $auth_cookie; + + rewrite ^/pipeline-dashboard/(.*) /$1 break; + proxy_pass http://{{ ep_es_host}}:5601; } location /grafana/ { @@ -117,11 +147,6 @@ server { proxy_pass $target; } - location /oauth2/ { - set $target http://logger_oauth:4111; - proxy_pass $target; - } - {% if proxy_prometheus==true %} location /{{prometheus_alertmanager_route_prefix}}/ { set $target http://monitor_alertmanager:9093; @@ -217,7 +242,7 @@ server { proxy_intercept_errors on; add_header Access-Control-Allow-Origin "*"; add_header Access-Control-Allow-Methods GET; - proxy_pass https://$bucket/$url_full; + proxy_pass http://$bucket/$url_full; } @@ -340,4 +365,3 @@ location ~* ^/content-plugins/(.*) { {{ proxy_custom_config }} client_max_body_size 60M; } - From 1c86ce63b9bfa763a2c45baf9cf8db7df53984fa Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Thu, 4 Oct 2018 17:45:25 +0530 Subject: [PATCH 0281/1345] Fix to email regex and convert ip to integer before comparing (#249) * fix: SB-7380 - Removed tabs from config file. Updated logic to check docker version. * fix: SB-5443 - Adding new script to validate the config file. Updated main install file to invoke the validation script. * fix: SB-5443 - Adding execute permissions * fix: SB-5443, SB-7699 - Updated the code as per PR comments, added new logic to validate IP and CIDR * style: ansible format for variables * style: add/update comments * fix: update email regex pattern, check IP if its within net and brod add after converting all to integer * fix: changed to arithmetic compare operator * fix: Adding support to check multinode configuration, iterate array linearly based on keys * fix: Adding support to check multinode db passwords and formatting few blocks for better readability * fix: Removing sunbird default channel from mandatory values --- deploy/validateConfig.sh | 154 +++++++++++++++++++++++++++------------ 1 file changed, 107 insertions(+), 47 deletions(-) diff --git a/deploy/validateConfig.sh b/deploy/validateConfig.sh index 983f4177a3..90079e8b58 100755 --- a/deploy/validateConfig.sh +++ b/deploy/validateConfig.sh @@ -28,7 +28,7 @@ fi check_email(){ key=$1 value=$2 -if ! [[ $value =~ ^([a-zA-Z0-9])*@([a-zA-Z0-9])*\.([a-zA-Z0-9])*$ ]]; then +if ! [[ $value =~ ^([a-zA-Z0-9]).*@([a-zA-Z0-9]).*\.([a-zA-Z0-9]).*$ ]]; then echo -e "\e[0;31m${bold}ERROR - Invalid value for $key. Email must be of the format admin@sunbird.com${normal}" fail=1 fi @@ -39,6 +39,7 @@ fi check_cidr(){ key=$1 value=$2 +cidr_result="OK" IFS="./" read -r ip1 ip2 ip3 ip4 N <<< $value ip=$(($ip1 * 256 ** 3 + $ip2 * 256 ** 2 + $ip3 * 256 + $ip4)) if ! [[ $(($ip % 2**(32-$N))) = 0 ]]; then @@ -54,19 +55,48 @@ check_ip(){ key=$1 value=$2 if [[ ${vals[app_address_space]} != "" && $cidr_result != "fail" ]]; then - IFS="." read -r host_ip1 host_ip2 host_ip3 host_ip4 <<< $value - IFS="./" read -r cidr_ip1 cidr_ip2 cidr_ip3 cidr_ip4 N <<< ${vals[app_address_space]} + + IFS="." read -r hip1 hip2 hip3 hip4 <<< $value + host_ip=$(($hip1 * 256 ** 3 + $hip2 * 256 ** 2 + $hip3 * 256 + $hip4)) + + # Obtain the netmask + IFS="./" read -r cip1 cip2 cip3 cip4 N <<< ${vals[app_address_space]} set -- $(( 5 - ($N / 8))) 255 255 255 255 $(((255 << (8 - ($N % 8))) & 255 )) 0 0 0 [ $1 -gt 1 ] && shift $1 || shift mask=${1-0}.${2-0}.${3-0}.${4-0} - IFS="." read -r mask_ip1 mask_ip2 mask_ip3 mask_ip4 <<< $mask - net_addr=$((cidr_ip1&mask_ip1)).$((cidr_ip2&mask_ip2)).$((cidr_ip3&mask_ip3)).$((cidr_ip4&mask_ip4)) - broad_addr=$((cidr_ip1&mask_ip1^(255-$mask_ip1))).$((cidr_ip2&mask_ip2^(255-$mask_ip2))).$((cidr_ip3&mask_ip3^(255-$mask_ip3))).$((cidr_ip4&mask_ip4^(255-$mask_ip4))) - cidr_trim=$cidr_ip1.$cidr_ip2.$cidr_ip3.$cidr_ip4 - ip_post_mask=$((host_ip1&mask_ip1)).$((host_ip2&mask_ip2)).$((host_ip3&mask_ip3)).$((host_ip4&mask_ip4)) - range_start=$((cidr_ip1&mask_ip1)).$((cidr_ip2&mask_ip2)).$((cidr_ip3&mask_ip3)).$(((cidr_ip4&mask_ip4)+1)) - range_end=$((cidr_ip1&mask_ip1^(255-$mask_ip1))).$((cidr_ip2&mask_ip2^(255-$mask_ip2))).$((cidr_ip3&mask_ip3^(255-$mask_ip3))).$(((cidr_ip4&mask_ip4^(255-$mask_ip4))-1)) - if ! [[ $ip_post_mask == $cidr_trim && $value > $net_addr && $value < $broad_addr ]]; then + IFS="." read -r mip1 mip2 mip3 mip4 <<< $mask + + # Network address - Formula to calculate is cidr ip bitwise AND with mask ip + # Ex: 172.30.0.0 & 255.255.0.0 = 172.30.0.0 (First address) + nip1=$((cip1&mip1)) + nip2=$((cip2&mip2)) + nip3=$((cip3&mip3)) + nip4=$((cip4&mip4)) + net_ip=$(($nip1 * 256 ** 3 + $nip2 * 256 ** 2 + $nip3 * 256 + $nip4)) + + # Broadcast address - Formula to calculate is cidr ip bitwise AND with mask ip then XOR with 255 - mask IP + # Ex: 172.30.0.0 & 255.255.0.0 ^ 0.0.255.255 = 172.30.255.255 (Last address) + bip1=$((cip1&mip1^(255-$mip1))) + bip2=$((cip2&mip2^(255-$mip2))) + bip3=$((cip3&mip3^(255-$mip3))) + bip4=$((cip4&mip4^(255-$mip4))) + broad_ip=$(($bip1 * 256 ** 3 + $bip2 * 256 ** 2 + $bip3 * 256 + $bip4)) + + # Bitwise AND host ip with mask ip to obtain CIDR block. + # Example: 172.30.30.55 & 255.255.0.0 = 172.30.0.0 (CIDR) + hipm1=$((hip1&mip1)) + hipm2=$((hip2&mip2)) + hipm3=$((hip3&mip3)) + hipm4=$((hip4&mip4)) + + cidr_trim=$cip1.$cip2.$cip3.$cip4 + ip_mask=$hipm1.$hipm2.$hipm3.$hipm4 + + range_start=$nip1.$nip2.$nip3.$((nip4 + 1)) + range_end=$bip1.$bip2.$bip3.$((bip4 - 1)) + + + if ! [[ $ip_mask == $cidr_trim && $host_ip -gt $net_ip && $host_ip -lt $broad_ip ]]; then echo -e "\e[0;31m${bold}ERROR - Invalid value for $key. IP address does not belong to the CIDR group. Valid range for given app_address_space is $range_start to $range_end${normal}" fail=1 fi @@ -74,26 +104,23 @@ fi } -# Check if login succeeds to the app and db server using username and private key +# Check if login succeeds to the app, db, es, cass and pg master server using username and private key if values are not null check_login(){ key=$1 value=$2 -app_server=${vals[application_host]} -db_server=${vals[database_host]} username=${vals[ssh_ansible_user]} -app_user=$(ssh -i $value -o StrictHostKeyChecking=no -o ConnectTimeout=1 $username@$app_server whoami 2> /dev/null) -db_user=$(ssh -i $value -o StrictHostKeyChecking=no -o ConnectTimeout=1 $username@$db_server whoami 2> /dev/null) - -if [[ $app_user != $username ]]; then - echo -e "\e[0;31m${bold}ERROR - Login to app server failed. Please check application_host, ssh_ansible_user, ansible_private_key_path${normal}" - fail=1 -fi +for j in ${!arr_hosts[@]} +do + if [[ ${arr_hosts[$j]} != "" ]]; then + login_user=$(ssh -i $value -o StrictHostKeyChecking=no -o ConnectTimeout=1 $username@${arr_hosts[$j]} whoami 2> /dev/null) -if [[ $db_user != $username ]]; then - echo -e "\e[0;31m${bold}ERROR - Login to db server failed. Please check database_host, ssh_ansible_user, ansible_private_key_path${normal}" - fail=1 -fi + if [[ $login_user != $username ]]; then + echo -e "\e[0;31m${bold}ERROR - Login to ${index_keys[$j]} failed. Please check ${index_keys[$j]}, ssh_ansible_user, ansible_private_key_path${normal}" + fail=1 + fi + fi +done } @@ -101,16 +128,20 @@ fi check_sudo(){ key=$1 value=$2 -app_server=${vals[application_host]} -db_server=${vals[database_host]} username=${vals[ssh_ansible_user]} private_key=${vals[ansible_private_key_path]} -result=$(ssh -i $private_key -o StrictHostKeyChecking=no -o ConnectTimeout=1 $username@$app_server "echo $value | sudo -S apt-get check" 2> /dev/null) -if ! [[ $result =~ (Reading|Building) ]]; then - echo -e "\e[0;31m${bold}ERROR - Sudo login failed. Please check the username / password / IP" - fail=1 +for j in ${!arr_hosts[@]} +do + if [[ ${arr_hosts[$j]} != "" ]]; then + result=$(ssh -i $private_key -o StrictHostKeyChecking=no -o ConnectTimeout=1 $username@${arr_hosts[$j]} "echo $value | sudo -S apt-get check" 2> /dev/null) + + if ! [[ $result =~ (Reading|Building) ]]; then + echo -e "\e[0;31m${bold}ERROR - Sudo check failed. Please check the value provided in ssh_ansible_user, $key, ansible_private_key_path, ${index_keys[$j]}${normal}" + fail=1 + fi fi +done } @@ -123,22 +154,25 @@ vals[$key]=$(awk ''/^$key:' /{ if ($2 !~ /#.*/) {print $2}}' config) # Script start. core_install will receive value as "core" from calling script when -s core option is triggered. bold=$(tput bold) normal=$(tput sgr0) +fail=0 if ! [[ $# -eq 0 ]]; then -core_install=$1 + core_install=$1 else -core_install="NA" + core_install="NA" fi echo -e "\e[0;33m${bold}Validating the config file...${normal}" # An array of mandatory values -declare -a arr=("env" "implementation_name" "ssh_ansible_user" "sudo_passwd" "ansible_private_key_path" "application_host" "app_address_space" "dns_name" "proto" "cert_path" \ - "key_path" "database_host" "database_password" "keycloak_admin_password" "sso_password" "trampoline_secret" "backup_storage_key" "badger_admin_password" \ - "badger_admin_email" "ekstep_api_base_url" "ekstep_proxy_base_url" "ekstep_api_key" "sunbird_image_storage_url" "sunbird_azure_storage_key" \ - "sunbird_azure_storage_account" "sunbird_custodian_tenant_name" "sunbird_custodian_tenant_description" "sunbird_custodian_tenant_channel" \ - "sunbird_root_user_firstname" "sunbird_root_user_lastname" "sunbird_root_user_username" "sunbird_root_user_password" "sunbird_root_user_email" \ - "sunbird_root_user_phone" "sunbird_sso_publickey" "sunbird_default_channel") +declare -a arr=("env" "implementation_name" "ssh_ansible_user" "dns_name" "proto" "cert_path" "key_path" "keycloak_admin_password" \ + "sso_password" "trampoline_secret" "backup_storage_key" "badger_admin_password" "badger_admin_email" "ekstep_api_base_url" \ + "ekstep_proxy_base_url" "ekstep_api_key" "sunbird_image_storage_url" "sunbird_azure_storage_key" "sunbird_azure_storage_account" \ + "sunbird_custodian_tenant_name" "sunbird_custodian_tenant_description" "sunbird_custodian_tenant_channel" "sunbird_root_user_firstname" \ + "sunbird_root_user_lastname" "sunbird_root_user_username" "sunbird_root_user_password" "sunbird_root_user_email" "sunbird_root_user_phone" \ + "sunbird_sso_publickey" "app_address_space" "application_host" "database_host" "sudo_passwd" \ + "ansible_private_key_path" "elasticsearch_host" "cassandra_host" "postgres_master_host" "database_password" "postgres_keycloak_password" \ + "postgres_app_password" "postgres_kong_password" "postgres_badger_password" "cassandra_password") # Create and empty array which will store the key and value pair from config file declare -A vals @@ -149,15 +183,19 @@ do get_config_values $i done +# An array of all the IP addresses which we will use to test login and sudo privilege +declare -a arr_hosts=("${vals[application_host]}" "${vals[database_host]}" "${vals[elasticsearch_host]}" "${vals[cassandra_host]}" "${vals[postgres_master_host]}") +declare -a index_keys=("application_host" "database_host" "elasticsearch_host" "cassandra_host" "postgres_master_host") + # Iterate the array of key values and based on key check the validation -for i in ${!vals[@]} +for i in ${arr[@]} do key=$i -value=${vals[$i]} +value=${vals[$key]} case $key in proto) if [[ ! "$value" =~ ^(http|https)$ ]]; then - echo -e "\e[0;31m${bold}ERROR - Invalid value for $key. Valid values are http / https${normal}"; fail=1 + echo -e "\e[0;31m${bold}ERROR - Value for $key cannot be empty. Valid values are http / https${normal}"; fail=1 fi ;; cert_path|key_path) @@ -203,7 +241,7 @@ case $key in check_cidr $key $value fi ;; - application_host|database_host) + application_host) if [[ $value == "" ]]; then echo -e "\e[0;31m${bold}ERROR - Value for $key cannot be empty. Please fill this value${normal}"; fail=1 else @@ -224,20 +262,42 @@ case $key in ;; sunbird_sso_publickey) if [[ $core_install == "core" && $value == "" ]]; then - echo -e "\e[0;31m${bold}ERROR - Value for $key cannot be empty. Please fill this value before running core"; fail=1 + echo -e "\e[0;31m${bold}ERROR - Value for $key cannot be empty. Please fill this value before running core${normal}"; fail=1 fi ;; + database_host) + if [[ $value != "" ]]; then + check_ip $key $value + fi + ;; + elasticsearch_host|cassandra_host|postgres_master_host) + if [[ $value != "" ]]; then + check_ip $key $value + elif [[ $value == "" && ${vals[database_host]} == "" ]]; then + echo -e "\e[0;31m${bold}ERROR - Value for $key cannot be empty. Please fill this value OR provide value for database_host which will be default DB${normal}"; fail=1 + fi + ;; + database_password) + continue + ;; + postgres_keycloak_password|postgres_app_password|postgres_kong_password|postgres_badger_password|cassandra_password) + if [[ ${vals[database_password]} == "" && $value == "" ]]; then + echo -e "\e[0;31m${bold}ERROR - Value for $key is empty. Please provide fill this value OR provide value for database_password which will be default password${normal}"; fail=1 + fi + ;; + *) - if [[ "$value" == "" ]]; then + if [[ $value == "" ]]; then echo -e "\e[0;31m${bold}ERROR - Value for $key cannot be empty. Please fill this value${normal}"; fail=1 fi ;; esac done + # Check if any of the validation failed and exit -if [[ $fail ]]; then - echo -e "\e[0;31m${bold}Config file has errors. Please rectify the issues and rerun${normal}" +if [[ $fail -eq 1 ]]; then + echo -e "\e[0;34m${bold}Config file has errors. Please rectify the issues and rerun${normal}" exit 1 else echo -e "\e[0;32m${bold}Config file successfully validated${normal}" From 20d40a77dbe8c4b392e5d4bb3f06d21110f2a559 Mon Sep 17 00:00:00 2001 From: Amol Ghatol Date: Fri, 5 Oct 2018 15:51:56 +0530 Subject: [PATCH 0282/1345] Issue #SB-7845 chore:Ability to register mobile device credentials (#254) * Issue #SB7310 chore:Onboard Consumer API and Consumer * #SB-6598 chore: Revised sunbird adopter access * Issue #SB-7845 chore:Ability to register mobile device credentials for OpenSaber APP --- ansible/roles/kong-api/defaults/main.yml | 35 +++++++++++++++++++ ansible/roles/kong-consumer/defaults/main.yml | 10 ++++++ 2 files changed, 45 insertions(+) diff --git a/ansible/roles/kong-api/defaults/main.yml b/ansible/roles/kong-api/defaults/main.yml index cecde07273..7a2daf2cc9 100644 --- a/ansible/roles/kong-api/defaults/main.yml +++ b/ansible/roles/kong-api/defaults/main.yml @@ -951,6 +951,41 @@ kong_apis: config.limit_by: credential - name: request-size-limiting config.allowed_payload_size: "{{ small_request_size_limit }}" + + - name: registerMobileAppOpenRAP + request_path: "{{ api_manager_perfix }}/v1/consumer/mobile_app_openrap/credential/register" + upstream_url: "{{ am_util_url }}/v1/consumer/mobile_app_openrap/credential/register" + strip_request_path: true + plugins: + - name: jwt + - name: cors + - "{{ statsd_pulgin }}" + - name: acl + config.whitelist: mobileAdminOpenRAP + - name: rate-limiting + config.policy: local + config.hour: "{{ medium_rate_limit_per_hour }}" + config.limit_by: credential + - name: request-size-limiting + config.allowed_payload_size: "{{ small_request_size_limit }}" + + - name: registerMobileDeviceOpenRAP + request_path: "{{ api_manager_perfix }}/v1/consumer/mobile_device_openrap/credential/register" + upstream_url: "{{ am_util_url }}/v1/consumer/mobile_device_openrap/credential/register" + strip_request_path: true + plugins: + - name: jwt + - name: cors + - "{{ statsd_pulgin }}" + - name: acl + config.whitelist: mobileAppOpenRAP + - name: rate-limiting + config.policy: local + config.hour: "{{ medium_rate_limit_per_hour }}" + config.limit_by: credential + - name: request-size-limiting + config.allowed_payload_size: "{{ small_request_size_limit }}" + - name: compositeSearch request_path: "{{ composite_service_prefix }}/v1/search" upstream_url: "{{ content_service_url }}/v1/search" diff --git a/ansible/roles/kong-consumer/defaults/main.yml b/ansible/roles/kong-consumer/defaults/main.yml index 2c657cde0c..955e7f05c7 100644 --- a/ansible/roles/kong-consumer/defaults/main.yml +++ b/ansible/roles/kong-consumer/defaults/main.yml @@ -126,3 +126,13 @@ kong_consumers: - username: kongAdmin groups: "{{ kong_admin_groups }}" state: present + - username: mobile_admin_openrap + groups: ["mobileAdminOpenRAP"] + save_credentials: true + state: present + - username: mobile_app_openrap + groups: ["mobileAppOpenRAP"] + state: present + - username: mobile_device_openrap + groups: "{{ mobile_device_groups }}" + state: present From 06ba2c8652ada6aa80092a9b9cbfb232c6c047bd Mon Sep 17 00:00:00 2001 From: Manzarul Date: Fri, 5 Oct 2018 17:57:25 +0530 Subject: [PATCH 0283/1345] Issues #SB-00 fix: chnages for unenroll --- ansible/roles/kong-api/defaults/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/kong-api/defaults/main.yml b/ansible/roles/kong-api/defaults/main.yml index 7a2daf2cc9..d55351ca3f 100644 --- a/ansible/roles/kong-api/defaults/main.yml +++ b/ansible/roles/kong-api/defaults/main.yml @@ -351,7 +351,7 @@ kong_apis: config.allowed_payload_size: "{{ small_request_size_limit }}" - name: courseUnEnrolment request_path: "{{ course_service_prefix }}/v1/unenrol" - upstream_url: "{{ learning_service_url }}/v1/course/unenrol" + upstream_url: "{{ learning_service_url }}/v1/course/unenroll" strip_request_path: true plugins: - name: jwt From 4240fcfafbabe95c4a7c1c52b0b1a093f8330086 Mon Sep 17 00:00:00 2001 From: Manzarul Date: Mon, 8 Oct 2018 12:21:25 +0530 Subject: [PATCH 0284/1345] Issues #SB-00 fix:changes unenroll to unenrol in downstream --- ansible/roles/kong-api/defaults/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/kong-api/defaults/main.yml b/ansible/roles/kong-api/defaults/main.yml index d55351ca3f..7a2daf2cc9 100644 --- a/ansible/roles/kong-api/defaults/main.yml +++ b/ansible/roles/kong-api/defaults/main.yml @@ -351,7 +351,7 @@ kong_apis: config.allowed_payload_size: "{{ small_request_size_limit }}" - name: courseUnEnrolment request_path: "{{ course_service_prefix }}/v1/unenrol" - upstream_url: "{{ learning_service_url }}/v1/course/unenroll" + upstream_url: "{{ learning_service_url }}/v1/course/unenrol" strip_request_path: true plugins: - name: jwt From 05ddbc0be75783369b443bfef107b74afc56483f Mon Sep 17 00:00:00 2001 From: Manzarul Date: Mon, 8 Oct 2018 14:06:22 +0530 Subject: [PATCH 0285/1345] Issues #SB-00 fix:changes unenrol to unenroll in downstream --- ansible/roles/kong-api/defaults/main.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ansible/roles/kong-api/defaults/main.yml b/ansible/roles/kong-api/defaults/main.yml index 7a2daf2cc9..3f9d37550f 100644 --- a/ansible/roles/kong-api/defaults/main.yml +++ b/ansible/roles/kong-api/defaults/main.yml @@ -335,7 +335,7 @@ kong_apis: config.allowed_payload_size: "{{ small_request_size_limit }}" - name: courseEnrolment request_path: "{{ course_service_prefix }}/v1/enrol" - upstream_url: "{{ learning_service_url }}/v1/course/enrol" + upstream_url: "{{ learning_service_url }}/v1/course/enroll" strip_request_path: true plugins: - name: jwt @@ -351,7 +351,7 @@ kong_apis: config.allowed_payload_size: "{{ small_request_size_limit }}" - name: courseUnEnrolment request_path: "{{ course_service_prefix }}/v1/unenrol" - upstream_url: "{{ learning_service_url }}/v1/course/unenrol" + upstream_url: "{{ learning_service_url }}/v1/course/unenroll" strip_request_path: true plugins: - name: jwt From fa0ab8d9839f62cd123b6b170368da410ebc0ca1 Mon Sep 17 00:00:00 2001 From: Anoop HM Date: Wed, 10 Oct 2018 14:18:48 +0530 Subject: [PATCH 0286/1345] Issue #SB-5038 feat: redirecting form api to portal form plugin (#250) --- ansible/roles/kong-api/defaults/main.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ansible/roles/kong-api/defaults/main.yml b/ansible/roles/kong-api/defaults/main.yml index 3f9d37550f..6fbef5ba01 100644 --- a/ansible/roles/kong-api/defaults/main.yml +++ b/ansible/roles/kong-api/defaults/main.yml @@ -2983,7 +2983,7 @@ kong_apis: config.allowed_payload_size: "{{ medium_request_size_limit }}" - name: createForm request_path: "{{ data_service_prefix }}/v1/form/create" - upstream_url: "{{ content_service_url }}/v1/data/form/create" + upstream_url: "{{ player_service_url }}/plugin/v1/form/create" strip_request_path: true plugins: - name: jwt @@ -2999,7 +2999,7 @@ kong_apis: config.allowed_payload_size: "{{ medium_request_size_limit }}" - name: updateForm request_path: "{{ data_service_prefix }}/v1/form/update" - upstream_url: "{{ content_service_url }}/v1/data/form/update" + upstream_url: "{{ player_service_url }}/plugin/v1/form/update" strip_request_path: true plugins: - name: jwt @@ -3063,7 +3063,7 @@ kong_apis: config.allowed_payload_size: "{{ small_request_size_limit }}" - name: readForm request_path: "{{ data_service_prefix }}/v1/form/read" - upstream_url: "{{ content_service_url }}/v1/data/form/read" + upstream_url: "{{ player_service_url }}/plugin/v1/form/read" strip_request_path: true plugins: - name: cors From 2f2c1f2bfc9fedcc43a534d9e1a682b8fa7af783 Mon Sep 17 00:00:00 2001 From: S M Y Date: Mon, 1 Oct 2018 11:03:04 +0530 Subject: [PATCH 0287/1345] Issue #000 vars: env vars portal --- ansible/inventories/sample/group_vars/sample | 1 - 1 file changed, 1 deletion(-) diff --git a/ansible/inventories/sample/group_vars/sample b/ansible/inventories/sample/group_vars/sample index 153435d746..ee19327ddc 100644 --- a/ansible/inventories/sample/group_vars/sample +++ b/ansible/inventories/sample/group_vars/sample @@ -346,7 +346,6 @@ sunbird_portal_user_upload_ref_link: http://www.sunbird.org/features-documentati config_service_enabled: false config_refresh_interval: 10 - #learner Vars sunbird_url_shortner_access_token: sunbird_url_shortner_enable: false From e0215f4b95cee4fe9c5edbe897bdc59f56a042d8 Mon Sep 17 00:00:00 2001 From: santhosh-optit <31979949+santhosh-optit@users.noreply.github.com> Date: Wed, 26 Sep 2018 16:30:05 +0530 Subject: [PATCH 0288/1345] Issue #000 adding build number variable --- ansible/roles/stack-sunbird/templates/sunbird_player.env | 1 + 1 file changed, 1 insertion(+) diff --git a/ansible/roles/stack-sunbird/templates/sunbird_player.env b/ansible/roles/stack-sunbird/templates/sunbird_player.env index 351336dffc..4f63bbb25d 100644 --- a/ansible/roles/stack-sunbird/templates/sunbird_player.env +++ b/ansible/roles/stack-sunbird/templates/sunbird_player.env @@ -37,3 +37,4 @@ config_refresh_interval={{config_refresh_interval}} sunbird_build_number={{sunbird_build_number}} config_service_enabled={{config_service_enabled}} config_refresh_interval={{config_refresh_interval}} +sunbird_build_number={{sunbird_build_number}} From da4aa28d56180d912a1637828351ce09a9af7149 Mon Sep 17 00:00:00 2001 From: S M Y Date: Wed, 26 Sep 2018 19:00:58 +0530 Subject: [PATCH 0289/1345] Issue #000 env: Learner env vars --- ansible/inventories/sample/group_vars/sample | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/ansible/inventories/sample/group_vars/sample b/ansible/inventories/sample/group_vars/sample index ee19327ddc..393ff9c0c3 100644 --- a/ansible/inventories/sample/group_vars/sample +++ b/ansible/inventories/sample/group_vars/sample @@ -355,3 +355,7 @@ sunbird_user_profile_field_default_visibility: public #Player Vars config_service_enabled: false config_refresh_interval: 10 + +#learner Vars +sunbird_url_shortner_access_token: +sunbird_url_shortner_enable: false From 16db7373d60f7c896e3fe46188839eb15c62d3ad Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Thu, 11 Oct 2018 16:37:23 +0530 Subject: [PATCH 0290/1345] Run master branch to disable other branch builds (#259) * feat: SB-7716 - Travis CI Nightly builds for Sunbird installation * fix: Removing extra travis file * fix: SB-7885 - Do not delete VM if build fails and build only tags * fix: SB-7885 - Remove master branch checkout code as we will not build master's tip anymore * fix: Updating tags, root org json response retrieval fix * feat: Adding circle ci scripts * fix: remove extra file * fix: remove extra file * style: Remove echos, cleaner output messages, yaml anchors * chore: removing all travis releated scripts * fix: temporary run to disable other branch builds --- .circleci/config.yml | 31 ++++++++++++++++++++----------- 1 file changed, 20 insertions(+), 11 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 26eb0ca65d..229300341c 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -10,8 +10,8 @@ jobs: name: check previous stable release command: | ver=tags/$(git tag | grep "release" | sort -V -r | sed -n 2p) - echo Running installer for $ver - echo export release=$ver >> $BASH_ENV + echo Running installer for tags/release-1.9 + echo export release=tags/release-1.9 >> $BASH_ENV source $BASH_ENV - run: &cli name: configure cli @@ -73,16 +73,25 @@ jobs: workflows: version: 2 - nightly: - triggers: - - schedule: - cron: "0 19 * * *" + run-setup: + jobs: + - previous-stable: + filters: + branches: + only: + - master + - current-stable: + filters: + branches: + only: + - master + - current-dev-branch: + filters: + branches: + only: + - master + - playbook-check: filters: branches: only: - master - jobs: - - previous-stable - - current-stable - - current-dev-branch - - playbook-check From 1c3969ede1536a4f589e92694e13e6d446afa737 Mon Sep 17 00:00:00 2001 From: S M Y Date: Mon, 1 Oct 2018 11:08:00 +0530 Subject: [PATCH 0291/1345] Issue #000 vars: environmental vars portal --- ansible/inventories/sample/group_vars/sample | 2 ++ ansible/roles/stack-sunbird/templates/sunbird_player.env | 2 ++ 2 files changed, 4 insertions(+) diff --git a/ansible/inventories/sample/group_vars/sample b/ansible/inventories/sample/group_vars/sample index 393ff9c0c3..e78243ca48 100644 --- a/ansible/inventories/sample/group_vars/sample +++ b/ansible/inventories/sample/group_vars/sample @@ -359,3 +359,5 @@ config_refresh_interval: 10 #learner Vars sunbird_url_shortner_access_token: sunbird_url_shortner_enable: false +sunbird_keycloak_required_action_link_expiration_seconds: 7200 +sunbird_user_profile_field_default_visibility: public diff --git a/ansible/roles/stack-sunbird/templates/sunbird_player.env b/ansible/roles/stack-sunbird/templates/sunbird_player.env index 4f63bbb25d..f0be3a0ae4 100644 --- a/ansible/roles/stack-sunbird/templates/sunbird_player.env +++ b/ansible/roles/stack-sunbird/templates/sunbird_player.env @@ -38,3 +38,5 @@ sunbird_build_number={{sunbird_build_number}} config_service_enabled={{config_service_enabled}} config_refresh_interval={{config_refresh_interval}} sunbird_build_number={{sunbird_build_number}} +config_service_enabled={{config_service_enabled}} +config_refresh_interval={{config_refresh_interval}} From 32c82d4fb8417e0bd2f20bdf9550e3d8dc43474c Mon Sep 17 00:00:00 2001 From: S M Y Date: Thu, 11 Oct 2018 16:53:21 +0530 Subject: [PATCH 0292/1345] Issue #000 config: My Test Commit --- deploy/sunbird_install.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/deploy/sunbird_install.sh b/deploy/sunbird_install.sh index e4f310521f..5aea29d97c 100755 --- a/deploy/sunbird_install.sh +++ b/deploy/sunbird_install.sh @@ -237,3 +237,4 @@ echo -e \n$(date)\n >> logs/badger.log; badger 2>&1 | tee -a logs/badger.log ## Initialising system echo -e \n$(date)\n >> logs/systeminit.log; systeminit 2>&1 | tee -a logs/systeminit.log + From 16047ceb02129dbd49a63591c1e696b753adad65 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Fri, 12 Oct 2018 07:12:58 +0530 Subject: [PATCH 0293/1345] Scheduling cron for circle CI (#260) * feat: SB-7716 - Travis CI Nightly builds for Sunbird installation * fix: Removing extra travis file * fix: SB-7885 - Do not delete VM if build fails and build only tags * fix: SB-7885 - Remove master branch checkout code as we will not build master's tip anymore * fix: Updating tags, root org json response retrieval fix * feat: Adding circle ci scripts * fix: remove extra file * fix: remove extra file * style: Remove echos, cleaner output messages, yaml anchors * chore: removing all travis releated scripts * fix: temporary run to disable other branch builds * feat: SB-7983, SB-7984 - Scheduling cron back * Revert "feat: SB-7983, SB-7984 - Scheduling cron back" This reverts commit 6164a41dd65742680888f5c951b7bef9e61ecfc0. * Revert "fix: temporary run to disable other branch builds" This reverts commit 7651af690e8c78baab64d73e178208ec4b169148. * feat: SB-7983, SB-7984 - Scheduling cron back --- .circleci/config.yml | 27 +++++++++------------------ 1 file changed, 9 insertions(+), 18 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 229300341c..91b6015dd6 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -73,25 +73,16 @@ jobs: workflows: version: 2 - run-setup: - jobs: - - previous-stable: - filters: - branches: - only: - - master - - current-stable: - filters: - branches: - only: - - master - - current-dev-branch: - filters: - branches: - only: - - master - - playbook-check: + nightly: + triggers: + - schedule: + cron: "0 19 * * *" filters: branches: only: - master + jobs: + - previous-stable + - current-stable + - current-dev-branch + - playbook-check From f1c85aa8b7a980acc7096d373c9ded1de6e52ad6 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Mon, 8 Oct 2018 11:34:18 +0530 Subject: [PATCH 0294/1345] Added tab configs --- deploy/sunbird_install.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/deploy/sunbird_install.sh b/deploy/sunbird_install.sh index e4f310521f..f5802190cc 100755 --- a/deploy/sunbird_install.sh +++ b/deploy/sunbird_install.sh @@ -1,4 +1,5 @@ #!/bin/bash +# vim: set ts=4 et: #--------------------------------------------------------------------------------------------------------# # This script installs and configures sunbird according to the confugurations specified in config file From db5f5f0d8280219c2a1d97e35c231b2323bf32e8 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Tue, 16 Oct 2018 11:46:35 +0530 Subject: [PATCH 0295/1345] Issue #0000 feat: Fixed nginx oauth hadrd deps --- .../stack-proxy/templates/proxy-default.conf | 22 ++++++++++--------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/ansible/roles/stack-proxy/templates/proxy-default.conf b/ansible/roles/stack-proxy/templates/proxy-default.conf index 91c36dd55d..74f14547b5 100644 --- a/ansible/roles/stack-proxy/templates/proxy-default.conf +++ b/ansible/roles/stack-proxy/templates/proxy-default.conf @@ -86,27 +86,29 @@ server { # Oauth2 config location /oauth2/ { - proxy_pass http://oauth:4111; + set $target http://oauth:4111; + proxy_pass $target; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Scheme $scheme; proxy_set_header X-Auth-Request-Redirect $request_uri; - } - + } + location = /oauth2/auth { - proxy_pass http://oauth:4111; + set $target http://oauth:4111; + proxy_pass $target; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Scheme $scheme; # nginx auth_request includes headers but not body - proxy_set_header Content-Length ""; + proxy_set_header Content-Length ""; proxy_pass_request_body off; - } - + } + location /dashboard/ { auth_request /oauth2/auth; error_page 401 = /oauth2/sign_in; - + # pass information via X-User and X-Email headers to backend, # requires running with --set-xauthrequest flag auth_request_set $user $upstream_http_x_auth_request_user; @@ -118,14 +120,14 @@ server { auth_request_set $auth_cookie $upstream_http_set_cookie; add_header Set-Cookie $auth_cookie; + set $target http://kibana:5601; rewrite ^/dashboard/(.*) /$1 break; - proxy_pass http://kibana:5601; + proxy_pass $target; } location /pipeline-dashboard/ { auth_request /oauth2/auth; error_page 401 = /oauth2/sign_in; - # pass information via X-User and X-Email headers to backend, # requires running with --set-xauthrequest flag auth_request_set $user $upstream_http_x_auth_request_user; From 5b00c3dd3a1d5cc6f5bb48593ac40cd3e942eecc Mon Sep 17 00:00:00 2001 From: S M Y Date: Tue, 16 Oct 2018 15:42:19 +0530 Subject: [PATCH 0296/1345] Issue #000 proxy: proxy issue with log --- ansible/roles/stack-proxy/tasks/main.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/ansible/roles/stack-proxy/tasks/main.yml b/ansible/roles/stack-proxy/tasks/main.yml index 75f7a442e1..82ac27d507 100644 --- a/ansible/roles/stack-proxy/tasks/main.yml +++ b/ansible/roles/stack-proxy/tasks/main.yml @@ -56,6 +56,7 @@ - name: Create docker secrets {{ item.name }} shell: "echo '{{item.value}}' | docker secret create {{item.name}} -" with_items: "{{ proxy_secrets }}" + ignore_errors: true no_log: true - name: Remove old nginx.conf docker config From c598cb67bb966a3b2579003667c119905beb926a Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Tue, 16 Oct 2018 15:59:19 +0530 Subject: [PATCH 0297/1345] Issue #0000 feat: fix proxy redirect --- ansible/roles/stack-proxy/templates/proxy-default.conf | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ansible/roles/stack-proxy/templates/proxy-default.conf b/ansible/roles/stack-proxy/templates/proxy-default.conf index 74f14547b5..087c0618f5 100644 --- a/ansible/roles/stack-proxy/templates/proxy-default.conf +++ b/ansible/roles/stack-proxy/templates/proxy-default.conf @@ -122,7 +122,7 @@ server { set $target http://kibana:5601; rewrite ^/dashboard/(.*) /$1 break; - proxy_pass $target; + proxy_pass $target$1; } location /pipeline-dashboard/ { @@ -140,7 +140,8 @@ server { add_header Set-Cookie $auth_cookie; rewrite ^/pipeline-dashboard/(.*) /$1 break; - proxy_pass http://{{ ep_es_host}}:5601; + set $target http://{{ ep_es_host}}:5601; + proxy_pass $target$1; } location /grafana/ { @@ -346,7 +347,6 @@ location ~* ^/content-plugins/(.*) { proxy_send_timeout 60; proxy_read_timeout 70; proxy_set_header X-Forwarded-Proto $scheme; - # root /usr/share/nginx/www; } location / { From b004e87b0b97afaef3b77487f347cf022cb91450 Mon Sep 17 00:00:00 2001 From: S M Y Date: Tue, 16 Oct 2018 16:12:22 +0530 Subject: [PATCH 0298/1345] Issue #000 ver: Updating the versions of dockerhub images --- deploy/version.env | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/deploy/version.env b/deploy/version.env index 1a5fd07df8..4e6ac911e3 100755 --- a/deploy/version.env +++ b/deploy/version.env @@ -1,8 +1,8 @@ -PLAYER_VERSION=1.10.0-gold -CONTENT_SERVICE_VERSION=1.10.0-gold -LEARNER_SERVICE_VERSION=1.10.0-gold +PLAYER_VERSION=1.11.0-gold +CONTENT_SERVICE_VERSION=1.11.0-gold +LEARNER_SERVICE_VERSION=1.11.0-gold PROXY_VERSION=1.8.0-gold BADGER_SERVICE_VERSION=1.8.0-gold KONG_VERSION=1.8.0-gold TELEMETRY_SERVICE_VERSION=1.10.0-gold -CONFIG_SERVICE_VERSION=1.10.0-silver +CONFIG_SERVICE_VERSION=1.11.0-silver From 8578849fcf4c0574d6feea981424cd497b44c086 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Tue, 16 Oct 2018 16:16:32 +0530 Subject: [PATCH 0299/1345] Issue #0000 feat: Fix proxy redirection for oauth --- .../stack-proxy/templates/proxy-default.conf | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/ansible/roles/stack-proxy/templates/proxy-default.conf b/ansible/roles/stack-proxy/templates/proxy-default.conf index 087c0618f5..43a3ddc0ec 100644 --- a/ansible/roles/stack-proxy/templates/proxy-default.conf +++ b/ansible/roles/stack-proxy/templates/proxy-default.conf @@ -109,6 +109,9 @@ server { auth_request /oauth2/auth; error_page 401 = /oauth2/sign_in; + # Setting target url + auth_request_set $target http://kibana:5601; + # pass information via X-User and X-Email headers to backend, # requires running with --set-xauthrequest flag auth_request_set $user $upstream_http_x_auth_request_user; @@ -119,15 +122,18 @@ server { # if you enabled --cookie-refresh, this is needed for it to work with auth_request auth_request_set $auth_cookie $upstream_http_set_cookie; add_header Set-Cookie $auth_cookie; - - set $target http://kibana:5601; rewrite ^/dashboard/(.*) /$1 break; - proxy_pass $target$1; + proxy_pass $target; + } location /pipeline-dashboard/ { auth_request /oauth2/auth; error_page 401 = /oauth2/sign_in; + + # Setting Target url + auth_request_set $target http://{{ ep_es_host}}:5601; + # pass information via X-User and X-Email headers to backend, # requires running with --set-xauthrequest flag auth_request_set $user $upstream_http_x_auth_request_user; @@ -140,8 +146,8 @@ server { add_header Set-Cookie $auth_cookie; rewrite ^/pipeline-dashboard/(.*) /$1 break; - set $target http://{{ ep_es_host}}:5601; - proxy_pass $target$1; + proxy_pass $target; + } location /grafana/ { From 4ab763dbd88f14f43bf286c198e1f6e0a35b5507 Mon Sep 17 00:00:00 2001 From: S M Y Date: Tue, 16 Oct 2018 19:43:16 +0530 Subject: [PATCH 0300/1345] Issue #000 vars: Adding Missing Variables for api upstream --- ansible/inventories/sample/group_vars/sample | 1 + 1 file changed, 1 insertion(+) diff --git a/ansible/inventories/sample/group_vars/sample b/ansible/inventories/sample/group_vars/sample index e5d094f796..96447459a5 100644 --- a/ansible/inventories/sample/group_vars/sample +++ b/ansible/inventories/sample/group_vars/sample @@ -354,3 +354,4 @@ sunbird_user_profile_field_default_visibility: public #Player Vars config_service_enabled: false config_refresh_interval: 10 +sunbird_analytics_api_base_url: "{{ekstep_api_base_url}}" From 9eee35852ab94f8ebbd1b0be7f1b377d20d6a578 Mon Sep 17 00:00:00 2001 From: S M Y Date: Thu, 18 Oct 2018 12:30:45 +0530 Subject: [PATCH 0301/1345] Issue #000 java: increasing wait timeout for installing java8 installation --- ansible/roles/java8/tasks/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/java8/tasks/main.yml b/ansible/roles/java8/tasks/main.yml index 1d238a06cb..43c4244424 100644 --- a/ansible/roles/java8/tasks/main.yml +++ b/ansible/roles/java8/tasks/main.yml @@ -11,7 +11,7 @@ - provision - name: Update APT package cache - action: apt update_cache=yes cache_valid_time=3600 + action: apt update_cache=yes cache_valid_time=36000 become: yes tags: - provision From cef6dd8baaa88d721562d5796ad53524b5a7f22d Mon Sep 17 00:00:00 2001 From: S M Y Date: Thu, 18 Oct 2018 12:31:32 +0530 Subject: [PATCH 0302/1345] Issue #000 api: increasing wait timeout for api manager to be fully functional --- ansible/roles/kong-api/tasks/main.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/ansible/roles/kong-api/tasks/main.yml b/ansible/roles/kong-api/tasks/main.yml index a5dde29feb..3187857905 100644 --- a/ansible/roles/kong-api/tasks/main.yml +++ b/ansible/roles/kong-api/tasks/main.yml @@ -21,5 +21,9 @@ retries: 60 delay: 5 +- name: waiting for 30 seconds for api manager to be fully functional + pause: + seconds: 30 + - name: Run script to save apis shell: "python /tmp/kong-api-scripts/kong_apis.py /tmp/kong_apis.json --kong-admin-api-url={{ kong_admin_api_url }}" From cfda0b0b8f9f0f2fddb2a2c1cbebd47d235d107d Mon Sep 17 00:00:00 2001 From: Manzarul Date: Mon, 22 Oct 2018 15:39:10 +0530 Subject: [PATCH 0303/1345] Issues #SB-00 fix: updateSetting is added multiple times --- ansible/roles/kong-api/defaults/main.yml | 22 ---------------------- 1 file changed, 22 deletions(-) diff --git a/ansible/roles/kong-api/defaults/main.yml b/ansible/roles/kong-api/defaults/main.yml index 6fbef5ba01..e47b0ee475 100644 --- a/ansible/roles/kong-api/defaults/main.yml +++ b/ansible/roles/kong-api/defaults/main.yml @@ -3275,28 +3275,6 @@ kong_apis: - {name: 'acl', config.whitelist: 'publicUser'} - {name: 'rate-limiting', config.policy: "local", config.hour: "{{ large_rate_limit_per_hour }}"} - {name: 'request-size-limiting', config.allowed_payload_size: "{{ small_request_size_limit }}" } - - name: "updateSystemSettings" - request_path: "{{ data_service_prefix }}/v1/system/settings" - upstream_url: "{{ learning_service_url }}/v1/system/settings" - strip_request_path: true - plugins: - - {name: 'jwt'} - - {name: 'cors'} - - {name: 'statsd', config.metrics: "{{ statsd_metrics }}" } - - {name: 'acl', config.whitelist: 'dataAdmin'} - - {name: 'rate-limiting', config.policy: "local", config.hour: "{{ large_rate_limit_per_hour }}"} - - {name: 'request-size-limiting', config.allowed_payload_size: "{{ small_request_size_limit }}" } - - name: "updateSystemSettings" - request_path: "{{ data_service_prefix }}/v1/system/settings" - upstream_url: "{{ learning_service_url }}/v1/system/settings" - strip_request_path: true - plugins: - - {name: 'jwt'} - - {name: 'cors'} - - {name: 'statsd', config.metrics: "{{ statsd_metrics }}" } - - {name: 'acl', config.whitelist: 'dataAdmin'} - - {name: 'rate-limiting', config.policy: "local", config.hour: "{{ medium_rate_limit_per_hour }}"} - - {name: 'request-size-limiting', config.allowed_payload_size: "{{ small_request_size_limit }}" } - name: "addSystemSettings" request_path: "{{ data_service_prefix }}/v1/system/setting/set" upstream_url: "{{ learning_service_url }}/v1/system/setting/set" From 2774dddce61f0c1850ff407b4b6b10d925b4d315 Mon Sep 17 00:00:00 2001 From: S M Y Date: Mon, 22 Oct 2018 17:47:56 +0530 Subject: [PATCH 0304/1345] Issue #000 monitor: adding postgresql monitoring for adaptors --- ansible/roles/stack-monitor/tasks/main.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ansible/roles/stack-monitor/tasks/main.yml b/ansible/roles/stack-monitor/tasks/main.yml index 1abe596a6b..8e40ad359f 100644 --- a/ansible/roles/stack-monitor/tasks/main.yml +++ b/ansible/roles/stack-monitor/tasks/main.yml @@ -31,7 +31,7 @@ mode=0644 with_items: - "{{ monitor_config_templates_postgres }}" - when: groups['postgres-master'] is defined + when: groups['postgresql-master'] is defined - name: Remove monitor stack shell: "docker stack rm monitor" @@ -46,18 +46,18 @@ shell: "docker config rm {{ item }}" with_items: "{{ monitor_config_templates_postgres }}" ignore_errors: yes - when: groups['postgres-master'] is defined + when: groups['postgresql-master'] is defined - name: Save docker config {{ item }} shell: "docker config create {{ item }} {{ monitor_config_files_dest_dir }}/{{ item }}" with_items: "{{ monitor_config_templates }}" - #when: (item.value == postgresmasterqueries.yml and groups['postgres-master'] is defined) or (item.value == postgresslavequeries.yml and groups['postgres-master'] is defined) or (item.value != postgresmasterqueries.yml or item.value != postgresslavequeries.yml) + #when: (item.value == postgresmasterqueries.yml and groups['postgresql-master'] is defined) or (item.value == postgresslavequeries.yml and groups['postgresql-master'] is defined) or (item.value != postgresmasterqueries.yml or item.value != postgresslavequeries.yml) #ignore_errors: yes - name: Save docker config for postgres {{ item }} shell: "docker config create {{ item }} {{ monitor_config_files_dest_dir }}/{{ item }}" with_items: "{{ monitor_config_templates_postgres }}" - when: groups['postgres-master'] is defined + when: groups['postgresql-master'] is defined - name: Deploy stack shell: "docker stack deploy -c monitor.yml monitor" From df32ca65e311c023eeadc4085190e111f0085afe Mon Sep 17 00:00:00 2001 From: smy <30286162+SMYALTAMASH@users.noreply.github.com> Date: Tue, 23 Oct 2018 10:49:14 +0530 Subject: [PATCH 0305/1345] Config filename updation (#263) * Issue #000 config: Renaming config file and changing all the dependencies * Issue #000 config: renaming config fle * Issue #000 config: changing config-file name in validateconfig.sh file --- deploy/bootstrap-keycloak.sh | 2 +- deploy/{config => config.yml} | 0 deploy/deploy-apis.sh | 10 +++++----- deploy/deploy-badger.sh | 2 +- deploy/deploy-core.sh | 12 ++++++------ deploy/deploy-keycloak-vm.sh | 2 +- deploy/deploy-logger.sh | 2 +- deploy/deploy-monitor.sh | 3 +-- deploy/deploy-proxy.sh | 4 ++-- deploy/deploy-telemetry.sh | 2 +- deploy/init-dbs.sh | 6 +++--- deploy/install-dbs.sh | 6 +++--- deploy/provision-keycloak.sh | 2 +- deploy/sunbird_install.sh | 24 ++++++++++++------------ deploy/sunbird_upgrade.sh | 6 +++--- deploy/system-init.sh | 2 +- deploy/validateConfig.sh | 2 +- 17 files changed, 43 insertions(+), 44 deletions(-) rename deploy/{config => config.yml} (100%) diff --git a/deploy/bootstrap-keycloak.sh b/deploy/bootstrap-keycloak.sh index 61779090f2..8ee5d48028 100755 --- a/deploy/bootstrap-keycloak.sh +++ b/deploy/bootstrap-keycloak.sh @@ -11,4 +11,4 @@ INVENTORY_PATH=$1 #Deploy keycloak echo "@@@@@@@@@ Keycloak " -ansible-playbook -i $INVENTORY_PATH ../ansible/keycloak.yml -c local --tags keycloak-bootstrap --extra-vars=@config +ansible-playbook -i $INVENTORY_PATH ../ansible/keycloak.yml -c local --tags keycloak-bootstrap --extra-vars=@config.yml diff --git a/deploy/config b/deploy/config.yml similarity index 100% rename from deploy/config rename to deploy/config.yml diff --git a/deploy/deploy-apis.sh b/deploy/deploy-apis.sh index 072ae51664..360a747751 100755 --- a/deploy/deploy-apis.sh +++ b/deploy/deploy-apis.sh @@ -18,15 +18,15 @@ ADMIN_UTILS_VERSION=0.0.1-SNAPSHOT-gold # Bootstrap swarm echo "@@@@@@@@@ Bootstrap swarm" -ansible-playbook -i $INVENTORY_PATH ../ansible/bootstrap.yml --extra-vars "hosts=swarm-manager" --tags bootstrap_swarm --extra-vars=@config +ansible-playbook -i $INVENTORY_PATH ../ansible/bootstrap.yml --extra-vars "hosts=swarm-manager" --tags bootstrap_swarm --extra-vars=@config.yml # Deploy API Manager echo "@@@@@@@@@ Deploy API Manager" -ansible-playbook -i $INVENTORY_PATH ../ansible/deploy.yml --tags "stack-api-manager" --extra-vars "hub_org=${ORG} echo_server_image_name=echo-server echo_server_image_tag=${ECHO_SERVER_VERSION} kong_version=${KONG_VERSION}" --extra-vars=@config +ansible-playbook -i $INVENTORY_PATH ../ansible/deploy.yml --tags "stack-api-manager" --extra-vars "hub_org=${ORG} echo_server_image_name=echo-server echo_server_image_tag=${ECHO_SERVER_VERSION} kong_version=${KONG_VERSION}" --extra-vars=@config.yml # Deploy Admin Utils API echo "@@@@@@@@@ Deploy Admin Utils API" -ansible-playbook -i $INVENTORY_PATH ../ansible/deploy.yml --tags "stack-adminutil" --extra-vars "hub_org=${ORG} image_name=adminutil image_tag=${ADMIN_UTILS_VERSION}" --extra-vars=@config +ansible-playbook -i $INVENTORY_PATH ../ansible/deploy.yml --tags "stack-adminutil" --extra-vars "hub_org=${ORG} image_name=adminutil image_tag=${ADMIN_UTILS_VERSION}" --extra-vars=@config.yml sleep 10 @@ -47,8 +47,8 @@ done # Onboard APIs echo "@@@@@@@@@ Onboard APIs" -ansible-playbook -i $INVENTORY_PATH ../ansible/api-manager.yml --tags kong-api --extra-vars kong_admin_api_url=http://$kong_admin_api_url:8001 --extra-vars=@config +ansible-playbook -i $INVENTORY_PATH ../ansible/api-manager.yml --tags kong-api --extra-vars kong_admin_api_url=http://$kong_admin_api_url:8001 --extra-vars=@config.yml # Onboard Consumers echo "@@@@@@@@@ Onboard Consumers" -ansible-playbook -v -i $INVENTORY_PATH ../ansible/api-manager.yml --tags kong-consumer --extra-vars kong_admin_api_url=http://$kong_admin_api_url:8001 --extra-vars=@config +ansible-playbook -v -i $INVENTORY_PATH ../ansible/api-manager.yml --tags kong-consumer --extra-vars kong_admin_api_url=http://$kong_admin_api_url:8001 --extra-vars=@config.yml diff --git a/deploy/deploy-badger.sh b/deploy/deploy-badger.sh index c21bc07ffa..8ed4efe0ec 100755 --- a/deploy/deploy-badger.sh +++ b/deploy/deploy-badger.sh @@ -14,4 +14,4 @@ source version.env #Deploy Badger echo "@@@@@@@@@ Badger " -ansible-playbook -i $inventory_path ../ansible/deploy-badger.yml --extra-vars=@config --extra-vars "hub_org=${org} image_name=badger image_tag=${BADGER_SERVICE_VERSION}" +ansible-playbook -i $inventory_path ../ansible/deploy-badger.yml --extra-vars=@config.yml --extra-vars "hub_org=${org} image_name=badger image_tag=${BADGER_SERVICE_VERSION}" diff --git a/deploy/deploy-core.sh b/deploy/deploy-core.sh index 153b1a1b13..f5c9fc1a7f 100755 --- a/deploy/deploy-core.sh +++ b/deploy/deploy-core.sh @@ -18,11 +18,11 @@ sunbird_api_auth_token=$(cat ~/jwt_token_player.txt|sed 's/ //g') # Bootstrap swarm echo "@@@@@@@@@ Bootstrap swarm" -ansible-playbook -i $INVENTORY_PATH ../ansible/bootstrap.yml --extra-vars "hosts=swarm-manager" --tags bootstrap_swarm --extra-vars @config +ansible-playbook -i $INVENTORY_PATH ../ansible/bootstrap.yml --extra-vars "hosts=swarm-manager" --tags bootstrap_swarm --extra-vars @config.yml # Re-deploying badger service echo "Redeploy Badger service" -ansible-playbook -i $INVENTORY_PATH ../ansible/deploy-badger.yml --extra-vars=@config --extra-vars "hub_org=${ORG} image_name=badger image_tag=${BADGER_SERVICE_VERSION}" +ansible-playbook -i $INVENTORY_PATH ../ansible/deploy-badger.yml --extra-vars=@config.yml --extra-vars "hub_org=${ORG} image_name=badger image_tag=${BADGER_SERVICE_VERSION}" [ -f ~/badger_token.txt ] || echo "badger auth token (~/badger_token.txt) not found" || exit 1 badger_token=$(cat ~/badger_token.txt | cut -d '"' -f 4) @@ -30,17 +30,17 @@ badger_token=$(cat ~/badger_token.txt | cut -d '"' -f 4) # Re-deploy Player service echo "@@@@@@@@@ Redeploy player service" -ansible-playbook -i $INVENTORY_PATH ../ansible/deploy.yml --tags "stack-sunbird" --extra-vars "hub_org=${ORG} image_name=player image_tag=${PLAYER_VERSION} service_name=player deploy_stack=True sunbird_api_auth_token=${sunbird_api_auth_token} vault_badging_authorization_key=${badger_token}" --extra-vars @config +ansible-playbook -i $INVENTORY_PATH ../ansible/deploy.yml --tags "stack-sunbird" --extra-vars "hub_org=${ORG} image_name=player image_tag=${PLAYER_VERSION} service_name=player deploy_stack=True sunbird_api_auth_token=${sunbird_api_auth_token} vault_badging_authorization_key=${badger_token}" --extra-vars @config.yml # Re-deploy Learner service echo "Redeploy learner service" -ansible-playbook -i $INVENTORY_PATH ../ansible/deploy.yml --tags "stack-sunbird" --extra-vars "hub_org=${ORG} image_name=learner_service image_tag=${LEARNER_SERVICE_VERSION} service_name=learner-service deploy_learner=True sunbird_api_auth_token=${sunbird_api_auth_token} vault_badging_authorization_key=${badger_token}" --extra-vars @config -v +ansible-playbook -i $INVENTORY_PATH ../ansible/deploy.yml --tags "stack-sunbird" --extra-vars "hub_org=${ORG} image_name=learner_service image_tag=${LEARNER_SERVICE_VERSION} service_name=learner-service deploy_learner=True sunbird_api_auth_token=${sunbird_api_auth_token} vault_badging_authorization_key=${badger_token}" --extra-vars @config.yml -v # Re-deploy Content service echo "Redeploy content service" -ansible-playbook -i $INVENTORY_PATH ../ansible/deploy.yml --tags "stack-sunbird" --extra-vars "hub_org=${ORG} image_name=content-service image_tag=${CONTENT_SERVICE_VERSION} service_name=content-service deploy_content=True sunbird_api_auth_token=${sunbird_api_auth_token} vault_badging_authorization_key=${badger_token}" --extra-vars @config +ansible-playbook -i $INVENTORY_PATH ../ansible/deploy.yml --tags "stack-sunbird" --extra-vars "hub_org=${ORG} image_name=content-service image_tag=${CONTENT_SERVICE_VERSION} service_name=content-service deploy_content=True sunbird_api_auth_token=${sunbird_api_auth_token} vault_badging_authorization_key=${badger_token}" --extra-vars @config.yml #Telemetry-Service echo "Redeploy Telemetry service" -ansible-playbook -i $INVENTORY_PATH ../ansible/deploy.yml --tags "stack-sunbird" --extra-vars "hub_org=${ORG} image_name=telemetry-service image_tag=${TELEMETRY_SERVICE_VERSION} service_name=telemetry-service deploy_telemetry=True" --extra-vars @config +ansible-playbook -i $INVENTORY_PATH ../ansible/deploy.yml --tags "stack-sunbird" --extra-vars "hub_org=${ORG} image_name=telemetry-service image_tag=${TELEMETRY_SERVICE_VERSION} service_name=telemetry-service deploy_telemetry=True" --extra-vars @config.yml diff --git a/deploy/deploy-keycloak-vm.sh b/deploy/deploy-keycloak-vm.sh index 0c3f440c60..18effe0214 100755 --- a/deploy/deploy-keycloak-vm.sh +++ b/deploy/deploy-keycloak-vm.sh @@ -11,4 +11,4 @@ INVENTORY_PATH=$1 #Deploy keycloak echo "@@@@@@@@@ Keycloak " -ansible-playbook -i $INVENTORY_PATH ../ansible/keycloak.yml --tags deploy --extra-vars=@config +ansible-playbook -i $INVENTORY_PATH ../ansible/keycloak.yml --tags deploy --extra-vars=@config.yml diff --git a/deploy/deploy-logger.sh b/deploy/deploy-logger.sh index 6344a5d181..3c59fddfc3 100755 --- a/deploy/deploy-logger.sh +++ b/deploy/deploy-logger.sh @@ -10,4 +10,4 @@ fi INVENTORY_PATH=$1 #Deploy logger -ansible-playbook -i $INVENTORY_PATH ../ansible/logging.yml --extra-vars @config \ No newline at end of file +ansible-playbook -i $INVENTORY_PATH ../ansible/logging.yml --extra-vars @config.yml diff --git a/deploy/deploy-monitor.sh b/deploy/deploy-monitor.sh index ad88458895..29e6aef024 100755 --- a/deploy/deploy-monitor.sh +++ b/deploy/deploy-monitor.sh @@ -10,5 +10,4 @@ fi INVENTORY_PATH=$1 #Deploy monitor -ansible-playbook -i $INVENTORY_PATH ../ansible/monitoring.yml --extra-vars @config - +ansible-playbook -i $INVENTORY_PATH ../ansible/monitoring.yml --extra-vars @config.yml diff --git a/deploy/deploy-proxy.sh b/deploy/deploy-proxy.sh index c19dd5f7a7..daef0374e3 100755 --- a/deploy/deploy-proxy.sh +++ b/deploy/deploy-proxy.sh @@ -15,8 +15,8 @@ source version.env # Bootstrap swarm echo "@@@@@@@@@ Bootstrap swarm" -ansible-playbook -i $INVENTORY_PATH ../ansible/bootstrap.yml --extra-vars "hosts=swarm-manager" --tags bootstrap_swarm --extra-vars=@config +ansible-playbook -i $INVENTORY_PATH ../ansible/bootstrap.yml --extra-vars "hosts=swarm-manager" --tags bootstrap_swarm --extra-vars=@config.yml # Re-deploy Proxy echo "Redeploy Proxy" -ansible-playbook -i $INVENTORY_PATH ../ansible/deploy.yml --tags "stack-proxy" --extra-vars "hub_org=${ORG} image_name=proxy image_tag=${PROXY_VERSION}" --extra-vars=@config +ansible-playbook -i $INVENTORY_PATH ../ansible/deploy.yml --tags "stack-proxy" --extra-vars "hub_org=${ORG} image_name=proxy image_tag=${PROXY_VERSION}" --extra-vars=@config.yml diff --git a/deploy/deploy-telemetry.sh b/deploy/deploy-telemetry.sh index 148afbb8aa..5039ad751c 100755 --- a/deploy/deploy-telemetry.sh +++ b/deploy/deploy-telemetry.sh @@ -16,5 +16,5 @@ source version.env echo "Redeploy telemetry service" -ansible-playbook -i $INVENTORY_PATH ../ansible/deploy.yml --tags "stack-sunbird" --extra-vars "hub_org=${ORG} image_name=telemetry-service image_tag=${TELEMETRY_SERVICE_VERSION} service_name=telemetry-service deploy_telemetry=True" --extra-vars @config +ansible-playbook -i $INVENTORY_PATH ../ansible/deploy.yml --tags "stack-sunbird" --extra-vars "hub_org=${ORG} image_name=telemetry-service image_tag=${TELEMETRY_SERVICE_VERSION} service_name=telemetry-service deploy_telemetry=True" --extra-vars @config.yml diff --git a/deploy/init-dbs.sh b/deploy/init-dbs.sh index 7d872fcd67..6025073d96 100755 --- a/deploy/init-dbs.sh +++ b/deploy/init-dbs.sh @@ -11,14 +11,14 @@ INVENTORY_PATH=$1 # Cassandra installation echo "@@@@@@@@@ Cassandra data" -ansible-playbook -i $INVENTORY_PATH ../ansible/cassandra-data.yml --extra-vars=@config +ansible-playbook -i $INVENTORY_PATH ../ansible/cassandra-data.yml --extra-vars=@config.yml # Postgresql installation echo "@@@@@@@@@ Postgresql data" -ansible-playbook -i $INVENTORY_PATH ../ansible/postgresql-data-update.yml --extra-vars=@config +ansible-playbook -i $INVENTORY_PATH ../ansible/postgresql-data-update.yml --extra-vars=@config.yml # Elasticsearch installation echo "@@@@@@@@@ Postgresql data" -ansible-playbook -i $INVENTORY_PATH ../ansible/curl_commands.yml --extra-vars=@config +ansible-playbook -i $INVENTORY_PATH ../ansible/curl_commands.yml --extra-vars=@config.yml diff --git a/deploy/install-dbs.sh b/deploy/install-dbs.sh index e446ae785b..2cc6e8bef2 100755 --- a/deploy/install-dbs.sh +++ b/deploy/install-dbs.sh @@ -12,12 +12,12 @@ ignore_folder=.sunbird/ignore #Elasticsearch installation echo "@@@@@@@@@ Elasticsearch installation" -ansible-playbook -i $INVENTORY_PATH ../ansible/provision.yml --tags es --extra-vars=@config +ansible-playbook -i $INVENTORY_PATH ../ansible/provision.yml --tags es --extra-vars=@config.yml # Cassandra installation echo "@@@@@@@@@ Cassandra installation" -ansible-playbook -i $INVENTORY_PATH ../ansible/provision.yml --tags cassandra --extra-vars=@config +ansible-playbook -i $INVENTORY_PATH ../ansible/provision.yml --tags cassandra --extra-vars=@config.yml # Postgresql-master installation echo "@@@@@@@@@ Postgresql-master installation" -ansible-playbook -i $INVENTORY_PATH ../ansible/provision.yml --tags postgresql-master --extra-vars=@config +ansible-playbook -i $INVENTORY_PATH ../ansible/provision.yml --tags postgresql-master --extra-vars=@config.yml diff --git a/deploy/provision-keycloak.sh b/deploy/provision-keycloak.sh index 5082de41c3..7044177629 100755 --- a/deploy/provision-keycloak.sh +++ b/deploy/provision-keycloak.sh @@ -11,4 +11,4 @@ INVENTORY_PATH=$1 #Keycloak installation echo "@@@@@@@@@ Keycloak " -ansible-playbook -i $INVENTORY_PATH ../ansible/keycloak.yml --tags provision --extra-vars=@config +ansible-playbook -i $INVENTORY_PATH ../ansible/keycloak.yml --tags provision --extra-vars=@config.yml diff --git a/deploy/sunbird_install.sh b/deploy/sunbird_install.sh index f5802190cc..679f71d340 100755 --- a/deploy/sunbird_install.sh +++ b/deploy/sunbird_install.sh @@ -27,15 +27,15 @@ fi source version.env # Reading environment and implementation name -implementation_name=$(awk '/implementation_name: /{ if ($2 !~ /#.*/) {print $2}}' config) -env_name=$(awk '/env: /{ if ($2 !~ /#.*/) {print $2}}' config) -app_host=$(awk '/application_host: /{ if ($2 !~ /#.*/) {print $2}}' config) -db_host=$(awk '/database_host: /{ if ($2 !~ /#.*/) {print $2}}' config) -ssh_ansible_user=$(awk '/ssh_ansible_user: /{ if ($2 !~ /#.*/) {print $2}}' config) -ansible_private_key_path=$(awk '/ansible_private_key_path: /{ if ($2 !~ /#.*/) {print $2}}' config) +implementation_name=$(awk '/implementation_name: /{ if ($2 !~ /#.*/) {print $2}}' config.yml) +env_name=$(awk '/env: /{ if ($2 !~ /#.*/) {print $2}}' config.yml) +app_host=$(awk '/application_host: /{ if ($2 !~ /#.*/) {print $2}}' config.yml) +db_host=$(awk '/database_host: /{ if ($2 !~ /#.*/) {print $2}}' config.yml) +ssh_ansible_user=$(awk '/ssh_ansible_user: /{ if ($2 !~ /#.*/) {print $2}}' config.yml) +ansible_private_key_path=$(awk '/ansible_private_key_path: /{ if ($2 !~ /#.*/) {print $2}}' config.yml) ansible_variable_path="${implementation_name}"-devops/ansible/inventories/"$env_name" -protocol=$(awk '/proto: /{ if ($2 !~ /#.*/) {print $2}}' config) -domainname=$(awk '/dns_name: /{ if ($2 !~ /#.*/) {print $2}}' config) +protocol=$(awk '/proto: /{ if ($2 !~ /#.*/) {print $2}}' config.yml) +domainname=$(awk '/dns_name: /{ if ($2 !~ /#.*/) {print $2}}' config.yml) ENV=sample ORG=sunbird #TO skip the host key verification @@ -65,7 +65,7 @@ config() { sed -i s#\"{{database_host}}\"#$db_host#g $ansible_variable_path/hosts sed -i s#\"{{application_host}}\"#$app_host#g $ansible_variable_path/hosts sed -i s#\"{{ansible_private_key_path}}\"#$ansible_private_key_path#g $ansible_variable_path/hosts - ansible-playbook -i "localhost," -c local ../ansible/generate-hosts.yml --extra-vars @config --extra-vars "host_path=$ansible_variable_path" + ansible-playbook -i "localhost," -c local ../ansible/generate-hosts.yml --extra-vars @config.yml --extra-vars "host_path=$ansible_variable_path" .sunbird/generate_host.sh > $ansible_variable_path/hosts 2>&1 /dev/null } @@ -76,13 +76,13 @@ sanity() { configservice() { echo "Deploy Config service" - ansible-playbook -i $ansible_variable_path ../ansible/deploy.yml --tags "stack-sunbird" --extra-vars "hub_org=${ORG} image_name=config-service image_tag=${CONFIG_SERVICE_VERSION} service_name=config-service deploy_config=True" --extra-vars @config + ansible-playbook -i $ansible_variable_path ../ansible/deploy.yml --tags "stack-sunbird" --extra-vars "hub_org=${ORG} image_name=config-service image_tag=${CONFIG_SERVICE_VERSION} service_name=config-service deploy_config=True" --extra-vars @config.yml } # Installing dependencies deps() { -ansible-playbook -i $ansible_variable_path/hosts ../ansible/sunbird_prerequisites.yml --extra-vars @config -ansible-playbook -i $ansible_variable_path/hosts ../ansible/setup-dockerswarm.yml --extra-vars @config +ansible-playbook -i $ansible_variable_path/hosts ../ansible/sunbird_prerequisites.yml --extra-vars @config.yml +ansible-playbook -i $ansible_variable_path/hosts ../ansible/setup-dockerswarm.yml --extra-vars @config.yml } diff --git a/deploy/sunbird_upgrade.sh b/deploy/sunbird_upgrade.sh index 8c3a107cf3..ac2511f6a9 100755 --- a/deploy/sunbird_upgrade.sh +++ b/deploy/sunbird_upgrade.sh @@ -1,8 +1,8 @@ #!/bin/sh -implementation_name=$(awk '/implementation_name: /{ if ($2 !~ /#.*/) {print $2}}' config) -env_name=$(awk '/env: /{ if ($2 !~ /#.*/) {print $2}}' config) +implementation_name=$(awk '/implementation_name: /{ if ($2 !~ /#.*/) {print $2}}' config.yml) +env_name=$(awk '/env: /{ if ($2 !~ /#.*/) {print $2}}' config.yml) ansible_variable_path="${implementation_name}"-devops/ansible/inventories/"$env_name" -ansible-playbook -i $ansible_variable_path/hosts ../ansible/system-init-upgrade.yml --extra-vars @config +ansible-playbook -i $ansible_variable_path/hosts ../ansible/system-init-upgrade.yml --extra-vars @config.yml export sunbird_cassandra_host=`ip route get 8.8.8.8 | awk '{print $NF; exit}'` export sunbird_cassandra_port=9042 diff --git a/deploy/system-init.sh b/deploy/system-init.sh index 1db7967639..8a91a5a750 100755 --- a/deploy/system-init.sh +++ b/deploy/system-init.sh @@ -14,4 +14,4 @@ sunbird_api_auth_token=$(cat ~/jwt_token_player.txt|sed 's/ //g') # System Initialisation echo "System Initialisation" -ansible-playbook -i $INVENTORY_PATH ../ansible/system-init.yml --extra-vars=@config --extra-vars "sunbird_api_auth_token=${sunbird_api_auth_token}" +ansible-playbook -i $INVENTORY_PATH ../ansible/system-init.yml --extra-vars=@config.yml --extra-vars "sunbird_api_auth_token=${sunbird_api_auth_token}" diff --git a/deploy/validateConfig.sh b/deploy/validateConfig.sh index 90079e8b58..dfe8bd63b1 100755 --- a/deploy/validateConfig.sh +++ b/deploy/validateConfig.sh @@ -148,7 +148,7 @@ done # Function to retrieve values of mandatory fields and store it as key value pair get_config_values(){ key=$1 -vals[$key]=$(awk ''/^$key:' /{ if ($2 !~ /#.*/) {print $2}}' config) +vals[$key]=$(awk ''/^$key:' /{ if ($2 !~ /#.*/) {print $2}}' config.yml) } # Script start. core_install will receive value as "core" from calling script when -s core option is triggered. From ba79ae2eceba96f14c070fe06e1c4a9526e76bb6 Mon Sep 17 00:00:00 2001 From: S M Y Date: Tue, 23 Oct 2018 11:18:58 +0530 Subject: [PATCH 0306/1345] Issue #000 api: Incressing timeout for api-manager kong to be up and running --- deploy/deploy-apis.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/deploy/deploy-apis.sh b/deploy/deploy-apis.sh index 072ae51664..3820c92431 100755 --- a/deploy/deploy-apis.sh +++ b/deploy/deploy-apis.sh @@ -24,6 +24,8 @@ ansible-playbook -i $INVENTORY_PATH ../ansible/bootstrap.yml --extra-vars "host echo "@@@@@@@@@ Deploy API Manager" ansible-playbook -i $INVENTORY_PATH ../ansible/deploy.yml --tags "stack-api-manager" --extra-vars "hub_org=${ORG} echo_server_image_name=echo-server echo_server_image_tag=${ECHO_SERVER_VERSION} kong_version=${KONG_VERSION}" --extra-vars=@config +sleep 20 + # Deploy Admin Utils API echo "@@@@@@@@@ Deploy Admin Utils API" ansible-playbook -i $INVENTORY_PATH ../ansible/deploy.yml --tags "stack-adminutil" --extra-vars "hub_org=${ORG} image_name=adminutil image_tag=${ADMIN_UTILS_VERSION}" --extra-vars=@config From 00fa3c47e3a087285700f93be6b07534e04c830d Mon Sep 17 00:00:00 2001 From: S M Y Date: Tue, 23 Oct 2018 11:42:40 +0530 Subject: [PATCH 0307/1345] Issusysteminit: removing systeminit as it is not required --- deploy/sunbird_install.sh | 3 --- 1 file changed, 3 deletions(-) diff --git a/deploy/sunbird_install.sh b/deploy/sunbird_install.sh index 679f71d340..afbf255eb0 100755 --- a/deploy/sunbird_install.sh +++ b/deploy/sunbird_install.sh @@ -235,6 +235,3 @@ echo -e \n$(date)\n >> logs/apis.log; apis 2>&1 | tee -a logs/apis.log echo -e \n$(date)\n >> logs/proxies.log; proxy 2>&1 | tee -a logs/proxies.log echo -e \n$(date)\n >> logs/keycloak.log; keycloak 2>&1 | tee -a logs/keycloak.log echo -e \n$(date)\n >> logs/badger.log; badger 2>&1 | tee -a logs/badger.log - -## Initialising system -echo -e \n$(date)\n >> logs/systeminit.log; systeminit 2>&1 | tee -a logs/systeminit.log From af305dd2da4a801d19de0244f022d3124801288a Mon Sep 17 00:00:00 2001 From: S M Y Date: Tue, 23 Oct 2018 12:20:39 +0000 Subject: [PATCH 0308/1345] Issue #000 docker: supporting multiple agents in docker swarm --- ansible/setup-dockerswarm.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ansible/setup-dockerswarm.yml b/ansible/setup-dockerswarm.yml index 771aae823d..d14cbd8b39 100644 --- a/ansible/setup-dockerswarm.yml +++ b/ansible/setup-dockerswarm.yml @@ -1,12 +1,12 @@ - name: Install Ansible Prereqs - hosts: swarm-nodes:swarm-manager + hosts: swarm-nodes:swarm-manager:swarm-worker become: yes gather_facts: no tasks: - raw: bash -c "test -e /usr/bin/python" || (apt install python-minimal -y) - name: Install Docker - hosts: swarm-nodes:swarm-manager + hosts: swarm-nodes:swarm-manager:swarm-worker become: yes roles: - docker-ce @@ -31,7 +31,7 @@ - set_fact: swarmmaster={{swarm_master.stdout}} - name: Join Swarm Nodes - hosts: swarm-nodes + hosts: swarm-worker become: yes gather_facts: yes tasks: From e801bbc8dc74f9b8cd0fc1e86bce732dd9510112 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Thu, 25 Oct 2018 09:25:20 +0530 Subject: [PATCH 0309/1345] Circle CI Script Updates (#264) * feat: SB-7716 - Travis CI Nightly builds for Sunbird installation * fix: Removing extra travis file * fix: SB-7885 - Do not delete VM if build fails and build only tags * fix: SB-7885 - Remove master branch checkout code as we will not build master's tip anymore * fix: Updating tags, root org json response retrieval fix * feat: Adding circle ci scripts * fix: remove extra file * fix: remove extra file * style: Remove echos, cleaner output messages, yaml anchors * chore: removing all travis releated scripts * fix: temporary run to disable other branch builds * feat: SB-7983, SB-7984 - Scheduling cron back * Revert "feat: SB-7983, SB-7984 - Scheduling cron back" This reverts commit 6164a41dd65742680888f5c951b7bef9e61ecfc0. * Revert "fix: temporary run to disable other branch builds" This reverts commit 7651af690e8c78baab64d73e178208ec4b169148. * feat: SB-7983, SB-7984 - Scheduling cron back * fix: SB-8102 - Updated code to use new config file, new logic to checkout tags and branch, code refactor" * fix: SB-8102 - Changed channel name --- .circleci/config.yml | 33 +++-- circle-ci/install_sb.sh | 57 -------- circle-ci/update_config.sh | 32 ----- deploy/config.yml.sample | 167 ++++++++++++++++++++++++ test.sh | 8 -- test/ci/checkout_release.sh | 16 +++ {circle-ci => test/ci}/cli_configure.sh | 0 {circle-ci => test/ci}/copy_script.sh | 10 +- test/ci/install_sb.sh | 111 ++++++++++++++++ {circle-ci => test/ci}/launch_vm.sh | 16 +-- {circle-ci => test/ci}/release_to_build | 0 {circle-ci => test/ci}/remove_vm.sh | 4 +- test/ci/update_config.sh | 32 +++++ test/playbook_check.sh | 5 + 14 files changed, 365 insertions(+), 126 deletions(-) delete mode 100755 circle-ci/install_sb.sh delete mode 100755 circle-ci/update_config.sh create mode 100755 deploy/config.yml.sample delete mode 100755 test.sh create mode 100755 test/ci/checkout_release.sh rename {circle-ci => test/ci}/cli_configure.sh (100%) rename {circle-ci => test/ci}/copy_script.sh (70%) create mode 100755 test/ci/install_sb.sh rename {circle-ci => test/ci}/launch_vm.sh (72%) rename {circle-ci => test/ci}/release_to_build (100%) rename {circle-ci => test/ci}/remove_vm.sh (86%) create mode 100755 test/ci/update_config.sh create mode 100755 test/playbook_check.sh diff --git a/.circleci/config.yml b/.circleci/config.yml index 91b6015dd6..4cf8e068fc 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -9,25 +9,28 @@ jobs: - run: name: check previous stable release command: | - ver=tags/$(git tag | grep "release" | sort -V -r | sed -n 2p) - echo Running installer for tags/release-1.9 - echo export release=tags/release-1.9 >> $BASH_ENV + ver=tags/$(git tag | grep "release-[0-9].*[0-9]$" | sort -V -r | awk -F "." '!($2 in a){i++; a[$2]} (i==2){print $0}' | head -1) + echo Running installer for $ver + echo export RELEASE=$ver >> $BASH_ENV source $BASH_ENV + - run: &branch + name: checkout specific release + command: bash ./test/ci/checkout_release.sh - run: &cli name: configure cli - command: bash ./circle-ci/cli_configure.sh + command: bash ./test/ci/cli_configure.sh - run: &config name: update config - command: bash ./circle-ci/update_config.sh + command: bash ./test/ci/update_config.sh - run: &launch-vm name: launch vms - command: bash ./circle-ci/launch_vm.sh + command: bash ./test/ci/launch_vm.sh - run: &install-sb name: install sunbird - command: bash ./circle-ci/copy_script.sh + command: bash ./test/ci/copy_script.sh - run: &remove-vm name: remove vms - command: bash ./circle-ci/remove_vm.sh + command: bash ./test/ci/remove_vm.sh current-stable: docker: *dock-img @@ -36,10 +39,11 @@ jobs: - run: name: check current stable release command: | - ver=tags/$(git tag | grep "release" | sort -V -r | sed -n 1p) + ver=tags/$(git tag | grep "release-[0-9].*[0-9]$" | sort -V -r | awk -F "." '!($2 in a){i++; a[$2]} (i==1){print $0}' | head -1) echo Running installer for $ver - echo export release=$ver >> $BASH_ENV + echo export RELEASE=$ver >> $BASH_ENV source $BASH_ENV + - run: *branch - run: *cli - run: *config - run: *launch-vm @@ -53,10 +57,11 @@ jobs: - run: name: check current development branch command: | - ver=$(git branch -a | grep release-[0-9].[0-9].* | sed -e 's#.*/.*/##g' | sort -V -r -u | sed -n 1p) + ver=$(git branch -a | grep "release-[0-9].*[0-9]$" | sed 's#.*/.*/##g' | tr -d ' ' | sort -V -r | awk -F "." '!($2 in a){i++; a[$2]} (i==1){print $0}' | head -1) echo Running installer for $ver - echo export release=$ver >> $BASH_ENV + echo export RELEASE=$ver >> $BASH_ENV source $BASH_ENV + - run: *branch - run: *cli - run: *config - run: *launch-vm @@ -69,14 +74,14 @@ jobs: - checkout - run: name: check ansible playbooks syntax - command: bash ./test.sh + command: bash ./test/playbook_check.sh workflows: version: 2 nightly: triggers: - schedule: - cron: "0 19 * * *" + cron: "0 18 * * *" filters: branches: only: diff --git a/circle-ci/install_sb.sh b/circle-ci/install_sb.sh deleted file mode 100755 index ebf3331a66..0000000000 --- a/circle-ci/install_sb.sh +++ /dev/null @@ -1,57 +0,0 @@ -#!/bin/bash -release=$(cat /tmp/release_to_build) -username=$(awk '/ssh_ansible_user:/{ if ($2 !~ /#.*/) {print $2}}' /tmp/config) -dns_name=$(awk '/dns_name:/{ if ($2 !~ /#.*/) {print $2}}' /tmp/config) -keycloak_pass=$(awk '/keycloak_admin_password:/{ if ($2 !~ /#.*/) {print $2}}' /tmp/config) -sso_pass=$(awk '/sso_password:/{ if ($2 !~ /#.*/) {print $2}}' /tmp/config) -cd /home/$username -mkdir .ssh 2> /dev/null -cp /tmp/sunbird.pem .ssh -git clone https://github.com/project-sunbird/sunbird-devops.git -cd sunbird-devops - -IFS="/" read -r var1 var2 <<< $release - -if [[ $var1 == "tags" ]]; then - git checkout $release -b $var2 - echo -e "Installing sunbird $var2" -else - git checkout -b $var1 origin/$var1 - echo -e "Installation sunbird $var1" -fi - -cp /tmp/config ./deploy -cd deploy -echo -e "Starting installation..." -./sunbird_install.sh - -if [[ $? -ne 0 ]]; then - echo -e "Installation failed - Retrying..." - ./sunbird_install.sh -fi - -if [[ $? -eq 0 ]]; then - echo -e "Sunbird installation complete - Starting core installation..." - access_token=$(curl -s -X POST http://$dns_name/auth/realms/master/protocol/openid-connect/token -H "cache-control: no-cache" -H "content-type: application/x-www-form-urlencoded" -d "client_id=admin-cli&username=admin&password=$keycloak_pass&grant_type=password" | jq -r ".access_token") - public_key=$(curl -s -X GET http://$dns_name/auth/admin/realms/sunbird/keys -H "Authorization: Bearer $access_token" -H "Cache-Control: no-cache" -H "Content-Type: application/json" | jq -r ".keys[0].publicKey") - sed -i "s|sunbird_sso_publickey:|sunbird_sso_publickey: $public_key|g" config - ./sunbird_install.sh -s core - - if [[ $? -eq 0 ]]; then - jwt_token=$(cat /home/$username/jwt_token_player.txt | tr -d " ") - access_token_user=$(curl -s -X POST http://$dns_name/auth/realms/sunbird/protocol/openid-connect/token -H "cache-control: no-cache" -H "content-type: application/x-www-form-urlencoded" -d "client_id=admin-cli&username=user-manager&password=$sso_pass&grant_type=password" | jq -r ".access_token") - status=$(curl -s -X POST http://$dns_name/api/org/v1/create -H "Cache-Control: no-cache" -H "Content-Type: application/json" -H "accept: application/json" -H "authorization: Bearer $jwt_token" -H "x-authenticated-user-token: $access_token_user" -d '{"request":{"orgName": "circle-ci", "description": "circle-ci", "isRootOrg": true, "channel": "circle-ci"}}' | jq -r ".result.response") - if [[ $status == "SUCCESS" ]]; then - echo -e "Root org created successfully - Running core and posttest..." - ./sunbird_install.sh -s core - ./sunbird_install.sh -s posttest - echo -e "Sunbird installation complete" - else - echo -e "Sunbird installation failed - Unable to create root org" - exit 1 - fi - fi -else - echo -e "Sunbird installation failed - Error occured during installation." - exit 1 -fi diff --git a/circle-ci/update_config.sh b/circle-ci/update_config.sh deleted file mode 100755 index 6b68c3effd..0000000000 --- a/circle-ci/update_config.sh +++ /dev/null @@ -1,32 +0,0 @@ -#!/bin/bash -config_file=./deploy/config -sed -i "s/env:/env: $env/g" $config_file -sed -i "s/implementation_name:/implementation_name: $implementation_name/g" $config_file -sed -i "s/ssh_ansible_user:/ssh_ansible_user: $ssh_ansible_user/g" $config_file -sed -i "s#ansible_private_key_path:#ansible_private_key_path: $ansible_private_key_path#g" $config_file -sed -i "s#app_address_space:#app_address_space: $app_address_space#g" $config_file -sed -i "s/proto:/proto: $proto/g" $config_file -sed -i "s/database_password:/database_password: $database_password/g" $config_file -sed -i "s/keycloak_admin_password:/keycloak_admin_password: $keycloak_admin_password/g" $config_file -sed -i "s/sso_password:/sso_password: $sso_password/g" $config_file -sed -i "s/trampoline_secret:/trampoline_secret: $trampoline_secret/g" $config_file -sed -i "s/backup_storage_key:/backup_storage_key: $backup_storage_key/g" $config_file -sed -i "s/badger_admin_password:/badger_admin_password: $badger_admin_password/g" $config_file -sed -i "s/badger_admin_email:/badger_admin_email: $badger_admin_email/g" $config_file -sed -i "s?ekstep_api_base_url:.*#?ekstep_api_base_url: https://api-qa.ekstep.in # ?g" $config_file -sed -i "s?ekstep_proxy_base_url:.*#?ekstep_proxy_base_url: https://qa.ekstep.in # ?g" $config_file -sed -i "s#ekstep_api_key:#ekstep_api_key: $ekstep_api_key#g" $config_file -sed -i "s#sunbird_image_storage_url:#sunbird_image_storage_url: $sunbird_image_storage_url#g" $config_file -sed -i "s#sunbird_azure_storage_key:#sunbird_azure_storage_key: $sunbird_azure_storage_key#g" $config_file -sed -i "s/sunbird_azure_storage_account:/sunbird_azure_storage_account: $sunbird_azure_storage_account/g" $config_file -sed -i "s/sunbird_custodian_tenant_name:/sunbird_custodian_tenant_name: $sunbird_custodian_tenant_name/g" $config_file -sed -i "s/sunbird_custodian_tenant_description:/sunbird_custodian_tenant_description: $sunbird_custodian_tenant_description/g" $config_file -sed -i "s/sunbird_custodian_tenant_channel:/sunbird_custodian_tenant_channel: $sunbird_custodian_tenant_channel/g" $config_file -sed -i "s/sunbird_root_user_firstname:/sunbird_root_user_firstname: $sunbird_root_user_firstname/g" $config_file -sed -i "s/sunbird_root_user_lastname:/sunbird_root_user_lastname: $sunbird_root_user_lastname/g" $config_file -sed -i "s/sunbird_root_user_username:/sunbird_root_user_username: $sunbird_root_user_username/g" $config_file -sed -i "s/sunbird_root_user_password:/sunbird_root_user_password: $sunbird_root_user_password/g" $config_file -sed -i "s/sunbird_root_user_email:/sunbird_root_user_email: $sunbird_root_user_email/g" $config_file -sed -i "s/sunbird_root_user_phone:/sunbird_root_user_phone: $sunbird_root_user_phone/g" $config_file -sed -i "s/sunbird_default_channel:/sunbird_default_channel: $sunbird_default_channel/g" $config_file -echo -e "Config file updated..." diff --git a/deploy/config.yml.sample b/deploy/config.yml.sample new file mode 100755 index 0000000000..d18ef7ca5c --- /dev/null +++ b/deploy/config.yml.sample @@ -0,0 +1,167 @@ +#------------------------------------------------------# +# +# Sunbird installaion contains 3 parts +# 1. Install and configure db and deps +# 2. Install and core services +# 3. Configure core services +# +# ALL VARIABLES IN THESE THREE PARTS ARE MANDATORY. +# PLEASE FILL THOSE BEFORE RUNNING CORRESPONDING STEPS. +# +#------------------------------------------------------# + +#Basic + +env: test # Name of the environment you are deploying. Typically, it is one of development, test, staging, production, etc. +implementation_name: test # Name of your sunbird implementation. Let's say for the sake of this document, it is ntp. +ssh_ansible_user: testuser # Ssh user for accessing all servers, who must be a sudo user +sudo_passwd: # If user have sudo password, else please skip it +ansible_private_key_path: /home/testuser/.ssh/privatekey.pem # Path to the private key file to allow ansible to deploy + +#Application +application_host: 180.31.28.88 # Private ip of the application server +app_address_space: 180.31.0.0/16 # Application server address space (e.g. 10.3.0.0/24) + +#Proxy +dns_name: 18.233.110.179 # Public DNS url of the app the server / ip address of your server or load balancer +proto: http # http/https; if you're usig ip use http +cert_path: # Path to .cert file for nginx +key_path: # Path to .key file for nginx + +#Database +database_host: 180.31.22.227 # Db server private ip +database_password: abcd1234 # Common password for all the databases + +#Keycloak +keycloak_admin_password: abcd2345 # Keycloak admin console password. Default user is admin, you can change it in keycloak ui +sso_password: abcd3456 # Password for keycloak sso_username (by default username is user-manager, you can change it in keycloak ui) +trampoline_secret: abcd4567 # Trampoline secret, atleaset give 8 chars + +# Es configs +backup_storage_key: abcd5678 # Passsword to store the elastic search backup. + +# Badger +badger_admin_password: abcd6789 # Admin password + # Default admin user is admin, you can create new user using `./manage.py createsuperuser` in badger container. +badger_admin_email: contact_sunbird@sunbird.com # Admin email address for badger + +#Ekstep +ekstep_api_base_url: https://api-qa.ekstep.in # Qa/Dev: https://api-qa.ekstep.in & prod: https://api.ekstep.in +ekstep_proxy_base_url: https://qa.ekstep.in # Qa/Dev: https://qa.ekstep.in & prod: https://community.ekstep.in + +ekstep_api_key: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiI1NGU5M2M2NzU26MTUwiZXhwIjoxNTcwNTI1NzQyLCJhdWQiOiIiLCJzdWIiOiIifQ.Ddx7Rv37kwC_uZ8s4kvTDkh1gz9u4g9OkCDC-Bkqr0Y # Jwt token generated by the key,secret produced from the ekstep portal. + # Please go through this url for more about jwt: + # https://community.ekstep.in/developer-knowledgebase/45-getting-started-with-apis + +sunbird_image_storage_url: https://multinodetesting.blob.core.windows.microsoft.net/ # Azure storage url ex: https://sunbirdtest.blob.core.windows.net/dial/ +sunbird_azure_storage_key: 9T9OZUxWzGEmMx23EKFNtl8PiqTTl3HVhNiIdByVX4w61iCEVHmMe1qrRptYk6T4XVmP2MIQ== # Azure account storage key +sunbird_azure_storage_account: multinodetesting # Azure account storage name + +#Sunbird System Initialisation - First organisation and user in Sunbird will be created with these details +sunbird_custodian_tenant_name: Test # Custodian Organisation Name +sunbird_custodian_tenant_description: Test # Custodian Organisation Description +sunbird_custodian_tenant_channel: test # Custodian Organisation Channel +sunbird_root_user_firstname: Sunbird # first name of the Sunbird admin user +sunbird_root_user_lastname: Support # last name of the Sunbird admin user(optional field) +sunbird_root_user_username: sunbirdsupport # username to be used for login to Sunbird +sunbird_root_user_password: abcd7890 # password to be used for login to Sunbird +sunbird_root_user_email: contact_sunbird@sunbird.com # email address of the Sunbird admin user +sunbird_root_user_phone: 1234567890 # mobile number of the Sunbird admin user + +#----------------------------------------------------------------------# + +# PART 2 +# Please fill the value below and run sunbird_install.sh -s core + +sunbird_sso_publickey: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnscyuQIc5hvO7VGN55oxYhaCKi+osxfe4rvI8EkwTI2IG5iHNttxfz2X+dT069lkac+EsnXuq189tcBiG+b+1osep8iTVSq1YHuyAw6Cug9cmUEVG+acr2+LlA+67eQRRp4DW4/LpimtBZWY1w2wNx8eV8mIUrrBcCs6Owy3TG/jyvCGOJIJ5DmlYbQ6riGs4sWrRBIEl/Ox # Follow the below to get the key + # http://dns_name/auth -> realm settings -> keys -> public keys (click on public keys) and paste the value + # Referral: http://www.sunbird.org/developer-docs/configuring_sunbird/ + +#----------------------------------------------------------------------# + +# INFO +# Now you've to create the root organization and channel +# Referral: http://www.sunbird.org/developer-docs/installation/install_sbbackend/ +# go to the bottom section of the page + +#----------------------------------------------------------------------# +# PART 3 +# Please fill the value below and run sunbird_install.sh -s core + +sunbird_default_channel: testorg # Paste the channel name with which you created the organization + +#----------------------------------------------------------------------# + + + + + +## Advanced config + +# !! If you don't need all customizations, like only multiple db instances but all applications are in same instance, +# !! please fill `application_host`, as this ip will be taken for all default configurations + +# DB IPs, Default will be database_host +elasticsearch_host: +cassandra_host: +postgres_master_host: +postgres_slave_host: +swarm_manager_host: +swarm_node_host: +keycloak_host: +log_es_host: + +# Variables for monitoring +prometheus_host: +grafana_host: +alertmanager_host: + +# Unique DB passwords, Default will be database_password +# If you have dbs pre installed, you have to fill the passwords, it's mandatory. +postgres_keycloak_password: +postgres_app_password: +postgres_kong_password: +postgres_badger_password: +cassandra_password: + + +sunbird_telemetry_pdata_id: #some telemetry id which should available in ekstep +sunbird_installation_email: # + +#Logging (mandatory fields if logging is required) +vault_google_client_id: # Google oauth client id +vault_google_client_secret: # Google oauth client secret +vault_cookie_secret: # Google oauth cookie secret +kibana_oauth_authenticated_email_domains: # Kibana access for all the users with this domain +kibana_oauth_authenticated_email_ids: # Kibana access for the mentioned users + + + +#Monitoring (mandatory fields if monitoring is required) +proxy_prometheus: false # Please set this variable to true if you want to use monitoring and fill the below details under monitoring Section +mail_server_host: #mail server host ex: smtp.sendgrid.net +mail_server_port: #mail server host ex: 587 +mail_server_username: #username +mail_server_password: #password +vault_postgres_exporter_password: #password for the postgres exporter password +grafana_admin_password: #grafana admin password +monitor_alerts_slack_url: #slack webhook url +monitor_alerts_slack_channel: #slack channel for alerts +alerts_mailing_list: #list of user mail id's who need alerts. +kong__test_jwt: #kong test jwt token +vault_proxy_prometheus_admin_creds: + + + +#es config +es_etc_node_datagroups['es']: +es_api_host: "{{ inventory_hostname }}" +es_heap_size: 1500m +es_etc_discovery_zen_minimum_master_nodes: 1 +es_snapshot_host: "{{ groups['es'][0] }}" +es_restore_host: "{{ groups['es'][0] }}" +snapshot_base_path: application + + +#----------------------------------------------------------------# +# System generated values. Please don't edit diff --git a/test.sh b/test.sh deleted file mode 100755 index 35ab205a2e..0000000000 --- a/test.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/sh - -set -e - -SCRIPT_BASE_DIR=$(dirname $0) -SUNBIRD_DEVOPS_FOLDER=$SCRIPT_BASE_DIR - -bash $SUNBIRD_DEVOPS_FOLDER/ansible-syntax-check.sh $SUNBIRD_DEVOPS_FOLDER/ansible/inventories/sample diff --git a/test/ci/checkout_release.sh b/test/ci/checkout_release.sh new file mode 100755 index 0000000000..cecb7f8b08 --- /dev/null +++ b/test/ci/checkout_release.sh @@ -0,0 +1,16 @@ +#!/bin/bash +cp -r test .circleci ./deploy/config.yml.sample /tmp +IFS="/" read -r var1 var2 <<< $RELEASE +if [[ $var1 == "tags" ]]; then + git checkout $release -b $var2 + echo -e "Checkout $var2" +else + git checkout -b $var1 origin/$var1 + echo -e "Checkout $var1" +fi + +if ! [[ -f ./deploy/config.yml.sample ]]; then + cp /tmp/config.yml.sample ./deploy +fi + +cp -r /tmp/test /tmp/.circleci . diff --git a/circle-ci/cli_configure.sh b/test/ci/cli_configure.sh similarity index 100% rename from circle-ci/cli_configure.sh rename to test/ci/cli_configure.sh diff --git a/circle-ci/copy_script.sh b/test/ci/copy_script.sh similarity index 70% rename from circle-ci/copy_script.sh rename to test/ci/copy_script.sh index 23a71f6d30..35dc317aea 100755 --- a/circle-ci/copy_script.sh +++ b/test/ci/copy_script.sh @@ -1,15 +1,15 @@ #!/bin/bash -config_file=./deploy/config -install_script=./circle-ci/install_sb.sh -release_to_build=./circle-ci/release_to_build +config_file=./deploy/config.yml.sample +install_script=./test/ci/install_sb.sh +release_to_build=./test/ci/release_to_build app_ip=$(awk '/dns_name:/{ if ($2 !~ /#.*/) {print $2}}' $config_file) user_name=$(awk '/ssh_ansible_user:/{if ($2 !~ /#.*/) {print $2}}' $config_file) printf "%s$private_key" > sunbird.pem chmod 600 sunbird.pem -echo $release > $release_to_build +echo $RELEASE > $release_to_build scp -i sunbird.pem -o StrictHostKeyChecking=no $config_file sunbird.pem $install_script $release_to_build $user_name@$app_ip:/tmp ssh -i sunbird.pem -o StrictHostKeyChecking=no $user_name@$app_ip "/tmp/install_sb.sh" if [[ $? -ne 0 ]]; then - echo -e "\nSunbird installation for $release failed - Please inspect the server - Instance not removed!" + echo -e "\nSunbird installation for $RELEASE failed - Please inspect the server - Instance not removed!" exit 1 fi diff --git a/test/ci/install_sb.sh b/test/ci/install_sb.sh new file mode 100755 index 0000000000..8fbee8ef68 --- /dev/null +++ b/test/ci/install_sb.sh @@ -0,0 +1,111 @@ +#!/bin/bash + +copyPem(){ + mkdir /home/$username/.ssh 2> /dev/null + cp /tmp/sunbird.pem /home/$username/.ssh +} + +checkoutRepo(){ + cd /home/$username + git clone https://github.com/project-sunbird/sunbird-devops.git + cd sunbird-devops + IFS="/" read -r var1 var2 <<< $release + if [[ $var1 == "tags" ]]; then + git checkout $release -b $var2 + echo -e "Installing sunbird $var2" + else + git checkout -b $var1 origin/$var1 + echo -e "Installing sunbird $var1" + fi +} + +copyConfig(){ + cd deploy + if [[ -f config ]]; then + cp $config_file config + config_file=config + else + cp $config_file config.yml + config_file=config.yml + fi +} + +installSunbird(){ + echo -e "Starting installation..." + bash sunbird_install.sh +} + +updateSSO(){ + access_token=$(curl -s -X POST http://$dns_name/auth/realms/master/protocol/openid-connect/token -H "cache-control: no-cache" -H "content-type: application/x-www-form-urlencoded" -d "client_id=admin-cli&username=admin&password=$keycloak_pass&grant_type=password" | jq -r ".access_token") + public_key=$(curl -s -X GET http://$dns_name/auth/admin/realms/sunbird/keys -H "Authorization: Bearer $access_token" -H "Cache-Control: no-cache" -H "Content-Type: application/json" | jq -r ".keys[0].publicKey") + sed -i "s|sunbird_sso_publickey:.*#|sunbird_sso_publickey: $public_key #|g" $config_file +} + +coreInstall(){ + echo -e "Sunbird installation complete - Starting core installation..." + bash sunbird_install.sh -s core +} + +createRootOrg(){ + jwt_token=$(cat /home/$username/jwt_token_player.txt | tr -d " ") + access_token_user=$(curl -s -X POST http://$dns_name/auth/realms/sunbird/protocol/openid-connect/token -H "cache-control: no-cache" -H "content-type: application/x-www-form-urlencoded" -d "client_id=admin-cli&username=user-manager&password=$sso_pass&grant_type=password" | jq -r ".access_token") + status=$(curl -s -X POST http://$dns_name/api/org/v1/create -H "Cache-Control: no-cache" -H "Content-Type: application/json" -H "accept: application/json" -H "authorization: Bearer $jwt_token" -H "x-authenticated-user-token: $access_token_user" -d '{"request":{"orgName": "circle-ci", "description": "circle-ci", "isRootOrg": true, "channel": "circle-ci"}}' | jq -r ".result.response") +} + +postTest(){ + bash sunbird_install.sh -s posttest +} + +config_file=/tmp/config.yml.sample +release=$(cat /tmp/release_to_build) +username=$(awk '/ssh_ansible_user:/{ if ($2 !~ /#.*/) {print $2}}' $config_file) +dns_name=$(awk '/dns_name:/{ if ($2 !~ /#.*/) {print $2}}' $config_file) +keycloak_pass=$(awk '/keycloak_admin_password:/{ if ($2 !~ /#.*/) {print $2}}' $config_file) +sso_pass=$(awk '/sso_password:/{ if ($2 !~ /#.*/) {print $2}}' $config_file) + +copyPem +checkoutRepo +copyConfig +installSunbird + +if [[ $? -ne 0 ]]; then + echo -e "Installation failed - Retrying..." + installSunbird +fi + +if [[ $? -eq 0 ]]; then + updateSSO + coreInstall +else + echo -e "Sunbird installation failed - Error occured during installation" + exit 1 +fi + +if [[ $? -eq 0 ]]; then + createRootOrg +else + echo -e "Sunbird installation failed - Error occured during core installation" + exit 1 +fi + +if [[ $status == "SUCCESS" ]]; then + echo -e "Root org created successfully - Running core install..." + coreInstall +else + echo -e "Sunbird installation failed - Unable to create root org" + exit 1 +fi + +if [[ $? -eq 0 ]]; then + postTest +else + echo -e "Sunbird installation failed - Error occured during core installation after creating root org" + exit 1 +fi + +if [[ $? -eq 0 ]]; then + echo -e "Sunbird installation complete" +else + echo -e "Sunbird installation failed - Error occured duing postTest" + exit 1 +fi diff --git a/circle-ci/launch_vm.sh b/test/ci/launch_vm.sh similarity index 72% rename from circle-ci/launch_vm.sh rename to test/ci/launch_vm.sh index 16e951d4ec..f420ea4a8c 100755 --- a/circle-ci/launch_vm.sh +++ b/test/ci/launch_vm.sh @@ -1,16 +1,16 @@ #!/bin/bash -config_file=./deploy/config -aws ec2 run-instances --image-id ami-0c510557369b14896 --instance-type t2.large --key-name adoption-keshav --subnet-id subnet-0241076a --tag-specifications "ResourceType=instance,Tags=[{Key=Name,Value=circle-app-$CIRCLE_BUILD_NUM-$release}]" 1> /dev/null -aws ec2 run-instances --image-id ami-0c510557369b14896 --instance-type t2.large --key-name adoption-keshav --subnet-id subnet-0241076a --tag-specifications "ResourceType=instance,Tags=[{Key=Name,Value=circle-db-$CIRCLE_BUILD_NUM-$release}]" 1> /dev/null +config_file=./deploy/config.yml.sample +aws ec2 run-instances --image-id ami-0c510557369b14896 --instance-type t2.large --key-name adoption-keshav --subnet-id subnet-0241076a --tag-specifications "ResourceType=instance,Tags=[{Key=Name,Value=circle-app-$CIRCLE_BUILD_NUM-$RELEASE}]" 1> /dev/null +aws ec2 run-instances --image-id ami-0c510557369b14896 --instance-type t2.large --key-name adoption-keshav --subnet-id subnet-0241076a --tag-specifications "ResourceType=instance,Tags=[{Key=Name,Value=circle-db-$CIRCLE_BUILD_NUM-$RELEASE}]" 1> /dev/null echo -e "Waiting for servers to launch..." sleep 150 -aws_app_instance=$(aws ec2 describe-instances --filters "Name=instance-state-name,Values=running" "Name=tag:Name,Values=circle-app-$CIRCLE_BUILD_NUM-$release" --query "Reservations[*].Instances[*].{PrivateIP: PrivateIpAddress, PublicIP: PublicIpAddress, InstanceId: InstanceId}") +aws_app_instance=$(aws ec2 describe-instances --filters "Name=instance-state-name,Values=running" "Name=tag:Name,Values=circle-app-$CIRCLE_BUILD_NUM-$RELEASE" --query "Reservations[*].Instances[*].{PrivateIP: PrivateIpAddress, PublicIP: PublicIpAddress, InstanceId: InstanceId}") app_instance_id=$(echo -e $aws_app_instance | awk '{print $1}') app_private_ip=$(echo -e $aws_app_instance | awk '{print $2}') app_public_ip=$(echo -e $aws_app_instance | awk '{print $3}') -aws_db_instance=$(aws ec2 describe-instances --filters "Name=instance-state-name,Values=running" "Name=tag:Name,Values=circle-db-$CIRCLE_BUILD_NUM-$release" --query "Reservations[*].Instances[*].{PrivateIP: PrivateIpAddress, PublicIP: PublicIpAddress, InstanceId: InstanceId}") +aws_db_instance=$(aws ec2 describe-instances --filters "Name=instance-state-name,Values=running" "Name=tag:Name,Values=circle-db-$CIRCLE_BUILD_NUM-$RELEASE" --query "Reservations[*].Instances[*].{PrivateIP: PrivateIpAddress, PublicIP: PublicIpAddress, InstanceId: InstanceId}") db_instance_id=$(echo -e $aws_db_instance | awk '{print $1}') db_private_ip=$(echo -e $aws_db_instance | awk '{print $2}') db_public_ip=$(echo -e $aws_db_instance | awk '{print $3}') @@ -21,6 +21,6 @@ echo -e "Instance ID: $app_instance_id\nPrivate IP: $app_private_ip\nPublic IP: echo -e "\nDatabase server details" echo -e "Instance ID: $db_instance_id\nPrivate IP: $db_private_ip\nPublic IP: $db_public_ip" -sed -i "s/application_host:/application_host: $app_private_ip/g" $config_file -sed -i "s/dns_name:/dns_name: $app_public_ip/g" $config_file -sed -i "s/database_host:/database_host: $db_private_ip/g" $config_file +sed -i "s|application_host:.*#|application_host: $app_private_ip #|g" $config_file +sed -i "s|dns_name:.*#|dns_name: $app_public_ip #|g" $config_file +sed -i "s|database_host:.*#|database_host: $db_private_ip #|g" $config_file diff --git a/circle-ci/release_to_build b/test/ci/release_to_build similarity index 100% rename from circle-ci/release_to_build rename to test/ci/release_to_build diff --git a/circle-ci/remove_vm.sh b/test/ci/remove_vm.sh similarity index 86% rename from circle-ci/remove_vm.sh rename to test/ci/remove_vm.sh index 525f5c7295..259b6f7234 100755 --- a/circle-ci/remove_vm.sh +++ b/test/ci/remove_vm.sh @@ -1,8 +1,8 @@ #!/bin/bash -aws_app_instance=$(aws ec2 describe-instances --filters "Name=instance-state-name,Values=running" "Name=tag:Name,Values=circle-app-$CIRCLE_BUILD_NUM-$release" --query "Reservations[*].Instances[*].{PrivateIP: PrivateIpAddress, PublicIP: PublicIpAddress, InstanceId: InstanceId}") +aws_app_instance=$(aws ec2 describe-instances --filters "Name=instance-state-name,Values=running" "Name=tag:Name,Values=circle-app-$CIRCLE_BUILD_NUM-$RELEASE" --query "Reservations[*].Instances[*].{PrivateIP: PrivateIpAddress, PublicIP: PublicIpAddress, InstanceId: InstanceId}") app_instance_id=$(echo $aws_app_instance | awk '{print $1}') -aws_db_instance=$(aws ec2 describe-instances --filters "Name=instance-state-name,Values=running" "Name=tag:Name,Values=circle-db-$CIRCLE_BUILD_NUM-$release" --query "Reservations[*].Instances[*].{PrivateIP: PrivateIpAddress, PublicIP: PublicIpAddress, InstanceId: InstanceId}") +aws_db_instance=$(aws ec2 describe-instances --filters "Name=instance-state-name,Values=running" "Name=tag:Name,Values=circle-db-$CIRCLE_BUILD_NUM-$RELEASE" --query "Reservations[*].Instances[*].{PrivateIP: PrivateIpAddress, PublicIP: PublicIpAddress, InstanceId: InstanceId}") db_instance_id=$(echo $aws_db_instance | awk '{print $1}') echo -e "Removing application server: $app_instance_id" diff --git a/test/ci/update_config.sh b/test/ci/update_config.sh new file mode 100755 index 0000000000..84779b47e5 --- /dev/null +++ b/test/ci/update_config.sh @@ -0,0 +1,32 @@ +#!/bin/bash +config_file=./deploy/config.yml.sample +sed -i "s|env:.*#|env: $env #|g" $config_file +sed -i "s|implementation_name:.*#|implementation_name: $implementation_name #|g" $config_file +sed -i "s|ssh_ansible_user:.*#|ssh_ansible_user: $ssh_ansible_user #|g" $config_file +sed -i "s|ansible_private_key_path:.*#|ansible_private_key_path: $ansible_private_key_path #|g" $config_file +sed -i "s|app_address_space:.*#|app_address_space: $app_address_space #|g" $config_file +sed -i "s|proto:.*#|proto: $proto #|g" $config_file +sed -i "s|database_password:.*#|database_password: $database_password #|g" $config_file +sed -i "s|keycloak_admin_password:.*#|keycloak_admin_password: $keycloak_admin_password #|g" $config_file +sed -i "s|sso_password:.*#|sso_password: $sso_password #|g" $config_file +sed -i "s|trampoline_secret:.*#|trampoline_secret: $trampoline_secret #|g" $config_file +sed -i "s|backup_storage_key:.*#|backup_storage_key: $backup_storage_key #|g" $config_file +sed -i "s|badger_admin_password:.*#|badger_admin_password: $badger_admin_password #|g" $config_file +sed -i "s|badger_admin_email:.*#|badger_admin_email: $badger_admin_email #|g" $config_file +sed -i "s|ekstep_api_base_url:.*#|ekstep_api_base_url: https://api-qa.ekstep.in #|g" $config_file +sed -i "s|ekstep_proxy_base_url:.*#|ekstep_proxy_base_url: https://qa.ekstep.in #|g" $config_file +sed -i "s|ekstep_api_key:.*#|ekstep_api_key: $ekstep_api_key #|g" $config_file +sed -i "s|sunbird_image_storage_url:.*#|sunbird_image_storage_url: $sunbird_image_storage_url #|g" $config_file +sed -i "s|sunbird_azure_storage_key:.*#|sunbird_azure_storage_key: $sunbird_azure_storage_key #|g" $config_file +sed -i "s|sunbird_azure_storage_account:.*#|sunbird_azure_storage_account: $sunbird_azure_storage_account #|g" $config_file +sed -i "s|sunbird_custodian_tenant_name:.*#|sunbird_custodian_tenant_name: $sunbird_custodian_tenant_name #|g" $config_file +sed -i "s|sunbird_custodian_tenant_description:.*#|sunbird_custodian_tenant_description: $sunbird_custodian_tenant_description #|g" $config_file +sed -i "s|sunbird_custodian_tenant_channel:.*#|sunbird_custodian_tenant_channel: $sunbird_custodian_tenant_channel #|g" $config_file +sed -i "s|sunbird_root_user_firstname:.*#|sunbird_root_user_firstname: $sunbird_root_user_firstname #|g" $config_file +sed -i "s|sunbird_root_user_lastname:.*#|sunbird_root_user_lastname: $sunbird_root_user_lastname #|g" $config_file +sed -i "s|sunbird_root_user_username:.*#|sunbird_root_user_username: $sunbird_root_user_username #|g" $config_file +sed -i "s|sunbird_root_user_password:.*#|sunbird_root_user_password: $sunbird_root_user_password #|g" $config_file +sed -i "s|sunbird_root_user_email:.*#|sunbird_root_user_email: $sunbird_root_user_email #|g" $config_file +sed -i "s|sunbird_root_user_phone:.*#|sunbird_root_user_phone: $sunbird_root_user_phone #|g" $config_file +sed -i "s|sunbird_default_channel:.*#|sunbird_default_channel: $sunbird_default_channel #|g" $config_file +echo -e "Config file updated..." diff --git a/test/playbook_check.sh b/test/playbook_check.sh new file mode 100755 index 0000000000..771dabcaac --- /dev/null +++ b/test/playbook_check.sh @@ -0,0 +1,5 @@ +#!/bin/sh + +set -e + +bash ./ansible-syntax-check.sh ./ansible/inventories/sample From 3c459b0c5af775a8ff00e2513956151f59523c75 Mon Sep 17 00:00:00 2001 From: S M Y Date: Thu, 25 Oct 2018 16:51:45 +0530 Subject: [PATCH 0310/1345] Issue #000 env: nginx configuration --- ansible/roles/stack-proxy/templates/proxy-default.conf | 2 -- 1 file changed, 2 deletions(-) diff --git a/ansible/roles/stack-proxy/templates/proxy-default.conf b/ansible/roles/stack-proxy/templates/proxy-default.conf index 43a3ddc0ec..b540af96f1 100644 --- a/ansible/roles/stack-proxy/templates/proxy-default.conf +++ b/ansible/roles/stack-proxy/templates/proxy-default.conf @@ -234,8 +234,6 @@ server { return 200; } - # set $azure_bucket "sunbird{{sunbird_blob_env}}.blob.core.windows.net"; - # upstream_url: azure.nt/container_name set $bucket "{{upstream_url}}"; set $url_full '$1'; proxy_http_version 1.1; From e5b3bd893ab675b84672a7e340bf2464dedba4f5 Mon Sep 17 00:00:00 2001 From: santhosh-optit <31979949+santhosh-optit@users.noreply.github.com> Date: Thu, 25 Oct 2018 17:55:16 +0530 Subject: [PATCH 0311/1345] #000 Issue: updated cron time for builds --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 4cf8e068fc..4b2097fff4 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -81,7 +81,7 @@ workflows: nightly: triggers: - schedule: - cron: "0 18 * * *" + cron: "0 17 3/3 * *" filters: branches: only: From 3d401087f43d92237701c26f07710020eb566524 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Sun, 4 Nov 2018 19:54:33 +0530 Subject: [PATCH 0312/1345] #000 Issue: updated cron time for builds --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 4b2097fff4..80e86187ac 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -81,7 +81,7 @@ workflows: nightly: triggers: - schedule: - cron: "0 17 3/3 * *" + cron: "0 17 1,5,9,13,17,21,25,29 * *" filters: branches: only: From a6ae9e4193faf2342c0b5842a3d452bc1266d35b Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Wed, 7 Nov 2018 12:36:58 +0530 Subject: [PATCH 0313/1345] Issue #0000 fix: changed help doc --- deploy/cassandra_restore.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deploy/cassandra_restore.py b/deploy/cassandra_restore.py index 9bda2db5db..3f12f0e1e9 100755 --- a/deploy/cassandra_restore.py +++ b/deploy/cassandra_restore.py @@ -4,7 +4,7 @@ """ To restore the cassandra database snapshot -usage: ./cassandra_restore.py -d ipaddress snapshot_directory_name +usage: ./cassandra_restore.py --host snapshot_directory_name """ from os import walk, sep From 8155739564d44ff09f681671433651bf0a399138 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Wed, 7 Nov 2018 12:39:30 +0530 Subject: [PATCH 0314/1345] Issue #0000 feat: update help doc --- deploy/cassandra_restore.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deploy/cassandra_restore.py b/deploy/cassandra_restore.py index 3f12f0e1e9..9165527e6f 100755 --- a/deploy/cassandra_restore.py +++ b/deploy/cassandra_restore.py @@ -4,7 +4,7 @@ """ To restore the cassandra database snapshot -usage: ./cassandra_restore.py --host snapshot_directory_name +usage: ./cassandra_restore.py --host snapshot_directory_name """ from os import walk, sep From 6233e3a3a75f03242754b0b351206674ff84c63d Mon Sep 17 00:00:00 2001 From: Manzarul Date: Wed, 7 Nov 2018 17:26:08 +0530 Subject: [PATCH 0315/1345] Issues #SB-8577 feat: adding new user profile read api v2 --- ansible/roles/kong-api/defaults/main.yml | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/ansible/roles/kong-api/defaults/main.yml b/ansible/roles/kong-api/defaults/main.yml index e47b0ee475..edb1722a14 100644 --- a/ansible/roles/kong-api/defaults/main.yml +++ b/ansible/roles/kong-api/defaults/main.yml @@ -477,6 +477,22 @@ kong_apis: config.limit_by: credential - name: request-size-limiting config.allowed_payload_size: "{{ small_request_size_limit }}" + - name: getUserProfileV2 + request_path: "{{ user_service_prefix }}/v2/read" + upstream_url: "{{ learning_service_url }}/v2/user/read" + strip_request_path: true + plugins: + - name: jwt + - name: cors + - "{{ statsd_pulgin }}" + - name: acl + config.whitelist: publicUser + - name: rate-limiting + config.policy: local + config.hour: "{{ medium_rate_limit_per_hour }}" + config.limit_by: credential + - name: request-size-limiting + config.allowed_payload_size: "{{ small_request_size_limit }}" - name: searchUser request_path: "{{ user_service_prefix }}/v1/search" upstream_url: "{{ learning_service_url }}/v1/user/search" From 66f67f1710ffa9e0ae2d77b114b6a9e445c5309b Mon Sep 17 00:00:00 2001 From: msknext Date: Thu, 8 Nov 2018 14:35:04 +0530 Subject: [PATCH 0316/1345] Fix: Gets the ip address without adding a space at the end --- deploy/backup_elasticsearch.sh | 2 +- deploy/restore_elasticsearch.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/deploy/backup_elasticsearch.sh b/deploy/backup_elasticsearch.sh index 3d4890ebd0..cf871dc903 100755 --- a/deploy/backup_elasticsearch.sh +++ b/deploy/backup_elasticsearch.sh @@ -1,6 +1,6 @@ #!/bin/sh backup_path=/etc/elasticsearch/backup -es_ip=$(hostname -I) +es_ip=$(hostname -i) #es_ip=$(ip route get 8.8.8.8 | awk '{print $NF; exit}') #Creating backup folder diff --git a/deploy/restore_elasticsearch.sh b/deploy/restore_elasticsearch.sh index 0a08834eef..7171e26e8a 100755 --- a/deploy/restore_elasticsearch.sh +++ b/deploy/restore_elasticsearch.sh @@ -1,6 +1,6 @@ #!/bin/sh backup_path=/etc/elasticsearch/backup -es_ip=$(hostname -I) +es_ip=$(hostname -i) #es_ip=$(ip route get 8.8.8.8 | awk '{print $NF; exit}') #Removing exiting indexes From 9f9f4eaed36555c7473ab731a508d3e28ad1c436 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Fri, 9 Nov 2018 16:01:39 +0530 Subject: [PATCH 0317/1345] #000 Issue: removed playbook check --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 80e86187ac..44d3ef8ffa 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -90,4 +90,4 @@ workflows: - previous-stable - current-stable - current-dev-branch - - playbook-check +# - playbook-check From 03c49ad92ead23dfbef73e41fd934ab2d552abb0 Mon Sep 17 00:00:00 2001 From: Manzarul Date: Fri, 9 Nov 2018 18:38:46 +0530 Subject: [PATCH 0318/1345] Issues #SB-00 fix: adding some new api endpoint , createUserV3 and downlaodFileUploadLink --- ansible/roles/kong-api/defaults/main.yml | 32 ++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/ansible/roles/kong-api/defaults/main.yml b/ansible/roles/kong-api/defaults/main.yml index edb1722a14..3de7cc2ff7 100644 --- a/ansible/roles/kong-api/defaults/main.yml +++ b/ansible/roles/kong-api/defaults/main.yml @@ -445,6 +445,22 @@ kong_apis: config.limit_by: credential - name: request-size-limiting config.allowed_payload_size: "{{ small_request_size_limit }}" + - name: createUserVersion3 + request_path: "{{ user_service_prefix }}/v3/create" + upstream_url: "{{ learning_service_url }}/v3/user/create" + strip_request_path: true + plugins: + - name: jwt + - name: cors + - "{{ statsd_pulgin }}" + - name: acl + config.whitelist: userUpdate + - name: rate-limiting + config.policy: local + config.hour: "{{ medium_rate_limit_per_hour }}" + config.limit_by: credential + - name: request-size-limiting + config.allowed_payload_size: "{{ small_request_size_limit }}" - name: updateUser request_path: "{{ user_service_prefix }}/v1/update" upstream_url: "{{ learning_service_url }}/v1/user/update" @@ -1274,6 +1290,22 @@ kong_apis: config.limit_by: credential - name: request-size-limiting config.allowed_payload_size: "{{ small_request_size_limit }}" + - name: getUploadJobStatusLink + request_path: "{{ data_service_prefix }}/v1/upload/statusDownloadLink" + upstream_url: "{{ learning_service_url }}/v1/upload/statusDownloadLink" + strip_request_path: true + plugins: + - name: jwt + - name: cors + - "{{ statsd_pulgin }}" + - name: acl + config.whitelist: appAdmin + - name: rate-limiting + config.policy: local + config.hour: "{{ medium_rate_limit_per_hour }}" + config.limit_by: credential + - name: request-size-limiting + config.allowed_payload_size: "{{ small_request_size_limit }}" - name: createBatch request_path: "{{ course_service_prefix }}/v1/batch/create" upstream_url: "{{ learning_service_url }}/v1/course/batch/create" From 58cfc1a981c0302be8bb5f395d89dac974106872 Mon Sep 17 00:00:00 2001 From: S M Y Date: Sat, 10 Nov 2018 14:52:18 +0530 Subject: [PATCH 0319/1345] Issue #000 host: merging release-1.12 with testing-cql --- ansible/roles/cassandra/README.md | 78 ++ ansible/roles/cassandra/tasks/main.yml | 9 + .../roles/cassandra/templates/cassandra.yaml | 1041 ----------------- .../cassandra/templates/cassandra.yaml.j2 | 10 +- 4 files changed, 95 insertions(+), 1043 deletions(-) create mode 100755 ansible/roles/cassandra/README.md delete mode 100755 ansible/roles/cassandra/templates/cassandra.yaml diff --git a/ansible/roles/cassandra/README.md b/ansible/roles/cassandra/README.md new file mode 100755 index 0000000000..fac9c2e53a --- /dev/null +++ b/ansible/roles/cassandra/README.md @@ -0,0 +1,78 @@ +Role Name +========= + +An [Ansible] role to install [Cassandra] + +Requirements +------------ + +- Oracle Java 8 + +Install [Ansible] requirements `ansible-galaxy install -r requirements.yml` + +Role Variables +-------------- + +``` +--- +# defaults file for ansible-cassandra +cassandra_cluster_group: 'cassandra-cluster-nodes' +cassandra_cluster_name: 'Test Cluster' +cassandra_cluster_setup: false +cassandra_commitlog_directory: '/var/lib/cassandra/commitlog' +cassandra_config: false +cassandra_debian_repo_info: + repo: 'deb http://www.apache.org/dist/cassandra/debian 36x main' + repo_key: 'https://www.apache.org/dist/cassandra/KEYS' +cassandra_data_file_directories: + - '/var/lib/cassandra/data' +cassandra_hints_directory: '/var/lib/cassandra/hints' +cassandra_listen_address: "{{ hostvars[inventory_hostname]['ansible_' + cassandra_listen_interface]['ipv4']['address'] }}" +cassandra_listen_interface: 'eth1' +cassandra_log_dir: '/var/log/cassandra' +cassandra_root_dir: '/etc/cassandra' +cassandra_saved_caches_directory: '/var/lib/cassandra/saved_caches' +cassandra_seeds: '127.0.0.1' # Only used if not setting up a cluster +cassandra_version: '3.6' +``` + +Dependencies +------------ + +Reference requirements + +Example Playbook +---------------- + +``` +--- +- hosts: cassandra-cluster-nodes + become: true + vars: + cassandra_cluster_setup: true + cassandra_config: true + pri_domain_name: 'test.vagrant.local' + roles: + - role: ansible-oracle-java8 + - role: ansible-cassandra + tasks: +``` + +License +------- + +BSD + +Author Information +------------------ + + +Larry Smith Jr. +- [@mrlesmithjr] +- [EveryThingShouldBeVirtual] +- mrlesmithjr [at] gmail.com + +[@mrlesmithjr]: +[EveryThingShouldBeVirtual]: +[Ansible]: +[Cassandra]: diff --git a/ansible/roles/cassandra/tasks/main.yml b/ansible/roles/cassandra/tasks/main.yml index 1273b7f597..0ca53a2177 100755 --- a/ansible/roles/cassandra/tasks/main.yml +++ b/ansible/roles/cassandra/tasks/main.yml @@ -20,6 +20,15 @@ name: "cassandra" state: "present" +- name: copying the rack and datacenter config file if we are having cluster + template: + src: "cassandra-rackdc.properties.j2" + dest: "{{ cassandra_root_dir }}/cassandra-rackdc.properties" + owner: "root" + group: "root" + mode: "0644" + when: groups['cassandra-2'] is defined + - name: config | Configuring Cassandra template: src: "cassandra.yaml.j2" diff --git a/ansible/roles/cassandra/templates/cassandra.yaml b/ansible/roles/cassandra/templates/cassandra.yaml deleted file mode 100755 index a51f993535..0000000000 --- a/ansible/roles/cassandra/templates/cassandra.yaml +++ /dev/null @@ -1,1041 +0,0 @@ -# Cassandra storage config YAML - -# NOTE: -# See http://wiki.apache.org/cassandra/StorageConfiguration for -# full explanations of configuration directives -# /NOTE - -# The name of the cluster. This is mainly used to prevent machines in -# one logical cluster from joining another. -cluster_name: 'Test Cluster' - -# This defines the number of tokens randomly assigned to this node on the ring -# The more tokens, relative to other nodes, the larger the proportion of data -# that this node will store. You probably want all nodes to have the same number -# of tokens assuming they have equal hardware capability. -# -# If you leave this unspecified, Cassandra will use the default of 1 token for legacy compatibility, -# and will use the initial_token as described below. -# -# Specifying initial_token will override this setting on the node's initial start, -# on subsequent starts, this setting will apply even if initial token is set. -# -# If you already have a cluster with 1 token per node, and wish to migrate to -# multiple tokens per node, see http://wiki.apache.org/cassandra/Operations -num_tokens: 256 - -# Triggers automatic allocation of num_tokens tokens for this node. The allocation -# algorithm attempts to choose tokens in a way that optimizes replicated load over -# the nodes in the datacenter for the replication strategy used by the specified -# keyspace. -# -# The load assigned to each node will be close to proportional to its number of -# vnodes. -# -# Only supported with the Murmur3Partitioner. -# allocate_tokens_for_keyspace: KEYSPACE - -# initial_token allows you to specify tokens manually. While you can use # it with -# vnodes (num_tokens > 1, above) -- in which case you should provide a -# comma-separated list -- it's primarily used when adding nodes # to legacy clusters -# that do not have vnodes enabled. -# initial_token: - -# See http://wiki.apache.org/cassandra/HintedHandoff -# May either be "true" or "false" to enable globally -hinted_handoff_enabled: true -# When hinted_handoff_enabled is true, a black list of data centers that will not -# perform hinted handoff -#hinted_handoff_disabled_datacenters: -# - DC1 -# - DC2 -# this defines the maximum amount of time a dead host will have hints -# generated. After it has been dead this long, new hints for it will not be -# created until it has been seen alive and gone down again. -max_hint_window_in_ms: 10800000 # 3 hours - -# Maximum throttle in KBs per second, per delivery thread. This will be -# reduced proportionally to the number of nodes in the cluster. (If there -# are two nodes in the cluster, each delivery thread will use the maximum -# rate; if there are three, each will throttle to half of the maximum, -# since we expect two nodes to be delivering hints simultaneously.) -hinted_handoff_throttle_in_kb: 1024 - -# Number of threads with which to deliver hints; -# Consider increasing this number when you have multi-dc deployments, since -# cross-dc handoff tends to be slower -max_hints_delivery_threads: 2 - -# Directory where Cassandra should store hints. -# If not set, the default directory is $CASSANDRA_HOME/data/hints. -# hints_directory: /var/lib/cassandra/hints - -# How often hints should be flushed from the internal buffers to disk. -# Will *not* trigger fsync. -hints_flush_period_in_ms: 10000 - -# Maximum size for a single hints file, in megabytes. -max_hints_file_size_in_mb: 128 - -# Compression to apply to the hint files. If omitted, hints files -# will be written uncompressed. LZ4, Snappy, and Deflate compressors -# are supported. -#hints_compression: -# - class_name: LZ4Compressor -# parameters: -# - - -# Maximum throttle in KBs per second, total. This will be -# reduced proportionally to the number of nodes in the cluster. -batchlog_replay_throttle_in_kb: 1024 - -# Authentication backend, implementing IAuthenticator; used to identify users -# Out of the box, Cassandra provides org.apache.cassandra.auth.{AllowAllAuthenticator, -# PasswordAuthenticator}. -# -# - AllowAllAuthenticator performs no checks - set it to disable authentication. -# - PasswordAuthenticator relies on username/password pairs to authenticate -# users. It keeps usernames and hashed passwords in system_auth.credentials table. -# Please increase system_auth keyspace replication factor if you use this authenticator. -# If using PasswordAuthenticator, CassandraRoleManager must also be used (see below) -authenticator: AllowAllAuthenticator - -# Authorization backend, implementing IAuthorizer; used to limit access/provide permissions -# Out of the box, Cassandra provides org.apache.cassandra.auth.{AllowAllAuthorizer, -# CassandraAuthorizer}. -# -# - AllowAllAuthorizer allows any action to any user - set it to disable authorization. -# - CassandraAuthorizer stores permissions in system_auth.permissions table. Please -# increase system_auth keyspace replication factor if you use this authorizer. -authorizer: AllowAllAuthorizer - -# Part of the Authentication & Authorization backend, implementing IRoleManager; used -# to maintain grants and memberships between roles. -# Out of the box, Cassandra provides org.apache.cassandra.auth.CassandraRoleManager, -# which stores role information in the system_auth keyspace. Most functions of the -# IRoleManager require an authenticated login, so unless the configured IAuthenticator -# actually implements authentication, most of this functionality will be unavailable. -# -# - CassandraRoleManager stores role data in the system_auth keyspace. Please -# increase system_auth keyspace replication factor if you use this role manager. -role_manager: CassandraRoleManager - -# Validity period for roles cache (fetching granted roles can be an expensive -# operation depending on the role manager, CassandraRoleManager is one example) -# Granted roles are cached for authenticated sessions in AuthenticatedUser and -# after the period specified here, become eligible for (async) reload. -# Defaults to 2000, set to 0 to disable caching entirely. -# Will be disabled automatically for AllowAllAuthenticator. -roles_validity_in_ms: 2000 - -# Refresh interval for roles cache (if enabled). -# After this interval, cache entries become eligible for refresh. Upon next -# access, an async reload is scheduled and the old value returned until it -# completes. If roles_validity_in_ms is non-zero, then this must be -# also. -# Defaults to the same value as roles_validity_in_ms. -# roles_update_interval_in_ms: 2000 - -# Validity period for permissions cache (fetching permissions can be an -# expensive operation depending on the authorizer, CassandraAuthorizer is -# one example). Defaults to 2000, set to 0 to disable. -# Will be disabled automatically for AllowAllAuthorizer. -permissions_validity_in_ms: 2000 - -# Refresh interval for permissions cache (if enabled). -# After this interval, cache entries become eligible for refresh. Upon next -# access, an async reload is scheduled and the old value returned until it -# completes. If permissions_validity_in_ms is non-zero, then this must be -# also. -# Defaults to the same value as permissions_validity_in_ms. -# permissions_update_interval_in_ms: 2000 - -# Validity period for credentials cache. This cache is tightly coupled to -# the provided PasswordAuthenticator implementation of IAuthenticator. If -# another IAuthenticator implementation is configured, this cache will not -# be automatically used and so the following settings will have no effect. -# Please note, credentials are cached in their encrypted form, so while -# activating this cache may reduce the number of queries made to the -# underlying table, it may not bring a significant reduction in the -# latency of individual authentication attempts. -# Defaults to 2000, set to 0 to disable credentials caching. -credentials_validity_in_ms: 2000 - -# Refresh interval for credentials cache (if enabled). -# After this interval, cache entries become eligible for refresh. Upon next -# access, an async reload is scheduled and the old value returned until it -# completes. If credentials_validity_in_ms is non-zero, then this must be -# also. -# Defaults to the same value as credentials_validity_in_ms. -# credentials_update_interval_in_ms: 2000 - -# The partitioner is responsible for distributing groups of rows (by -# partition key) across nodes in the cluster. You should leave this -# alone for new clusters. The partitioner can NOT be changed without -# reloading all data, so when upgrading you should set this to the -# same partitioner you were already using. -# -# Besides Murmur3Partitioner, partitioners included for backwards -# compatibility include RandomPartitioner, ByteOrderedPartitioner, and -# OrderPreservingPartitioner. -# -partitioner: org.apache.cassandra.dht.Murmur3Partitioner - -# Directories where Cassandra should store data on disk. Cassandra -# will spread data evenly across them, subject to the granularity of -# the configured compaction strategy. -# If not set, the default directory is $CASSANDRA_HOME/data/data. -data_file_directories: - - /var/lib/cassandra/data - -# commit log. when running on magnetic HDD, this should be a -# separate spindle than the data directories. -# If not set, the default directory is $CASSANDRA_HOME/data/commitlog. -commitlog_directory: /var/lib/cassandra/commitlog - -# policy for data disk failures: -# die: shut down gossip and client transports and kill the JVM for any fs errors or -# single-sstable errors, so the node can be replaced. -# stop_paranoid: shut down gossip and client transports even for single-sstable errors, -# kill the JVM for errors during startup. -# stop: shut down gossip and client transports, leaving the node effectively dead, but -# can still be inspected via JMX, kill the JVM for errors during startup. -# best_effort: stop using the failed disk and respond to requests based on -# remaining available sstables. This means you WILL see obsolete -# data at CL.ONE! -# ignore: ignore fatal errors and let requests fail, as in pre-1.2 Cassandra -disk_failure_policy: stop - -# policy for commit disk failures: -# die: shut down gossip and Thrift and kill the JVM, so the node can be replaced. -# stop: shut down gossip and Thrift, leaving the node effectively dead, but -# can still be inspected via JMX. -# stop_commit: shutdown the commit log, letting writes collect but -# continuing to service reads, as in pre-2.0.5 Cassandra -# ignore: ignore fatal errors and let the batches fail -commit_failure_policy: stop - -# Maximum size of the native protocol prepared statement cache -# -# Valid values are either "auto" (omitting the value) or a value greater 0. -# -# Note that specifying a too large value will result in long running GCs and possbily -# out-of-memory errors. Keep the value at a small fraction of the heap. -# -# If you constantly see "prepared statements discarded in the last minute because -# cache limit reached" messages, the first step is to investigate the root cause -# of these messages and check whether prepared statements are used correctly - -# i.e. use bind markers for variable parts. -# -# Do only change the default value, if you really have more prepared statements than -# fit in the cache. In most cases it is not neccessary to change this value. -# Constantly re-preparing statements is a performance penalty. -# -# Default value ("auto") is 1/256th of the heap or 10MB, whichever is greater -prepared_statements_cache_size_mb: - -# Maximum size of the Thrift prepared statement cache -# -# If you do not use Thrift at all, it is safe to leave this value at "auto". -# -# See description of 'prepared_statements_cache_size_mb' above for more information. -# -# Default value ("auto") is 1/256th of the heap or 10MB, whichever is greater -thrift_prepared_statements_cache_size_mb: - -# Maximum size of the key cache in memory. -# -# Each key cache hit saves 1 seek and each row cache hit saves 2 seeks at the -# minimum, sometimes more. The key cache is fairly tiny for the amount of -# time it saves, so it's worthwhile to use it at large numbers. -# The row cache saves even more time, but must contain the entire row, -# so it is extremely space-intensive. It's best to only use the -# row cache if you have hot rows or static rows. -# -# NOTE: if you reduce the size, you may not get you hottest keys loaded on startup. -# -# Default value is empty to make it "auto" (min(5% of Heap (in MB), 100MB)). Set to 0 to disable key cache. -key_cache_size_in_mb: - -# Duration in seconds after which Cassandra should -# save the key cache. Caches are saved to saved_caches_directory as -# specified in this configuration file. -# -# Saved caches greatly improve cold-start speeds, and is relatively cheap in -# terms of I/O for the key cache. Row cache saving is much more expensive and -# has limited use. -# -# Default is 14400 or 4 hours. -key_cache_save_period: 14400 - -# Number of keys from the key cache to save -# Disabled by default, meaning all keys are going to be saved -# key_cache_keys_to_save: 100 - -# Row cache implementation class name. -# Available implementations: -# org.apache.cassandra.cache.OHCProvider Fully off-heap row cache implementation (default). -# org.apache.cassandra.cache.SerializingCacheProvider This is the row cache implementation availabile -# in previous releases of Cassandra. -# row_cache_class_name: org.apache.cassandra.cache.OHCProvider - -# Maximum size of the row cache in memory. -# Please note that OHC cache implementation requires some additional off-heap memory to manage -# the map structures and some in-flight memory during operations before/after cache entries can be -# accounted against the cache capacity. This overhead is usually small compared to the whole capacity. -# Do not specify more memory that the system can afford in the worst usual situation and leave some -# headroom for OS block level cache. Do never allow your system to swap. -# -# Default value is 0, to disable row caching. -row_cache_size_in_mb: 0 - -# Duration in seconds after which Cassandra should save the row cache. -# Caches are saved to saved_caches_directory as specified in this configuration file. -# -# Saved caches greatly improve cold-start speeds, and is relatively cheap in -# terms of I/O for the key cache. Row cache saving is much more expensive and -# has limited use. -# -# Default is 0 to disable saving the row cache. -row_cache_save_period: 0 - -# Number of keys from the row cache to save. -# Specify 0 (which is the default), meaning all keys are going to be saved -# row_cache_keys_to_save: 100 - -# Maximum size of the counter cache in memory. -# -# Counter cache helps to reduce counter locks' contention for hot counter cells. -# In case of RF = 1 a counter cache hit will cause Cassandra to skip the read before -# write entirely. With RF > 1 a counter cache hit will still help to reduce the duration -# of the lock hold, helping with hot counter cell updates, but will not allow skipping -# the read entirely. Only the local (clock, count) tuple of a counter cell is kept -# in memory, not the whole counter, so it's relatively cheap. -# -# NOTE: if you reduce the size, you may not get you hottest keys loaded on startup. -# -# Default value is empty to make it "auto" (min(2.5% of Heap (in MB), 50MB)). Set to 0 to disable counter cache. -# NOTE: if you perform counter deletes and rely on low gcgs, you should disable the counter cache. -counter_cache_size_in_mb: - -# Duration in seconds after which Cassandra should -# save the counter cache (keys only). Caches are saved to saved_caches_directory as -# specified in this configuration file. -# -# Default is 7200 or 2 hours. -counter_cache_save_period: 7200 - -# Number of keys from the counter cache to save -# Disabled by default, meaning all keys are going to be saved -# counter_cache_keys_to_save: 100 - -# saved caches -# If not set, the default directory is $CASSANDRA_HOME/data/saved_caches. -saved_caches_directory: /var/lib/cassandra/saved_caches - -# commitlog_sync may be either "periodic" or "batch." -# -# When in batch mode, Cassandra won't ack writes until the commit log -# has been fsynced to disk. It will wait -# commitlog_sync_batch_window_in_ms milliseconds between fsyncs. -# This window should be kept short because the writer threads will -# be unable to do extra work while waiting. (You may need to increase -# concurrent_writes for the same reason.) -# -# commitlog_sync: batch -# commitlog_sync_batch_window_in_ms: 2 -# -# the other option is "periodic" where writes may be acked immediately -# and the CommitLog is simply synced every commitlog_sync_period_in_ms -# milliseconds. -commitlog_sync: periodic -commitlog_sync_period_in_ms: 10000 - -# The size of the individual commitlog file segments. A commitlog -# segment may be archived, deleted, or recycled once all the data -# in it (potentially from each columnfamily in the system) has been -# flushed to sstables. -# -# The default size is 32, which is almost always fine, but if you are -# archiving commitlog segments (see commitlog_archiving.properties), -# then you probably want a finer granularity of archiving; 8 or 16 MB -# is reasonable. -# Max mutation size is also configurable via max_mutation_size_in_kb setting in -# cassandra.yaml. The default is half the size commitlog_segment_size_in_mb * 1024. -# -# NOTE: If max_mutation_size_in_kb is set explicitly then commitlog_segment_size_in_mb must -# be set to at least twice the size of max_mutation_size_in_kb / 1024 -# -commitlog_segment_size_in_mb: 32 - -# Compression to apply to the commit log. If omitted, the commit log -# will be written uncompressed. LZ4, Snappy, and Deflate compressors -# are supported. -#commitlog_compression: -# - class_name: LZ4Compressor -# parameters: -# - - -# any class that implements the SeedProvider interface and has a -# constructor that takes a Map of parameters will do. -seed_provider: - # Addresses of hosts that are deemed contact points. - # Cassandra nodes use this list of hosts to find each other and learn - # the topology of the ring. You must change this if you are running - # multiple nodes! - - class_name: org.apache.cassandra.locator.SimpleSeedProvider - parameters: - # seeds is actually a comma-delimited list of addresses. - # Ex: ",," - - seeds: "127.0.0.1" - -# For workloads with more data than can fit in memory, Cassandra's -# bottleneck will be reads that need to fetch data from -# disk. "concurrent_reads" should be set to (16 * number_of_drives) in -# order to allow the operations to enqueue low enough in the stack -# that the OS and drives can reorder them. Same applies to -# "concurrent_counter_writes", since counter writes read the current -# values before incrementing and writing them back. -# -# On the other hand, since writes are almost never IO bound, the ideal -# number of "concurrent_writes" is dependent on the number of cores in -# your system; (8 * number_of_cores) is a good rule of thumb. -concurrent_reads: 32 -concurrent_writes: 32 -concurrent_counter_writes: 32 - -# For materialized view writes, as there is a read involved, so this should -# be limited by the less of concurrent reads or concurrent writes. -concurrent_materialized_view_writes: 32 - -# Maximum memory to use for sstable chunk cache and buffer pooling. -# 32MB of this are reserved for pooling buffers, the rest is used as an -# cache that holds uncompressed sstable chunks. -# Defaults to the smaller of 1/4 of heap or 512MB. This pool is allocated off-heap, -# so is in addition to the memory allocated for heap. The cache also has on-heap -# overhead which is roughly 128 bytes per chunk (i.e. 0.2% of the reserved size -# if the default 64k chunk size is used). -# Memory is only allocated when needed. -# file_cache_size_in_mb: 512 - -# Flag indicating whether to allocate on or off heap when the sstable buffer -# pool is exhausted, that is when it has exceeded the maximum memory -# file_cache_size_in_mb, beyond which it will not cache buffers but allocate on request. - -# buffer_pool_use_heap_if_exhausted: true - -# The strategy for optimizing disk read -# Possible values are: -# ssd (for solid state disks, the default) -# spinning (for spinning disks) -# disk_optimization_strategy: ssd - -# Total permitted memory to use for memtables. Cassandra will stop -# accepting writes when the limit is exceeded until a flush completes, -# and will trigger a flush based on memtable_cleanup_threshold -# If omitted, Cassandra will set both to 1/4 the size of the heap. -# memtable_heap_space_in_mb: 2048 -# memtable_offheap_space_in_mb: 2048 - -# Ratio of occupied non-flushing memtable size to total permitted size -# that will trigger a flush of the largest memtable. Larger mct will -# mean larger flushes and hence less compaction, but also less concurrent -# flush activity which can make it difficult to keep your disks fed -# under heavy write load. -# -# memtable_cleanup_threshold defaults to 1 / (memtable_flush_writers + 1) -# memtable_cleanup_threshold: 0.11 - -# Specify the way Cassandra allocates and manages memtable memory. -# Options are: -# heap_buffers: on heap nio buffers -# offheap_buffers: off heap (direct) nio buffers -# offheap_objects: off heap objects -memtable_allocation_type: heap_buffers - -# Total space to use for commit logs on disk. -# -# If space gets above this value, Cassandra will flush every dirty CF -# in the oldest segment and remove it. So a small total commitlog space -# will tend to cause more flush activity on less-active columnfamilies. -# -# The default value is the smaller of 8192, and 1/4 of the total space -# of the commitlog volume. -# -# commitlog_total_space_in_mb: 8192 - -# This sets the amount of memtable flush writer threads. These will -# be blocked by disk io, and each one will hold a memtable in memory -# while blocked. -# -# memtable_flush_writers defaults to one per data_file_directory. -# -# If your data directories are backed by SSD, you can increase this, but -# avoid having memtable_flush_writers * data_file_directories > number of cores -#memtable_flush_writers: 1 - -# A fixed memory pool size in MB for for SSTable index summaries. If left -# empty, this will default to 5% of the heap size. If the memory usage of -# all index summaries exceeds this limit, SSTables with low read rates will -# shrink their index summaries in order to meet this limit. However, this -# is a best-effort process. In extreme conditions Cassandra may need to use -# more than this amount of memory. -index_summary_capacity_in_mb: - -# How frequently index summaries should be resampled. This is done -# periodically to redistribute memory from the fixed-size pool to sstables -# proportional their recent read rates. Setting to -1 will disable this -# process, leaving existing index summaries at their current sampling level. -index_summary_resize_interval_in_minutes: 60 - -# Whether to, when doing sequential writing, fsync() at intervals in -# order to force the operating system to flush the dirty -# buffers. Enable this to avoid sudden dirty buffer flushing from -# impacting read latencies. Almost always a good idea on SSDs; not -# necessarily on platters. -trickle_fsync: false -trickle_fsync_interval_in_kb: 10240 - -# TCP port, for commands and data -# For security reasons, you should not expose this port to the internet. Firewall it if needed. -storage_port: 7000 - -# SSL port, for encrypted communication. Unused unless enabled in -# encryption_options -# For security reasons, you should not expose this port to the internet. Firewall it if needed. -ssl_storage_port: 7001 - -# Address or interface to bind to and tell other Cassandra nodes to connect to. -# You _must_ change this if you want multiple nodes to be able to communicate! -# -# Set listen_address OR listen_interface, not both. Interfaces must correspond -# to a single address, IP aliasing is not supported. -# -# Leaving it blank leaves it up to InetAddress.getLocalHost(). This -# will always do the Right Thing _if_ the node is properly configured -# (hostname, name resolution, etc), and the Right Thing is to use the -# address associated with the hostname (it might not be). -# -# Setting listen_address to 0.0.0.0 is always wrong. -# -# If you choose to specify the interface by name and the interface has an ipv4 and an ipv6 address -# you can specify which should be chosen using listen_interface_prefer_ipv6. If false the first ipv4 -# address will be used. If true the first ipv6 address will be used. Defaults to false preferring -# ipv4. If there is only one address it will be selected regardless of ipv4/ipv6. -listen_address: localhost -# listen_interface: eth0 -# listen_interface_prefer_ipv6: false - -# Address to broadcast to other Cassandra nodes -# Leaving this blank will set it to the same value as listen_address -# broadcast_address: 1.2.3.4 - -# When using multiple physical network interfaces, set this -# to true to listen on broadcast_address in addition to -# the listen_address, allowing nodes to communicate in both -# interfaces. -# Ignore this property if the network configuration automatically -# routes between the public and private networks such as EC2. -# listen_on_broadcast_address: false - -# Internode authentication backend, implementing IInternodeAuthenticator; -# used to allow/disallow connections from peer nodes. -# internode_authenticator: org.apache.cassandra.auth.AllowAllInternodeAuthenticator - -# Whether to start the native transport server. -# Please note that the address on which the native transport is bound is the -# same as the rpc_address. The port however is different and specified below. -start_native_transport: true -# port for the CQL native transport to listen for clients on -# For security reasons, you should not expose this port to the internet. Firewall it if needed. -native_transport_port: 9042 -# Enabling native transport encryption in client_encryption_options allows you to either use -# encryption for the standard port or to use a dedicated, additional port along with the unencrypted -# standard native_transport_port. -# Enabling client encryption and keeping native_transport_port_ssl disabled will use encryption -# for native_transport_port. Setting native_transport_port_ssl to a different value -# from native_transport_port will use encryption for native_transport_port_ssl while -# keeping native_transport_port unencrypted. -# native_transport_port_ssl: 9142 -# The maximum threads for handling requests when the native transport is used. -# This is similar to rpc_max_threads though the default differs slightly (and -# there is no native_transport_min_threads, idle threads will always be stopped -# after 30 seconds). -# native_transport_max_threads: 128 -# -# The maximum size of allowed frame. Frame (requests) larger than this will -# be rejected as invalid. The default is 256MB. -# native_transport_max_frame_size_in_mb: 256 - -# The maximum number of concurrent client connections. -# The default is -1, which means unlimited. -# native_transport_max_concurrent_connections: -1 - -# The maximum number of concurrent client connections per source ip. -# The default is -1, which means unlimited. -# native_transport_max_concurrent_connections_per_ip: -1 - -# Whether to start the thrift rpc server. -start_rpc: false - -# The address or interface to bind the Thrift RPC service and native transport -# server to. -# -# Set rpc_address OR rpc_interface, not both. Interfaces must correspond -# to a single address, IP aliasing is not supported. -# -# Leaving rpc_address blank has the same effect as on listen_address -# (i.e. it will be based on the configured hostname of the node). -# -# Note that unlike listen_address, you can specify 0.0.0.0, but you must also -# set broadcast_rpc_address to a value other than 0.0.0.0. -# -# For security reasons, you should not expose this port to the internet. Firewall it if needed. -# -# If you choose to specify the interface by name and the interface has an ipv4 and an ipv6 address -# you can specify which should be chosen using rpc_interface_prefer_ipv6. If false the first ipv4 -# address will be used. If true the first ipv6 address will be used. Defaults to false preferring -# ipv4. If there is only one address it will be selected regardless of ipv4/ipv6. -rpc_address: localhost -# rpc_interface: eth1 -# rpc_interface_prefer_ipv6: false - -# port for Thrift to listen for clients on -rpc_port: 9160 - -# RPC address to broadcast to drivers and other Cassandra nodes. This cannot -# be set to 0.0.0.0. If left blank, this will be set to the value of -# rpc_address. If rpc_address is set to 0.0.0.0, broadcast_rpc_address must -# be set. -# broadcast_rpc_address: 1.2.3.4 - -# enable or disable keepalive on rpc/native connections -rpc_keepalive: true - -# Cassandra provides two out-of-the-box options for the RPC Server: -# -# sync -> One thread per thrift connection. For a very large number of clients, memory -# will be your limiting factor. On a 64 bit JVM, 180KB is the minimum stack size -# per thread, and that will correspond to your use of virtual memory (but physical memory -# may be limited depending on use of stack space). -# -# hsha -> Stands for "half synchronous, half asynchronous." All thrift clients are handled -# asynchronously using a small number of threads that does not vary with the amount -# of thrift clients (and thus scales well to many clients). The rpc requests are still -# synchronous (one thread per active request). If hsha is selected then it is essential -# that rpc_max_threads is changed from the default value of unlimited. -# -# The default is sync because on Windows hsha is about 30% slower. On Linux, -# sync/hsha performance is about the same, with hsha of course using less memory. -# -# Alternatively, can provide your own RPC server by providing the fully-qualified class name -# of an o.a.c.t.TServerFactory that can create an instance of it. -rpc_server_type: sync - -# Uncomment rpc_min|max_thread to set request pool size limits. -# -# Regardless of your choice of RPC server (see above), the number of maximum requests in the -# RPC thread pool dictates how many concurrent requests are possible (but if you are using the sync -# RPC server, it also dictates the number of clients that can be connected at all). -# -# The default is unlimited and thus provides no protection against clients overwhelming the server. You are -# encouraged to set a maximum that makes sense for you in production, but do keep in mind that -# rpc_max_threads represents the maximum number of client requests this server may execute concurrently. -# -# rpc_min_threads: 16 -# rpc_max_threads: 2048 - -# uncomment to set socket buffer sizes on rpc connections -# rpc_send_buff_size_in_bytes: -# rpc_recv_buff_size_in_bytes: - -# Uncomment to set socket buffer size for internode communication -# Note that when setting this, the buffer size is limited by net.core.wmem_max -# and when not setting it it is defined by net.ipv4.tcp_wmem -# See: -# /proc/sys/net/core/wmem_max -# /proc/sys/net/core/rmem_max -# /proc/sys/net/ipv4/tcp_wmem -# /proc/sys/net/ipv4/tcp_wmem -# and: man tcp -# internode_send_buff_size_in_bytes: -# internode_recv_buff_size_in_bytes: - -# Frame size for thrift (maximum message length). -thrift_framed_transport_size_in_mb: 15 - -# Set to true to have Cassandra create a hard link to each sstable -# flushed or streamed locally in a backups/ subdirectory of the -# keyspace data. Removing these links is the operator's -# responsibility. -incremental_backups: false - -# Whether or not to take a snapshot before each compaction. Be -# careful using this option, since Cassandra won't clean up the -# snapshots for you. Mostly useful if you're paranoid when there -# is a data format change. -snapshot_before_compaction: false - -# Whether or not a snapshot is taken of the data before keyspace truncation -# or dropping of column families. The STRONGLY advised default of true -# should be used to provide data safety. If you set this flag to false, you will -# lose data on truncation or drop. -auto_snapshot: true - -# Granularity of the collation index of rows within a partition. -# Increase if your rows are large, or if you have a very large -# number of rows per partition. The competing goals are these: -# 1) a smaller granularity means more index entries are generated -# and looking up rows withing the partition by collation column -# is faster -# 2) but, Cassandra will keep the collation index in memory for hot -# rows (as part of the key cache), so a larger granularity means -# you can cache more hot rows -column_index_size_in_kb: 64 -# Per sstable indexed key cache entries (the collation index in memory -# mentioned above) exceeding this size will not be held on heap. -# This means that only partition information is held on heap and the -# index entries are read from disk. -# -# Note that this size refers to the size of the -# serialized index information and not the size of the partition. -column_index_cache_size_in_kb: 2 - -# Number of simultaneous compactions to allow, NOT including -# validation "compactions" for anti-entropy repair. Simultaneous -# compactions can help preserve read performance in a mixed read/write -# workload, by mitigating the tendency of small sstables to accumulate -# during a single long running compactions. The default is usually -# fine and if you experience problems with compaction running too -# slowly or too fast, you should look at -# compaction_throughput_mb_per_sec first. -# -# concurrent_compactors defaults to the smaller of (number of disks, -# number of cores), with a minimum of 2 and a maximum of 8. -# -# If your data directories are backed by SSD, you should increase this -# to the number of cores. -#concurrent_compactors: 1 - -# Throttles compaction to the given total throughput across the entire -# system. The faster you insert data, the faster you need to compact in -# order to keep the sstable count down, but in general, setting this to -# 16 to 32 times the rate you are inserting data is more than sufficient. -# Setting this to 0 disables throttling. Note that this account for all types -# of compaction, including validation compaction. -compaction_throughput_mb_per_sec: 16 - -# When compacting, the replacement sstable(s) can be opened before they -# are completely written, and used in place of the prior sstables for -# any range that has been written. This helps to smoothly transfer reads -# between the sstables, reducing page cache churn and keeping hot rows hot -sstable_preemptive_open_interval_in_mb: 50 - -# Throttles all outbound streaming file transfers on this node to the -# given total throughput in Mbps. This is necessary because Cassandra does -# mostly sequential IO when streaming data during bootstrap or repair, which -# can lead to saturating the network connection and degrading rpc performance. -# When unset, the default is 200 Mbps or 25 MB/s. -# stream_throughput_outbound_megabits_per_sec: 200 - -# Throttles all streaming file transfer between the datacenters, -# this setting allows users to throttle inter dc stream throughput in addition -# to throttling all network stream traffic as configured with -# stream_throughput_outbound_megabits_per_sec -# When unset, the default is 200 Mbps or 25 MB/s -# inter_dc_stream_throughput_outbound_megabits_per_sec: 200 - -# How long the coordinator should wait for read operations to complete -read_request_timeout_in_ms: 5000 -# How long the coordinator should wait for seq or index scans to complete -range_request_timeout_in_ms: 10000 -# How long the coordinator should wait for writes to complete -write_request_timeout_in_ms: 2000 -# How long the coordinator should wait for counter writes to complete -counter_write_request_timeout_in_ms: 5000 -# How long a coordinator should continue to retry a CAS operation -# that contends with other proposals for the same row -cas_contention_timeout_in_ms: 1000 -# How long the coordinator should wait for truncates to complete -# (This can be much longer, because unless auto_snapshot is disabled -# we need to flush first so we can snapshot before removing the data.) -truncate_request_timeout_in_ms: 60000 -# The default timeout for other, miscellaneous operations -request_timeout_in_ms: 10000 - -# Enable operation timeout information exchange between nodes to accurately -# measure request timeouts. If disabled, replicas will assume that requests -# were forwarded to them instantly by the coordinator, which means that -# under overload conditions we will waste that much extra time processing -# already-timed-out requests. -# -# Warning: before enabling this property make sure to ntp is installed -# and the times are synchronized between the nodes. -cross_node_timeout: false - -# Set socket timeout for streaming operation. -# The stream session is failed if no data is received by any of the -# participants within that period. -# Default value is 3600000, which means streams timeout after an hour. -# streaming_socket_timeout_in_ms: 3600000 - -# phi value that must be reached for a host to be marked down. -# most users should never need to adjust this. -# phi_convict_threshold: 8 - -# endpoint_snitch -- Set this to a class that implements -# IEndpointSnitch. The snitch has two functions: -# - it teaches Cassandra enough about your network topology to route -# requests efficiently -# - it allows Cassandra to spread replicas around your cluster to avoid -# correlated failures. It does this by grouping machines into -# "datacenters" and "racks." Cassandra will do its best not to have -# more than one replica on the same "rack" (which may not actually -# be a physical location) -# -# IF YOU CHANGE THE SNITCH AFTER DATA IS INSERTED INTO THE CLUSTER, -# YOU MUST RUN A FULL REPAIR, SINCE THE SNITCH AFFECTS WHERE REPLICAS -# ARE PLACED. -# -# IF THE RACK A REPLICA IS PLACED IN CHANGES AFTER THE REPLICA HAS BEEN -# ADDED TO A RING, THE NODE MUST BE DECOMMISSIONED AND REBOOTSTRAPPED. -# -# Out of the box, Cassandra provides -# - SimpleSnitch: -# Treats Strategy order as proximity. This can improve cache -# locality when disabling read repair. Only appropriate for -# single-datacenter deployments. -# - GossipingPropertyFileSnitch -# This should be your go-to snitch for production use. The rack -# and datacenter for the local node are defined in -# cassandra-rackdc.properties and propagated to other nodes via -# gossip. If cassandra-topology.properties exists, it is used as a -# fallback, allowing migration from the PropertyFileSnitch. -# - PropertyFileSnitch: -# Proximity is determined by rack and data center, which are -# explicitly configured in cassandra-topology.properties. -# - Ec2Snitch: -# Appropriate for EC2 deployments in a single Region. Loads Region -# and Availability Zone information from the EC2 API. The Region is -# treated as the datacenter, and the Availability Zone as the rack. -# Only private IPs are used, so this will not work across multiple -# Regions. -# - Ec2MultiRegionSnitch: -# Uses public IPs as broadcast_address to allow cross-region -# connectivity. (Thus, you should set seed addresses to the public -# IP as well.) You will need to open the storage_port or -# ssl_storage_port on the public IP firewall. (For intra-Region -# traffic, Cassandra will switch to the private IP after -# establishing a connection.) -# - RackInferringSnitch: -# Proximity is determined by rack and data center, which are -# assumed to correspond to the 3rd and 2nd octet of each node's IP -# address, respectively. Unless this happens to match your -# deployment conventions, this is best used as an example of -# writing a custom Snitch class and is provided in that spirit. -# -# You can use a custom Snitch by setting this to the full class name -# of the snitch, which will be assumed to be on your classpath. -endpoint_snitch: SimpleSnitch - -# controls how often to perform the more expensive part of host score -# calculation -dynamic_snitch_update_interval_in_ms: 100 -# controls how often to reset all host scores, allowing a bad host to -# possibly recover -dynamic_snitch_reset_interval_in_ms: 600000 -# if set greater than zero and read_repair_chance is < 1.0, this will allow -# 'pinning' of replicas to hosts in order to increase cache capacity. -# The badness threshold will control how much worse the pinned host has to be -# before the dynamic snitch will prefer other replicas over it. This is -# expressed as a double which represents a percentage. Thus, a value of -# 0.2 means Cassandra would continue to prefer the static snitch values -# until the pinned host was 20% worse than the fastest. -dynamic_snitch_badness_threshold: 0.1 - -# request_scheduler -- Set this to a class that implements -# RequestScheduler, which will schedule incoming client requests -# according to the specific policy. This is useful for multi-tenancy -# with a single Cassandra cluster. -# NOTE: This is specifically for requests from the client and does -# not affect inter node communication. -# org.apache.cassandra.scheduler.NoScheduler - No scheduling takes place -# org.apache.cassandra.scheduler.RoundRobinScheduler - Round robin of -# client requests to a node with a separate queue for each -# request_scheduler_id. The scheduler is further customized by -# request_scheduler_options as described below. -request_scheduler: org.apache.cassandra.scheduler.NoScheduler - -# Scheduler Options vary based on the type of scheduler -# NoScheduler - Has no options -# RoundRobin -# - throttle_limit -- The throttle_limit is the number of in-flight -# requests per client. Requests beyond -# that limit are queued up until -# running requests can complete. -# The value of 80 here is twice the number of -# concurrent_reads + concurrent_writes. -# - default_weight -- default_weight is optional and allows for -# overriding the default which is 1. -# - weights -- Weights are optional and will default to 1 or the -# overridden default_weight. The weight translates into how -# many requests are handled during each turn of the -# RoundRobin, based on the scheduler id. -# -# request_scheduler_options: -# throttle_limit: 80 -# default_weight: 5 -# weights: -# Keyspace1: 1 -# Keyspace2: 5 - -# request_scheduler_id -- An identifier based on which to perform -# the request scheduling. Currently the only valid option is keyspace. -# request_scheduler_id: keyspace - -# Enable or disable inter-node encryption -# JVM defaults for supported SSL socket protocols and cipher suites can -# be replaced using custom encryption options. This is not recommended -# unless you have policies in place that dictate certain settings, or -# need to disable vulnerable ciphers or protocols in case the JVM cannot -# be updated. -# FIPS compliant settings can be configured at JVM level and should not -# involve changing encryption settings here: -# https://docs.oracle.com/javase/8/docs/technotes/guides/security/jsse/FIPS.html -# NOTE: No custom encryption options are enabled at the moment -# The available internode options are : all, none, dc, rack -# -# If set to dc cassandra will encrypt the traffic between the DCs -# If set to rack cassandra will encrypt the traffic between the racks -# -# The passwords used in these options must match the passwords used when generating -# the keystore and truststore. For instructions on generating these files, see: -# http://download.oracle.com/javase/6/docs/technotes/guides/security/jsse/JSSERefGuide.html#CreateKeystore -# -server_encryption_options: - internode_encryption: none - keystore: conf/.keystore - keystore_password: cassandra - truststore: conf/.truststore - truststore_password: cassandra - # More advanced defaults below: - # protocol: TLS - # algorithm: SunX509 - # store_type: JKS - # cipher_suites: [TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_DHE_RSA_WITH_AES_128_CBC_SHA,TLS_DHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA] - # require_client_auth: false - # require_endpoint_verification: false - -# enable or disable client/server encryption. -client_encryption_options: - enabled: false - # If enabled and optional is set to true encrypted and unencrypted connections are handled. - optional: false - keystore: conf/.keystore - keystore_password: cassandra - # require_client_auth: false - # Set trustore and truststore_password if require_client_auth is true - # truststore: conf/.truststore - # truststore_password: cassandra - # More advanced defaults below: - # protocol: TLS - # algorithm: SunX509 - # store_type: JKS - # cipher_suites: [TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_DHE_RSA_WITH_AES_128_CBC_SHA,TLS_DHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA] - -# internode_compression controls whether traffic between nodes is -# compressed. -# can be: all - all traffic is compressed -# dc - traffic between different datacenters is compressed -# none - nothing is compressed. -internode_compression: dc - -# Enable or disable tcp_nodelay for inter-dc communication. -# Disabling it will result in larger (but fewer) network packets being sent, -# reducing overhead from the TCP protocol itself, at the cost of increasing -# latency if you block for cross-datacenter responses. -inter_dc_tcp_nodelay: false - -# TTL for different trace types used during logging of the repair process. -tracetype_query_ttl: 86400 -tracetype_repair_ttl: 604800 - -# UDFs (user defined functions) are disabled by default. -# As of Cassandra 3.0 there is a sandbox in place that should prevent execution of evil code. -enable_user_defined_functions: false - -# Enables scripted UDFs (JavaScript UDFs). -# Java UDFs are always enabled, if enable_user_defined_functions is true. -# Enable this option to be able to use UDFs with "language javascript" or any custom JSR-223 provider. -# This option has no effect, if enable_user_defined_functions is false. -enable_scripted_user_defined_functions: false - -# The default Windows kernel timer and scheduling resolution is 15.6ms for power conservation. -# Lowering this value on Windows can provide much tighter latency and better throughput, however -# some virtualized environments may see a negative performance impact from changing this setting -# below their system default. The sysinternals 'clockres' tool can confirm your system's default -# setting. -windows_timer_interval: 1 - - -# Enables encrypting data at-rest (on disk). Different key providers can be plugged in, but the default reads from -# a JCE-style keystore. A single keystore can hold multiple keys, but the one referenced by -# the "key_alias" is the only key that will be used for encrypt opertaions; previously used keys -# can still (and should!) be in the keystore and will be used on decrypt operations -# (to handle the case of key rotation). -# -# It is strongly recommended to download and install Java Cryptography Extension (JCE) -# Unlimited Strength Jurisdiction Policy Files for your version of the JDK. -# (current link: http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html) -# -# Currently, only the following file types are supported for transparent data encryption, although -# more are coming in future cassandra releases: commitlog, hints -transparent_data_encryption_options: - enabled: false - chunk_length_kb: 64 - cipher: AES/CBC/PKCS5Padding - key_alias: testing:1 - # CBC IV length for AES needs to be 16 bytes (which is also the default size) - # iv_length: 16 - key_provider: - - class_name: org.apache.cassandra.security.JKSKeyProvider - parameters: - - keystore: conf/.keystore - keystore_password: cassandra - store_type: JCEKS - key_password: cassandra - - -##################### -# SAFETY THRESHOLDS # -##################### - -# When executing a scan, within or across a partition, we need to keep the -# tombstones seen in memory so we can return them to the coordinator, which -# will use them to make sure other replicas also know about the deleted rows. -# With workloads that generate a lot of tombstones, this can cause performance -# problems and even exaust the server heap. -# (http://www.datastax.com/dev/blog/cassandra-anti-patterns-queues-and-queue-like-datasets) -# Adjust the thresholds here if you understand the dangers and want to -# scan more tombstones anyway. These thresholds may also be adjusted at runtime -# using the StorageService mbean. -tombstone_warn_threshold: 1000 -tombstone_failure_threshold: 100000 - -# Log WARN on any batch size exceeding this value. 5kb per batch by default. -# Caution should be taken on increasing the size of this threshold as it can lead to node instability. -batch_size_warn_threshold_in_kb: 5 - -# Fail any batch exceeding this value. 50kb (10x warn threshold) by default. -batch_size_fail_threshold_in_kb: 50 - -# Log WARN on any batches not of type LOGGED than span across more partitions than this limit -unlogged_batch_across_partitions_warn_threshold: 10 - -# Log a warning when compacting partitions larger than this value -compaction_large_partition_warning_threshold_mb: 100 - -# GC Pauses greater than gc_warn_threshold_in_ms will be logged at WARN level -# Adjust the threshold based on your application throughput requirement -# By default, Cassandra logs GC Pauses greater than 200 ms at INFO level -gc_warn_threshold_in_ms: 1000 diff --git a/ansible/roles/cassandra/templates/cassandra.yaml.j2 b/ansible/roles/cassandra/templates/cassandra.yaml.j2 index 76a69f94f7..0192f9324f 100755 --- a/ansible/roles/cassandra/templates/cassandra.yaml.j2 +++ b/ansible/roles/cassandra/templates/cassandra.yaml.j2 @@ -40,7 +40,11 @@ seed_provider: parameters: # seeds is actually a comma-delimited list of addresses. # Ex: ",," +{% if groups['cassandra-2'] is defined %} + - seeds: "{{groups['cassandra'][0]}},{{groups['cassandra'][1]}}" +{% else %} - seeds: {{cassandra_seeds}} +{% endif %} concurrent_reads: 32 concurrent_writes: 32 concurrent_counter_writes: 32 @@ -66,8 +70,6 @@ start_native_transport: true native_transport_port: 9042 start_rpc: false rpc_address: {{cassandra_rpc_address}} -broadcast_rpc_address: {{cassandra_broadcast_rpc_address}} -broadcast_address: {{cassandra_broadcast_address}} rpc_port: 9160 rpc_keepalive: true rpc_server_type: sync @@ -87,7 +89,11 @@ cas_contention_timeout_in_ms: 1000 truncate_request_timeout_in_ms: 60000 request_timeout_in_ms: 10000 cross_node_timeout: false +{% if groups['cassandra-2'] is defined %} +endpoint_snitch: GossipingPropertyFileSnitch +{% else %} endpoint_snitch: SimpleSnitch +{% endif %} dynamic_snitch_update_interval_in_ms: 100 dynamic_snitch_reset_interval_in_ms: 600000 dynamic_snitch_badness_threshold: 0.1 From b20baea2e72fac99d89b6e4d5bb005d31ddc2543 Mon Sep 17 00:00:00 2001 From: S M Y Date: Sat, 10 Nov 2018 14:52:18 +0530 Subject: [PATCH 0320/1345] Issue #000 host: merging release-1.12 with testing-cql for supporting cassandra cluster with all the necessary changes --- ansible/roles/cassandra/README.md | 78 ++ ansible/roles/cassandra/tasks/main.yml | 9 + .../roles/cassandra/templates/cassandra.yaml | 1041 ----------------- .../cassandra/templates/cassandra.yaml.j2 | 10 +- 4 files changed, 95 insertions(+), 1043 deletions(-) create mode 100755 ansible/roles/cassandra/README.md delete mode 100755 ansible/roles/cassandra/templates/cassandra.yaml diff --git a/ansible/roles/cassandra/README.md b/ansible/roles/cassandra/README.md new file mode 100755 index 0000000000..fac9c2e53a --- /dev/null +++ b/ansible/roles/cassandra/README.md @@ -0,0 +1,78 @@ +Role Name +========= + +An [Ansible] role to install [Cassandra] + +Requirements +------------ + +- Oracle Java 8 + +Install [Ansible] requirements `ansible-galaxy install -r requirements.yml` + +Role Variables +-------------- + +``` +--- +# defaults file for ansible-cassandra +cassandra_cluster_group: 'cassandra-cluster-nodes' +cassandra_cluster_name: 'Test Cluster' +cassandra_cluster_setup: false +cassandra_commitlog_directory: '/var/lib/cassandra/commitlog' +cassandra_config: false +cassandra_debian_repo_info: + repo: 'deb http://www.apache.org/dist/cassandra/debian 36x main' + repo_key: 'https://www.apache.org/dist/cassandra/KEYS' +cassandra_data_file_directories: + - '/var/lib/cassandra/data' +cassandra_hints_directory: '/var/lib/cassandra/hints' +cassandra_listen_address: "{{ hostvars[inventory_hostname]['ansible_' + cassandra_listen_interface]['ipv4']['address'] }}" +cassandra_listen_interface: 'eth1' +cassandra_log_dir: '/var/log/cassandra' +cassandra_root_dir: '/etc/cassandra' +cassandra_saved_caches_directory: '/var/lib/cassandra/saved_caches' +cassandra_seeds: '127.0.0.1' # Only used if not setting up a cluster +cassandra_version: '3.6' +``` + +Dependencies +------------ + +Reference requirements + +Example Playbook +---------------- + +``` +--- +- hosts: cassandra-cluster-nodes + become: true + vars: + cassandra_cluster_setup: true + cassandra_config: true + pri_domain_name: 'test.vagrant.local' + roles: + - role: ansible-oracle-java8 + - role: ansible-cassandra + tasks: +``` + +License +------- + +BSD + +Author Information +------------------ + + +Larry Smith Jr. +- [@mrlesmithjr] +- [EveryThingShouldBeVirtual] +- mrlesmithjr [at] gmail.com + +[@mrlesmithjr]: +[EveryThingShouldBeVirtual]: +[Ansible]: +[Cassandra]: diff --git a/ansible/roles/cassandra/tasks/main.yml b/ansible/roles/cassandra/tasks/main.yml index 1273b7f597..0ca53a2177 100755 --- a/ansible/roles/cassandra/tasks/main.yml +++ b/ansible/roles/cassandra/tasks/main.yml @@ -20,6 +20,15 @@ name: "cassandra" state: "present" +- name: copying the rack and datacenter config file if we are having cluster + template: + src: "cassandra-rackdc.properties.j2" + dest: "{{ cassandra_root_dir }}/cassandra-rackdc.properties" + owner: "root" + group: "root" + mode: "0644" + when: groups['cassandra-2'] is defined + - name: config | Configuring Cassandra template: src: "cassandra.yaml.j2" diff --git a/ansible/roles/cassandra/templates/cassandra.yaml b/ansible/roles/cassandra/templates/cassandra.yaml deleted file mode 100755 index a51f993535..0000000000 --- a/ansible/roles/cassandra/templates/cassandra.yaml +++ /dev/null @@ -1,1041 +0,0 @@ -# Cassandra storage config YAML - -# NOTE: -# See http://wiki.apache.org/cassandra/StorageConfiguration for -# full explanations of configuration directives -# /NOTE - -# The name of the cluster. This is mainly used to prevent machines in -# one logical cluster from joining another. -cluster_name: 'Test Cluster' - -# This defines the number of tokens randomly assigned to this node on the ring -# The more tokens, relative to other nodes, the larger the proportion of data -# that this node will store. You probably want all nodes to have the same number -# of tokens assuming they have equal hardware capability. -# -# If you leave this unspecified, Cassandra will use the default of 1 token for legacy compatibility, -# and will use the initial_token as described below. -# -# Specifying initial_token will override this setting on the node's initial start, -# on subsequent starts, this setting will apply even if initial token is set. -# -# If you already have a cluster with 1 token per node, and wish to migrate to -# multiple tokens per node, see http://wiki.apache.org/cassandra/Operations -num_tokens: 256 - -# Triggers automatic allocation of num_tokens tokens for this node. The allocation -# algorithm attempts to choose tokens in a way that optimizes replicated load over -# the nodes in the datacenter for the replication strategy used by the specified -# keyspace. -# -# The load assigned to each node will be close to proportional to its number of -# vnodes. -# -# Only supported with the Murmur3Partitioner. -# allocate_tokens_for_keyspace: KEYSPACE - -# initial_token allows you to specify tokens manually. While you can use # it with -# vnodes (num_tokens > 1, above) -- in which case you should provide a -# comma-separated list -- it's primarily used when adding nodes # to legacy clusters -# that do not have vnodes enabled. -# initial_token: - -# See http://wiki.apache.org/cassandra/HintedHandoff -# May either be "true" or "false" to enable globally -hinted_handoff_enabled: true -# When hinted_handoff_enabled is true, a black list of data centers that will not -# perform hinted handoff -#hinted_handoff_disabled_datacenters: -# - DC1 -# - DC2 -# this defines the maximum amount of time a dead host will have hints -# generated. After it has been dead this long, new hints for it will not be -# created until it has been seen alive and gone down again. -max_hint_window_in_ms: 10800000 # 3 hours - -# Maximum throttle in KBs per second, per delivery thread. This will be -# reduced proportionally to the number of nodes in the cluster. (If there -# are two nodes in the cluster, each delivery thread will use the maximum -# rate; if there are three, each will throttle to half of the maximum, -# since we expect two nodes to be delivering hints simultaneously.) -hinted_handoff_throttle_in_kb: 1024 - -# Number of threads with which to deliver hints; -# Consider increasing this number when you have multi-dc deployments, since -# cross-dc handoff tends to be slower -max_hints_delivery_threads: 2 - -# Directory where Cassandra should store hints. -# If not set, the default directory is $CASSANDRA_HOME/data/hints. -# hints_directory: /var/lib/cassandra/hints - -# How often hints should be flushed from the internal buffers to disk. -# Will *not* trigger fsync. -hints_flush_period_in_ms: 10000 - -# Maximum size for a single hints file, in megabytes. -max_hints_file_size_in_mb: 128 - -# Compression to apply to the hint files. If omitted, hints files -# will be written uncompressed. LZ4, Snappy, and Deflate compressors -# are supported. -#hints_compression: -# - class_name: LZ4Compressor -# parameters: -# - - -# Maximum throttle in KBs per second, total. This will be -# reduced proportionally to the number of nodes in the cluster. -batchlog_replay_throttle_in_kb: 1024 - -# Authentication backend, implementing IAuthenticator; used to identify users -# Out of the box, Cassandra provides org.apache.cassandra.auth.{AllowAllAuthenticator, -# PasswordAuthenticator}. -# -# - AllowAllAuthenticator performs no checks - set it to disable authentication. -# - PasswordAuthenticator relies on username/password pairs to authenticate -# users. It keeps usernames and hashed passwords in system_auth.credentials table. -# Please increase system_auth keyspace replication factor if you use this authenticator. -# If using PasswordAuthenticator, CassandraRoleManager must also be used (see below) -authenticator: AllowAllAuthenticator - -# Authorization backend, implementing IAuthorizer; used to limit access/provide permissions -# Out of the box, Cassandra provides org.apache.cassandra.auth.{AllowAllAuthorizer, -# CassandraAuthorizer}. -# -# - AllowAllAuthorizer allows any action to any user - set it to disable authorization. -# - CassandraAuthorizer stores permissions in system_auth.permissions table. Please -# increase system_auth keyspace replication factor if you use this authorizer. -authorizer: AllowAllAuthorizer - -# Part of the Authentication & Authorization backend, implementing IRoleManager; used -# to maintain grants and memberships between roles. -# Out of the box, Cassandra provides org.apache.cassandra.auth.CassandraRoleManager, -# which stores role information in the system_auth keyspace. Most functions of the -# IRoleManager require an authenticated login, so unless the configured IAuthenticator -# actually implements authentication, most of this functionality will be unavailable. -# -# - CassandraRoleManager stores role data in the system_auth keyspace. Please -# increase system_auth keyspace replication factor if you use this role manager. -role_manager: CassandraRoleManager - -# Validity period for roles cache (fetching granted roles can be an expensive -# operation depending on the role manager, CassandraRoleManager is one example) -# Granted roles are cached for authenticated sessions in AuthenticatedUser and -# after the period specified here, become eligible for (async) reload. -# Defaults to 2000, set to 0 to disable caching entirely. -# Will be disabled automatically for AllowAllAuthenticator. -roles_validity_in_ms: 2000 - -# Refresh interval for roles cache (if enabled). -# After this interval, cache entries become eligible for refresh. Upon next -# access, an async reload is scheduled and the old value returned until it -# completes. If roles_validity_in_ms is non-zero, then this must be -# also. -# Defaults to the same value as roles_validity_in_ms. -# roles_update_interval_in_ms: 2000 - -# Validity period for permissions cache (fetching permissions can be an -# expensive operation depending on the authorizer, CassandraAuthorizer is -# one example). Defaults to 2000, set to 0 to disable. -# Will be disabled automatically for AllowAllAuthorizer. -permissions_validity_in_ms: 2000 - -# Refresh interval for permissions cache (if enabled). -# After this interval, cache entries become eligible for refresh. Upon next -# access, an async reload is scheduled and the old value returned until it -# completes. If permissions_validity_in_ms is non-zero, then this must be -# also. -# Defaults to the same value as permissions_validity_in_ms. -# permissions_update_interval_in_ms: 2000 - -# Validity period for credentials cache. This cache is tightly coupled to -# the provided PasswordAuthenticator implementation of IAuthenticator. If -# another IAuthenticator implementation is configured, this cache will not -# be automatically used and so the following settings will have no effect. -# Please note, credentials are cached in their encrypted form, so while -# activating this cache may reduce the number of queries made to the -# underlying table, it may not bring a significant reduction in the -# latency of individual authentication attempts. -# Defaults to 2000, set to 0 to disable credentials caching. -credentials_validity_in_ms: 2000 - -# Refresh interval for credentials cache (if enabled). -# After this interval, cache entries become eligible for refresh. Upon next -# access, an async reload is scheduled and the old value returned until it -# completes. If credentials_validity_in_ms is non-zero, then this must be -# also. -# Defaults to the same value as credentials_validity_in_ms. -# credentials_update_interval_in_ms: 2000 - -# The partitioner is responsible for distributing groups of rows (by -# partition key) across nodes in the cluster. You should leave this -# alone for new clusters. The partitioner can NOT be changed without -# reloading all data, so when upgrading you should set this to the -# same partitioner you were already using. -# -# Besides Murmur3Partitioner, partitioners included for backwards -# compatibility include RandomPartitioner, ByteOrderedPartitioner, and -# OrderPreservingPartitioner. -# -partitioner: org.apache.cassandra.dht.Murmur3Partitioner - -# Directories where Cassandra should store data on disk. Cassandra -# will spread data evenly across them, subject to the granularity of -# the configured compaction strategy. -# If not set, the default directory is $CASSANDRA_HOME/data/data. -data_file_directories: - - /var/lib/cassandra/data - -# commit log. when running on magnetic HDD, this should be a -# separate spindle than the data directories. -# If not set, the default directory is $CASSANDRA_HOME/data/commitlog. -commitlog_directory: /var/lib/cassandra/commitlog - -# policy for data disk failures: -# die: shut down gossip and client transports and kill the JVM for any fs errors or -# single-sstable errors, so the node can be replaced. -# stop_paranoid: shut down gossip and client transports even for single-sstable errors, -# kill the JVM for errors during startup. -# stop: shut down gossip and client transports, leaving the node effectively dead, but -# can still be inspected via JMX, kill the JVM for errors during startup. -# best_effort: stop using the failed disk and respond to requests based on -# remaining available sstables. This means you WILL see obsolete -# data at CL.ONE! -# ignore: ignore fatal errors and let requests fail, as in pre-1.2 Cassandra -disk_failure_policy: stop - -# policy for commit disk failures: -# die: shut down gossip and Thrift and kill the JVM, so the node can be replaced. -# stop: shut down gossip and Thrift, leaving the node effectively dead, but -# can still be inspected via JMX. -# stop_commit: shutdown the commit log, letting writes collect but -# continuing to service reads, as in pre-2.0.5 Cassandra -# ignore: ignore fatal errors and let the batches fail -commit_failure_policy: stop - -# Maximum size of the native protocol prepared statement cache -# -# Valid values are either "auto" (omitting the value) or a value greater 0. -# -# Note that specifying a too large value will result in long running GCs and possbily -# out-of-memory errors. Keep the value at a small fraction of the heap. -# -# If you constantly see "prepared statements discarded in the last minute because -# cache limit reached" messages, the first step is to investigate the root cause -# of these messages and check whether prepared statements are used correctly - -# i.e. use bind markers for variable parts. -# -# Do only change the default value, if you really have more prepared statements than -# fit in the cache. In most cases it is not neccessary to change this value. -# Constantly re-preparing statements is a performance penalty. -# -# Default value ("auto") is 1/256th of the heap or 10MB, whichever is greater -prepared_statements_cache_size_mb: - -# Maximum size of the Thrift prepared statement cache -# -# If you do not use Thrift at all, it is safe to leave this value at "auto". -# -# See description of 'prepared_statements_cache_size_mb' above for more information. -# -# Default value ("auto") is 1/256th of the heap or 10MB, whichever is greater -thrift_prepared_statements_cache_size_mb: - -# Maximum size of the key cache in memory. -# -# Each key cache hit saves 1 seek and each row cache hit saves 2 seeks at the -# minimum, sometimes more. The key cache is fairly tiny for the amount of -# time it saves, so it's worthwhile to use it at large numbers. -# The row cache saves even more time, but must contain the entire row, -# so it is extremely space-intensive. It's best to only use the -# row cache if you have hot rows or static rows. -# -# NOTE: if you reduce the size, you may not get you hottest keys loaded on startup. -# -# Default value is empty to make it "auto" (min(5% of Heap (in MB), 100MB)). Set to 0 to disable key cache. -key_cache_size_in_mb: - -# Duration in seconds after which Cassandra should -# save the key cache. Caches are saved to saved_caches_directory as -# specified in this configuration file. -# -# Saved caches greatly improve cold-start speeds, and is relatively cheap in -# terms of I/O for the key cache. Row cache saving is much more expensive and -# has limited use. -# -# Default is 14400 or 4 hours. -key_cache_save_period: 14400 - -# Number of keys from the key cache to save -# Disabled by default, meaning all keys are going to be saved -# key_cache_keys_to_save: 100 - -# Row cache implementation class name. -# Available implementations: -# org.apache.cassandra.cache.OHCProvider Fully off-heap row cache implementation (default). -# org.apache.cassandra.cache.SerializingCacheProvider This is the row cache implementation availabile -# in previous releases of Cassandra. -# row_cache_class_name: org.apache.cassandra.cache.OHCProvider - -# Maximum size of the row cache in memory. -# Please note that OHC cache implementation requires some additional off-heap memory to manage -# the map structures and some in-flight memory during operations before/after cache entries can be -# accounted against the cache capacity. This overhead is usually small compared to the whole capacity. -# Do not specify more memory that the system can afford in the worst usual situation and leave some -# headroom for OS block level cache. Do never allow your system to swap. -# -# Default value is 0, to disable row caching. -row_cache_size_in_mb: 0 - -# Duration in seconds after which Cassandra should save the row cache. -# Caches are saved to saved_caches_directory as specified in this configuration file. -# -# Saved caches greatly improve cold-start speeds, and is relatively cheap in -# terms of I/O for the key cache. Row cache saving is much more expensive and -# has limited use. -# -# Default is 0 to disable saving the row cache. -row_cache_save_period: 0 - -# Number of keys from the row cache to save. -# Specify 0 (which is the default), meaning all keys are going to be saved -# row_cache_keys_to_save: 100 - -# Maximum size of the counter cache in memory. -# -# Counter cache helps to reduce counter locks' contention for hot counter cells. -# In case of RF = 1 a counter cache hit will cause Cassandra to skip the read before -# write entirely. With RF > 1 a counter cache hit will still help to reduce the duration -# of the lock hold, helping with hot counter cell updates, but will not allow skipping -# the read entirely. Only the local (clock, count) tuple of a counter cell is kept -# in memory, not the whole counter, so it's relatively cheap. -# -# NOTE: if you reduce the size, you may not get you hottest keys loaded on startup. -# -# Default value is empty to make it "auto" (min(2.5% of Heap (in MB), 50MB)). Set to 0 to disable counter cache. -# NOTE: if you perform counter deletes and rely on low gcgs, you should disable the counter cache. -counter_cache_size_in_mb: - -# Duration in seconds after which Cassandra should -# save the counter cache (keys only). Caches are saved to saved_caches_directory as -# specified in this configuration file. -# -# Default is 7200 or 2 hours. -counter_cache_save_period: 7200 - -# Number of keys from the counter cache to save -# Disabled by default, meaning all keys are going to be saved -# counter_cache_keys_to_save: 100 - -# saved caches -# If not set, the default directory is $CASSANDRA_HOME/data/saved_caches. -saved_caches_directory: /var/lib/cassandra/saved_caches - -# commitlog_sync may be either "periodic" or "batch." -# -# When in batch mode, Cassandra won't ack writes until the commit log -# has been fsynced to disk. It will wait -# commitlog_sync_batch_window_in_ms milliseconds between fsyncs. -# This window should be kept short because the writer threads will -# be unable to do extra work while waiting. (You may need to increase -# concurrent_writes for the same reason.) -# -# commitlog_sync: batch -# commitlog_sync_batch_window_in_ms: 2 -# -# the other option is "periodic" where writes may be acked immediately -# and the CommitLog is simply synced every commitlog_sync_period_in_ms -# milliseconds. -commitlog_sync: periodic -commitlog_sync_period_in_ms: 10000 - -# The size of the individual commitlog file segments. A commitlog -# segment may be archived, deleted, or recycled once all the data -# in it (potentially from each columnfamily in the system) has been -# flushed to sstables. -# -# The default size is 32, which is almost always fine, but if you are -# archiving commitlog segments (see commitlog_archiving.properties), -# then you probably want a finer granularity of archiving; 8 or 16 MB -# is reasonable. -# Max mutation size is also configurable via max_mutation_size_in_kb setting in -# cassandra.yaml. The default is half the size commitlog_segment_size_in_mb * 1024. -# -# NOTE: If max_mutation_size_in_kb is set explicitly then commitlog_segment_size_in_mb must -# be set to at least twice the size of max_mutation_size_in_kb / 1024 -# -commitlog_segment_size_in_mb: 32 - -# Compression to apply to the commit log. If omitted, the commit log -# will be written uncompressed. LZ4, Snappy, and Deflate compressors -# are supported. -#commitlog_compression: -# - class_name: LZ4Compressor -# parameters: -# - - -# any class that implements the SeedProvider interface and has a -# constructor that takes a Map of parameters will do. -seed_provider: - # Addresses of hosts that are deemed contact points. - # Cassandra nodes use this list of hosts to find each other and learn - # the topology of the ring. You must change this if you are running - # multiple nodes! - - class_name: org.apache.cassandra.locator.SimpleSeedProvider - parameters: - # seeds is actually a comma-delimited list of addresses. - # Ex: ",," - - seeds: "127.0.0.1" - -# For workloads with more data than can fit in memory, Cassandra's -# bottleneck will be reads that need to fetch data from -# disk. "concurrent_reads" should be set to (16 * number_of_drives) in -# order to allow the operations to enqueue low enough in the stack -# that the OS and drives can reorder them. Same applies to -# "concurrent_counter_writes", since counter writes read the current -# values before incrementing and writing them back. -# -# On the other hand, since writes are almost never IO bound, the ideal -# number of "concurrent_writes" is dependent on the number of cores in -# your system; (8 * number_of_cores) is a good rule of thumb. -concurrent_reads: 32 -concurrent_writes: 32 -concurrent_counter_writes: 32 - -# For materialized view writes, as there is a read involved, so this should -# be limited by the less of concurrent reads or concurrent writes. -concurrent_materialized_view_writes: 32 - -# Maximum memory to use for sstable chunk cache and buffer pooling. -# 32MB of this are reserved for pooling buffers, the rest is used as an -# cache that holds uncompressed sstable chunks. -# Defaults to the smaller of 1/4 of heap or 512MB. This pool is allocated off-heap, -# so is in addition to the memory allocated for heap. The cache also has on-heap -# overhead which is roughly 128 bytes per chunk (i.e. 0.2% of the reserved size -# if the default 64k chunk size is used). -# Memory is only allocated when needed. -# file_cache_size_in_mb: 512 - -# Flag indicating whether to allocate on or off heap when the sstable buffer -# pool is exhausted, that is when it has exceeded the maximum memory -# file_cache_size_in_mb, beyond which it will not cache buffers but allocate on request. - -# buffer_pool_use_heap_if_exhausted: true - -# The strategy for optimizing disk read -# Possible values are: -# ssd (for solid state disks, the default) -# spinning (for spinning disks) -# disk_optimization_strategy: ssd - -# Total permitted memory to use for memtables. Cassandra will stop -# accepting writes when the limit is exceeded until a flush completes, -# and will trigger a flush based on memtable_cleanup_threshold -# If omitted, Cassandra will set both to 1/4 the size of the heap. -# memtable_heap_space_in_mb: 2048 -# memtable_offheap_space_in_mb: 2048 - -# Ratio of occupied non-flushing memtable size to total permitted size -# that will trigger a flush of the largest memtable. Larger mct will -# mean larger flushes and hence less compaction, but also less concurrent -# flush activity which can make it difficult to keep your disks fed -# under heavy write load. -# -# memtable_cleanup_threshold defaults to 1 / (memtable_flush_writers + 1) -# memtable_cleanup_threshold: 0.11 - -# Specify the way Cassandra allocates and manages memtable memory. -# Options are: -# heap_buffers: on heap nio buffers -# offheap_buffers: off heap (direct) nio buffers -# offheap_objects: off heap objects -memtable_allocation_type: heap_buffers - -# Total space to use for commit logs on disk. -# -# If space gets above this value, Cassandra will flush every dirty CF -# in the oldest segment and remove it. So a small total commitlog space -# will tend to cause more flush activity on less-active columnfamilies. -# -# The default value is the smaller of 8192, and 1/4 of the total space -# of the commitlog volume. -# -# commitlog_total_space_in_mb: 8192 - -# This sets the amount of memtable flush writer threads. These will -# be blocked by disk io, and each one will hold a memtable in memory -# while blocked. -# -# memtable_flush_writers defaults to one per data_file_directory. -# -# If your data directories are backed by SSD, you can increase this, but -# avoid having memtable_flush_writers * data_file_directories > number of cores -#memtable_flush_writers: 1 - -# A fixed memory pool size in MB for for SSTable index summaries. If left -# empty, this will default to 5% of the heap size. If the memory usage of -# all index summaries exceeds this limit, SSTables with low read rates will -# shrink their index summaries in order to meet this limit. However, this -# is a best-effort process. In extreme conditions Cassandra may need to use -# more than this amount of memory. -index_summary_capacity_in_mb: - -# How frequently index summaries should be resampled. This is done -# periodically to redistribute memory from the fixed-size pool to sstables -# proportional their recent read rates. Setting to -1 will disable this -# process, leaving existing index summaries at their current sampling level. -index_summary_resize_interval_in_minutes: 60 - -# Whether to, when doing sequential writing, fsync() at intervals in -# order to force the operating system to flush the dirty -# buffers. Enable this to avoid sudden dirty buffer flushing from -# impacting read latencies. Almost always a good idea on SSDs; not -# necessarily on platters. -trickle_fsync: false -trickle_fsync_interval_in_kb: 10240 - -# TCP port, for commands and data -# For security reasons, you should not expose this port to the internet. Firewall it if needed. -storage_port: 7000 - -# SSL port, for encrypted communication. Unused unless enabled in -# encryption_options -# For security reasons, you should not expose this port to the internet. Firewall it if needed. -ssl_storage_port: 7001 - -# Address or interface to bind to and tell other Cassandra nodes to connect to. -# You _must_ change this if you want multiple nodes to be able to communicate! -# -# Set listen_address OR listen_interface, not both. Interfaces must correspond -# to a single address, IP aliasing is not supported. -# -# Leaving it blank leaves it up to InetAddress.getLocalHost(). This -# will always do the Right Thing _if_ the node is properly configured -# (hostname, name resolution, etc), and the Right Thing is to use the -# address associated with the hostname (it might not be). -# -# Setting listen_address to 0.0.0.0 is always wrong. -# -# If you choose to specify the interface by name and the interface has an ipv4 and an ipv6 address -# you can specify which should be chosen using listen_interface_prefer_ipv6. If false the first ipv4 -# address will be used. If true the first ipv6 address will be used. Defaults to false preferring -# ipv4. If there is only one address it will be selected regardless of ipv4/ipv6. -listen_address: localhost -# listen_interface: eth0 -# listen_interface_prefer_ipv6: false - -# Address to broadcast to other Cassandra nodes -# Leaving this blank will set it to the same value as listen_address -# broadcast_address: 1.2.3.4 - -# When using multiple physical network interfaces, set this -# to true to listen on broadcast_address in addition to -# the listen_address, allowing nodes to communicate in both -# interfaces. -# Ignore this property if the network configuration automatically -# routes between the public and private networks such as EC2. -# listen_on_broadcast_address: false - -# Internode authentication backend, implementing IInternodeAuthenticator; -# used to allow/disallow connections from peer nodes. -# internode_authenticator: org.apache.cassandra.auth.AllowAllInternodeAuthenticator - -# Whether to start the native transport server. -# Please note that the address on which the native transport is bound is the -# same as the rpc_address. The port however is different and specified below. -start_native_transport: true -# port for the CQL native transport to listen for clients on -# For security reasons, you should not expose this port to the internet. Firewall it if needed. -native_transport_port: 9042 -# Enabling native transport encryption in client_encryption_options allows you to either use -# encryption for the standard port or to use a dedicated, additional port along with the unencrypted -# standard native_transport_port. -# Enabling client encryption and keeping native_transport_port_ssl disabled will use encryption -# for native_transport_port. Setting native_transport_port_ssl to a different value -# from native_transport_port will use encryption for native_transport_port_ssl while -# keeping native_transport_port unencrypted. -# native_transport_port_ssl: 9142 -# The maximum threads for handling requests when the native transport is used. -# This is similar to rpc_max_threads though the default differs slightly (and -# there is no native_transport_min_threads, idle threads will always be stopped -# after 30 seconds). -# native_transport_max_threads: 128 -# -# The maximum size of allowed frame. Frame (requests) larger than this will -# be rejected as invalid. The default is 256MB. -# native_transport_max_frame_size_in_mb: 256 - -# The maximum number of concurrent client connections. -# The default is -1, which means unlimited. -# native_transport_max_concurrent_connections: -1 - -# The maximum number of concurrent client connections per source ip. -# The default is -1, which means unlimited. -# native_transport_max_concurrent_connections_per_ip: -1 - -# Whether to start the thrift rpc server. -start_rpc: false - -# The address or interface to bind the Thrift RPC service and native transport -# server to. -# -# Set rpc_address OR rpc_interface, not both. Interfaces must correspond -# to a single address, IP aliasing is not supported. -# -# Leaving rpc_address blank has the same effect as on listen_address -# (i.e. it will be based on the configured hostname of the node). -# -# Note that unlike listen_address, you can specify 0.0.0.0, but you must also -# set broadcast_rpc_address to a value other than 0.0.0.0. -# -# For security reasons, you should not expose this port to the internet. Firewall it if needed. -# -# If you choose to specify the interface by name and the interface has an ipv4 and an ipv6 address -# you can specify which should be chosen using rpc_interface_prefer_ipv6. If false the first ipv4 -# address will be used. If true the first ipv6 address will be used. Defaults to false preferring -# ipv4. If there is only one address it will be selected regardless of ipv4/ipv6. -rpc_address: localhost -# rpc_interface: eth1 -# rpc_interface_prefer_ipv6: false - -# port for Thrift to listen for clients on -rpc_port: 9160 - -# RPC address to broadcast to drivers and other Cassandra nodes. This cannot -# be set to 0.0.0.0. If left blank, this will be set to the value of -# rpc_address. If rpc_address is set to 0.0.0.0, broadcast_rpc_address must -# be set. -# broadcast_rpc_address: 1.2.3.4 - -# enable or disable keepalive on rpc/native connections -rpc_keepalive: true - -# Cassandra provides two out-of-the-box options for the RPC Server: -# -# sync -> One thread per thrift connection. For a very large number of clients, memory -# will be your limiting factor. On a 64 bit JVM, 180KB is the minimum stack size -# per thread, and that will correspond to your use of virtual memory (but physical memory -# may be limited depending on use of stack space). -# -# hsha -> Stands for "half synchronous, half asynchronous." All thrift clients are handled -# asynchronously using a small number of threads that does not vary with the amount -# of thrift clients (and thus scales well to many clients). The rpc requests are still -# synchronous (one thread per active request). If hsha is selected then it is essential -# that rpc_max_threads is changed from the default value of unlimited. -# -# The default is sync because on Windows hsha is about 30% slower. On Linux, -# sync/hsha performance is about the same, with hsha of course using less memory. -# -# Alternatively, can provide your own RPC server by providing the fully-qualified class name -# of an o.a.c.t.TServerFactory that can create an instance of it. -rpc_server_type: sync - -# Uncomment rpc_min|max_thread to set request pool size limits. -# -# Regardless of your choice of RPC server (see above), the number of maximum requests in the -# RPC thread pool dictates how many concurrent requests are possible (but if you are using the sync -# RPC server, it also dictates the number of clients that can be connected at all). -# -# The default is unlimited and thus provides no protection against clients overwhelming the server. You are -# encouraged to set a maximum that makes sense for you in production, but do keep in mind that -# rpc_max_threads represents the maximum number of client requests this server may execute concurrently. -# -# rpc_min_threads: 16 -# rpc_max_threads: 2048 - -# uncomment to set socket buffer sizes on rpc connections -# rpc_send_buff_size_in_bytes: -# rpc_recv_buff_size_in_bytes: - -# Uncomment to set socket buffer size for internode communication -# Note that when setting this, the buffer size is limited by net.core.wmem_max -# and when not setting it it is defined by net.ipv4.tcp_wmem -# See: -# /proc/sys/net/core/wmem_max -# /proc/sys/net/core/rmem_max -# /proc/sys/net/ipv4/tcp_wmem -# /proc/sys/net/ipv4/tcp_wmem -# and: man tcp -# internode_send_buff_size_in_bytes: -# internode_recv_buff_size_in_bytes: - -# Frame size for thrift (maximum message length). -thrift_framed_transport_size_in_mb: 15 - -# Set to true to have Cassandra create a hard link to each sstable -# flushed or streamed locally in a backups/ subdirectory of the -# keyspace data. Removing these links is the operator's -# responsibility. -incremental_backups: false - -# Whether or not to take a snapshot before each compaction. Be -# careful using this option, since Cassandra won't clean up the -# snapshots for you. Mostly useful if you're paranoid when there -# is a data format change. -snapshot_before_compaction: false - -# Whether or not a snapshot is taken of the data before keyspace truncation -# or dropping of column families. The STRONGLY advised default of true -# should be used to provide data safety. If you set this flag to false, you will -# lose data on truncation or drop. -auto_snapshot: true - -# Granularity of the collation index of rows within a partition. -# Increase if your rows are large, or if you have a very large -# number of rows per partition. The competing goals are these: -# 1) a smaller granularity means more index entries are generated -# and looking up rows withing the partition by collation column -# is faster -# 2) but, Cassandra will keep the collation index in memory for hot -# rows (as part of the key cache), so a larger granularity means -# you can cache more hot rows -column_index_size_in_kb: 64 -# Per sstable indexed key cache entries (the collation index in memory -# mentioned above) exceeding this size will not be held on heap. -# This means that only partition information is held on heap and the -# index entries are read from disk. -# -# Note that this size refers to the size of the -# serialized index information and not the size of the partition. -column_index_cache_size_in_kb: 2 - -# Number of simultaneous compactions to allow, NOT including -# validation "compactions" for anti-entropy repair. Simultaneous -# compactions can help preserve read performance in a mixed read/write -# workload, by mitigating the tendency of small sstables to accumulate -# during a single long running compactions. The default is usually -# fine and if you experience problems with compaction running too -# slowly or too fast, you should look at -# compaction_throughput_mb_per_sec first. -# -# concurrent_compactors defaults to the smaller of (number of disks, -# number of cores), with a minimum of 2 and a maximum of 8. -# -# If your data directories are backed by SSD, you should increase this -# to the number of cores. -#concurrent_compactors: 1 - -# Throttles compaction to the given total throughput across the entire -# system. The faster you insert data, the faster you need to compact in -# order to keep the sstable count down, but in general, setting this to -# 16 to 32 times the rate you are inserting data is more than sufficient. -# Setting this to 0 disables throttling. Note that this account for all types -# of compaction, including validation compaction. -compaction_throughput_mb_per_sec: 16 - -# When compacting, the replacement sstable(s) can be opened before they -# are completely written, and used in place of the prior sstables for -# any range that has been written. This helps to smoothly transfer reads -# between the sstables, reducing page cache churn and keeping hot rows hot -sstable_preemptive_open_interval_in_mb: 50 - -# Throttles all outbound streaming file transfers on this node to the -# given total throughput in Mbps. This is necessary because Cassandra does -# mostly sequential IO when streaming data during bootstrap or repair, which -# can lead to saturating the network connection and degrading rpc performance. -# When unset, the default is 200 Mbps or 25 MB/s. -# stream_throughput_outbound_megabits_per_sec: 200 - -# Throttles all streaming file transfer between the datacenters, -# this setting allows users to throttle inter dc stream throughput in addition -# to throttling all network stream traffic as configured with -# stream_throughput_outbound_megabits_per_sec -# When unset, the default is 200 Mbps or 25 MB/s -# inter_dc_stream_throughput_outbound_megabits_per_sec: 200 - -# How long the coordinator should wait for read operations to complete -read_request_timeout_in_ms: 5000 -# How long the coordinator should wait for seq or index scans to complete -range_request_timeout_in_ms: 10000 -# How long the coordinator should wait for writes to complete -write_request_timeout_in_ms: 2000 -# How long the coordinator should wait for counter writes to complete -counter_write_request_timeout_in_ms: 5000 -# How long a coordinator should continue to retry a CAS operation -# that contends with other proposals for the same row -cas_contention_timeout_in_ms: 1000 -# How long the coordinator should wait for truncates to complete -# (This can be much longer, because unless auto_snapshot is disabled -# we need to flush first so we can snapshot before removing the data.) -truncate_request_timeout_in_ms: 60000 -# The default timeout for other, miscellaneous operations -request_timeout_in_ms: 10000 - -# Enable operation timeout information exchange between nodes to accurately -# measure request timeouts. If disabled, replicas will assume that requests -# were forwarded to them instantly by the coordinator, which means that -# under overload conditions we will waste that much extra time processing -# already-timed-out requests. -# -# Warning: before enabling this property make sure to ntp is installed -# and the times are synchronized between the nodes. -cross_node_timeout: false - -# Set socket timeout for streaming operation. -# The stream session is failed if no data is received by any of the -# participants within that period. -# Default value is 3600000, which means streams timeout after an hour. -# streaming_socket_timeout_in_ms: 3600000 - -# phi value that must be reached for a host to be marked down. -# most users should never need to adjust this. -# phi_convict_threshold: 8 - -# endpoint_snitch -- Set this to a class that implements -# IEndpointSnitch. The snitch has two functions: -# - it teaches Cassandra enough about your network topology to route -# requests efficiently -# - it allows Cassandra to spread replicas around your cluster to avoid -# correlated failures. It does this by grouping machines into -# "datacenters" and "racks." Cassandra will do its best not to have -# more than one replica on the same "rack" (which may not actually -# be a physical location) -# -# IF YOU CHANGE THE SNITCH AFTER DATA IS INSERTED INTO THE CLUSTER, -# YOU MUST RUN A FULL REPAIR, SINCE THE SNITCH AFFECTS WHERE REPLICAS -# ARE PLACED. -# -# IF THE RACK A REPLICA IS PLACED IN CHANGES AFTER THE REPLICA HAS BEEN -# ADDED TO A RING, THE NODE MUST BE DECOMMISSIONED AND REBOOTSTRAPPED. -# -# Out of the box, Cassandra provides -# - SimpleSnitch: -# Treats Strategy order as proximity. This can improve cache -# locality when disabling read repair. Only appropriate for -# single-datacenter deployments. -# - GossipingPropertyFileSnitch -# This should be your go-to snitch for production use. The rack -# and datacenter for the local node are defined in -# cassandra-rackdc.properties and propagated to other nodes via -# gossip. If cassandra-topology.properties exists, it is used as a -# fallback, allowing migration from the PropertyFileSnitch. -# - PropertyFileSnitch: -# Proximity is determined by rack and data center, which are -# explicitly configured in cassandra-topology.properties. -# - Ec2Snitch: -# Appropriate for EC2 deployments in a single Region. Loads Region -# and Availability Zone information from the EC2 API. The Region is -# treated as the datacenter, and the Availability Zone as the rack. -# Only private IPs are used, so this will not work across multiple -# Regions. -# - Ec2MultiRegionSnitch: -# Uses public IPs as broadcast_address to allow cross-region -# connectivity. (Thus, you should set seed addresses to the public -# IP as well.) You will need to open the storage_port or -# ssl_storage_port on the public IP firewall. (For intra-Region -# traffic, Cassandra will switch to the private IP after -# establishing a connection.) -# - RackInferringSnitch: -# Proximity is determined by rack and data center, which are -# assumed to correspond to the 3rd and 2nd octet of each node's IP -# address, respectively. Unless this happens to match your -# deployment conventions, this is best used as an example of -# writing a custom Snitch class and is provided in that spirit. -# -# You can use a custom Snitch by setting this to the full class name -# of the snitch, which will be assumed to be on your classpath. -endpoint_snitch: SimpleSnitch - -# controls how often to perform the more expensive part of host score -# calculation -dynamic_snitch_update_interval_in_ms: 100 -# controls how often to reset all host scores, allowing a bad host to -# possibly recover -dynamic_snitch_reset_interval_in_ms: 600000 -# if set greater than zero and read_repair_chance is < 1.0, this will allow -# 'pinning' of replicas to hosts in order to increase cache capacity. -# The badness threshold will control how much worse the pinned host has to be -# before the dynamic snitch will prefer other replicas over it. This is -# expressed as a double which represents a percentage. Thus, a value of -# 0.2 means Cassandra would continue to prefer the static snitch values -# until the pinned host was 20% worse than the fastest. -dynamic_snitch_badness_threshold: 0.1 - -# request_scheduler -- Set this to a class that implements -# RequestScheduler, which will schedule incoming client requests -# according to the specific policy. This is useful for multi-tenancy -# with a single Cassandra cluster. -# NOTE: This is specifically for requests from the client and does -# not affect inter node communication. -# org.apache.cassandra.scheduler.NoScheduler - No scheduling takes place -# org.apache.cassandra.scheduler.RoundRobinScheduler - Round robin of -# client requests to a node with a separate queue for each -# request_scheduler_id. The scheduler is further customized by -# request_scheduler_options as described below. -request_scheduler: org.apache.cassandra.scheduler.NoScheduler - -# Scheduler Options vary based on the type of scheduler -# NoScheduler - Has no options -# RoundRobin -# - throttle_limit -- The throttle_limit is the number of in-flight -# requests per client. Requests beyond -# that limit are queued up until -# running requests can complete. -# The value of 80 here is twice the number of -# concurrent_reads + concurrent_writes. -# - default_weight -- default_weight is optional and allows for -# overriding the default which is 1. -# - weights -- Weights are optional and will default to 1 or the -# overridden default_weight. The weight translates into how -# many requests are handled during each turn of the -# RoundRobin, based on the scheduler id. -# -# request_scheduler_options: -# throttle_limit: 80 -# default_weight: 5 -# weights: -# Keyspace1: 1 -# Keyspace2: 5 - -# request_scheduler_id -- An identifier based on which to perform -# the request scheduling. Currently the only valid option is keyspace. -# request_scheduler_id: keyspace - -# Enable or disable inter-node encryption -# JVM defaults for supported SSL socket protocols and cipher suites can -# be replaced using custom encryption options. This is not recommended -# unless you have policies in place that dictate certain settings, or -# need to disable vulnerable ciphers or protocols in case the JVM cannot -# be updated. -# FIPS compliant settings can be configured at JVM level and should not -# involve changing encryption settings here: -# https://docs.oracle.com/javase/8/docs/technotes/guides/security/jsse/FIPS.html -# NOTE: No custom encryption options are enabled at the moment -# The available internode options are : all, none, dc, rack -# -# If set to dc cassandra will encrypt the traffic between the DCs -# If set to rack cassandra will encrypt the traffic between the racks -# -# The passwords used in these options must match the passwords used when generating -# the keystore and truststore. For instructions on generating these files, see: -# http://download.oracle.com/javase/6/docs/technotes/guides/security/jsse/JSSERefGuide.html#CreateKeystore -# -server_encryption_options: - internode_encryption: none - keystore: conf/.keystore - keystore_password: cassandra - truststore: conf/.truststore - truststore_password: cassandra - # More advanced defaults below: - # protocol: TLS - # algorithm: SunX509 - # store_type: JKS - # cipher_suites: [TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_DHE_RSA_WITH_AES_128_CBC_SHA,TLS_DHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA] - # require_client_auth: false - # require_endpoint_verification: false - -# enable or disable client/server encryption. -client_encryption_options: - enabled: false - # If enabled and optional is set to true encrypted and unencrypted connections are handled. - optional: false - keystore: conf/.keystore - keystore_password: cassandra - # require_client_auth: false - # Set trustore and truststore_password if require_client_auth is true - # truststore: conf/.truststore - # truststore_password: cassandra - # More advanced defaults below: - # protocol: TLS - # algorithm: SunX509 - # store_type: JKS - # cipher_suites: [TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_DHE_RSA_WITH_AES_128_CBC_SHA,TLS_DHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA] - -# internode_compression controls whether traffic between nodes is -# compressed. -# can be: all - all traffic is compressed -# dc - traffic between different datacenters is compressed -# none - nothing is compressed. -internode_compression: dc - -# Enable or disable tcp_nodelay for inter-dc communication. -# Disabling it will result in larger (but fewer) network packets being sent, -# reducing overhead from the TCP protocol itself, at the cost of increasing -# latency if you block for cross-datacenter responses. -inter_dc_tcp_nodelay: false - -# TTL for different trace types used during logging of the repair process. -tracetype_query_ttl: 86400 -tracetype_repair_ttl: 604800 - -# UDFs (user defined functions) are disabled by default. -# As of Cassandra 3.0 there is a sandbox in place that should prevent execution of evil code. -enable_user_defined_functions: false - -# Enables scripted UDFs (JavaScript UDFs). -# Java UDFs are always enabled, if enable_user_defined_functions is true. -# Enable this option to be able to use UDFs with "language javascript" or any custom JSR-223 provider. -# This option has no effect, if enable_user_defined_functions is false. -enable_scripted_user_defined_functions: false - -# The default Windows kernel timer and scheduling resolution is 15.6ms for power conservation. -# Lowering this value on Windows can provide much tighter latency and better throughput, however -# some virtualized environments may see a negative performance impact from changing this setting -# below their system default. The sysinternals 'clockres' tool can confirm your system's default -# setting. -windows_timer_interval: 1 - - -# Enables encrypting data at-rest (on disk). Different key providers can be plugged in, but the default reads from -# a JCE-style keystore. A single keystore can hold multiple keys, but the one referenced by -# the "key_alias" is the only key that will be used for encrypt opertaions; previously used keys -# can still (and should!) be in the keystore and will be used on decrypt operations -# (to handle the case of key rotation). -# -# It is strongly recommended to download and install Java Cryptography Extension (JCE) -# Unlimited Strength Jurisdiction Policy Files for your version of the JDK. -# (current link: http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html) -# -# Currently, only the following file types are supported for transparent data encryption, although -# more are coming in future cassandra releases: commitlog, hints -transparent_data_encryption_options: - enabled: false - chunk_length_kb: 64 - cipher: AES/CBC/PKCS5Padding - key_alias: testing:1 - # CBC IV length for AES needs to be 16 bytes (which is also the default size) - # iv_length: 16 - key_provider: - - class_name: org.apache.cassandra.security.JKSKeyProvider - parameters: - - keystore: conf/.keystore - keystore_password: cassandra - store_type: JCEKS - key_password: cassandra - - -##################### -# SAFETY THRESHOLDS # -##################### - -# When executing a scan, within or across a partition, we need to keep the -# tombstones seen in memory so we can return them to the coordinator, which -# will use them to make sure other replicas also know about the deleted rows. -# With workloads that generate a lot of tombstones, this can cause performance -# problems and even exaust the server heap. -# (http://www.datastax.com/dev/blog/cassandra-anti-patterns-queues-and-queue-like-datasets) -# Adjust the thresholds here if you understand the dangers and want to -# scan more tombstones anyway. These thresholds may also be adjusted at runtime -# using the StorageService mbean. -tombstone_warn_threshold: 1000 -tombstone_failure_threshold: 100000 - -# Log WARN on any batch size exceeding this value. 5kb per batch by default. -# Caution should be taken on increasing the size of this threshold as it can lead to node instability. -batch_size_warn_threshold_in_kb: 5 - -# Fail any batch exceeding this value. 50kb (10x warn threshold) by default. -batch_size_fail_threshold_in_kb: 50 - -# Log WARN on any batches not of type LOGGED than span across more partitions than this limit -unlogged_batch_across_partitions_warn_threshold: 10 - -# Log a warning when compacting partitions larger than this value -compaction_large_partition_warning_threshold_mb: 100 - -# GC Pauses greater than gc_warn_threshold_in_ms will be logged at WARN level -# Adjust the threshold based on your application throughput requirement -# By default, Cassandra logs GC Pauses greater than 200 ms at INFO level -gc_warn_threshold_in_ms: 1000 diff --git a/ansible/roles/cassandra/templates/cassandra.yaml.j2 b/ansible/roles/cassandra/templates/cassandra.yaml.j2 index 76a69f94f7..0192f9324f 100755 --- a/ansible/roles/cassandra/templates/cassandra.yaml.j2 +++ b/ansible/roles/cassandra/templates/cassandra.yaml.j2 @@ -40,7 +40,11 @@ seed_provider: parameters: # seeds is actually a comma-delimited list of addresses. # Ex: ",," +{% if groups['cassandra-2'] is defined %} + - seeds: "{{groups['cassandra'][0]}},{{groups['cassandra'][1]}}" +{% else %} - seeds: {{cassandra_seeds}} +{% endif %} concurrent_reads: 32 concurrent_writes: 32 concurrent_counter_writes: 32 @@ -66,8 +70,6 @@ start_native_transport: true native_transport_port: 9042 start_rpc: false rpc_address: {{cassandra_rpc_address}} -broadcast_rpc_address: {{cassandra_broadcast_rpc_address}} -broadcast_address: {{cassandra_broadcast_address}} rpc_port: 9160 rpc_keepalive: true rpc_server_type: sync @@ -87,7 +89,11 @@ cas_contention_timeout_in_ms: 1000 truncate_request_timeout_in_ms: 60000 request_timeout_in_ms: 10000 cross_node_timeout: false +{% if groups['cassandra-2'] is defined %} +endpoint_snitch: GossipingPropertyFileSnitch +{% else %} endpoint_snitch: SimpleSnitch +{% endif %} dynamic_snitch_update_interval_in_ms: 100 dynamic_snitch_reset_interval_in_ms: 600000 dynamic_snitch_badness_threshold: 0.1 From 762c63d5a0a88dc0caf4c38bcbb29bb2af732b13 Mon Sep 17 00:00:00 2001 From: Santhosh Gandham Date: Mon, 12 Nov 2018 18:06:45 +0530 Subject: [PATCH 0321/1345] Issue: #000 onboarding registerDevice API --- ansible/roles/kong-api/defaults/main.yml | 12 ++++++++- .../stack-proxy/templates/proxy-default.conf | 26 +++++++++++++++++++ 2 files changed, 37 insertions(+), 1 deletion(-) diff --git a/ansible/roles/kong-api/defaults/main.yml b/ansible/roles/kong-api/defaults/main.yml index 3de7cc2ff7..2904a53623 100644 --- a/ansible/roles/kong-api/defaults/main.yml +++ b/ansible/roles/kong-api/defaults/main.yml @@ -3287,7 +3287,17 @@ kong_apis: - {name: 'acl', config.whitelist: 'publicUser'} - {name: 'rate-limiting', config.policy: "local", config.hour: "{{ medium_rate_limit_per_hour }}"} - {name: 'request-size-limiting', config.allowed_payload_size: "{{ small_request_size_limit }}" } - + - name: "deviceRegister" + request_path: "/v3/device/register" + upstream_url: "{{ sunbird_analytics_api_base_url }}/device/register" + strip_request_path: true + plugins: + - {name: 'jwt'} + - {name: 'cors'} + - {name: 'statsd', config.metrics: "{{ statsd_metrics }}" } + - {name: 'acl', config.whitelist: 'publicUser'} + - {name: 'rate-limiting', config.policy: "local", config.hour: "{{ medium_rate_limit_per_hour }}"} + - {name: 'request-size-limiting', config.allowed_payload_size: "{{ small_request_size_limit }}" } - name: "channelSpecificTelemetryExhaust" request_path: "{{ data_service_prefix }}/v3/dataset/get" upstream_url: "{{ sunbird_analytics_api_base_url }}/dataset/get" diff --git a/ansible/roles/stack-proxy/templates/proxy-default.conf b/ansible/roles/stack-proxy/templates/proxy-default.conf index b540af96f1..6e9816431f 100644 --- a/ansible/roles/stack-proxy/templates/proxy-default.conf +++ b/ansible/roles/stack-proxy/templates/proxy-default.conf @@ -371,3 +371,29 @@ location ~* ^/content-plugins/(.*) { {{ proxy_custom_config }} client_max_body_size 60M; } + +server { + listen 443 ssl; + ssl_certificate /run/secrets/site.crt; + ssl_certificate_key /run/secrets/site.key; + server_name {{ api_proxy_name }}; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-SSL on; + proxy_set_header X-Forwarded-Proto $scheme; + + location /v3/device/register { + set $target http://api-manager_kong:8000; + rewrite ^/v1/device/register/(.*) /$1 break; + proxy_pass $target; + + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Scheme $scheme; + proxy_connect_timeout 5; + proxy_send_timeout 60; + proxy_read_timeout 70; + } + +} \ No newline at end of file From ff2e9ed343e73bca74a3acf5c60cef48bd3efba7 Mon Sep 17 00:00:00 2001 From: Santhosh Gandham Date: Mon, 12 Nov 2018 18:49:36 +0530 Subject: [PATCH 0322/1345] Issue: #000 updating proxy config for api device register --- .../stack-proxy/templates/proxy-default.conf | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/ansible/roles/stack-proxy/templates/proxy-default.conf b/ansible/roles/stack-proxy/templates/proxy-default.conf index 6e9816431f..4639922bdd 100644 --- a/ansible/roles/stack-proxy/templates/proxy-default.conf +++ b/ansible/roles/stack-proxy/templates/proxy-default.conf @@ -396,4 +396,20 @@ server { proxy_read_timeout 70; } + location / { + set $target http://player_player:3000; + rewrite ^/(.*) /$1 break; + proxy_pass $target; + + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Scheme $scheme; + proxy_connect_timeout 5; + proxy_send_timeout 60; + proxy_read_timeout 70; + proxy_set_header X-Forwarded-Proto $scheme; + # root /usr/share/nginx/www; + } + + } \ No newline at end of file From 00f1c3f139c238c10a2db2b091b494b2ab219da9 Mon Sep 17 00:00:00 2001 From: Santhosh Gandham Date: Mon, 12 Nov 2018 18:58:35 +0530 Subject: [PATCH 0323/1345] Issue: #000 updating proxy config for api device register --- ansible/roles/stack-proxy/templates/proxy-default.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/stack-proxy/templates/proxy-default.conf b/ansible/roles/stack-proxy/templates/proxy-default.conf index 4639922bdd..670a874a47 100644 --- a/ansible/roles/stack-proxy/templates/proxy-default.conf +++ b/ansible/roles/stack-proxy/templates/proxy-default.conf @@ -385,7 +385,7 @@ server { location /v3/device/register { set $target http://api-manager_kong:8000; - rewrite ^/v1/device/register/(.*) /$1 break; + rewrite ^/v3/device/register/(.*) /$1 break; proxy_pass $target; proxy_set_header Host $host; From c5453fdf0dec3e6a7d89ed39f0bcf2f14b25474b Mon Sep 17 00:00:00 2001 From: Santhosh Gandham Date: Mon, 12 Nov 2018 19:06:31 +0530 Subject: [PATCH 0324/1345] Issue: #000 updating proxy config for api device register --- .../roles/stack-proxy/templates/proxy-default.conf | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/ansible/roles/stack-proxy/templates/proxy-default.conf b/ansible/roles/stack-proxy/templates/proxy-default.conf index 670a874a47..dc7384e31d 100644 --- a/ansible/roles/stack-proxy/templates/proxy-default.conf +++ b/ansible/roles/stack-proxy/templates/proxy-default.conf @@ -367,6 +367,18 @@ location ~* ^/content-plugins/(.*) { proxy_set_header X-Forwarded-Proto $scheme; # root /usr/share/nginx/www; } + location /v3/device/register { + set $target http://api-manager_kong:8000; + rewrite ^/v3/device/register/(.*) /$1 break; + proxy_pass $target; + + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Scheme $scheme; + proxy_connect_timeout 5; + proxy_send_timeout 60; + proxy_read_timeout 70; + } {# Including custom configuration #} {{ proxy_custom_config }} client_max_body_size 60M; From 558ed65f8da2c0316ca3a6fca24e5c9dce789a03 Mon Sep 17 00:00:00 2001 From: S M Y Date: Mon, 12 Nov 2018 19:13:40 +0530 Subject: [PATCH 0325/1345] Issue #000 env: new vars --- ansible/inventories/sample/group_vars/sample | 4 ++++ .../roles/stack-sunbird/templates/sunbird_content-service.env | 1 + ansible/roles/stack-sunbird/templates/sunbird_player.env | 3 +++ 3 files changed, 8 insertions(+) diff --git a/ansible/inventories/sample/group_vars/sample b/ansible/inventories/sample/group_vars/sample index 3f00dfc74c..027a62ceff 100644 --- a/ansible/inventories/sample/group_vars/sample +++ b/ansible/inventories/sample/group_vars/sample @@ -354,3 +354,7 @@ sunbird_user_profile_field_default_visibility: public config_service_enabled: false config_refresh_interval: 10 sunbird_analytics_api_base_url: "{{ekstep_api_base_url}}" +sunbird_cassandra_urls: +sunbird_cassandra_consistency_level: one +sunbird_cassandra_replication_strategy: '{"class":"SimpleStrategy","replication_factor":"1"}' +sunbird_allowed_login: diff --git a/ansible/roles/stack-sunbird/templates/sunbird_content-service.env b/ansible/roles/stack-sunbird/templates/sunbird_content-service.env index 876b692ef7..e7ce02de7c 100644 --- a/ansible/roles/stack-sunbird/templates/sunbird_content-service.env +++ b/ansible/roles/stack-sunbird/templates/sunbird_content-service.env @@ -41,3 +41,4 @@ sunbird_content_service_whitelisted_resourcetype={{content_service_whitelisted_r sunbird_language_service_api_key={{sunbird_language_service_api_key}} sunbird_language_service_api_base_url={{sunbird_language_service_api_base_url}} sunbird_portal_base_url={{sunbird_portal_base_url}} +sunbird_cassandra_urls={{sunbird_cassandra_urls}} diff --git a/ansible/roles/stack-sunbird/templates/sunbird_player.env b/ansible/roles/stack-sunbird/templates/sunbird_player.env index e337f78d60..fd69d18c93 100644 --- a/ansible/roles/stack-sunbird/templates/sunbird_player.env +++ b/ansible/roles/stack-sunbird/templates/sunbird_player.env @@ -35,3 +35,6 @@ sunbird_portal_user_upload_ref_link={{sunbird_portal_user_upload_ref_link}} sunbird_build_number={{sunbird_build_number}} config_service_enabled={{config_service_enabled}} config_refresh_interval={{config_refresh_interval}} +sunbird_cassandra_consistency_level={{sunbird_cassandra_consistency_level}} +sunbird_cassandra_replication_strategy={{sunbird_cassandra_replication_strategy}} + From 34ddb4999253d40e3c49355cc23678992cd54108 Mon Sep 17 00:00:00 2001 From: Santhosh Gandham Date: Mon, 12 Nov 2018 19:14:06 +0530 Subject: [PATCH 0326/1345] Issue: #000 updating onborad api for device register --- ansible/roles/kong-api/defaults/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/kong-api/defaults/main.yml b/ansible/roles/kong-api/defaults/main.yml index 2904a53623..3832049185 100644 --- a/ansible/roles/kong-api/defaults/main.yml +++ b/ansible/roles/kong-api/defaults/main.yml @@ -3289,7 +3289,7 @@ kong_apis: - {name: 'request-size-limiting', config.allowed_payload_size: "{{ small_request_size_limit }}" } - name: "deviceRegister" request_path: "/v3/device/register" - upstream_url: "{{ sunbird_analytics_api_base_url }}/device/register" + upstream_url: "{{ sunbird_analytics_api_base_url }}/v1/device/register" strip_request_path: true plugins: - {name: 'jwt'} From 6227aa6fcfb6c9276c4935f89c8e9af298a1b2d8 Mon Sep 17 00:00:00 2001 From: Santhosh Gandham Date: Mon, 12 Nov 2018 19:28:37 +0530 Subject: [PATCH 0327/1345] Issue: #000 updating proxy for device register api --- ansible/roles/stack-proxy/templates/proxy-default.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/stack-proxy/templates/proxy-default.conf b/ansible/roles/stack-proxy/templates/proxy-default.conf index dc7384e31d..5a6bbacee0 100644 --- a/ansible/roles/stack-proxy/templates/proxy-default.conf +++ b/ansible/roles/stack-proxy/templates/proxy-default.conf @@ -369,7 +369,7 @@ location ~* ^/content-plugins/(.*) { } location /v3/device/register { set $target http://api-manager_kong:8000; - rewrite ^/v3/device/register/(.*) /$1 break; + rewrite ^/v3/device/register/(.*) /v3/device/register/$1 break; proxy_pass $target; proxy_set_header Host $host; From 66dc43c03f8cd0ab4ffa9a45616f4637611a4051 Mon Sep 17 00:00:00 2001 From: Santhosh Gandham Date: Tue, 13 Nov 2018 09:28:29 +0530 Subject: [PATCH 0328/1345] Issue: #000 updating proxy for device register api --- .../stack-proxy/templates/proxy-default.conf | 42 ------------------- 1 file changed, 42 deletions(-) diff --git a/ansible/roles/stack-proxy/templates/proxy-default.conf b/ansible/roles/stack-proxy/templates/proxy-default.conf index 5a6bbacee0..ec31857cfd 100644 --- a/ansible/roles/stack-proxy/templates/proxy-default.conf +++ b/ansible/roles/stack-proxy/templates/proxy-default.conf @@ -383,45 +383,3 @@ location ~* ^/content-plugins/(.*) { {{ proxy_custom_config }} client_max_body_size 60M; } - -server { - listen 443 ssl; - ssl_certificate /run/secrets/site.crt; - ssl_certificate_key /run/secrets/site.key; - server_name {{ api_proxy_name }}; - proxy_set_header Host $host; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - proxy_set_header X-Forwarded-SSL on; - proxy_set_header X-Forwarded-Proto $scheme; - - location /v3/device/register { - set $target http://api-manager_kong:8000; - rewrite ^/v3/device/register/(.*) /$1 break; - proxy_pass $target; - - proxy_set_header Host $host; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header X-Scheme $scheme; - proxy_connect_timeout 5; - proxy_send_timeout 60; - proxy_read_timeout 70; - } - - location / { - set $target http://player_player:3000; - rewrite ^/(.*) /$1 break; - proxy_pass $target; - - proxy_set_header Host $host; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header X-Scheme $scheme; - proxy_connect_timeout 5; - proxy_send_timeout 60; - proxy_read_timeout 70; - proxy_set_header X-Forwarded-Proto $scheme; - # root /usr/share/nginx/www; - } - - -} \ No newline at end of file From 7972e4f7370ea682fbe896f93b1fc70c100b45e9 Mon Sep 17 00:00:00 2001 From: S M Y Date: Tue, 13 Nov 2018 12:09:19 +0530 Subject: [PATCH 0329/1345] Issue #000 env: env vars --- ansible/inventories/sample/group_vars/sample | 1 + .../roles/stack-sunbird/templates/sunbird_learner-service.env | 1 + 2 files changed, 2 insertions(+) diff --git a/ansible/inventories/sample/group_vars/sample b/ansible/inventories/sample/group_vars/sample index 027a62ceff..851fe8b685 100644 --- a/ansible/inventories/sample/group_vars/sample +++ b/ansible/inventories/sample/group_vars/sample @@ -358,3 +358,4 @@ sunbird_cassandra_urls: sunbird_cassandra_consistency_level: one sunbird_cassandra_replication_strategy: '{"class":"SimpleStrategy","replication_factor":"1"}' sunbird_allowed_login: +sunbird_course_batch_notification_active: FALSE diff --git a/ansible/roles/stack-sunbird/templates/sunbird_learner-service.env b/ansible/roles/stack-sunbird/templates/sunbird_learner-service.env index 95ccc6ce6d..43f5efed5a 100644 --- a/ansible/roles/stack-sunbird/templates/sunbird_learner-service.env +++ b/ansible/roles/stack-sunbird/templates/sunbird_learner-service.env @@ -80,3 +80,4 @@ sunbird_url_shortner_access_token={{sunbird_url_shortner_access_token}} sunbird_url_shortner_enable={{sunbird_url_shortner_enable}} sunbird_user_profile_field_default_visibility={{sunbird_user_profile_field_default_visibility}} sunbird_keycloak_required_action_link_expiration_seconds={{sunbird_keycloak_required_action_link_expiration_seconds}} +sunbird_course_batch_notification_active={{sunbird_course_batch_notification_active}} From 3359138b64cee45694ab20d45de13d627d6ce85e Mon Sep 17 00:00:00 2001 From: S M Y Date: Tue, 13 Nov 2018 12:48:24 +0530 Subject: [PATCH 0330/1345] Issue #000 network: single docker swarm network --- .../roles/bootstrap_swarm/defaults/main.yml | 2 - .../templates/stack-jenkins-slave.yml | 5 +-- .../stack-logger/templates/stack-logger.yml | 10 ++--- .../stack-monitor/templates/stack-monitor.yml | 38 +++++++------------ .../stack-proxy/templates/stack-proxy.yml | 6 --- 5 files changed, 20 insertions(+), 41 deletions(-) diff --git a/ansible/roles/bootstrap_swarm/defaults/main.yml b/ansible/roles/bootstrap_swarm/defaults/main.yml index e7b4a1592d..e27ad4571c 100644 --- a/ansible/roles/bootstrap_swarm/defaults/main.yml +++ b/ansible/roles/bootstrap_swarm/defaults/main.yml @@ -1,5 +1,3 @@ --- networks: - {name: 'application_default', subnet: '11.11.1.0/24'} - - {name: 'jenkins_default', subnet: '11.11.2.0/24' } - - {name: 'monitoring', subnet: '11.11.3.0/24' } diff --git a/ansible/roles/stack-jenkins-slave/templates/stack-jenkins-slave.yml b/ansible/roles/stack-jenkins-slave/templates/stack-jenkins-slave.yml index 5e631ff90b..749335fccd 100644 --- a/ansible/roles/stack-jenkins-slave/templates/stack-jenkins-slave.yml +++ b/ansible/roles/stack-jenkins-slave/templates/stack-jenkins-slave.yml @@ -30,7 +30,7 @@ services: limits: memory: "{{ general_jenkins_slave_limit_memory }}" networks: - - jenkins_default + - application_default api-manager-jenkins-slave: image: sunbird/api-manager-jenkins-swarm-agent @@ -52,7 +52,6 @@ services: limits: memory: "{{ api_manager_jenkins_slave_limit_memory }}" networks: - - jenkins_default - application_default secrets: @@ -70,7 +69,5 @@ secrets: external: true networks: - jenkins_default: - external: true application_default: external: true diff --git a/ansible/roles/stack-logger/templates/stack-logger.yml b/ansible/roles/stack-logger/templates/stack-logger.yml index 191548ef81..3b807481c5 100644 --- a/ansible/roles/stack-logger/templates/stack-logger.yml +++ b/ansible/roles/stack-logger/templates/stack-logger.yml @@ -11,7 +11,7 @@ services: - source: kibana.yml target: /opt/kibana/config/kibana.yml networks: - - monitoring + - application_default logstash: image: sunbird/logstash:2.4.1 @@ -33,7 +33,7 @@ services: - '51415:51415' - '5044:5044' networks: - - monitoring + - application_default logspout: image: gliderlabs/logspout:v3.2.3 @@ -46,7 +46,7 @@ services: volumes: - '/var/run/docker.sock:/tmp/docker.sock' networks: - - monitoring + - application_default oauth: image: rjshrjndrn/oauth2-proxy:2.2 @@ -67,7 +67,7 @@ services: - source: authenticated_email_kibana_oauth target: /authenticated_email.txt networks: - - monitoring + - application_default configs: authenticated_email_kibana_oauth: @@ -78,6 +78,6 @@ configs: external: true networks: - monitoring: + application_default: external: true diff --git a/ansible/roles/stack-monitor/templates/stack-monitor.yml b/ansible/roles/stack-monitor/templates/stack-monitor.yml index d0dc7496e6..0c0a03e5e7 100644 --- a/ansible/roles/stack-monitor/templates/stack-monitor.yml +++ b/ansible/roles/stack-monitor/templates/stack-monitor.yml @@ -6,7 +6,7 @@ services: ports: - "9090:9090" networks: - - monitoring + - application_default volumes: - /mnt/dockerdata/prometheus/data/:/prometheus command: "-config.file=/etc/prometheus/prometheus.yml -alertmanager.url http://alertmanager:9093/alertmanager -storage.local.path=/prometheus -web.console.libraries=/etc/prometheus/console_libraries -storage.local.target-heap-size=15728640 -storage.local.retention={{prometheus_storage_retention_time}} -web.console.templates=/etc/prometheus/consoles -web.route-prefix={{prometheus_route_prefix}} -web.external-url={{prometheus_web_external_url}} -storage.local.max-chunks-to-persist=1572864 -storage.local.memory-chunks=3145728 -storage.local.checkpoint-dirty-series-limit=25000" @@ -51,7 +51,7 @@ services: ports: - "9093:9093" networks: - - monitoring + - application_default volumes: - /var/dockerdata/alertmanager/data:/etc/alertmanager/data command: "-config.file=/etc/alertmanager/alertmanagerconfig.yml -storage.path=/alertmanager/data -web.route-prefix={{prometheus_alertmanager_route_prefix}} -web.external-url={{prometheus_alertmanager_web_external_url}}" @@ -70,9 +70,7 @@ services: - "9115:9115" command: "--config.file=/etc/blackbox-exporter/blackboxconfig.yml" networks: - - monitoring - application_default - - jenkins_default configs: - source: blackboxconfig.yml target: /etc/blackbox-exporter/blackboxconfig.yml @@ -88,7 +86,7 @@ services: ports: - "8081:8080" networks: - - monitoring + - application_default volumes: - /:/rootfs:ro - /var/run:/var/run:rw @@ -107,7 +105,7 @@ services: ports: - "9100:9100" networks: - - monitoring + - application_default environment: - HOST_HOSTNAME=/etc/hostname volumes: @@ -129,7 +127,7 @@ services: ports: - "9108:9108" networks: - - monitoring + - application_default command: - '-es.uri=http://{{ monitor_es_host }}:9200' - '-es.all=true' @@ -147,7 +145,7 @@ services: ports: - "9109:9108" networks: - - monitoring + - application_default command: - '-es.uri=http://{{ groups['log-es'][0] }}:9200' - '-es.all=true' @@ -166,7 +164,7 @@ services: ports: - 9187:9187 networks: - - monitoring + - application_default command: - '-extend.query-path=/etc/postgres_exporter/postgresmasterqueries.yml' environment: @@ -189,7 +187,7 @@ services: ports: - 9188:9187 networks: - - monitoring + - application_default command: - '-extend.query-path=/etc/postgres_exporter/postgresslavequeries.yml' environment: @@ -212,9 +210,7 @@ services: - 9125:9125 - 9125:9125/udp networks: - - monitoring - application_default - - jenkins_default command: - '-statsd.mapping-config=/etc/statsd_exporter/statsd_mapping.yml' configs: @@ -232,9 +228,7 @@ services: ports: - 9158:9158 networks: - - monitoring - application_default - - jenkins_default command: /etc/kong_cluster_exporter/config.yml configs: - source: kong_cluster_exporter_config.yml @@ -251,7 +245,7 @@ services: ports: - 9159:9158 networks: - - monitoring + - application_default command: /etc/elasticsearch_snapshots_exporter/config.yml configs: - source: elasticsearch_snapshots_exporter_config.yml @@ -268,7 +262,7 @@ services: ports: - 9358:9358 networks: - - monitoring + - application_default command: /etc/data_backup_azure_blob_exporter/config.yml configs: - source: data_backup_azure_blob_exporter_config.yml @@ -285,7 +279,7 @@ services: ports: - "3001:3000" networks: - - monitoring + - application_default volumes: - /var/dockerdata/grafana:/var/lib/grafana command: -e "PROMETHEUS_ENDPOINT=http://prometheus:9090/prometheus" @@ -312,7 +306,7 @@ services: - source: jmx_httpserver.yml target: /opt/app/jmx_httpserver.yml networks: - - monitoring + - application_default logstash: image: sunbird/logstash:2.4.1 @@ -329,7 +323,7 @@ services: - '51416:51415' - '5045:5044' networks: - - monitoring + - application_default deploy: replicas: {{ monitor_logstash_replicas }} resources: @@ -350,7 +344,7 @@ services: volumes: - '/var/run/docker.sock:/tmp/docker.sock' networks: - - monitoring + - application_default configs: prometheus.yml: @@ -406,9 +400,5 @@ configs: networks: - monitoring: - external: true application_default: external: true - jenkins_default: - external: true diff --git a/ansible/roles/stack-proxy/templates/stack-proxy.yml b/ansible/roles/stack-proxy/templates/stack-proxy.yml index 134b1a5d28..eee187d972 100644 --- a/ansible/roles/stack-proxy/templates/stack-proxy.yml +++ b/ansible/roles/stack-proxy/templates/stack-proxy.yml @@ -29,9 +29,7 @@ services: - source: proxy-default.conf target: /etc/nginx/conf.d/default.conf networks: - - jenkins_default - application_default - - monitoring secrets: {# Skip copying ssls for no domain configs #} @@ -51,9 +49,5 @@ configs: external: true networks: - jenkins_default: - external: true application_default: external: true - monitoring: - external: true From c8c27a2b0e38694dd2d1746efcfdfd2fe3d137c1 Mon Sep 17 00:00:00 2001 From: Sourav Dey Date: Tue, 13 Nov 2018 14:35:39 +0530 Subject: [PATCH 0331/1345] Issue #SB-8888 feat: Adding update collaborators API (#265) * Issue #SB-8888 feat: Adding update collaborators API --- ansible/roles/kong-api/defaults/main.yml | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/ansible/roles/kong-api/defaults/main.yml b/ansible/roles/kong-api/defaults/main.yml index 3832049185..ae8abf894b 100644 --- a/ansible/roles/kong-api/defaults/main.yml +++ b/ansible/roles/kong-api/defaults/main.yml @@ -3252,6 +3252,22 @@ kong_apis: config.limit_by: credential - name: request-size-limiting config.allowed_payload_size: "{{ small_request_size_limit }}" + - name: updateCollaborators + request_path: "{{ content_service_prefix }}/v1/collaborator/update" + upstream_url: "{{ content_service_url }}/v1/content/collaborator/update" + strip_request_path: true + plugins: + - name: jwt + - name: cors + - "{{ statsd_pulgin }}" + - name: acl + config.whitelist: contentUpdate + - name: rate-limiting + config.policy: local + config.hour: "{{ medium_rate_limit_per_hour }}" + config.limit_by: credential + - name: request-size-limiting + config.allowed_payload_size: "{{ small_request_size_limit }}" # Data pipeline - name: "datasetSubmitRequest" From d3f7e02f4ecd606a8b957f6144705e99d663b0fb Mon Sep 17 00:00:00 2001 From: S M Y Date: Tue, 13 Nov 2018 17:39:47 +0530 Subject: [PATCH 0332/1345] Issue #000 env: env vars --- .../roles/stack-sunbird/templates/sunbird_content-service.env | 2 -- 1 file changed, 2 deletions(-) diff --git a/ansible/roles/stack-sunbird/templates/sunbird_content-service.env b/ansible/roles/stack-sunbird/templates/sunbird_content-service.env index e7ce02de7c..b050b9f1d2 100644 --- a/ansible/roles/stack-sunbird/templates/sunbird_content-service.env +++ b/ansible/roles/stack-sunbird/templates/sunbird_content-service.env @@ -11,8 +11,6 @@ sunbird_image_storage_url={{sunbird_image_storage_url}} sunbird_azure_account_name={{sunbird_account_name}} sunbird_azure_account_key={{sunbird_account_key}} sunbird_dial_code_registry_url=https://{{proxy_server_name}}/dial/ -sunbird_cassandra_ips={{ cassandra_server_private_ip }} -sunbird_cassandra_port={{ cassandra_port }} sunbird_telemetry_sync_batch_size={{sunbird_telemetry_sync_batch_size}} sunbird_environment={{sunbird_environment}} sunbird_instance={{sunbird_instance}} From 1745918d8e11a4326017263ef7c133438561ac89 Mon Sep 17 00:00:00 2001 From: S M Y Date: Wed, 14 Nov 2018 11:13:53 +0530 Subject: [PATCH 0333/1345] Issue #000 merge: remove merge conflict --- deploy/validateConfig.sh | 4 ---- 1 file changed, 4 deletions(-) diff --git a/deploy/validateConfig.sh b/deploy/validateConfig.sh index 470988a406..dfe8bd63b1 100755 --- a/deploy/validateConfig.sh +++ b/deploy/validateConfig.sh @@ -148,11 +148,7 @@ done # Function to retrieve values of mandatory fields and store it as key value pair get_config_values(){ key=$1 -<<<<<<< HEAD -vals[$key]=$(awk ''/^$key:' /{ if ($2 !~ /#.*/) {print $2}}' config) -======= vals[$key]=$(awk ''/^$key:' /{ if ($2 !~ /#.*/) {print $2}}' config.yml) ->>>>>>> release-1.12 } # Script start. core_install will receive value as "core" from calling script when -s core option is triggered. From 2dfdd0362971c55ac44f09c4102b11fdd079d9ef Mon Sep 17 00:00:00 2001 From: S M Y Date: Wed, 14 Nov 2018 18:28:50 +0530 Subject: [PATCH 0334/1345] Issue #000 tab: remove tabs from api list --- ansible/roles/kong-api/defaults/main.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ansible/roles/kong-api/defaults/main.yml b/ansible/roles/kong-api/defaults/main.yml index ae8abf894b..ffdc2672b6 100644 --- a/ansible/roles/kong-api/defaults/main.yml +++ b/ansible/roles/kong-api/defaults/main.yml @@ -460,7 +460,7 @@ kong_apis: config.hour: "{{ medium_rate_limit_per_hour }}" config.limit_by: credential - name: request-size-limiting - config.allowed_payload_size: "{{ small_request_size_limit }}" + config.allowed_payload_size: "{{ small_request_size_limit }}" - name: updateUser request_path: "{{ user_service_prefix }}/v1/update" upstream_url: "{{ learning_service_url }}/v1/user/update" @@ -508,7 +508,7 @@ kong_apis: config.hour: "{{ medium_rate_limit_per_hour }}" config.limit_by: credential - name: request-size-limiting - config.allowed_payload_size: "{{ small_request_size_limit }}" + config.allowed_payload_size: "{{ small_request_size_limit }}" - name: searchUser request_path: "{{ user_service_prefix }}/v1/search" upstream_url: "{{ learning_service_url }}/v1/user/search" @@ -1305,7 +1305,7 @@ kong_apis: config.hour: "{{ medium_rate_limit_per_hour }}" config.limit_by: credential - name: request-size-limiting - config.allowed_payload_size: "{{ small_request_size_limit }}" + config.allowed_payload_size: "{{ small_request_size_limit }}" - name: createBatch request_path: "{{ course_service_prefix }}/v1/batch/create" upstream_url: "{{ learning_service_url }}/v1/course/batch/create" From 651b60b3a8b298f894e63f664f6f9f85d7051d1f Mon Sep 17 00:00:00 2001 From: S M Y Date: Wed, 14 Nov 2018 18:28:50 +0530 Subject: [PATCH 0335/1345] Issue #000 tab: remove tabs from api list --- ansible/roles/kong-api/defaults/main.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ansible/roles/kong-api/defaults/main.yml b/ansible/roles/kong-api/defaults/main.yml index 3832049185..15ec9d6914 100644 --- a/ansible/roles/kong-api/defaults/main.yml +++ b/ansible/roles/kong-api/defaults/main.yml @@ -460,7 +460,7 @@ kong_apis: config.hour: "{{ medium_rate_limit_per_hour }}" config.limit_by: credential - name: request-size-limiting - config.allowed_payload_size: "{{ small_request_size_limit }}" + config.allowed_payload_size: "{{ small_request_size_limit }}" - name: updateUser request_path: "{{ user_service_prefix }}/v1/update" upstream_url: "{{ learning_service_url }}/v1/user/update" @@ -508,7 +508,7 @@ kong_apis: config.hour: "{{ medium_rate_limit_per_hour }}" config.limit_by: credential - name: request-size-limiting - config.allowed_payload_size: "{{ small_request_size_limit }}" + config.allowed_payload_size: "{{ small_request_size_limit }}" - name: searchUser request_path: "{{ user_service_prefix }}/v1/search" upstream_url: "{{ learning_service_url }}/v1/user/search" @@ -1305,7 +1305,7 @@ kong_apis: config.hour: "{{ medium_rate_limit_per_hour }}" config.limit_by: credential - name: request-size-limiting - config.allowed_payload_size: "{{ small_request_size_limit }}" + config.allowed_payload_size: "{{ small_request_size_limit }}" - name: createBatch request_path: "{{ course_service_prefix }}/v1/batch/create" upstream_url: "{{ learning_service_url }}/v1/course/batch/create" From de28b51558bd8539c201e0d330e863f149edad38 Mon Sep 17 00:00:00 2001 From: S M Y Date: Thu, 15 Nov 2018 11:56:58 +0530 Subject: [PATCH 0336/1345] Issue #000 config: updating config file --- deploy/config.yml | 72 ++++++++++++++++++++--------------------------- 1 file changed, 30 insertions(+), 42 deletions(-) diff --git a/deploy/config.yml b/deploy/config.yml index 367e107cda..2a273eb222 100755 --- a/deploy/config.yml +++ b/deploy/config.yml @@ -12,52 +12,51 @@ #Basic -env: # Name of the environment you are deploying. Typically, it is one of development, test, staging, production, etc. -implementation_name: # Name of your sunbird implementation. Let's say for the sake of this document, it is ntp. -ssh_ansible_user: # Ssh user for accessing all servers, who must be a sudo user -sudo_passwd: # If user have sudo password, else please skip it -ansible_private_key_path: # Path to the private key file to allow ansible to deploy +env: # The environment type being setup. Typical examples are dev, test, qa, staging, performance, preprod, production etc. +implementation_name: # The name of your sunbird implementation. As a best practice, use the org name that is in the domain (dns) name that you are going to use for this sunbird instance +ssh_ansible_user: # The SSH user name that has sudo access to all servers. If you have followed the user creation sample in the pre-requisites, then this would be sunbird +sudo_passwd: # This variable is not required if you have created a user with passwordless ssh as mentioned in the pre-requisites. This variable would be removed in a future release +ansible_private_key_path: # The path of the private SSH key file for the ssh_ansible_user. Ansible uses this file to SSH to the servers. If you have followed the user creation sample in the pre-requisites, it would be /home/yourcurrentuser/key #Application -application_host: # Private ip of the application server -app_address_space: # Application server address space (e.g. 10.3.0.0/24) +application_host: # The private IP of the designated app server. Every cloud VM would have a private IP associated with it and it can be found by running ifconfig on the VM +app_address_space: # The application server address space in CIDR notation. This has to be calculated from the application_host private IP. For eg. if the application_host IP is 11.12.1.5, then the app_address_space would be 11.12.1.0/24 (derived by setting the last octet in the IP to 0, followed by /24) #Proxy -dns_name: # Public DNS url of the app the server / ip address of your server or load balancer -proto: # http/https; if you're usig ip use http -cert_path: # Path to .cert file for nginx -key_path: # Path to .key file for nginx +dns_name: # The domain name or IP address of your installation. Provide the IP address, if want to access Sunbird over an IP address (http://x.y.z.a). It is best to use a domain name instead of the IP address. +proto: # The protocol to be used, either http or https. Use http if the value of the dns_name variable is an IP address or if you have a domain but do not to enable SSL. Please note that the latest browsers would mark sites without https as insecure. +cert_path: # Path to the .cert file in the SSL certificate for nginx. This variable is not mandatory, if the value of the proto variable is set to http +key_path: # Path to .key file in the SSL certificate for nginx. This variable is not mandatory, if the value of the proto variable is set to http #Database database_host: # Db server private ip -database_password: # Common password for all the databases +database_password: # All the databases will be secured using this password. You will need to use the same password if you want to connect to the sunbird databases for running any queries directly. Please use an alphanumeric string that is atleast 8 characters long as a best practice. #Keycloak -keycloak_admin_password: # Keycloak admin console password. Default user is admin, you can change it in keycloak ui -sso_password: # Password for keycloak sso_username (by default username is user-manager, you can change it in keycloak ui) -trampoline_secret: # Trampoline secret, atleaset give 8 chars - -# Es configs -backup_storage_key: # Passsword to store the elastic search backup. +keycloak_admin_password: # The Keycloak admin user password. The default admin username is admin. You will need to use this password to login to keycloak for any administration. Please use an alphanumeric string that is atleast 8 characters long as a best practice. +sso_password: # The password for the keycloak SSO user. The default username is user-manager. The sunbird backend uses this password to invoke keycloak APIs for user creation, authentication. Please use an alphanumeric string that is atleast 8 characters long as a best practice. +trampoline_secret: # The trampoline secret for Keycloak. This secret is required only while setting up single sign on to sunbird. # Badger -badger_admin_password: # Admin password +badger_admin_password: # The password for the Badgr administrator. The default username is admin. This password would be required if you want to invoke APIs on the badger service and is used by the sunbird backend. # Default admin user is admin, you can create new user using `./manage.py createsuperuser` in badger container. -badger_admin_email: # Admin email address for badger +badger_admin_email: # The email ID of the Badgr administrator #Ekstep -ekstep_api_base_url: https://api-qa.ekstep.in # Qa/Dev: https://api-qa.ekstep.in & prod: https://api.ekstep.in -ekstep_proxy_base_url: https://qa.ekstep.in # Qa/Dev: https://qa.ekstep.in & prod: https://community.ekstep.in +ekstep_api_base_url: https://qa.ekstep.in/api # The base URL for all EkStep APIs. The URL for staging is: https://qa.ekstep.in/api and production is: https://api.ekstep.in +ekstep_proxy_base_url: https://qa.ekstep.in # The proxy URL for EkStep. The URL for staging is: https://qa.ekstep.in and production: https://community.ekstep.in ekstep_api_key: # Jwt token generated by the key,secret produced from the ekstep portal. # Please go through this url for more about jwt: # https://community.ekstep.in/developer-knowledgebase/45-getting-started-with-apis +#Azure Storage information for core services sunbird_image_storage_url: # Azure storage url ex: https://sunbirdtest.blob.core.windows.net/dial/ -sunbird_azure_storage_key: # Azure account storage key -sunbird_azure_storage_account: # Azure account storage name +sunbird_azure_storage_key: # Azure account storage key for the player, content, Badger Service +sunbird_azure_storage_account: # Azure account storage name for the player, content, Badger Service #Sunbird System Initialisation - First organisation and user in Sunbird will be created with these details +sunbird_default_channel: # Enter the channel name which you want to create in the sunbird installation sunbird_custodian_tenant_name: # Custodian Organisation Name sunbird_custodian_tenant_description: # Custodian Organisation Description sunbird_custodian_tenant_channel: # Custodian Organisation Channel @@ -68,27 +67,15 @@ sunbird_root_user_password: # password to be used for l sunbird_root_user_email: # email address of the Sunbird admin user sunbird_root_user_phone: # mobile number of the Sunbird admin user -#----------------------------------------------------------------------# - -# PART 2 -# Please fill the value below and run sunbird_install.sh -s core +# After Running ./sunbird_install.sh get the sso_publickey from keycloak and update in config,then follow the below Steps: +# 1> run `./sunbird_install.sh -s core` this script will install all the core services(Player, Content, Learner, Badger) +# 2> run `./sunbird_install.sh -s systeminit` this script will configure the default channel and create user to login to sunbird +# 3> run `./sunbird_install.sh -s posttest` this script will validate the sunbird installation and check whether all services are running sunbird_sso_publickey: # Follow the below to get the key # http://dns_name/auth -> realm settings -> keys -> public keys (click on public keys) and paste the value # Referral: http://www.sunbird.org/developer-docs/configuring_sunbird/ -#----------------------------------------------------------------------# - -# INFO -# Now you've to create the root organization and channel -# Referral: http://www.sunbird.org/developer-docs/installation/install_sbbackend/ -# go to the bottom section of the page - -#----------------------------------------------------------------------# -# PART 3 -# Please fill the value below and run sunbird_install.sh -s core - -sunbird_default_channel: # Paste the channel name with which you created the organization #----------------------------------------------------------------------# @@ -155,13 +142,14 @@ vault_proxy_prometheus_admin_creds: #es config es_etc_node_datagroups['es']: -es_api_host: "{{ inventory_hostname }}" +es_api_host: "{{inventory_hostname}}" es_heap_size: 1500m es_etc_discovery_zen_minimum_master_nodes: 1 es_snapshot_host: "{{ groups['es'][0] }}" es_restore_host: "{{ groups['es'][0] }}" snapshot_base_path: application - +backup_storage_key: BackupStorageKey # The Azure Account Storage key for prometheus, elasticsearch backups +backup_storage_name: BackupStorageName # The Azure Account Storage Name for prometheus, elasticsearch backups #----------------------------------------------------------------# # System generated values. Please don't edit From 857913a1873ad4d06faa5ee73227a4b352588ab0 Mon Sep 17 00:00:00 2001 From: Santhosh Gandham Date: Thu, 15 Nov 2018 16:34:06 +0530 Subject: [PATCH 0337/1345] Issue: #000 updating device register api onboarding with out jwt --- ansible/roles/kong-api/defaults/main.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/ansible/roles/kong-api/defaults/main.yml b/ansible/roles/kong-api/defaults/main.yml index ffdc2672b6..a93cd3a5fa 100644 --- a/ansible/roles/kong-api/defaults/main.yml +++ b/ansible/roles/kong-api/defaults/main.yml @@ -3308,7 +3308,6 @@ kong_apis: upstream_url: "{{ sunbird_analytics_api_base_url }}/v1/device/register" strip_request_path: true plugins: - - {name: 'jwt'} - {name: 'cors'} - {name: 'statsd', config.metrics: "{{ statsd_metrics }}" } - {name: 'acl', config.whitelist: 'publicUser'} From 4358f83ac35d1a096a09e6f7288b7b32df2c42c5 Mon Sep 17 00:00:00 2001 From: Santhosh Gandham Date: Thu, 15 Nov 2018 17:30:58 +0530 Subject: [PATCH 0338/1345] Issue: #000 updating device register api onboarding with out jwt --- ansible/roles/kong-api/defaults/main.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/ansible/roles/kong-api/defaults/main.yml b/ansible/roles/kong-api/defaults/main.yml index a93cd3a5fa..3761d2081f 100644 --- a/ansible/roles/kong-api/defaults/main.yml +++ b/ansible/roles/kong-api/defaults/main.yml @@ -3310,7 +3310,6 @@ kong_apis: plugins: - {name: 'cors'} - {name: 'statsd', config.metrics: "{{ statsd_metrics }}" } - - {name: 'acl', config.whitelist: 'publicUser'} - {name: 'rate-limiting', config.policy: "local", config.hour: "{{ medium_rate_limit_per_hour }}"} - {name: 'request-size-limiting', config.allowed_payload_size: "{{ small_request_size_limit }}" } - name: "channelSpecificTelemetryExhaust" From 19da093fa1f83ee4910f92d75303335d07b49ecf Mon Sep 17 00:00:00 2001 From: "kaliraja.ramasamy" Date: Fri, 16 Nov 2018 13:35:21 +0530 Subject: [PATCH 0339/1345] Issue #0000 fix: added the learing-servoce and seearchservice varibales --- ansible/roles/stack-monitor/defaults/main.yml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/ansible/roles/stack-monitor/defaults/main.yml b/ansible/roles/stack-monitor/defaults/main.yml index c86d2b4551..9001b5f68f 100644 --- a/ansible/roles/stack-monitor/defaults/main.yml +++ b/ansible/roles/stack-monitor/defaults/main.yml @@ -132,6 +132,14 @@ service_blackbox_checks: probe_module: http_2xx targets: - "{{sunbird_analytics_api_base_url}}/health" + - service_name: 'learning-service' + probe_module: http_2xx + targets: + - "{{sunbird_content_repo_api_base_url}}/health" + - service_name: 'search-service' + probe_module: http_2xx + targets: + - "{{sunbird_search_service_api_base_url}}/health" # - service_name: 'logger_kibana' # probe_module: http_2xx # targets: From 0b31a14ef5e7bdb0aeff56fd33129ba4025ce4e7 Mon Sep 17 00:00:00 2001 From: "kaliraja.ramasamy" Date: Fri, 16 Nov 2018 14:15:46 +0530 Subject: [PATCH 0340/1345] Issue #0000 fix: commented the learing-servoce and seearchservice varibales --- ansible/roles/stack-monitor/defaults/main.yml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/ansible/roles/stack-monitor/defaults/main.yml b/ansible/roles/stack-monitor/defaults/main.yml index 9001b5f68f..188d1f9056 100644 --- a/ansible/roles/stack-monitor/defaults/main.yml +++ b/ansible/roles/stack-monitor/defaults/main.yml @@ -132,14 +132,14 @@ service_blackbox_checks: probe_module: http_2xx targets: - "{{sunbird_analytics_api_base_url}}/health" - - service_name: 'learning-service' - probe_module: http_2xx - targets: - - "{{sunbird_content_repo_api_base_url}}/health" - - service_name: 'search-service' - probe_module: http_2xx - targets: - - "{{sunbird_search_service_api_base_url}}/health" + #- service_name: 'learning-service' + # probe_module: http_2xx + #targets: + # - "{{sunbird_content_repo_api_base_url}}/health" + #- service_name: 'search-service' + # probe_module: http_2xx + # targets: + # - "{{sunbird_search_service_api_base_url}}/health" # - service_name: 'logger_kibana' # probe_module: http_2xx # targets: From 910473426a14054e7a4912168e17493382a6104f Mon Sep 17 00:00:00 2001 From: S M Y Date: Fri, 16 Nov 2018 18:59:13 +0530 Subject: [PATCH 0341/1345] Issue #000 env: changing env var --- ansible/inventories/sample/group_vars/sample | 2 +- .../roles/stack-sunbird/templates/sunbird_learner-service.env | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ansible/inventories/sample/group_vars/sample b/ansible/inventories/sample/group_vars/sample index 851fe8b685..0149c9931c 100644 --- a/ansible/inventories/sample/group_vars/sample +++ b/ansible/inventories/sample/group_vars/sample @@ -358,4 +358,4 @@ sunbird_cassandra_urls: sunbird_cassandra_consistency_level: one sunbird_cassandra_replication_strategy: '{"class":"SimpleStrategy","replication_factor":"1"}' sunbird_allowed_login: -sunbird_course_batch_notification_active: FALSE +sunbird_course_batch_notification_enabled: true diff --git a/ansible/roles/stack-sunbird/templates/sunbird_learner-service.env b/ansible/roles/stack-sunbird/templates/sunbird_learner-service.env index 43f5efed5a..90a5534d62 100644 --- a/ansible/roles/stack-sunbird/templates/sunbird_learner-service.env +++ b/ansible/roles/stack-sunbird/templates/sunbird_learner-service.env @@ -80,4 +80,4 @@ sunbird_url_shortner_access_token={{sunbird_url_shortner_access_token}} sunbird_url_shortner_enable={{sunbird_url_shortner_enable}} sunbird_user_profile_field_default_visibility={{sunbird_user_profile_field_default_visibility}} sunbird_keycloak_required_action_link_expiration_seconds={{sunbird_keycloak_required_action_link_expiration_seconds}} -sunbird_course_batch_notification_active={{sunbird_course_batch_notification_active}} +sunbird_course_batch_notification_enabled={{sunbird_course_batch_notification_enabled}} From fed6d90dc805194f4bc433d0c56ec1b3a016799b Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Fri, 16 Nov 2018 22:08:57 +0530 Subject: [PATCH 0342/1345] Send emails directly from server (#266) * feat: adding support for custom emails --- .circleci/config.yml | 2 +- test/ci/checkout_release.sh | 5 +- test/ci/install_sb.sh | 54 +++++++++----- test/ci/launch_vm.sh | 2 +- .../{copy_script.sh => run_install_script.sh} | 4 +- test/ci/send_email.py | 72 +++++++++++++++++++ test/ci/update_config.sh | 7 ++ 7 files changed, 124 insertions(+), 22 deletions(-) rename test/ci/{copy_script.sh => run_install_script.sh} (80%) create mode 100755 test/ci/send_email.py diff --git a/.circleci/config.yml b/.circleci/config.yml index 44d3ef8ffa..3be49acb4c 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -27,7 +27,7 @@ jobs: command: bash ./test/ci/launch_vm.sh - run: &install-sb name: install sunbird - command: bash ./test/ci/copy_script.sh + command: bash ./test/ci/run_install_script.sh - run: &remove-vm name: remove vms command: bash ./test/ci/remove_vm.sh diff --git a/test/ci/checkout_release.sh b/test/ci/checkout_release.sh index cecb7f8b08..61f09449ac 100755 --- a/test/ci/checkout_release.sh +++ b/test/ci/checkout_release.sh @@ -2,10 +2,10 @@ cp -r test .circleci ./deploy/config.yml.sample /tmp IFS="/" read -r var1 var2 <<< $RELEASE if [[ $var1 == "tags" ]]; then - git checkout $release -b $var2 + git checkout $release -b $var2 --force echo -e "Checkout $var2" else - git checkout -b $var1 origin/$var1 + git checkout -b $var1 origin/$var1 --force echo -e "Checkout $var1" fi @@ -14,3 +14,4 @@ if ! [[ -f ./deploy/config.yml.sample ]]; then fi cp -r /tmp/test /tmp/.circleci . + diff --git a/test/ci/install_sb.sh b/test/ci/install_sb.sh index 8fbee8ef68..05038f1d8b 100755 --- a/test/ci/install_sb.sh +++ b/test/ci/install_sb.sh @@ -12,10 +12,10 @@ checkoutRepo(){ IFS="/" read -r var1 var2 <<< $release if [[ $var1 == "tags" ]]; then git checkout $release -b $var2 - echo -e "Installing sunbird $var2" + echo -e "Installing sunbird $var2" | tee $installer_log else git checkout -b $var1 origin/$var1 - echo -e "Installing sunbird $var1" + echo -e "Installing sunbird $var1" | tee $installer_log fi } @@ -31,7 +31,7 @@ copyConfig(){ } installSunbird(){ - echo -e "Starting installation..." + echo -e "Starting installation..." | tee $installer_log bash sunbird_install.sh } @@ -42,7 +42,7 @@ updateSSO(){ } coreInstall(){ - echo -e "Sunbird installation complete - Starting core installation..." + echo -e "Sunbird installation complete - Starting core installation..." | tee $installer_log bash sunbird_install.sh -s core } @@ -56,12 +56,29 @@ postTest(){ bash sunbird_install.sh -s posttest } +archiveLogs(){ + cp $installer_log logs + zip -r /tmp/serverlogs.zip logs +} + +sendEmail(){ + python /tmp/send_email.py +} + +postResult(){ + echo "failed" >> /tmp/release_to_build + archiveLogs + sendEmail + exit 1 +} + config_file=/tmp/config.yml.sample release=$(cat /tmp/release_to_build) username=$(awk '/ssh_ansible_user:/{ if ($2 !~ /#.*/) {print $2}}' $config_file) dns_name=$(awk '/dns_name:/{ if ($2 !~ /#.*/) {print $2}}' $config_file) keycloak_pass=$(awk '/keycloak_admin_password:/{ if ($2 !~ /#.*/) {print $2}}' $config_file) sso_pass=$(awk '/sso_password:/{ if ($2 !~ /#.*/) {print $2}}' $config_file) +installer_log=/tmp/installerLog.txt copyPem checkoutRepo @@ -69,7 +86,7 @@ copyConfig installSunbird if [[ $? -ne 0 ]]; then - echo -e "Installation failed - Retrying..." + echo -e "Installation failed - Retrying..." | tee $installer_log installSunbird fi @@ -77,35 +94,38 @@ if [[ $? -eq 0 ]]; then updateSSO coreInstall else - echo -e "Sunbird installation failed - Error occured during installation" - exit 1 + echo -e "Sunbird installation failed - Error occured during installation" | tee $installer_log + postResult fi if [[ $? -eq 0 ]]; then createRootOrg else - echo -e "Sunbird installation failed - Error occured during core installation" - exit 1 + echo -e "Sunbird installation failed - Error occured during core installation" | tee $installer_log + postResult fi if [[ $status == "SUCCESS" ]]; then - echo -e "Root org created successfully - Running core install..." + echo -e "Root org created successfully - Running core install..." | tee $installer_log coreInstall else - echo -e "Sunbird installation failed - Unable to create root org" - exit 1 + echo -e "Sunbird installation failed - Unable to create root org" | tee $installer_log + postResult fi if [[ $? -eq 0 ]]; then postTest else - echo -e "Sunbird installation failed - Error occured during core installation after creating root org" - exit 1 + echo -e "Sunbird installation failed - Error occured during core installation after creating root org" | tee $installer_log + postResult fi if [[ $? -eq 0 ]]; then - echo -e "Sunbird installation complete" + echo -e "Sunbird installation complete" | tee $installer_log + echo "succeeded" >> /tmp/release_to_build + archiveLogs + sendEmail else - echo -e "Sunbird installation failed - Error occured duing postTest" - exit 1 + echo -e "Sunbird installation failed - Error occured duing postTest" | tee $installer_log + postResult fi diff --git a/test/ci/launch_vm.sh b/test/ci/launch_vm.sh index f420ea4a8c..ea81152f05 100755 --- a/test/ci/launch_vm.sh +++ b/test/ci/launch_vm.sh @@ -3,7 +3,7 @@ config_file=./deploy/config.yml.sample aws ec2 run-instances --image-id ami-0c510557369b14896 --instance-type t2.large --key-name adoption-keshav --subnet-id subnet-0241076a --tag-specifications "ResourceType=instance,Tags=[{Key=Name,Value=circle-app-$CIRCLE_BUILD_NUM-$RELEASE}]" 1> /dev/null aws ec2 run-instances --image-id ami-0c510557369b14896 --instance-type t2.large --key-name adoption-keshav --subnet-id subnet-0241076a --tag-specifications "ResourceType=instance,Tags=[{Key=Name,Value=circle-db-$CIRCLE_BUILD_NUM-$RELEASE}]" 1> /dev/null echo -e "Waiting for servers to launch..." -sleep 150 +sleep 180 aws_app_instance=$(aws ec2 describe-instances --filters "Name=instance-state-name,Values=running" "Name=tag:Name,Values=circle-app-$CIRCLE_BUILD_NUM-$RELEASE" --query "Reservations[*].Instances[*].{PrivateIP: PrivateIpAddress, PublicIP: PublicIpAddress, InstanceId: InstanceId}") app_instance_id=$(echo -e $aws_app_instance | awk '{print $1}') diff --git a/test/ci/copy_script.sh b/test/ci/run_install_script.sh similarity index 80% rename from test/ci/copy_script.sh rename to test/ci/run_install_script.sh index 35dc317aea..327cc64209 100755 --- a/test/ci/copy_script.sh +++ b/test/ci/run_install_script.sh @@ -2,12 +2,14 @@ config_file=./deploy/config.yml.sample install_script=./test/ci/install_sb.sh release_to_build=./test/ci/release_to_build +email_script=./test/ci/send_email.py app_ip=$(awk '/dns_name:/{ if ($2 !~ /#.*/) {print $2}}' $config_file) user_name=$(awk '/ssh_ansible_user:/{if ($2 !~ /#.*/) {print $2}}' $config_file) printf "%s$private_key" > sunbird.pem chmod 600 sunbird.pem echo $RELEASE > $release_to_build -scp -i sunbird.pem -o StrictHostKeyChecking=no $config_file sunbird.pem $install_script $release_to_build $user_name@$app_ip:/tmp +echo $CIRCLE_BUILD_URL >> $release_to_build +scp -i sunbird.pem -o StrictHostKeyChecking=no $config_file sunbird.pem $install_script $release_to_build $email_script $user_name@$app_ip:/tmp ssh -i sunbird.pem -o StrictHostKeyChecking=no $user_name@$app_ip "/tmp/install_sb.sh" if [[ $? -ne 0 ]]; then echo -e "\nSunbird installation for $RELEASE failed - Please inspect the server - Instance not removed!" diff --git a/test/ci/send_email.py b/test/ci/send_email.py new file mode 100755 index 0000000000..51a6dcc04b --- /dev/null +++ b/test/ci/send_email.py @@ -0,0 +1,72 @@ +#!/usr/bin/env python + +import smtplib, os.path +from email.mime.multipart import MIMEMultipart +from email.mime.text import MIMEText +from email.mime.base import MIMEBase +from email import encoders +from os import path + +fromaddr = "from_address" +toaddr = [to_address] + +if path.exists("/tmp/serverlogs.zip"): + logFileStatus="attached" +else: + logFileStatus="missing" + +s = smtplib.SMTP('smtp.gmail.com', 587) +s.starttls() +s.login(fromaddr, "email_password") + +details = "/tmp/release_to_build" +f = open(details) +release = f.readline().rstrip() +jobUrl = f.readline().rstrip() +buildStatus = f.readline().rstrip() +f.close() + +if buildStatus == "succeeded": + bgcolor = "#51CA5E" +else: + bgcolor = "#E33F3A" + +subject = "Release %s build %s" % (release, buildStatus) +body = """ + + + + + + + + + + + + + + + +
ReleaseStatusServer LogsBuild Log URL
 %s %s%sClick Here! 
+

If you do not wish to receive these emails, please click here

+

If you wish to add someone to receive these notifications, please click here

+""" % (bgcolor, release, buildStatus, logFileStatus, jobUrl) + +for i in range(len(toaddr)): + msg = MIMEMultipart() + msg['From'] = "Sunbird CI Mailer" + msg['To'] = toaddr[i] + msg['Subject'] = subject + msg.attach(MIMEText(body, 'html')) + filename = "serverlogs.zip" + p = MIMEBase('application', 'octet-stream') + if logFileStatus == "attached": + attachment = open("/tmp/serverlogs.zip", "rb") + p.set_payload((attachment).read()) + encoders.encode_base64(p) + p.add_header('Content-Disposition', "attachment; filename= %s" % filename) + msg.attach(p) + text = msg.as_string() + s.sendmail(fromaddr, toaddr[i], text) +s.quit() diff --git a/test/ci/update_config.sh b/test/ci/update_config.sh index 84779b47e5..9355a4722c 100755 --- a/test/ci/update_config.sh +++ b/test/ci/update_config.sh @@ -1,5 +1,7 @@ #!/bin/bash config_file=./deploy/config.yml.sample +email_file=./test/ci/send_email.py + sed -i "s|env:.*#|env: $env #|g" $config_file sed -i "s|implementation_name:.*#|implementation_name: $implementation_name #|g" $config_file sed -i "s|ssh_ansible_user:.*#|ssh_ansible_user: $ssh_ansible_user #|g" $config_file @@ -30,3 +32,8 @@ sed -i "s|sunbird_root_user_email:.*#|sunbird_root_user_email: $sunbird_root_use sed -i "s|sunbird_root_user_phone:.*#|sunbird_root_user_phone: $sunbird_root_user_phone #|g" $config_file sed -i "s|sunbird_default_channel:.*#|sunbird_default_channel: $sunbird_default_channel #|g" $config_file echo -e "Config file updated..." + +sed -i "s|from_address|$from_address|g" $email_file +sed -i "s|to_address|$to_address|g" $email_file +sed -i "s|email_password|$email_password|g" $email_file +echo -e "Email file updated..." From 2bb0b796a83254d89e5ced3f9f61cd075f1bfdc4 Mon Sep 17 00:00:00 2001 From: Manzarul Date: Sat, 17 Nov 2018 09:10:17 +0530 Subject: [PATCH 0343/1345] Issues #SB-8330 fix: changes for system settings api --- ansible/roles/kong-api/defaults/main.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/ansible/roles/kong-api/defaults/main.yml b/ansible/roles/kong-api/defaults/main.yml index 3761d2081f..3dee7a67a7 100644 --- a/ansible/roles/kong-api/defaults/main.yml +++ b/ansible/roles/kong-api/defaults/main.yml @@ -2268,8 +2268,8 @@ kong_apis: - name: request-size-limiting config.allowed_payload_size: "{{ small_request_size_limit }}" - name: updateSystemSettings - request_path: "{{ data_service_prefix }}/v1/system/settings" - upstream_url: "{{ learning_service_url }}/v1/system/settings" + request_path: "{{ data_service_prefix }}/v1/system/settings/list" + upstream_url: "{{ learning_service_url }}/v1/system/settings/list" strip_request_path: true plugins: - name: jwt @@ -3348,8 +3348,8 @@ kong_apis: - {name: 'rate-limiting', config.policy: "local", config.hour: "{{ large_rate_limit_per_hour }}"} - {name: 'request-size-limiting', config.allowed_payload_size: "{{ small_request_size_limit }}" } - name: "addSystemSettings" - request_path: "{{ data_service_prefix }}/v1/system/setting/set" - upstream_url: "{{ learning_service_url }}/v1/system/setting/set" + request_path: "{{ data_service_prefix }}/v1/system/settings/set" + upstream_url: "{{ learning_service_url }}/v1/system/settings/set" strip_request_path: true plugins: - {name: 'jwt'} @@ -3359,8 +3359,8 @@ kong_apis: - {name: 'rate-limiting', config.policy: "local", config.hour: "{{ medium_rate_limit_per_hour }}"} - {name: 'request-size-limiting', config.allowed_payload_size: "{{ small_request_size_limit }}" } - name: "getSystemSettings" - request_path: "{{ data_service_prefix }}/v1/system/setting/read" - upstream_url: "{{ learning_service_url }}/v1/system/setting/get" + request_path: "{{ data_service_prefix }}/v1/system/settings/get" + upstream_url: "{{ learning_service_url }}/v1/system/settings/get" strip_request_path: true plugins: - {name: 'jwt'} From 10dd75365258913fd9a8a7ecdfb92dd643ca62df Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Mon, 19 Nov 2018 11:10:51 +0530 Subject: [PATCH 0344/1345] Issue #000 git checkout definition change --- test/ci/install_sb.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/ci/install_sb.sh b/test/ci/install_sb.sh index 05038f1d8b..c31d211bc5 100755 --- a/test/ci/install_sb.sh +++ b/test/ci/install_sb.sh @@ -73,7 +73,7 @@ postResult(){ } config_file=/tmp/config.yml.sample -release=$(cat /tmp/release_to_build) +release=$(cat /tmp/release_to_build | head -1) username=$(awk '/ssh_ansible_user:/{ if ($2 !~ /#.*/) {print $2}}' $config_file) dns_name=$(awk '/dns_name:/{ if ($2 !~ /#.*/) {print $2}}' $config_file) keycloak_pass=$(awk '/keycloak_admin_password:/{ if ($2 !~ /#.*/) {print $2}}' $config_file) From 41e12d1b120e42c5c60f8813d385f4bbdc171b90 Mon Sep 17 00:00:00 2001 From: Kartish Date: Tue, 20 Nov 2018 10:39:15 +0530 Subject: [PATCH 0345/1345] Issue #000 analyticsAPI: Adding Learning and search API health Check for Monitoring --- ansible/roles/stack-monitor/defaults/main.yml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/ansible/roles/stack-monitor/defaults/main.yml b/ansible/roles/stack-monitor/defaults/main.yml index 188d1f9056..9001b5f68f 100644 --- a/ansible/roles/stack-monitor/defaults/main.yml +++ b/ansible/roles/stack-monitor/defaults/main.yml @@ -132,14 +132,14 @@ service_blackbox_checks: probe_module: http_2xx targets: - "{{sunbird_analytics_api_base_url}}/health" - #- service_name: 'learning-service' - # probe_module: http_2xx - #targets: - # - "{{sunbird_content_repo_api_base_url}}/health" - #- service_name: 'search-service' - # probe_module: http_2xx - # targets: - # - "{{sunbird_search_service_api_base_url}}/health" + - service_name: 'learning-service' + probe_module: http_2xx + targets: + - "{{sunbird_content_repo_api_base_url}}/health" + - service_name: 'search-service' + probe_module: http_2xx + targets: + - "{{sunbird_search_service_api_base_url}}/health" # - service_name: 'logger_kibana' # probe_module: http_2xx # targets: From ff71d10cb0e84a94bee239ca0aa8e855ed48eb19 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Wed, 21 Nov 2018 19:39:32 +0530 Subject: [PATCH 0346/1345] Upgrade, backup and restore, other updates (#267) * feat: Upgrade, backup, restore, updates to installer as per new docs --- .circleci/config.yml | 55 +++++-------- test/ci/backup_dbs.sh | 134 ++++++++++++++++++++++++++++++++ test/ci/checkout_release.sh | 14 ++++ test/ci/cli_configure.sh | 7 -- test/ci/install_sb.sh | 45 +++++------ test/ci/launch_vm.sh | 30 +++----- test/ci/remove_vm.sh | 4 +- test/ci/run_install_script.sh | 2 - test/ci/run_upgrade_script.sh | 17 +++++ test/ci/send_email.py | 20 ++--- test/ci/update_config.sh | 20 +++++ test/ci/upgrade_sb.sh | 140 ++++++++++++++++++++++++++++++++++ 12 files changed, 382 insertions(+), 106 deletions(-) create mode 100755 test/ci/backup_dbs.sh delete mode 100755 test/ci/cli_configure.sh create mode 100755 test/ci/run_upgrade_script.sh create mode 100755 test/ci/upgrade_sb.sh diff --git a/.circleci/config.yml b/.circleci/config.yml index 3be49acb4c..5bf1de1390 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -6,47 +6,37 @@ jobs: - image: keshavprasad/circle-ci:1.1 steps: - checkout - - run: - name: check previous stable release - command: | - ver=tags/$(git tag | grep "release-[0-9].*[0-9]$" | sort -V -r | awk -F "." '!($2 in a){i++; a[$2]} (i==2){print $0}' | head -1) - echo Running installer for $ver - echo export RELEASE=$ver >> $BASH_ENV - source $BASH_ENV - run: &branch - name: checkout specific release + name: Checkout Release command: bash ./test/ci/checkout_release.sh - - run: &cli - name: configure cli - command: bash ./test/ci/cli_configure.sh - - run: &config - name: update config - command: bash ./test/ci/update_config.sh - run: &launch-vm - name: launch vms + name: Launch VM's command: bash ./test/ci/launch_vm.sh + - run: &config + name: Update Config + command: bash ./test/ci/update_config.sh - run: &install-sb - name: install sunbird - command: bash ./test/ci/run_install_script.sh + name: Install Sunbird + command: bash ./test/ci/run_install_script.sh + - run: + <<: *branch + environment: + addon: upgrade + - run: *config + - run: + name: Upgrade Sunbird + command: bash ./test/ci/run_upgrade_script.sh - run: &remove-vm - name: remove vms + name: Remove VM's command: bash ./test/ci/remove_vm.sh current-stable: docker: *dock-img steps: - checkout - - run: - name: check current stable release - command: | - ver=tags/$(git tag | grep "release-[0-9].*[0-9]$" | sort -V -r | awk -F "." '!($2 in a){i++; a[$2]} (i==1){print $0}' | head -1) - echo Running installer for $ver - echo export RELEASE=$ver >> $BASH_ENV - source $BASH_ENV - run: *branch - - run: *cli - - run: *config - run: *launch-vm + - run: *config - run: *install-sb - run: *remove-vm @@ -54,17 +44,9 @@ jobs: docker: *dock-img steps: - checkout - - run: - name: check current development branch - command: | - ver=$(git branch -a | grep "release-[0-9].*[0-9]$" | sed 's#.*/.*/##g' | tr -d ' ' | sort -V -r | awk -F "." '!($2 in a){i++; a[$2]} (i==1){print $0}' | head -1) - echo Running installer for $ver - echo export RELEASE=$ver >> $BASH_ENV - source $BASH_ENV - run: *branch - - run: *cli - - run: *config - run: *launch-vm + - run: *config - run: *install-sb - run: *remove-vm @@ -91,3 +73,4 @@ workflows: - current-stable - current-dev-branch # - playbook-check + diff --git a/test/ci/backup_dbs.sh b/test/ci/backup_dbs.sh new file mode 100755 index 0000000000..58e5543187 --- /dev/null +++ b/test/ci/backup_dbs.sh @@ -0,0 +1,134 @@ +#!/bin/bash + +checkoutRepo(){ +cd /home/$username +git clone https://github.com/project-sunbird/sunbird-devops.git +cd sunbird-devops +IFS="/" read -r var1 var2 <<< $release +if [[ $var1 == "tags" ]]; then + git checkout $release -b $var2 + echo -e "Installing sunbird $var2" | tee -a $backup_log +else + git checkout -b $var1 origin/$var1 + echo -e "Installing sunbird $var1" | tee -a $backup_log +fi +cd deploy +} + +cassandraBackup(){ +python cassandra_backup.py | tee -a $backup_log +if [[ -f cassandra_backup-$(date +%Y-%m-%d).tar.gz ]] && [[ -s cassandra_backup-$(date +%Y-%m-%d).tar.gz ]] ; then + echo "Cassandra backup successful" | tee -a $backup_log +else + echo "Cassandra backup failed. Exiting..." | tee -a $backup_log + exit 1 +fi +} + +postgresBackup(){ +bash backup_postgres.sh | tee -a $backup_log +postgres_backup_file=$(ls /tmp/postgresql-backup/) +if [[ -f /tmp/postgresql-backup/$postgres_backup_file ]] && [[ -s /tmp/postgresql-backup/$postgres_backup_file ]]; then + echo "Postgres backup successful" | tee -a $backup_log +else + echo "Postgres backup failed. Exiting..." | tee -a $backup_log + exit 1 +fi +} + +elasticsearchBackup(){ +flag=0 +snapshot_name="null" +sudo apt install -y jq +sudo bash backup_elasticsearch.sh | tee -a $backup_log +if sudo test -f /etc/elasticsearch/backup/index-0 && sudo test -s /etc/elasticsearch/backup/index-0; then + snapshot_name=$(sudo cat /etc/elasticsearch/backup/index-0 | jq -r ".snapshots[0].name") + echo "Elasticsearch backup successful" | tee -a $backup_log + flag=1 +else + echo "Backup not found. Restarting elasticsearch.." | tee -a $backup_log + sudo systemctl restart es-1_elasticsearch.service + sleep 15 + echo "Retrying backup.." | tee -a $backup_log + sudo bash backup_elasticsearch.sh +fi + +if [ $flag -eq 0 ] && sudo test -f /etc/elasticsearch/backup/index-0 && sudo test -s /etc/elasticsearch/backup/index-0; then +snapshot_name=$(sudo cat /etc/elasticsearch/backup/index-0 | jq -r ".snapshots[0].name") +fi + +if [[ $snapshot_name == "null" ]]; then + echo "Elasticsearch backup failed. Exiting..." | tee -a $backup_log + exit 1 +else + echo "Elasticsearch backup successful" | tee -a $backup_log +fi +} + +restoreCassandra(){ +arr=($(cqlsh -e "describe keyspaces")) +count=${#arr[@]} +cqlsh -e "drop keyspace dialcodes" +cqlsh -e "drop keyspace portal" +#cqlsh -e "drop keyspace qmzbm_form_service" +#cqlsh -e "drop keyspace rvepo_framework" +cqlsh -e "drop keyspace sunbird" +cqlsh -e "drop keyspace sunbirdplugin" +tar -xvzf cassandra_backup-$(date +%Y-%m-%d).tar.gz | tee -a $backup_log +cqlsh -f 'cassandra_backup/db_schema.cql' | tee -a $backup_log +python cassandra_restore.py --host $(hostname -i) cassandra_backup | tee -a $backup_log +arr=($(cqlsh -e "describe keyspaces")) +if [[ $count != ${#arr[@]} ]]; then + echo "Cassandra restore failed. Exiting..." | tee -a $backup_log + exit 1 +else + echo "Cassandra restore successful" | tee -a $backup_log +fi +} + +restorePostgres(){ +db_count=$(sudo -u postgres psql -c "SELECT count(datname) FROM pg_database" | sed -n 3p | tr -d " ") +sudo -u postgres psql -c "update pg_database set datallowconn = false where datname in ('badger', 'keycloak', 'api_manager', 'quartz')" +sudo -u postgres psql -c "SELECT pg_terminate_backend(pg_stat_activity.pid) FROM pg_stat_activity where pid <> pg_backend_pid()" +sudo -u postgres psql -c "drop database badger" +sudo -u postgres psql -c "drop database keycloak" +sudo -u postgres psql -c "drop database quartz" +sudo -u postgres psql -c "drop database api_manager" +bash restore_postgres.sh $postgres_backup_file | tee -a $backup_log +new_db_count=$(sudo -u postgres psql -c "SELECT count(datname) FROM pg_database" | sed -n 3p | tr -d " ") +if [[ $db_count -ne $new_db_count ]]; then + echo "Postgres restore failed. Exiting..." | tee -a $backup_log + exit 1 +else + echo "Postgres restore successful" | tee -a $backup_log +fi +} + +restoreElasticsearch(){ +snapshot_name=$(sudo cat /etc/elasticsearch/backup/index-0 | jq -r ".snapshots[0].name") +indices=$(curl -s -X GET http://$hostip:9200/_cat/indices?v | awk 'NR>1{print $3}' | sort | tr -d "\n") +sudo systemctl restart es-1_elasticsearch.service +sleep 15 +bash restore_elasticsearch.sh $snapshot_name | tee -a $backup_log +new_indices=$(curl -s -X GET http://$hostip:9200/_cat/indices?v | awk 'NR>1{print $3}' | sort | tr -d "\n") +if ! [[ "$indices" == "$new_indices" ]]; then + echo "Elasticsearch restore failed. Exiting..." | tee -a $backup_log + exit 1 +else + echo "Elsaticsearch restore successful" | tee -a $backup_log +fi +} + +config_file=/tmp/config.yml.sample +release=$(cat /tmp/release_to_build | head -1) +username=$(awk '/ssh_ansible_user:/{ if ($2 !~ /#.*/) {print $2}}' $config_file) +backup_log=/tmp/backup_log.txt +hostip=$(hostname -i) + +checkoutRepo +cassandraBackup +postgresBackup +elasticsearchBackup +restoreCassandra +restorePostgres +restoreElasticsearch diff --git a/test/ci/checkout_release.sh b/test/ci/checkout_release.sh index 61f09449ac..da8f925ac2 100755 --- a/test/ci/checkout_release.sh +++ b/test/ci/checkout_release.sh @@ -1,4 +1,15 @@ #!/bin/bash + +if [[ $CIRCLE_JOB == "previous-stable" && $addon == "upgrade" ]]; then + RELEASE=tags/$(git tag | grep "release-[0-9].*[0-9]$" | sort -V -r | awk -F "." '!($2 in a){i++; a[$2]} (i==1){print $0}' | head -1) +elif [[ $CIRCLE_JOB == "previous-stable" ]]; then + RELEASE=tags/$(git tag | grep "release-[0-9].*[0-9]$" | sort -V -r | awk -F "." '!($2 in a){i++; a[$2]} (i==2){print $0}' | head -1) +elif [[ $CIRCLE_JOB == "current-stable" ]]; then + RELEASE=tags/$(git tag | grep "release-[0-9].*[0-9]$" | sort -V -r | awk -F "." '!($2 in a){i++; a[$2]} (i==1){print $0}' | head -1) +elif [[ $CIRCLE_JOB == "current-dev-branch" ]]; then + RELEASE=$(git branch -a | grep "release-[0-9].*[0-9]$" | sed 's#.*/.*/##g' | tr -d ' ' | sort -V -r | awk -F "." '!($2 in a){i++; a[$2]} (i==1){print $0}' | head -1) +fi + cp -r test .circleci ./deploy/config.yml.sample /tmp IFS="/" read -r var1 var2 <<< $RELEASE if [[ $var1 == "tags" ]]; then @@ -15,3 +26,6 @@ fi cp -r /tmp/test /tmp/.circleci . +release_to_build=./test/ci/release_to_build +echo $RELEASE > $release_to_build +echo $CIRCLE_BUILD_URL >> $release_to_build diff --git a/test/ci/cli_configure.sh b/test/ci/cli_configure.sh deleted file mode 100755 index 195f799ac7..0000000000 --- a/test/ci/cli_configure.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/bash -aws --version -aws configure set aws_access_key_id $keyid -aws configure set aws_secret_access_key $key -aws configure set region ap-south-1 -aws configure set output text -echo -e "aws cli configured.." diff --git a/test/ci/install_sb.sh b/test/ci/install_sb.sh index c31d211bc5..c78e963d9a 100755 --- a/test/ci/install_sb.sh +++ b/test/ci/install_sb.sh @@ -12,15 +12,15 @@ checkoutRepo(){ IFS="/" read -r var1 var2 <<< $release if [[ $var1 == "tags" ]]; then git checkout $release -b $var2 - echo -e "Installing sunbird $var2" | tee $installer_log + echo -e "Installing sunbird $var2" | tee -a $installer_log else git checkout -b $var1 origin/$var1 - echo -e "Installing sunbird $var1" | tee $installer_log + echo -e "Installing sunbird $var1" | tee -a $installer_log fi + cd deploy } copyConfig(){ - cd deploy if [[ -f config ]]; then cp $config_file config config_file=config @@ -31,7 +31,7 @@ copyConfig(){ } installSunbird(){ - echo -e "Starting installation..." | tee $installer_log + echo -e "Starting installation..." | tee -a $installer_log bash sunbird_install.sh } @@ -42,21 +42,20 @@ updateSSO(){ } coreInstall(){ - echo -e "Sunbird installation complete - Starting core installation..." | tee $installer_log + echo -e "Sunbird installation complete - Starting core installation..." | tee -a $installer_log bash sunbird_install.sh -s core } -createRootOrg(){ - jwt_token=$(cat /home/$username/jwt_token_player.txt | tr -d " ") - access_token_user=$(curl -s -X POST http://$dns_name/auth/realms/sunbird/protocol/openid-connect/token -H "cache-control: no-cache" -H "content-type: application/x-www-form-urlencoded" -d "client_id=admin-cli&username=user-manager&password=$sso_pass&grant_type=password" | jq -r ".access_token") - status=$(curl -s -X POST http://$dns_name/api/org/v1/create -H "Cache-Control: no-cache" -H "Content-Type: application/json" -H "accept: application/json" -H "authorization: Bearer $jwt_token" -H "x-authenticated-user-token: $access_token_user" -d '{"request":{"orgName": "circle-ci", "description": "circle-ci", "isRootOrg": true, "channel": "circle-ci"}}' | jq -r ".result.response") +systemInit(){ + bash sunbird_install.sh -s systeminit } postTest(){ - bash sunbird_install.sh -s posttest + bash sunbird_install.sh -s posttest } archiveLogs(){ + sudo apt install -y zip cp $installer_log logs zip -r /tmp/serverlogs.zip logs } @@ -67,6 +66,7 @@ sendEmail(){ postResult(){ echo "failed" >> /tmp/release_to_build + echo "Release $release build failed" >> /tmp/release_to_build archiveLogs sendEmail exit 1 @@ -86,7 +86,7 @@ copyConfig installSunbird if [[ $? -ne 0 ]]; then - echo -e "Installation failed - Retrying..." | tee $installer_log + echo -e "Installation failed - Retrying..." | tee -a $installer_log installSunbird fi @@ -94,38 +94,31 @@ if [[ $? -eq 0 ]]; then updateSSO coreInstall else - echo -e "Sunbird installation failed - Error occured during installation" | tee $installer_log + echo -e "Sunbird installation failed - Error occured during installation" | tee -a $installer_log postResult fi if [[ $? -eq 0 ]]; then - createRootOrg -else - echo -e "Sunbird installation failed - Error occured during core installation" | tee $installer_log - postResult -fi - -if [[ $status == "SUCCESS" ]]; then - echo -e "Root org created successfully - Running core install..." | tee $installer_log - coreInstall + systemInit else - echo -e "Sunbird installation failed - Unable to create root org" | tee $installer_log + echo -e "Sunbird installation failed - Error occured during core installation" | tee -a $installer_log postResult fi if [[ $? -eq 0 ]]; then postTest else - echo -e "Sunbird installation failed - Error occured during core installation after creating root org" | tee $installer_log + echo -e "Sunbird installation failed - Error occured during system initialization" | tee -a $installer_log postResult fi if [[ $? -eq 0 ]]; then - echo -e "Sunbird installation complete" | tee $installer_log - echo "succeeded" >> /tmp/release_to_build + echo -e "Sunbird installation complete" | tee -a $installer_log + echo "success" >> /tmp/release_to_build + echo "Release $release build succeeded" >> /tmp/release_to_build archiveLogs sendEmail else - echo -e "Sunbird installation failed - Error occured duing postTest" | tee $installer_log + echo -e "Sunbird installation failed - Error occured duing postTest" | tee -a $installer_log postResult fi diff --git a/test/ci/launch_vm.sh b/test/ci/launch_vm.sh index ea81152f05..96fac1c33c 100755 --- a/test/ci/launch_vm.sh +++ b/test/ci/launch_vm.sh @@ -1,26 +1,16 @@ #!/bin/bash -config_file=./deploy/config.yml.sample -aws ec2 run-instances --image-id ami-0c510557369b14896 --instance-type t2.large --key-name adoption-keshav --subnet-id subnet-0241076a --tag-specifications "ResourceType=instance,Tags=[{Key=Name,Value=circle-app-$CIRCLE_BUILD_NUM-$RELEASE}]" 1> /dev/null -aws ec2 run-instances --image-id ami-0c510557369b14896 --instance-type t2.large --key-name adoption-keshav --subnet-id subnet-0241076a --tag-specifications "ResourceType=instance,Tags=[{Key=Name,Value=circle-db-$CIRCLE_BUILD_NUM-$RELEASE}]" 1> /dev/null -echo -e "Waiting for servers to launch..." -sleep 180 -aws_app_instance=$(aws ec2 describe-instances --filters "Name=instance-state-name,Values=running" "Name=tag:Name,Values=circle-app-$CIRCLE_BUILD_NUM-$RELEASE" --query "Reservations[*].Instances[*].{PrivateIP: PrivateIpAddress, PublicIP: PublicIpAddress, InstanceId: InstanceId}") -app_instance_id=$(echo -e $aws_app_instance | awk '{print $1}') -app_private_ip=$(echo -e $aws_app_instance | awk '{print $2}') -app_public_ip=$(echo -e $aws_app_instance | awk '{print $3}') +aws --version +aws configure set aws_access_key_id $keyid +aws configure set aws_secret_access_key $key +aws configure set region ap-south-1 +aws configure set output text +echo -e "aws cli configured.." -aws_db_instance=$(aws ec2 describe-instances --filters "Name=instance-state-name,Values=running" "Name=tag:Name,Values=circle-db-$CIRCLE_BUILD_NUM-$RELEASE" --query "Reservations[*].Instances[*].{PrivateIP: PrivateIpAddress, PublicIP: PublicIpAddress, InstanceId: InstanceId}") -db_instance_id=$(echo -e $aws_db_instance | awk '{print $1}') -db_private_ip=$(echo -e $aws_db_instance | awk '{print $2}') -db_public_ip=$(echo -e $aws_db_instance | awk '{print $3}') -echo -e "Application server details:" -echo -e "Instance ID: $app_instance_id\nPrivate IP: $app_private_ip\nPublic IP: $app_public_ip" +aws ec2 run-instances --image-id ami-0c510557369b14896 --instance-type t2.large --key-name adoption-keshav --subnet-id subnet-0241076a --tag-specifications "ResourceType=instance,Tags=[{Key=Name,Value=circle-app-$CIRCLE_BUILD_NUM}]" 1> /dev/null +aws ec2 run-instances --image-id ami-0c510557369b14896 --instance-type t2.large --key-name adoption-keshav --subnet-id subnet-0241076a --tag-specifications "ResourceType=instance,Tags=[{Key=Name,Value=circle-db-$CIRCLE_BUILD_NUM}]" 1> /dev/null +echo -e "Waiting for servers to launch..." +sleep 180 -echo -e "\nDatabase server details" -echo -e "Instance ID: $db_instance_id\nPrivate IP: $db_private_ip\nPublic IP: $db_public_ip" -sed -i "s|application_host:.*#|application_host: $app_private_ip #|g" $config_file -sed -i "s|dns_name:.*#|dns_name: $app_public_ip #|g" $config_file -sed -i "s|database_host:.*#|database_host: $db_private_ip #|g" $config_file diff --git a/test/ci/remove_vm.sh b/test/ci/remove_vm.sh index 259b6f7234..65d2a60408 100755 --- a/test/ci/remove_vm.sh +++ b/test/ci/remove_vm.sh @@ -1,8 +1,8 @@ #!/bin/bash -aws_app_instance=$(aws ec2 describe-instances --filters "Name=instance-state-name,Values=running" "Name=tag:Name,Values=circle-app-$CIRCLE_BUILD_NUM-$RELEASE" --query "Reservations[*].Instances[*].{PrivateIP: PrivateIpAddress, PublicIP: PublicIpAddress, InstanceId: InstanceId}") +aws_app_instance=$(aws ec2 describe-instances --filters "Name=instance-state-name,Values=running" "Name=tag:Name,Values=circle-app-$CIRCLE_BUILD_NUM" --query "Reservations[*].Instances[*].{PrivateIP: PrivateIpAddress, PublicIP: PublicIpAddress, InstanceId: InstanceId}") app_instance_id=$(echo $aws_app_instance | awk '{print $1}') -aws_db_instance=$(aws ec2 describe-instances --filters "Name=instance-state-name,Values=running" "Name=tag:Name,Values=circle-db-$CIRCLE_BUILD_NUM-$RELEASE" --query "Reservations[*].Instances[*].{PrivateIP: PrivateIpAddress, PublicIP: PublicIpAddress, InstanceId: InstanceId}") +aws_db_instance=$(aws ec2 describe-instances --filters "Name=instance-state-name,Values=running" "Name=tag:Name,Values=circle-db-$CIRCLE_BUILD_NUM" --query "Reservations[*].Instances[*].{PrivateIP: PrivateIpAddress, PublicIP: PublicIpAddress, InstanceId: InstanceId}") db_instance_id=$(echo $aws_db_instance | awk '{print $1}') echo -e "Removing application server: $app_instance_id" diff --git a/test/ci/run_install_script.sh b/test/ci/run_install_script.sh index 327cc64209..faade4a98b 100755 --- a/test/ci/run_install_script.sh +++ b/test/ci/run_install_script.sh @@ -7,8 +7,6 @@ app_ip=$(awk '/dns_name:/{ if ($2 !~ /#.*/) {print $2}}' $config_file) user_name=$(awk '/ssh_ansible_user:/{if ($2 !~ /#.*/) {print $2}}' $config_file) printf "%s$private_key" > sunbird.pem chmod 600 sunbird.pem -echo $RELEASE > $release_to_build -echo $CIRCLE_BUILD_URL >> $release_to_build scp -i sunbird.pem -o StrictHostKeyChecking=no $config_file sunbird.pem $install_script $release_to_build $email_script $user_name@$app_ip:/tmp ssh -i sunbird.pem -o StrictHostKeyChecking=no $user_name@$app_ip "/tmp/install_sb.sh" if [[ $? -ne 0 ]]; then diff --git a/test/ci/run_upgrade_script.sh b/test/ci/run_upgrade_script.sh new file mode 100755 index 0000000000..86dc361ad9 --- /dev/null +++ b/test/ci/run_upgrade_script.sh @@ -0,0 +1,17 @@ +#!/bin/bash +config_file=./deploy/config.yml.sample +backup_script=./test/ci/backup_dbs.sh +upgrade_script=./test/ci/upgrade_sb.sh +release_to_build=./test/ci/release_to_build +app_ip=$(awk '/dns_name:/{ if ($2 !~ /#.*/) {print $2}}' $config_file) +user_name=$(awk '/ssh_ansible_user:/{if ($2 !~ /#.*/) {print $2}}' $config_file) +printf "%s$private_key" > sunbird.pem +chmod 600 sunbird.pem +scp -i sunbird.pem -o StrictHostKeyChecking=no $config_file sunbird.pem $backup_script $upgrade_script $release_to_build $user_name@$app_ip:/tmp +ssh -i sunbird.pem -o StrictHostKeyChecking=no $user_name@$app_ip "/tmp/upgrade_sb.sh" + +if [[ $? -ne 0 ]]; then + echo -e "\nSunbird upgrade to $RELEASE failed - Please inspect the server - Instance not removed!" + exit 1 +fi + diff --git a/test/ci/send_email.py b/test/ci/send_email.py index 51a6dcc04b..7d0877ca34 100755 --- a/test/ci/send_email.py +++ b/test/ci/send_email.py @@ -10,48 +10,42 @@ fromaddr = "from_address" toaddr = [to_address] -if path.exists("/tmp/serverlogs.zip"): - logFileStatus="attached" -else: - logFileStatus="missing" - s = smtplib.SMTP('smtp.gmail.com', 587) s.starttls() s.login(fromaddr, "email_password") -details = "/tmp/release_to_build" -f = open(details) +content = "/tmp/release_to_build" +f = open(content) release = f.readline().rstrip() jobUrl = f.readline().rstrip() buildStatus = f.readline().rstrip() +subMessage = f.readline().rstrip() f.close() -if buildStatus == "succeeded": +if buildStatus == "success": bgcolor = "#51CA5E" else: bgcolor = "#E33F3A" -subject = "Release %s build %s" % (release, buildStatus) +subject = "%s" % (subMessage) body = """ - -
Release StatusServer Logs Build Log URL
 %s  %s%s Click Here! 

If you do not wish to receive these emails, please click here

If you wish to add someone to receive these notifications, please click here

-""" % (bgcolor, release, buildStatus, logFileStatus, jobUrl) +""" % (bgcolor, release, buildStatus, jobUrl) for i in range(len(toaddr)): msg = MIMEMultipart() @@ -61,7 +55,7 @@ msg.attach(MIMEText(body, 'html')) filename = "serverlogs.zip" p = MIMEBase('application', 'octet-stream') - if logFileStatus == "attached": + if path.exists("/tmp/serverlogs.zip"): attachment = open("/tmp/serverlogs.zip", "rb") p.set_payload((attachment).read()) encoders.encode_base64(p) diff --git a/test/ci/update_config.sh b/test/ci/update_config.sh index 9355a4722c..8ab043fd8d 100755 --- a/test/ci/update_config.sh +++ b/test/ci/update_config.sh @@ -1,7 +1,26 @@ #!/bin/bash + config_file=./deploy/config.yml.sample email_file=./test/ci/send_email.py +aws_app_instance=$(aws ec2 describe-instances --filters "Name=instance-state-name,Values=running" "Name=tag:Name,Values=circle-app-$CIRCLE_BUILD_NUM" --query "Reservations[*].Instances[*].{PrivateIP: PrivateIpAddress, PublicIP: PublicIpAddress, InstanceId: InstanceId}") +app_instance_id=$(echo -e $aws_app_instance | awk '{print $1}') +app_private_ip=$(echo -e $aws_app_instance | awk '{print $2}') +app_public_ip=$(echo -e $aws_app_instance | awk '{print $3}') + +aws_db_instance=$(aws ec2 describe-instances --filters "Name=instance-state-name,Values=running" "Name=tag:Name,Values=circle-db-$CIRCLE_BUILD_NUM" --query "Reservations[*].Instances[*].{PrivateIP: PrivateIpAddress, PublicIP: PublicIpAddress, InstanceId: InstanceId}") +db_instance_id=$(echo -e $aws_db_instance | awk '{print $1}') +db_private_ip=$(echo -e $aws_db_instance | awk '{print $2}') +db_public_ip=$(echo -e $aws_db_instance | awk '{print $3}') + +echo -e "Application server details:" +echo -e "Instance ID: $app_instance_id\nPrivate IP: $app_private_ip\nPublic IP: $app_public_ip" +echo -e "\nDatabase server details" +echo -e "Instance ID: $db_instance_id\nPrivate IP: $db_private_ip\nPublic IP: $db_public_ip" + +sed -i "s|application_host:.*#|application_host: $app_private_ip #|g" $config_file +sed -i "s|dns_name:.*#|dns_name: $app_public_ip #|g" $config_file +sed -i "s|database_host:.*#|database_host: $db_private_ip #|g" $config_file sed -i "s|env:.*#|env: $env #|g" $config_file sed -i "s|implementation_name:.*#|implementation_name: $implementation_name #|g" $config_file sed -i "s|ssh_ansible_user:.*#|ssh_ansible_user: $ssh_ansible_user #|g" $config_file @@ -37,3 +56,4 @@ sed -i "s|from_address|$from_address|g" $email_file sed -i "s|to_address|$to_address|g" $email_file sed -i "s|email_password|$email_password|g" $email_file echo -e "Email file updated..." + diff --git a/test/ci/upgrade_sb.sh b/test/ci/upgrade_sb.sh new file mode 100755 index 0000000000..bf9e702dc1 --- /dev/null +++ b/test/ci/upgrade_sb.sh @@ -0,0 +1,140 @@ +#!/bin/bash + +backupdbs(){ +scp -i $ansible_private_key_path -o StrictHostKeyChecking=no $backup_script $release_file $config_file $username@$database_host:/tmp +ssh -i $ansible_private_key_path -o StrictHostKeyChecking=no $username@$database_host "bash /tmp/backup_dbs.sh" +} + +checkoutRepo(){ +cd /home/$username +sudo rm -rf sunbird-devops +git clone https://github.com/project-sunbird/sunbird-devops.git +cd sunbird-devops +IFS="/" read -r var1 var2 <<< $release +if [[ $var1 == "tags" ]]; then + git checkout $release -b $var2 + echo -e "Instlling sunbird $var2" +else + git checkout -b $var1 origin/$var1 + echo -e "Installing sunbird $var1" +fi +cd deploy +} + +copyConfig(){ + if [[ -f config ]]; then + cp $config_file config + config_file=config + else + cp $config_file config.yml + config_file=config.yml + fi +} + +updateSSO(){ + access_token=$(curl -s -X POST http://$dns_name/auth/realms/master/protocol/openid-connect/token -H "cache-control: no-cache" -H "content-type: application/x-www-form-urlencoded" -d "client_id=admin-cli&username=admin&password=$keycloak_pass&grant_type=password" | jq -r ".access_token") + public_key=$(curl -s -X GET http://$dns_name/auth/admin/realms/sunbird/keys -H "Authorization: Bearer $access_token" -H "Cache-Control: no-cache" -H "Content-Type: application/json" | jq -r ".keys[0].publicKey") + sed -i "s|sunbird_sso_publickey:.*#|sunbird_sso_publickey: $public_key #|g" $config_file +} + +upgradeSB(){ +./sunbird_install.sh -s config +if [[ $? -ne 0 ]]; then + echo -e "Config file generation failed.." | tee -a $upgrade_log + postResult +fi + +./sunbird_install.sh -s dbs +if [[ $? -ne 0 ]]; then + echo -e "DB migration failed.." | tee -a $upgrade_log + postResult +fi + +./sunbird_install.sh -s apis +if [[ $? -ne 0 ]]; then + echo -e "API service upgrade failed.." | tee -a $upgrade_log + postResult +fi + +./sunbird_install.sh -s proxy +if [[ $? -ne 0 ]]; then + echo -e "Proxy service upgrade failed.." | tee -a $upgrade_log + postResult +fi + +./sunbird_install.sh -s core +if [[ $? -ne 0 ]]; then + echo -e "Core services upgrade failed.." | tee -a $upgrade_log + postResult +fi +} + +checkUpgrade(){ +flag=0 +declare -a services=("badger" "content" "kong" "learner" "player" "proxy" "telemetry") +for i in ${services[@]} +do +docker_version=$(sudo docker service ls | awk '/'$i'/{print $5}' | awk -F ":" '{print $2}') +release_version=$(awk -F "=" 'tolower($0) ~ /'$i'/ {print $2}' version.env) + +if [[ $docker_version == $release_version ]]; then + echo -e "\e[0;32m$i service upgraded successfully to $docker_version\e[0;29m" | tee -a $upgrade_log +else + echo -e "\e[0;31m$i service could not be upgraded. Release version is $release_version, but docker version is $docker_version. Please investigate..\e[0;29m" | tee -a $upgrade_log + flag=1 +fi +done +} + +archiveLogs(){ + sudo apt install -y zip + cp $upgrade_log logs + scp -i $ansible_private_key_path -o StrictHostKeyChecking=no $username@$database_host:/tmp/backup_log.txt logs + zip -r /tmp/serverlogs.zip logs +} + +sendEmail(){ + python /tmp/send_email.py +} + +postResult(){ + echo "failed" >> /tmp/release_to_build + echo "Upgrade to release $release failed" >> /tmp/release_to_build + archiveLogs + sendEmail + exit 1 +} + +config_file=/tmp/config.yml.sample +release_file=/tmp/release_to_build +release=$(cat /tmp/release_to_build | head -1) +username=$(awk '/ssh_ansible_user:/{ if ($2 !~ /#.*/) {print $2}}' $config_file) +ansible_private_key_path=$(awk '/ansible_private_key_path:/{ if ($2 !~ /#.*/) {print $2}}' $config_file) +dns_name=$(awk '/dns_name:/{ if ($2 !~ /#.*/) {print $2}}' $config_file) +database_host=$(awk '/database_host:/{ if ($2 !~ /#.*/) {print $2}}' $config_file) +keycloak_pass=$(awk '/keycloak_admin_password:/{ if ($2 !~ /#.*/) {print $2}}' $config_file) +sso_pass=$(awk '/sso_password:/{ if ($2 !~ /#.*/) {print $2}}' $config_file) +backup_script=/tmp/backup_dbs.sh +upgrade_log=/tmp/upgrade_log.txt + +checkoutRepo +backupdbs +if [[ $? -eq 0 ]]; then + copyConfig + updateSSO + upgradeSB + checkUpgrade +else + echo -e "Database backup failed. Skipping upgrade.." | tee -a $upgrade_log + postResult +fi + +if [[ $flag -eq 1 ]]; then + echo "Found mismatch in container versions.." | tee -a $upgrade_log + postResult +else + echo "success" >> /tmp/release_to_build + echo "Upgrade to release $release succeeded" >> /tmp/release_to_build + archiveLogs + sendEmail +fi From 39973d97a51f592b8e6b921048495fc67aa80ad8 Mon Sep 17 00:00:00 2001 From: S M Y Date: Thu, 22 Nov 2018 10:49:38 +0530 Subject: [PATCH 0347/1345] Issue #000 env: env vars of release-1.12 --- ansible/inventories/sample/group_vars/sample | 5 +++++ .../stack-sunbird/templates/sunbird_learner-service.env | 1 + ansible/roles/stack-sunbird/templates/sunbird_player.env | 2 +- 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/ansible/inventories/sample/group_vars/sample b/ansible/inventories/sample/group_vars/sample index 0149c9931c..85527083b0 100644 --- a/ansible/inventories/sample/group_vars/sample +++ b/ansible/inventories/sample/group_vars/sample @@ -359,3 +359,8 @@ sunbird_cassandra_consistency_level: one sunbird_cassandra_replication_strategy: '{"class":"SimpleStrategy","replication_factor":"1"}' sunbird_allowed_login: sunbird_course_batch_notification_enabled: true + +sunbird_device_register_api: + +sunbird_course_batch_notification_signature: sunbird + diff --git a/ansible/roles/stack-sunbird/templates/sunbird_learner-service.env b/ansible/roles/stack-sunbird/templates/sunbird_learner-service.env index 90a5534d62..7db2f6c61f 100644 --- a/ansible/roles/stack-sunbird/templates/sunbird_learner-service.env +++ b/ansible/roles/stack-sunbird/templates/sunbird_learner-service.env @@ -81,3 +81,4 @@ sunbird_url_shortner_enable={{sunbird_url_shortner_enable}} sunbird_user_profile_field_default_visibility={{sunbird_user_profile_field_default_visibility}} sunbird_keycloak_required_action_link_expiration_seconds={{sunbird_keycloak_required_action_link_expiration_seconds}} sunbird_course_batch_notification_enabled={{sunbird_course_batch_notification_enabled}} +sunbird_course_batch_notification_signature={{sunbird_course_batch_notification_signature}} diff --git a/ansible/roles/stack-sunbird/templates/sunbird_player.env b/ansible/roles/stack-sunbird/templates/sunbird_player.env index fd69d18c93..d8906c1c07 100644 --- a/ansible/roles/stack-sunbird/templates/sunbird_player.env +++ b/ansible/roles/stack-sunbird/templates/sunbird_player.env @@ -37,4 +37,4 @@ config_service_enabled={{config_service_enabled}} config_refresh_interval={{config_refresh_interval}} sunbird_cassandra_consistency_level={{sunbird_cassandra_consistency_level}} sunbird_cassandra_replication_strategy={{sunbird_cassandra_replication_strategy}} - +sunbird_device_register_api={{sunbird_device_register_api}} From afebeb7fa2afddbbaad06b7a216164243e3a7247 Mon Sep 17 00:00:00 2001 From: S M Y Date: Thu, 22 Nov 2018 12:21:39 +0530 Subject: [PATCH 0348/1345] Issue #000 host: cassandra migration version updation --- ansible/roles/cassandra-cql-update/tasks/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/cassandra-cql-update/tasks/main.yml b/ansible/roles/cassandra-cql-update/tasks/main.yml index 6b6f199427..f47ce6f47b 100644 --- a/ansible/roles/cassandra-cql-update/tasks/main.yml +++ b/ansible/roles/cassandra-cql-update/tasks/main.yml @@ -52,7 +52,7 @@ - name: download become: yes - command: wget https://github.com/project-sunbird/sunbird-utils/releases/download/release-1.10/cassandra-migration-0.0.1-SNAPSHOT-jar-with-dependencies.jar + command: wget https://github.com/project-sunbird/sunbird-utils/releases/download/release-1.11/cassandra-migration-0.0.1-SNAPSHOT-jar-with-dependencies.jar args: chdir: /tmp run_once: true From c8ce9d108ea3210bb54dda3c96c15b92d012fe4f Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Thu, 22 Nov 2018 15:22:03 +0530 Subject: [PATCH 0349/1345] Ansible syntax check hook (#268) feat: adding ansible pre-commit hook script --- scripts/syntax-check-hook.sh | 22 ++++++++++++++++++++++ test/ci/upgrade_sb.sh | 4 ++-- 2 files changed, 24 insertions(+), 2 deletions(-) create mode 100755 scripts/syntax-check-hook.sh diff --git a/scripts/syntax-check-hook.sh b/scripts/syntax-check-hook.sh new file mode 100755 index 0000000000..9626864c24 --- /dev/null +++ b/scripts/syntax-check-hook.sh @@ -0,0 +1,22 @@ +#!/bin/bash + +checkSyntax(){ +filenames=$(git diff --cached --name-only --diff-filter=ACM) +flag=0 +for i in $filenames +do + if [[ "$i" =~ (.yaml|.yml) ]]; then + ansible-playbook -i ./ansible/inventories/sample --syntax-check $i + if [[ $? -ne 0 ]]; then + flag=1 + fi + fi +done + +if [[ $flag -eq 1 ]]; then + echo -e "\e[1;36m\nAnsible syntax error found. Please correct these and then commit.\e[0;37m" + exit 1 +fi +} + +checkSyntax diff --git a/test/ci/upgrade_sb.sh b/test/ci/upgrade_sb.sh index bf9e702dc1..2a6a9b1786 100755 --- a/test/ci/upgrade_sb.sh +++ b/test/ci/upgrade_sb.sh @@ -78,9 +78,9 @@ docker_version=$(sudo docker service ls | awk '/'$i'/{print $5}' | awk -F ":" '{ release_version=$(awk -F "=" 'tolower($0) ~ /'$i'/ {print $2}' version.env) if [[ $docker_version == $release_version ]]; then - echo -e "\e[0;32m$i service upgraded successfully to $docker_version\e[0;29m" | tee -a $upgrade_log + echo -e "\e[0;32m$i service upgraded successfully to $docker_version\e[0;37m" | tee -a $upgrade_log else - echo -e "\e[0;31m$i service could not be upgraded. Release version is $release_version, but docker version is $docker_version. Please investigate..\e[0;29m" | tee -a $upgrade_log + echo -e "\e[0;31m$i service could not be upgraded. Release version is $release_version, but docker version is $docker_version. Please investigate..\e[0;37m" | tee -a $upgrade_log flag=1 fi done From 227401c08c220a0967304c8815ba95c26c8fb531 Mon Sep 17 00:00:00 2001 From: S M Y Date: Fri, 23 Nov 2018 17:40:15 +0530 Subject: [PATCH 0350/1345] Issue #000 env: env vars for keycloak --- ansible/inventories/sample/group_vars/sample | 2 ++ ansible/roles/stack-keycloak/templates/sunbird_keycloak1.env | 4 +++- ansible/roles/stack-keycloak/templates/sunbird_keycloak2.env | 4 +++- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/ansible/inventories/sample/group_vars/sample b/ansible/inventories/sample/group_vars/sample index 85527083b0..9ee2eae5a1 100644 --- a/ansible/inventories/sample/group_vars/sample +++ b/ansible/inventories/sample/group_vars/sample @@ -364,3 +364,5 @@ sunbird_device_register_api: sunbird_course_batch_notification_signature: sunbird +sunbird_authorization: +sunbird_lms_base_url: diff --git a/ansible/roles/stack-keycloak/templates/sunbird_keycloak1.env b/ansible/roles/stack-keycloak/templates/sunbird_keycloak1.env index 9a4bfce55c..924d4b28f1 100644 --- a/ansible/roles/stack-keycloak/templates/sunbird_keycloak1.env +++ b/ansible/roles/stack-keycloak/templates/sunbird_keycloak1.env @@ -4,4 +4,6 @@ POSTGRES_PORT_5432_TCP_PORT=5432 POSTGRES_USER={{keycloak_postgres_user}} TCPPING_INITIAL_HOSTS=keycloak1[7600] KEYCLOAK_ADMIN_USERNAME={{keycloak_admin_username}} -KEYCLOAK_ADMIN_INITIAL_PASSWORD={{keycloak_admin_initial_password}} \ No newline at end of file +KEYCLOAK_ADMIN_INITIAL_PASSWORD={{keycloak_admin_initial_password}} +sunbird_authorization={{sunbird_authorization}} +sunbird_lms_base_url={{sunbird_lms_base_url}} diff --git a/ansible/roles/stack-keycloak/templates/sunbird_keycloak2.env b/ansible/roles/stack-keycloak/templates/sunbird_keycloak2.env index 37116ece90..7ac2f9d28a 100644 --- a/ansible/roles/stack-keycloak/templates/sunbird_keycloak2.env +++ b/ansible/roles/stack-keycloak/templates/sunbird_keycloak2.env @@ -2,4 +2,6 @@ KEYCLOAK_LOGLEVEL=DEBUG POSTGRES_PORT_5432_TCP_ADDR={{keycloak_postgres_host}} POSTGRES_PORT_5432_TCP_PORT=5432 POSTGRES_USER={{keycloak_postgres_user}} -TCPPING_INITIAL_HOSTS=keycloak1[7600] \ No newline at end of file +TCPPING_INITIAL_HOSTS=keycloak1[7600] +sunbird_authorization={{sunbird_authorization}} +sunbird_lms_base_url={{sunbird_lms_base_url}} From 38206e20358dab41fb89ffecfc5a6692a60c93b8 Mon Sep 17 00:00:00 2001 From: Manzarul Date: Mon, 26 Nov 2018 17:47:30 +0530 Subject: [PATCH 0351/1345] Issues #SB-9206 feat: adding new api's --- ansible/roles/kong-api/defaults/main.yml | 32 ++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/ansible/roles/kong-api/defaults/main.yml b/ansible/roles/kong-api/defaults/main.yml index 3dee7a67a7..80a0c65219 100644 --- a/ansible/roles/kong-api/defaults/main.yml +++ b/ansible/roles/kong-api/defaults/main.yml @@ -3423,3 +3423,35 @@ kong_apis: config.limit_by: credential - name: request-size-limiting config.allowed_payload_size: "{{ small_request_size_limit }}" + - name: uploadTOC + request_path: "{{ content_service_prefix }}/v1/textbook/toc/upload" + upstream_url: "{{ learning_service_url }}/v1/textbook/toc/upload" + strip_request_path: true + plugins: + - name: jwt + - name: cors + - "{{ statsd_pulgin }}" + - name: acl + config.whitelist: contentAdmin + - name: rate-limiting + config.policy: local + config.hour: "{{ medium_rate_limit_per_hour }}" + config.limit_by: credential + - name: request-size-limiting + config.allowed_payload_size: "{{ medium_request_size_limit }}" + - name: downloadTOC + request_path: {{ content_service_prefix }}/v1/textbook/toc/download" + upstream_url: {{ learning_service_url }}/v1/textbook/toc/download" + strip_request_path: true + plugins: + - name: jwt + - name: cors + - "{{ statsd_pulgin }}" + - name: acl + config.whitelist: contentAdmin + - name: rate-limiting + config.policy: local + config.hour: "{{ medium_rate_limit_per_hour }}" + config.limit_by: credential + - name: request-size-limiting + config.allowed_payload_size: "{{ medium_request_size_limit }}" From 3200f4ae62ffae9220348814e972970376459c5e Mon Sep 17 00:00:00 2001 From: Manzarul Date: Mon, 26 Nov 2018 17:57:29 +0530 Subject: [PATCH 0352/1345] Issues #SB-9206 feat: adding new api's --- ansible/roles/kong-api/defaults/main.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ansible/roles/kong-api/defaults/main.yml b/ansible/roles/kong-api/defaults/main.yml index 80a0c65219..1255ab9698 100644 --- a/ansible/roles/kong-api/defaults/main.yml +++ b/ansible/roles/kong-api/defaults/main.yml @@ -3440,8 +3440,8 @@ kong_apis: - name: request-size-limiting config.allowed_payload_size: "{{ medium_request_size_limit }}" - name: downloadTOC - request_path: {{ content_service_prefix }}/v1/textbook/toc/download" - upstream_url: {{ learning_service_url }}/v1/textbook/toc/download" + request_path: "{{ content_service_prefix }}/v1/textbook/toc/download" + upstream_url: "{{ learning_service_url }}/v1/textbook/toc/download" strip_request_path: true plugins: - name: jwt From 674280cd36dafb4e9e81f725f6c53792abdd6e3c Mon Sep 17 00:00:00 2001 From: S M Y Date: Tue, 27 Nov 2018 13:47:10 +0530 Subject: [PATCH 0353/1345] Issue #000 keycloak: build provision env vars --- ansible/roles/keycloak/tasks/provision.yml | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/ansible/roles/keycloak/tasks/provision.yml b/ansible/roles/keycloak/tasks/provision.yml index 49a723bb03..404500bf1b 100644 --- a/ansible/roles/keycloak/tasks/provision.yml +++ b/ansible/roles/keycloak/tasks/provision.yml @@ -9,4 +9,11 @@ - name: Copy service file to init.d template: src=keycloak-service.j2 dest=/etc/init.d/keycloak mode=0755 - + +- name: Adding ENV Vars to bashrc + lineinfile: + dest: '/home/{{ansible_ssh_user}}/.bashrc' + line: 'export {{item.var}}={{item.value}}' + with_items: + - { var: 'sunbird_lms_base_url', value: '{{sunbird_lms_base_url}}' } + - { var: 'sunbird_authorization', value: '{{sunbird_authorization}}' } From 9273c7c31a908ff14542faad4c8592e911aaec2c Mon Sep 17 00:00:00 2001 From: S M Y Date: Tue, 27 Nov 2018 13:49:06 +0530 Subject: [PATCH 0354/1345] Issue #000 keycloak: build provision env vars --- ansible/inventories/sample/group_vars/sample | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ansible/inventories/sample/group_vars/sample b/ansible/inventories/sample/group_vars/sample index 9ee2eae5a1..c814139b12 100644 --- a/ansible/inventories/sample/group_vars/sample +++ b/ansible/inventories/sample/group_vars/sample @@ -364,5 +364,5 @@ sunbird_device_register_api: sunbird_course_batch_notification_signature: sunbird -sunbird_authorization: -sunbird_lms_base_url: +sunbird_authorization: "{{vault_sunbird_api_auth_token}}" +sunbird_lms_base_url: From 6392dd7be18ea1b34033785f5c3b2b7e9959e988 Mon Sep 17 00:00:00 2001 From: S M Y Date: Tue, 27 Nov 2018 13:53:32 +0530 Subject: [PATCH 0355/1345] Issue #000 keycloak: build provision env vars --- ansible/roles/keycloak/tasks/provision.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/keycloak/tasks/provision.yml b/ansible/roles/keycloak/tasks/provision.yml index 404500bf1b..9c412069b9 100644 --- a/ansible/roles/keycloak/tasks/provision.yml +++ b/ansible/roles/keycloak/tasks/provision.yml @@ -12,7 +12,7 @@ - name: Adding ENV Vars to bashrc lineinfile: - dest: '/home/{{ansible_ssh_user}}/.bashrc' + path: '/home/{{ansible_ssh_user}}/.bashrc' line: 'export {{item.var}}={{item.value}}' with_items: - { var: 'sunbird_lms_base_url', value: '{{sunbird_lms_base_url}}' } From a36879cf3c3bb02f9bc94576f09110ad8c6038c5 Mon Sep 17 00:00:00 2001 From: S M Y Date: Tue, 27 Nov 2018 13:57:33 +0530 Subject: [PATCH 0356/1345] Issue #000 keycloak: build provision env vars --- ansible/roles/keycloak/tasks/provision.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/keycloak/tasks/provision.yml b/ansible/roles/keycloak/tasks/provision.yml index 9c412069b9..c71d0d3ce6 100644 --- a/ansible/roles/keycloak/tasks/provision.yml +++ b/ansible/roles/keycloak/tasks/provision.yml @@ -12,7 +12,7 @@ - name: Adding ENV Vars to bashrc lineinfile: - path: '/home/{{ansible_ssh_user}}/.bashrc' + path: '/etc/environment' line: 'export {{item.var}}={{item.value}}' with_items: - { var: 'sunbird_lms_base_url', value: '{{sunbird_lms_base_url}}' } From d8639262477cd266a45923989de04d42110419d3 Mon Sep 17 00:00:00 2001 From: S M Y Date: Tue, 27 Nov 2018 18:53:44 +0530 Subject: [PATCH 0357/1345] Issue #000 key: Rotate user keys of AZure Servers --- deploy/utilities/rotateKey.sh | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100755 deploy/utilities/rotateKey.sh diff --git a/deploy/utilities/rotateKey.sh b/deploy/utilities/rotateKey.sh new file mode 100755 index 0000000000..2e09126ff2 --- /dev/null +++ b/deploy/utilities/rotateKey.sh @@ -0,0 +1,22 @@ +#!/bin/bash +# Author S M Y +RGName=$1 +KeyFileLocation=$2 +vmnames=( $(az vm list-ip-addresses -o table -g $RGName | awk 'NR>2{print $1}' | tr "\n" " ") ) + +if [ $# -ne 2 ]; +then + echo "Usage: bash rotateKey.sh ResourceGroupName KeyFileLocation" +fi + +for name in "${vmnames[@]}" +do + #Rotating SSH Pem Key + echo "changing key for server $name my master" + echo "------------------------------------------------------------------" + az vm user update --name $name \ + --resource-group $RGName \ + --username ops \ + --ssh-key-value "$(cat $KeyFileLocation)" + echo "------------------------------------------------------------------" +done From 506818f9dedd10468f0dd9581770e12f1689a5c4 Mon Sep 17 00:00:00 2001 From: S M Y Date: Tue, 27 Nov 2018 19:17:42 +0530 Subject: [PATCH 0358/1345] Issue #000 monitor: Resolving monitoring issue --- ansible/roles/stack-monitor/templates/prometheus.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/stack-monitor/templates/prometheus.yml b/ansible/roles/stack-monitor/templates/prometheus.yml index 3128c3315f..1c6ad266d7 100644 --- a/ansible/roles/stack-monitor/templates/prometheus.yml +++ b/ansible/roles/stack-monitor/templates/prometheus.yml @@ -113,7 +113,7 @@ scrape_configs: - job_name: 'process-exporter' metrics_path: /metrics static_configs: - - targets: {{ groups['node-exporter'] | difference(["localhost"]) | map('regex_replace', '^(.*)$', '\\1:1111' ) | list | to_yaml }} + - targets: {{ groups['process-exporter'] | difference(["localhost"]) | map('regex_replace', '^(.*)$', '\\1:1111' ) | list | to_yaml }} {% for item in service_blackbox_checks %} # This empty line ensures indentation is correct after ansible jinja2 template is materialized From 8ca016e8773697fc8047c5f6ade3ae0e3bf246eb Mon Sep 17 00:00:00 2001 From: S M Y Date: Tue, 27 Nov 2018 21:12:55 +0530 Subject: [PATCH 0359/1345] Issue #000 config: limit decrease for logger service --- ansible/inventories/sample/group_vars/sample | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ansible/inventories/sample/group_vars/sample b/ansible/inventories/sample/group_vars/sample index c814139b12..f521eb01a5 100644 --- a/ansible/inventories/sample/group_vars/sample +++ b/ansible/inventories/sample/group_vars/sample @@ -341,6 +341,9 @@ encryption_limit_memory: 750MB encryption_limit_cpu: 1 encryption_reservation_cpu: 1 +logger_logstash_reservation_memory: 750M +logger_logstash_limit_memory: 750M + #Portal vars: sunbird_portal_user_upload_ref_link: http://www.sunbird.org/features-documentation/register_user From 46076601363b4761a86606729aa6374a9db31bf9 Mon Sep 17 00:00:00 2001 From: S M Y Date: Tue, 27 Nov 2018 21:14:11 +0530 Subject: [PATCH 0360/1345] Issue #000 config: limit decrease for logger service --- ansible/roles/stack-logger/defaults/main.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/ansible/roles/stack-logger/defaults/main.yml b/ansible/roles/stack-logger/defaults/main.yml index 81ce775b5d..db97d4d232 100644 --- a/ansible/roles/stack-logger/defaults/main.yml +++ b/ansible/roles/stack-logger/defaults/main.yml @@ -5,4 +5,6 @@ logger_logstash_reservation_memory: 1g logger_logstash_limit_memory: 2g kibana_oauth_authenticated_email_domains: [] -kibana_oauth_authenticated_email_ids: [] \ No newline at end of file +kibana_oauth_authenticated_email_ids: [] +logger_logstash_reservation_memory: 1024M +logger_logstash_limit_memory: 1024M From 48c5d3c2b9d8c1c5e51e4218940398e1dba8b1bc Mon Sep 17 00:00:00 2001 From: S M Y Date: Tue, 27 Nov 2018 21:48:31 +0530 Subject: [PATCH 0361/1345] Issue #000 monitor: Docker port change --- ansible/roles/stack-monitor/defaults/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/stack-monitor/defaults/main.yml b/ansible/roles/stack-monitor/defaults/main.yml index 9001b5f68f..8ecb83ee12 100644 --- a/ansible/roles/stack-monitor/defaults/main.yml +++ b/ansible/roles/stack-monitor/defaults/main.yml @@ -49,7 +49,7 @@ expected_data_backup_size_in_bytes: 1024 enable_postgres_availability_check: true enable_scraping_docker_metrics: false -docker_metrics_port: "2393" +docker_metrics_port: "2377" kong_cluster_expected_number_of_nodes: "{{ kong_replicas | default(1) }}" From a5be6a6ecd5704ad199e90cef5701d77c95bde69 Mon Sep 17 00:00:00 2001 From: S M Y Date: Wed, 28 Nov 2018 11:33:47 +0530 Subject: [PATCH 0362/1345] Issue #000 keycloak: keycloak start error --- ansible/roles/keycloak/tasks/deploy.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/ansible/roles/keycloak/tasks/deploy.yml b/ansible/roles/keycloak/tasks/deploy.yml index 998ba8b0f2..4af73aa79b 100644 --- a/ansible/roles/keycloak/tasks/deploy.yml +++ b/ansible/roles/keycloak/tasks/deploy.yml @@ -104,7 +104,6 @@ - name: start service become: yes command: /etc/init.d/keycloak start - when: "keycloak_status.stdout.find('running') == -1" poll: 5 async: 5 ignore_errors: yes From 779d824267cbf0365d3a2311005c59d9e81ecf00 Mon Sep 17 00:00:00 2001 From: S M Y Date: Wed, 28 Nov 2018 15:53:28 +0530 Subject: [PATCH 0363/1345] Issue #000 keycloak: keycloak start command status --- ansible/roles/keycloak/tasks/deploy.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ansible/roles/keycloak/tasks/deploy.yml b/ansible/roles/keycloak/tasks/deploy.yml index 4af73aa79b..94f4e91561 100644 --- a/ansible/roles/keycloak/tasks/deploy.yml +++ b/ansible/roles/keycloak/tasks/deploy.yml @@ -107,3 +107,5 @@ poll: 5 async: 5 ignore_errors: yes + when: + - "keycloak_status.stdout.find('running') != -1" From d5358e5d2bc0da5d679eaffbeacb4c5f9770150a Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Thu, 29 Nov 2018 12:08:27 +0530 Subject: [PATCH 0364/1345] Issue #000 kong-api: Removing tabs --- ansible/roles/kong-api/defaults/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/kong-api/defaults/main.yml b/ansible/roles/kong-api/defaults/main.yml index 1255ab9698..0153b1db8a 100644 --- a/ansible/roles/kong-api/defaults/main.yml +++ b/ansible/roles/kong-api/defaults/main.yml @@ -3454,4 +3454,4 @@ kong_apis: config.hour: "{{ medium_rate_limit_per_hour }}" config.limit_by: credential - name: request-size-limiting - config.allowed_payload_size: "{{ medium_request_size_limit }}" + config.allowed_payload_size: "{{ medium_request_size_limit }}" From f251b865020f2ecf32b4047d423784d108d5c7b6 Mon Sep 17 00:00:00 2001 From: S M Y Date: Thu, 29 Nov 2018 12:14:32 +0530 Subject: [PATCH 0365/1345] Issue #000 var: Removing variable as it's not required --- ansible/inventories/sample/group_vars/sample | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/inventories/sample/group_vars/sample b/ansible/inventories/sample/group_vars/sample index f521eb01a5..16b5c5c8ba 100644 --- a/ansible/inventories/sample/group_vars/sample +++ b/ansible/inventories/sample/group_vars/sample @@ -367,5 +367,5 @@ sunbird_device_register_api: sunbird_course_batch_notification_signature: sunbird -sunbird_authorization: "{{vault_sunbird_api_auth_token}}" +sunbird_authorization: sunbird_lms_base_url: From 5e55dc95f4c7697a4a97ac444b70cc3a047c778c Mon Sep 17 00:00:00 2001 From: S M Y Date: Thu, 29 Nov 2018 15:22:27 +0530 Subject: [PATCH 0366/1345] Issue #000 keycloak: keycloak start command status --- ansible/roles/keycloak/tasks/deploy.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/keycloak/tasks/deploy.yml b/ansible/roles/keycloak/tasks/deploy.yml index 94f4e91561..5431456b37 100644 --- a/ansible/roles/keycloak/tasks/deploy.yml +++ b/ansible/roles/keycloak/tasks/deploy.yml @@ -108,4 +108,4 @@ async: 5 ignore_errors: yes when: - - "keycloak_status.stdout.find('running') != -1" + - when: "keycloak_status.stdout.find('running') == -1" From 2553df74ce25ad127e77b39b76dc9ff956336f37 Mon Sep 17 00:00:00 2001 From: Manzarul Date: Thu, 29 Nov 2018 15:41:37 +0530 Subject: [PATCH 0367/1345] Issues #SB-00 fix: changes for URL --- ansible/roles/kong-api/defaults/main.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/ansible/roles/kong-api/defaults/main.yml b/ansible/roles/kong-api/defaults/main.yml index 0153b1db8a..1cc5363f3e 100644 --- a/ansible/roles/kong-api/defaults/main.yml +++ b/ansible/roles/kong-api/defaults/main.yml @@ -48,6 +48,7 @@ framework_service_prefix: /framework badge_service_prefix: /badging plugin_service_prefix: /plugins config_service_prefix: /config +textbook_service_prefix: /textbook # Service URLs content_service_url: "http://content-service:5000" @@ -3424,7 +3425,7 @@ kong_apis: - name: request-size-limiting config.allowed_payload_size: "{{ small_request_size_limit }}" - name: uploadTOC - request_path: "{{ content_service_prefix }}/v1/textbook/toc/upload" + request_path: "{{ textbook_service_prefix }}/v1/toc/upload" upstream_url: "{{ learning_service_url }}/v1/textbook/toc/upload" strip_request_path: true plugins: @@ -3440,7 +3441,7 @@ kong_apis: - name: request-size-limiting config.allowed_payload_size: "{{ medium_request_size_limit }}" - name: downloadTOC - request_path: "{{ content_service_prefix }}/v1/textbook/toc/download" + request_path: "{{ textbook_service_prefix }}/v1/toc/download" upstream_url: "{{ learning_service_url }}/v1/textbook/toc/download" strip_request_path: true plugins: From 84846af93aa054419c6f436063aaf5501d6aa280 Mon Sep 17 00:00:00 2001 From: Manzarul Date: Thu, 29 Nov 2018 16:48:59 +0530 Subject: [PATCH 0368/1345] Issues #SB-00 fix: changes for upload data size from 1 MB to 10 MB --- ansible/roles/kong-api/defaults/main.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ansible/roles/kong-api/defaults/main.yml b/ansible/roles/kong-api/defaults/main.yml index 1cc5363f3e..f5992b312e 100644 --- a/ansible/roles/kong-api/defaults/main.yml +++ b/ansible/roles/kong-api/defaults/main.yml @@ -1258,7 +1258,7 @@ kong_apis: config.hour: "{{ medium_rate_limit_per_hour }}" config.limit_by: credential - name: request-size-limiting - config.allowed_payload_size: "{{ small_request_size_limit }}" + config.allowed_payload_size: "{{ medium_request_size_limit }}" - name: orgBulkUpload request_path: "{{ org_service_prefix }}/v1/upload" upstream_url: "{{ learning_service_url }}/v1/org/upload" @@ -1274,7 +1274,7 @@ kong_apis: config.hour: "{{ medium_rate_limit_per_hour }}" config.limit_by: credential - name: request-size-limiting - config.allowed_payload_size: "{{ small_request_size_limit }}" + config.allowed_payload_size: "{{ medium_request_size_limit }}" - name: checkUploadJobStatus request_path: "{{ data_service_prefix }}/v1/upload/status" upstream_url: "{{ learning_service_url }}/v1/upload/status" From 2f8adbaab175b6074badfe1d5b64fb6786aa2dd9 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Thu, 29 Nov 2018 22:23:08 +0530 Subject: [PATCH 0369/1345] Install wrapper, specific tag builds, build flow changes (#271) * feat: SB-9240 build flow changes, specific tags, install wrapper --- .circleci/config.yml | 109 +++++++--------- test/ci/checkout_release.sh | 31 ----- test/ci/launch_vm.sh | 16 --- test/ci/release_to_build | 1 - test/ci/run_install_script.sh | 15 --- test/ci/run_upgrade_script.sh | 17 --- test/ci/update_config.sh | 59 --------- .../ci/backup_dbs-1.11.sh | 56 +++++--- tests/ci/build_info | 0 .../ci/install_sunbird-1.10.sh | 66 ++-------- tests/ci/install_sunbird-1.11.sh | 84 ++++++++++++ tests/ci/install_sunbird-1.12.sh | 84 ++++++++++++ tests/ci/install_wrapper.sh | 120 ++++++++++++++++++ {test => tests}/ci/remove_vm.sh | 7 +- tests/ci/run_installer.sh | 19 +++ {test => tests}/ci/send_email.py | 30 +++-- tests/ci/setup_env.sh | 65 ++++++++++ .../ci/upgrade_sunbird-1.11.sh | 114 +++++++---------- {test => tests}/playbook_check.sh | 0 19 files changed, 530 insertions(+), 363 deletions(-) delete mode 100755 test/ci/checkout_release.sh delete mode 100755 test/ci/launch_vm.sh delete mode 100644 test/ci/release_to_build delete mode 100755 test/ci/run_install_script.sh delete mode 100755 test/ci/run_upgrade_script.sh delete mode 100755 test/ci/update_config.sh rename test/ci/backup_dbs.sh => tests/ci/backup_dbs-1.11.sh (78%) create mode 100644 tests/ci/build_info rename test/ci/install_sb.sh => tests/ci/install_sunbird-1.10.sh (60%) create mode 100755 tests/ci/install_sunbird-1.11.sh create mode 100755 tests/ci/install_sunbird-1.12.sh create mode 100755 tests/ci/install_wrapper.sh rename {test => tests}/ci/remove_vm.sh (54%) create mode 100755 tests/ci/run_installer.sh rename {test => tests}/ci/send_email.py (81%) create mode 100755 tests/ci/setup_env.sh rename test/ci/upgrade_sb.sh => tests/ci/upgrade_sunbird-1.11.sh (50%) rename {test => tests}/playbook_check.sh (100%) diff --git a/.circleci/config.yml b/.circleci/config.yml index 5bf1de1390..3c3e46eebb 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -1,76 +1,53 @@ --- -version: 2 +version: 2.1 + jobs: - previous-stable: - docker: &dock-img + install: + parameters: + release: + description: "Release version" + type: string + docker: - image: keshavprasad/circle-ci:1.1 steps: - checkout - - run: &branch - name: Checkout Release - command: bash ./test/ci/checkout_release.sh - - run: &launch-vm - name: Launch VM's - command: bash ./test/ci/launch_vm.sh + - run: &export + name: Export Release Version + command: echo 'export release=<< parameters.release >>' >> $BASH_ENV - run: &config - name: Update Config - command: bash ./test/ci/update_config.sh - - run: &install-sb + name: Setup the build environment + command: bash ./tests/ci/setup_env.sh + - run: &install name: Install Sunbird - command: bash ./test/ci/run_install_script.sh - - run: - <<: *branch - environment: - addon: upgrade - - run: *config - - run: - name: Upgrade Sunbird - command: bash ./test/ci/run_upgrade_script.sh - - run: &remove-vm + command: bash ./tests/ci/run_installer.sh + - run: &remove name: Remove VM's - command: bash ./test/ci/remove_vm.sh - - current-stable: - docker: *dock-img - steps: - - checkout - - run: *branch - - run: *launch-vm - - run: *config - - run: *install-sb - - run: *remove-vm - - current-dev-branch: - docker: *dock-img - steps: - - checkout - - run: *branch - - run: *launch-vm - - run: *config - - run: *install-sb - - run: *remove-vm - - playbook-check: - docker: *dock-img - steps: - - checkout - - run: - name: check ansible playbooks syntax - command: bash ./test/playbook_check.sh + command: bash ./tests/ci/remove_vm.sh workflows: - version: 2 - nightly: - triggers: - - schedule: - cron: "0 17 1,5,9,13,17,21,25,29 * *" - filters: - branches: - only: - - master - jobs: - - previous-stable - - current-stable - - current-dev-branch -# - playbook-check - + version: 2.1 + nightly: + triggers: + - schedule: + cron: "0 17 1,5,9,13,17,21,25,29 * *" + filters: + branches: + only: + - master + - /release-.*/ + jobs: + - install: + release: release-1.10.2 + filters: + branches: + only: master + - install: + release: release-1.11.1 + filters: + branches: + only: master + - install: + release: release-1.12 + filters: + branches: + only: release-1.12 diff --git a/test/ci/checkout_release.sh b/test/ci/checkout_release.sh deleted file mode 100755 index da8f925ac2..0000000000 --- a/test/ci/checkout_release.sh +++ /dev/null @@ -1,31 +0,0 @@ -#!/bin/bash - -if [[ $CIRCLE_JOB == "previous-stable" && $addon == "upgrade" ]]; then - RELEASE=tags/$(git tag | grep "release-[0-9].*[0-9]$" | sort -V -r | awk -F "." '!($2 in a){i++; a[$2]} (i==1){print $0}' | head -1) -elif [[ $CIRCLE_JOB == "previous-stable" ]]; then - RELEASE=tags/$(git tag | grep "release-[0-9].*[0-9]$" | sort -V -r | awk -F "." '!($2 in a){i++; a[$2]} (i==2){print $0}' | head -1) -elif [[ $CIRCLE_JOB == "current-stable" ]]; then - RELEASE=tags/$(git tag | grep "release-[0-9].*[0-9]$" | sort -V -r | awk -F "." '!($2 in a){i++; a[$2]} (i==1){print $0}' | head -1) -elif [[ $CIRCLE_JOB == "current-dev-branch" ]]; then - RELEASE=$(git branch -a | grep "release-[0-9].*[0-9]$" | sed 's#.*/.*/##g' | tr -d ' ' | sort -V -r | awk -F "." '!($2 in a){i++; a[$2]} (i==1){print $0}' | head -1) -fi - -cp -r test .circleci ./deploy/config.yml.sample /tmp -IFS="/" read -r var1 var2 <<< $RELEASE -if [[ $var1 == "tags" ]]; then - git checkout $release -b $var2 --force - echo -e "Checkout $var2" -else - git checkout -b $var1 origin/$var1 --force - echo -e "Checkout $var1" -fi - -if ! [[ -f ./deploy/config.yml.sample ]]; then - cp /tmp/config.yml.sample ./deploy -fi - -cp -r /tmp/test /tmp/.circleci . - -release_to_build=./test/ci/release_to_build -echo $RELEASE > $release_to_build -echo $CIRCLE_BUILD_URL >> $release_to_build diff --git a/test/ci/launch_vm.sh b/test/ci/launch_vm.sh deleted file mode 100755 index 96fac1c33c..0000000000 --- a/test/ci/launch_vm.sh +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/bash - -aws --version -aws configure set aws_access_key_id $keyid -aws configure set aws_secret_access_key $key -aws configure set region ap-south-1 -aws configure set output text -echo -e "aws cli configured.." - - -aws ec2 run-instances --image-id ami-0c510557369b14896 --instance-type t2.large --key-name adoption-keshav --subnet-id subnet-0241076a --tag-specifications "ResourceType=instance,Tags=[{Key=Name,Value=circle-app-$CIRCLE_BUILD_NUM}]" 1> /dev/null -aws ec2 run-instances --image-id ami-0c510557369b14896 --instance-type t2.large --key-name adoption-keshav --subnet-id subnet-0241076a --tag-specifications "ResourceType=instance,Tags=[{Key=Name,Value=circle-db-$CIRCLE_BUILD_NUM}]" 1> /dev/null -echo -e "Waiting for servers to launch..." -sleep 180 - - diff --git a/test/ci/release_to_build b/test/ci/release_to_build deleted file mode 100644 index 8b13789179..0000000000 --- a/test/ci/release_to_build +++ /dev/null @@ -1 +0,0 @@ - diff --git a/test/ci/run_install_script.sh b/test/ci/run_install_script.sh deleted file mode 100755 index faade4a98b..0000000000 --- a/test/ci/run_install_script.sh +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/bash -config_file=./deploy/config.yml.sample -install_script=./test/ci/install_sb.sh -release_to_build=./test/ci/release_to_build -email_script=./test/ci/send_email.py -app_ip=$(awk '/dns_name:/{ if ($2 !~ /#.*/) {print $2}}' $config_file) -user_name=$(awk '/ssh_ansible_user:/{if ($2 !~ /#.*/) {print $2}}' $config_file) -printf "%s$private_key" > sunbird.pem -chmod 600 sunbird.pem -scp -i sunbird.pem -o StrictHostKeyChecking=no $config_file sunbird.pem $install_script $release_to_build $email_script $user_name@$app_ip:/tmp -ssh -i sunbird.pem -o StrictHostKeyChecking=no $user_name@$app_ip "/tmp/install_sb.sh" -if [[ $? -ne 0 ]]; then - echo -e "\nSunbird installation for $RELEASE failed - Please inspect the server - Instance not removed!" - exit 1 -fi diff --git a/test/ci/run_upgrade_script.sh b/test/ci/run_upgrade_script.sh deleted file mode 100755 index 86dc361ad9..0000000000 --- a/test/ci/run_upgrade_script.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/bash -config_file=./deploy/config.yml.sample -backup_script=./test/ci/backup_dbs.sh -upgrade_script=./test/ci/upgrade_sb.sh -release_to_build=./test/ci/release_to_build -app_ip=$(awk '/dns_name:/{ if ($2 !~ /#.*/) {print $2}}' $config_file) -user_name=$(awk '/ssh_ansible_user:/{if ($2 !~ /#.*/) {print $2}}' $config_file) -printf "%s$private_key" > sunbird.pem -chmod 600 sunbird.pem -scp -i sunbird.pem -o StrictHostKeyChecking=no $config_file sunbird.pem $backup_script $upgrade_script $release_to_build $user_name@$app_ip:/tmp -ssh -i sunbird.pem -o StrictHostKeyChecking=no $user_name@$app_ip "/tmp/upgrade_sb.sh" - -if [[ $? -ne 0 ]]; then - echo -e "\nSunbird upgrade to $RELEASE failed - Please inspect the server - Instance not removed!" - exit 1 -fi - diff --git a/test/ci/update_config.sh b/test/ci/update_config.sh deleted file mode 100755 index 8ab043fd8d..0000000000 --- a/test/ci/update_config.sh +++ /dev/null @@ -1,59 +0,0 @@ -#!/bin/bash - -config_file=./deploy/config.yml.sample -email_file=./test/ci/send_email.py - -aws_app_instance=$(aws ec2 describe-instances --filters "Name=instance-state-name,Values=running" "Name=tag:Name,Values=circle-app-$CIRCLE_BUILD_NUM" --query "Reservations[*].Instances[*].{PrivateIP: PrivateIpAddress, PublicIP: PublicIpAddress, InstanceId: InstanceId}") -app_instance_id=$(echo -e $aws_app_instance | awk '{print $1}') -app_private_ip=$(echo -e $aws_app_instance | awk '{print $2}') -app_public_ip=$(echo -e $aws_app_instance | awk '{print $3}') - -aws_db_instance=$(aws ec2 describe-instances --filters "Name=instance-state-name,Values=running" "Name=tag:Name,Values=circle-db-$CIRCLE_BUILD_NUM" --query "Reservations[*].Instances[*].{PrivateIP: PrivateIpAddress, PublicIP: PublicIpAddress, InstanceId: InstanceId}") -db_instance_id=$(echo -e $aws_db_instance | awk '{print $1}') -db_private_ip=$(echo -e $aws_db_instance | awk '{print $2}') -db_public_ip=$(echo -e $aws_db_instance | awk '{print $3}') - -echo -e "Application server details:" -echo -e "Instance ID: $app_instance_id\nPrivate IP: $app_private_ip\nPublic IP: $app_public_ip" -echo -e "\nDatabase server details" -echo -e "Instance ID: $db_instance_id\nPrivate IP: $db_private_ip\nPublic IP: $db_public_ip" - -sed -i "s|application_host:.*#|application_host: $app_private_ip #|g" $config_file -sed -i "s|dns_name:.*#|dns_name: $app_public_ip #|g" $config_file -sed -i "s|database_host:.*#|database_host: $db_private_ip #|g" $config_file -sed -i "s|env:.*#|env: $env #|g" $config_file -sed -i "s|implementation_name:.*#|implementation_name: $implementation_name #|g" $config_file -sed -i "s|ssh_ansible_user:.*#|ssh_ansible_user: $ssh_ansible_user #|g" $config_file -sed -i "s|ansible_private_key_path:.*#|ansible_private_key_path: $ansible_private_key_path #|g" $config_file -sed -i "s|app_address_space:.*#|app_address_space: $app_address_space #|g" $config_file -sed -i "s|proto:.*#|proto: $proto #|g" $config_file -sed -i "s|database_password:.*#|database_password: $database_password #|g" $config_file -sed -i "s|keycloak_admin_password:.*#|keycloak_admin_password: $keycloak_admin_password #|g" $config_file -sed -i "s|sso_password:.*#|sso_password: $sso_password #|g" $config_file -sed -i "s|trampoline_secret:.*#|trampoline_secret: $trampoline_secret #|g" $config_file -sed -i "s|backup_storage_key:.*#|backup_storage_key: $backup_storage_key #|g" $config_file -sed -i "s|badger_admin_password:.*#|badger_admin_password: $badger_admin_password #|g" $config_file -sed -i "s|badger_admin_email:.*#|badger_admin_email: $badger_admin_email #|g" $config_file -sed -i "s|ekstep_api_base_url:.*#|ekstep_api_base_url: https://api-qa.ekstep.in #|g" $config_file -sed -i "s|ekstep_proxy_base_url:.*#|ekstep_proxy_base_url: https://qa.ekstep.in #|g" $config_file -sed -i "s|ekstep_api_key:.*#|ekstep_api_key: $ekstep_api_key #|g" $config_file -sed -i "s|sunbird_image_storage_url:.*#|sunbird_image_storage_url: $sunbird_image_storage_url #|g" $config_file -sed -i "s|sunbird_azure_storage_key:.*#|sunbird_azure_storage_key: $sunbird_azure_storage_key #|g" $config_file -sed -i "s|sunbird_azure_storage_account:.*#|sunbird_azure_storage_account: $sunbird_azure_storage_account #|g" $config_file -sed -i "s|sunbird_custodian_tenant_name:.*#|sunbird_custodian_tenant_name: $sunbird_custodian_tenant_name #|g" $config_file -sed -i "s|sunbird_custodian_tenant_description:.*#|sunbird_custodian_tenant_description: $sunbird_custodian_tenant_description #|g" $config_file -sed -i "s|sunbird_custodian_tenant_channel:.*#|sunbird_custodian_tenant_channel: $sunbird_custodian_tenant_channel #|g" $config_file -sed -i "s|sunbird_root_user_firstname:.*#|sunbird_root_user_firstname: $sunbird_root_user_firstname #|g" $config_file -sed -i "s|sunbird_root_user_lastname:.*#|sunbird_root_user_lastname: $sunbird_root_user_lastname #|g" $config_file -sed -i "s|sunbird_root_user_username:.*#|sunbird_root_user_username: $sunbird_root_user_username #|g" $config_file -sed -i "s|sunbird_root_user_password:.*#|sunbird_root_user_password: $sunbird_root_user_password #|g" $config_file -sed -i "s|sunbird_root_user_email:.*#|sunbird_root_user_email: $sunbird_root_user_email #|g" $config_file -sed -i "s|sunbird_root_user_phone:.*#|sunbird_root_user_phone: $sunbird_root_user_phone #|g" $config_file -sed -i "s|sunbird_default_channel:.*#|sunbird_default_channel: $sunbird_default_channel #|g" $config_file -echo -e "Config file updated..." - -sed -i "s|from_address|$from_address|g" $email_file -sed -i "s|to_address|$to_address|g" $email_file -sed -i "s|email_password|$email_password|g" $email_file -echo -e "Email file updated..." - diff --git a/test/ci/backup_dbs.sh b/tests/ci/backup_dbs-1.11.sh similarity index 78% rename from test/ci/backup_dbs.sh rename to tests/ci/backup_dbs-1.11.sh index 58e5543187..b80dac990f 100755 --- a/test/ci/backup_dbs.sh +++ b/tests/ci/backup_dbs-1.11.sh @@ -1,21 +1,39 @@ #!/bin/bash +getTags(){ + declare -A arr + i=1 + while true + do + tag=$(git tag | grep "release-[0-9].*[0-9]$" | sort -V -r | awk -F "." '!($2 in a){i++; a[$2]} (i=='$i'){print $0}' | head -1) + if [[ $tag != "" ]]; then + arr[$tag]=$i + i=$(expr $i + 1) + else + break + fi + done + index=${arr["$release"]} +} + checkoutRepo(){ -cd /home/$username -git clone https://github.com/project-sunbird/sunbird-devops.git -cd sunbird-devops -IFS="/" read -r var1 var2 <<< $release -if [[ $var1 == "tags" ]]; then - git checkout $release -b $var2 - echo -e "Installing sunbird $var2" | tee -a $backup_log -else - git checkout -b $var1 origin/$var1 - echo -e "Installing sunbird $var1" | tee -a $backup_log -fi -cd deploy + cd /home/$username + sudo rm -rf sunbird-devops + git clone https://github.com/project-sunbird/sunbird-devops.git + cd sunbird-devops + getTags + if [[ $index != "" ]]; then + git checkout tags/$release -b $release + echo -e "Installing sunbird on tags $release" | tee $wrapper_log + else + git checkout -b $release origin/$release + echo -e "Installing sunbird on branch $release" | tee -a $wrappper_log + fi + cd deploy } cassandraBackup(){ +echo "Starting cassandra backup" | tee -a $backup_log python cassandra_backup.py | tee -a $backup_log if [[ -f cassandra_backup-$(date +%Y-%m-%d).tar.gz ]] && [[ -s cassandra_backup-$(date +%Y-%m-%d).tar.gz ]] ; then echo "Cassandra backup successful" | tee -a $backup_log @@ -26,6 +44,7 @@ fi } postgresBackup(){ +echo "Starting postgres backup" | tee -a $backup_log bash backup_postgres.sh | tee -a $backup_log postgres_backup_file=$(ls /tmp/postgresql-backup/) if [[ -f /tmp/postgresql-backup/$postgres_backup_file ]] && [[ -s /tmp/postgresql-backup/$postgres_backup_file ]]; then @@ -37,6 +56,7 @@ fi } elasticsearchBackup(){ +echo "Staring elasticsearch backup" | tee -a $backup_log flag=0 snapshot_name="null" sudo apt install -y jq @@ -66,12 +86,11 @@ fi } restoreCassandra(){ +echo "Staring cassandra restore" | tee -a $backup_log arr=($(cqlsh -e "describe keyspaces")) count=${#arr[@]} cqlsh -e "drop keyspace dialcodes" cqlsh -e "drop keyspace portal" -#cqlsh -e "drop keyspace qmzbm_form_service" -#cqlsh -e "drop keyspace rvepo_framework" cqlsh -e "drop keyspace sunbird" cqlsh -e "drop keyspace sunbirdplugin" tar -xvzf cassandra_backup-$(date +%Y-%m-%d).tar.gz | tee -a $backup_log @@ -87,6 +106,7 @@ fi } restorePostgres(){ +echo "Starting postgres restore" | tee -a $backup_log db_count=$(sudo -u postgres psql -c "SELECT count(datname) FROM pg_database" | sed -n 3p | tr -d " ") sudo -u postgres psql -c "update pg_database set datallowconn = false where datname in ('badger', 'keycloak', 'api_manager', 'quartz')" sudo -u postgres psql -c "SELECT pg_terminate_backend(pg_stat_activity.pid) FROM pg_stat_activity where pid <> pg_backend_pid()" @@ -105,6 +125,7 @@ fi } restoreElasticsearch(){ +echo "Starting elasticsearch restore" | tee -a $backup_log snapshot_name=$(sudo cat /etc/elasticsearch/backup/index-0 | jq -r ".snapshots[0].name") indices=$(curl -s -X GET http://$hostip:9200/_cat/indices?v | awk 'NR>1{print $3}' | sort | tr -d "\n") sudo systemctl restart es-1_elasticsearch.service @@ -119,10 +140,9 @@ else fi } -config_file=/tmp/config.yml.sample -release=$(cat /tmp/release_to_build | head -1) -username=$(awk '/ssh_ansible_user:/{ if ($2 !~ /#.*/) {print $2}}' $config_file) -backup_log=/tmp/backup_log.txt +release=$1 +username=$2 +backup_log=/tmp/backuplog.txt hostip=$(hostname -i) checkoutRepo diff --git a/tests/ci/build_info b/tests/ci/build_info new file mode 100644 index 0000000000..e69de29bb2 diff --git a/test/ci/install_sb.sh b/tests/ci/install_sunbird-1.10.sh similarity index 60% rename from test/ci/install_sb.sh rename to tests/ci/install_sunbird-1.10.sh index c78e963d9a..8beaf1af47 100755 --- a/test/ci/install_sb.sh +++ b/tests/ci/install_sunbird-1.10.sh @@ -1,37 +1,7 @@ #!/bin/bash -copyPem(){ - mkdir /home/$username/.ssh 2> /dev/null - cp /tmp/sunbird.pem /home/$username/.ssh -} - -checkoutRepo(){ - cd /home/$username - git clone https://github.com/project-sunbird/sunbird-devops.git - cd sunbird-devops - IFS="/" read -r var1 var2 <<< $release - if [[ $var1 == "tags" ]]; then - git checkout $release -b $var2 - echo -e "Installing sunbird $var2" | tee -a $installer_log - else - git checkout -b $var1 origin/$var1 - echo -e "Installing sunbird $var1" | tee -a $installer_log - fi - cd deploy -} - -copyConfig(){ - if [[ -f config ]]; then - cp $config_file config - config_file=config - else - cp $config_file config.yml - config_file=config.yml - fi -} - installSunbird(){ - echo -e "Starting installation..." | tee -a $installer_log + echo -e "Starting installation..." | tee $installer_log bash sunbird_install.sh } @@ -54,35 +24,26 @@ postTest(){ bash sunbird_install.sh -s posttest } -archiveLogs(){ - sudo apt install -y zip +copyLogs(){ + mkdir logs 2> /dev/null cp $installer_log logs - zip -r /tmp/serverlogs.zip logs -} - -sendEmail(){ - python /tmp/send_email.py } postResult(){ - echo "failed" >> /tmp/release_to_build - echo "Release $release build failed" >> /tmp/release_to_build - archiveLogs - sendEmail + copyLogs + echo "status: Failed" >> $build_info + echo "subject: $release build failed" >> $build_info exit 1 } -config_file=/tmp/config.yml.sample -release=$(cat /tmp/release_to_build | head -1) -username=$(awk '/ssh_ansible_user:/{ if ($2 !~ /#.*/) {print $2}}' $config_file) +config_file=$1 +release=$2 +build_info=$3 dns_name=$(awk '/dns_name:/{ if ($2 !~ /#.*/) {print $2}}' $config_file) keycloak_pass=$(awk '/keycloak_admin_password:/{ if ($2 !~ /#.*/) {print $2}}' $config_file) sso_pass=$(awk '/sso_password:/{ if ($2 !~ /#.*/) {print $2}}' $config_file) -installer_log=/tmp/installerLog.txt +installer_log=/tmp/installerlog.txt -copyPem -checkoutRepo -copyConfig installSunbird if [[ $? -ne 0 ]]; then @@ -113,11 +74,10 @@ else fi if [[ $? -eq 0 ]]; then + copyLogs echo -e "Sunbird installation complete" | tee -a $installer_log - echo "success" >> /tmp/release_to_build - echo "Release $release build succeeded" >> /tmp/release_to_build - archiveLogs - sendEmail + echo "status: Success" >> $build_info + echo "subject: $release build succeeded" >> $build_info else echo -e "Sunbird installation failed - Error occured duing postTest" | tee -a $installer_log postResult diff --git a/tests/ci/install_sunbird-1.11.sh b/tests/ci/install_sunbird-1.11.sh new file mode 100755 index 0000000000..8beaf1af47 --- /dev/null +++ b/tests/ci/install_sunbird-1.11.sh @@ -0,0 +1,84 @@ +#!/bin/bash + +installSunbird(){ + echo -e "Starting installation..." | tee $installer_log + bash sunbird_install.sh +} + +updateSSO(){ + access_token=$(curl -s -X POST http://$dns_name/auth/realms/master/protocol/openid-connect/token -H "cache-control: no-cache" -H "content-type: application/x-www-form-urlencoded" -d "client_id=admin-cli&username=admin&password=$keycloak_pass&grant_type=password" | jq -r ".access_token") + public_key=$(curl -s -X GET http://$dns_name/auth/admin/realms/sunbird/keys -H "Authorization: Bearer $access_token" -H "Cache-Control: no-cache" -H "Content-Type: application/json" | jq -r ".keys[0].publicKey") + sed -i "s|sunbird_sso_publickey:.*#|sunbird_sso_publickey: $public_key #|g" $config_file +} + +coreInstall(){ + echo -e "Sunbird installation complete - Starting core installation..." | tee -a $installer_log + bash sunbird_install.sh -s core +} + +systemInit(){ + bash sunbird_install.sh -s systeminit +} + +postTest(){ + bash sunbird_install.sh -s posttest +} + +copyLogs(){ + mkdir logs 2> /dev/null + cp $installer_log logs +} + +postResult(){ + copyLogs + echo "status: Failed" >> $build_info + echo "subject: $release build failed" >> $build_info + exit 1 +} + +config_file=$1 +release=$2 +build_info=$3 +dns_name=$(awk '/dns_name:/{ if ($2 !~ /#.*/) {print $2}}' $config_file) +keycloak_pass=$(awk '/keycloak_admin_password:/{ if ($2 !~ /#.*/) {print $2}}' $config_file) +sso_pass=$(awk '/sso_password:/{ if ($2 !~ /#.*/) {print $2}}' $config_file) +installer_log=/tmp/installerlog.txt + +installSunbird + +if [[ $? -ne 0 ]]; then + echo -e "Installation failed - Retrying..." | tee -a $installer_log + installSunbird +fi + +if [[ $? -eq 0 ]]; then + updateSSO + coreInstall +else + echo -e "Sunbird installation failed - Error occured during installation" | tee -a $installer_log + postResult +fi + +if [[ $? -eq 0 ]]; then + systemInit +else + echo -e "Sunbird installation failed - Error occured during core installation" | tee -a $installer_log + postResult +fi + +if [[ $? -eq 0 ]]; then + postTest +else + echo -e "Sunbird installation failed - Error occured during system initialization" | tee -a $installer_log + postResult +fi + +if [[ $? -eq 0 ]]; then + copyLogs + echo -e "Sunbird installation complete" | tee -a $installer_log + echo "status: Success" >> $build_info + echo "subject: $release build succeeded" >> $build_info +else + echo -e "Sunbird installation failed - Error occured duing postTest" | tee -a $installer_log + postResult +fi diff --git a/tests/ci/install_sunbird-1.12.sh b/tests/ci/install_sunbird-1.12.sh new file mode 100755 index 0000000000..8beaf1af47 --- /dev/null +++ b/tests/ci/install_sunbird-1.12.sh @@ -0,0 +1,84 @@ +#!/bin/bash + +installSunbird(){ + echo -e "Starting installation..." | tee $installer_log + bash sunbird_install.sh +} + +updateSSO(){ + access_token=$(curl -s -X POST http://$dns_name/auth/realms/master/protocol/openid-connect/token -H "cache-control: no-cache" -H "content-type: application/x-www-form-urlencoded" -d "client_id=admin-cli&username=admin&password=$keycloak_pass&grant_type=password" | jq -r ".access_token") + public_key=$(curl -s -X GET http://$dns_name/auth/admin/realms/sunbird/keys -H "Authorization: Bearer $access_token" -H "Cache-Control: no-cache" -H "Content-Type: application/json" | jq -r ".keys[0].publicKey") + sed -i "s|sunbird_sso_publickey:.*#|sunbird_sso_publickey: $public_key #|g" $config_file +} + +coreInstall(){ + echo -e "Sunbird installation complete - Starting core installation..." | tee -a $installer_log + bash sunbird_install.sh -s core +} + +systemInit(){ + bash sunbird_install.sh -s systeminit +} + +postTest(){ + bash sunbird_install.sh -s posttest +} + +copyLogs(){ + mkdir logs 2> /dev/null + cp $installer_log logs +} + +postResult(){ + copyLogs + echo "status: Failed" >> $build_info + echo "subject: $release build failed" >> $build_info + exit 1 +} + +config_file=$1 +release=$2 +build_info=$3 +dns_name=$(awk '/dns_name:/{ if ($2 !~ /#.*/) {print $2}}' $config_file) +keycloak_pass=$(awk '/keycloak_admin_password:/{ if ($2 !~ /#.*/) {print $2}}' $config_file) +sso_pass=$(awk '/sso_password:/{ if ($2 !~ /#.*/) {print $2}}' $config_file) +installer_log=/tmp/installerlog.txt + +installSunbird + +if [[ $? -ne 0 ]]; then + echo -e "Installation failed - Retrying..." | tee -a $installer_log + installSunbird +fi + +if [[ $? -eq 0 ]]; then + updateSSO + coreInstall +else + echo -e "Sunbird installation failed - Error occured during installation" | tee -a $installer_log + postResult +fi + +if [[ $? -eq 0 ]]; then + systemInit +else + echo -e "Sunbird installation failed - Error occured during core installation" | tee -a $installer_log + postResult +fi + +if [[ $? -eq 0 ]]; then + postTest +else + echo -e "Sunbird installation failed - Error occured during system initialization" | tee -a $installer_log + postResult +fi + +if [[ $? -eq 0 ]]; then + copyLogs + echo -e "Sunbird installation complete" | tee -a $installer_log + echo "status: Success" >> $build_info + echo "subject: $release build succeeded" >> $build_info +else + echo -e "Sunbird installation failed - Error occured duing postTest" | tee -a $installer_log + postResult +fi diff --git a/tests/ci/install_wrapper.sh b/tests/ci/install_wrapper.sh new file mode 100755 index 0000000000..befab36392 --- /dev/null +++ b/tests/ci/install_wrapper.sh @@ -0,0 +1,120 @@ +#!/bin/bash + +copyPem(){ + mkdir /home/$username/.ssh 2> /dev/null + cp /tmp/sunbird.pem /home/$username/.ssh +} + +checkoutRepo(){ + cd /home/$username + sudo rm -rf sunbird-devops + git clone https://github.com/project-sunbird/sunbird-devops.git + cd sunbird-devops + getTags + if [[ $index != "" ]]; then + git checkout tags/$release -b $release + echo -e "Installing sunbird on tags $release" | tee $wrapper_log + else + git checkout -b $release origin/$release + echo -e "Installing sunbird on branch $release" | tee -a $wrappper_log + fi + cd deploy +} + +updateConfig(){ + if [[ -f config ]]; then + config_file=config + else + config_file=config.yml + fi + + keys=$(awk '{print $1}' $build_info) + for j in ${keys[@]} + do + value=$(awk '/'^$j'/{ if ($2 !~ /#.*/) {print $2}}' $build_info) + sed -i "s|^$j.*#|$j $value #|g" $config_file + done +} + +getTags(){ + declare -A arr + i=1 + while true + do + tag=$(git tag | grep "release-[0-9].*[0-9]$" | sort -V -r | awk -F "." '!($2 in a){i++; a[$2]} (i=='$i'){print $0}' | head -1) + if [[ $tag != "" ]]; then + arr[$tag]=$i + i=$(expr $i + 1) + else + break + fi + done + index=${arr["$release"]} +} + +checkForUpgrade(){ + if [[ $index -gt 1 ]]; then + i=$(($index - 1)) + previous=$release + release=$(git tag | grep "release-[0-9].*[0-9]$" | sort -V -r | awk -F "." '!($2 in a){i++; a[$2]} (i=='$i'){print $0}' | head -1) + echo "Not latest release. Upgrading from $previous to $release..." | tee -a $wrappper_log + else + echo "Latest release, ignoring upgrade..." | tee -a $wrappper_log + archiveLogs + sendEmail + exit 0 + fi +} + +upgradeSB(){ + version=$(echo $release | awk -F "-" '{print $2}' | awk -F "." '{print $1"."$2}') + checkoutRepo + updateConfig + bash /tmp/tests/ci/upgrade_sunbird-$version.sh $config_file $release $build_info $version $previous + if [[ $? -ne 0 ]]; then + postResult + else + archiveLogs + sendEmail + fi +} + +installSB(){ + bash /tmp/tests/ci/install_sunbird-$version.sh $config_file $release $build_info + if [[ $? -ne 0 ]]; then + postResult + else + checkForUpgrade + upgradeSB + fi +} + +archiveLogs(){ + sudo apt install -y zip + mkdir logs 2> /dev/null + cp $wrapper_log logs + zip -r /tmp/serverlogs.zip logs +} + +sendEmail(){ + python /tmp/tests/ci/send_email.py +} + +postResult(){ + archiveLogs + sendEmail + exit 1 +} + +build_info=/tmp/tests/ci/build_info +email_file=/tmp/tests/ci/send_mail.py +release=$(awk '/release:/{ if ($2 !~ /#.*/) {print $2}}' $build_info) +username=$(awk '/ssh_ansible_user:/{ if ($2 !~ /#.*/) {print $2}}' $build_info) +release=$(awk '/release:/{ if ($2 !~ /#.*/) {print $2}}' $build_info) +version=$(echo $release | awk -F "-" '{print $2}' | awk -F "." '{print $1"."$2}') +wrapper_log=/tmp/wrapperlog.txt + +copyPem +checkoutRepo +updateConfig +installSB diff --git a/test/ci/remove_vm.sh b/tests/ci/remove_vm.sh similarity index 54% rename from test/ci/remove_vm.sh rename to tests/ci/remove_vm.sh index 65d2a60408..63143ca7d3 100755 --- a/test/ci/remove_vm.sh +++ b/tests/ci/remove_vm.sh @@ -1,8 +1,11 @@ #!/bin/bash -aws_app_instance=$(aws ec2 describe-instances --filters "Name=instance-state-name,Values=running" "Name=tag:Name,Values=circle-app-$CIRCLE_BUILD_NUM" --query "Reservations[*].Instances[*].{PrivateIP: PrivateIpAddress, PublicIP: PublicIpAddress, InstanceId: InstanceId}") + +today=$(date +%d-%b-%y-%a) + +aws_app_instance=$(aws ec2 describe-instances --filters "Name=instance-state-name,Values=running" "Name=tag:Name,Values=app-$release-$today" --query "Reservations[*].Instances[*].{PrivateIP: PrivateIpAddress, PublicIP: PublicIpAddress, InstanceId: InstanceId}") app_instance_id=$(echo $aws_app_instance | awk '{print $1}') -aws_db_instance=$(aws ec2 describe-instances --filters "Name=instance-state-name,Values=running" "Name=tag:Name,Values=circle-db-$CIRCLE_BUILD_NUM" --query "Reservations[*].Instances[*].{PrivateIP: PrivateIpAddress, PublicIP: PublicIpAddress, InstanceId: InstanceId}") +aws_db_instance=$(aws ec2 describe-instances --filters "Name=instance-state-name,Values=running" "Name=tag:Name,Values=db-$release-$today" --query "Reservations[*].Instances[*].{PrivateIP: PrivateIpAddress, PublicIP: PublicIpAddress, InstanceId: InstanceId}") db_instance_id=$(echo $aws_db_instance | awk '{print $1}') echo -e "Removing application server: $app_instance_id" diff --git a/tests/ci/run_installer.sh b/tests/ci/run_installer.sh new file mode 100755 index 0000000000..6bfd00c98a --- /dev/null +++ b/tests/ci/run_installer.sh @@ -0,0 +1,19 @@ +#!/bin/bash +build_info=./tests/ci/build_info +app_ip=$(awk '/dns_name:/{ if ($2 !~ /#.*/) {print $2}}' $build_info) +user_name=$(awk '/ssh_ansible_user:/{if ($2 !~ /#.*/) {print $2}}' $build_info) +echo "release: $release" >> $build_info +if [[ $TRAVIS_BUILD_WEB_URL != "" ]]; then + echo "build_url: $TRAVIS_BUILD_WEB_URL" >> $build_info +elif [[ $CIRCLE_BUILD_URL != "" ]]; then + echo "build_url: $CIRCLE_BUILD_URL" >> $build_info +fi +printf "%s$private_key" > sunbird.pem +chmod 600 sunbird.pem +scp -i sunbird.pem -o StrictHostKeyChecking=no -r tests sunbird.pem $user_name@$app_ip:/tmp +ssh -i sunbird.pem -o StrictHostKeyChecking=no $user_name@$app_ip "/tmp/tests/ci/install_wrapper.sh" + +if [[ $? -ne 0 ]]; then + echo -e "\nSunbird installation for $release failed - Please inspect the server - Instance not removed!" + exit 1 +fi diff --git a/test/ci/send_email.py b/tests/ci/send_email.py similarity index 81% rename from test/ci/send_email.py rename to tests/ci/send_email.py index 7d0877ca34..ad647a77d7 100755 --- a/test/ci/send_email.py +++ b/tests/ci/send_email.py @@ -7,27 +7,29 @@ from email import encoders from os import path -fromaddr = "from_address" -toaddr = [to_address] +arr = {} +with open("/tmp/tests/ci/build_info") as f: + for line in f: + name, value = line.partition(":")[::2] + arr[name.strip()] = value + +fromaddr = arr["from_address"].strip() +toaddr = arr["to_address"].strip().split(",") +release = arr["release"].strip() +build_url = arr["build_url"].strip() +status = arr["status"].strip() +subject = arr["subject"].strip() +password = arr["email_password"].strip() s = smtplib.SMTP('smtp.gmail.com', 587) s.starttls() -s.login(fromaddr, "email_password") - -content = "/tmp/release_to_build" -f = open(content) -release = f.readline().rstrip() -jobUrl = f.readline().rstrip() -buildStatus = f.readline().rstrip() -subMessage = f.readline().rstrip() -f.close() +s.login(fromaddr, password) -if buildStatus == "success": +if status == "Success": bgcolor = "#51CA5E" else: bgcolor = "#E33F3A" -subject = "%s" % (subMessage) body = """ @@ -45,7 +47,7 @@

If you do not wish to receive these emails, please click here

If you wish to add someone to receive these notifications, please click here

-""" % (bgcolor, release, buildStatus, jobUrl) +""" % (bgcolor, release, status, build_url) for i in range(len(toaddr)): msg = MIMEMultipart() diff --git a/tests/ci/setup_env.sh b/tests/ci/setup_env.sh new file mode 100755 index 0000000000..2759e0d28c --- /dev/null +++ b/tests/ci/setup_env.sh @@ -0,0 +1,65 @@ +#!/bin/bash + +build_info=./tests/ci/build_info + +aws --version +aws configure set aws_access_key_id $keyid +aws configure set aws_secret_access_key $key +aws configure set region ap-south-1 +aws configure set output text +echo -e "aws cli configured.." + +today=$(date +%d-%b-%y-%a) + +aws ec2 run-instances --image-id ami-0c510557369b14896 --instance-type t2.large --key-name ci-build --subnet-id subnet-0241076a --tag-specifications "ResourceType=instance,Tags=[{Key=Name,Value=app-$release-$today}]" 1> /dev/null +aws ec2 run-instances --image-id ami-0c510557369b14896 --instance-type t2.large --key-name ci-build --subnet-id subnet-0241076a --tag-specifications "ResourceType=instance,Tags=[{Key=Name,Value=db-$release-$today}]" 1> /dev/null +echo -e "Waiting for servers to launch..." +sleep 180 + +aws_app_instance=$(aws ec2 describe-instances --filters "Name=instance-state-name,Values=running" "Name=tag:Name,Values=app-$release-$today" --query "Reservations[*].Instances[*].{PrivateIP: PrivateIpAddress, PublicIP: PublicIpAddress, InstanceId: InstanceId}") +app_instance_id=$(echo -e $aws_app_instance | awk '{print $1}') +app_private_ip=$(echo -e $aws_app_instance | awk '{print $2}') +app_public_ip=$(echo -e $aws_app_instance | awk '{print $3}') + +aws_db_instance=$(aws ec2 describe-instances --filters "Name=instance-state-name,Values=running" "Name=tag:Name,Values=db-$release-$today" --query "Reservations[*].Instances[*].{PrivateIP: PrivateIpAddress, PublicIP: PublicIpAddress, InstanceId: InstanceId}") +db_instance_id=$(echo -e $aws_db_instance | awk '{print $1}') +db_private_ip=$(echo -e $aws_db_instance | awk '{print $2}') +db_public_ip=$(echo -e $aws_db_instance | awk '{print $3}') + +cat > $build_info << EOF +ansible_private_key_path: $ansible_private_key_path +app_address_space: $app_address_space +backup_storage_key: $backup_storage_key +badger_admin_email: $badger_admin_email +badger_admin_password: $badger_admin_password +database_password: $database_password +ekstep_api_base_url: $ekstep_api_base_url +ekstep_api_key: $ekstep_api_key +ekstep_proxy_base_url: $ekstep_proxy_base_url +email_password: $email_password +env: $env +from_address: $from_address +implementation_name: $implementation_name +keycloak_admin_password: $keycloak_admin_password +proto: $proto +ssh_ansible_user: $ssh_ansible_user +sso_password: $sso_password +sunbird_azure_storage_account: $sunbird_azure_storage_account +sunbird_azure_storage_key: $sunbird_azure_storage_key +sunbird_custodian_tenant_channel: $sunbird_custodian_tenant_channel +sunbird_custodian_tenant_description: $sunbird_custodian_tenant_description +sunbird_custodian_tenant_name: $sunbird_custodian_tenant_name +sunbird_default_channel: $sunbird_default_channel +sunbird_image_storage_url: $sunbird_image_storage_url +sunbird_root_user_email: $sunbird_root_user_email +sunbird_root_user_firstname: $sunbird_root_user_firstname +sunbird_root_user_lastname: $sunbird_root_user_lastname +sunbird_root_user_password: $sunbird_root_user_password +sunbird_root_user_phone: $sunbird_root_user_phone +sunbird_root_user_username: $sunbird_root_user_username +to_address: $to_address +trampoline_secret: $trampoline_secret +application_host: $app_private_ip +dns_name: $app_public_ip +database_host: $db_private_ip +EOF diff --git a/test/ci/upgrade_sb.sh b/tests/ci/upgrade_sunbird-1.11.sh similarity index 50% rename from test/ci/upgrade_sb.sh rename to tests/ci/upgrade_sunbird-1.11.sh index 2a6a9b1786..dbbdc1c70c 100755 --- a/test/ci/upgrade_sb.sh +++ b/tests/ci/upgrade_sunbird-1.11.sh @@ -1,34 +1,9 @@ #!/bin/bash backupdbs(){ +cd /home/$username/sunbird-devops/deploy scp -i $ansible_private_key_path -o StrictHostKeyChecking=no $backup_script $release_file $config_file $username@$database_host:/tmp -ssh -i $ansible_private_key_path -o StrictHostKeyChecking=no $username@$database_host "bash /tmp/backup_dbs.sh" -} - -checkoutRepo(){ -cd /home/$username -sudo rm -rf sunbird-devops -git clone https://github.com/project-sunbird/sunbird-devops.git -cd sunbird-devops -IFS="/" read -r var1 var2 <<< $release -if [[ $var1 == "tags" ]]; then - git checkout $release -b $var2 - echo -e "Instlling sunbird $var2" -else - git checkout -b $var1 origin/$var1 - echo -e "Installing sunbird $var1" -fi -cd deploy -} - -copyConfig(){ - if [[ -f config ]]; then - cp $config_file config - config_file=config - else - cp $config_file config.yml - config_file=config.yml - fi +ssh -i $ansible_private_key_path -o StrictHostKeyChecking=no $username@$database_host "bash /tmp/backup_dbs-$version.sh $release $username" } updateSSO(){ @@ -40,7 +15,7 @@ updateSSO(){ upgradeSB(){ ./sunbird_install.sh -s config if [[ $? -ne 0 ]]; then - echo -e "Config file generation failed.." | tee -a $upgrade_log + echo -e "Config file generation failed.." | tee $upgrade_log postResult fi @@ -69,61 +44,57 @@ if [[ $? -ne 0 ]]; then fi } -checkUpgrade(){ -flag=0 -declare -a services=("badger" "content" "kong" "learner" "player" "proxy" "telemetry") -for i in ${services[@]} -do -docker_version=$(sudo docker service ls | awk '/'$i'/{print $5}' | awk -F ":" '{print $2}') -release_version=$(awk -F "=" 'tolower($0) ~ /'$i'/ {print $2}' version.env) - -if [[ $docker_version == $release_version ]]; then - echo -e "\e[0;32m$i service upgraded successfully to $docker_version\e[0;37m" | tee -a $upgrade_log -else - echo -e "\e[0;31m$i service could not be upgraded. Release version is $release_version, but docker version is $docker_version. Please investigate..\e[0;37m" | tee -a $upgrade_log - flag=1 -fi +verifyUpgrade(){ + flag=0 + declare -a services=("badger" "content" "kong" "learner" "player" "proxy" "telemetry") + for i in ${services[@]} + do + docker_version=$(sudo docker service ls | awk '/'$i'/{print $5}' | awk -F ":" '{print $2}') + release_version=$(awk -F "=" 'tolower($0) ~ /'$i'/ {print $2}' version.env) + + if [[ $docker_version == $release_version ]]; then + echo -e "\e[0;32m$i service upgraded successfully to $docker_version\e[0;37m" | tee -a $upgrade_log + else + echo -e "\e[0;31m$i service could not be upgraded. Release version is $release_version, but docker version is $docker_version. Please investigate..\e[0;37m" | tee -a $upgrade_log + flag=1 + fi done } -archiveLogs(){ - sudo apt install -y zip +copyLogs(){ + mkdir logs 2> /dev/null cp $upgrade_log logs - scp -i $ansible_private_key_path -o StrictHostKeyChecking=no $username@$database_host:/tmp/backup_log.txt logs - zip -r /tmp/serverlogs.zip logs + scp -i $ansible_private_key_path -o StrictHostKeyChecking=no $username@$database_host:/tmp/backuplog.txt logs } -sendEmail(){ - python /tmp/send_email.py -} postResult(){ - echo "failed" >> /tmp/release_to_build - echo "Upgrade to release $release failed" >> /tmp/release_to_build - archiveLogs - sendEmail + copyLogs + echo "release: $previous to $release" >> $build_info + echo "status: Failed" >> $build_info + echo "subject: $previous build succeeded, upgrade to $release failed" >> $build_info exit 1 } -config_file=/tmp/config.yml.sample -release_file=/tmp/release_to_build -release=$(cat /tmp/release_to_build | head -1) -username=$(awk '/ssh_ansible_user:/{ if ($2 !~ /#.*/) {print $2}}' $config_file) -ansible_private_key_path=$(awk '/ansible_private_key_path:/{ if ($2 !~ /#.*/) {print $2}}' $config_file) -dns_name=$(awk '/dns_name:/{ if ($2 !~ /#.*/) {print $2}}' $config_file) -database_host=$(awk '/database_host:/{ if ($2 !~ /#.*/) {print $2}}' $config_file) -keycloak_pass=$(awk '/keycloak_admin_password:/{ if ($2 !~ /#.*/) {print $2}}' $config_file) -sso_pass=$(awk '/sso_password:/{ if ($2 !~ /#.*/) {print $2}}' $config_file) -backup_script=/tmp/backup_dbs.sh -upgrade_log=/tmp/upgrade_log.txt +config_file=$1 +release=$2 +build_info=$3 +version=$4 +previous=$5 +username=$(awk '/ssh_ansible_user:/{ if ($2 !~ /#.*/) {print $2}}' $build_info) +ansible_private_key_path=$(awk '/ansible_private_key_path:/{ if ($2 !~ /#.*/) {print $2}}' $build_info) +dns_name=$(awk '/dns_name:/{ if ($2 !~ /#.*/) {print $2}}' $build_info) +database_host=$(awk '/database_host:/{ if ($2 !~ /#.*/) {print $2}}' $build_info) +keycloak_pass=$(awk '/keycloak_admin_password:/{ if ($2 !~ /#.*/) {print $2}}' $build_info) +sso_pass=$(awk '/sso_password:/{ if ($2 !~ /#.*/) {print $2}}' $build_info) +backup_script=/tmp/tests/ci/backup_dbs-$version.sh +upgrade_log=/tmp/upgradelog.txt -checkoutRepo backupdbs if [[ $? -eq 0 ]]; then - copyConfig updateSSO upgradeSB - checkUpgrade + verifyUpgrade else echo -e "Database backup failed. Skipping upgrade.." | tee -a $upgrade_log postResult @@ -133,8 +104,9 @@ if [[ $flag -eq 1 ]]; then echo "Found mismatch in container versions.." | tee -a $upgrade_log postResult else - echo "success" >> /tmp/release_to_build - echo "Upgrade to release $release succeeded" >> /tmp/release_to_build - archiveLogs - sendEmail + copyLogs + echo "Sunbird upgrade successful" | tee -a $upgrade_log + echo "release: $previous to $release" >> $build_info + echo "status: Success" >> $build_info + echo "subject: $previous build succeeded, upgrade to $release succeeded" >> $build_info fi diff --git a/test/playbook_check.sh b/tests/playbook_check.sh similarity index 100% rename from test/playbook_check.sh rename to tests/playbook_check.sh From 758144dac39feb08efe9839dd3358c4db2a46552 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Thu, 29 Nov 2018 22:30:13 +0530 Subject: [PATCH 0370/1345] Install wrapper, specific tag builds, build flow changes (#272) * feat: SB-9240 build flow changes, specific tags, install wrapper, remove older ci files --- .circleci/config.yml | 125 ++++++++-------------- circle-ci/cli_configure.sh | 7 -- circle-ci/copy_script.sh | 15 --- circle-ci/install_sb.sh | 57 ---------- circle-ci/launch_vm.sh | 26 ----- circle-ci/release_to_build | 1 - circle-ci/update_config.sh | 32 ------ tests/ci/backup_dbs-1.11.sh | 154 +++++++++++++++++++++++++++ tests/ci/build_info | 0 tests/ci/install_sunbird-1.10.sh | 84 +++++++++++++++ tests/ci/install_sunbird-1.11.sh | 84 +++++++++++++++ tests/ci/install_sunbird-1.12.sh | 84 +++++++++++++++ tests/ci/install_wrapper.sh | 120 +++++++++++++++++++++ {circle-ci => tests/ci}/remove_vm.sh | 7 +- tests/ci/run_installer.sh | 19 ++++ tests/ci/send_email.py | 68 ++++++++++++ tests/ci/setup_env.sh | 65 +++++++++++ tests/ci/upgrade_sunbird-1.11.sh | 112 +++++++++++++++++++ tests/playbook_check.sh | 5 + 19 files changed, 845 insertions(+), 220 deletions(-) delete mode 100755 circle-ci/cli_configure.sh delete mode 100755 circle-ci/copy_script.sh delete mode 100755 circle-ci/install_sb.sh delete mode 100755 circle-ci/launch_vm.sh delete mode 100644 circle-ci/release_to_build delete mode 100755 circle-ci/update_config.sh create mode 100755 tests/ci/backup_dbs-1.11.sh create mode 100644 tests/ci/build_info create mode 100755 tests/ci/install_sunbird-1.10.sh create mode 100755 tests/ci/install_sunbird-1.11.sh create mode 100755 tests/ci/install_sunbird-1.12.sh create mode 100755 tests/ci/install_wrapper.sh rename {circle-ci => tests/ci}/remove_vm.sh (53%) create mode 100755 tests/ci/run_installer.sh create mode 100755 tests/ci/send_email.py create mode 100755 tests/ci/setup_env.sh create mode 100755 tests/ci/upgrade_sunbird-1.11.sh create mode 100755 tests/playbook_check.sh diff --git a/.circleci/config.yml b/.circleci/config.yml index 91b6015dd6..3c3e46eebb 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -1,88 +1,53 @@ --- -version: 2 +version: 2.1 + jobs: - previous-stable: - docker: &dock-img + install: + parameters: + release: + description: "Release version" + type: string + docker: - image: keshavprasad/circle-ci:1.1 steps: - checkout - - run: - name: check previous stable release - command: | - ver=tags/$(git tag | grep "release" | sort -V -r | sed -n 2p) - echo Running installer for tags/release-1.9 - echo export release=tags/release-1.9 >> $BASH_ENV - source $BASH_ENV - - run: &cli - name: configure cli - command: bash ./circle-ci/cli_configure.sh + - run: &export + name: Export Release Version + command: echo 'export release=<< parameters.release >>' >> $BASH_ENV - run: &config - name: update config - command: bash ./circle-ci/update_config.sh - - run: &launch-vm - name: launch vms - command: bash ./circle-ci/launch_vm.sh - - run: &install-sb - name: install sunbird - command: bash ./circle-ci/copy_script.sh - - run: &remove-vm - name: remove vms - command: bash ./circle-ci/remove_vm.sh - - current-stable: - docker: *dock-img - steps: - - checkout - - run: - name: check current stable release - command: | - ver=tags/$(git tag | grep "release" | sort -V -r | sed -n 1p) - echo Running installer for $ver - echo export release=$ver >> $BASH_ENV - source $BASH_ENV - - run: *cli - - run: *config - - run: *launch-vm - - run: *install-sb - - run: *remove-vm - - current-dev-branch: - docker: *dock-img - steps: - - checkout - - run: - name: check current development branch - command: | - ver=$(git branch -a | grep release-[0-9].[0-9].* | sed -e 's#.*/.*/##g' | sort -V -r -u | sed -n 1p) - echo Running installer for $ver - echo export release=$ver >> $BASH_ENV - source $BASH_ENV - - run: *cli - - run: *config - - run: *launch-vm - - run: *install-sb - - run: *remove-vm - - playbook-check: - docker: *dock-img - steps: - - checkout - - run: - name: check ansible playbooks syntax - command: bash ./test.sh + name: Setup the build environment + command: bash ./tests/ci/setup_env.sh + - run: &install + name: Install Sunbird + command: bash ./tests/ci/run_installer.sh + - run: &remove + name: Remove VM's + command: bash ./tests/ci/remove_vm.sh workflows: - version: 2 - nightly: - triggers: - - schedule: - cron: "0 19 * * *" - filters: - branches: - only: - - master - jobs: - - previous-stable - - current-stable - - current-dev-branch - - playbook-check + version: 2.1 + nightly: + triggers: + - schedule: + cron: "0 17 1,5,9,13,17,21,25,29 * *" + filters: + branches: + only: + - master + - /release-.*/ + jobs: + - install: + release: release-1.10.2 + filters: + branches: + only: master + - install: + release: release-1.11.1 + filters: + branches: + only: master + - install: + release: release-1.12 + filters: + branches: + only: release-1.12 diff --git a/circle-ci/cli_configure.sh b/circle-ci/cli_configure.sh deleted file mode 100755 index 195f799ac7..0000000000 --- a/circle-ci/cli_configure.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/bash -aws --version -aws configure set aws_access_key_id $keyid -aws configure set aws_secret_access_key $key -aws configure set region ap-south-1 -aws configure set output text -echo -e "aws cli configured.." diff --git a/circle-ci/copy_script.sh b/circle-ci/copy_script.sh deleted file mode 100755 index 23a71f6d30..0000000000 --- a/circle-ci/copy_script.sh +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/bash -config_file=./deploy/config -install_script=./circle-ci/install_sb.sh -release_to_build=./circle-ci/release_to_build -app_ip=$(awk '/dns_name:/{ if ($2 !~ /#.*/) {print $2}}' $config_file) -user_name=$(awk '/ssh_ansible_user:/{if ($2 !~ /#.*/) {print $2}}' $config_file) -printf "%s$private_key" > sunbird.pem -chmod 600 sunbird.pem -echo $release > $release_to_build -scp -i sunbird.pem -o StrictHostKeyChecking=no $config_file sunbird.pem $install_script $release_to_build $user_name@$app_ip:/tmp -ssh -i sunbird.pem -o StrictHostKeyChecking=no $user_name@$app_ip "/tmp/install_sb.sh" -if [[ $? -ne 0 ]]; then - echo -e "\nSunbird installation for $release failed - Please inspect the server - Instance not removed!" - exit 1 -fi diff --git a/circle-ci/install_sb.sh b/circle-ci/install_sb.sh deleted file mode 100755 index ebf3331a66..0000000000 --- a/circle-ci/install_sb.sh +++ /dev/null @@ -1,57 +0,0 @@ -#!/bin/bash -release=$(cat /tmp/release_to_build) -username=$(awk '/ssh_ansible_user:/{ if ($2 !~ /#.*/) {print $2}}' /tmp/config) -dns_name=$(awk '/dns_name:/{ if ($2 !~ /#.*/) {print $2}}' /tmp/config) -keycloak_pass=$(awk '/keycloak_admin_password:/{ if ($2 !~ /#.*/) {print $2}}' /tmp/config) -sso_pass=$(awk '/sso_password:/{ if ($2 !~ /#.*/) {print $2}}' /tmp/config) -cd /home/$username -mkdir .ssh 2> /dev/null -cp /tmp/sunbird.pem .ssh -git clone https://github.com/project-sunbird/sunbird-devops.git -cd sunbird-devops - -IFS="/" read -r var1 var2 <<< $release - -if [[ $var1 == "tags" ]]; then - git checkout $release -b $var2 - echo -e "Installing sunbird $var2" -else - git checkout -b $var1 origin/$var1 - echo -e "Installation sunbird $var1" -fi - -cp /tmp/config ./deploy -cd deploy -echo -e "Starting installation..." -./sunbird_install.sh - -if [[ $? -ne 0 ]]; then - echo -e "Installation failed - Retrying..." - ./sunbird_install.sh -fi - -if [[ $? -eq 0 ]]; then - echo -e "Sunbird installation complete - Starting core installation..." - access_token=$(curl -s -X POST http://$dns_name/auth/realms/master/protocol/openid-connect/token -H "cache-control: no-cache" -H "content-type: application/x-www-form-urlencoded" -d "client_id=admin-cli&username=admin&password=$keycloak_pass&grant_type=password" | jq -r ".access_token") - public_key=$(curl -s -X GET http://$dns_name/auth/admin/realms/sunbird/keys -H "Authorization: Bearer $access_token" -H "Cache-Control: no-cache" -H "Content-Type: application/json" | jq -r ".keys[0].publicKey") - sed -i "s|sunbird_sso_publickey:|sunbird_sso_publickey: $public_key|g" config - ./sunbird_install.sh -s core - - if [[ $? -eq 0 ]]; then - jwt_token=$(cat /home/$username/jwt_token_player.txt | tr -d " ") - access_token_user=$(curl -s -X POST http://$dns_name/auth/realms/sunbird/protocol/openid-connect/token -H "cache-control: no-cache" -H "content-type: application/x-www-form-urlencoded" -d "client_id=admin-cli&username=user-manager&password=$sso_pass&grant_type=password" | jq -r ".access_token") - status=$(curl -s -X POST http://$dns_name/api/org/v1/create -H "Cache-Control: no-cache" -H "Content-Type: application/json" -H "accept: application/json" -H "authorization: Bearer $jwt_token" -H "x-authenticated-user-token: $access_token_user" -d '{"request":{"orgName": "circle-ci", "description": "circle-ci", "isRootOrg": true, "channel": "circle-ci"}}' | jq -r ".result.response") - if [[ $status == "SUCCESS" ]]; then - echo -e "Root org created successfully - Running core and posttest..." - ./sunbird_install.sh -s core - ./sunbird_install.sh -s posttest - echo -e "Sunbird installation complete" - else - echo -e "Sunbird installation failed - Unable to create root org" - exit 1 - fi - fi -else - echo -e "Sunbird installation failed - Error occured during installation." - exit 1 -fi diff --git a/circle-ci/launch_vm.sh b/circle-ci/launch_vm.sh deleted file mode 100755 index 16e951d4ec..0000000000 --- a/circle-ci/launch_vm.sh +++ /dev/null @@ -1,26 +0,0 @@ -#!/bin/bash -config_file=./deploy/config -aws ec2 run-instances --image-id ami-0c510557369b14896 --instance-type t2.large --key-name adoption-keshav --subnet-id subnet-0241076a --tag-specifications "ResourceType=instance,Tags=[{Key=Name,Value=circle-app-$CIRCLE_BUILD_NUM-$release}]" 1> /dev/null -aws ec2 run-instances --image-id ami-0c510557369b14896 --instance-type t2.large --key-name adoption-keshav --subnet-id subnet-0241076a --tag-specifications "ResourceType=instance,Tags=[{Key=Name,Value=circle-db-$CIRCLE_BUILD_NUM-$release}]" 1> /dev/null -echo -e "Waiting for servers to launch..." -sleep 150 - -aws_app_instance=$(aws ec2 describe-instances --filters "Name=instance-state-name,Values=running" "Name=tag:Name,Values=circle-app-$CIRCLE_BUILD_NUM-$release" --query "Reservations[*].Instances[*].{PrivateIP: PrivateIpAddress, PublicIP: PublicIpAddress, InstanceId: InstanceId}") -app_instance_id=$(echo -e $aws_app_instance | awk '{print $1}') -app_private_ip=$(echo -e $aws_app_instance | awk '{print $2}') -app_public_ip=$(echo -e $aws_app_instance | awk '{print $3}') - -aws_db_instance=$(aws ec2 describe-instances --filters "Name=instance-state-name,Values=running" "Name=tag:Name,Values=circle-db-$CIRCLE_BUILD_NUM-$release" --query "Reservations[*].Instances[*].{PrivateIP: PrivateIpAddress, PublicIP: PublicIpAddress, InstanceId: InstanceId}") -db_instance_id=$(echo -e $aws_db_instance | awk '{print $1}') -db_private_ip=$(echo -e $aws_db_instance | awk '{print $2}') -db_public_ip=$(echo -e $aws_db_instance | awk '{print $3}') - -echo -e "Application server details:" -echo -e "Instance ID: $app_instance_id\nPrivate IP: $app_private_ip\nPublic IP: $app_public_ip" - -echo -e "\nDatabase server details" -echo -e "Instance ID: $db_instance_id\nPrivate IP: $db_private_ip\nPublic IP: $db_public_ip" - -sed -i "s/application_host:/application_host: $app_private_ip/g" $config_file -sed -i "s/dns_name:/dns_name: $app_public_ip/g" $config_file -sed -i "s/database_host:/database_host: $db_private_ip/g" $config_file diff --git a/circle-ci/release_to_build b/circle-ci/release_to_build deleted file mode 100644 index 8b13789179..0000000000 --- a/circle-ci/release_to_build +++ /dev/null @@ -1 +0,0 @@ - diff --git a/circle-ci/update_config.sh b/circle-ci/update_config.sh deleted file mode 100755 index 6b68c3effd..0000000000 --- a/circle-ci/update_config.sh +++ /dev/null @@ -1,32 +0,0 @@ -#!/bin/bash -config_file=./deploy/config -sed -i "s/env:/env: $env/g" $config_file -sed -i "s/implementation_name:/implementation_name: $implementation_name/g" $config_file -sed -i "s/ssh_ansible_user:/ssh_ansible_user: $ssh_ansible_user/g" $config_file -sed -i "s#ansible_private_key_path:#ansible_private_key_path: $ansible_private_key_path#g" $config_file -sed -i "s#app_address_space:#app_address_space: $app_address_space#g" $config_file -sed -i "s/proto:/proto: $proto/g" $config_file -sed -i "s/database_password:/database_password: $database_password/g" $config_file -sed -i "s/keycloak_admin_password:/keycloak_admin_password: $keycloak_admin_password/g" $config_file -sed -i "s/sso_password:/sso_password: $sso_password/g" $config_file -sed -i "s/trampoline_secret:/trampoline_secret: $trampoline_secret/g" $config_file -sed -i "s/backup_storage_key:/backup_storage_key: $backup_storage_key/g" $config_file -sed -i "s/badger_admin_password:/badger_admin_password: $badger_admin_password/g" $config_file -sed -i "s/badger_admin_email:/badger_admin_email: $badger_admin_email/g" $config_file -sed -i "s?ekstep_api_base_url:.*#?ekstep_api_base_url: https://api-qa.ekstep.in # ?g" $config_file -sed -i "s?ekstep_proxy_base_url:.*#?ekstep_proxy_base_url: https://qa.ekstep.in # ?g" $config_file -sed -i "s#ekstep_api_key:#ekstep_api_key: $ekstep_api_key#g" $config_file -sed -i "s#sunbird_image_storage_url:#sunbird_image_storage_url: $sunbird_image_storage_url#g" $config_file -sed -i "s#sunbird_azure_storage_key:#sunbird_azure_storage_key: $sunbird_azure_storage_key#g" $config_file -sed -i "s/sunbird_azure_storage_account:/sunbird_azure_storage_account: $sunbird_azure_storage_account/g" $config_file -sed -i "s/sunbird_custodian_tenant_name:/sunbird_custodian_tenant_name: $sunbird_custodian_tenant_name/g" $config_file -sed -i "s/sunbird_custodian_tenant_description:/sunbird_custodian_tenant_description: $sunbird_custodian_tenant_description/g" $config_file -sed -i "s/sunbird_custodian_tenant_channel:/sunbird_custodian_tenant_channel: $sunbird_custodian_tenant_channel/g" $config_file -sed -i "s/sunbird_root_user_firstname:/sunbird_root_user_firstname: $sunbird_root_user_firstname/g" $config_file -sed -i "s/sunbird_root_user_lastname:/sunbird_root_user_lastname: $sunbird_root_user_lastname/g" $config_file -sed -i "s/sunbird_root_user_username:/sunbird_root_user_username: $sunbird_root_user_username/g" $config_file -sed -i "s/sunbird_root_user_password:/sunbird_root_user_password: $sunbird_root_user_password/g" $config_file -sed -i "s/sunbird_root_user_email:/sunbird_root_user_email: $sunbird_root_user_email/g" $config_file -sed -i "s/sunbird_root_user_phone:/sunbird_root_user_phone: $sunbird_root_user_phone/g" $config_file -sed -i "s/sunbird_default_channel:/sunbird_default_channel: $sunbird_default_channel/g" $config_file -echo -e "Config file updated..." diff --git a/tests/ci/backup_dbs-1.11.sh b/tests/ci/backup_dbs-1.11.sh new file mode 100755 index 0000000000..b80dac990f --- /dev/null +++ b/tests/ci/backup_dbs-1.11.sh @@ -0,0 +1,154 @@ +#!/bin/bash + +getTags(){ + declare -A arr + i=1 + while true + do + tag=$(git tag | grep "release-[0-9].*[0-9]$" | sort -V -r | awk -F "." '!($2 in a){i++; a[$2]} (i=='$i'){print $0}' | head -1) + if [[ $tag != "" ]]; then + arr[$tag]=$i + i=$(expr $i + 1) + else + break + fi + done + index=${arr["$release"]} +} + +checkoutRepo(){ + cd /home/$username + sudo rm -rf sunbird-devops + git clone https://github.com/project-sunbird/sunbird-devops.git + cd sunbird-devops + getTags + if [[ $index != "" ]]; then + git checkout tags/$release -b $release + echo -e "Installing sunbird on tags $release" | tee $wrapper_log + else + git checkout -b $release origin/$release + echo -e "Installing sunbird on branch $release" | tee -a $wrappper_log + fi + cd deploy +} + +cassandraBackup(){ +echo "Starting cassandra backup" | tee -a $backup_log +python cassandra_backup.py | tee -a $backup_log +if [[ -f cassandra_backup-$(date +%Y-%m-%d).tar.gz ]] && [[ -s cassandra_backup-$(date +%Y-%m-%d).tar.gz ]] ; then + echo "Cassandra backup successful" | tee -a $backup_log +else + echo "Cassandra backup failed. Exiting..." | tee -a $backup_log + exit 1 +fi +} + +postgresBackup(){ +echo "Starting postgres backup" | tee -a $backup_log +bash backup_postgres.sh | tee -a $backup_log +postgres_backup_file=$(ls /tmp/postgresql-backup/) +if [[ -f /tmp/postgresql-backup/$postgres_backup_file ]] && [[ -s /tmp/postgresql-backup/$postgres_backup_file ]]; then + echo "Postgres backup successful" | tee -a $backup_log +else + echo "Postgres backup failed. Exiting..." | tee -a $backup_log + exit 1 +fi +} + +elasticsearchBackup(){ +echo "Staring elasticsearch backup" | tee -a $backup_log +flag=0 +snapshot_name="null" +sudo apt install -y jq +sudo bash backup_elasticsearch.sh | tee -a $backup_log +if sudo test -f /etc/elasticsearch/backup/index-0 && sudo test -s /etc/elasticsearch/backup/index-0; then + snapshot_name=$(sudo cat /etc/elasticsearch/backup/index-0 | jq -r ".snapshots[0].name") + echo "Elasticsearch backup successful" | tee -a $backup_log + flag=1 +else + echo "Backup not found. Restarting elasticsearch.." | tee -a $backup_log + sudo systemctl restart es-1_elasticsearch.service + sleep 15 + echo "Retrying backup.." | tee -a $backup_log + sudo bash backup_elasticsearch.sh +fi + +if [ $flag -eq 0 ] && sudo test -f /etc/elasticsearch/backup/index-0 && sudo test -s /etc/elasticsearch/backup/index-0; then +snapshot_name=$(sudo cat /etc/elasticsearch/backup/index-0 | jq -r ".snapshots[0].name") +fi + +if [[ $snapshot_name == "null" ]]; then + echo "Elasticsearch backup failed. Exiting..." | tee -a $backup_log + exit 1 +else + echo "Elasticsearch backup successful" | tee -a $backup_log +fi +} + +restoreCassandra(){ +echo "Staring cassandra restore" | tee -a $backup_log +arr=($(cqlsh -e "describe keyspaces")) +count=${#arr[@]} +cqlsh -e "drop keyspace dialcodes" +cqlsh -e "drop keyspace portal" +cqlsh -e "drop keyspace sunbird" +cqlsh -e "drop keyspace sunbirdplugin" +tar -xvzf cassandra_backup-$(date +%Y-%m-%d).tar.gz | tee -a $backup_log +cqlsh -f 'cassandra_backup/db_schema.cql' | tee -a $backup_log +python cassandra_restore.py --host $(hostname -i) cassandra_backup | tee -a $backup_log +arr=($(cqlsh -e "describe keyspaces")) +if [[ $count != ${#arr[@]} ]]; then + echo "Cassandra restore failed. Exiting..." | tee -a $backup_log + exit 1 +else + echo "Cassandra restore successful" | tee -a $backup_log +fi +} + +restorePostgres(){ +echo "Starting postgres restore" | tee -a $backup_log +db_count=$(sudo -u postgres psql -c "SELECT count(datname) FROM pg_database" | sed -n 3p | tr -d " ") +sudo -u postgres psql -c "update pg_database set datallowconn = false where datname in ('badger', 'keycloak', 'api_manager', 'quartz')" +sudo -u postgres psql -c "SELECT pg_terminate_backend(pg_stat_activity.pid) FROM pg_stat_activity where pid <> pg_backend_pid()" +sudo -u postgres psql -c "drop database badger" +sudo -u postgres psql -c "drop database keycloak" +sudo -u postgres psql -c "drop database quartz" +sudo -u postgres psql -c "drop database api_manager" +bash restore_postgres.sh $postgres_backup_file | tee -a $backup_log +new_db_count=$(sudo -u postgres psql -c "SELECT count(datname) FROM pg_database" | sed -n 3p | tr -d " ") +if [[ $db_count -ne $new_db_count ]]; then + echo "Postgres restore failed. Exiting..." | tee -a $backup_log + exit 1 +else + echo "Postgres restore successful" | tee -a $backup_log +fi +} + +restoreElasticsearch(){ +echo "Starting elasticsearch restore" | tee -a $backup_log +snapshot_name=$(sudo cat /etc/elasticsearch/backup/index-0 | jq -r ".snapshots[0].name") +indices=$(curl -s -X GET http://$hostip:9200/_cat/indices?v | awk 'NR>1{print $3}' | sort | tr -d "\n") +sudo systemctl restart es-1_elasticsearch.service +sleep 15 +bash restore_elasticsearch.sh $snapshot_name | tee -a $backup_log +new_indices=$(curl -s -X GET http://$hostip:9200/_cat/indices?v | awk 'NR>1{print $3}' | sort | tr -d "\n") +if ! [[ "$indices" == "$new_indices" ]]; then + echo "Elasticsearch restore failed. Exiting..." | tee -a $backup_log + exit 1 +else + echo "Elsaticsearch restore successful" | tee -a $backup_log +fi +} + +release=$1 +username=$2 +backup_log=/tmp/backuplog.txt +hostip=$(hostname -i) + +checkoutRepo +cassandraBackup +postgresBackup +elasticsearchBackup +restoreCassandra +restorePostgres +restoreElasticsearch diff --git a/tests/ci/build_info b/tests/ci/build_info new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tests/ci/install_sunbird-1.10.sh b/tests/ci/install_sunbird-1.10.sh new file mode 100755 index 0000000000..8beaf1af47 --- /dev/null +++ b/tests/ci/install_sunbird-1.10.sh @@ -0,0 +1,84 @@ +#!/bin/bash + +installSunbird(){ + echo -e "Starting installation..." | tee $installer_log + bash sunbird_install.sh +} + +updateSSO(){ + access_token=$(curl -s -X POST http://$dns_name/auth/realms/master/protocol/openid-connect/token -H "cache-control: no-cache" -H "content-type: application/x-www-form-urlencoded" -d "client_id=admin-cli&username=admin&password=$keycloak_pass&grant_type=password" | jq -r ".access_token") + public_key=$(curl -s -X GET http://$dns_name/auth/admin/realms/sunbird/keys -H "Authorization: Bearer $access_token" -H "Cache-Control: no-cache" -H "Content-Type: application/json" | jq -r ".keys[0].publicKey") + sed -i "s|sunbird_sso_publickey:.*#|sunbird_sso_publickey: $public_key #|g" $config_file +} + +coreInstall(){ + echo -e "Sunbird installation complete - Starting core installation..." | tee -a $installer_log + bash sunbird_install.sh -s core +} + +systemInit(){ + bash sunbird_install.sh -s systeminit +} + +postTest(){ + bash sunbird_install.sh -s posttest +} + +copyLogs(){ + mkdir logs 2> /dev/null + cp $installer_log logs +} + +postResult(){ + copyLogs + echo "status: Failed" >> $build_info + echo "subject: $release build failed" >> $build_info + exit 1 +} + +config_file=$1 +release=$2 +build_info=$3 +dns_name=$(awk '/dns_name:/{ if ($2 !~ /#.*/) {print $2}}' $config_file) +keycloak_pass=$(awk '/keycloak_admin_password:/{ if ($2 !~ /#.*/) {print $2}}' $config_file) +sso_pass=$(awk '/sso_password:/{ if ($2 !~ /#.*/) {print $2}}' $config_file) +installer_log=/tmp/installerlog.txt + +installSunbird + +if [[ $? -ne 0 ]]; then + echo -e "Installation failed - Retrying..." | tee -a $installer_log + installSunbird +fi + +if [[ $? -eq 0 ]]; then + updateSSO + coreInstall +else + echo -e "Sunbird installation failed - Error occured during installation" | tee -a $installer_log + postResult +fi + +if [[ $? -eq 0 ]]; then + systemInit +else + echo -e "Sunbird installation failed - Error occured during core installation" | tee -a $installer_log + postResult +fi + +if [[ $? -eq 0 ]]; then + postTest +else + echo -e "Sunbird installation failed - Error occured during system initialization" | tee -a $installer_log + postResult +fi + +if [[ $? -eq 0 ]]; then + copyLogs + echo -e "Sunbird installation complete" | tee -a $installer_log + echo "status: Success" >> $build_info + echo "subject: $release build succeeded" >> $build_info +else + echo -e "Sunbird installation failed - Error occured duing postTest" | tee -a $installer_log + postResult +fi diff --git a/tests/ci/install_sunbird-1.11.sh b/tests/ci/install_sunbird-1.11.sh new file mode 100755 index 0000000000..8beaf1af47 --- /dev/null +++ b/tests/ci/install_sunbird-1.11.sh @@ -0,0 +1,84 @@ +#!/bin/bash + +installSunbird(){ + echo -e "Starting installation..." | tee $installer_log + bash sunbird_install.sh +} + +updateSSO(){ + access_token=$(curl -s -X POST http://$dns_name/auth/realms/master/protocol/openid-connect/token -H "cache-control: no-cache" -H "content-type: application/x-www-form-urlencoded" -d "client_id=admin-cli&username=admin&password=$keycloak_pass&grant_type=password" | jq -r ".access_token") + public_key=$(curl -s -X GET http://$dns_name/auth/admin/realms/sunbird/keys -H "Authorization: Bearer $access_token" -H "Cache-Control: no-cache" -H "Content-Type: application/json" | jq -r ".keys[0].publicKey") + sed -i "s|sunbird_sso_publickey:.*#|sunbird_sso_publickey: $public_key #|g" $config_file +} + +coreInstall(){ + echo -e "Sunbird installation complete - Starting core installation..." | tee -a $installer_log + bash sunbird_install.sh -s core +} + +systemInit(){ + bash sunbird_install.sh -s systeminit +} + +postTest(){ + bash sunbird_install.sh -s posttest +} + +copyLogs(){ + mkdir logs 2> /dev/null + cp $installer_log logs +} + +postResult(){ + copyLogs + echo "status: Failed" >> $build_info + echo "subject: $release build failed" >> $build_info + exit 1 +} + +config_file=$1 +release=$2 +build_info=$3 +dns_name=$(awk '/dns_name:/{ if ($2 !~ /#.*/) {print $2}}' $config_file) +keycloak_pass=$(awk '/keycloak_admin_password:/{ if ($2 !~ /#.*/) {print $2}}' $config_file) +sso_pass=$(awk '/sso_password:/{ if ($2 !~ /#.*/) {print $2}}' $config_file) +installer_log=/tmp/installerlog.txt + +installSunbird + +if [[ $? -ne 0 ]]; then + echo -e "Installation failed - Retrying..." | tee -a $installer_log + installSunbird +fi + +if [[ $? -eq 0 ]]; then + updateSSO + coreInstall +else + echo -e "Sunbird installation failed - Error occured during installation" | tee -a $installer_log + postResult +fi + +if [[ $? -eq 0 ]]; then + systemInit +else + echo -e "Sunbird installation failed - Error occured during core installation" | tee -a $installer_log + postResult +fi + +if [[ $? -eq 0 ]]; then + postTest +else + echo -e "Sunbird installation failed - Error occured during system initialization" | tee -a $installer_log + postResult +fi + +if [[ $? -eq 0 ]]; then + copyLogs + echo -e "Sunbird installation complete" | tee -a $installer_log + echo "status: Success" >> $build_info + echo "subject: $release build succeeded" >> $build_info +else + echo -e "Sunbird installation failed - Error occured duing postTest" | tee -a $installer_log + postResult +fi diff --git a/tests/ci/install_sunbird-1.12.sh b/tests/ci/install_sunbird-1.12.sh new file mode 100755 index 0000000000..8beaf1af47 --- /dev/null +++ b/tests/ci/install_sunbird-1.12.sh @@ -0,0 +1,84 @@ +#!/bin/bash + +installSunbird(){ + echo -e "Starting installation..." | tee $installer_log + bash sunbird_install.sh +} + +updateSSO(){ + access_token=$(curl -s -X POST http://$dns_name/auth/realms/master/protocol/openid-connect/token -H "cache-control: no-cache" -H "content-type: application/x-www-form-urlencoded" -d "client_id=admin-cli&username=admin&password=$keycloak_pass&grant_type=password" | jq -r ".access_token") + public_key=$(curl -s -X GET http://$dns_name/auth/admin/realms/sunbird/keys -H "Authorization: Bearer $access_token" -H "Cache-Control: no-cache" -H "Content-Type: application/json" | jq -r ".keys[0].publicKey") + sed -i "s|sunbird_sso_publickey:.*#|sunbird_sso_publickey: $public_key #|g" $config_file +} + +coreInstall(){ + echo -e "Sunbird installation complete - Starting core installation..." | tee -a $installer_log + bash sunbird_install.sh -s core +} + +systemInit(){ + bash sunbird_install.sh -s systeminit +} + +postTest(){ + bash sunbird_install.sh -s posttest +} + +copyLogs(){ + mkdir logs 2> /dev/null + cp $installer_log logs +} + +postResult(){ + copyLogs + echo "status: Failed" >> $build_info + echo "subject: $release build failed" >> $build_info + exit 1 +} + +config_file=$1 +release=$2 +build_info=$3 +dns_name=$(awk '/dns_name:/{ if ($2 !~ /#.*/) {print $2}}' $config_file) +keycloak_pass=$(awk '/keycloak_admin_password:/{ if ($2 !~ /#.*/) {print $2}}' $config_file) +sso_pass=$(awk '/sso_password:/{ if ($2 !~ /#.*/) {print $2}}' $config_file) +installer_log=/tmp/installerlog.txt + +installSunbird + +if [[ $? -ne 0 ]]; then + echo -e "Installation failed - Retrying..." | tee -a $installer_log + installSunbird +fi + +if [[ $? -eq 0 ]]; then + updateSSO + coreInstall +else + echo -e "Sunbird installation failed - Error occured during installation" | tee -a $installer_log + postResult +fi + +if [[ $? -eq 0 ]]; then + systemInit +else + echo -e "Sunbird installation failed - Error occured during core installation" | tee -a $installer_log + postResult +fi + +if [[ $? -eq 0 ]]; then + postTest +else + echo -e "Sunbird installation failed - Error occured during system initialization" | tee -a $installer_log + postResult +fi + +if [[ $? -eq 0 ]]; then + copyLogs + echo -e "Sunbird installation complete" | tee -a $installer_log + echo "status: Success" >> $build_info + echo "subject: $release build succeeded" >> $build_info +else + echo -e "Sunbird installation failed - Error occured duing postTest" | tee -a $installer_log + postResult +fi diff --git a/tests/ci/install_wrapper.sh b/tests/ci/install_wrapper.sh new file mode 100755 index 0000000000..befab36392 --- /dev/null +++ b/tests/ci/install_wrapper.sh @@ -0,0 +1,120 @@ +#!/bin/bash + +copyPem(){ + mkdir /home/$username/.ssh 2> /dev/null + cp /tmp/sunbird.pem /home/$username/.ssh +} + +checkoutRepo(){ + cd /home/$username + sudo rm -rf sunbird-devops + git clone https://github.com/project-sunbird/sunbird-devops.git + cd sunbird-devops + getTags + if [[ $index != "" ]]; then + git checkout tags/$release -b $release + echo -e "Installing sunbird on tags $release" | tee $wrapper_log + else + git checkout -b $release origin/$release + echo -e "Installing sunbird on branch $release" | tee -a $wrappper_log + fi + cd deploy +} + +updateConfig(){ + if [[ -f config ]]; then + config_file=config + else + config_file=config.yml + fi + + keys=$(awk '{print $1}' $build_info) + for j in ${keys[@]} + do + value=$(awk '/'^$j'/{ if ($2 !~ /#.*/) {print $2}}' $build_info) + sed -i "s|^$j.*#|$j $value #|g" $config_file + done +} + +getTags(){ + declare -A arr + i=1 + while true + do + tag=$(git tag | grep "release-[0-9].*[0-9]$" | sort -V -r | awk -F "." '!($2 in a){i++; a[$2]} (i=='$i'){print $0}' | head -1) + if [[ $tag != "" ]]; then + arr[$tag]=$i + i=$(expr $i + 1) + else + break + fi + done + index=${arr["$release"]} +} + +checkForUpgrade(){ + if [[ $index -gt 1 ]]; then + i=$(($index - 1)) + previous=$release + release=$(git tag | grep "release-[0-9].*[0-9]$" | sort -V -r | awk -F "." '!($2 in a){i++; a[$2]} (i=='$i'){print $0}' | head -1) + echo "Not latest release. Upgrading from $previous to $release..." | tee -a $wrappper_log + else + echo "Latest release, ignoring upgrade..." | tee -a $wrappper_log + archiveLogs + sendEmail + exit 0 + fi +} + +upgradeSB(){ + version=$(echo $release | awk -F "-" '{print $2}' | awk -F "." '{print $1"."$2}') + checkoutRepo + updateConfig + bash /tmp/tests/ci/upgrade_sunbird-$version.sh $config_file $release $build_info $version $previous + if [[ $? -ne 0 ]]; then + postResult + else + archiveLogs + sendEmail + fi +} + +installSB(){ + bash /tmp/tests/ci/install_sunbird-$version.sh $config_file $release $build_info + if [[ $? -ne 0 ]]; then + postResult + else + checkForUpgrade + upgradeSB + fi +} + +archiveLogs(){ + sudo apt install -y zip + mkdir logs 2> /dev/null + cp $wrapper_log logs + zip -r /tmp/serverlogs.zip logs +} + +sendEmail(){ + python /tmp/tests/ci/send_email.py +} + +postResult(){ + archiveLogs + sendEmail + exit 1 +} + +build_info=/tmp/tests/ci/build_info +email_file=/tmp/tests/ci/send_mail.py +release=$(awk '/release:/{ if ($2 !~ /#.*/) {print $2}}' $build_info) +username=$(awk '/ssh_ansible_user:/{ if ($2 !~ /#.*/) {print $2}}' $build_info) +release=$(awk '/release:/{ if ($2 !~ /#.*/) {print $2}}' $build_info) +version=$(echo $release | awk -F "-" '{print $2}' | awk -F "." '{print $1"."$2}') +wrapper_log=/tmp/wrapperlog.txt + +copyPem +checkoutRepo +updateConfig +installSB diff --git a/circle-ci/remove_vm.sh b/tests/ci/remove_vm.sh similarity index 53% rename from circle-ci/remove_vm.sh rename to tests/ci/remove_vm.sh index 525f5c7295..63143ca7d3 100755 --- a/circle-ci/remove_vm.sh +++ b/tests/ci/remove_vm.sh @@ -1,8 +1,11 @@ #!/bin/bash -aws_app_instance=$(aws ec2 describe-instances --filters "Name=instance-state-name,Values=running" "Name=tag:Name,Values=circle-app-$CIRCLE_BUILD_NUM-$release" --query "Reservations[*].Instances[*].{PrivateIP: PrivateIpAddress, PublicIP: PublicIpAddress, InstanceId: InstanceId}") + +today=$(date +%d-%b-%y-%a) + +aws_app_instance=$(aws ec2 describe-instances --filters "Name=instance-state-name,Values=running" "Name=tag:Name,Values=app-$release-$today" --query "Reservations[*].Instances[*].{PrivateIP: PrivateIpAddress, PublicIP: PublicIpAddress, InstanceId: InstanceId}") app_instance_id=$(echo $aws_app_instance | awk '{print $1}') -aws_db_instance=$(aws ec2 describe-instances --filters "Name=instance-state-name,Values=running" "Name=tag:Name,Values=circle-db-$CIRCLE_BUILD_NUM-$release" --query "Reservations[*].Instances[*].{PrivateIP: PrivateIpAddress, PublicIP: PublicIpAddress, InstanceId: InstanceId}") +aws_db_instance=$(aws ec2 describe-instances --filters "Name=instance-state-name,Values=running" "Name=tag:Name,Values=db-$release-$today" --query "Reservations[*].Instances[*].{PrivateIP: PrivateIpAddress, PublicIP: PublicIpAddress, InstanceId: InstanceId}") db_instance_id=$(echo $aws_db_instance | awk '{print $1}') echo -e "Removing application server: $app_instance_id" diff --git a/tests/ci/run_installer.sh b/tests/ci/run_installer.sh new file mode 100755 index 0000000000..6bfd00c98a --- /dev/null +++ b/tests/ci/run_installer.sh @@ -0,0 +1,19 @@ +#!/bin/bash +build_info=./tests/ci/build_info +app_ip=$(awk '/dns_name:/{ if ($2 !~ /#.*/) {print $2}}' $build_info) +user_name=$(awk '/ssh_ansible_user:/{if ($2 !~ /#.*/) {print $2}}' $build_info) +echo "release: $release" >> $build_info +if [[ $TRAVIS_BUILD_WEB_URL != "" ]]; then + echo "build_url: $TRAVIS_BUILD_WEB_URL" >> $build_info +elif [[ $CIRCLE_BUILD_URL != "" ]]; then + echo "build_url: $CIRCLE_BUILD_URL" >> $build_info +fi +printf "%s$private_key" > sunbird.pem +chmod 600 sunbird.pem +scp -i sunbird.pem -o StrictHostKeyChecking=no -r tests sunbird.pem $user_name@$app_ip:/tmp +ssh -i sunbird.pem -o StrictHostKeyChecking=no $user_name@$app_ip "/tmp/tests/ci/install_wrapper.sh" + +if [[ $? -ne 0 ]]; then + echo -e "\nSunbird installation for $release failed - Please inspect the server - Instance not removed!" + exit 1 +fi diff --git a/tests/ci/send_email.py b/tests/ci/send_email.py new file mode 100755 index 0000000000..ad647a77d7 --- /dev/null +++ b/tests/ci/send_email.py @@ -0,0 +1,68 @@ +#!/usr/bin/env python + +import smtplib, os.path +from email.mime.multipart import MIMEMultipart +from email.mime.text import MIMEText +from email.mime.base import MIMEBase +from email import encoders +from os import path + +arr = {} +with open("/tmp/tests/ci/build_info") as f: + for line in f: + name, value = line.partition(":")[::2] + arr[name.strip()] = value + +fromaddr = arr["from_address"].strip() +toaddr = arr["to_address"].strip().split(",") +release = arr["release"].strip() +build_url = arr["build_url"].strip() +status = arr["status"].strip() +subject = arr["subject"].strip() +password = arr["email_password"].strip() + +s = smtplib.SMTP('smtp.gmail.com', 587) +s.starttls() +s.login(fromaddr, password) + +if status == "Success": + bgcolor = "#51CA5E" +else: + bgcolor = "#E33F3A" + +body = """ + + + + + + + + + + + + + +
ReleaseStatusBuild Log URL
 %s %sClick Here! 
+

If you do not wish to receive these emails, please click here

+

If you wish to add someone to receive these notifications, please click here

+""" % (bgcolor, release, status, build_url) + +for i in range(len(toaddr)): + msg = MIMEMultipart() + msg['From'] = "Sunbird CI Mailer" + msg['To'] = toaddr[i] + msg['Subject'] = subject + msg.attach(MIMEText(body, 'html')) + filename = "serverlogs.zip" + p = MIMEBase('application', 'octet-stream') + if path.exists("/tmp/serverlogs.zip"): + attachment = open("/tmp/serverlogs.zip", "rb") + p.set_payload((attachment).read()) + encoders.encode_base64(p) + p.add_header('Content-Disposition', "attachment; filename= %s" % filename) + msg.attach(p) + text = msg.as_string() + s.sendmail(fromaddr, toaddr[i], text) +s.quit() diff --git a/tests/ci/setup_env.sh b/tests/ci/setup_env.sh new file mode 100755 index 0000000000..2759e0d28c --- /dev/null +++ b/tests/ci/setup_env.sh @@ -0,0 +1,65 @@ +#!/bin/bash + +build_info=./tests/ci/build_info + +aws --version +aws configure set aws_access_key_id $keyid +aws configure set aws_secret_access_key $key +aws configure set region ap-south-1 +aws configure set output text +echo -e "aws cli configured.." + +today=$(date +%d-%b-%y-%a) + +aws ec2 run-instances --image-id ami-0c510557369b14896 --instance-type t2.large --key-name ci-build --subnet-id subnet-0241076a --tag-specifications "ResourceType=instance,Tags=[{Key=Name,Value=app-$release-$today}]" 1> /dev/null +aws ec2 run-instances --image-id ami-0c510557369b14896 --instance-type t2.large --key-name ci-build --subnet-id subnet-0241076a --tag-specifications "ResourceType=instance,Tags=[{Key=Name,Value=db-$release-$today}]" 1> /dev/null +echo -e "Waiting for servers to launch..." +sleep 180 + +aws_app_instance=$(aws ec2 describe-instances --filters "Name=instance-state-name,Values=running" "Name=tag:Name,Values=app-$release-$today" --query "Reservations[*].Instances[*].{PrivateIP: PrivateIpAddress, PublicIP: PublicIpAddress, InstanceId: InstanceId}") +app_instance_id=$(echo -e $aws_app_instance | awk '{print $1}') +app_private_ip=$(echo -e $aws_app_instance | awk '{print $2}') +app_public_ip=$(echo -e $aws_app_instance | awk '{print $3}') + +aws_db_instance=$(aws ec2 describe-instances --filters "Name=instance-state-name,Values=running" "Name=tag:Name,Values=db-$release-$today" --query "Reservations[*].Instances[*].{PrivateIP: PrivateIpAddress, PublicIP: PublicIpAddress, InstanceId: InstanceId}") +db_instance_id=$(echo -e $aws_db_instance | awk '{print $1}') +db_private_ip=$(echo -e $aws_db_instance | awk '{print $2}') +db_public_ip=$(echo -e $aws_db_instance | awk '{print $3}') + +cat > $build_info << EOF +ansible_private_key_path: $ansible_private_key_path +app_address_space: $app_address_space +backup_storage_key: $backup_storage_key +badger_admin_email: $badger_admin_email +badger_admin_password: $badger_admin_password +database_password: $database_password +ekstep_api_base_url: $ekstep_api_base_url +ekstep_api_key: $ekstep_api_key +ekstep_proxy_base_url: $ekstep_proxy_base_url +email_password: $email_password +env: $env +from_address: $from_address +implementation_name: $implementation_name +keycloak_admin_password: $keycloak_admin_password +proto: $proto +ssh_ansible_user: $ssh_ansible_user +sso_password: $sso_password +sunbird_azure_storage_account: $sunbird_azure_storage_account +sunbird_azure_storage_key: $sunbird_azure_storage_key +sunbird_custodian_tenant_channel: $sunbird_custodian_tenant_channel +sunbird_custodian_tenant_description: $sunbird_custodian_tenant_description +sunbird_custodian_tenant_name: $sunbird_custodian_tenant_name +sunbird_default_channel: $sunbird_default_channel +sunbird_image_storage_url: $sunbird_image_storage_url +sunbird_root_user_email: $sunbird_root_user_email +sunbird_root_user_firstname: $sunbird_root_user_firstname +sunbird_root_user_lastname: $sunbird_root_user_lastname +sunbird_root_user_password: $sunbird_root_user_password +sunbird_root_user_phone: $sunbird_root_user_phone +sunbird_root_user_username: $sunbird_root_user_username +to_address: $to_address +trampoline_secret: $trampoline_secret +application_host: $app_private_ip +dns_name: $app_public_ip +database_host: $db_private_ip +EOF diff --git a/tests/ci/upgrade_sunbird-1.11.sh b/tests/ci/upgrade_sunbird-1.11.sh new file mode 100755 index 0000000000..dbbdc1c70c --- /dev/null +++ b/tests/ci/upgrade_sunbird-1.11.sh @@ -0,0 +1,112 @@ +#!/bin/bash + +backupdbs(){ +cd /home/$username/sunbird-devops/deploy +scp -i $ansible_private_key_path -o StrictHostKeyChecking=no $backup_script $release_file $config_file $username@$database_host:/tmp +ssh -i $ansible_private_key_path -o StrictHostKeyChecking=no $username@$database_host "bash /tmp/backup_dbs-$version.sh $release $username" +} + +updateSSO(){ + access_token=$(curl -s -X POST http://$dns_name/auth/realms/master/protocol/openid-connect/token -H "cache-control: no-cache" -H "content-type: application/x-www-form-urlencoded" -d "client_id=admin-cli&username=admin&password=$keycloak_pass&grant_type=password" | jq -r ".access_token") + public_key=$(curl -s -X GET http://$dns_name/auth/admin/realms/sunbird/keys -H "Authorization: Bearer $access_token" -H "Cache-Control: no-cache" -H "Content-Type: application/json" | jq -r ".keys[0].publicKey") + sed -i "s|sunbird_sso_publickey:.*#|sunbird_sso_publickey: $public_key #|g" $config_file +} + +upgradeSB(){ +./sunbird_install.sh -s config +if [[ $? -ne 0 ]]; then + echo -e "Config file generation failed.." | tee $upgrade_log + postResult +fi + +./sunbird_install.sh -s dbs +if [[ $? -ne 0 ]]; then + echo -e "DB migration failed.." | tee -a $upgrade_log + postResult +fi + +./sunbird_install.sh -s apis +if [[ $? -ne 0 ]]; then + echo -e "API service upgrade failed.." | tee -a $upgrade_log + postResult +fi + +./sunbird_install.sh -s proxy +if [[ $? -ne 0 ]]; then + echo -e "Proxy service upgrade failed.." | tee -a $upgrade_log + postResult +fi + +./sunbird_install.sh -s core +if [[ $? -ne 0 ]]; then + echo -e "Core services upgrade failed.." | tee -a $upgrade_log + postResult +fi +} + +verifyUpgrade(){ + flag=0 + declare -a services=("badger" "content" "kong" "learner" "player" "proxy" "telemetry") + for i in ${services[@]} + do + docker_version=$(sudo docker service ls | awk '/'$i'/{print $5}' | awk -F ":" '{print $2}') + release_version=$(awk -F "=" 'tolower($0) ~ /'$i'/ {print $2}' version.env) + + if [[ $docker_version == $release_version ]]; then + echo -e "\e[0;32m$i service upgraded successfully to $docker_version\e[0;37m" | tee -a $upgrade_log + else + echo -e "\e[0;31m$i service could not be upgraded. Release version is $release_version, but docker version is $docker_version. Please investigate..\e[0;37m" | tee -a $upgrade_log + flag=1 + fi +done +} + +copyLogs(){ + mkdir logs 2> /dev/null + cp $upgrade_log logs + scp -i $ansible_private_key_path -o StrictHostKeyChecking=no $username@$database_host:/tmp/backuplog.txt logs +} + + +postResult(){ + copyLogs + echo "release: $previous to $release" >> $build_info + echo "status: Failed" >> $build_info + echo "subject: $previous build succeeded, upgrade to $release failed" >> $build_info + exit 1 +} + +config_file=$1 +release=$2 +build_info=$3 +version=$4 +previous=$5 +username=$(awk '/ssh_ansible_user:/{ if ($2 !~ /#.*/) {print $2}}' $build_info) +ansible_private_key_path=$(awk '/ansible_private_key_path:/{ if ($2 !~ /#.*/) {print $2}}' $build_info) +dns_name=$(awk '/dns_name:/{ if ($2 !~ /#.*/) {print $2}}' $build_info) +database_host=$(awk '/database_host:/{ if ($2 !~ /#.*/) {print $2}}' $build_info) +keycloak_pass=$(awk '/keycloak_admin_password:/{ if ($2 !~ /#.*/) {print $2}}' $build_info) +sso_pass=$(awk '/sso_password:/{ if ($2 !~ /#.*/) {print $2}}' $build_info) +backup_script=/tmp/tests/ci/backup_dbs-$version.sh +upgrade_log=/tmp/upgradelog.txt + +backupdbs +if [[ $? -eq 0 ]]; then + updateSSO + upgradeSB + verifyUpgrade +else + echo -e "Database backup failed. Skipping upgrade.." | tee -a $upgrade_log + postResult +fi + +if [[ $flag -eq 1 ]]; then + echo "Found mismatch in container versions.." | tee -a $upgrade_log + postResult +else + copyLogs + echo "Sunbird upgrade successful" | tee -a $upgrade_log + echo "release: $previous to $release" >> $build_info + echo "status: Success" >> $build_info + echo "subject: $previous build succeeded, upgrade to $release succeeded" >> $build_info +fi diff --git a/tests/playbook_check.sh b/tests/playbook_check.sh new file mode 100755 index 0000000000..771dabcaac --- /dev/null +++ b/tests/playbook_check.sh @@ -0,0 +1,5 @@ +#!/bin/sh + +set -e + +bash ./ansible-syntax-check.sh ./ansible/inventories/sample From c59d4873ce31532d4fa20b54c97353c74a15b153 Mon Sep 17 00:00:00 2001 From: msknext Date: Thu, 29 Nov 2018 23:08:52 +0530 Subject: [PATCH 0371/1345] issue# 000: check build trigger --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 3c3e46eebb..95e18ed839 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -29,7 +29,7 @@ workflows: nightly: triggers: - schedule: - cron: "0 17 1,5,9,13,17,21,25,29 * *" + cron: "40 17 1,5,9,13,17,21,25,29 * *" filters: branches: only: From e56895eb9e01206c73adb9ca9aa9562da4c202fd Mon Sep 17 00:00:00 2001 From: S M Y Date: Fri, 30 Nov 2018 10:46:52 +0530 Subject: [PATCH 0372/1345] Issue #000 monitor: Changing Keycloak Startup command --- ansible/roles/keycloak/tasks/deploy.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/ansible/roles/keycloak/tasks/deploy.yml b/ansible/roles/keycloak/tasks/deploy.yml index 5431456b37..998ba8b0f2 100644 --- a/ansible/roles/keycloak/tasks/deploy.yml +++ b/ansible/roles/keycloak/tasks/deploy.yml @@ -104,8 +104,7 @@ - name: start service become: yes command: /etc/init.d/keycloak start + when: "keycloak_status.stdout.find('running') == -1" poll: 5 async: 5 ignore_errors: yes - when: - - when: "keycloak_status.stdout.find('running') == -1" From 5389ccac34b1e7acb90c5c7faf75a1197b71ba7a Mon Sep 17 00:00:00 2001 From: Sourav Dey Date: Fri, 30 Nov 2018 17:28:16 +0530 Subject: [PATCH 0373/1345] Issue #SB-9272 feat: Changing yml file for reserve/release dialcode API (#270) * Issue #SB-8888 feat: Adding update collaborators API * Issue #SB-8888 feat: Adding update collaborators API * Issue #SB-9272 feat: Changing yml file for reserve/release dialcode API * Issue #SB-9272 feat: Changing yml file for reserve/release dialcode API * Issue #SB-9277 feat: Changing whitelist --- ansible/roles/kong-api/defaults/main.yml | 32 ++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/ansible/roles/kong-api/defaults/main.yml b/ansible/roles/kong-api/defaults/main.yml index f5992b312e..1b35f025c3 100644 --- a/ansible/roles/kong-api/defaults/main.yml +++ b/ansible/roles/kong-api/defaults/main.yml @@ -3269,6 +3269,38 @@ kong_apis: config.limit_by: credential - name: request-size-limiting config.allowed_payload_size: "{{ small_request_size_limit }}" + - name: reserveDialcode + request_path: "{{ dialcode_service_prefix }}/v1/reserve" + upstream_url: "{{ content_service_url }}/v1/dialcode/reserve" + strip_request_path: true + plugins: + - name: jwt + - name: cors + - "{{ statsd_pulgin }}" + - name: acl + config.whitelist: dialcodeAdmin + - name: rate-limiting + config.policy: local + config.hour: "{{ medium_rate_limit_per_hour }}" + config.limit_by: credential + - name: request-size-limiting + config.allowed_payload_size: "{{ small_request_size_limit }}" + - name: releaseDialcode + request_path: "{{ dialcode_service_prefix }}/v1/release" + upstream_url: "{{ content_service_url }}/v1/dialcode/release" + strip_request_path: true + plugins: + - name: jwt + - name: cors + - "{{ statsd_pulgin }}" + - name: acl + config.whitelist: dialcodeAdmin + - name: rate-limiting + config.policy: local + config.hour: "{{ medium_rate_limit_per_hour }}" + config.limit_by: credential + - name: request-size-limiting + config.allowed_payload_size: "{{ small_request_size_limit }}" # Data pipeline - name: "datasetSubmitRequest" From 4f732ae7998c8cd0ac5815c38330f41a71b6029d Mon Sep 17 00:00:00 2001 From: Sourav Dey Date: Fri, 30 Nov 2018 18:28:44 +0530 Subject: [PATCH 0374/1345] Issue #SB-9178 feat: Adding whitelist for lock api's (#273) * Issue #SB-8888 feat: Adding update collaborators API * Issue #SB-8888 feat: Adding update collaborators API * Issue #SB-9272 feat: Changing yml file for reserve/release dialcode API * Issue #SB-9272 feat: Changing yml file for reserve/release dialcode API * Issue #SB-9277 feat: Changing whitelist * Issue #SB-9178 feat: Changing whitelist for lock api --- ansible/roles/kong-api/defaults/main.yml | 65 ++++++++++++++++++++++++ 1 file changed, 65 insertions(+) diff --git a/ansible/roles/kong-api/defaults/main.yml b/ansible/roles/kong-api/defaults/main.yml index 1b35f025c3..60ea2e2544 100644 --- a/ansible/roles/kong-api/defaults/main.yml +++ b/ansible/roles/kong-api/defaults/main.yml @@ -49,6 +49,7 @@ badge_service_prefix: /badging plugin_service_prefix: /plugins config_service_prefix: /config textbook_service_prefix: /textbook +lock_service_prefix: /lock # Service URLs content_service_url: "http://content-service:5000" @@ -3301,6 +3302,70 @@ kong_apis: config.limit_by: credential - name: request-size-limiting config.allowed_payload_size: "{{ small_request_size_limit }}" + - name: createLock + request_path: "{{ lock_service_prefix }}/v1/create" + upstream_url: "{{ content_service_url }}/v1/lock/create" + strip_request_path: true + plugins: + - name: jwt + - name: cors + - "{{ statsd_pulgin }}" + - name: acl + config.whitelist: contentUser + - name: rate-limiting + config.policy: local + config.hour: "{{ medium_rate_limit_per_hour }}" + config.limit_by: credential + - name: request-size-limiting + config.allowed_payload_size: "{{ small_request_size_limit }}" + - name: refreshLock + request_path: "{{ lock_service_prefix }}/v1/refresh" + upstream_url: "{{ content_service_url }}/v1/lock/refresh" + strip_request_path: true + plugins: + - name: jwt + - name: cors + - "{{ statsd_pulgin }}" + - name: acl + config.whitelist: contentUser + - name: rate-limiting + config.policy: local + config.hour: "{{ medium_rate_limit_per_hour }}" + config.limit_by: credential + - name: request-size-limiting + config.allowed_payload_size: "{{ small_request_size_limit }}" + - name: retireLock + request_path: "{{ lock_service_prefix }}/v1/retire" + upstream_url: "{{ content_service_url }}/v1/lock/retire" + strip_request_path: true + plugins: + - name: jwt + - name: cors + - "{{ statsd_pulgin }}" + - name: acl + config.whitelist: contentUser + - name: rate-limiting + config.policy: local + config.hour: "{{ medium_rate_limit_per_hour }}" + config.limit_by: credential + - name: request-size-limiting + config.allowed_payload_size: "{{ small_request_size_limit }}" + - name: listLock + request_path: "{{ lock_service_prefix }}/v1/list" + upstream_url: "{{ content_service_url }}/v1/lock/list" + strip_request_path: true + plugins: + - name: jwt + - name: cors + - "{{ statsd_pulgin }}" + - name: acl + config.whitelist: orgAdmin + - name: rate-limiting + config.policy: local + config.hour: "{{ medium_rate_limit_per_hour }}" + config.limit_by: credential + - name: request-size-limiting + config.allowed_payload_size: "{{ small_request_size_limit }}" # Data pipeline - name: "datasetSubmitRequest" From 8502a2c39fa4ec6570d21fc03dc723cc8e5a4ab3 Mon Sep 17 00:00:00 2001 From: S M Y Date: Mon, 3 Dec 2018 10:22:45 +0530 Subject: [PATCH 0375/1345] Issue #000 systeminit: cassandra migration version --- ansible/roles/cassandra-cql-update/tasks/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/cassandra-cql-update/tasks/main.yml b/ansible/roles/cassandra-cql-update/tasks/main.yml index 9daa238084..1e08d12708 100644 --- a/ansible/roles/cassandra-cql-update/tasks/main.yml +++ b/ansible/roles/cassandra-cql-update/tasks/main.yml @@ -39,7 +39,7 @@ - name: download become: yes - command: wget https://github.com/project-sunbird/sunbird-utils/releases/download/release-1.10/cassandra-migration-0.0.1-SNAPSHOT-jar-with-dependencies.jar + command: wget https://github.com/project-sunbird/sunbird-utils/releases/download/release-1.11/cassandra-migration-0.0.1-SNAPSHOT-jar-with-dependencies.jar args: chdir: /tmp - name: Run the application From d68d3947ca526594c6369d9da39bc0cce2c902a5 Mon Sep 17 00:00:00 2001 From: S M Y Date: Mon, 3 Dec 2018 14:17:08 +0530 Subject: [PATCH 0376/1345] Issue #000 systeminit: monitoring dns name fix --- ansible/roles/stack-monitor/defaults/main.yml | 18 +++--------------- 1 file changed, 3 insertions(+), 15 deletions(-) diff --git a/ansible/roles/stack-monitor/defaults/main.yml b/ansible/roles/stack-monitor/defaults/main.yml index 8ecb83ee12..a41a5b2619 100644 --- a/ansible/roles/stack-monitor/defaults/main.yml +++ b/ansible/roles/stack-monitor/defaults/main.yml @@ -140,14 +140,6 @@ service_blackbox_checks: probe_module: http_2xx targets: - "{{sunbird_search_service_api_base_url}}/health" - # - service_name: 'logger_kibana' - # probe_module: http_2xx - # targets: - # - http://logger_kibana:5601/ - # - service_name: 'logger_grafana' - # probe_module: http_2xx - # targets: - # - "https://{{api__host}}/grafana" - service_name: 'player_player' probe_module: http_2xx targets: @@ -157,10 +149,6 @@ service_blackbox_checks: probe_module: http_2xx targets: - http://content-service:5000/health - # - service_name: 'learner-service' - # probe_module: http_2xx - # targets: - # - http://learner-service:9000/health - service_name: 'monit' probe_module: http_2xx targets: @@ -168,7 +156,7 @@ service_blackbox_checks: - service_name: 'logger_oauth' probe_module: http_4xx_auth targets: - - "https://{{api__host}}/dashboard" + - "{{proto}}://{{dns_name}}/dashboard" - service_name: 'cassandra' probe_module: tcp_connect targets: @@ -176,11 +164,11 @@ service_blackbox_checks: - service_name: 'composite_search' probe_module: composite_search targets: - - "https://{{api__host}}/api/composite/v1/search" + - "{{proto}}://{{dns_name}}/api/composite/v1/search" - service_name: 'keycloak' probe_module: http_2xx targets: - - "https://{{api__host}}/auth/realms/sunbird/protocol/openid-connect/auth?client_id=portal&state=foo&redirect_uri=https%3A%2F%2F{{api__host}}%2Fprivate%2Findex%3Fauth_callback%3D1&scope=openid&response_type=code" + - "{{proto}}://{{dns_name}}/auth/realms/sunbird/protocol/openid-connect/auth?client_id=portal&state=foo&redirect_uri=https%3A%2F%2F{{api__host}}%2Fprivate%2Findex%3Fauth_callback%3D1&scope=openid&response_type=code" prometheus_route_prefix: prometheus prometheus_web_external_url: "{{proto}}://{{api__host}}:9090/{{ prometheus_route_prefix }}" From b90301376f53d4e484e10a17209c56dbe1a938de Mon Sep 17 00:00:00 2001 From: S M Y Date: Mon, 3 Dec 2018 14:21:31 +0530 Subject: [PATCH 0377/1345] Issue #000 monitor: monitoring dns name fix --- ansible/roles/stack-monitor/defaults/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/stack-monitor/defaults/main.yml b/ansible/roles/stack-monitor/defaults/main.yml index a41a5b2619..9262b6ecc0 100644 --- a/ansible/roles/stack-monitor/defaults/main.yml +++ b/ansible/roles/stack-monitor/defaults/main.yml @@ -168,7 +168,7 @@ service_blackbox_checks: - service_name: 'keycloak' probe_module: http_2xx targets: - - "{{proto}}://{{dns_name}}/auth/realms/sunbird/protocol/openid-connect/auth?client_id=portal&state=foo&redirect_uri=https%3A%2F%2F{{api__host}}%2Fprivate%2Findex%3Fauth_callback%3D1&scope=openid&response_type=code" + - "{{proto}}://{{dns_name}}/auth/realms/sunbird/protocol/openid-connect/auth?client_id=portal&state=foo&redirect_uri=https%3A%2F%2F{{dns_name}}%2Fprivate%2Findex%3Fauth_callback%3D1&scope=openid&response_type=code" prometheus_route_prefix: prometheus prometheus_web_external_url: "{{proto}}://{{api__host}}:9090/{{ prometheus_route_prefix }}" From 13124e856c1261a84d572aa941b5a73271ad05c1 Mon Sep 17 00:00:00 2001 From: S M Y Date: Mon, 3 Dec 2018 14:29:15 +0530 Subject: [PATCH 0378/1345] Issue #000 monitor: monitoring dns name fix --- ansible/roles/stack-monitor/defaults/main.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ansible/roles/stack-monitor/defaults/main.yml b/ansible/roles/stack-monitor/defaults/main.yml index 9262b6ecc0..5cd9e9a5b3 100644 --- a/ansible/roles/stack-monitor/defaults/main.yml +++ b/ansible/roles/stack-monitor/defaults/main.yml @@ -156,7 +156,7 @@ service_blackbox_checks: - service_name: 'logger_oauth' probe_module: http_4xx_auth targets: - - "{{proto}}://{{dns_name}}/dashboard" + - "{{proto}}://{{proxy_server_name}}/dashboard" - service_name: 'cassandra' probe_module: tcp_connect targets: @@ -164,11 +164,11 @@ service_blackbox_checks: - service_name: 'composite_search' probe_module: composite_search targets: - - "{{proto}}://{{dns_name}}/api/composite/v1/search" + - "{{proto}}://{{proxy_server_name}}/api/composite/v1/search" - service_name: 'keycloak' probe_module: http_2xx targets: - - "{{proto}}://{{dns_name}}/auth/realms/sunbird/protocol/openid-connect/auth?client_id=portal&state=foo&redirect_uri=https%3A%2F%2F{{dns_name}}%2Fprivate%2Findex%3Fauth_callback%3D1&scope=openid&response_type=code" + - "{{proto}}://{{proxy_server_name}}/auth/realms/sunbird/protocol/openid-connect/auth?client_id=portal&state=foo&redirect_uri=https%3A%2F%2F{{proxy_server_name}}%2Fprivate%2Findex%3Fauth_callback%3D1&scope=openid&response_type=code" prometheus_route_prefix: prometheus prometheus_web_external_url: "{{proto}}://{{api__host}}:9090/{{ prometheus_route_prefix }}" From f49aec2438fd9fe3b0b0198d66dec6b30c1493d1 Mon Sep 17 00:00:00 2001 From: S M Y Date: Mon, 3 Dec 2018 15:46:57 +0530 Subject: [PATCH 0379/1345] Issue #000 monitor: Limit for logger logspout --- ansible/roles/stack-logger/templates/stack-logger.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/ansible/roles/stack-logger/templates/stack-logger.yml b/ansible/roles/stack-logger/templates/stack-logger.yml index 3b807481c5..1b14581f19 100644 --- a/ansible/roles/stack-logger/templates/stack-logger.yml +++ b/ansible/roles/stack-logger/templates/stack-logger.yml @@ -40,6 +40,11 @@ services: command: syslog+tcp://logger_logstash:51415 deploy: mode: global + resources: + reservations: + memory: "{{ logger_logstash_reservation_memory }}" + limits: + memory: "{{ logger_logstash_limit_memory }}" environment: - SYSLOG_FORMAT=rfc3164 - INACTIVITY_TIMEOUT=1m From 04be0b72ccb7017dc0d4042a1d057c153ca60c5b Mon Sep 17 00:00:00 2001 From: S M Y Date: Mon, 3 Dec 2018 16:09:50 +0530 Subject: [PATCH 0380/1345] Issue #000 monitor: fixing monitoring issue --- ansible/roles/stack-monitor/defaults/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/stack-monitor/defaults/main.yml b/ansible/roles/stack-monitor/defaults/main.yml index 5cd9e9a5b3..c03b293c8f 100644 --- a/ansible/roles/stack-monitor/defaults/main.yml +++ b/ansible/roles/stack-monitor/defaults/main.yml @@ -154,7 +154,7 @@ service_blackbox_checks: targets: - "http://{{ groups['swarm-bootstrap-manager'][0] }}:2812" - service_name: 'logger_oauth' - probe_module: http_4xx_auth + probe_module: http_2xx targets: - "{{proto}}://{{proxy_server_name}}/dashboard" - service_name: 'cassandra' From 80fd33c864b74bb37fb30e1661e7e730d57cc09a Mon Sep 17 00:00:00 2001 From: S M Y Date: Mon, 3 Dec 2018 16:13:03 +0530 Subject: [PATCH 0381/1345] Issue #000 monitor: fixing monitoring issue --- ansible/roles/stack-monitor/templates/stack-monitor.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/ansible/roles/stack-monitor/templates/stack-monitor.yml b/ansible/roles/stack-monitor/templates/stack-monitor.yml index 0c0a03e5e7..61bf29b900 100644 --- a/ansible/roles/stack-monitor/templates/stack-monitor.yml +++ b/ansible/roles/stack-monitor/templates/stack-monitor.yml @@ -337,6 +337,11 @@ services: command: syslog+tcp://monitor_logstash:51415?filter.name=*_proxy.* deploy: mode: global + resources: + reservations: + memory: "{{ monitor_logstash_reservation_memory }}" + limits: + memory: "{{ monitor_logstash_limit_memory }}" environment: - SYSLOG_FORMAT=rfc3164 depends_on: From 1be68130968355ec341130a6178d3aa765d09921 Mon Sep 17 00:00:00 2001 From: S M Y Date: Mon, 3 Dec 2018 16:28:20 +0530 Subject: [PATCH 0382/1345] Issue #000 monitor: fixing monitoring issue --- .../roles/stack-monitor/templates/stack-monitor.yml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/ansible/roles/stack-monitor/templates/stack-monitor.yml b/ansible/roles/stack-monitor/templates/stack-monitor.yml index 61bf29b900..40ac834d46 100644 --- a/ansible/roles/stack-monitor/templates/stack-monitor.yml +++ b/ansible/roles/stack-monitor/templates/stack-monitor.yml @@ -63,6 +63,11 @@ services: placement: constraints: - "node.labels.alertmanager==1" + resources: + reservations: + memory: "{{ prometheus_reservation_memory }}" + limits: + memory: "{{ prometheus_limit_memory }}" blackbox-exporter: image: quay.io/prometheus/blackbox-exporter:v0.8.1 @@ -294,6 +299,11 @@ services: placement: constraints: - "node.labels.grafana==1" + resources: + reservations: + memory: "{{ prometheus_reservation_memory }}" + limits: + memory: "{{ prometheus_limit_memory }}" cassandra_jmx_exporter: image: sunbird/cassandra_jmx_exporter:0.11 From b07ca01f0acc3ce9925af16b0279b89d9cf9602a Mon Sep 17 00:00:00 2001 From: S M Y Date: Mon, 3 Dec 2018 17:05:33 +0530 Subject: [PATCH 0383/1345] Issue #000 monitor: fixing monitoring issue --- ansible/roles/stack-monitor/defaults/main.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ansible/roles/stack-monitor/defaults/main.yml b/ansible/roles/stack-monitor/defaults/main.yml index c03b293c8f..06265c0243 100644 --- a/ansible/roles/stack-monitor/defaults/main.yml +++ b/ansible/roles/stack-monitor/defaults/main.yml @@ -1,5 +1,5 @@ -prometheus_reservation_memory: 2G -prometheus_limit_memory: 4G +prometheus_reservation_memory: 1G +prometheus_limit_memory: 1.5G node_exporter_reservation_memory: 16M node_exporter_limit_memory: 32M From 2e3690e23f91ac188948a4a9b29c38cf7028019d Mon Sep 17 00:00:00 2001 From: S M Y Date: Mon, 3 Dec 2018 18:31:20 +0530 Subject: [PATCH 0384/1345] Issue #000 API: CHanging the rate limit for API --- ansible/roles/kong-api/defaults/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/kong-api/defaults/main.yml b/ansible/roles/kong-api/defaults/main.yml index 60ea2e2544..12ac8d6919 100644 --- a/ansible/roles/kong-api/defaults/main.yml +++ b/ansible/roles/kong-api/defaults/main.yml @@ -14,7 +14,7 @@ statsd_pulgin: # Default Rate limits small_rate_limit_per_hour: 100 -medium_rate_limit_per_hour: 1000 +medium_rate_limit_per_hour: 5000 x_medium_rate_limit_per_hour: 5000 large_rate_limit_per_hour: 10000 x2_large_rate_limit_per_hour: 15000 From 995a28d0cdfe4e0da3421f534d9de2b1e9f1ebbb Mon Sep 17 00:00:00 2001 From: S M Y Date: Mon, 3 Dec 2018 19:14:51 +0530 Subject: [PATCH 0385/1345] Issue #000 API: Removing whitespace in yaml file --- ansible/roles/stack-sunbird/templates/sunbird_player.env | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/stack-sunbird/templates/sunbird_player.env b/ansible/roles/stack-sunbird/templates/sunbird_player.env index d8906c1c07..0ffa0e2962 100644 --- a/ansible/roles/stack-sunbird/templates/sunbird_player.env +++ b/ansible/roles/stack-sunbird/templates/sunbird_player.env @@ -13,7 +13,7 @@ ekstep_env={{sunbird_env}} sunbird_default_channel={{sunbird_default_channel}} sunbird_api_auth_token={{sunbird_api_auth_token}} sunbird_enable_permission_check=1 -sunbird_cassandra_urls={{sunbird_cassandra_urls}} +sunbird_cassandra_urls={{sunbird_cassandra_urls}} sunbird_session_store_type={{sunbird_session_store_type}} AZURE_STORAGE_ACCOUNT={{sunbird_azure_storage_account}} AZURE_STORAGE_KEY={{sunbird_azure_storage_key}} From 0e6f3a86f565527cbe2eee4919188f6ecfff654d Mon Sep 17 00:00:00 2001 From: S M Y Date: Tue, 4 Dec 2018 10:37:25 +0530 Subject: [PATCH 0386/1345] Issue #000 env: env vars for release-1.12 --- ansible/inventories/sample/group_vars/sample | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ansible/inventories/sample/group_vars/sample b/ansible/inventories/sample/group_vars/sample index 16b5c5c8ba..f1f5cea53f 100644 --- a/ansible/inventories/sample/group_vars/sample +++ b/ansible/inventories/sample/group_vars/sample @@ -369,3 +369,5 @@ sunbird_course_batch_notification_signature: sunbird sunbird_authorization: sunbird_lms_base_url: +sunbird_lock_expiry_time: 1800 +sunbird_content_service_local_base_url: http://content-service:5000 From f32b99f9ac4660c6e71d1ec096db84526fbea97c Mon Sep 17 00:00:00 2001 From: S M Y Date: Tue, 4 Dec 2018 10:47:27 +0530 Subject: [PATCH 0387/1345] Issue #000 monitor: Limit for monitoring service --- ansible/roles/stack-monitor/defaults/main.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ansible/roles/stack-monitor/defaults/main.yml b/ansible/roles/stack-monitor/defaults/main.yml index 06265c0243..727e3d69c7 100644 --- a/ansible/roles/stack-monitor/defaults/main.yml +++ b/ansible/roles/stack-monitor/defaults/main.yml @@ -1,5 +1,5 @@ -prometheus_reservation_memory: 1G -prometheus_limit_memory: 1.5G +prometheus_reservation_memory: 500M +prometheus_limit_memory: 750M node_exporter_reservation_memory: 16M node_exporter_limit_memory: 32M @@ -27,8 +27,8 @@ azure_blob_exporter_limit_memory: 64M monitor_logstash_replicas: 1 monitor_logstash_heap_size: 512m -monitor_logstash_reservation_memory: 1G -monitor_logstash_limit_memory: 1G +monitor_logstash_reservation_memory: 512M +monitor_logstash_limit_memory: 750M container_cpu_usage_percentage_theshold: 90 container_memory_usage_percentage_theshold: 90 From 86fe0609c0e0974fd1a694f61ebefe158ddf26c0 Mon Sep 17 00:00:00 2001 From: S M Y Date: Tue, 4 Dec 2018 10:51:31 +0530 Subject: [PATCH 0388/1345] Issue #000 monitor: Limit for monitoring service --- ansible/roles/stack-monitor/defaults/main.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/ansible/roles/stack-monitor/defaults/main.yml b/ansible/roles/stack-monitor/defaults/main.yml index 727e3d69c7..3e6896b7ec 100644 --- a/ansible/roles/stack-monitor/defaults/main.yml +++ b/ansible/roles/stack-monitor/defaults/main.yml @@ -1,11 +1,11 @@ -prometheus_reservation_memory: 500M -prometheus_limit_memory: 750M +prometheus_reservation_memory: 256M +prometheus_limit_memory: 512M node_exporter_reservation_memory: 16M node_exporter_limit_memory: 32M -cadvisor_reservation_memory: 400M -cadvisor_limit_memory: 400M +cadvisor_reservation_memory: 300M +cadvisor_limit_memory: 300M elasticsearch_exporter_reservation_memory: 8M elasticsearch_exporter_limit_memory: 24M @@ -26,9 +26,9 @@ azure_blob_exporter_reservation_memory: 16M azure_blob_exporter_limit_memory: 64M monitor_logstash_replicas: 1 -monitor_logstash_heap_size: 512m -monitor_logstash_reservation_memory: 512M -monitor_logstash_limit_memory: 750M +monitor_logstash_heap_size: 256m +monitor_logstash_reservation_memory: 256M +monitor_logstash_limit_memory: 512M container_cpu_usage_percentage_theshold: 90 container_memory_usage_percentage_theshold: 90 From 8d42731bb9b76480592b777acb3b3287eb8f4b3f Mon Sep 17 00:00:00 2001 From: S M Y Date: Tue, 4 Dec 2018 10:56:46 +0530 Subject: [PATCH 0389/1345] Issue #000 monitor: Limit for monitoring service --- .../roles/stack-logger/templates/stack-logger.yml | 12 ++++++++++++ .../roles/stack-monitor/templates/stack-monitor.yml | 6 ++++++ 2 files changed, 18 insertions(+) diff --git a/ansible/roles/stack-logger/templates/stack-logger.yml b/ansible/roles/stack-logger/templates/stack-logger.yml index 1b14581f19..e9ac649fd0 100644 --- a/ansible/roles/stack-logger/templates/stack-logger.yml +++ b/ansible/roles/stack-logger/templates/stack-logger.yml @@ -3,6 +3,12 @@ version: '3.3' services: kibana: image: kibana:4.6 + deploy: + resources: + reservations: + memory: "{{ logger_logstash_reservation_memory }}" + limits: + memory: "{{ logger_logstash_limit_memory }}" environment: - LOGSPOUT=ignore ports: @@ -55,6 +61,12 @@ services: oauth: image: rjshrjndrn/oauth2-proxy:2.2 + deploy: + resources: + reservations: + memory: "{{ logger_logstash_reservation_memory }}" + limits: + memory: "{{ logger_logstash_limit_memory }}" command: | -cookie-secure=false -upstream=http://proxy_proxy/oauth2 diff --git a/ansible/roles/stack-monitor/templates/stack-monitor.yml b/ansible/roles/stack-monitor/templates/stack-monitor.yml index 40ac834d46..5b1e1e12ed 100644 --- a/ansible/roles/stack-monitor/templates/stack-monitor.yml +++ b/ansible/roles/stack-monitor/templates/stack-monitor.yml @@ -307,6 +307,12 @@ services: cassandra_jmx_exporter: image: sunbird/cassandra_jmx_exporter:0.11 + deploy: + resources: + reservations: + memory: "{{ monitor_logstash_reservation_memory }}" + limits: + memory: "{{ monitor_logstash_limit_memory }}" ports: - "5556:5556" environment: From c21b5b272d9cf17586f68f170f66759b570d483b Mon Sep 17 00:00:00 2001 From: "kaliraja.ramasamy" Date: Tue, 4 Dec 2018 11:06:44 +0530 Subject: [PATCH 0390/1345] Issue #0000 fix: DO-338 updated the hostname in playbook --- ansible/postgresql-backup.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/postgresql-backup.yml b/ansible/postgresql-backup.yml index 8fa5227c9d..04ea941d4e 100644 --- a/ansible/postgresql-backup.yml +++ b/ansible/postgresql-backup.yml @@ -1,4 +1,4 @@ -- hosts: postgresql-backup +- hosts: postgres become: yes vars_files: - ['{{inventory_dir}}/secrets.yml', 'secrets/{{env}}.yml'] From 2032c25f747236f480adad4fa76da64e23baf7f7 Mon Sep 17 00:00:00 2001 From: S M Y Date: Tue, 4 Dec 2018 11:15:45 +0530 Subject: [PATCH 0391/1345] Issue #000 monitor: Limit for monitoring service --- .../stack-monitor/tasks/docker-service-replicas-exporter.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/stack-monitor/tasks/docker-service-replicas-exporter.yml b/ansible/roles/stack-monitor/tasks/docker-service-replicas-exporter.yml index 6e82639db1..c53f98691d 100644 --- a/ansible/roles/stack-monitor/tasks/docker-service-replicas-exporter.yml +++ b/ansible/roles/stack-monitor/tasks/docker-service-replicas-exporter.yml @@ -10,4 +10,4 @@ ignore_errors: yes - name: Run container - shell: "docker run -d --name={{docker_service_replicas_exporter_name}} --restart=always -p 9258:9258 -v /var/run/docker.sock:/var/run/docker.sock -v {{ monitor_config_files_dest_dir }}/docker_service_replicas_exporter_config.yml:/etc/docker-service-replicas-exporter/config.yml sunbird/docker-service-replicas-exporter:{{docker_service_replicas_exporter_version}} /etc/docker-service-replicas-exporter/config.yml" + shell: "docker run -d --name={{docker_service_replicas_exporter_name}} --restart=always -p 9258:9258 -v /var/run/docker.sock:/var/run/docker.sock -v {{ monitor_config_files_dest_dir }}/docker_service_replicas_exporter_config.yml:/etc/docker-service-replicas-exporter/config.yml sunbird/docker-service-replicas-exporter:{{docker_service_replicas_exporter_version}} --limit-memory 256M /etc/docker-service-replicas-exporter/config.yml" From 24eff054130652c0f28389b8735715e3ca065ab3 Mon Sep 17 00:00:00 2001 From: S M Y Date: Tue, 4 Dec 2018 16:47:25 +0530 Subject: [PATCH 0392/1345] Issue #000 api: metrics api onboarding --- ansible/roles/kong-api/defaults/main.yml | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/ansible/roles/kong-api/defaults/main.yml b/ansible/roles/kong-api/defaults/main.yml index 12ac8d6919..cb599195c0 100644 --- a/ansible/roles/kong-api/defaults/main.yml +++ b/ansible/roles/kong-api/defaults/main.yml @@ -3422,6 +3422,18 @@ kong_apis: - {name: 'rate-limiting', config.policy: "local", config.hour: "{{ medium_rate_limit_per_hour }}"} - {name: 'request-size-limiting', config.allowed_payload_size: "{{ small_request_size_limit }}" } + - name: "channelSpecificTelemetryMetrics" + request_path: "{{ data_service_prefix }}/metrics" + upstream_url: "{{ sunbird_analytics_api_base_url }}/data/v3/metrics" + strip_request_path: true + plugins: + - {name: 'jwt'} + - {name: 'cors'} + - {name: 'statsd', config.metrics: "{{ statsd_metrics }}" } + - {name: 'acl', config.whitelist: 'publicUser'} + - {name: 'rate-limiting', config.policy: "local", config.hour: "{{ medium_rate_limit_per_hour }}"} + - {name: 'request-size-limiting', config.allowed_payload_size: "{{ small_request_size_limit }}" } + - name: "configRefresh" request_path: "{{ config_service_prefix }}/v1/refresh" upstream_url: "{{ config_service_url }}/config-service/v1/refresh" From db17eb388b68401a4fcfa488aa3372096db93b4f Mon Sep 17 00:00:00 2001 From: S M Y Date: Tue, 4 Dec 2018 16:55:42 +0530 Subject: [PATCH 0393/1345] Issue #000 env: env vars for release-1.12 --- ansible/roles/kong-api/defaults/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/kong-api/defaults/main.yml b/ansible/roles/kong-api/defaults/main.yml index cb599195c0..2a474e26a9 100644 --- a/ansible/roles/kong-api/defaults/main.yml +++ b/ansible/roles/kong-api/defaults/main.yml @@ -3422,7 +3422,7 @@ kong_apis: - {name: 'rate-limiting', config.policy: "local", config.hour: "{{ medium_rate_limit_per_hour }}"} - {name: 'request-size-limiting', config.allowed_payload_size: "{{ small_request_size_limit }}" } - - name: "channelSpecificTelemetryMetrics" + - name: "dataproductsCumulativeMetrics" request_path: "{{ data_service_prefix }}/metrics" upstream_url: "{{ sunbird_analytics_api_base_url }}/data/v3/metrics" strip_request_path: true From 8bc7f2921e4134d3056ee4e0ecc82c9aecbacd90 Mon Sep 17 00:00:00 2001 From: S M Y Date: Tue, 4 Dec 2018 17:45:53 +0530 Subject: [PATCH 0394/1345] Issue #000 api: api onboarding dataproductsCumulativeMetrics --- ansible/roles/kong-api/defaults/main.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ansible/roles/kong-api/defaults/main.yml b/ansible/roles/kong-api/defaults/main.yml index 2a474e26a9..03fa4b7cab 100644 --- a/ansible/roles/kong-api/defaults/main.yml +++ b/ansible/roles/kong-api/defaults/main.yml @@ -3423,8 +3423,8 @@ kong_apis: - {name: 'request-size-limiting', config.allowed_payload_size: "{{ small_request_size_limit }}" } - name: "dataproductsCumulativeMetrics" - request_path: "{{ data_service_prefix }}/metrics" - upstream_url: "{{ sunbird_analytics_api_base_url }}/data/v3/metrics" + request_path: "{{ data_service_prefix }}/data/v3/metrics" + upstream_url: "{{ sunbird_analytics_api_base_url }}/metrics" strip_request_path: true plugins: - {name: 'jwt'} From cb5863a81986475317cf36a2b9cbc96500d31aef Mon Sep 17 00:00:00 2001 From: S M Y Date: Tue, 4 Dec 2018 17:49:32 +0530 Subject: [PATCH 0395/1345] Issue #000 api: api onboarding dataproductsCumulativeMetrics --- ansible/roles/kong-api/defaults/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/kong-api/defaults/main.yml b/ansible/roles/kong-api/defaults/main.yml index 03fa4b7cab..c3f7e2a42f 100644 --- a/ansible/roles/kong-api/defaults/main.yml +++ b/ansible/roles/kong-api/defaults/main.yml @@ -3423,7 +3423,7 @@ kong_apis: - {name: 'request-size-limiting', config.allowed_payload_size: "{{ small_request_size_limit }}" } - name: "dataproductsCumulativeMetrics" - request_path: "{{ data_service_prefix }}/data/v3/metrics" + request_path: "{{ data_service_prefix }}/v3/metrics" upstream_url: "{{ sunbird_analytics_api_base_url }}/metrics" strip_request_path: true plugins: From 16666402e9bddadf0902cbd65ae68f51c5dda895 Mon Sep 17 00:00:00 2001 From: "kaliraja.ramasamy" Date: Tue, 4 Dec 2018 17:43:02 +0530 Subject: [PATCH 0396/1345] Issue #0000 fix: DO-338 adding the python script to take the backup --- ansible/roles/cassandra-backup/tasks/main.yml | 39 +++--- .../templates/cassandra_backup.j2 | 131 +++++++++--------- 2 files changed, 84 insertions(+), 86 deletions(-) diff --git a/ansible/roles/cassandra-backup/tasks/main.yml b/ansible/roles/cassandra-backup/tasks/main.yml index 891b9abf4f..aef9c4e1c4 100755 --- a/ansible/roles/cassandra-backup/tasks/main.yml +++ b/ansible/roles/cassandra-backup/tasks/main.yml @@ -1,35 +1,32 @@ - name: Create the directory become: yes - file: path=/data/cassandra/ state=directory recurse=yes - run_once: true + file: path=/data/cassandra/backup state=directory recurse=yes - name: copy the backup script become: yes - template: src=cassandra_backup.j2 dest=/home/deployer/cassandra_backup.sh mode=0755 - run_once: true + template: src=cassandra_backup.j2 dest=/data/cassandra/backup/cassandra_backup.py mode=0755 + +- set_fact: + cassandra_backup_gzip_file_name: "cassandra-backup-{{ lookup('pipe', 'date +%Y%m%d') }}" + +- set_fact: + cassandra_backup_gzip_file_path: "{{ cassandra_backup_dir }}/{{ cassandra_backup_gzip_file_name }}.tar.gz" - name: run the backup script become: yes - shell: sh /home/deployer/cassandra_backup.sh - run_once: true + shell: python cassandra_backup.py "{{ cassandra_backup_gzip_file_name }}" -d "{{ data_dir }}" + args: + chdir: /data/cassandra/backup + async: 7200 + poll: 30 - name: Check doc_root path shell: ls -all /data/cassandra/backup/ register: doc_data - run_once: true - name: print doc_root to console debug: - var: doc_data - run_once: true - -- set_fact: - cassandra_backup_gzip_file_name: "cassandra_backup_{{ lookup('pipe', 'date +%Y%m%d') }}.zip" - run_once: true - -- set_fact: - cassandra_backup_gzip_file_path: "{{ cassandra_backup_dir }}/{{ cassandra_backup_gzip_file_name }}" - run_once: true + var: doc_data - name: Ensure azure blob storage container exists command: az storage container create --name {{ cassandra_backup_azure_container_name }} @@ -37,18 +34,14 @@ environment: AZURE_STORAGE_ACCOUNT: "{{ cassandra_backup_azure_storage_account_name }}" AZURE_STORAGE_KEY: "{{ cassandra_backup_azure_storage_access_key }}" - run_once: true - name: Upload to azure blob storage - command: az storage blob upload --name {{ cassandra_backup_gzip_file_name }} --file {{ cassandra_backup_gzip_file_path }} --container-name {{ cassandra_backup_azure_container_name }} + command: az storage blob upload --name "{{ cassandra_backup_gzip_file_name }}".tar.gz --file {{ cassandra_backup_gzip_file_path }} --container-name {{ cassandra_backup_azure_container_name }} environment: AZURE_STORAGE_ACCOUNT: "{{ cassandra_backup_azure_storage_account_name }}" AZURE_STORAGE_KEY: "{{ cassandra_backup_azure_storage_access_key }}" async: 3600 poll: 10 - run_once: true - name: clean up backup dir after upload - file: path="{{ cassandra_backup_dir }}" state=absent - run_once: true - + file: path="{{ cassandra_backup_dir }}" state=absent \ No newline at end of file diff --git a/ansible/roles/cassandra-backup/templates/cassandra_backup.j2 b/ansible/roles/cassandra-backup/templates/cassandra_backup.j2 index 191c3b0bd3..5c6da8ca16 100644 --- a/ansible/roles/cassandra-backup/templates/cassandra_backup.j2 +++ b/ansible/roles/cassandra-backup/templates/cassandra_backup.j2 @@ -1,63 +1,68 @@ -#!/bin/sh - -export PATH=/sbin:/bin:/usr/sbin:/usr/bin:/opt/java/bin - -DATE=`date +%Y%m%d` - -SNAME="snapshot-$DATE" - -BACKUPDIRECTORY="/data/cassandra/backup/" - -if [ ! -d "$BACKUPDIRECTORY" ]; then - echo "Directory $BACKUPDIRECTORY not found, creating..." - mkdir $BACKUPDIRECTORY -fi - -if [ ! -d "$BACKUPDIRECTORY" ]; then - echo "Directory $BACKUPDIRECTORY not found, exit..." - exit -fi - -echo -echo "Snapshot name: $SNAME" -echo "Clear all snapshots" -nodetool -h 127.0.0.1 clearsnapshot - -cd $BACKUPDIRECTORY -pwd -rm -rf * - -echo "Taking snapshot" -nodetool -h 127.0.0.1 snapshot -t $SNAME -SFILES=`ls -1 -d /var/lib/cassandra/data/*/*/snapshots/$SNAME` -for f in $SFILES -do - echo "Process snapshot $f" - TABLE=`echo $f | awk -F/ '{print $(NF-2)}'` - KEYSPACE=`echo $f | awk -F/ '{print $(NF-3)}'` - - if [ ! -d "$BACKUPDIRECTORY/$SNAME" ]; then - mkdir $BACKUPDIRECTORY/$SNAME - fi - - if [ ! -d "$BACKUPDIRECTORY/$SNAME/$KEYSPACE" ]; then - mkdir $BACKUPDIRECTORY/$SNAME/$KEYSPACE - fi - - mkdir $BACKUPDIRECTORY/$SNAME/$KEYSPACE/$TABLE - find $f -maxdepth 1 -type f -exec mv -t $BACKUPDIRECTORY/$SNAME/$KEYSPACE/$TABLE/ {} + -done -cd /var/lib/cassandra/ -zip -r cassandra_backup_`date +%Y%m%d`.zip data -cp -r cassandra_backup_`date +%Y%m%d`.zip $BACKUPDIRECTORY -cd - -# cd $BACKUPDIRECTORY -# zip -r cassandra_backup_`date +%Y%m%d`.zip snap* -echo "Clear Incremental Backups" - -SFILES=`ls -1 -d /var/lib/cassandra/data/*/*/backups/` -for f in $SFILES -do - echo "Clear $f" - rm -f $f* -done \ No newline at end of file +#!/usr/bin/env python3 + +# Author: Rajesh Rajendran + +''' +Create a snapshot and create tar ball in targetdirectory name + +usage: script snapshot_name + +eg: ./cassandra_backup.py my_snapshot +''' + +from os import path, walk, sep, system, getcwd, makedirs +from argparse import ArgumentParser +from shutil import rmtree, ignore_patterns, copytree +from re import match, compile +from sys import exit +from tempfile import mkdtemp + +parser = ArgumentParser(description="Create a snapshot and create tar ball inside tardirectory") +parser.add_argument("-d","--datadirectory", metavar="datadir", default='/data/cassandra/data', help="path to create the tarball. Default /var/lib/cassadra/data") +parser.add_argument("snapshotname", help="name in which you want to take the snapshot") +parser.add_argument("-t","--tardirectory", metavar="tardir", default=getcwd(), help="path to create the tarball. Default {}".format(getcwd())) +args = parser.parse_args() + +# Create temporary directory to copy data +tmpdir=mkdtemp() +makedirs(tmpdir+sep+"cassandra_backup") + +def copy(): + ''' + Copying the data sanpshots to the target directory + ''' + root_levels = args.datadirectory.count(sep) + ignore_list = compile(tmpdir+sep+"cassandra_backup"+sep+'(system|system|systemtauth|system_traces|system_schema|system_distributed)') + + try: + for root, dirs, files in walk(args.datadirectory): + root_target_dir=tmpdir+sep+"cassandra_backup"+sep+sep.join(root.split(sep)[root_levels+1:-2]) + if match(ignore_list, root_target_dir): + continue + if root.split(sep)[-1] == args.snapshotname: + copytree(src=root, dst=root_target_dir, ignore=ignore_patterns('.*')) + except Exception as e: + print(e) + +# Creating schema +command = "cqlsh -e 'DESC SCHEMA' > {}/cassandra_backup/db_schema.cql".format(tmpdir) +rc = system(command) +if rc != 0: + print("Couldn't backup schema, exiting...") + exit(1) +print("Schema backup completed. saved in {}/cassandra_backup/db_schema.sql".format(tmpdir)) +# Cleaning all old snapshots +command = "nodetool clearsnapshot" +system(command) +# Creating snapshots +command = "nodetool snapshot -t {}".format(args.snapshotname) +rc = system(command) +if rc == 0: + print("Snapshot taken.") + copy() + print("Making a tarball: {}.tar.gz".format(args.snapshotname)) + command = "cd {} && tar -czvf {}/{}.tar.gz *".format(tmpdir, args.tardirectory, args.snapshotname) + system(command) + # Cleaning up backup directory + rmtree(tmpdir) + print("Cassandra backup completed and stored in {}/{}.tar.gz".format(args.tardirectory,args.snapshotname)) \ No newline at end of file From ab55cc2ccaa672d076b912b4e10e37f7c3bec2ff Mon Sep 17 00:00:00 2001 From: Harsha Date: Tue, 4 Dec 2018 19:00:30 +0530 Subject: [PATCH 0397/1345] Issue #00 fix: prometheus backup (#274) --- .../roles/prometheus-backup/tasks/main.yml | 38 ++++++++++++------- 1 file changed, 24 insertions(+), 14 deletions(-) diff --git a/ansible/roles/prometheus-backup/tasks/main.yml b/ansible/roles/prometheus-backup/tasks/main.yml index d1cba71cfc..db044fc55d 100644 --- a/ansible/roles/prometheus-backup/tasks/main.yml +++ b/ansible/roles/prometheus-backup/tasks/main.yml @@ -1,19 +1,29 @@ -- name: ensure backup dir exists - file: path="{{ prometheus_backup_dir }}" state=directory +- name: ensure prometheus is stopped before backup + shell: "docker service scale monitor_prometheus=0" + delegate_to: "{{groups['swarm-bootstrap-manager'][0]}}" -- name: ensure backup dir is empty - shell: "rm -rf {{ prometheus_backup_dir }}/*" +- name: Starting Prometheus backup + block: + - name: ensure backup dir exists + file: path="{{ prometheus_backup_dir }}" state=directory -- set_fact: - prometheus_backup_gzip_file_name: "prometheus_backup_{{ lookup('pipe', 'date +%Z-%Y-%m-%d-%H-%M-%S') }}.tar.gz" + - name: ensure backup dir is empty + shell: "rm -rf {{ prometheus_backup_dir }}/*" -- set_fact: - prometheus_backup_gzip_file_path: "{{ prometheus_backup_dir }}/{{ prometheus_backup_gzip_file_name }}" + - set_fact: + prometheus_backup_gzip_file_name: "prometheus_backup_{{ lookup('pipe', 'date +%Z-%Y-%m-%d-%H-%M-%S') }}.tar.gz" -- name: Save backup - shell: "tar -czf {{ prometheus_backup_gzip_file_path }} -P {{prometheus_data_dir}} --warning=no-file-changed" - async: 3600 - poll: 10 + - set_fact: + prometheus_backup_gzip_file_path: "{{ prometheus_backup_dir }}/{{ prometheus_backup_gzip_file_name }}" + + - name: Save backup + shell: "tar czf {{ prometheus_backup_gzip_file_path }} {{prometheus_data_dir}}" + async: 3600 + poll: 10 + always: + - name: ensure prometheus is started after backup + shell: "docker service scale monitor_prometheus=1" + delegate_to: "{{groups['swarm-bootstrap-manager'][0]}}" - name: Ensure azure blob storage container exists command: az storage container create --name {{ prometheus_backup_azure_container_name }} @@ -27,8 +37,8 @@ environment: AZURE_STORAGE_ACCOUNT: "{{ backup_storage_name }}" AZURE_STORAGE_KEY: "{{ backup_storage_key }}" - async: 5000 + async: 3600 poll: 10 - name: clean up backup dir after upload - file: path="{{ prometheus_backup_dir }}" state=absent +file: path="{{ prometheus_backup_dir }}" state=absent From ce7e64956b0aa131efd3705aa6bad09036f19978 Mon Sep 17 00:00:00 2001 From: S M Y Date: Wed, 5 Dec 2018 11:49:56 +0530 Subject: [PATCH 0398/1345] Issue #000 proxy: proxy changes --- .../roles/stack-proxy/templates/proxy-default.conf | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/ansible/roles/stack-proxy/templates/proxy-default.conf b/ansible/roles/stack-proxy/templates/proxy-default.conf index ec31857cfd..7c2454edef 100644 --- a/ansible/roles/stack-proxy/templates/proxy-default.conf +++ b/ansible/roles/stack-proxy/templates/proxy-default.conf @@ -379,6 +379,20 @@ location ~* ^/content-plugins/(.*) { proxy_send_timeout 60; proxy_read_timeout 70; } + + location /action/data/v3/metrics { + set $target http://api-manager_kong:8000; + rewrite ^/action/data/v3/metrics/(.*) /data/v3/metrics/$1 break; + proxy_pass $target; + + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Scheme $scheme; + proxy_connect_timeout 5; + proxy_send_timeout 60; + proxy_read_timeout 70; + } + {# Including custom configuration #} {{ proxy_custom_config }} client_max_body_size 60M; From 42a2c66206b7e2b741bc28cd5ea2ced9a44be2bf Mon Sep 17 00:00:00 2001 From: S M Y Date: Wed, 5 Dec 2018 12:16:00 +0530 Subject: [PATCH 0399/1345] Issue #000 vars: content service vars --- ansible/inventories/sample/group_vars/sample | 2 ++ .../roles/stack-sunbird/templates/sunbird_content-service.env | 2 ++ 2 files changed, 4 insertions(+) diff --git a/ansible/inventories/sample/group_vars/sample b/ansible/inventories/sample/group_vars/sample index f1f5cea53f..0cf562a448 100644 --- a/ansible/inventories/sample/group_vars/sample +++ b/ansible/inventories/sample/group_vars/sample @@ -371,3 +371,5 @@ sunbird_authorization: sunbird_lms_base_url: sunbird_lock_expiry_time: 1800 sunbird_content_service_local_base_url: http://content-service:5000 +sunbird_kafka_host: +sunbird_qrimage_topic: diff --git a/ansible/roles/stack-sunbird/templates/sunbird_content-service.env b/ansible/roles/stack-sunbird/templates/sunbird_content-service.env index b050b9f1d2..a14e24a8e9 100644 --- a/ansible/roles/stack-sunbird/templates/sunbird_content-service.env +++ b/ansible/roles/stack-sunbird/templates/sunbird_content-service.env @@ -40,3 +40,5 @@ sunbird_language_service_api_key={{sunbird_language_service_api_key}} sunbird_language_service_api_base_url={{sunbird_language_service_api_base_url}} sunbird_portal_base_url={{sunbird_portal_base_url}} sunbird_cassandra_urls={{sunbird_cassandra_urls}} +sunbird_kafka_host={{sunbird_kafka_host}} +sunbird_qrimage_topic={{sunbird_qrimage_topic}} From 7d55f12bd6568bbe21bcc9ad22caf2071e054eea Mon Sep 17 00:00:00 2001 From: S M Y Date: Wed, 5 Dec 2018 18:12:07 +0530 Subject: [PATCH 0400/1345] Issue #000 env: env vars for content service --- ansible/inventories/sample/group_vars/sample | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/inventories/sample/group_vars/sample b/ansible/inventories/sample/group_vars/sample index 0cf562a448..114f1271a7 100644 --- a/ansible/inventories/sample/group_vars/sample +++ b/ansible/inventories/sample/group_vars/sample @@ -372,4 +372,4 @@ sunbird_lms_base_url: sunbird_lock_expiry_time: 1800 sunbird_content_service_local_base_url: http://content-service:5000 sunbird_kafka_host: -sunbird_qrimage_topic: +sunbird_qrimage_topic: local.qrimage.request From a1366d25f35abfc2037201639f91023b27cfdcc2 Mon Sep 17 00:00:00 2001 From: Harsha Date: Wed, 5 Dec 2018 20:20:52 +0530 Subject: [PATCH 0401/1345] Issue #00: prometheus backup (#275) --- ansible/roles/prometheus-backup/tasks/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/prometheus-backup/tasks/main.yml b/ansible/roles/prometheus-backup/tasks/main.yml index db044fc55d..251fa96c8d 100644 --- a/ansible/roles/prometheus-backup/tasks/main.yml +++ b/ansible/roles/prometheus-backup/tasks/main.yml @@ -41,4 +41,4 @@ poll: 10 - name: clean up backup dir after upload -file: path="{{ prometheus_backup_dir }}" state=absent + file: path="{{ prometheus_backup_dir }}" state=absent From 6dfae5586c24df741fa0a43981e5f47b7dbc78e2 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Thu, 6 Dec 2018 11:39:39 +0530 Subject: [PATCH 0402/1345] Issue #000 fix: prometheus DO-347 --- ansible/roles/prometheus-backup/tasks/main.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ansible/roles/prometheus-backup/tasks/main.yml b/ansible/roles/prometheus-backup/tasks/main.yml index 251fa96c8d..274c23d0cc 100644 --- a/ansible/roles/prometheus-backup/tasks/main.yml +++ b/ansible/roles/prometheus-backup/tasks/main.yml @@ -17,9 +17,9 @@ prometheus_backup_gzip_file_path: "{{ prometheus_backup_dir }}/{{ prometheus_backup_gzip_file_name }}" - name: Save backup - shell: "tar czf {{ prometheus_backup_gzip_file_path }} {{prometheus_data_dir}}" - async: 3600 - poll: 10 + archive: + path: "{{prometheus_data_dir}}" + dest: "{{prometheus_backup_gzip_file_path}}" always: - name: ensure prometheus is started after backup shell: "docker service scale monitor_prometheus=1" From 1d7457fe7a882510046208cdcf448861b717f78c Mon Sep 17 00:00:00 2001 From: S M Y Date: Thu, 6 Dec 2018 12:25:38 +0530 Subject: [PATCH 0403/1345] Issue #000 monitor: Fixing False Alerts in monitoring Stack --- ansible/roles/stack-monitor/defaults/main.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/ansible/roles/stack-monitor/defaults/main.yml b/ansible/roles/stack-monitor/defaults/main.yml index 3e6896b7ec..35c56de14b 100644 --- a/ansible/roles/stack-monitor/defaults/main.yml +++ b/ansible/roles/stack-monitor/defaults/main.yml @@ -143,7 +143,6 @@ service_blackbox_checks: - service_name: 'player_player' probe_module: http_2xx targets: - - "https://{{api__host}}" - "http://player_player:3000" - service_name: 'content-service' probe_module: http_2xx @@ -156,7 +155,7 @@ service_blackbox_checks: - service_name: 'logger_oauth' probe_module: http_2xx targets: - - "{{proto}}://{{proxy_server_name}}/dashboard" + - "http://oauth:4111/robots.txt" - service_name: 'cassandra' probe_module: tcp_connect targets: From 8177b7137296e82c5688cf34698811358f006804 Mon Sep 17 00:00:00 2001 From: S M Y Date: Fri, 7 Dec 2018 12:06:35 +0530 Subject: [PATCH 0404/1345] Issue #000 agent: Logging Stack memory limit --- ansible/roles/stack-logger/defaults/main.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ansible/roles/stack-logger/defaults/main.yml b/ansible/roles/stack-logger/defaults/main.yml index db97d4d232..0a840fbf8e 100644 --- a/ansible/roles/stack-logger/defaults/main.yml +++ b/ansible/roles/stack-logger/defaults/main.yml @@ -1,8 +1,8 @@ # Please change memory requirements if heap_size is changed logger_logstash_heap_size: 512m logger_logstash_replicas: 2 -logger_logstash_reservation_memory: 1g -logger_logstash_limit_memory: 2g +logger_logstash_reservation_memory: 512M +logger_logstash_limit_memory: 750M kibana_oauth_authenticated_email_domains: [] kibana_oauth_authenticated_email_ids: [] From a0fd5d8c22539641b2b253403a3e2541d3ecbb18 Mon Sep 17 00:00:00 2001 From: "kaliraja.ramasamy" Date: Fri, 7 Dec 2018 19:10:46 +0530 Subject: [PATCH 0405/1345] Issue #0000 fix: DO-327 added the new playbook --- ansible/docker_image_push.yml | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 ansible/docker_image_push.yml diff --git a/ansible/docker_image_push.yml b/ansible/docker_image_push.yml new file mode 100644 index 0000000000..ac9d84ee15 --- /dev/null +++ b/ansible/docker_image_push.yml @@ -0,0 +1,17 @@ +--- +- name: "Push docker images to Azure container registory" + hosts: jenkins_build + become: yes + tasks: + - name: login to ACR + docker_login: + registry: {{ docker_registery_url }} + username: {{ docker_registery_user }} + password: {{ vault_docker_registory }} + reauth: yes + + - name: Push image to registry + docker_image: + name: {{ image_name }} + repository: {{ docker_registry_url }}/{{ image_name}} + push: yes From 066fceff34faef33318c3600c0e9f658443e35ca Mon Sep 17 00:00:00 2001 From: S M Y Date: Mon, 10 Dec 2018 10:28:27 +0530 Subject: [PATCH 0406/1345] Issue #000 cqlsh: Changing the cassandra migration repo --- ansible/roles/cassandra-cql-update/tasks/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/cassandra-cql-update/tasks/main.yml b/ansible/roles/cassandra-cql-update/tasks/main.yml index f47ce6f47b..dfb637163a 100644 --- a/ansible/roles/cassandra-cql-update/tasks/main.yml +++ b/ansible/roles/cassandra-cql-update/tasks/main.yml @@ -52,7 +52,7 @@ - name: download become: yes - command: wget https://github.com/project-sunbird/sunbird-utils/releases/download/release-1.11/cassandra-migration-0.0.1-SNAPSHOT-jar-with-dependencies.jar + command: wget https://github.com/project-sunbird/sunbird-utils/releases/download/release-1.12/cassandra-migration-0.0.1-SNAPSHOT-jar-with-dependencies.jar args: chdir: /tmp run_once: true From 8230ff69c1aef353e2d73fad5d0326af731dff6c Mon Sep 17 00:00:00 2001 From: S M Y Date: Mon, 10 Dec 2018 10:34:43 +0530 Subject: [PATCH 0407/1345] Issue #000 cqlsh: Changing the cassandra migration repo --- ansible/roles/cassandra-cql-update/tasks/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/cassandra-cql-update/tasks/main.yml b/ansible/roles/cassandra-cql-update/tasks/main.yml index f47ce6f47b..dfb637163a 100644 --- a/ansible/roles/cassandra-cql-update/tasks/main.yml +++ b/ansible/roles/cassandra-cql-update/tasks/main.yml @@ -52,7 +52,7 @@ - name: download become: yes - command: wget https://github.com/project-sunbird/sunbird-utils/releases/download/release-1.11/cassandra-migration-0.0.1-SNAPSHOT-jar-with-dependencies.jar + command: wget https://github.com/project-sunbird/sunbird-utils/releases/download/release-1.12/cassandra-migration-0.0.1-SNAPSHOT-jar-with-dependencies.jar args: chdir: /tmp run_once: true From 562c58462a3143eadc918af0ddf93d5c18f3050e Mon Sep 17 00:00:00 2001 From: "kaliraja.ramasamy" Date: Mon, 10 Dec 2018 12:03:53 +0530 Subject: [PATCH 0408/1345] Issue #0000 fix: DO-327 added the jenkinsfile --- pipelines/adminutils/Jenkinsfile | 34 ++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 pipelines/adminutils/Jenkinsfile diff --git a/pipelines/adminutils/Jenkinsfile b/pipelines/adminutils/Jenkinsfile new file mode 100644 index 0000000000..55fac2277f --- /dev/null +++ b/pipelines/adminutils/Jenkinsfile @@ -0,0 +1,34 @@ + +// Importing deploy configuration +@Library('deploy-conf') _ + +// Defining env specific variables +def getValues() { + if (environment == "dev") { + return [env: 'dev', + agent: 'general-dev'] + } + else { + return [env: 'staging', + agent: 'general-staging'] + } +} + +// Getting env specific values +def values = getValues() +def publicBranch = gitBranch + +copyArtifacts filter: 'metadata.json', projectName: 'test_jobs/player_build' +def image_name = sh 'cat metadata.json' + + +// Backing up cassandra +ansiblePlugin{ + agent = values.agent + branch = publicBranch + image_name = image_name + scmUrl = 'https =//github.com/project-sunbird/sunbird-devops.git' + env = values.env + playBook = 'docker_push.yml' + ansibleExtraArgs = '--vault-password-file /run/secrets/vault-pass' +} From c04793c04b06068f5890668b986a21db83d82e0a Mon Sep 17 00:00:00 2001 From: "kaliraja.ramasamy" Date: Mon, 10 Dec 2018 12:15:38 +0530 Subject: [PATCH 0409/1345] Issue #0000 fix: DO-327 added the jenkinsfile --- pipelines/adminutils/Jenkinsfile | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/pipelines/adminutils/Jenkinsfile b/pipelines/adminutils/Jenkinsfile index 55fac2277f..bbba4ad872 100644 --- a/pipelines/adminutils/Jenkinsfile +++ b/pipelines/adminutils/Jenkinsfile @@ -18,17 +18,17 @@ def getValues() { def values = getValues() def publicBranch = gitBranch -copyArtifacts filter: 'metadata.json', projectName: 'test_jobs/player_build' -def image_name = sh 'cat metadata.json' - +copyArtifacts filter: 'metadata.json', projectName: 'staging/testabc' +imageName = sh(returnStdout: true, script: 'cat metadata.json').trim() +println imageName // Backing up cassandra ansiblePlugin{ agent = values.agent branch = publicBranch - image_name = image_name + image_name = values.image_name scmUrl = 'https =//github.com/project-sunbird/sunbird-devops.git' env = values.env playBook = 'docker_push.yml' - ansibleExtraArgs = '--vault-password-file /run/secrets/vault-pass' + ansibleExtraArgs = '--vault-password-file /run/secrets/vault-pass, image_name' } From a92c2189e349f34b5668fdff65c0e546ed4c0134 Mon Sep 17 00:00:00 2001 From: "kaliraja.ramasamy" Date: Mon, 10 Dec 2018 12:21:29 +0530 Subject: [PATCH 0410/1345] Issue #0000 fix: DO-327 added the jenkinsfile --- pipelines/adminutils/Jenkinsfile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pipelines/adminutils/Jenkinsfile b/pipelines/adminutils/Jenkinsfile index bbba4ad872..fb1f757368 100644 --- a/pipelines/adminutils/Jenkinsfile +++ b/pipelines/adminutils/Jenkinsfile @@ -19,14 +19,14 @@ def values = getValues() def publicBranch = gitBranch copyArtifacts filter: 'metadata.json', projectName: 'staging/testabc' -imageName = sh(returnStdout: true, script: 'cat metadata.json').trim() -println imageName +env.imagename = sh(returnStdout: true, script: 'cat metadata.json').trim() +println imagename // Backing up cassandra ansiblePlugin{ agent = values.agent branch = publicBranch - image_name = values.image_name + image_name = values.imagename scmUrl = 'https =//github.com/project-sunbird/sunbird-devops.git' env = values.env playBook = 'docker_push.yml' From cacf2b0061df22c092b14bf90b3919747141be4f Mon Sep 17 00:00:00 2001 From: "kaliraja.ramasamy" Date: Mon, 10 Dec 2018 12:24:49 +0530 Subject: [PATCH 0411/1345] Issue #0000 fix: DO-327 added the jenkinsfile --- pipelines/adminutils/Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pipelines/adminutils/Jenkinsfile b/pipelines/adminutils/Jenkinsfile index fb1f757368..3f0acc517e 100644 --- a/pipelines/adminutils/Jenkinsfile +++ b/pipelines/adminutils/Jenkinsfile @@ -26,7 +26,7 @@ println imagename ansiblePlugin{ agent = values.agent branch = publicBranch - image_name = values.imagename + image_name = imagename scmUrl = 'https =//github.com/project-sunbird/sunbird-devops.git' env = values.env playBook = 'docker_push.yml' From ede7da37fa2d79653517145c52509fb640b1ab30 Mon Sep 17 00:00:00 2001 From: "kaliraja.ramasamy" Date: Mon, 10 Dec 2018 12:32:58 +0530 Subject: [PATCH 0412/1345] Issue #0000 fix: DO-327 added the jenkinsfile --- pipelines/adminutils/Jenkinsfile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pipelines/adminutils/Jenkinsfile b/pipelines/adminutils/Jenkinsfile index 3f0acc517e..abc0f7b17d 100644 --- a/pipelines/adminutils/Jenkinsfile +++ b/pipelines/adminutils/Jenkinsfile @@ -18,17 +18,17 @@ def getValues() { def values = getValues() def publicBranch = gitBranch -copyArtifacts filter: 'metadata.json', projectName: 'staging/testabc' +copyArtifacts filter: 'metadata.json', projectName: 'test/player_build' env.imagename = sh(returnStdout: true, script: 'cat metadata.json').trim() println imagename // Backing up cassandra ansiblePlugin{ - agent = values.agent + agent = build-slave branch = publicBranch image_name = imagename scmUrl = 'https =//github.com/project-sunbird/sunbird-devops.git' env = values.env playBook = 'docker_push.yml' - ansibleExtraArgs = '--vault-password-file /run/secrets/vault-pass, image_name' + ansibleExtraArgs = ' agent, --vault-password-file /run/secrets/vault-pass, image_name' } From 0379a5cbbe03187dd66588a33b0fd897c258e200 Mon Sep 17 00:00:00 2001 From: "kaliraja.ramasamy" Date: Wed, 12 Dec 2018 11:04:10 +0530 Subject: [PATCH 0413/1345] Issue #0000 fix: added the jenkinsfile for push and jenkins plugin --- ansible/docker_image_push.yml | 16 ++++++++------ pipelines/deploy/player/Jenkinsfile.push | 27 ++++++++++++++++++++++++ vars/ansiblePlugin.groovy | 23 ++++++++++++++++++++ 3 files changed, 60 insertions(+), 6 deletions(-) create mode 100644 pipelines/deploy/player/Jenkinsfile.push create mode 100644 vars/ansiblePlugin.groovy diff --git a/ansible/docker_image_push.yml b/ansible/docker_image_push.yml index ac9d84ee15..33c3acde01 100644 --- a/ansible/docker_image_push.yml +++ b/ansible/docker_image_push.yml @@ -1,17 +1,21 @@ --- - name: "Push docker images to Azure container registory" - hosts: jenkins_build + hosts: localhost + vars_files: + - ['{{inventory_path}}/secrets.yml'] become: yes + environment: + PYTHONPATH: /home/ops/.local/lib/python2.7/site-packages/ tasks: - name: login to ACR docker_login: - registry: {{ docker_registery_url }} - username: {{ docker_registery_user }} - password: {{ vault_docker_registory }} + registry: "{{ vault_docker_registery_url }}" + username: "{{ vault_docker_registery_user }}" + password: "{{ vault_docker_registory }}" reauth: yes - name: Push image to registry docker_image: - name: {{ image_name }} - repository: {{ docker_registry_url }}/{{ image_name}} + name: "{{ image_name }}" + repository: "{{ vault_docker_registery_url }}/{{ image_name}}" push: yes diff --git a/pipelines/deploy/player/Jenkinsfile.push b/pipelines/deploy/player/Jenkinsfile.push new file mode 100644 index 0000000000..f483ca3ab9 --- /dev/null +++ b/pipelines/deploy/player/Jenkinsfile.push @@ -0,0 +1,27 @@ +@Library('deploy-conf') _ + +def getValues(){ + def parentDir = sh(returnStdout: true, script: 'basename $(dirname $PWD)').trim() + if (parentDir == "dev") + return [label: 'bronze', env: 'dev', agent: 'master'] + else if (parentDir == "staging") + return [label: 'silver', env: 'staging', agent: 'master'] + } + +node(){ +def values = getValues() +def publicBranch = gitBranch + +copyArtifacts filter: 'metadata.json', projectName: 'test_jobs/player_build' +env.imageName = sh(returnStdout: true, script: 'cat metadata.json').trim() + +ansiblePlugin { + agent = "11.3.0.4-ed3fd24c" + branch = publicBranch + scmUrl = 'https://github.com/ekstep/sunbird-devops.git' + artifactLabel = values.label + env = values.env + playbook = docker_image_push.yml + ansibleExtraArgs = "\"inventory_path=dev image_name=$imageName\" --vault-password-file /run/secrets/vault-pass" + } +} diff --git a/vars/ansiblePlugin.groovy b/vars/ansiblePlugin.groovy new file mode 100644 index 0000000000..9c301b0f92 --- /dev/null +++ b/vars/ansiblePlugin.groovy @@ -0,0 +1,23 @@ +def call(body) { + + def pipelineParams = [:] + body.resolveStrategy = Closure.DELEGATE_FIRST + body.delegate = pipelineParams + body() + + node(pipelineParams.agent){ + // cloning public sunbird-devops and private repo + stage('checkout git') { + checkout scm + dir('sunbird-devops'){ + git branch: pipelineParams.branch, url: pipelineParams.scmUrl, credentialsId: 'f37ad21f-744a-4817-9f5e-02f8ec620b39' + } + } + + stage('Push') { + sh """ + ansible-playbook -i ansible/inventories/${pipelineParams.env} \ + sunbird-devops/ansible/${pipelineParams.playBook} ${pipelineParams.ansibleExtraArgs} + """ + } + } From 274422aa00a9712b01c54c845b9113dd8a7c3419 Mon Sep 17 00:00:00 2001 From: "kaliraja.ramasamy" Date: Wed, 12 Dec 2018 11:09:21 +0530 Subject: [PATCH 0414/1345] Issue #0000 fix: added the jenkinsfile for push and jenkins plugin --- vars/ansiblePlugin.groovy | 1 + 1 file changed, 1 insertion(+) diff --git a/vars/ansiblePlugin.groovy b/vars/ansiblePlugin.groovy index 9c301b0f92..58a1b2e209 100644 --- a/vars/ansiblePlugin.groovy +++ b/vars/ansiblePlugin.groovy @@ -21,3 +21,4 @@ def call(body) { """ } } +} From d7be3d58f3770b107b3e54fc73e245c5e101ff4b Mon Sep 17 00:00:00 2001 From: "kaliraja.ramasamy" Date: Wed, 12 Dec 2018 11:18:04 +0530 Subject: [PATCH 0415/1345] Issue #0000 fix: updated the secrets path --- ansible/docker_image_push.yml | 2 +- pipelines/deploy/player/Jenkinsfile.push | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/ansible/docker_image_push.yml b/ansible/docker_image_push.yml index 33c3acde01..73ee302ca6 100644 --- a/ansible/docker_image_push.yml +++ b/ansible/docker_image_push.yml @@ -2,7 +2,7 @@ - name: "Push docker images to Azure container registory" hosts: localhost vars_files: - - ['{{inventory_path}}/secrets.yml'] + - ['{{inventory_dir}}/secrets.yml'] become: yes environment: PYTHONPATH: /home/ops/.local/lib/python2.7/site-packages/ diff --git a/pipelines/deploy/player/Jenkinsfile.push b/pipelines/deploy/player/Jenkinsfile.push index f483ca3ab9..d83ca81e08 100644 --- a/pipelines/deploy/player/Jenkinsfile.push +++ b/pipelines/deploy/player/Jenkinsfile.push @@ -20,8 +20,8 @@ ansiblePlugin { branch = publicBranch scmUrl = 'https://github.com/ekstep/sunbird-devops.git' artifactLabel = values.label - env = values.env + env = "dev" playbook = docker_image_push.yml - ansibleExtraArgs = "\"inventory_path=dev image_name=$imageName\" --vault-password-file /run/secrets/vault-pass" + ansibleExtraArgs = "\"image_name=$imageName\" --vault-password-file /run/secrets/vault-pass" } } From f6535a116d948aa8198594373dff2c8b5d0bf089 Mon Sep 17 00:00:00 2001 From: "kaliraja.ramasamy" Date: Wed, 12 Dec 2018 11:20:26 +0530 Subject: [PATCH 0416/1345] Issue #0000 fix: DO-327 added the vault passwd file --- pipelines/deploy/player/Jenkinsfile.push | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pipelines/deploy/player/Jenkinsfile.push b/pipelines/deploy/player/Jenkinsfile.push index d83ca81e08..c971e2a530 100644 --- a/pipelines/deploy/player/Jenkinsfile.push +++ b/pipelines/deploy/player/Jenkinsfile.push @@ -19,7 +19,7 @@ ansiblePlugin { agent = "11.3.0.4-ed3fd24c" branch = publicBranch scmUrl = 'https://github.com/ekstep/sunbird-devops.git' - artifactLabel = values.label +// artifactLabel = values.label env = "dev" playbook = docker_image_push.yml ansibleExtraArgs = "\"image_name=$imageName\" --vault-password-file /run/secrets/vault-pass" From 9f5c71e97f3199082fd3a091e847d81858815f0d Mon Sep 17 00:00:00 2001 From: "kaliraja.ramasamy" Date: Wed, 12 Dec 2018 11:21:51 +0530 Subject: [PATCH 0417/1345] Issue #0000 fix: DO-327 added the vault passwd file --- pipelines/deploy/player/Jenkinsfile.push | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pipelines/deploy/player/Jenkinsfile.push b/pipelines/deploy/player/Jenkinsfile.push index c971e2a530..4614eb9660 100644 --- a/pipelines/deploy/player/Jenkinsfile.push +++ b/pipelines/deploy/player/Jenkinsfile.push @@ -21,7 +21,7 @@ ansiblePlugin { scmUrl = 'https://github.com/ekstep/sunbird-devops.git' // artifactLabel = values.label env = "dev" - playbook = docker_image_push.yml + playbook = "docker_image_push.yml" ansibleExtraArgs = "\"image_name=$imageName\" --vault-password-file /run/secrets/vault-pass" } } From 88f4e8d8b61c8e245be9293bfe5de60814ab115c Mon Sep 17 00:00:00 2001 From: "kaliraja.ramasamy" Date: Wed, 12 Dec 2018 11:27:48 +0530 Subject: [PATCH 0418/1345] Issue #0000 fix: DO-327 added the vault passwd file --- pipelines/deploy/player/Jenkinsfile.push | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pipelines/deploy/player/Jenkinsfile.push b/pipelines/deploy/player/Jenkinsfile.push index 4614eb9660..9fd8b411b5 100644 --- a/pipelines/deploy/player/Jenkinsfile.push +++ b/pipelines/deploy/player/Jenkinsfile.push @@ -14,14 +14,14 @@ def publicBranch = gitBranch copyArtifacts filter: 'metadata.json', projectName: 'test_jobs/player_build' env.imageName = sh(returnStdout: true, script: 'cat metadata.json').trim() - +println imageName ansiblePlugin { agent = "11.3.0.4-ed3fd24c" branch = publicBranch scmUrl = 'https://github.com/ekstep/sunbird-devops.git' // artifactLabel = values.label env = "dev" - playbook = "docker_image_push.yml" - ansibleExtraArgs = "\"image_name=$imageName\" --vault-password-file /run/secrets/vault-pass" + playBook = "docker_image_push.yml" + ansibleExtraArgs = "image_name=$imageName --vault-password-file /run/secrets/vault-pass" } } From 5c89648a6bff4620f5929b701c431605ab9fbe30 Mon Sep 17 00:00:00 2001 From: "kaliraja.ramasamy" Date: Wed, 12 Dec 2018 11:31:48 +0530 Subject: [PATCH 0419/1345] Issue #0000 fix: DO-327 added the vault passwd file --- pipelines/deploy/player/Jenkinsfile.push | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pipelines/deploy/player/Jenkinsfile.push b/pipelines/deploy/player/Jenkinsfile.push index 9fd8b411b5..43fbd5f210 100644 --- a/pipelines/deploy/player/Jenkinsfile.push +++ b/pipelines/deploy/player/Jenkinsfile.push @@ -22,6 +22,6 @@ ansiblePlugin { // artifactLabel = values.label env = "dev" playBook = "docker_image_push.yml" - ansibleExtraArgs = "image_name=$imageName --vault-password-file /run/secrets/vault-pass" + ansibleExtraArgs = '--extra-vars image_name="$imageName" --vault-password-file /run/secrets/vault-pass' } } From 8b503b668f58655a722d18d94fbebc96f918050e Mon Sep 17 00:00:00 2001 From: "kaliraja.ramasamy" Date: Wed, 12 Dec 2018 11:33:25 +0530 Subject: [PATCH 0420/1345] Issue #0000 fix: DO-327 added the vault passwd file --- pipelines/deploy/player/Jenkinsfile.push | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pipelines/deploy/player/Jenkinsfile.push b/pipelines/deploy/player/Jenkinsfile.push index 43fbd5f210..f1c01fbbf7 100644 --- a/pipelines/deploy/player/Jenkinsfile.push +++ b/pipelines/deploy/player/Jenkinsfile.push @@ -22,6 +22,6 @@ ansiblePlugin { // artifactLabel = values.label env = "dev" playBook = "docker_image_push.yml" - ansibleExtraArgs = '--extra-vars image_name="$imageName" --vault-password-file /run/secrets/vault-pass' + ansibleExtraArgs = '--extra-vars image_name="$imageName" --vault-password-file /home/ops/vault' } } From dc121bb4060ecc1f6711ad49825b4047faadac79 Mon Sep 17 00:00:00 2001 From: "kaliraja.ramasamy" Date: Wed, 12 Dec 2018 11:40:58 +0530 Subject: [PATCH 0421/1345] Issue #0000 fix: DO-327 added the vault passwd file --- vars/ansiblePlugin.groovy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vars/ansiblePlugin.groovy b/vars/ansiblePlugin.groovy index 58a1b2e209..a3e2c342f2 100644 --- a/vars/ansiblePlugin.groovy +++ b/vars/ansiblePlugin.groovy @@ -17,7 +17,7 @@ def call(body) { stage('Push') { sh """ ansible-playbook -i ansible/inventories/${pipelineParams.env} \ - sunbird-devops/ansible/${pipelineParams.playBook} ${pipelineParams.ansibleExtraArgs} + ansible/${pipelineParams.playBook} ${pipelineParams.ansibleExtraArgs} """ } } From eb1f9e65d93b3990f0c77cb92b80164969424c68 Mon Sep 17 00:00:00 2001 From: "kaliraja.ramasamy" Date: Wed, 12 Dec 2018 11:42:38 +0530 Subject: [PATCH 0422/1345] Issue #0000 fix: DO-327 added the vault passwd file --- ansible/docker_image_push.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/docker_image_push.yml b/ansible/docker_image_push.yml index 73ee302ca6..6bca78870a 100644 --- a/ansible/docker_image_push.yml +++ b/ansible/docker_image_push.yml @@ -2,7 +2,7 @@ - name: "Push docker images to Azure container registory" hosts: localhost vars_files: - - ['{{inventory_dir}}/secrets.yml'] + - "{{inventory_dir}}"/secrets.yml become: yes environment: PYTHONPATH: /home/ops/.local/lib/python2.7/site-packages/ From 053bd5154ca288ef7294df3c3a29455b6b9d66b7 Mon Sep 17 00:00:00 2001 From: "kaliraja.ramasamy" Date: Wed, 12 Dec 2018 11:56:35 +0530 Subject: [PATCH 0423/1345] Issue #0000 fix: DO-327 added the vault passwd file --- ansible/docker_image_push.yml | 2 +- vars/ansiblePlugin.groovy | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/ansible/docker_image_push.yml b/ansible/docker_image_push.yml index 6bca78870a..73ee302ca6 100644 --- a/ansible/docker_image_push.yml +++ b/ansible/docker_image_push.yml @@ -2,7 +2,7 @@ - name: "Push docker images to Azure container registory" hosts: localhost vars_files: - - "{{inventory_dir}}"/secrets.yml + - ['{{inventory_dir}}/secrets.yml'] become: yes environment: PYTHONPATH: /home/ops/.local/lib/python2.7/site-packages/ diff --git a/vars/ansiblePlugin.groovy b/vars/ansiblePlugin.groovy index a3e2c342f2..8dadef3c0d 100644 --- a/vars/ansiblePlugin.groovy +++ b/vars/ansiblePlugin.groovy @@ -9,15 +9,15 @@ def call(body) { // cloning public sunbird-devops and private repo stage('checkout git') { checkout scm - dir('sunbird-devops'){ + dir('sunbird-devops-private'){ git branch: pipelineParams.branch, url: pipelineParams.scmUrl, credentialsId: 'f37ad21f-744a-4817-9f5e-02f8ec620b39' } } stage('Push') { sh """ - ansible-playbook -i ansible/inventories/${pipelineParams.env} \ - ansible/${pipelineParams.playBook} ${pipelineParams.ansibleExtraArgs} + ansible-playbook -i $WORKSPACE/sunbird-devops-private/ansible/inventories/${pipelineParams.env} \ + $WORKSPACE/ansible/${pipelineParams.playBook} ${pipelineParams.ansibleExtraArgs} """ } } From 940395b3ae8ca2236e2e97e6c14638eb75f7b849 Mon Sep 17 00:00:00 2001 From: S M Y Date: Wed, 12 Dec 2018 15:28:09 +0530 Subject: [PATCH 0424/1345] Issue #000 monitor: Monitoring limits for containers --- ansible/roles/stack-monitor/defaults/main.yml | 18 +++++++++++++----- .../stack-monitor/templates/stack-monitor.yml | 16 ++++++++-------- 2 files changed, 21 insertions(+), 13 deletions(-) diff --git a/ansible/roles/stack-monitor/defaults/main.yml b/ansible/roles/stack-monitor/defaults/main.yml index 35c56de14b..d29408e796 100644 --- a/ansible/roles/stack-monitor/defaults/main.yml +++ b/ansible/roles/stack-monitor/defaults/main.yml @@ -1,11 +1,14 @@ -prometheus_reservation_memory: 256M -prometheus_limit_memory: 512M +prometheus_reservation_memory: 512M +prometheus_limit_memory: 690M + +alertmanager_reservation_memory: 100m +alertmanager_limit_memory: 100m node_exporter_reservation_memory: 16M node_exporter_limit_memory: 32M -cadvisor_reservation_memory: 300M -cadvisor_limit_memory: 300M +cadvisor_reservation_memory: 100M +cadvisor_limit_memory: 100M elasticsearch_exporter_reservation_memory: 8M elasticsearch_exporter_limit_memory: 24M @@ -25,10 +28,15 @@ jsonpath_exporter_limit_memory: 64M azure_blob_exporter_reservation_memory: 16M azure_blob_exporter_limit_memory: 64M +grafana_reservation_memory: 100m +grafana_limit_memory: 100m + monitor_logstash_replicas: 1 monitor_logstash_heap_size: 256m monitor_logstash_reservation_memory: 256M -monitor_logstash_limit_memory: 512M +monitor_logstash_limit_memory: 350M +monitor_logspout_reservation_memory: 150m +monitor_logspout_limit_memory: 150m container_cpu_usage_percentage_theshold: 90 container_memory_usage_percentage_theshold: 90 diff --git a/ansible/roles/stack-monitor/templates/stack-monitor.yml b/ansible/roles/stack-monitor/templates/stack-monitor.yml index 5b1e1e12ed..e5b3ee4935 100644 --- a/ansible/roles/stack-monitor/templates/stack-monitor.yml +++ b/ansible/roles/stack-monitor/templates/stack-monitor.yml @@ -65,9 +65,9 @@ services: - "node.labels.alertmanager==1" resources: reservations: - memory: "{{ prometheus_reservation_memory }}" + memory: "{{ alertmanager_reservation_memory }}" limits: - memory: "{{ prometheus_limit_memory }}" + memory: "{{ alertmanager_limit_memory }}" blackbox-exporter: image: quay.io/prometheus/blackbox-exporter:v0.8.1 @@ -301,18 +301,18 @@ services: - "node.labels.grafana==1" resources: reservations: - memory: "{{ prometheus_reservation_memory }}" + memory: "{{ grafana_reservation_memory }}" limits: - memory: "{{ prometheus_limit_memory }}" + memory: "{{ grafana_limit_memory }}" cassandra_jmx_exporter: image: sunbird/cassandra_jmx_exporter:0.11 deploy: resources: reservations: - memory: "{{ monitor_logstash_reservation_memory }}" + memory: "{{ jsonpath_exporter_reservation_memory }}" limits: - memory: "{{ monitor_logstash_limit_memory }}" + memory: "{{ jsonpath_exporter_limit_memory }}" ports: - "5556:5556" environment: @@ -355,9 +355,9 @@ services: mode: global resources: reservations: - memory: "{{ monitor_logstash_reservation_memory }}" + memory: "{{ monitor_logspout_reservation_memory }}" limits: - memory: "{{ monitor_logstash_limit_memory }}" + memory: "{{ monitor_logspout_limit_memory }}" environment: - SYSLOG_FORMAT=rfc3164 depends_on: From f779a51421669abba9808a737d66e0aa275b0f12 Mon Sep 17 00:00:00 2001 From: S M Y Date: Wed, 12 Dec 2018 15:33:31 +0530 Subject: [PATCH 0425/1345] Issue #000 monitor: Monitoring and logging limits for containers --- ansible/roles/stack-logger/defaults/main.yml | 11 ++++++++++- .../roles/stack-logger/templates/stack-logger.yml | 12 ++++++------ ansible/roles/stack-monitor/defaults/main.yml | 12 ++++++------ 3 files changed, 22 insertions(+), 13 deletions(-) diff --git a/ansible/roles/stack-logger/defaults/main.yml b/ansible/roles/stack-logger/defaults/main.yml index 0a840fbf8e..e4a9125ab3 100644 --- a/ansible/roles/stack-logger/defaults/main.yml +++ b/ansible/roles/stack-logger/defaults/main.yml @@ -1,9 +1,18 @@ # Please change memory requirements if heap_size is changed -logger_logstash_heap_size: 512m +logger_logstash_heap_size: 512M logger_logstash_replicas: 2 logger_logstash_reservation_memory: 512M logger_logstash_limit_memory: 750M +logger_kibana_reservation_memory: 100M +logger_kibana_limit_memory: 100M + +logger_logspout_reservation_memory: 75M +logger_logspout_limit_memory: 75M + +logger_oauth_reservation_memory: 32M +logger_oauth_limit_memory: 32M + kibana_oauth_authenticated_email_domains: [] kibana_oauth_authenticated_email_ids: [] logger_logstash_reservation_memory: 1024M diff --git a/ansible/roles/stack-logger/templates/stack-logger.yml b/ansible/roles/stack-logger/templates/stack-logger.yml index e9ac649fd0..3ffa51738c 100644 --- a/ansible/roles/stack-logger/templates/stack-logger.yml +++ b/ansible/roles/stack-logger/templates/stack-logger.yml @@ -6,9 +6,9 @@ services: deploy: resources: reservations: - memory: "{{ logger_logstash_reservation_memory }}" + memory: "{{ logger_kibana_reservation_memory }}" limits: - memory: "{{ logger_logstash_limit_memory }}" + memory: "{{ logger_kibana_limit_memory }}" environment: - LOGSPOUT=ignore ports: @@ -48,9 +48,9 @@ services: mode: global resources: reservations: - memory: "{{ logger_logstash_reservation_memory }}" + memory: "{{ logger_logspout_reservation_memory }}" limits: - memory: "{{ logger_logstash_limit_memory }}" + memory: "{{ logger_logspout_limit_memory }}" environment: - SYSLOG_FORMAT=rfc3164 - INACTIVITY_TIMEOUT=1m @@ -64,9 +64,9 @@ services: deploy: resources: reservations: - memory: "{{ logger_logstash_reservation_memory }}" + memory: "{{ logger_oauth_reservation_memory }}" limits: - memory: "{{ logger_logstash_limit_memory }}" + memory: "{{ logger_oauth_limit_memory }}" command: | -cookie-secure=false -upstream=http://proxy_proxy/oauth2 diff --git a/ansible/roles/stack-monitor/defaults/main.yml b/ansible/roles/stack-monitor/defaults/main.yml index d29408e796..6a9bf09022 100644 --- a/ansible/roles/stack-monitor/defaults/main.yml +++ b/ansible/roles/stack-monitor/defaults/main.yml @@ -1,8 +1,8 @@ prometheus_reservation_memory: 512M prometheus_limit_memory: 690M -alertmanager_reservation_memory: 100m -alertmanager_limit_memory: 100m +alertmanager_reservation_memory: 100M +alertmanager_limit_memory: 100M node_exporter_reservation_memory: 16M node_exporter_limit_memory: 32M @@ -28,15 +28,15 @@ jsonpath_exporter_limit_memory: 64M azure_blob_exporter_reservation_memory: 16M azure_blob_exporter_limit_memory: 64M -grafana_reservation_memory: 100m -grafana_limit_memory: 100m +grafana_reservation_memory: 100M +grafana_limit_memory: 100M monitor_logstash_replicas: 1 monitor_logstash_heap_size: 256m monitor_logstash_reservation_memory: 256M monitor_logstash_limit_memory: 350M -monitor_logspout_reservation_memory: 150m -monitor_logspout_limit_memory: 150m +monitor_logspout_reservation_memory: 150M +monitor_logspout_limit_memory: 150M container_cpu_usage_percentage_theshold: 90 container_memory_usage_percentage_theshold: 90 From 7648e387b75683f46313557cb707f0538634f406 Mon Sep 17 00:00:00 2001 From: S M Y Date: Wed, 12 Dec 2018 19:24:36 +0530 Subject: [PATCH 0426/1345] Issue #000 jenkins: jenkins limit memory --- ansible/roles/stack-jenkins-slave/defaults/main.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ansible/roles/stack-jenkins-slave/defaults/main.yml b/ansible/roles/stack-jenkins-slave/defaults/main.yml index e98e047589..f89c0fab64 100644 --- a/ansible/roles/stack-jenkins-slave/defaults/main.yml +++ b/ansible/roles/stack-jenkins-slave/defaults/main.yml @@ -15,8 +15,8 @@ jenkins_slave_secrets: - name: ops-private-key value: "{{ ops_private_key }}" -general_jenkins_slave_reservation_memory: 1000M -general_jenkins_slave_limit_memory: 2000M +general_jenkins_slave_reservation_memory: 750M +general_jenkins_slave_limit_memory: 750M api_manager_jenkins_slave_reservation_memory: 512M api_manager_jenkins_slave_limit_memory: 1024M From e11e74d070948cb254361c50146a0a7ebc67c852 Mon Sep 17 00:00:00 2001 From: S M Y Date: Thu, 13 Dec 2018 09:25:24 +0530 Subject: [PATCH 0427/1345] Issue #000 jenkins: replicas change --- ansible/roles/stack-jenkins-slave/defaults/main.yml | 2 +- .../roles/stack-jenkins-slave/templates/stack-jenkins-slave.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ansible/roles/stack-jenkins-slave/defaults/main.yml b/ansible/roles/stack-jenkins-slave/defaults/main.yml index f89c0fab64..b02731cb73 100644 --- a/ansible/roles/stack-jenkins-slave/defaults/main.yml +++ b/ansible/roles/stack-jenkins-slave/defaults/main.yml @@ -17,7 +17,7 @@ jenkins_slave_secrets: general_jenkins_slave_reservation_memory: 750M general_jenkins_slave_limit_memory: 750M - +jenkins_replicas: 1 api_manager_jenkins_slave_reservation_memory: 512M api_manager_jenkins_slave_limit_memory: 1024M diff --git a/ansible/roles/stack-jenkins-slave/templates/stack-jenkins-slave.yml b/ansible/roles/stack-jenkins-slave/templates/stack-jenkins-slave.yml index 749335fccd..bcd0947b70 100644 --- a/ansible/roles/stack-jenkins-slave/templates/stack-jenkins-slave.yml +++ b/ansible/roles/stack-jenkins-slave/templates/stack-jenkins-slave.yml @@ -23,7 +23,7 @@ services: target: vault-pass mode: 0600 deploy: - replicas: 2 + replicas: "{{ jenkins_replicas }}" resources: reservations: memory: "{{ general_jenkins_slave_reservation_memory }}" From bb6a8fa7fb69db6f41074432ab0c5b2ad46b2ec3 Mon Sep 17 00:00:00 2001 From: S M Y Date: Thu, 13 Dec 2018 09:28:20 +0530 Subject: [PATCH 0428/1345] Issue #000 jenkins: replicas change --- .../roles/stack-jenkins-slave/templates/stack-jenkins-slave.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/stack-jenkins-slave/templates/stack-jenkins-slave.yml b/ansible/roles/stack-jenkins-slave/templates/stack-jenkins-slave.yml index bcd0947b70..7ed0571bbd 100644 --- a/ansible/roles/stack-jenkins-slave/templates/stack-jenkins-slave.yml +++ b/ansible/roles/stack-jenkins-slave/templates/stack-jenkins-slave.yml @@ -23,7 +23,7 @@ services: target: vault-pass mode: 0600 deploy: - replicas: "{{ jenkins_replicas }}" + replicas: {{ jenkins_replicas }} resources: reservations: memory: "{{ general_jenkins_slave_reservation_memory }}" From 1645d53eb362609a7421666f30c4a341e74324ff Mon Sep 17 00:00:00 2001 From: S M Y Date: Thu, 13 Dec 2018 13:25:06 +0530 Subject: [PATCH 0429/1345] Issue #000 limit: limiting memory for logstash --- ansible/roles/stack-logger/defaults/main.yml | 4 ++-- ansible/roles/stack-monitor/defaults/main.yml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/ansible/roles/stack-logger/defaults/main.yml b/ansible/roles/stack-logger/defaults/main.yml index e4a9125ab3..5b3c95ada6 100644 --- a/ansible/roles/stack-logger/defaults/main.yml +++ b/ansible/roles/stack-logger/defaults/main.yml @@ -4,8 +4,8 @@ logger_logstash_replicas: 2 logger_logstash_reservation_memory: 512M logger_logstash_limit_memory: 750M -logger_kibana_reservation_memory: 100M -logger_kibana_limit_memory: 100M +logger_kibana_reservation_memory: 512M +logger_kibana_limit_memory: 512M logger_logspout_reservation_memory: 75M logger_logspout_limit_memory: 75M diff --git a/ansible/roles/stack-monitor/defaults/main.yml b/ansible/roles/stack-monitor/defaults/main.yml index 6a9bf09022..e2203694aa 100644 --- a/ansible/roles/stack-monitor/defaults/main.yml +++ b/ansible/roles/stack-monitor/defaults/main.yml @@ -1,5 +1,5 @@ -prometheus_reservation_memory: 512M -prometheus_limit_memory: 690M +prometheus_reservation_memory: 1G +prometheus_limit_memory: 1G alertmanager_reservation_memory: 100M alertmanager_limit_memory: 100M From a893130295b880d907bc31a06ce851b3f89c4e02 Mon Sep 17 00:00:00 2001 From: Manzarul Date: Thu, 13 Dec 2018 15:50:12 +0530 Subject: [PATCH 0430/1345] Issues #SB-545 feat: new api for tnc --- ansible/roles/kong-api/defaults/main.yml | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/ansible/roles/kong-api/defaults/main.yml b/ansible/roles/kong-api/defaults/main.yml index c3f7e2a42f..d0bfff255c 100644 --- a/ansible/roles/kong-api/defaults/main.yml +++ b/ansible/roles/kong-api/defaults/main.yml @@ -3565,3 +3565,19 @@ kong_apis: config.limit_by: credential - name: request-size-limiting config.allowed_payload_size: "{{ medium_request_size_limit }}" + - name: acceptTermsAndCondition + request_path: "{{ user_service_prefix }}/v1/tnc/accept" + upstream_url: "{{ earning_service_url }}/v1/user/tnc/accept" + strip_request_path: true + plugins: + - name: jwt + - name: cors + - "{{ statsd_pulgin }}" + - name: acl + config.whitelist: publicUser + - name: rate-limiting + config.policy: local + config.hour: "{{ medium_rate_limit_per_hour }}" + config.limit_by: credential + - name: request-size-limiting + config.allowed_payload_size: "{{ small_request_size_limit }}" From ec7ba002498849356312e55f3a1ca0ac55bced3d Mon Sep 17 00:00:00 2001 From: Manzarul Date: Thu, 13 Dec 2018 15:56:28 +0530 Subject: [PATCH 0431/1345] Issues #SB-545 feat: new api for tnc --- ansible/roles/kong-api/defaults/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/kong-api/defaults/main.yml b/ansible/roles/kong-api/defaults/main.yml index d0bfff255c..4697ad8f73 100644 --- a/ansible/roles/kong-api/defaults/main.yml +++ b/ansible/roles/kong-api/defaults/main.yml @@ -3567,7 +3567,7 @@ kong_apis: config.allowed_payload_size: "{{ medium_request_size_limit }}" - name: acceptTermsAndCondition request_path: "{{ user_service_prefix }}/v1/tnc/accept" - upstream_url: "{{ earning_service_url }}/v1/user/tnc/accept" + upstream_url: "{{ learning_service_url }}/v1/user/tnc/accept" strip_request_path: true plugins: - name: jwt From 3b748cb8cd87b0659f523476bbb66d587f5579dd Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Thu, 13 Dec 2018 18:49:01 +0530 Subject: [PATCH 0432/1345] Issue #000 Chore: Create Build image for player --- images/BuildImages/player/Dockerfile | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 images/BuildImages/player/Dockerfile diff --git a/images/BuildImages/player/Dockerfile b/images/BuildImages/player/Dockerfile new file mode 100644 index 0000000000..60ecf22866 --- /dev/null +++ b/images/BuildImages/player/Dockerfile @@ -0,0 +1,8 @@ +from node:8.11-slim +RUN echo "deb http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list +RUN wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - +RUN apt-get update && apt-get -y install libxpm4 libxrender1 libgtk2.0-0 libnss3 libgconf-2-4 \ + xvfb gtk2-engines-pixbuf \ + xfonts-cyrillic xfonts-100dpi xfonts-75dpi xfonts-base xfonts-scalable \ + google-chrome-stable git \ + && apt-get clean && rm -rf /var/lib/apt/lists/ From 1fc4ddbbc50f615d6a7d1a52622ebbb4cadc43d3 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Thu, 13 Dec 2018 19:55:47 +0530 Subject: [PATCH 0433/1345] Issue #000 chore: creating prebuild images --- images/BuildImages/Android/Dockerfile | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 images/BuildImages/Android/Dockerfile diff --git a/images/BuildImages/Android/Dockerfile b/images/BuildImages/Android/Dockerfile new file mode 100644 index 0000000000..c7fbba62c5 --- /dev/null +++ b/images/BuildImages/Android/Dockerfile @@ -0,0 +1,11 @@ +FROM circleci/android:api-25-alpha +USER root +WORKDIR work +RUN curl -sL https://deb.nodesource.com/setup_10.x | bash - \ + && apt install nodejs -y \ + # npm packages are not globally accessible in container + && npm config set prefix /usr/local \ + # node-sass is not installing as it's executing external scripts + && npm install -g ionic cordova node-sass --unsafe-perm \ + && apt-get clean && rm -rf /var/lib/apt/lists/ \ + && chown -R circleci:circleci /home/circleci From c9feca1e38dc5e3c37a0420fed30bc755b28f35a Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Fri, 14 Dec 2018 09:29:28 +0530 Subject: [PATCH 0434/1345] Issue #000 feat: Optimizing build image --- images/BuildImages/Android/Dockerfile | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/images/BuildImages/Android/Dockerfile b/images/BuildImages/Android/Dockerfile index c7fbba62c5..7b95fe1169 100644 --- a/images/BuildImages/Android/Dockerfile +++ b/images/BuildImages/Android/Dockerfile @@ -1,11 +1,4 @@ -FROM circleci/android:api-25-alpha -USER root -WORKDIR work -RUN curl -sL https://deb.nodesource.com/setup_10.x | bash - \ - && apt install nodejs -y \ - # npm packages are not globally accessible in container - && npm config set prefix /usr/local \ - # node-sass is not installing as it's executing external scripts - && npm install -g ionic cordova node-sass --unsafe-perm \ - && apt-get clean && rm -rf /var/lib/apt/lists/ \ - && chown -R circleci:circleci /home/circleci +FROM circleci/android:api-28-node8-alpha +WORKDIR /home/circleci + # node-sass is not installing as it's executing external scripts +RUN sudo npm install -g ionic cordova node-sass --unsafe-perm From a316b44950ac95a04144a48139c551b523897493 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Fri, 14 Dec 2018 09:34:23 +0530 Subject: [PATCH 0435/1345] Issue #000 feat: Added maintainer info --- images/BuildImages/Android/Dockerfile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/images/BuildImages/Android/Dockerfile b/images/BuildImages/Android/Dockerfile index 7b95fe1169..2d3e51bce7 100644 --- a/images/BuildImages/Android/Dockerfile +++ b/images/BuildImages/Android/Dockerfile @@ -1,4 +1,5 @@ FROM circleci/android:api-28-node8-alpha +MAINTAINER Rajesh Rajendran WORKDIR /home/circleci - # node-sass is not installing as it's executing external scripts +# node-sass is not installing as it's executing external scripts RUN sudo npm install -g ionic cordova node-sass --unsafe-perm From b40c2e7d46c245fb98e1bd2f44fe95f37e7c1b8a Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Fri, 14 Dec 2018 12:48:07 +0530 Subject: [PATCH 0436/1345] feat: DO-350 Jenkinsfile update to read properties --- pipelines/deploy/player/Jenkinsfile.push | 33 +++++++----------------- 1 file changed, 10 insertions(+), 23 deletions(-) diff --git a/pipelines/deploy/player/Jenkinsfile.push b/pipelines/deploy/player/Jenkinsfile.push index f1c01fbbf7..7421596c22 100644 --- a/pipelines/deploy/player/Jenkinsfile.push +++ b/pipelines/deploy/player/Jenkinsfile.push @@ -1,27 +1,14 @@ @Library('deploy-conf') _ - -def getValues(){ - def parentDir = sh(returnStdout: true, script: 'basename $(dirname $PWD)').trim() - if (parentDir == "dev") - return [label: 'bronze', env: 'dev', agent: 'master'] - else if (parentDir == "staging") - return [label: 'silver', env: 'staging', agent: 'master'] - } node(){ -def values = getValues() -def publicBranch = gitBranch - -copyArtifacts filter: 'metadata.json', projectName: 'test_jobs/player_build' -env.imageName = sh(returnStdout: true, script: 'cat metadata.json').trim() -println imageName -ansiblePlugin { - agent = "11.3.0.4-ed3fd24c" - branch = publicBranch - scmUrl = 'https://github.com/ekstep/sunbird-devops.git' -// artifactLabel = values.label - env = "dev" - playBook = "docker_image_push.yml" - ansibleExtraArgs = '--extra-vars image_name="$imageName" --vault-password-file /home/ops/vault' - } +def values = setVariables() + if (values.metadataPath == "manual") + copyArtifacts filter: 'metadata.json', projectName: "$metadataPath" + else + copyArtifacts filter: 'metadata.json', projectName: values.metadataPath +imageName = sh(returnStdout: true, script: 'jq -r .imageName metadata.json').trim() +agent = sh(returnStdout: true, script: 'jq -r .nodeName metadata.json).trim() +values.put('imageName', imageName) +values.put('agent', agent) +ansiblePlugin(values) } From a42e71f88828cb719525162eb3317d769cc91a8b Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Fri, 14 Dec 2018 12:52:37 +0530 Subject: [PATCH 0437/1345] feat: DO-350 adding properties file For push and deploy jobs --- properties.json | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 properties.json diff --git a/properties.json b/properties.json new file mode 100644 index 0000000000..ea3d08f6a1 --- /dev/null +++ b/properties.json @@ -0,0 +1,7 @@ +{ + "push": { + "playbook": "docker_image_push.yml", + "scmUrl": "https://github.com/ekstep/sunbird-devops.git", + "vault-password-file": "/home/ops/vault" + } +} From 0f33756810e1ababd361853877e03f298d7601f9 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Fri, 14 Dec 2018 14:21:14 +0530 Subject: [PATCH 0438/1345] feat: DO-350 adding player Jenkinsfile --- pipelines/deploy/player/Jenkinsfile.deploy | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 pipelines/deploy/player/Jenkinsfile.deploy diff --git a/pipelines/deploy/player/Jenkinsfile.deploy b/pipelines/deploy/player/Jenkinsfile.deploy new file mode 100644 index 0000000000..518ae29998 --- /dev/null +++ b/pipelines/deploy/player/Jenkinsfile.deploy @@ -0,0 +1,13 @@ +@Library('deploy-conf') _ + +node(){ +def values = setVariables() +values.put('agent', 'general-dev') +values.put('serviceName', 'player-service') +values.put('artifactLabel', 'bronze') +values.put('artifactName', 'metadata.json') +values.put('parentProject', 'New_Build/Sunbird_Player_Build') +values.put('deployExtraArgs', 'deploy_player=True') +ansiblePlugin(values) +deployPlugin(values) +} From a2b0467391e106bb3db56196ef45860ff42e6052 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Fri, 14 Dec 2018 14:28:59 +0530 Subject: [PATCH 0439/1345] Issue# 0000: DO-350 fixing quotes --- pipelines/deploy/player/Jenkinsfile.push | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pipelines/deploy/player/Jenkinsfile.push b/pipelines/deploy/player/Jenkinsfile.push index 7421596c22..43dc5ac8ec 100644 --- a/pipelines/deploy/player/Jenkinsfile.push +++ b/pipelines/deploy/player/Jenkinsfile.push @@ -7,7 +7,7 @@ def values = setVariables() else copyArtifacts filter: 'metadata.json', projectName: values.metadataPath imageName = sh(returnStdout: true, script: 'jq -r .imageName metadata.json').trim() -agent = sh(returnStdout: true, script: 'jq -r .nodeName metadata.json).trim() +agent = sh(returnStdout: true, script: 'jq -r .nodeName metadata.json').trim() values.put('imageName', imageName) values.put('agent', agent) ansiblePlugin(values) From 810e12517af565a4941cb889d5515f5a614a5c0e Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Fri, 14 Dec 2018 14:30:37 +0530 Subject: [PATCH 0440/1345] Issue # 0000: DO-350 Adding scm checkout --- pipelines/deploy/player/Jenkinsfile.push | 1 + 1 file changed, 1 insertion(+) diff --git a/pipelines/deploy/player/Jenkinsfile.push b/pipelines/deploy/player/Jenkinsfile.push index 43dc5ac8ec..ba972cc5da 100644 --- a/pipelines/deploy/player/Jenkinsfile.push +++ b/pipelines/deploy/player/Jenkinsfile.push @@ -1,6 +1,7 @@ @Library('deploy-conf') _ node(){ +checkout scm def values = setVariables() if (values.metadataPath == "manual") copyArtifacts filter: 'metadata.json', projectName: "$metadataPath" From 397930d10c46d45c6914ab83353d30a97ec31438 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Fri, 14 Dec 2018 14:44:27 +0530 Subject: [PATCH 0441/1345] Issue # 0000: Check private_repo_branch --- pipelines/deploy/player/Jenkinsfile.push | 1 + 1 file changed, 1 insertion(+) diff --git a/pipelines/deploy/player/Jenkinsfile.push b/pipelines/deploy/player/Jenkinsfile.push index ba972cc5da..c2d9287ce0 100644 --- a/pipelines/deploy/player/Jenkinsfile.push +++ b/pipelines/deploy/player/Jenkinsfile.push @@ -2,6 +2,7 @@ node(){ checkout scm +println private_repo_branch def values = setVariables() if (values.metadataPath == "manual") copyArtifacts filter: 'metadata.json', projectName: "$metadataPath" From c203fb2225e3ac6059938533955c3197c935dce7 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Fri, 14 Dec 2018 16:29:54 +0530 Subject: [PATCH 0442/1345] Issue # 000: Check ansible extra args output --- pipelines/deploy/player/Jenkinsfile.push | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pipelines/deploy/player/Jenkinsfile.push b/pipelines/deploy/player/Jenkinsfile.push index c2d9287ce0..0697c6f0ef 100644 --- a/pipelines/deploy/player/Jenkinsfile.push +++ b/pipelines/deploy/player/Jenkinsfile.push @@ -12,5 +12,7 @@ imageName = sh(returnStdout: true, script: 'jq -r .imageName metadata.json').tri agent = sh(returnStdout: true, script: 'jq -r .nodeName metadata.json').trim() values.put('imageName', imageName) values.put('agent', agent) +ansibleExtraArgs = "--extra-vars image_name=" + values.imageName + "--vault-password-file" + values.vaultFile +println ansibleExtraArgs ansiblePlugin(values) } From d70ca3a02a7a49d6173110a7a16bbb82d5242030 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Fri, 14 Dec 2018 16:32:43 +0530 Subject: [PATCH 0443/1345] Issue # 000 : DO-305 Updating value properties --- properties.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/properties.json b/properties.json index ea3d08f6a1..ea3d3eb6bb 100644 --- a/properties.json +++ b/properties.json @@ -2,6 +2,6 @@ "push": { "playbook": "docker_image_push.yml", "scmUrl": "https://github.com/ekstep/sunbird-devops.git", - "vault-password-file": "/home/ops/vault" + "vaultFile": "/home/ops/vault" } } From a7f7623709fa12d51267f7f3fa4463f326864853 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Fri, 14 Dec 2018 16:34:41 +0530 Subject: [PATCH 0444/1345] Issue # 000: DO-350 Check ansible push --- pipelines/deploy/player/Jenkinsfile.push | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pipelines/deploy/player/Jenkinsfile.push b/pipelines/deploy/player/Jenkinsfile.push index 0697c6f0ef..133b0e4641 100644 --- a/pipelines/deploy/player/Jenkinsfile.push +++ b/pipelines/deploy/player/Jenkinsfile.push @@ -12,7 +12,8 @@ imageName = sh(returnStdout: true, script: 'jq -r .imageName metadata.json').tri agent = sh(returnStdout: true, script: 'jq -r .nodeName metadata.json').trim() values.put('imageName', imageName) values.put('agent', agent) -ansibleExtraArgs = "--extra-vars image_name=" + values.imageName + "--vault-password-file" + values.vaultFile +ansibleExtraArgs = "--extra-vars image_name=" + values.imageName + "--vault-password-file " + values.vaultFile println ansibleExtraArgs +values.put('ansibleExtraArgs', ansibleExtraArgs) ansiblePlugin(values) } From 1ad4c558cec9aeebbe645845aaf8b5b0eb0204ca Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Fri, 14 Dec 2018 16:46:44 +0530 Subject: [PATCH 0445/1345] Issue # 000: Update ansible extra args --- pipelines/deploy/player/Jenkinsfile.push | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pipelines/deploy/player/Jenkinsfile.push b/pipelines/deploy/player/Jenkinsfile.push index 133b0e4641..b221ad81a3 100644 --- a/pipelines/deploy/player/Jenkinsfile.push +++ b/pipelines/deploy/player/Jenkinsfile.push @@ -12,7 +12,7 @@ imageName = sh(returnStdout: true, script: 'jq -r .imageName metadata.json').tri agent = sh(returnStdout: true, script: 'jq -r .nodeName metadata.json').trim() values.put('imageName', imageName) values.put('agent', agent) -ansibleExtraArgs = "--extra-vars image_name=" + values.imageName + "--vault-password-file " + values.vaultFile +ansibleExtraArgs = "\"--extra-vars image_name=$values.imageName\" --vault-password-file $values.vaultFile" println ansibleExtraArgs values.put('ansibleExtraArgs', ansibleExtraArgs) ansiblePlugin(values) From 5410118ea132609224df6bad658845b72d8ee6f5 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Fri, 14 Dec 2018 17:21:17 +0530 Subject: [PATCH 0446/1345] Issue # 000: DO-350 Remove extra newline --- pipelines/deploy/player/Jenkinsfile.push | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pipelines/deploy/player/Jenkinsfile.push b/pipelines/deploy/player/Jenkinsfile.push index b221ad81a3..bd10a3977f 100644 --- a/pipelines/deploy/player/Jenkinsfile.push +++ b/pipelines/deploy/player/Jenkinsfile.push @@ -12,7 +12,7 @@ imageName = sh(returnStdout: true, script: 'jq -r .imageName metadata.json').tri agent = sh(returnStdout: true, script: 'jq -r .nodeName metadata.json').trim() values.put('imageName', imageName) values.put('agent', agent) -ansibleExtraArgs = "\"--extra-vars image_name=$values.imageName\" --vault-password-file $values.vaultFile" +ansibleExtraArgs = "\"--extra-vars image_name=$values.imageName\" --vault-password-file $values.vaultFile".trim() println ansibleExtraArgs values.put('ansibleExtraArgs', ansibleExtraArgs) ansiblePlugin(values) From 9e03a7862481144df0433b7d9d1b0871a63715d3 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Fri, 14 Dec 2018 17:27:46 +0530 Subject: [PATCH 0447/1345] Issue # 000: DO-350 Extra vars update --- pipelines/deploy/player/Jenkinsfile.push | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pipelines/deploy/player/Jenkinsfile.push b/pipelines/deploy/player/Jenkinsfile.push index bd10a3977f..60b24b3f99 100644 --- a/pipelines/deploy/player/Jenkinsfile.push +++ b/pipelines/deploy/player/Jenkinsfile.push @@ -12,7 +12,7 @@ imageName = sh(returnStdout: true, script: 'jq -r .imageName metadata.json').tri agent = sh(returnStdout: true, script: 'jq -r .nodeName metadata.json').trim() values.put('imageName', imageName) values.put('agent', agent) -ansibleExtraArgs = "\"--extra-vars image_name=$values.imageName\" --vault-password-file $values.vaultFile".trim() +ansibleExtraArgs = "--extra-vars \"image_name=$values.imageName\" --vault-password-file $values.vaultFile".trim() println ansibleExtraArgs values.put('ansibleExtraArgs', ansibleExtraArgs) ansiblePlugin(values) From 86eda4d120ca4e32bfe178bfbacaee8576e333be Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Mon, 17 Dec 2018 10:11:10 +0530 Subject: [PATCH 0448/1345] feat: DO-350 check deploy jenkinsfile --- pipelines/deploy/player/Jenkinsfile.deploy | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/pipelines/deploy/player/Jenkinsfile.deploy b/pipelines/deploy/player/Jenkinsfile.deploy index 518ae29998..9a8ccdc406 100644 --- a/pipelines/deploy/player/Jenkinsfile.deploy +++ b/pipelines/deploy/player/Jenkinsfile.deploy @@ -6,8 +6,7 @@ values.put('agent', 'general-dev') values.put('serviceName', 'player-service') values.put('artifactLabel', 'bronze') values.put('artifactName', 'metadata.json') -values.put('parentProject', 'New_Build/Sunbird_Player_Build') +values.put('parentProject', parentProject) values.put('deployExtraArgs', 'deploy_player=True') -ansiblePlugin(values) deployPlugin(values) } From cde7ef31a5aa00d4999f6c1694279073105596d0 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Mon, 17 Dec 2018 10:13:06 +0530 Subject: [PATCH 0449/1345] Issue #000: DO-350 Checkout scm --- pipelines/deploy/player/Jenkinsfile.deploy | 1 + 1 file changed, 1 insertion(+) diff --git a/pipelines/deploy/player/Jenkinsfile.deploy b/pipelines/deploy/player/Jenkinsfile.deploy index 9a8ccdc406..2f22e7587a 100644 --- a/pipelines/deploy/player/Jenkinsfile.deploy +++ b/pipelines/deploy/player/Jenkinsfile.deploy @@ -1,6 +1,7 @@ @Library('deploy-conf') _ node(){ +checkout scm def values = setVariables() values.put('agent', 'general-dev') values.put('serviceName', 'player-service') From 4636071512cc55ae997ece775414b822545446e9 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Mon, 17 Dec 2018 10:26:39 +0530 Subject: [PATCH 0450/1345] Issue # 000: Adding scm url for player --- properties.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/properties.json b/properties.json index ea3d3eb6bb..158bdcfb1a 100644 --- a/properties.json +++ b/properties.json @@ -3,5 +3,8 @@ "playbook": "docker_image_push.yml", "scmUrl": "https://github.com/ekstep/sunbird-devops.git", "vaultFile": "/home/ops/vault" + }, + "player": { + "scmUrl": "https://github.com/ekstep/sunbird-devops.git" } } From 57560fd85255f608981b978d94cd1e449ebe2e3a Mon Sep 17 00:00:00 2001 From: Manzarul Date: Mon, 17 Dec 2018 15:10:34 +0530 Subject: [PATCH 0451/1345] Issues #SB-00 feat: onboarding api for sending otp and verifying otp --- ansible/roles/kong-api/defaults/main.yml | 32 ++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/ansible/roles/kong-api/defaults/main.yml b/ansible/roles/kong-api/defaults/main.yml index 4697ad8f73..86b7ba51f7 100644 --- a/ansible/roles/kong-api/defaults/main.yml +++ b/ansible/roles/kong-api/defaults/main.yml @@ -3581,3 +3581,35 @@ kong_apis: config.limit_by: credential - name: request-size-limiting config.allowed_payload_size: "{{ small_request_size_limit }}" + - name: generateOtp + request_path: "{{ user_service_prefix }}/v1/otp/generate" + upstream_url: "{{ learning_service_url }}/v1/otp/generate" + strip_request_path: true + plugins: + - name: jwt + - name: cors + - "{{ statsd_pulgin }}" + - name: acl + config.whitelist: publicUser + - name: rate-limiting + config.policy: local + config.hour: "{{ medium_rate_limit_per_hour }}" + config.limit_by: credential + - name: request-size-limiting + config.allowed_payload_size: "{{ small_request_size_limit }}" + - name: verifyOtp + request_path: "{{ user_service_prefix }}/v1/otp/verify" + upstream_url: "{{ learning_service_url }}/v1/otp/verify" + strip_request_path: true + plugins: + - name: jwt + - name: cors + - "{{ statsd_pulgin }}" + - name: acl + config.whitelist: publicUser + - name: rate-limiting + config.policy: local + config.hour: "{{ medium_rate_limit_per_hour }}" + config.limit_by: credential + - name: request-size-limiting + config.allowed_payload_size: "{{ small_request_size_limit }}" \ No newline at end of file From 69f7d46888c2b1363a6cdc7024b4e70dfbe25345 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Mon, 17 Dec 2018 15:15:43 +0530 Subject: [PATCH 0452/1345] feat: DO-350 Adding more player properties --- properties.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/properties.json b/properties.json index 158bdcfb1a..eeff36e5a6 100644 --- a/properties.json +++ b/properties.json @@ -5,6 +5,8 @@ "vaultFile": "/home/ops/vault" }, "player": { - "scmUrl": "https://github.com/ekstep/sunbird-devops.git" + "scmUrl": "https://github.com/ekstep/sunbird-devops.git", + "serviceName": "player-service", + "deployExtraArgs": "deploy_player=True" } } From 4d167823954acf7d86985ca122e0cfb351feea29 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Mon, 17 Dec 2018 15:17:44 +0530 Subject: [PATCH 0453/1345] feat: DO-350 adding sections --- properties.json | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/properties.json b/properties.json index eeff36e5a6..78beadc158 100644 --- a/properties.json +++ b/properties.json @@ -1,11 +1,12 @@ { - "push": { - "playbook": "docker_image_push.yml", + "common": { "scmUrl": "https://github.com/ekstep/sunbird-devops.git", "vaultFile": "/home/ops/vault" }, + "push": { + "playbook": "docker_image_push.yml" + }, "player": { - "scmUrl": "https://github.com/ekstep/sunbird-devops.git", "serviceName": "player-service", "deployExtraArgs": "deploy_player=True" } From 63840c98003660164f872ad07f4f876e76222e2d Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Mon, 17 Dec 2018 15:53:26 +0530 Subject: [PATCH 0454/1345] feat: DO-350 add props --- properties.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/properties.json b/properties.json index 78beadc158..21d3f04048 100644 --- a/properties.json +++ b/properties.json @@ -7,7 +7,8 @@ "playbook": "docker_image_push.yml" }, "player": { - "serviceName": "player-service", + "playbook": "deploy.yml", + "serviceName": "player", "deployExtraArgs": "deploy_player=True" } } From f1c09f983a25959a36f66a1045ec7031d6f0f2d1 Mon Sep 17 00:00:00 2001 From: Manzarul Date: Mon, 17 Dec 2018 17:52:47 +0530 Subject: [PATCH 0455/1345] Issues #SB-00 fix: chanegs otp from user prefix to otp prefix --- ansible/roles/kong-api/defaults/main.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/ansible/roles/kong-api/defaults/main.yml b/ansible/roles/kong-api/defaults/main.yml index 86b7ba51f7..07519d8774 100644 --- a/ansible/roles/kong-api/defaults/main.yml +++ b/ansible/roles/kong-api/defaults/main.yml @@ -50,6 +50,7 @@ plugin_service_prefix: /plugins config_service_prefix: /config textbook_service_prefix: /textbook lock_service_prefix: /lock +otp_service_prefix: /otp # Service URLs content_service_url: "http://content-service:5000" @@ -3582,7 +3583,7 @@ kong_apis: - name: request-size-limiting config.allowed_payload_size: "{{ small_request_size_limit }}" - name: generateOtp - request_path: "{{ user_service_prefix }}/v1/otp/generate" + request_path: "{{ otp_service_prefix }}/v1/generate" upstream_url: "{{ learning_service_url }}/v1/otp/generate" strip_request_path: true plugins: @@ -3598,7 +3599,7 @@ kong_apis: - name: request-size-limiting config.allowed_payload_size: "{{ small_request_size_limit }}" - name: verifyOtp - request_path: "{{ user_service_prefix }}/v1/otp/verify" + request_path: "{{ otp_service_prefix }}/v1/verify" upstream_url: "{{ learning_service_url }}/v1/otp/verify" strip_request_path: true plugins: From efed3efdae347022f1b395b4456611cf9c333284 Mon Sep 17 00:00:00 2001 From: Manzarul Date: Mon, 17 Dec 2018 18:52:12 +0530 Subject: [PATCH 0456/1345] Issues #SB-00 feat: onboarding get user by key api --- ansible/roles/kong-api/defaults/main.yml | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/ansible/roles/kong-api/defaults/main.yml b/ansible/roles/kong-api/defaults/main.yml index 07519d8774..59e53138ac 100644 --- a/ansible/roles/kong-api/defaults/main.yml +++ b/ansible/roles/kong-api/defaults/main.yml @@ -3613,4 +3613,20 @@ kong_apis: config.hour: "{{ medium_rate_limit_per_hour }}" config.limit_by: credential - name: request-size-limiting - config.allowed_payload_size: "{{ small_request_size_limit }}" \ No newline at end of file + config.allowed_payload_size: "{{ small_request_size_limit }}" + - name: getUserByKey + request_path: "{{ user_service_prefix }}/v1/getByKey" + upstream_url: "{{ learning_service_url }}/v1/user/getByKey" + strip_request_path: true + plugins: + - name: jwt + - name: cors + - "{{ statsd_pulgin }}" + - name: acl + config.whitelist: publicUser + - name: rate-limiting + config.policy: local + config.hour: "{{ medium_rate_limit_per_hour }}" + config.limit_by: credential + - name: request-size-limiting + config.allowed_payload_size: "{{ small_request_size_limit }}" \ No newline at end of file From 0b46deb73d09b81541c2bbe363e7a1ebb511ba0d Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Tue, 18 Dec 2018 09:56:11 +0530 Subject: [PATCH 0457/1345] Issue #000: DO-350 temp commit --- pipelines/deploy/player/Jenkinsfile.deploy | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/pipelines/deploy/player/Jenkinsfile.deploy b/pipelines/deploy/player/Jenkinsfile.deploy index 2f22e7587a..498dba7e0a 100644 --- a/pipelines/deploy/player/Jenkinsfile.deploy +++ b/pipelines/deploy/player/Jenkinsfile.deploy @@ -3,11 +3,17 @@ node(){ checkout scm def values = setVariables() -values.put('agent', 'general-dev') -values.put('serviceName', 'player-service') + +agent = sh(returnStdout: true, script: 'jq -r .nodeName metadata.json').trim() +org = sh(returnStdout: true, script: 'jq -r .org metadata.json').trim() +name = sh(returnStdout: true, script: 'jq -r .name metadata.json').trim() +version= sh(returnStdout: true, script: 'jq -r .version metadata.json').trim() + +values.put('agent', agent) values.put('artifactLabel', 'bronze') -values.put('artifactName', 'metadata.json') values.put('parentProject', parentProject) values.put('deployExtraArgs', 'deploy_player=True') +println pipelineParams + deployPlugin(values) } From 977f499c9f15249b0939564ef2b1ba94cdd85017 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Tue, 18 Dec 2018 10:15:54 +0530 Subject: [PATCH 0458/1345] Issue #000: DO-350 Archive artifiacts for downstream --- pipelines/deploy/player/Jenkinsfile.push | 1 + 1 file changed, 1 insertion(+) diff --git a/pipelines/deploy/player/Jenkinsfile.push b/pipelines/deploy/player/Jenkinsfile.push index 60b24b3f99..bc26497981 100644 --- a/pipelines/deploy/player/Jenkinsfile.push +++ b/pipelines/deploy/player/Jenkinsfile.push @@ -8,6 +8,7 @@ def values = setVariables() copyArtifacts filter: 'metadata.json', projectName: "$metadataPath" else copyArtifacts filter: 'metadata.json', projectName: values.metadataPath +archiveArtifacts 'metadata.json' imageName = sh(returnStdout: true, script: 'jq -r .imageName metadata.json').trim() agent = sh(returnStdout: true, script: 'jq -r .nodeName metadata.json').trim() values.put('imageName', imageName) From eee189a874fbb3628923588dac7de26126fff8c8 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Tue, 18 Dec 2018 10:36:32 +0530 Subject: [PATCH 0459/1345] Issue #000: DO-350 temp commit --- pipelines/deploy/player/Jenkinsfile.deploy | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/pipelines/deploy/player/Jenkinsfile.deploy b/pipelines/deploy/player/Jenkinsfile.deploy index 498dba7e0a..abbf949c35 100644 --- a/pipelines/deploy/player/Jenkinsfile.deploy +++ b/pipelines/deploy/player/Jenkinsfile.deploy @@ -7,12 +7,22 @@ def values = setVariables() agent = sh(returnStdout: true, script: 'jq -r .nodeName metadata.json').trim() org = sh(returnStdout: true, script: 'jq -r .org metadata.json').trim() name = sh(returnStdout: true, script: 'jq -r .name metadata.json').trim() -version= sh(returnStdout: true, script: 'jq -r .version metadata.json').trim() +version = sh(returnStdout: true, script: 'jq -r .version metadata.json').trim() +hubuser = sh(returnStdout: true, script: 'jq -r .hubuser metadata.json').trim() +commitHash = sh(returnStdout: true, script: 'jq -r .commitHash metadata.json').trim() values.put('agent', agent) +values.put('org', org) +values.put('name', name) +values.put('version', version) +values.put('hubuser', hubuser) +values.put('commitHash', commitHash) values.put('artifactLabel', 'bronze') -values.put('parentProject', parentProject) -values.put('deployExtraArgs', 'deploy_player=True') + +ansibleExtraArgs = """--tags "stack-sunbird" --extra-vars "hub_org=$pipelineParams.org \ +image_name=$pipelineParams.name image_tag=$pipelineParams.version-$pipelineParams.artifactLabel \ +service_name=$pipelineParams.serviceName $pipelineParams.deployExtraArgs""" + println pipelineParams deployPlugin(values) From 28f787ee144039ea2aac291f854dbd1d0e40508f Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Tue, 18 Dec 2018 12:35:08 +0530 Subject: [PATCH 0460/1345] Issue # 000: DO-350 removed not needed params --- pipelines/deploy/player/Jenkinsfile.deploy | 24 ++++++++-------------- 1 file changed, 8 insertions(+), 16 deletions(-) diff --git a/pipelines/deploy/player/Jenkinsfile.deploy b/pipelines/deploy/player/Jenkinsfile.deploy index abbf949c35..1a6eb9cf87 100644 --- a/pipelines/deploy/player/Jenkinsfile.deploy +++ b/pipelines/deploy/player/Jenkinsfile.deploy @@ -5,25 +5,17 @@ checkout scm def values = setVariables() agent = sh(returnStdout: true, script: 'jq -r .nodeName metadata.json').trim() -org = sh(returnStdout: true, script: 'jq -r .org metadata.json').trim() -name = sh(returnStdout: true, script: 'jq -r .name metadata.json').trim() -version = sh(returnStdout: true, script: 'jq -r .version metadata.json').trim() -hubuser = sh(returnStdout: true, script: 'jq -r .hubuser metadata.json').trim() -commitHash = sh(returnStdout: true, script: 'jq -r .commitHash metadata.json').trim() - +imageName = sh(returnStdout: true, script: 'jq -r .imageName metadata.json').trim() values.put('agent', agent) -values.put('org', org) -values.put('name', name) -values.put('version', version) -values.put('hubuser', hubuser) -values.put('commitHash', commitHash) -values.put('artifactLabel', 'bronze') +values.put('imageName', imageName) + +image_tag = ($image_tag != "") ? $image_tag : 'latest' -ansibleExtraArgs = """--tags "stack-sunbird" --extra-vars "hub_org=$pipelineParams.org \ -image_name=$pipelineParams.name image_tag=$pipelineParams.version-$pipelineParams.artifactLabel \ -service_name=$pipelineParams.serviceName $pipelineParams.deployExtraArgs""" +ansibleExtraArgs = """--tags "stack-sunbird" --extra-vars "hub_org=$hub_org \ +image_name=$pipelineParams.imageName image_tag=$image_tag service_name=$pipelineParams.serviceName \ +$pipelineParams.deployExtraArgs --vault-password-file $pipelineParams.vaultFile""" println pipelineParams -deployPlugin(values) +ansiblePlugin(values) } From 183d283f596ee2acb256adef910dbfd0a32b80f7 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Tue, 18 Dec 2018 12:40:57 +0530 Subject: [PATCH 0461/1345] Issue # 000: Updating extra args --- pipelines/deploy/player/Jenkinsfile.push | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/pipelines/deploy/player/Jenkinsfile.push b/pipelines/deploy/player/Jenkinsfile.push index bc26497981..265003e69d 100644 --- a/pipelines/deploy/player/Jenkinsfile.push +++ b/pipelines/deploy/player/Jenkinsfile.push @@ -4,17 +4,22 @@ node(){ checkout scm println private_repo_branch def values = setVariables() - if (values.metadataPath == "manual") - copyArtifacts filter: 'metadata.json', projectName: "$metadataPath" + if (values.metadataFile != null) + copyArtifacts filter: 'metadata.json', projectName: values.metadataFile else - copyArtifacts filter: 'metadata.json', projectName: values.metadataPath + copyArtifacts filter: 'metadata.json', projectName: $metadataFile + archiveArtifacts 'metadata.json' + imageName = sh(returnStdout: true, script: 'jq -r .imageName metadata.json').trim() agent = sh(returnStdout: true, script: 'jq -r .nodeName metadata.json').trim() values.put('imageName', imageName) values.put('agent', agent) -ansibleExtraArgs = "--extra-vars \"image_name=$values.imageName\" --vault-password-file $values.vaultFile".trim() -println ansibleExtraArgs + +ansibleExtraArgs = """--extra-vars "image_name=$values.imageName" --vault-password-file $values.vaultFile""".trim() values.put('ansibleExtraArgs', ansibleExtraArgs) + +println values + ansiblePlugin(values) } From c15e0af836cd6dfe76f355ad345035aef9592126 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Tue, 18 Dec 2018 12:41:15 +0530 Subject: [PATCH 0462/1345] Issue # 000: DO-350 Updating extra args --- pipelines/deploy/player/Jenkinsfile.deploy | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pipelines/deploy/player/Jenkinsfile.deploy b/pipelines/deploy/player/Jenkinsfile.deploy index 1a6eb9cf87..f77cd1d54d 100644 --- a/pipelines/deploy/player/Jenkinsfile.deploy +++ b/pipelines/deploy/player/Jenkinsfile.deploy @@ -12,10 +12,10 @@ values.put('imageName', imageName) image_tag = ($image_tag != "") ? $image_tag : 'latest' ansibleExtraArgs = """--tags "stack-sunbird" --extra-vars "hub_org=$hub_org \ -image_name=$pipelineParams.imageName image_tag=$image_tag service_name=$pipelineParams.serviceName \ -$pipelineParams.deployExtraArgs --vault-password-file $pipelineParams.vaultFile""" +image_name=$values.imageName image_tag=$image_tag service_name=$values.serviceName \ +$values.deployExtraArgs --vault-password-file $values.vaultFile""".trim() -println pipelineParams +println values ansiblePlugin(values) } From a4f5f05fbe4f6193c39d2ea4e951881887218835 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Tue, 18 Dec 2018 12:42:27 +0530 Subject: [PATCH 0463/1345] Issue # 000: DO-350 print values --- pipelines/deploy/player/Jenkinsfile.deploy | 1 + 1 file changed, 1 insertion(+) diff --git a/pipelines/deploy/player/Jenkinsfile.deploy b/pipelines/deploy/player/Jenkinsfile.deploy index f77cd1d54d..ae7d719aa9 100644 --- a/pipelines/deploy/player/Jenkinsfile.deploy +++ b/pipelines/deploy/player/Jenkinsfile.deploy @@ -2,6 +2,7 @@ node(){ checkout scm +println private_repo_branch def values = setVariables() agent = sh(returnStdout: true, script: 'jq -r .nodeName metadata.json').trim() From 104d17d63eeb8560b38ab8569d42f63efa4c4da5 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Tue, 18 Dec 2018 13:56:11 +0530 Subject: [PATCH 0464/1345] Issue # 000: DO-350 Adding metadata file path --- pipelines/deploy/player/Jenkinsfile.deploy | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/pipelines/deploy/player/Jenkinsfile.deploy b/pipelines/deploy/player/Jenkinsfile.deploy index ae7d719aa9..ef0110f683 100644 --- a/pipelines/deploy/player/Jenkinsfile.deploy +++ b/pipelines/deploy/player/Jenkinsfile.deploy @@ -5,6 +5,13 @@ checkout scm println private_repo_branch def values = setVariables() +if (values.metadataFile != null) + copyArtifacts filter: 'metadata.json', projectName: values.metadataFile + else + copyArtifacts filter: 'metadata.json', projectName: $metadataFile + +archiveArtifacts 'metadata.json' + agent = sh(returnStdout: true, script: 'jq -r .nodeName metadata.json').trim() imageName = sh(returnStdout: true, script: 'jq -r .imageName metadata.json').trim() values.put('agent', agent) From 736fc0f3be2e496b7bc7d4fbcff1453d3d73fcaf Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Tue, 18 Dec 2018 14:02:22 +0530 Subject: [PATCH 0465/1345] Issue # 000: DO-350 Debug --- pipelines/deploy/player/Jenkinsfile.deploy | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pipelines/deploy/player/Jenkinsfile.deploy b/pipelines/deploy/player/Jenkinsfile.deploy index ef0110f683..d6f7db036d 100644 --- a/pipelines/deploy/player/Jenkinsfile.deploy +++ b/pipelines/deploy/player/Jenkinsfile.deploy @@ -5,6 +5,9 @@ checkout scm println private_repo_branch def values = setVariables() +println $metadataFile +println metadataFile + if (values.metadataFile != null) copyArtifacts filter: 'metadata.json', projectName: values.metadataFile else From 850694dd2a822990458a1fff1522de2c07b94cc2 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Tue, 18 Dec 2018 14:03:49 +0530 Subject: [PATCH 0466/1345] Issue # 000: DO-350 Debug --- pipelines/deploy/player/Jenkinsfile.deploy | 1 - 1 file changed, 1 deletion(-) diff --git a/pipelines/deploy/player/Jenkinsfile.deploy b/pipelines/deploy/player/Jenkinsfile.deploy index d6f7db036d..cf3547dbe3 100644 --- a/pipelines/deploy/player/Jenkinsfile.deploy +++ b/pipelines/deploy/player/Jenkinsfile.deploy @@ -5,7 +5,6 @@ checkout scm println private_repo_branch def values = setVariables() -println $metadataFile println metadataFile if (values.metadataFile != null) From 6867f123c3d683f9a6244699198af73037c415d2 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Tue, 18 Dec 2018 14:04:59 +0530 Subject: [PATCH 0467/1345] Issue # : DO-350 Fix metadata path --- pipelines/deploy/player/Jenkinsfile.deploy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pipelines/deploy/player/Jenkinsfile.deploy b/pipelines/deploy/player/Jenkinsfile.deploy index cf3547dbe3..e7dc5a5f1d 100644 --- a/pipelines/deploy/player/Jenkinsfile.deploy +++ b/pipelines/deploy/player/Jenkinsfile.deploy @@ -10,7 +10,7 @@ println metadataFile if (values.metadataFile != null) copyArtifacts filter: 'metadata.json', projectName: values.metadataFile else - copyArtifacts filter: 'metadata.json', projectName: $metadataFile + copyArtifacts filter: 'metadata.json', projectName: metadataFile archiveArtifacts 'metadata.json' From 9804649b9f6451221a6e19bd749ab24f5623231e Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Tue, 18 Dec 2018 14:05:21 +0530 Subject: [PATCH 0468/1345] Issue # : DO-350 Fix metadata path --- pipelines/deploy/player/Jenkinsfile.push | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/pipelines/deploy/player/Jenkinsfile.push b/pipelines/deploy/player/Jenkinsfile.push index 265003e69d..82c02e37e7 100644 --- a/pipelines/deploy/player/Jenkinsfile.push +++ b/pipelines/deploy/player/Jenkinsfile.push @@ -4,10 +4,13 @@ node(){ checkout scm println private_repo_branch def values = setVariables() + +println metadataFile + if (values.metadataFile != null) copyArtifacts filter: 'metadata.json', projectName: values.metadataFile else - copyArtifacts filter: 'metadata.json', projectName: $metadataFile + copyArtifacts filter: 'metadata.json', projectName: metadataFile archiveArtifacts 'metadata.json' From 2c0e1fc679e6f986ca13f6acee714bf2de6fae39 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Tue, 18 Dec 2018 14:06:34 +0530 Subject: [PATCH 0469/1345] Issue # : DO-350 Fix image tag reference --- pipelines/deploy/player/Jenkinsfile.deploy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pipelines/deploy/player/Jenkinsfile.deploy b/pipelines/deploy/player/Jenkinsfile.deploy index e7dc5a5f1d..7dd27e1183 100644 --- a/pipelines/deploy/player/Jenkinsfile.deploy +++ b/pipelines/deploy/player/Jenkinsfile.deploy @@ -19,7 +19,7 @@ imageName = sh(returnStdout: true, script: 'jq -r .imageName metadata.json').tri values.put('agent', agent) values.put('imageName', imageName) -image_tag = ($image_tag != "") ? $image_tag : 'latest' +image_tag = (image_tag != "") ? image_tag : 'latest' ansibleExtraArgs = """--tags "stack-sunbird" --extra-vars "hub_org=$hub_org \ image_name=$values.imageName image_tag=$image_tag service_name=$values.serviceName \ From 985b00c21d74b399f0cfd34ffe51b965a553312c Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Tue, 18 Dec 2018 14:08:38 +0530 Subject: [PATCH 0470/1345] Issue # 000: Add ansible extra args to map --- pipelines/deploy/player/Jenkinsfile.deploy | 1 + 1 file changed, 1 insertion(+) diff --git a/pipelines/deploy/player/Jenkinsfile.deploy b/pipelines/deploy/player/Jenkinsfile.deploy index 7dd27e1183..9f3c2caeb8 100644 --- a/pipelines/deploy/player/Jenkinsfile.deploy +++ b/pipelines/deploy/player/Jenkinsfile.deploy @@ -25,6 +25,7 @@ ansibleExtraArgs = """--tags "stack-sunbird" --extra-vars "hub_org=$hub_org \ image_name=$values.imageName image_tag=$image_tag service_name=$values.serviceName \ $values.deployExtraArgs --vault-password-file $values.vaultFile""".trim() +values.put('ansibleExtraArgs', ansibleExtraArgs) println values ansiblePlugin(values) From c126f40d34824075fa8d8cfce27478fb08c83285 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Tue, 18 Dec 2018 14:23:18 +0530 Subject: [PATCH 0471/1345] Issue # 000: Changing variable name --- pipelines/deploy/player/Jenkinsfile.push | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pipelines/deploy/player/Jenkinsfile.push b/pipelines/deploy/player/Jenkinsfile.push index 82c02e37e7..03f792d461 100644 --- a/pipelines/deploy/player/Jenkinsfile.push +++ b/pipelines/deploy/player/Jenkinsfile.push @@ -5,12 +5,12 @@ checkout scm println private_repo_branch def values = setVariables() -println metadataFile +println parentProject if (values.metadataFile != null) - copyArtifacts filter: 'metadata.json', projectName: values.metadataFile + copyArtifacts filter: 'metadata.json', projectName: values.parentProject else - copyArtifacts filter: 'metadata.json', projectName: metadataFile + copyArtifacts filter: 'metadata.json', projectName: parentProject archiveArtifacts 'metadata.json' From a1158c136eb3c15f81a5594747b3801e62112722 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Tue, 18 Dec 2018 14:23:48 +0530 Subject: [PATCH 0472/1345] Issue # 000: Changing variable name --- pipelines/deploy/player/Jenkinsfile.deploy | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pipelines/deploy/player/Jenkinsfile.deploy b/pipelines/deploy/player/Jenkinsfile.deploy index 9f3c2caeb8..113cc789f2 100644 --- a/pipelines/deploy/player/Jenkinsfile.deploy +++ b/pipelines/deploy/player/Jenkinsfile.deploy @@ -5,12 +5,12 @@ checkout scm println private_repo_branch def values = setVariables() -println metadataFile +println parentProject if (values.metadataFile != null) - copyArtifacts filter: 'metadata.json', projectName: values.metadataFile + copyArtifacts filter: 'metadata.json', projectName: values.parentProject else - copyArtifacts filter: 'metadata.json', projectName: metadataFile + copyArtifacts filter: 'metadata.json', projectName: parentProject archiveArtifacts 'metadata.json' From 01ca3dea5a70f0f953b28e06ce1c425b65b7837e Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Tue, 18 Dec 2018 14:27:36 +0530 Subject: [PATCH 0473/1345] Issue # 000: Changing variable name --- pipelines/deploy/player/Jenkinsfile.push | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pipelines/deploy/player/Jenkinsfile.push b/pipelines/deploy/player/Jenkinsfile.push index 03f792d461..1bd5dc103c 100644 --- a/pipelines/deploy/player/Jenkinsfile.push +++ b/pipelines/deploy/player/Jenkinsfile.push @@ -7,7 +7,7 @@ def values = setVariables() println parentProject - if (values.metadataFile != null) + if (values.parentProject != null) copyArtifacts filter: 'metadata.json', projectName: values.parentProject else copyArtifacts filter: 'metadata.json', projectName: parentProject From 266f7216c72c0850803d1692c278d42e7835086e Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Tue, 18 Dec 2018 14:27:40 +0530 Subject: [PATCH 0474/1345] Issue # 000: Changing variable name --- pipelines/deploy/player/Jenkinsfile.deploy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pipelines/deploy/player/Jenkinsfile.deploy b/pipelines/deploy/player/Jenkinsfile.deploy index 113cc789f2..81a0052e03 100644 --- a/pipelines/deploy/player/Jenkinsfile.deploy +++ b/pipelines/deploy/player/Jenkinsfile.deploy @@ -7,7 +7,7 @@ def values = setVariables() println parentProject -if (values.metadataFile != null) +if (values.parentProject != null) copyArtifacts filter: 'metadata.json', projectName: values.parentProject else copyArtifacts filter: 'metadata.json', projectName: parentProject From 429193bc0c3e3d4949c53a06628762840c6cf601 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Tue, 18 Dec 2018 14:51:02 +0530 Subject: [PATCH 0475/1345] Issue # 000: DO-350 Accessing jenking parameters --- pipelines/deploy/player/Jenkinsfile.push | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/pipelines/deploy/player/Jenkinsfile.push b/pipelines/deploy/player/Jenkinsfile.push index 1bd5dc103c..82e38b80aa 100644 --- a/pipelines/deploy/player/Jenkinsfile.push +++ b/pipelines/deploy/player/Jenkinsfile.push @@ -1,17 +1,15 @@ @Library('deploy-conf') _ node(){ + checkout scm -println private_repo_branch def values = setVariables() -println parentProject - if (values.parentProject != null) copyArtifacts filter: 'metadata.json', projectName: values.parentProject - else - copyArtifacts filter: 'metadata.json', projectName: parentProject - + else + copyArtifacts filter: 'metadata.json', projectName: params.parentProject + archiveArtifacts 'metadata.json' imageName = sh(returnStdout: true, script: 'jq -r .imageName metadata.json').trim() From 1ccd06952bfd9a86876cd2c3b92e9c472300de2f Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Tue, 18 Dec 2018 14:52:12 +0530 Subject: [PATCH 0476/1345] Issue # 000: DO-350 Accessing jenking parameters --- pipelines/deploy/player/Jenkinsfile.deploy | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/pipelines/deploy/player/Jenkinsfile.deploy b/pipelines/deploy/player/Jenkinsfile.deploy index 81a0052e03..09e945f4dd 100644 --- a/pipelines/deploy/player/Jenkinsfile.deploy +++ b/pipelines/deploy/player/Jenkinsfile.deploy @@ -2,15 +2,13 @@ node(){ checkout scm -println private_repo_branch -def values = setVariables() -println parentProject +def values = setVariables() if (values.parentProject != null) copyArtifacts filter: 'metadata.json', projectName: values.parentProject else - copyArtifacts filter: 'metadata.json', projectName: parentProject + copyArtifacts filter: 'metadata.json', projectName: params.parentProject archiveArtifacts 'metadata.json' @@ -19,7 +17,7 @@ imageName = sh(returnStdout: true, script: 'jq -r .imageName metadata.json').tri values.put('agent', agent) values.put('imageName', imageName) -image_tag = (image_tag != "") ? image_tag : 'latest' +image_tag = (params.image_tag != "") ? params.image_tag : 'latest' ansibleExtraArgs = """--tags "stack-sunbird" --extra-vars "hub_org=$hub_org \ image_name=$values.imageName image_tag=$image_tag service_name=$values.serviceName \ From b6a87e0e817378f667fe80c289a0225517673601 Mon Sep 17 00:00:00 2001 From: S M Y Date: Tue, 18 Dec 2018 15:15:55 +0530 Subject: [PATCH 0477/1345] Issue #000 es: es curator upgraded version --- ansible/roles/es5-snapshot-purge/meta/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/es5-snapshot-purge/meta/main.yml b/ansible/roles/es5-snapshot-purge/meta/main.yml index cfdae4de83..f6b5779917 100644 --- a/ansible/roles/es5-snapshot-purge/meta/main.yml +++ b/ansible/roles/es5-snapshot-purge/meta/main.yml @@ -1,3 +1,3 @@ --- dependencies: - - { role: es-curator, es_curator_major_version: 5, es_curator_version: 5.5.4 } + - { role: es-curator, es_curator_major_version: 5, es_curator_version: 5.6 } From 3cfb77e75fc3ce664a7abe9bc484741cc6534d4e Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Tue, 18 Dec 2018 15:16:29 +0530 Subject: [PATCH 0478/1345] Issue # 000: DO-350 Accessing jenkins parameters --- pipelines/deploy/player/Jenkinsfile.deploy | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pipelines/deploy/player/Jenkinsfile.deploy b/pipelines/deploy/player/Jenkinsfile.deploy index 09e945f4dd..e5114d28e0 100644 --- a/pipelines/deploy/player/Jenkinsfile.deploy +++ b/pipelines/deploy/player/Jenkinsfile.deploy @@ -7,8 +7,10 @@ def values = setVariables() if (values.parentProject != null) copyArtifacts filter: 'metadata.json', projectName: values.parentProject - else + else { copyArtifacts filter: 'metadata.json', projectName: params.parentProject + values.put('parentProject', params.parentProject) + } archiveArtifacts 'metadata.json' From a0fdd1853cc5c740546e468ba0cf438d72976f8c Mon Sep 17 00:00:00 2001 From: S M Y Date: Tue, 18 Dec 2018 15:38:30 +0530 Subject: [PATCH 0479/1345] Issue #000 es: es curator version updation --- ansible/roles/es-curator/defaults/main.yml | 2 +- ansible/roles/es5-snapshot-purge/meta/main.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ansible/roles/es-curator/defaults/main.yml b/ansible/roles/es-curator/defaults/main.yml index c013f5d137..20069b19b9 100644 --- a/ansible/roles/es-curator/defaults/main.yml +++ b/ansible/roles/es-curator/defaults/main.yml @@ -2,4 +2,4 @@ # es_curator_version: 3.4.1-1 es_curator_major_version: 5 -es_curator_version: 5.5.4 +es_curator_version: 5.6.0 diff --git a/ansible/roles/es5-snapshot-purge/meta/main.yml b/ansible/roles/es5-snapshot-purge/meta/main.yml index f6b5779917..082ee0e845 100644 --- a/ansible/roles/es5-snapshot-purge/meta/main.yml +++ b/ansible/roles/es5-snapshot-purge/meta/main.yml @@ -1,3 +1,3 @@ --- dependencies: - - { role: es-curator, es_curator_major_version: 5, es_curator_version: 5.6 } + - { role: es-curator, es_curator_major_version: 5, es_curator_version: 5.6.0 } From 658ac3e64bdc51844e6995816a8a95d01b81ed3f Mon Sep 17 00:00:00 2001 From: S M Y Date: Tue, 18 Dec 2018 16:23:29 +0530 Subject: [PATCH 0480/1345] Issue #000 es: logger limit updation --- ansible/roles/stack-logger/defaults/main.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ansible/roles/stack-logger/defaults/main.yml b/ansible/roles/stack-logger/defaults/main.yml index 5b3c95ada6..40c85e6290 100644 --- a/ansible/roles/stack-logger/defaults/main.yml +++ b/ansible/roles/stack-logger/defaults/main.yml @@ -4,8 +4,8 @@ logger_logstash_replicas: 2 logger_logstash_reservation_memory: 512M logger_logstash_limit_memory: 750M -logger_kibana_reservation_memory: 512M -logger_kibana_limit_memory: 512M +logger_kibana_reservation_memory: 750M +logger_kibana_limit_memory: 750M logger_logspout_reservation_memory: 75M logger_logspout_limit_memory: 75M From ac1bfd65e93545c72aaf3b13719b9d1b8aae0f9d Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Tue, 18 Dec 2018 16:26:41 +0530 Subject: [PATCH 0481/1345] Issue # 000: DO-350 Remove print statements --- pipelines/deploy/player/Jenkinsfile.push | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/pipelines/deploy/player/Jenkinsfile.push b/pipelines/deploy/player/Jenkinsfile.push index 82e38b80aa..b38cd45d09 100644 --- a/pipelines/deploy/player/Jenkinsfile.push +++ b/pipelines/deploy/player/Jenkinsfile.push @@ -1,26 +1,18 @@ @Library('deploy-conf') _ node(){ - checkout scm def values = setVariables() - if (values.parentProject != null) copyArtifacts filter: 'metadata.json', projectName: values.parentProject else - copyArtifacts filter: 'metadata.json', projectName: params.parentProject - + copyArtifacts filter: 'metadata.json', projectName: params.parentProject archiveArtifacts 'metadata.json' - imageName = sh(returnStdout: true, script: 'jq -r .imageName metadata.json').trim() agent = sh(returnStdout: true, script: 'jq -r .nodeName metadata.json').trim() values.put('imageName', imageName) values.put('agent', agent) - ansibleExtraArgs = """--extra-vars "image_name=$values.imageName" --vault-password-file $values.vaultFile""".trim() values.put('ansibleExtraArgs', ansibleExtraArgs) - -println values - ansiblePlugin(values) } From d796b6137185574ad184953ea74b4a17dfd6df1c Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Tue, 18 Dec 2018 16:27:41 +0530 Subject: [PATCH 0482/1345] Issue # 000: DO-350 Remove print statements --- pipelines/deploy/player/Jenkinsfile.deploy | 19 +++++-------------- 1 file changed, 5 insertions(+), 14 deletions(-) diff --git a/pipelines/deploy/player/Jenkinsfile.deploy b/pipelines/deploy/player/Jenkinsfile.deploy index e5114d28e0..010af31134 100644 --- a/pipelines/deploy/player/Jenkinsfile.deploy +++ b/pipelines/deploy/player/Jenkinsfile.deploy @@ -2,31 +2,22 @@ node(){ checkout scm - def values = setVariables() - if (values.parentProject != null) - copyArtifacts filter: 'metadata.json', projectName: values.parentProject - else { - copyArtifacts filter: 'metadata.json', projectName: params.parentProject - values.put('parentProject', params.parentProject) - } - + copyArtifacts filter: 'metadata.json', projectName: values.parentProject +else { + copyArtifacts filter: 'metadata.json', projectName: params.parentProject + values.put('parentProject', params.parentProject) + } archiveArtifacts 'metadata.json' - agent = sh(returnStdout: true, script: 'jq -r .nodeName metadata.json').trim() imageName = sh(returnStdout: true, script: 'jq -r .imageName metadata.json').trim() values.put('agent', agent) values.put('imageName', imageName) - image_tag = (params.image_tag != "") ? params.image_tag : 'latest' - ansibleExtraArgs = """--tags "stack-sunbird" --extra-vars "hub_org=$hub_org \ image_name=$values.imageName image_tag=$image_tag service_name=$values.serviceName \ $values.deployExtraArgs --vault-password-file $values.vaultFile""".trim() - values.put('ansibleExtraArgs', ansibleExtraArgs) -println values - ansiblePlugin(values) } From a2c21a9c839a9d9604ad45f8a42f691aa86d8481 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Tue, 18 Dec 2018 16:47:59 +0530 Subject: [PATCH 0483/1345] feat: DO-350 Exception handling --- pipelines/deploy/player/Jenkinsfile.push | 45 ++++++++++++++++-------- 1 file changed, 30 insertions(+), 15 deletions(-) diff --git a/pipelines/deploy/player/Jenkinsfile.push b/pipelines/deploy/player/Jenkinsfile.push index b38cd45d09..7976d29fcb 100644 --- a/pipelines/deploy/player/Jenkinsfile.push +++ b/pipelines/deploy/player/Jenkinsfile.push @@ -1,18 +1,33 @@ -@Library('deploy-conf') _ node(){ -checkout scm -def values = setVariables() - if (values.parentProject != null) - copyArtifacts filter: 'metadata.json', projectName: values.parentProject - else - copyArtifacts filter: 'metadata.json', projectName: params.parentProject -archiveArtifacts 'metadata.json' -imageName = sh(returnStdout: true, script: 'jq -r .imageName metadata.json').trim() -agent = sh(returnStdout: true, script: 'jq -r .nodeName metadata.json').trim() -values.put('imageName', imageName) -values.put('agent', agent) -ansibleExtraArgs = """--extra-vars "image_name=$values.imageName" --vault-password-file $values.vaultFile""".trim() -values.put('ansibleExtraArgs', ansibleExtraArgs) -ansiblePlugin(values) + try { + stage('checkout public repo') { + checkout scm + } + + stage('define variables') { + def values = setVariables() + if (values.parentProject == null && params.parentProject == "") + error 'Please specify project name to copy metedata.json file as a parameter to job or set it as a Jenkins environment variable' + + if (values.parentProject != null) + copyArtifacts filter: 'metadata.json', projectName: values.parentProject + else + copyArtifacts filter: 'metadata.json', projectName: params.parentProject + + imageName = sh(returnStdout: true, script: 'jq -r .imageName metadata.json').trim() + agent = sh(returnStdout: true, script: 'jq -r .nodeName metadata.json').trim() + values.put('imageName', imageName) + values.put('agent', agent) + ansibleExtraArgs = """--extra-vars "image_name=$values.imageName" --vault-password-file $values.vaultFile""".trim() + values.put('ansibleExtraArgs', ansibleExtraArgs) + ansiblePlugin(values) + archiveArtifacts 'metadata.json' + } + } + + catch (Exception e) + { + println e.stackTrace() + } } From edff7a8805e97f89267fc98f0049fb39975484a9 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Tue, 18 Dec 2018 16:48:45 +0530 Subject: [PATCH 0484/1345] feat: DO-350 Import library --- pipelines/deploy/player/Jenkinsfile.push | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pipelines/deploy/player/Jenkinsfile.push b/pipelines/deploy/player/Jenkinsfile.push index 7976d29fcb..6ff174069c 100644 --- a/pipelines/deploy/player/Jenkinsfile.push +++ b/pipelines/deploy/player/Jenkinsfile.push @@ -1,4 +1,4 @@ - +@Library('deploy-conf') _ node(){ try { stage('checkout public repo') { From 1341823f18ba2aed08772cd8193c792d6d71ff1b Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Tue, 18 Dec 2018 16:58:21 +0530 Subject: [PATCH 0485/1345] feat: DO-350 Exception handling --- pipelines/deploy/player/Jenkinsfile.deploy | 63 +++++++++++++++------- 1 file changed, 43 insertions(+), 20 deletions(-) diff --git a/pipelines/deploy/player/Jenkinsfile.deploy b/pipelines/deploy/player/Jenkinsfile.deploy index 010af31134..f803324acb 100644 --- a/pipelines/deploy/player/Jenkinsfile.deploy +++ b/pipelines/deploy/player/Jenkinsfile.deploy @@ -1,23 +1,46 @@ @Library('deploy-conf') _ -node(){ -checkout scm -def values = setVariables() -if (values.parentProject != null) - copyArtifacts filter: 'metadata.json', projectName: values.parentProject -else { - copyArtifacts filter: 'metadata.json', projectName: params.parentProject - values.put('parentProject', params.parentProject) - } -archiveArtifacts 'metadata.json' -agent = sh(returnStdout: true, script: 'jq -r .nodeName metadata.json').trim() -imageName = sh(returnStdout: true, script: 'jq -r .imageName metadata.json').trim() -values.put('agent', agent) -values.put('imageName', imageName) -image_tag = (params.image_tag != "") ? params.image_tag : 'latest' -ansibleExtraArgs = """--tags "stack-sunbird" --extra-vars "hub_org=$hub_org \ -image_name=$values.imageName image_tag=$image_tag service_name=$values.serviceName \ -$values.deployExtraArgs --vault-password-file $values.vaultFile""".trim() -values.put('ansibleExtraArgs', ansibleExtraArgs) -ansiblePlugin(values) +node() { + try { + stage('checkout public repo') { + checkout scm + } + + stage('define variables') { + def values = setVariables() + + if (values.parentProject == null && params.parentProject == "") + error 'Please specify project name to copy metedata.json file as a parameter to job or set it as a Jenkins environment variable' + + if (hub_org == "") + error 'Please set a Jenkins environment variable named hub_org and value as sunbird' + + if (values.parentProject != null) + copyArtifacts filter: 'metadata.json', projectName: values.parentProject + else { + copyArtifacts filter: 'metadata.json', projectName: params.parentProject + values.put('parentProject', params.parentProject) + } + + agent = sh(returnStdout: true, script: 'jq -r .nodeName metadata.json').trim() + imageName = sh(returnStdout: true, script: 'jq -r .imageName metadata.json').trim() + values.put('agent', agent) + values.put('imageName', imageName) + + image_tag = (params.image_tag != "") ? params.image_tag : 'latest' + if (image_tag == "latest") + println "Image tag not specified, using the latest image" + + ansibleExtraArgs = """--tags "stack-sunbird" --extra-vars "hub_org=$hub_org \ + image_name=$values.imageName image_tag=$image_tag service_name=$values.serviceName \ + $values.deployExtraArgs --vault-password-file $values.vaultFile""".trim() + + values.put('ansibleExtraArgs', ansibleExtraArgs) + ansiblePlugin(values) + archiveArtifacts 'metadata.json' + } + } + catch (Exception e) { + println e.stackTrace() + } } From 37eaa9e2e42393a14b6944f5f6a5868cb6f86d2b Mon Sep 17 00:00:00 2001 From: S M Y Date: Tue, 18 Dec 2018 17:08:19 +0530 Subject: [PATCH 0486/1345] Issue #000 kibana: Kibana image change --- ansible/roles/stack-logger/defaults/main.yml | 1 + ansible/roles/stack-logger/templates/stack-logger.yml | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/ansible/roles/stack-logger/defaults/main.yml b/ansible/roles/stack-logger/defaults/main.yml index 40c85e6290..c96865853e 100644 --- a/ansible/roles/stack-logger/defaults/main.yml +++ b/ansible/roles/stack-logger/defaults/main.yml @@ -6,6 +6,7 @@ logger_logstash_limit_memory: 750M logger_kibana_reservation_memory: 750M logger_kibana_limit_memory: 750M +kibana_image: kibana:4.6 logger_logspout_reservation_memory: 75M logger_logspout_limit_memory: 75M diff --git a/ansible/roles/stack-logger/templates/stack-logger.yml b/ansible/roles/stack-logger/templates/stack-logger.yml index 3ffa51738c..c4b1ac0f8c 100644 --- a/ansible/roles/stack-logger/templates/stack-logger.yml +++ b/ansible/roles/stack-logger/templates/stack-logger.yml @@ -2,7 +2,7 @@ version: '3.3' services: kibana: - image: kibana:4.6 + image: {{ kibana_image }} deploy: resources: reservations: From d47d316ea9415bd2a9be03309e7e3d64de375f3c Mon Sep 17 00:00:00 2001 From: S M Y Date: Tue, 18 Dec 2018 18:07:44 +0530 Subject: [PATCH 0487/1345] Issue #000 es: es and log-es merge --- ansible/roles/stack-logger/templates/kibana.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ansible/roles/stack-logger/templates/kibana.yml b/ansible/roles/stack-logger/templates/kibana.yml index b4e789aa55..8510545b23 100644 --- a/ansible/roles/stack-logger/templates/kibana.yml +++ b/ansible/roles/stack-logger/templates/kibana.yml @@ -1,7 +1,8 @@ # Kibana is served by a back end server. This controls which port to use. port: 5601 -server.basePath: "/dashboard" +#server.basePath: "/dashboard" +server.basePath: "/app/kibana" # The host to bind the server to. host: "0.0.0.0" From 1bdc0d8aedf8d950e03127a83a44d40816554686 Mon Sep 17 00:00:00 2001 From: S M Y Date: Tue, 18 Dec 2018 18:11:12 +0530 Subject: [PATCH 0488/1345] Issue #000 es: es and log-es merge --- ansible/roles/stack-logger/templates/kibana.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/ansible/roles/stack-logger/templates/kibana.yml b/ansible/roles/stack-logger/templates/kibana.yml index 8510545b23..b4e789aa55 100644 --- a/ansible/roles/stack-logger/templates/kibana.yml +++ b/ansible/roles/stack-logger/templates/kibana.yml @@ -1,8 +1,7 @@ # Kibana is served by a back end server. This controls which port to use. port: 5601 -#server.basePath: "/dashboard" -server.basePath: "/app/kibana" +server.basePath: "/dashboard" # The host to bind the server to. host: "0.0.0.0" From 4e7b0aca475a2ec12196ccc68d1c0d2a481d923b Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Wed, 19 Dec 2018 09:50:40 +0530 Subject: [PATCH 0489/1345] Issue # 000: DO-350 Exception handling --- pipelines/deploy/player/Jenkinsfile.push | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pipelines/deploy/player/Jenkinsfile.push b/pipelines/deploy/player/Jenkinsfile.push index 6ff174069c..4d296e68e9 100644 --- a/pipelines/deploy/player/Jenkinsfile.push +++ b/pipelines/deploy/player/Jenkinsfile.push @@ -26,8 +26,8 @@ node(){ } } - catch (Exception e) + catch (err) { - println e.stackTrace() + throw err } } From c9fdfaa957d62bc12f523afa5bfad0f566658eb2 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Wed, 19 Dec 2018 09:50:43 +0530 Subject: [PATCH 0490/1345] Issue # 000: DO-350 Exception handling --- pipelines/deploy/player/Jenkinsfile.deploy | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pipelines/deploy/player/Jenkinsfile.deploy b/pipelines/deploy/player/Jenkinsfile.deploy index f803324acb..7bea73bfd2 100644 --- a/pipelines/deploy/player/Jenkinsfile.deploy +++ b/pipelines/deploy/player/Jenkinsfile.deploy @@ -40,7 +40,7 @@ node() { archiveArtifacts 'metadata.json' } } - catch (Exception e) { - println e.stackTrace() + catch (err) { + throw err } } From 5fcdb72e6c4487f67d41e6314482e4efd1c400d1 Mon Sep 17 00:00:00 2001 From: S M Y Date: Wed, 19 Dec 2018 10:18:23 +0530 Subject: [PATCH 0491/1345] Issue #000 vars: release-1.13 vars --- ansible/inventories/sample/group_vars/sample | 4 ++++ .../roles/stack-sunbird/templates/sunbird_learner-service.env | 2 ++ 2 files changed, 6 insertions(+) diff --git a/ansible/inventories/sample/group_vars/sample b/ansible/inventories/sample/group_vars/sample index 114f1271a7..878b2497a3 100644 --- a/ansible/inventories/sample/group_vars/sample +++ b/ansible/inventories/sample/group_vars/sample @@ -373,3 +373,7 @@ sunbird_lock_expiry_time: 1800 sunbird_content_service_local_base_url: http://content-service:5000 sunbird_kafka_host: sunbird_qrimage_topic: local.qrimage.request + + +sunbird_otp_expiration: 1800 +sunbird_otp_length: 6 diff --git a/ansible/roles/stack-sunbird/templates/sunbird_learner-service.env b/ansible/roles/stack-sunbird/templates/sunbird_learner-service.env index 7db2f6c61f..261a4dc5ab 100644 --- a/ansible/roles/stack-sunbird/templates/sunbird_learner-service.env +++ b/ansible/roles/stack-sunbird/templates/sunbird_learner-service.env @@ -82,3 +82,5 @@ sunbird_user_profile_field_default_visibility={{sunbird_user_profile_field_defau sunbird_keycloak_required_action_link_expiration_seconds={{sunbird_keycloak_required_action_link_expiration_seconds}} sunbird_course_batch_notification_enabled={{sunbird_course_batch_notification_enabled}} sunbird_course_batch_notification_signature={{sunbird_course_batch_notification_signature}} +sunbird_otp_expiration={{sunbird_otp_expiration}} +sunbird_otp_length={{sunbird_otp_length}} From 002dd21d84a169a0d68a410eac8469935ccc3a8c Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Wed, 19 Dec 2018 10:35:23 +0530 Subject: [PATCH 0492/1345] Issue # 000: DO-350 Strip spaces and newlines --- pipelines/deploy/player/Jenkinsfile.deploy | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/pipelines/deploy/player/Jenkinsfile.deploy b/pipelines/deploy/player/Jenkinsfile.deploy index 7bea73bfd2..fec20acc21 100644 --- a/pipelines/deploy/player/Jenkinsfile.deploy +++ b/pipelines/deploy/player/Jenkinsfile.deploy @@ -31,9 +31,11 @@ node() { if (image_tag == "latest") println "Image tag not specified, using the latest image" - ansibleExtraArgs = """--tags "stack-sunbird" --extra-vars "hub_org=$hub_org \ - image_name=$values.imageName image_tag=$image_tag service_name=$values.serviceName \ - $values.deployExtraArgs --vault-password-file $values.vaultFile""".trim() + ansibleExtraArgs = """\ + --tags "stack-sunbird" --extra-vars "hub_org=$hub_org + image_name=$values.imageName image_tag=$image_tag service_name=$values.serviceName + $values.deployExtraArgs --vault-password-file $values.vaultFile + """.stripIndent().replace("\n"," ") values.put('ansibleExtraArgs', ansibleExtraArgs) ansiblePlugin(values) From b9c4b32ce868806e4eebb695a1f22977b75a359b Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Wed, 19 Dec 2018 10:39:24 +0530 Subject: [PATCH 0493/1345] Issue # 000: DO-350 Missing quotes --- pipelines/deploy/player/Jenkinsfile.deploy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pipelines/deploy/player/Jenkinsfile.deploy b/pipelines/deploy/player/Jenkinsfile.deploy index fec20acc21..b831324432 100644 --- a/pipelines/deploy/player/Jenkinsfile.deploy +++ b/pipelines/deploy/player/Jenkinsfile.deploy @@ -34,7 +34,7 @@ node() { ansibleExtraArgs = """\ --tags "stack-sunbird" --extra-vars "hub_org=$hub_org image_name=$values.imageName image_tag=$image_tag service_name=$values.serviceName - $values.deployExtraArgs --vault-password-file $values.vaultFile + $values.deployExtraArgs" --vault-password-file $values.vaultFile """.stripIndent().replace("\n"," ") values.put('ansibleExtraArgs', ansibleExtraArgs) From 3fedf359361334f59ad45b44038cba9fb79abc86 Mon Sep 17 00:00:00 2001 From: S M Y Date: Wed, 19 Dec 2018 11:17:15 +0530 Subject: [PATCH 0494/1345] Issue #000 keycloak: keycloak otp changes --- ansible/roles/keycloak/tasks/provision.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/keycloak/tasks/provision.yml b/ansible/roles/keycloak/tasks/provision.yml index c71d0d3ce6..ae225608eb 100644 --- a/ansible/roles/keycloak/tasks/provision.yml +++ b/ansible/roles/keycloak/tasks/provision.yml @@ -13,7 +13,7 @@ - name: Adding ENV Vars to bashrc lineinfile: path: '/etc/environment' - line: 'export {{item.var}}={{item.value}}' + line: '{{item.var}}={{item.value}}' with_items: - { var: 'sunbird_lms_base_url', value: '{{sunbird_lms_base_url}}' } - { var: 'sunbird_authorization', value: '{{sunbird_authorization}}' } From 8ee389dee8d1bb0cd32f1d0ba0cae192070df4ae Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Wed, 19 Dec 2018 11:18:15 +0530 Subject: [PATCH 0495/1345] feat: DO-350 variable exception handling --- pipelines/deploy/player/Jenkinsfile.push | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/pipelines/deploy/player/Jenkinsfile.push b/pipelines/deploy/player/Jenkinsfile.push index 4d296e68e9..4f5d4ec2cf 100644 --- a/pipelines/deploy/player/Jenkinsfile.push +++ b/pipelines/deploy/player/Jenkinsfile.push @@ -7,13 +7,15 @@ node(){ stage('define variables') { def values = setVariables() - if (values.parentProject == null && params.parentProject == "") - error 'Please specify project name to copy metedata.json file as a parameter to job or set it as a Jenkins environment variable' + if (values.parentProject == null && (params.parentProject == "" || params.parentProject == null)) + error 'Please specify project name to copy metedata.json file as a job parameter' if (values.parentProject != null) copyArtifacts filter: 'metadata.json', projectName: values.parentProject - else + else if (params.parentProject != "" && params.parentProject == null) copyArtifacts filter: 'metadata.json', projectName: params.parentProject + else + error 'Unable to determine project path to copy metadata.json file' imageName = sh(returnStdout: true, script: 'jq -r .imageName metadata.json').trim() agent = sh(returnStdout: true, script: 'jq -r .nodeName metadata.json').trim() From 48419157ba76fdb63f32abf2c8754b437aa71dee Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Wed, 19 Dec 2018 11:18:19 +0530 Subject: [PATCH 0496/1345] feat: DO-350 variable exception handling --- pipelines/deploy/player/Jenkinsfile.deploy | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/pipelines/deploy/player/Jenkinsfile.deploy b/pipelines/deploy/player/Jenkinsfile.deploy index b831324432..89827c69c1 100644 --- a/pipelines/deploy/player/Jenkinsfile.deploy +++ b/pipelines/deploy/player/Jenkinsfile.deploy @@ -9,25 +9,27 @@ node() { stage('define variables') { def values = setVariables() - if (values.parentProject == null && params.parentProject == "") + if (values.parentProject == null && (params.parentProject == "" || params.parentProject == null)) error 'Please specify project name to copy metedata.json file as a parameter to job or set it as a Jenkins environment variable' - if (hub_org == "") + if (!env.hub_org) error 'Please set a Jenkins environment variable named hub_org and value as sunbird' if (values.parentProject != null) copyArtifacts filter: 'metadata.json', projectName: values.parentProject - else { + else if (params.parentProject != "" && params.parentProject == null) { copyArtifacts filter: 'metadata.json', projectName: params.parentProject values.put('parentProject', params.parentProject) } + else + error 'Unable to determine project path to copy metadata.json file' agent = sh(returnStdout: true, script: 'jq -r .nodeName metadata.json').trim() imageName = sh(returnStdout: true, script: 'jq -r .imageName metadata.json').trim() values.put('agent', agent) values.put('imageName', imageName) - image_tag = (params.image_tag != "") ? params.image_tag : 'latest' + image_tag = (params.image_tag != "" && params.image_tag != null) ? params.image_tag : 'latest' if (image_tag == "latest") println "Image tag not specified, using the latest image" From 459d398bf06f2a02fe68801cce6f30824a7af01e Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Wed, 19 Dec 2018 11:27:33 +0530 Subject: [PATCH 0497/1345] Issue # 000: DO-350 Typo in condition check --- pipelines/deploy/player/Jenkinsfile.push | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pipelines/deploy/player/Jenkinsfile.push b/pipelines/deploy/player/Jenkinsfile.push index 4f5d4ec2cf..25bdd913aa 100644 --- a/pipelines/deploy/player/Jenkinsfile.push +++ b/pipelines/deploy/player/Jenkinsfile.push @@ -12,7 +12,7 @@ node(){ if (values.parentProject != null) copyArtifacts filter: 'metadata.json', projectName: values.parentProject - else if (params.parentProject != "" && params.parentProject == null) + else if (params.parentProject != "" && params.parentProject != null) copyArtifacts filter: 'metadata.json', projectName: params.parentProject else error 'Unable to determine project path to copy metadata.json file' From 1c77d6ba303c5b74e7c219d7d812f4f577bb1181 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Wed, 19 Dec 2018 11:27:36 +0530 Subject: [PATCH 0498/1345] Issue # 000: DO-350 Typo in condition check --- pipelines/deploy/player/Jenkinsfile.deploy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pipelines/deploy/player/Jenkinsfile.deploy b/pipelines/deploy/player/Jenkinsfile.deploy index 89827c69c1..3faf762b70 100644 --- a/pipelines/deploy/player/Jenkinsfile.deploy +++ b/pipelines/deploy/player/Jenkinsfile.deploy @@ -17,7 +17,7 @@ node() { if (values.parentProject != null) copyArtifacts filter: 'metadata.json', projectName: values.parentProject - else if (params.parentProject != "" && params.parentProject == null) { + else if (params.parentProject != "" && params.parentProject != null) { copyArtifacts filter: 'metadata.json', projectName: params.parentProject values.put('parentProject', params.parentProject) } From 27ac29a839adf7ab1e9704bf6af2615311775d02 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Wed, 19 Dec 2018 12:32:10 +0530 Subject: [PATCH 0499/1345] Issue #000 chore: Updated google-oauth variable --- ansible/roles/stack-sunbird/templates/sunbird_player.env | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ansible/roles/stack-sunbird/templates/sunbird_player.env b/ansible/roles/stack-sunbird/templates/sunbird_player.env index 0ffa0e2962..a880f5846d 100644 --- a/ansible/roles/stack-sunbird/templates/sunbird_player.env +++ b/ansible/roles/stack-sunbird/templates/sunbird_player.env @@ -38,3 +38,6 @@ config_refresh_interval={{config_refresh_interval}} sunbird_cassandra_consistency_level={{sunbird_cassandra_consistency_level}} sunbird_cassandra_replication_strategy={{sunbird_cassandra_replication_strategy}} sunbird_device_register_api={{sunbird_device_register_api}} +# Release-1.13 +sunbird_google_oauth_clientId={{sunbird_google_oauth_clientId}} +sunbird_google_oauth_clientSecret={{sunbird_google_oauth_clientSecret}} From af15f12f6a840beed999f5e012736ce440f27302 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Wed, 19 Dec 2018 12:43:14 +0530 Subject: [PATCH 0500/1345] Issue #000 chore: Updated env variable --- .../roles/stack-sunbird/templates/sunbird_content-service.env | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ansible/roles/stack-sunbird/templates/sunbird_content-service.env b/ansible/roles/stack-sunbird/templates/sunbird_content-service.env index a14e24a8e9..323777b2d1 100644 --- a/ansible/roles/stack-sunbird/templates/sunbird_content-service.env +++ b/ansible/roles/stack-sunbird/templates/sunbird_content-service.env @@ -42,3 +42,6 @@ sunbird_portal_base_url={{sunbird_portal_base_url}} sunbird_cassandra_urls={{sunbird_cassandra_urls}} sunbird_kafka_host={{sunbird_kafka_host}} sunbird_qrimage_topic={{sunbird_qrimage_topic}} + +#Release-1.13 +sunbird_lock_expiry_time={{sunbird_lock_expiry_time}} From 9c56412025748e1549794447fddb4222ddc9836c Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Wed, 19 Dec 2018 12:48:08 +0530 Subject: [PATCH 0501/1345] Issue #000 chore: Added env variables --- .../roles/stack-sunbird/templates/sunbird_content-service.env | 2 +- .../roles/stack-sunbird/templates/sunbird_learner-service.env | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/ansible/roles/stack-sunbird/templates/sunbird_content-service.env b/ansible/roles/stack-sunbird/templates/sunbird_content-service.env index 323777b2d1..b086a0c468 100644 --- a/ansible/roles/stack-sunbird/templates/sunbird_content-service.env +++ b/ansible/roles/stack-sunbird/templates/sunbird_content-service.env @@ -44,4 +44,4 @@ sunbird_kafka_host={{sunbird_kafka_host}} sunbird_qrimage_topic={{sunbird_qrimage_topic}} #Release-1.13 -sunbird_lock_expiry_time={{sunbird_lock_expiry_time}} +sunbird_lock_expiry_time=1800 diff --git a/ansible/roles/stack-sunbird/templates/sunbird_learner-service.env b/ansible/roles/stack-sunbird/templates/sunbird_learner-service.env index 261a4dc5ab..d5296abdf1 100644 --- a/ansible/roles/stack-sunbird/templates/sunbird_learner-service.env +++ b/ansible/roles/stack-sunbird/templates/sunbird_learner-service.env @@ -84,3 +84,7 @@ sunbird_course_batch_notification_enabled={{sunbird_course_batch_notification_en sunbird_course_batch_notification_signature={{sunbird_course_batch_notification_signature}} sunbird_otp_expiration={{sunbird_otp_expiration}} sunbird_otp_length={{sunbird_otp_length}} + +# Release-1.13 +sunbird_otp_length: 6 +sunbird_otp_expiration: 1800 From 891a38f8f758833b66813aa09b56e17091f54bd9 Mon Sep 17 00:00:00 2001 From: harshavardhnc Date: Wed, 19 Dec 2018 12:57:52 +0530 Subject: [PATCH 0502/1345] Issue #00 feat: script to create azure vm --- deploy/azure_vm/azure_create_vm.sh | 102 +++++++++++++++++++++++++++++ deploy/azure_vm/create_vm | 11 ++++ 2 files changed, 113 insertions(+) create mode 100755 deploy/azure_vm/azure_create_vm.sh create mode 100644 deploy/azure_vm/create_vm diff --git a/deploy/azure_vm/azure_create_vm.sh b/deploy/azure_vm/azure_create_vm.sh new file mode 100755 index 0000000000..af73589a9a --- /dev/null +++ b/deploy/azure_vm/azure_create_vm.sh @@ -0,0 +1,102 @@ +#!/bin/bash + +# Author: Harsha + +# update the VM details in create_vm file + +# checking for argumnent +if [[ $# == '0' ]]; then + echo "Please provide the Input file path" + echo "Usage: $0 " + exit 1 +fi + +# reading input file values +IFS="," +grep -v -e "^#" -e "^$" $1 | while read -ra LINE +do + rg="${LINE[0]}" + location="${LINE[1]}" + vnet="${LINE[2]}" + sn="${LINE[3]}" + ap="${LINE[4]}" + sp="${LINE[5]}" + nsg="${LINE[6]}" + aset="${LINE[7]}" + vname="${LINE[8]}" + size="${LINE[9]}" + baseos="${LINE[10]}" + uname="${LINE[11]}" + pubip="${LINE[12]}" + pubkey="${LINE[13]}" + +echo -e "\e[1;32mVM DETAILS\e[0m" +echo -e "RESOURCE_GROUP=$rg\nLOCATION=$location\nVNET_NAME=$vnet\nSUBNET_NAME=$sn\nADDRESS_PREFIX=$ap\nSUBNET_PREFIX=$sp\nNSG=$nsg\nAVAIL_SET=$aset\nVM_NAME=$vname\nSIZE=$size\nOS=$baseos\nUSER=$uname\nPUBLIC_IP=$pubip\nPATH_TO_PUB_KEY=$pubkey" + + +# valdating resource group and create if not exists +erg=$(az group list -o table | awk -F " " '{print $1}' | awk 'NR>2' | grep -E "^$rg$") + +if [[ $? == "0" ]]; then + echo -e "Resource group with this name \e[1;31m$rg\e[0m already exists" +else + echo -e "Creating the Resource group \e[1;32m$rg..\e[0m" + az group create --name $rg --location $location +fi + +# valdating virtual network and create if not exists +evnet=$(az network vnet list -o table | awk -F " " '{print $4}' | awk 'NR>2' | grep -E "^$vnet$") + +if [[ $? == "0" ]]; then + echo -e "Vnet with this name \e[1;31m$vnet\e[0m already exists" +else + echo -e "Creating the Vnet \e[1;32m$vnet..\e[0m" + az network vnet create --resource-group $rg --name $vnet --address-prefix $ap --subnet-name $sn --subnet-prefix $sp +fi + + +# valdating network security group and create if not exists +ensg=$(az network nsg list -g $rg -o table | awk -F " " '{print $2}' | awk 'NR>2' | grep -E "^$nsg$") + +if [[ $? == "0" ]]; then + echo -e "Security group with this name \e[1;31m$nsg\e[0m already exists" +else + echo -e "Creating the Security group \e[1;32m$nsg..\e[0m" + az network nsg create --name $nsg --resource-group $rg + az network nsg rule create --resource-group $rg --nsg-name $nsg --name ssh --protocol tcp --priority 1000 --destination-port-range 22 --access allow +fi + +# valdating availability set and create if not exists +easet=$(az vm availability-set list -g $aset -o table | awk -F " " '{print $2}' | awk 'NR>2' | grep -E "^$aset$") + +if [[ $? == "0" ]]; then + echo -e "Availability set with this name \e[1;31m$aset\e[0m already exists" +else + echo -e "Creating the Avaiablity set \e[1;32m$aset..\e[0m" + az vm availability-set create --resource-group $rg --name $aset +fi + +# attaching public ip +if [[ "$pubip" = "Yes" || "$pubip" = "yes" ]]; then + echo "Public IP will be assigned to the instance" +elif [[ "$pubip" = "No" || "$pubip" = "no" ]]; then + echo "Public IP will not be assigned" +else + echo "Wrong input! please enter 'Yes' for Yes or 'No' for No" +fi + + +# valdating vm and create if not exists +evname=$(az vm list -g $rg -o table | awk -F " " '{print $2}' | awk 'NR>2' | grep -E "^$vname$") + +if [[ $? == "0" ]]; then + echo -e "Virtual Machine with this name \e[1;31m$vname\e[0m already exists" +elif [[ "$pubip" == "Yes" || "$pubip" == "yes" ]]; then + echo -e "Creating Your Virtual Machine \e[1;32m$vname\e[0m hold on.." + az vm create --resource-group $rg --name $vname --location $location --availability-set $aset --image $baseos --admin-username $uname --vnet-name $vnet --subnet $sn --nsg $nsg --size $size --ssh-key-value $pubkey +else + echo -e "Creating Your Virtual Machine \e[1;32m$vname\e[0m hold on.." + az vm create --resource-group $rg --name $vname --location $location --availability-set $aset --image $baseos --admin-username $uname --vnet-name $vnet --subnet $sn --nsg $nsg --size $size --public-ip-address "" --ssh-key-value $pubkey +fi + +done diff --git a/deploy/azure_vm/create_vm b/deploy/azure_vm/create_vm new file mode 100644 index 0000000000..3b270ff21d --- /dev/null +++ b/deploy/azure_vm/create_vm @@ -0,0 +1,11 @@ +############################################################################################################################### +# # +# # +########################### ENTER VALUES WITH COMMA SEPERATED WITH EACH VM DETAILS IN EACH LINE ############################### +# # +# # +########################### LEAVE ADDRESS_PREFIX and SUBNET_PREFIX EMPTY if SUBNET ALREADY CREATED ############################ +# # +# # +#RESOURCE_GROUP,LOCATION,VNET_NAME,SUBNET_NAME,ADDRESS_PREFIX,SUBNET_PREFIX,NSG,AVAIL_SET,VM_NAME,SIZE,OS,USER,PATH_TO_PUB_KEY +test-rg,centralindia,test-vnet,test-subnet,22.0.0.0/16,22.0.0.0/24,test-nsg,test-aset,test-vm,Standard_A2_v2,UbuntuLTS,test-user,yes,path_to_pub_key From db2e5142520ecbb43ae24b5a499998d39af1063b Mon Sep 17 00:00:00 2001 From: S M Y Date: Wed, 19 Dec 2018 14:32:25 +0530 Subject: [PATCH 0503/1345] Issue #000 vars: release-1.13 vars --- .../roles/stack-sunbird/templates/sunbird_learner-service.env | 3 --- 1 file changed, 3 deletions(-) diff --git a/ansible/roles/stack-sunbird/templates/sunbird_learner-service.env b/ansible/roles/stack-sunbird/templates/sunbird_learner-service.env index d5296abdf1..406eb5ae75 100644 --- a/ansible/roles/stack-sunbird/templates/sunbird_learner-service.env +++ b/ansible/roles/stack-sunbird/templates/sunbird_learner-service.env @@ -85,6 +85,3 @@ sunbird_course_batch_notification_signature={{sunbird_course_batch_notification_ sunbird_otp_expiration={{sunbird_otp_expiration}} sunbird_otp_length={{sunbird_otp_length}} -# Release-1.13 -sunbird_otp_length: 6 -sunbird_otp_expiration: 1800 From 825b87c5e871b560aa3e9da4e465aa9cad05880a Mon Sep 17 00:00:00 2001 From: Manzarul Date: Wed, 19 Dec 2018 18:09:50 +0530 Subject: [PATCH 0504/1345] Issues #SB-00 fix: removing user create v3 api and making system setting get and list api as publicUser --- ansible/roles/kong-api/defaults/main.yml | 20 ++------------------ 1 file changed, 2 insertions(+), 18 deletions(-) diff --git a/ansible/roles/kong-api/defaults/main.yml b/ansible/roles/kong-api/defaults/main.yml index 59e53138ac..835dd3659a 100644 --- a/ansible/roles/kong-api/defaults/main.yml +++ b/ansible/roles/kong-api/defaults/main.yml @@ -440,22 +440,6 @@ kong_apis: - name: jwt - name: cors - "{{ statsd_pulgin }}" - - name: acl - config.whitelist: userUpdate - - name: rate-limiting - config.policy: local - config.hour: "{{ medium_rate_limit_per_hour }}" - config.limit_by: credential - - name: request-size-limiting - config.allowed_payload_size: "{{ small_request_size_limit }}" - - name: createUserVersion3 - request_path: "{{ user_service_prefix }}/v3/create" - upstream_url: "{{ learning_service_url }}/v3/user/create" - strip_request_path: true - plugins: - - name: jwt - - name: cors - - "{{ statsd_pulgin }}" - name: acl config.whitelist: userUpdate - name: rate-limiting @@ -2279,7 +2263,7 @@ kong_apis: - name: cors - "{{ statsd_pulgin }}" - name: acl - config.whitelist: dataUpdate + config.whitelist: publicUser - name: rate-limiting config.policy: local config.hour: "{{ medium_rate_limit_per_hour }}" @@ -3477,7 +3461,7 @@ kong_apis: - {name: 'jwt'} - {name: 'cors'} - {name: 'statsd', config.metrics: "{{ statsd_metrics }}" } - - {name: 'acl', config.whitelist: 'dataAdmin'} + - {name: 'acl', config.whitelist: 'publicUser'} - {name: 'rate-limiting', config.policy: "local", config.hour: "{{ medium_rate_limit_per_hour }}"} - {name: 'request-size-limiting', config.allowed_payload_size: "{{ small_request_size_limit }}" } - name: "getConfigStatus" From 03e47f76e835218841d18f9f8a1ab99be881cd85 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Thu, 20 Dec 2018 11:12:05 +0530 Subject: [PATCH 0505/1345] Issue #000 chore: updated player variables --- ansible/roles/stack-sunbird/templates/sunbird_player.env | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ansible/roles/stack-sunbird/templates/sunbird_player.env b/ansible/roles/stack-sunbird/templates/sunbird_player.env index a880f5846d..e28bf1dc56 100644 --- a/ansible/roles/stack-sunbird/templates/sunbird_player.env +++ b/ansible/roles/stack-sunbird/templates/sunbird_player.env @@ -41,3 +41,5 @@ sunbird_device_register_api={{sunbird_device_register_api}} # Release-1.13 sunbird_google_oauth_clientId={{sunbird_google_oauth_clientId}} sunbird_google_oauth_clientSecret={{sunbird_google_oauth_clientSecret}} +sunbird_google_keycloak_client_id={{sunbird_google_keycloak_client_id}} +sunbird_google_keycloak_secret={{sunbird_google_keycloak_secret}} From bc22eb65d80ef81cb403414b19e58b8aaaeca3d4 Mon Sep 17 00:00:00 2001 From: S M Y Date: Thu, 20 Dec 2018 11:21:41 +0530 Subject: [PATCH 0506/1345] Issue #000 vars: vars for portal --- ansible/inventories/sample/group_vars/sample | 5 +++++ ansible/roles/stack-sunbird/templates/sunbird_player.env | 1 + 2 files changed, 6 insertions(+) diff --git a/ansible/inventories/sample/group_vars/sample b/ansible/inventories/sample/group_vars/sample index 878b2497a3..0171a9c45f 100644 --- a/ansible/inventories/sample/group_vars/sample +++ b/ansible/inventories/sample/group_vars/sample @@ -377,3 +377,8 @@ sunbird_qrimage_topic: local.qrimage.request sunbird_otp_expiration: 1800 sunbird_otp_length: 6 +sunbird_google_oauth_clientId: +sunbird_google_oauth_clientSecret: +sunbird_google_captcha_site_key: +sunbird_google_keycloak_client_id: +sunbird_google_keycloak_secret: diff --git a/ansible/roles/stack-sunbird/templates/sunbird_player.env b/ansible/roles/stack-sunbird/templates/sunbird_player.env index e28bf1dc56..cbd7202ba2 100644 --- a/ansible/roles/stack-sunbird/templates/sunbird_player.env +++ b/ansible/roles/stack-sunbird/templates/sunbird_player.env @@ -41,5 +41,6 @@ sunbird_device_register_api={{sunbird_device_register_api}} # Release-1.13 sunbird_google_oauth_clientId={{sunbird_google_oauth_clientId}} sunbird_google_oauth_clientSecret={{sunbird_google_oauth_clientSecret}} +sunbird_google_captcha_site_key={{sunbird_google_captcha_site_key}} sunbird_google_keycloak_client_id={{sunbird_google_keycloak_client_id}} sunbird_google_keycloak_secret={{sunbird_google_keycloak_secret}} From 771067ef188f2456117143b278ada75f75651ee1 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Tue, 18 Dec 2018 21:19:55 +0530 Subject: [PATCH 0507/1345] Issue #000 feat: Added oauth2callback for mobileteam --- ansible/roles/stack-proxy/templates/proxy-default.conf | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/ansible/roles/stack-proxy/templates/proxy-default.conf b/ansible/roles/stack-proxy/templates/proxy-default.conf index 7c2454edef..312b88fedf 100644 --- a/ansible/roles/stack-proxy/templates/proxy-default.conf +++ b/ansible/roles/stack-proxy/templates/proxy-default.conf @@ -391,7 +391,13 @@ location ~* ^/content-plugins/(.*) { proxy_connect_timeout 5; proxy_send_timeout 60; proxy_read_timeout 70; - } + } + + location /oauth2callback { + return 200 'OK'; + add_header Content-Type text/plain; + } + {# Including custom configuration #} {{ proxy_custom_config }} From 4c1071a3d2d447856da9ff30084af3b8397d5ea2 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Fri, 21 Dec 2018 13:39:42 +0530 Subject: [PATCH 0508/1345] feat: DO-350 Adding properties for other services --- properties.json | 44 ++++++++++++++++++++++++++++++++------------ 1 file changed, 32 insertions(+), 12 deletions(-) diff --git a/properties.json b/properties.json index 21d3f04048..c7d3178792 100644 --- a/properties.json +++ b/properties.json @@ -1,14 +1,34 @@ { - "common": { - "scmUrl": "https://github.com/ekstep/sunbird-devops.git", - "vaultFile": "/home/ops/vault" - }, - "push": { - "playbook": "docker_image_push.yml" - }, - "player": { - "playbook": "deploy.yml", - "serviceName": "player", - "deployExtraArgs": "deploy_player=True" - } + "common": { + "scmUrl": "https://github.com/ekstep/sunbird-devops.git", + "vaultFile": "/home/ops/vault" + }, + "push": { + "playbook": "docker_image_push.yml" + }, + "player": { + "playbook": "deploy.yml", + "serviceName": "player", + "deployExtraArgs": "deploy_stack=True" + }, + "learner": { + "playbook": "deploy.yml", + "serviceName": "learner-service", + "deployExtraArgs": "deploy_learner=True" + }, + "telemetry": { + "playbook": "deploy.yml", + "serviceName": "telemetry-service", + "deployExtraArgs": "deploy_telemetry=True" + }, + "actor": { + "playbook": "deploy.yml", + "serviceName": "actor-service", + "deployExtraArgs": "deploy_actor=True" + }, + "content": { + "playbook": "deploy.yml", + "serviceName": "content-service", + "deployExtraArgs": "deploy_content=True" + } } From fa350473cda318742447d83cdc14d43392cf2050 Mon Sep 17 00:00:00 2001 From: Manzarul Date: Fri, 21 Dec 2018 18:55:42 +0530 Subject: [PATCH 0509/1345] Issues #SB-00 fix:changes for get user by key api --- ansible/roles/kong-api/defaults/main.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ansible/roles/kong-api/defaults/main.yml b/ansible/roles/kong-api/defaults/main.yml index 835dd3659a..56847f5dab 100644 --- a/ansible/roles/kong-api/defaults/main.yml +++ b/ansible/roles/kong-api/defaults/main.yml @@ -3599,15 +3599,15 @@ kong_apis: - name: request-size-limiting config.allowed_payload_size: "{{ small_request_size_limit }}" - name: getUserByKey - request_path: "{{ user_service_prefix }}/v1/getByKey" - upstream_url: "{{ learning_service_url }}/v1/user/getByKey" + request_path: "{{ user_service_prefix }}/v1/get" + upstream_url: "{{ learning_service_url }}/v1/user/get" strip_request_path: true plugins: - name: jwt - name: cors - "{{ statsd_pulgin }}" - name: acl - config.whitelist: publicUser + config.whitelist: appAdmin - name: rate-limiting config.policy: local config.hour: "{{ medium_rate_limit_per_hour }}" From df54b75d635c15b474ebd4fb2425594adf2e79cf Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Fri, 21 Dec 2018 22:39:58 +0530 Subject: [PATCH 0510/1345] feat: DO-350 adding image tag --- pipelines/deploy/player/Jenkinsfile.deploy | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/pipelines/deploy/player/Jenkinsfile.deploy b/pipelines/deploy/player/Jenkinsfile.deploy index 3faf762b70..eb759f8634 100644 --- a/pipelines/deploy/player/Jenkinsfile.deploy +++ b/pipelines/deploy/player/Jenkinsfile.deploy @@ -25,11 +25,12 @@ node() { error 'Unable to determine project path to copy metadata.json file' agent = sh(returnStdout: true, script: 'jq -r .nodeName metadata.json').trim() - imageName = sh(returnStdout: true, script: 'jq -r .imageName metadata.json').trim() + image_name = sh(returnStdout: true, script: 'jq -r .image_name metadata.json').trim() + image_tag = sh(returnStdout: true, script: 'jq -r .image_tag metadata.json').trim() values.put('agent', agent) values.put('imageName', imageName) - image_tag = (params.image_tag != "" && params.image_tag != null) ? params.image_tag : 'latest' +// image_tag = (params.image_tag != "" && params.image_tag != null) ? params.image_tag : 'latest' if (image_tag == "latest") println "Image tag not specified, using the latest image" From 1973c7b5ce538777d16454996d935b0a5a6dbcfc Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Fri, 21 Dec 2018 22:58:46 +0530 Subject: [PATCH 0511/1345] feat: DO-350 Adding image tag --- pipelines/deploy/player/Jenkinsfile.push | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/pipelines/deploy/player/Jenkinsfile.push b/pipelines/deploy/player/Jenkinsfile.push index 25bdd913aa..e43a614e79 100644 --- a/pipelines/deploy/player/Jenkinsfile.push +++ b/pipelines/deploy/player/Jenkinsfile.push @@ -17,11 +17,13 @@ node(){ else error 'Unable to determine project path to copy metadata.json file' - imageName = sh(returnStdout: true, script: 'jq -r .imageName metadata.json').trim() + image_name = sh(returnStdout: true, script: 'jq -r .image_name metadata.json').trim() + image_tag = sh(returnStdout: true, script: 'jq -r .image_tag metadata.json').trim() agent = sh(returnStdout: true, script: 'jq -r .nodeName metadata.json').trim() - values.put('imageName', imageName) + values.put('image_name', image_name) + values.put('image_tag', image_tag) values.put('agent', agent) - ansibleExtraArgs = """--extra-vars "image_name=$values.imageName" --vault-password-file $values.vaultFile""".trim() + ansibleExtraArgs = """--extra-vars "image_name=$values.image_name image_tag=$values.image_tag" --vault-password-file $values.vaultFile""".trim() values.put('ansibleExtraArgs', ansibleExtraArgs) ansiblePlugin(values) archiveArtifacts 'metadata.json' From a314b2d9b2e90b475e3751d955daa330d54e09cd Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Fri, 21 Dec 2018 22:58:52 +0530 Subject: [PATCH 0512/1345] feat: DO-350 Adding image tag --- pipelines/deploy/player/Jenkinsfile.deploy | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/pipelines/deploy/player/Jenkinsfile.deploy b/pipelines/deploy/player/Jenkinsfile.deploy index eb759f8634..76c774c7cd 100644 --- a/pipelines/deploy/player/Jenkinsfile.deploy +++ b/pipelines/deploy/player/Jenkinsfile.deploy @@ -28,7 +28,8 @@ node() { image_name = sh(returnStdout: true, script: 'jq -r .image_name metadata.json').trim() image_tag = sh(returnStdout: true, script: 'jq -r .image_tag metadata.json').trim() values.put('agent', agent) - values.put('imageName', imageName) + values.put('image_name', image_name) + values.put('image_tag', image_tag) // image_tag = (params.image_tag != "" && params.image_tag != null) ? params.image_tag : 'latest' if (image_tag == "latest") @@ -36,7 +37,7 @@ node() { ansibleExtraArgs = """\ --tags "stack-sunbird" --extra-vars "hub_org=$hub_org - image_name=$values.imageName image_tag=$image_tag service_name=$values.serviceName + image_name=$values.image_name image_tag=$values.image_tag service_name=$values.serviceName $values.deployExtraArgs" --vault-password-file $values.vaultFile """.stripIndent().replace("\n"," ") From c69d1497904f40bffff63ad7a756654699ff02d5 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Fri, 21 Dec 2018 23:00:39 +0530 Subject: [PATCH 0513/1345] feat: DO-350 Adding image tag --- ansible/docker_image_push.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ansible/docker_image_push.yml b/ansible/docker_image_push.yml index 73ee302ca6..13cf24df7f 100644 --- a/ansible/docker_image_push.yml +++ b/ansible/docker_image_push.yml @@ -17,5 +17,6 @@ - name: Push image to registry docker_image: name: "{{ image_name }}" - repository: "{{ vault_docker_registery_url }}/{{ image_name}}" + tag: "{{ image_tag }}" + repository: "{{ vault_docker_registery_url }}/{{ image_name }}:{{ image_tag }}" push: yes From e0acbe0709d91be504a6e276ee76630258bef88b Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Fri, 21 Dec 2018 23:12:54 +0530 Subject: [PATCH 0514/1345] feat: DO-350 Adding ACR pull role --- ansible/deploy.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/ansible/deploy.yml b/ansible/deploy.yml index 1cc400f74f..eeb7f849b3 100644 --- a/ansible/deploy.yml +++ b/ansible/deploy.yml @@ -23,6 +23,7 @@ vars_files: - ['{{inventory_dir}}/secrets.yml', 'secrets/{{env}}.yml'] roles: + - acr-docker - stack-sunbird tags: - stack-sunbird From be09ce525ed5dd69dbe36b3a9cd2e3c78172122a Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Fri, 21 Dec 2018 23:14:38 +0530 Subject: [PATCH 0515/1345] feat: DO-350 Adding ACR pull role --- ansible/roles/acr-docker/tasks/main.yml | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 ansible/roles/acr-docker/tasks/main.yml diff --git a/ansible/roles/acr-docker/tasks/main.yml b/ansible/roles/acr-docker/tasks/main.yml new file mode 100644 index 0000000000..69a6fe9261 --- /dev/null +++ b/ansible/roles/acr-docker/tasks/main.yml @@ -0,0 +1,11 @@ +--- +- name: login to ACR + docker_login: + registry: "{{ vault_docker_registery_url }}" + username: "{{ vault_docker_registery_user }}" + password: "{{ vault_docker_registory }}" + reauth: yes +- name: Pull image from registry + docker_image: + name: "{{ image_name }}:{{ image_tag }}" + repository: "{{ vault_docker_registery_url }}/{{ image_name }}:{{ image_tag }}" From d3e161e2cf03b6a4ea68571986d1945775edecd8 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Fri, 21 Dec 2018 23:20:00 +0530 Subject: [PATCH 0516/1345] Issue # 000: DO-350 Yaml syntax fix --- ansible/roles/acr-docker/tasks/main.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ansible/roles/acr-docker/tasks/main.yml b/ansible/roles/acr-docker/tasks/main.yml index 69a6fe9261..35ef9cee5c 100644 --- a/ansible/roles/acr-docker/tasks/main.yml +++ b/ansible/roles/acr-docker/tasks/main.yml @@ -1,11 +1,11 @@ --- - name: login to ACR - docker_login: + docker_login: registry: "{{ vault_docker_registery_url }}" username: "{{ vault_docker_registery_user }}" password: "{{ vault_docker_registory }}" reauth: yes - name: Pull image from registry - docker_image: + docker_image: name: "{{ image_name }}:{{ image_tag }}" repository: "{{ vault_docker_registery_url }}/{{ image_name }}:{{ image_tag }}" From d4267fcb4e6af4c442fdaeeded7d2299478d3d08 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Fri, 21 Dec 2018 23:58:20 +0530 Subject: [PATCH 0517/1345] feat: DO-350 Install docker first before using docker module --- ansible/roles/acr-docker/tasks/main.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ansible/roles/acr-docker/tasks/main.yml b/ansible/roles/acr-docker/tasks/main.yml index 35ef9cee5c..a3bf1791f1 100644 --- a/ansible/roles/acr-docker/tasks/main.yml +++ b/ansible/roles/acr-docker/tasks/main.yml @@ -1,4 +1,6 @@ --- +- name: install pip docker + command: pip install docker - name: login to ACR docker_login: registry: "{{ vault_docker_registery_url }}" From ae3d224ec3cf19402dc47650c2c0cf1efc821887 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Sat, 22 Dec 2018 00:05:52 +0530 Subject: [PATCH 0518/1345] Issue # 000: DO-350 Debug --- ansible/roles/acr-docker/tasks/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/acr-docker/tasks/main.yml b/ansible/roles/acr-docker/tasks/main.yml index a3bf1791f1..de9d09d44f 100644 --- a/ansible/roles/acr-docker/tasks/main.yml +++ b/ansible/roles/acr-docker/tasks/main.yml @@ -10,4 +10,4 @@ - name: Pull image from registry docker_image: name: "{{ image_name }}:{{ image_tag }}" - repository: "{{ vault_docker_registery_url }}/{{ image_name }}:{{ image_tag }}" + repository: "{{ vault_docker_registery_url }}" From aba8a16c006fe601d76a20b6a3d0beb89f0adf30 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Sat, 22 Dec 2018 01:08:50 +0530 Subject: [PATCH 0519/1345] Issue # 000: DO-350 Updating ansible image pull format --- ansible/roles/acr-docker/tasks/main.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ansible/roles/acr-docker/tasks/main.yml b/ansible/roles/acr-docker/tasks/main.yml index de9d09d44f..bc268bc5ad 100644 --- a/ansible/roles/acr-docker/tasks/main.yml +++ b/ansible/roles/acr-docker/tasks/main.yml @@ -9,5 +9,6 @@ reauth: yes - name: Pull image from registry docker_image: - name: "{{ image_name }}:{{ image_tag }}" + name: "{{ vault_docker_registery_url }}/{{ image_name }}" + tag: "{{ image_tag }}" repository: "{{ vault_docker_registery_url }}" From 82cc08a82bd35d85401b960191fa62226338d139 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Sat, 22 Dec 2018 01:09:37 +0530 Subject: [PATCH 0520/1345] Issue # 000: DO-350 Updating ansible image pull --- pipelines/deploy/player/Jenkinsfile.deploy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pipelines/deploy/player/Jenkinsfile.deploy b/pipelines/deploy/player/Jenkinsfile.deploy index 76c774c7cd..47b01cbb1d 100644 --- a/pipelines/deploy/player/Jenkinsfile.deploy +++ b/pipelines/deploy/player/Jenkinsfile.deploy @@ -37,7 +37,7 @@ node() { ansibleExtraArgs = """\ --tags "stack-sunbird" --extra-vars "hub_org=$hub_org - image_name=$values.image_name image_tag=$values.image_tag service_name=$values.serviceName + image_name=$values.image_name tag=$values.image_tag service_name=$values.serviceName $values.deployExtraArgs" --vault-password-file $values.vaultFile """.stripIndent().replace("\n"," ") From b664476fc22c4a69075845f706fcda49f0cc310f Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Sat, 22 Dec 2018 01:11:43 +0530 Subject: [PATCH 0521/1345] Issue # 000: DO-350 Typo in variable name --- pipelines/deploy/player/Jenkinsfile.deploy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pipelines/deploy/player/Jenkinsfile.deploy b/pipelines/deploy/player/Jenkinsfile.deploy index 47b01cbb1d..76c774c7cd 100644 --- a/pipelines/deploy/player/Jenkinsfile.deploy +++ b/pipelines/deploy/player/Jenkinsfile.deploy @@ -37,7 +37,7 @@ node() { ansibleExtraArgs = """\ --tags "stack-sunbird" --extra-vars "hub_org=$hub_org - image_name=$values.image_name tag=$values.image_tag service_name=$values.serviceName + image_name=$values.image_name image_tag=$values.image_tag service_name=$values.serviceName $values.deployExtraArgs" --vault-password-file $values.vaultFile """.stripIndent().replace("\n"," ") From 1a4f99cc9f1fd452e2932f857ff1634c1e516139 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Sat, 22 Dec 2018 02:07:27 +0530 Subject: [PATCH 0522/1345] Issue # 000: Updating push syntax --- ansible/docker_image_push.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ansible/docker_image_push.yml b/ansible/docker_image_push.yml index 13cf24df7f..8b09b2bcff 100644 --- a/ansible/docker_image_push.yml +++ b/ansible/docker_image_push.yml @@ -14,9 +14,9 @@ password: "{{ vault_docker_registory }}" reauth: yes - - name: Push image to registry + - name: Push image from registry docker_image: - name: "{{ image_name }}" + name: "{{ vault_docker_registery_url }}/{{ image_name }}" tag: "{{ image_tag }}" - repository: "{{ vault_docker_registery_url }}/{{ image_name }}:{{ image_tag }}" + repository: "{{ vault_docker_registery_url }}" push: yes From 3901ca117cdfcb39634e752fc6da312ee27b02ac Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Sat, 22 Dec 2018 02:07:43 +0530 Subject: [PATCH 0523/1345] Update docker_image_push.yml --- ansible/docker_image_push.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/docker_image_push.yml b/ansible/docker_image_push.yml index 8b09b2bcff..a42c688f61 100644 --- a/ansible/docker_image_push.yml +++ b/ansible/docker_image_push.yml @@ -14,7 +14,7 @@ password: "{{ vault_docker_registory }}" reauth: yes - - name: Push image from registry + - name: Push image to registry docker_image: name: "{{ vault_docker_registery_url }}/{{ image_name }}" tag: "{{ image_tag }}" From 3091b5c09ef743b1c054ff9fc26e6964b97a73dd Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Sat, 22 Dec 2018 02:13:08 +0530 Subject: [PATCH 0524/1345] Update docker_image_push.yml --- ansible/docker_image_push.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/ansible/docker_image_push.yml b/ansible/docker_image_push.yml index a42c688f61..fac1176961 100644 --- a/ansible/docker_image_push.yml +++ b/ansible/docker_image_push.yml @@ -16,7 +16,6 @@ - name: Push image to registry docker_image: - name: "{{ vault_docker_registery_url }}/{{ image_name }}" - tag: "{{ image_tag }}" + name: "{{ vault_docker_registery_url }}/{{ image_name }}:{{ image_tag }}" repository: "{{ vault_docker_registery_url }}" push: yes From adc3ddec529bd4359527f118ea5c43f97f594594 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Sat, 22 Dec 2018 02:15:06 +0530 Subject: [PATCH 0525/1345] Update docker_image_push.yml --- ansible/docker_image_push.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/ansible/docker_image_push.yml b/ansible/docker_image_push.yml index fac1176961..019545ef62 100644 --- a/ansible/docker_image_push.yml +++ b/ansible/docker_image_push.yml @@ -17,5 +17,4 @@ - name: Push image to registry docker_image: name: "{{ vault_docker_registery_url }}/{{ image_name }}:{{ image_tag }}" - repository: "{{ vault_docker_registery_url }}" push: yes From 9b93a42e9659d634eb99bc6467f08698abec3193 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Sat, 22 Dec 2018 02:16:26 +0530 Subject: [PATCH 0526/1345] Update docker_image_push.yml --- ansible/docker_image_push.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/ansible/docker_image_push.yml b/ansible/docker_image_push.yml index 019545ef62..101edba45a 100644 --- a/ansible/docker_image_push.yml +++ b/ansible/docker_image_push.yml @@ -16,5 +16,4 @@ - name: Push image to registry docker_image: - name: "{{ vault_docker_registery_url }}/{{ image_name }}:{{ image_tag }}" - push: yes + name: "{{ vault_docker_registery_url }}/{{ image_name }}:{{ image_tag }} From c9e706fb7a481d74270e2a31a8edc72efc82218a Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Sat, 22 Dec 2018 02:19:02 +0530 Subject: [PATCH 0527/1345] Update docker_image_push.yml --- ansible/docker_image_push.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/ansible/docker_image_push.yml b/ansible/docker_image_push.yml index 101edba45a..3b030d1ce3 100644 --- a/ansible/docker_image_push.yml +++ b/ansible/docker_image_push.yml @@ -17,3 +17,4 @@ - name: Push image to registry docker_image: name: "{{ vault_docker_registery_url }}/{{ image_name }}:{{ image_tag }} + push: yes From 6b663df74766a88e60440f4a17251fd7f31f6729 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Sat, 22 Dec 2018 02:19:39 +0530 Subject: [PATCH 0528/1345] Update docker_image_push.yml --- ansible/docker_image_push.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/docker_image_push.yml b/ansible/docker_image_push.yml index 3b030d1ce3..019545ef62 100644 --- a/ansible/docker_image_push.yml +++ b/ansible/docker_image_push.yml @@ -16,5 +16,5 @@ - name: Push image to registry docker_image: - name: "{{ vault_docker_registery_url }}/{{ image_name }}:{{ image_tag }} + name: "{{ vault_docker_registery_url }}/{{ image_name }}:{{ image_tag }}" push: yes From 5aa628b6a57aec1999a628eaa08a9f98738ce0e6 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Sat, 22 Dec 2018 02:22:11 +0530 Subject: [PATCH 0529/1345] Update docker_image_push.yml --- ansible/docker_image_push.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ansible/docker_image_push.yml b/ansible/docker_image_push.yml index 019545ef62..e682fee50d 100644 --- a/ansible/docker_image_push.yml +++ b/ansible/docker_image_push.yml @@ -16,5 +16,6 @@ - name: Push image to registry docker_image: - name: "{{ vault_docker_registery_url }}/{{ image_name }}:{{ image_tag }}" + name: "{{ image_name }}:{{ image_tag }}" + repository: "{{ vault_docker_registery_url }}" push: yes From b602c874e17eac049af360c4d6a974b6100a1876 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Sat, 22 Dec 2018 22:11:47 +0530 Subject: [PATCH 0530/1345] Update main.yml --- ansible/roles/acr-docker/tasks/main.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/ansible/roles/acr-docker/tasks/main.yml b/ansible/roles/acr-docker/tasks/main.yml index bc268bc5ad..ff966bf093 100644 --- a/ansible/roles/acr-docker/tasks/main.yml +++ b/ansible/roles/acr-docker/tasks/main.yml @@ -12,3 +12,4 @@ name: "{{ vault_docker_registery_url }}/{{ image_name }}" tag: "{{ image_tag }}" repository: "{{ vault_docker_registery_url }}" + state: present From 99b92ae6b0dd371f0f4b712b53967a57d7a3e50b Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Sat, 22 Dec 2018 22:12:30 +0530 Subject: [PATCH 0531/1345] Issue #000: DO-350 Updating playbook docker push --- ansible/docker_image_push.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/ansible/docker_image_push.yml b/ansible/docker_image_push.yml index e682fee50d..126bd91a21 100644 --- a/ansible/docker_image_push.yml +++ b/ansible/docker_image_push.yml @@ -16,6 +16,8 @@ - name: Push image to registry docker_image: - name: "{{ image_name }}:{{ image_tag }}" + name: "{{ image_name }}" + tag: "{{ image_tag }}" repository: "{{ vault_docker_registery_url }}" + state: present push: yes From f21ff7fdb4b1c702f3efaa16b629887cff28c175 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Sat, 22 Dec 2018 23:05:46 +0530 Subject: [PATCH 0532/1345] feat: DO-350 image name and tag manual override --- pipelines/deploy/player/Jenkinsfile.push | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/pipelines/deploy/player/Jenkinsfile.push b/pipelines/deploy/player/Jenkinsfile.push index e43a614e79..db07c194f8 100644 --- a/pipelines/deploy/player/Jenkinsfile.push +++ b/pipelines/deploy/player/Jenkinsfile.push @@ -17,8 +17,21 @@ node(){ else error 'Unable to determine project path to copy metadata.json file' - image_name = sh(returnStdout: true, script: 'jq -r .image_name metadata.json').trim() - image_tag = sh(returnStdout: true, script: 'jq -r .image_tag metadata.json').trim() + if (params.image_name == "") { + println "Image name not specified, using the image name specified in metadata.json" + image_name = sh(returnStdout: true, script: 'jq -r .image_name metadata.json').trim() + println image_name + } + else + image_name = params.image_name + + if (params.image_tag == "") { + println "Image tag not specified, using the latest image" + image_tag = sh(returnStdout: true, script: 'jq -r .image_tag metadata.json').trim() + } + else + image_tag = params.image_tag + agent = sh(returnStdout: true, script: 'jq -r .nodeName metadata.json').trim() values.put('image_name', image_name) values.put('image_tag', image_tag) From a06a3d400276894f0ce5e76480ca06c9aae733be Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Sat, 22 Dec 2018 23:06:22 +0530 Subject: [PATCH 0533/1345] feat: DO-350 image name and tag manual override --- pipelines/deploy/player/Jenkinsfile.deploy | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/pipelines/deploy/player/Jenkinsfile.deploy b/pipelines/deploy/player/Jenkinsfile.deploy index 76c774c7cd..7c953a477a 100644 --- a/pipelines/deploy/player/Jenkinsfile.deploy +++ b/pipelines/deploy/player/Jenkinsfile.deploy @@ -24,17 +24,26 @@ node() { else error 'Unable to determine project path to copy metadata.json file' + if (params.image_name == "") { + println "Image name not specified, using the image name specified in metadata.json" + image_name = sh(returnStdout: true, script: 'jq -r .image_name metadata.json').trim() + println image_name + } + else + image_name = params.image_name + + if (params.image_tag == "") { + println "Image tag not specified, using the latest image" + image_tag = sh(returnStdout: true, script: 'jq -r .image_tag metadata.json').trim() + } + else + image_tag = params.image_tag + agent = sh(returnStdout: true, script: 'jq -r .nodeName metadata.json').trim() - image_name = sh(returnStdout: true, script: 'jq -r .image_name metadata.json').trim() - image_tag = sh(returnStdout: true, script: 'jq -r .image_tag metadata.json').trim() values.put('agent', agent) values.put('image_name', image_name) values.put('image_tag', image_tag) -// image_tag = (params.image_tag != "" && params.image_tag != null) ? params.image_tag : 'latest' - if (image_tag == "latest") - println "Image tag not specified, using the latest image" - ansibleExtraArgs = """\ --tags "stack-sunbird" --extra-vars "hub_org=$hub_org image_name=$values.image_name image_tag=$values.image_tag service_name=$values.serviceName From 33ee14ff917dba2efb0dc45a7697df4bb0655125 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Sat, 22 Dec 2018 23:09:26 +0530 Subject: [PATCH 0534/1345] feat: DO-350 image name and tag manual override --- pipelines/deploy/player/Jenkinsfile.deploy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pipelines/deploy/player/Jenkinsfile.deploy b/pipelines/deploy/player/Jenkinsfile.deploy index 7c953a477a..e5735d410e 100644 --- a/pipelines/deploy/player/Jenkinsfile.deploy +++ b/pipelines/deploy/player/Jenkinsfile.deploy @@ -33,7 +33,7 @@ node() { image_name = params.image_name if (params.image_tag == "") { - println "Image tag not specified, using the latest image" + println "Image tag not specified, using the version specified in metadata.json" image_tag = sh(returnStdout: true, script: 'jq -r .image_tag metadata.json').trim() } else From 080fb49370ea3be5bee3fb4cbf52b893c8b3a113 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Sat, 22 Dec 2018 23:10:10 +0530 Subject: [PATCH 0535/1345] feat: DO-350 image name and tag manual override --- pipelines/deploy/player/Jenkinsfile.push | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pipelines/deploy/player/Jenkinsfile.push b/pipelines/deploy/player/Jenkinsfile.push index db07c194f8..25d6b00c43 100644 --- a/pipelines/deploy/player/Jenkinsfile.push +++ b/pipelines/deploy/player/Jenkinsfile.push @@ -26,7 +26,7 @@ node(){ image_name = params.image_name if (params.image_tag == "") { - println "Image tag not specified, using the latest image" + println "Image tag not specified, using the version specified in metadata.json" image_tag = sh(returnStdout: true, script: 'jq -r .image_tag metadata.json').trim() } else From 1a20dfa368cbf10c8f5019d98c92cb7c7f16c87b Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Sun, 23 Dec 2018 00:09:00 +0530 Subject: [PATCH 0536/1345] Update docker_image_push.yml --- ansible/docker_image_push.yml | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/ansible/docker_image_push.yml b/ansible/docker_image_push.yml index 126bd91a21..019545ef62 100644 --- a/ansible/docker_image_push.yml +++ b/ansible/docker_image_push.yml @@ -16,8 +16,5 @@ - name: Push image to registry docker_image: - name: "{{ image_name }}" - tag: "{{ image_tag }}" - repository: "{{ vault_docker_registery_url }}" - state: present + name: "{{ vault_docker_registery_url }}/{{ image_name }}:{{ image_tag }}" push: yes From aa014f3cbfd3978d0839368e6f27d428ad9c90dd Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Sun, 23 Dec 2018 00:11:44 +0530 Subject: [PATCH 0537/1345] Update main.yml --- ansible/roles/acr-docker/tasks/main.yml | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/ansible/roles/acr-docker/tasks/main.yml b/ansible/roles/acr-docker/tasks/main.yml index ff966bf093..b147399ca5 100644 --- a/ansible/roles/acr-docker/tasks/main.yml +++ b/ansible/roles/acr-docker/tasks/main.yml @@ -7,9 +7,7 @@ username: "{{ vault_docker_registery_user }}" password: "{{ vault_docker_registory }}" reauth: yes -- name: Pull image from registry + +- name: Pull image to registry docker_image: - name: "{{ vault_docker_registery_url }}/{{ image_name }}" - tag: "{{ image_tag }}" - repository: "{{ vault_docker_registery_url }}" - state: present + name: "{{ vault_docker_registery_url }}/{{ image_name }}:{{ image_tag }}" From 47c1337397adda5fda187e12a711ea2f81bd7ff3 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Mon, 24 Dec 2018 10:53:36 +0530 Subject: [PATCH 0538/1345] Issue # 000: Adding upgrade script for 1.12 --- tests/ci/upgrade_sunbird-1.12.sh | 112 +++++++++++++++++++++++++++++++ 1 file changed, 112 insertions(+) create mode 100644 tests/ci/upgrade_sunbird-1.12.sh diff --git a/tests/ci/upgrade_sunbird-1.12.sh b/tests/ci/upgrade_sunbird-1.12.sh new file mode 100644 index 0000000000..dbbdc1c70c --- /dev/null +++ b/tests/ci/upgrade_sunbird-1.12.sh @@ -0,0 +1,112 @@ +#!/bin/bash + +backupdbs(){ +cd /home/$username/sunbird-devops/deploy +scp -i $ansible_private_key_path -o StrictHostKeyChecking=no $backup_script $release_file $config_file $username@$database_host:/tmp +ssh -i $ansible_private_key_path -o StrictHostKeyChecking=no $username@$database_host "bash /tmp/backup_dbs-$version.sh $release $username" +} + +updateSSO(){ + access_token=$(curl -s -X POST http://$dns_name/auth/realms/master/protocol/openid-connect/token -H "cache-control: no-cache" -H "content-type: application/x-www-form-urlencoded" -d "client_id=admin-cli&username=admin&password=$keycloak_pass&grant_type=password" | jq -r ".access_token") + public_key=$(curl -s -X GET http://$dns_name/auth/admin/realms/sunbird/keys -H "Authorization: Bearer $access_token" -H "Cache-Control: no-cache" -H "Content-Type: application/json" | jq -r ".keys[0].publicKey") + sed -i "s|sunbird_sso_publickey:.*#|sunbird_sso_publickey: $public_key #|g" $config_file +} + +upgradeSB(){ +./sunbird_install.sh -s config +if [[ $? -ne 0 ]]; then + echo -e "Config file generation failed.." | tee $upgrade_log + postResult +fi + +./sunbird_install.sh -s dbs +if [[ $? -ne 0 ]]; then + echo -e "DB migration failed.." | tee -a $upgrade_log + postResult +fi + +./sunbird_install.sh -s apis +if [[ $? -ne 0 ]]; then + echo -e "API service upgrade failed.." | tee -a $upgrade_log + postResult +fi + +./sunbird_install.sh -s proxy +if [[ $? -ne 0 ]]; then + echo -e "Proxy service upgrade failed.." | tee -a $upgrade_log + postResult +fi + +./sunbird_install.sh -s core +if [[ $? -ne 0 ]]; then + echo -e "Core services upgrade failed.." | tee -a $upgrade_log + postResult +fi +} + +verifyUpgrade(){ + flag=0 + declare -a services=("badger" "content" "kong" "learner" "player" "proxy" "telemetry") + for i in ${services[@]} + do + docker_version=$(sudo docker service ls | awk '/'$i'/{print $5}' | awk -F ":" '{print $2}') + release_version=$(awk -F "=" 'tolower($0) ~ /'$i'/ {print $2}' version.env) + + if [[ $docker_version == $release_version ]]; then + echo -e "\e[0;32m$i service upgraded successfully to $docker_version\e[0;37m" | tee -a $upgrade_log + else + echo -e "\e[0;31m$i service could not be upgraded. Release version is $release_version, but docker version is $docker_version. Please investigate..\e[0;37m" | tee -a $upgrade_log + flag=1 + fi +done +} + +copyLogs(){ + mkdir logs 2> /dev/null + cp $upgrade_log logs + scp -i $ansible_private_key_path -o StrictHostKeyChecking=no $username@$database_host:/tmp/backuplog.txt logs +} + + +postResult(){ + copyLogs + echo "release: $previous to $release" >> $build_info + echo "status: Failed" >> $build_info + echo "subject: $previous build succeeded, upgrade to $release failed" >> $build_info + exit 1 +} + +config_file=$1 +release=$2 +build_info=$3 +version=$4 +previous=$5 +username=$(awk '/ssh_ansible_user:/{ if ($2 !~ /#.*/) {print $2}}' $build_info) +ansible_private_key_path=$(awk '/ansible_private_key_path:/{ if ($2 !~ /#.*/) {print $2}}' $build_info) +dns_name=$(awk '/dns_name:/{ if ($2 !~ /#.*/) {print $2}}' $build_info) +database_host=$(awk '/database_host:/{ if ($2 !~ /#.*/) {print $2}}' $build_info) +keycloak_pass=$(awk '/keycloak_admin_password:/{ if ($2 !~ /#.*/) {print $2}}' $build_info) +sso_pass=$(awk '/sso_password:/{ if ($2 !~ /#.*/) {print $2}}' $build_info) +backup_script=/tmp/tests/ci/backup_dbs-$version.sh +upgrade_log=/tmp/upgradelog.txt + +backupdbs +if [[ $? -eq 0 ]]; then + updateSSO + upgradeSB + verifyUpgrade +else + echo -e "Database backup failed. Skipping upgrade.." | tee -a $upgrade_log + postResult +fi + +if [[ $flag -eq 1 ]]; then + echo "Found mismatch in container versions.." | tee -a $upgrade_log + postResult +else + copyLogs + echo "Sunbird upgrade successful" | tee -a $upgrade_log + echo "release: $previous to $release" >> $build_info + echo "status: Success" >> $build_info + echo "subject: $previous build succeeded, upgrade to $release succeeded" >> $build_info +fi From a1d1568ca8f2608a16c4a7c3ca10948b55dfe7e5 Mon Sep 17 00:00:00 2001 From: msknext Date: Mon, 24 Dec 2018 11:10:51 +0530 Subject: [PATCH 0539/1345] Issue # 000: Adding 1.13 scripts --- tests/ci/backup_dbs-1.12.sh | 154 +++++++++++++++++++++++++++++++ tests/ci/install_sunbird-1.13.sh | 84 +++++++++++++++++ tests/ci/upgrade_sunbird-1.12.sh | 0 3 files changed, 238 insertions(+) create mode 100755 tests/ci/backup_dbs-1.12.sh create mode 100755 tests/ci/install_sunbird-1.13.sh mode change 100644 => 100755 tests/ci/upgrade_sunbird-1.12.sh diff --git a/tests/ci/backup_dbs-1.12.sh b/tests/ci/backup_dbs-1.12.sh new file mode 100755 index 0000000000..b80dac990f --- /dev/null +++ b/tests/ci/backup_dbs-1.12.sh @@ -0,0 +1,154 @@ +#!/bin/bash + +getTags(){ + declare -A arr + i=1 + while true + do + tag=$(git tag | grep "release-[0-9].*[0-9]$" | sort -V -r | awk -F "." '!($2 in a){i++; a[$2]} (i=='$i'){print $0}' | head -1) + if [[ $tag != "" ]]; then + arr[$tag]=$i + i=$(expr $i + 1) + else + break + fi + done + index=${arr["$release"]} +} + +checkoutRepo(){ + cd /home/$username + sudo rm -rf sunbird-devops + git clone https://github.com/project-sunbird/sunbird-devops.git + cd sunbird-devops + getTags + if [[ $index != "" ]]; then + git checkout tags/$release -b $release + echo -e "Installing sunbird on tags $release" | tee $wrapper_log + else + git checkout -b $release origin/$release + echo -e "Installing sunbird on branch $release" | tee -a $wrappper_log + fi + cd deploy +} + +cassandraBackup(){ +echo "Starting cassandra backup" | tee -a $backup_log +python cassandra_backup.py | tee -a $backup_log +if [[ -f cassandra_backup-$(date +%Y-%m-%d).tar.gz ]] && [[ -s cassandra_backup-$(date +%Y-%m-%d).tar.gz ]] ; then + echo "Cassandra backup successful" | tee -a $backup_log +else + echo "Cassandra backup failed. Exiting..." | tee -a $backup_log + exit 1 +fi +} + +postgresBackup(){ +echo "Starting postgres backup" | tee -a $backup_log +bash backup_postgres.sh | tee -a $backup_log +postgres_backup_file=$(ls /tmp/postgresql-backup/) +if [[ -f /tmp/postgresql-backup/$postgres_backup_file ]] && [[ -s /tmp/postgresql-backup/$postgres_backup_file ]]; then + echo "Postgres backup successful" | tee -a $backup_log +else + echo "Postgres backup failed. Exiting..." | tee -a $backup_log + exit 1 +fi +} + +elasticsearchBackup(){ +echo "Staring elasticsearch backup" | tee -a $backup_log +flag=0 +snapshot_name="null" +sudo apt install -y jq +sudo bash backup_elasticsearch.sh | tee -a $backup_log +if sudo test -f /etc/elasticsearch/backup/index-0 && sudo test -s /etc/elasticsearch/backup/index-0; then + snapshot_name=$(sudo cat /etc/elasticsearch/backup/index-0 | jq -r ".snapshots[0].name") + echo "Elasticsearch backup successful" | tee -a $backup_log + flag=1 +else + echo "Backup not found. Restarting elasticsearch.." | tee -a $backup_log + sudo systemctl restart es-1_elasticsearch.service + sleep 15 + echo "Retrying backup.." | tee -a $backup_log + sudo bash backup_elasticsearch.sh +fi + +if [ $flag -eq 0 ] && sudo test -f /etc/elasticsearch/backup/index-0 && sudo test -s /etc/elasticsearch/backup/index-0; then +snapshot_name=$(sudo cat /etc/elasticsearch/backup/index-0 | jq -r ".snapshots[0].name") +fi + +if [[ $snapshot_name == "null" ]]; then + echo "Elasticsearch backup failed. Exiting..." | tee -a $backup_log + exit 1 +else + echo "Elasticsearch backup successful" | tee -a $backup_log +fi +} + +restoreCassandra(){ +echo "Staring cassandra restore" | tee -a $backup_log +arr=($(cqlsh -e "describe keyspaces")) +count=${#arr[@]} +cqlsh -e "drop keyspace dialcodes" +cqlsh -e "drop keyspace portal" +cqlsh -e "drop keyspace sunbird" +cqlsh -e "drop keyspace sunbirdplugin" +tar -xvzf cassandra_backup-$(date +%Y-%m-%d).tar.gz | tee -a $backup_log +cqlsh -f 'cassandra_backup/db_schema.cql' | tee -a $backup_log +python cassandra_restore.py --host $(hostname -i) cassandra_backup | tee -a $backup_log +arr=($(cqlsh -e "describe keyspaces")) +if [[ $count != ${#arr[@]} ]]; then + echo "Cassandra restore failed. Exiting..." | tee -a $backup_log + exit 1 +else + echo "Cassandra restore successful" | tee -a $backup_log +fi +} + +restorePostgres(){ +echo "Starting postgres restore" | tee -a $backup_log +db_count=$(sudo -u postgres psql -c "SELECT count(datname) FROM pg_database" | sed -n 3p | tr -d " ") +sudo -u postgres psql -c "update pg_database set datallowconn = false where datname in ('badger', 'keycloak', 'api_manager', 'quartz')" +sudo -u postgres psql -c "SELECT pg_terminate_backend(pg_stat_activity.pid) FROM pg_stat_activity where pid <> pg_backend_pid()" +sudo -u postgres psql -c "drop database badger" +sudo -u postgres psql -c "drop database keycloak" +sudo -u postgres psql -c "drop database quartz" +sudo -u postgres psql -c "drop database api_manager" +bash restore_postgres.sh $postgres_backup_file | tee -a $backup_log +new_db_count=$(sudo -u postgres psql -c "SELECT count(datname) FROM pg_database" | sed -n 3p | tr -d " ") +if [[ $db_count -ne $new_db_count ]]; then + echo "Postgres restore failed. Exiting..." | tee -a $backup_log + exit 1 +else + echo "Postgres restore successful" | tee -a $backup_log +fi +} + +restoreElasticsearch(){ +echo "Starting elasticsearch restore" | tee -a $backup_log +snapshot_name=$(sudo cat /etc/elasticsearch/backup/index-0 | jq -r ".snapshots[0].name") +indices=$(curl -s -X GET http://$hostip:9200/_cat/indices?v | awk 'NR>1{print $3}' | sort | tr -d "\n") +sudo systemctl restart es-1_elasticsearch.service +sleep 15 +bash restore_elasticsearch.sh $snapshot_name | tee -a $backup_log +new_indices=$(curl -s -X GET http://$hostip:9200/_cat/indices?v | awk 'NR>1{print $3}' | sort | tr -d "\n") +if ! [[ "$indices" == "$new_indices" ]]; then + echo "Elasticsearch restore failed. Exiting..." | tee -a $backup_log + exit 1 +else + echo "Elsaticsearch restore successful" | tee -a $backup_log +fi +} + +release=$1 +username=$2 +backup_log=/tmp/backuplog.txt +hostip=$(hostname -i) + +checkoutRepo +cassandraBackup +postgresBackup +elasticsearchBackup +restoreCassandra +restorePostgres +restoreElasticsearch diff --git a/tests/ci/install_sunbird-1.13.sh b/tests/ci/install_sunbird-1.13.sh new file mode 100755 index 0000000000..8beaf1af47 --- /dev/null +++ b/tests/ci/install_sunbird-1.13.sh @@ -0,0 +1,84 @@ +#!/bin/bash + +installSunbird(){ + echo -e "Starting installation..." | tee $installer_log + bash sunbird_install.sh +} + +updateSSO(){ + access_token=$(curl -s -X POST http://$dns_name/auth/realms/master/protocol/openid-connect/token -H "cache-control: no-cache" -H "content-type: application/x-www-form-urlencoded" -d "client_id=admin-cli&username=admin&password=$keycloak_pass&grant_type=password" | jq -r ".access_token") + public_key=$(curl -s -X GET http://$dns_name/auth/admin/realms/sunbird/keys -H "Authorization: Bearer $access_token" -H "Cache-Control: no-cache" -H "Content-Type: application/json" | jq -r ".keys[0].publicKey") + sed -i "s|sunbird_sso_publickey:.*#|sunbird_sso_publickey: $public_key #|g" $config_file +} + +coreInstall(){ + echo -e "Sunbird installation complete - Starting core installation..." | tee -a $installer_log + bash sunbird_install.sh -s core +} + +systemInit(){ + bash sunbird_install.sh -s systeminit +} + +postTest(){ + bash sunbird_install.sh -s posttest +} + +copyLogs(){ + mkdir logs 2> /dev/null + cp $installer_log logs +} + +postResult(){ + copyLogs + echo "status: Failed" >> $build_info + echo "subject: $release build failed" >> $build_info + exit 1 +} + +config_file=$1 +release=$2 +build_info=$3 +dns_name=$(awk '/dns_name:/{ if ($2 !~ /#.*/) {print $2}}' $config_file) +keycloak_pass=$(awk '/keycloak_admin_password:/{ if ($2 !~ /#.*/) {print $2}}' $config_file) +sso_pass=$(awk '/sso_password:/{ if ($2 !~ /#.*/) {print $2}}' $config_file) +installer_log=/tmp/installerlog.txt + +installSunbird + +if [[ $? -ne 0 ]]; then + echo -e "Installation failed - Retrying..." | tee -a $installer_log + installSunbird +fi + +if [[ $? -eq 0 ]]; then + updateSSO + coreInstall +else + echo -e "Sunbird installation failed - Error occured during installation" | tee -a $installer_log + postResult +fi + +if [[ $? -eq 0 ]]; then + systemInit +else + echo -e "Sunbird installation failed - Error occured during core installation" | tee -a $installer_log + postResult +fi + +if [[ $? -eq 0 ]]; then + postTest +else + echo -e "Sunbird installation failed - Error occured during system initialization" | tee -a $installer_log + postResult +fi + +if [[ $? -eq 0 ]]; then + copyLogs + echo -e "Sunbird installation complete" | tee -a $installer_log + echo "status: Success" >> $build_info + echo "subject: $release build succeeded" >> $build_info +else + echo -e "Sunbird installation failed - Error occured duing postTest" | tee -a $installer_log + postResult +fi diff --git a/tests/ci/upgrade_sunbird-1.12.sh b/tests/ci/upgrade_sunbird-1.12.sh old mode 100644 new mode 100755 From a838b8a7005b98dfb579c113220ca88ec77aad4f Mon Sep 17 00:00:00 2001 From: msknext Date: Mon, 24 Dec 2018 11:15:52 +0530 Subject: [PATCH 0540/1345] Issue # 000: Updated circle ci config to build new release --- .circleci/config.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 3c3e46eebb..cb782e3845 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -37,17 +37,17 @@ workflows: - /release-.*/ jobs: - install: - release: release-1.10.2 + release: release-1.11.1 filters: branches: only: master - install: - release: release-1.11.1 + release: release-1.12 filters: branches: only: master - install: - release: release-1.12 + release: release-1.13 filters: branches: - only: release-1.12 + only: release-1.13 From df43edaca1e947a6027e858984f37f32629d6fae Mon Sep 17 00:00:00 2001 From: msknext Date: Mon, 24 Dec 2018 11:25:24 +0530 Subject: [PATCH 0541/1345] Issue # 000: Adding 1.13 install scripts --- .circleci/config.yml | 10 +- tests/ci/backup_dbs-1.12.sh | 154 +++++++++++++++++++++++++++++++ tests/ci/install_sunbird-1.13.sh | 84 +++++++++++++++++ tests/ci/upgrade_sunbird-1.12.sh | 112 ++++++++++++++++++++++ 4 files changed, 355 insertions(+), 5 deletions(-) create mode 100755 tests/ci/backup_dbs-1.12.sh create mode 100755 tests/ci/install_sunbird-1.13.sh create mode 100755 tests/ci/upgrade_sunbird-1.12.sh diff --git a/.circleci/config.yml b/.circleci/config.yml index 95e18ed839..cb782e3845 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -29,7 +29,7 @@ workflows: nightly: triggers: - schedule: - cron: "40 17 1,5,9,13,17,21,25,29 * *" + cron: "0 17 1,5,9,13,17,21,25,29 * *" filters: branches: only: @@ -37,17 +37,17 @@ workflows: - /release-.*/ jobs: - install: - release: release-1.10.2 + release: release-1.11.1 filters: branches: only: master - install: - release: release-1.11.1 + release: release-1.12 filters: branches: only: master - install: - release: release-1.12 + release: release-1.13 filters: branches: - only: release-1.12 + only: release-1.13 diff --git a/tests/ci/backup_dbs-1.12.sh b/tests/ci/backup_dbs-1.12.sh new file mode 100755 index 0000000000..b80dac990f --- /dev/null +++ b/tests/ci/backup_dbs-1.12.sh @@ -0,0 +1,154 @@ +#!/bin/bash + +getTags(){ + declare -A arr + i=1 + while true + do + tag=$(git tag | grep "release-[0-9].*[0-9]$" | sort -V -r | awk -F "." '!($2 in a){i++; a[$2]} (i=='$i'){print $0}' | head -1) + if [[ $tag != "" ]]; then + arr[$tag]=$i + i=$(expr $i + 1) + else + break + fi + done + index=${arr["$release"]} +} + +checkoutRepo(){ + cd /home/$username + sudo rm -rf sunbird-devops + git clone https://github.com/project-sunbird/sunbird-devops.git + cd sunbird-devops + getTags + if [[ $index != "" ]]; then + git checkout tags/$release -b $release + echo -e "Installing sunbird on tags $release" | tee $wrapper_log + else + git checkout -b $release origin/$release + echo -e "Installing sunbird on branch $release" | tee -a $wrappper_log + fi + cd deploy +} + +cassandraBackup(){ +echo "Starting cassandra backup" | tee -a $backup_log +python cassandra_backup.py | tee -a $backup_log +if [[ -f cassandra_backup-$(date +%Y-%m-%d).tar.gz ]] && [[ -s cassandra_backup-$(date +%Y-%m-%d).tar.gz ]] ; then + echo "Cassandra backup successful" | tee -a $backup_log +else + echo "Cassandra backup failed. Exiting..." | tee -a $backup_log + exit 1 +fi +} + +postgresBackup(){ +echo "Starting postgres backup" | tee -a $backup_log +bash backup_postgres.sh | tee -a $backup_log +postgres_backup_file=$(ls /tmp/postgresql-backup/) +if [[ -f /tmp/postgresql-backup/$postgres_backup_file ]] && [[ -s /tmp/postgresql-backup/$postgres_backup_file ]]; then + echo "Postgres backup successful" | tee -a $backup_log +else + echo "Postgres backup failed. Exiting..." | tee -a $backup_log + exit 1 +fi +} + +elasticsearchBackup(){ +echo "Staring elasticsearch backup" | tee -a $backup_log +flag=0 +snapshot_name="null" +sudo apt install -y jq +sudo bash backup_elasticsearch.sh | tee -a $backup_log +if sudo test -f /etc/elasticsearch/backup/index-0 && sudo test -s /etc/elasticsearch/backup/index-0; then + snapshot_name=$(sudo cat /etc/elasticsearch/backup/index-0 | jq -r ".snapshots[0].name") + echo "Elasticsearch backup successful" | tee -a $backup_log + flag=1 +else + echo "Backup not found. Restarting elasticsearch.." | tee -a $backup_log + sudo systemctl restart es-1_elasticsearch.service + sleep 15 + echo "Retrying backup.." | tee -a $backup_log + sudo bash backup_elasticsearch.sh +fi + +if [ $flag -eq 0 ] && sudo test -f /etc/elasticsearch/backup/index-0 && sudo test -s /etc/elasticsearch/backup/index-0; then +snapshot_name=$(sudo cat /etc/elasticsearch/backup/index-0 | jq -r ".snapshots[0].name") +fi + +if [[ $snapshot_name == "null" ]]; then + echo "Elasticsearch backup failed. Exiting..." | tee -a $backup_log + exit 1 +else + echo "Elasticsearch backup successful" | tee -a $backup_log +fi +} + +restoreCassandra(){ +echo "Staring cassandra restore" | tee -a $backup_log +arr=($(cqlsh -e "describe keyspaces")) +count=${#arr[@]} +cqlsh -e "drop keyspace dialcodes" +cqlsh -e "drop keyspace portal" +cqlsh -e "drop keyspace sunbird" +cqlsh -e "drop keyspace sunbirdplugin" +tar -xvzf cassandra_backup-$(date +%Y-%m-%d).tar.gz | tee -a $backup_log +cqlsh -f 'cassandra_backup/db_schema.cql' | tee -a $backup_log +python cassandra_restore.py --host $(hostname -i) cassandra_backup | tee -a $backup_log +arr=($(cqlsh -e "describe keyspaces")) +if [[ $count != ${#arr[@]} ]]; then + echo "Cassandra restore failed. Exiting..." | tee -a $backup_log + exit 1 +else + echo "Cassandra restore successful" | tee -a $backup_log +fi +} + +restorePostgres(){ +echo "Starting postgres restore" | tee -a $backup_log +db_count=$(sudo -u postgres psql -c "SELECT count(datname) FROM pg_database" | sed -n 3p | tr -d " ") +sudo -u postgres psql -c "update pg_database set datallowconn = false where datname in ('badger', 'keycloak', 'api_manager', 'quartz')" +sudo -u postgres psql -c "SELECT pg_terminate_backend(pg_stat_activity.pid) FROM pg_stat_activity where pid <> pg_backend_pid()" +sudo -u postgres psql -c "drop database badger" +sudo -u postgres psql -c "drop database keycloak" +sudo -u postgres psql -c "drop database quartz" +sudo -u postgres psql -c "drop database api_manager" +bash restore_postgres.sh $postgres_backup_file | tee -a $backup_log +new_db_count=$(sudo -u postgres psql -c "SELECT count(datname) FROM pg_database" | sed -n 3p | tr -d " ") +if [[ $db_count -ne $new_db_count ]]; then + echo "Postgres restore failed. Exiting..." | tee -a $backup_log + exit 1 +else + echo "Postgres restore successful" | tee -a $backup_log +fi +} + +restoreElasticsearch(){ +echo "Starting elasticsearch restore" | tee -a $backup_log +snapshot_name=$(sudo cat /etc/elasticsearch/backup/index-0 | jq -r ".snapshots[0].name") +indices=$(curl -s -X GET http://$hostip:9200/_cat/indices?v | awk 'NR>1{print $3}' | sort | tr -d "\n") +sudo systemctl restart es-1_elasticsearch.service +sleep 15 +bash restore_elasticsearch.sh $snapshot_name | tee -a $backup_log +new_indices=$(curl -s -X GET http://$hostip:9200/_cat/indices?v | awk 'NR>1{print $3}' | sort | tr -d "\n") +if ! [[ "$indices" == "$new_indices" ]]; then + echo "Elasticsearch restore failed. Exiting..." | tee -a $backup_log + exit 1 +else + echo "Elsaticsearch restore successful" | tee -a $backup_log +fi +} + +release=$1 +username=$2 +backup_log=/tmp/backuplog.txt +hostip=$(hostname -i) + +checkoutRepo +cassandraBackup +postgresBackup +elasticsearchBackup +restoreCassandra +restorePostgres +restoreElasticsearch diff --git a/tests/ci/install_sunbird-1.13.sh b/tests/ci/install_sunbird-1.13.sh new file mode 100755 index 0000000000..8beaf1af47 --- /dev/null +++ b/tests/ci/install_sunbird-1.13.sh @@ -0,0 +1,84 @@ +#!/bin/bash + +installSunbird(){ + echo -e "Starting installation..." | tee $installer_log + bash sunbird_install.sh +} + +updateSSO(){ + access_token=$(curl -s -X POST http://$dns_name/auth/realms/master/protocol/openid-connect/token -H "cache-control: no-cache" -H "content-type: application/x-www-form-urlencoded" -d "client_id=admin-cli&username=admin&password=$keycloak_pass&grant_type=password" | jq -r ".access_token") + public_key=$(curl -s -X GET http://$dns_name/auth/admin/realms/sunbird/keys -H "Authorization: Bearer $access_token" -H "Cache-Control: no-cache" -H "Content-Type: application/json" | jq -r ".keys[0].publicKey") + sed -i "s|sunbird_sso_publickey:.*#|sunbird_sso_publickey: $public_key #|g" $config_file +} + +coreInstall(){ + echo -e "Sunbird installation complete - Starting core installation..." | tee -a $installer_log + bash sunbird_install.sh -s core +} + +systemInit(){ + bash sunbird_install.sh -s systeminit +} + +postTest(){ + bash sunbird_install.sh -s posttest +} + +copyLogs(){ + mkdir logs 2> /dev/null + cp $installer_log logs +} + +postResult(){ + copyLogs + echo "status: Failed" >> $build_info + echo "subject: $release build failed" >> $build_info + exit 1 +} + +config_file=$1 +release=$2 +build_info=$3 +dns_name=$(awk '/dns_name:/{ if ($2 !~ /#.*/) {print $2}}' $config_file) +keycloak_pass=$(awk '/keycloak_admin_password:/{ if ($2 !~ /#.*/) {print $2}}' $config_file) +sso_pass=$(awk '/sso_password:/{ if ($2 !~ /#.*/) {print $2}}' $config_file) +installer_log=/tmp/installerlog.txt + +installSunbird + +if [[ $? -ne 0 ]]; then + echo -e "Installation failed - Retrying..." | tee -a $installer_log + installSunbird +fi + +if [[ $? -eq 0 ]]; then + updateSSO + coreInstall +else + echo -e "Sunbird installation failed - Error occured during installation" | tee -a $installer_log + postResult +fi + +if [[ $? -eq 0 ]]; then + systemInit +else + echo -e "Sunbird installation failed - Error occured during core installation" | tee -a $installer_log + postResult +fi + +if [[ $? -eq 0 ]]; then + postTest +else + echo -e "Sunbird installation failed - Error occured during system initialization" | tee -a $installer_log + postResult +fi + +if [[ $? -eq 0 ]]; then + copyLogs + echo -e "Sunbird installation complete" | tee -a $installer_log + echo "status: Success" >> $build_info + echo "subject: $release build succeeded" >> $build_info +else + echo -e "Sunbird installation failed - Error occured duing postTest" | tee -a $installer_log + postResult +fi diff --git a/tests/ci/upgrade_sunbird-1.12.sh b/tests/ci/upgrade_sunbird-1.12.sh new file mode 100755 index 0000000000..dbbdc1c70c --- /dev/null +++ b/tests/ci/upgrade_sunbird-1.12.sh @@ -0,0 +1,112 @@ +#!/bin/bash + +backupdbs(){ +cd /home/$username/sunbird-devops/deploy +scp -i $ansible_private_key_path -o StrictHostKeyChecking=no $backup_script $release_file $config_file $username@$database_host:/tmp +ssh -i $ansible_private_key_path -o StrictHostKeyChecking=no $username@$database_host "bash /tmp/backup_dbs-$version.sh $release $username" +} + +updateSSO(){ + access_token=$(curl -s -X POST http://$dns_name/auth/realms/master/protocol/openid-connect/token -H "cache-control: no-cache" -H "content-type: application/x-www-form-urlencoded" -d "client_id=admin-cli&username=admin&password=$keycloak_pass&grant_type=password" | jq -r ".access_token") + public_key=$(curl -s -X GET http://$dns_name/auth/admin/realms/sunbird/keys -H "Authorization: Bearer $access_token" -H "Cache-Control: no-cache" -H "Content-Type: application/json" | jq -r ".keys[0].publicKey") + sed -i "s|sunbird_sso_publickey:.*#|sunbird_sso_publickey: $public_key #|g" $config_file +} + +upgradeSB(){ +./sunbird_install.sh -s config +if [[ $? -ne 0 ]]; then + echo -e "Config file generation failed.." | tee $upgrade_log + postResult +fi + +./sunbird_install.sh -s dbs +if [[ $? -ne 0 ]]; then + echo -e "DB migration failed.." | tee -a $upgrade_log + postResult +fi + +./sunbird_install.sh -s apis +if [[ $? -ne 0 ]]; then + echo -e "API service upgrade failed.." | tee -a $upgrade_log + postResult +fi + +./sunbird_install.sh -s proxy +if [[ $? -ne 0 ]]; then + echo -e "Proxy service upgrade failed.." | tee -a $upgrade_log + postResult +fi + +./sunbird_install.sh -s core +if [[ $? -ne 0 ]]; then + echo -e "Core services upgrade failed.." | tee -a $upgrade_log + postResult +fi +} + +verifyUpgrade(){ + flag=0 + declare -a services=("badger" "content" "kong" "learner" "player" "proxy" "telemetry") + for i in ${services[@]} + do + docker_version=$(sudo docker service ls | awk '/'$i'/{print $5}' | awk -F ":" '{print $2}') + release_version=$(awk -F "=" 'tolower($0) ~ /'$i'/ {print $2}' version.env) + + if [[ $docker_version == $release_version ]]; then + echo -e "\e[0;32m$i service upgraded successfully to $docker_version\e[0;37m" | tee -a $upgrade_log + else + echo -e "\e[0;31m$i service could not be upgraded. Release version is $release_version, but docker version is $docker_version. Please investigate..\e[0;37m" | tee -a $upgrade_log + flag=1 + fi +done +} + +copyLogs(){ + mkdir logs 2> /dev/null + cp $upgrade_log logs + scp -i $ansible_private_key_path -o StrictHostKeyChecking=no $username@$database_host:/tmp/backuplog.txt logs +} + + +postResult(){ + copyLogs + echo "release: $previous to $release" >> $build_info + echo "status: Failed" >> $build_info + echo "subject: $previous build succeeded, upgrade to $release failed" >> $build_info + exit 1 +} + +config_file=$1 +release=$2 +build_info=$3 +version=$4 +previous=$5 +username=$(awk '/ssh_ansible_user:/{ if ($2 !~ /#.*/) {print $2}}' $build_info) +ansible_private_key_path=$(awk '/ansible_private_key_path:/{ if ($2 !~ /#.*/) {print $2}}' $build_info) +dns_name=$(awk '/dns_name:/{ if ($2 !~ /#.*/) {print $2}}' $build_info) +database_host=$(awk '/database_host:/{ if ($2 !~ /#.*/) {print $2}}' $build_info) +keycloak_pass=$(awk '/keycloak_admin_password:/{ if ($2 !~ /#.*/) {print $2}}' $build_info) +sso_pass=$(awk '/sso_password:/{ if ($2 !~ /#.*/) {print $2}}' $build_info) +backup_script=/tmp/tests/ci/backup_dbs-$version.sh +upgrade_log=/tmp/upgradelog.txt + +backupdbs +if [[ $? -eq 0 ]]; then + updateSSO + upgradeSB + verifyUpgrade +else + echo -e "Database backup failed. Skipping upgrade.." | tee -a $upgrade_log + postResult +fi + +if [[ $flag -eq 1 ]]; then + echo "Found mismatch in container versions.." | tee -a $upgrade_log + postResult +else + copyLogs + echo "Sunbird upgrade successful" | tee -a $upgrade_log + echo "release: $previous to $release" >> $build_info + echo "status: Success" >> $build_info + echo "subject: $previous build succeeded, upgrade to $release succeeded" >> $build_info +fi From 038bec163715855c9f558f3d2ba46cfb61395a97 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Mon, 24 Dec 2018 11:29:58 +0530 Subject: [PATCH 0542/1345] Issue # 000: DO-350 Changing keys --- properties.json | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/properties.json b/properties.json index c7d3178792..ebe03bfeb3 100644 --- a/properties.json +++ b/properties.json @@ -6,27 +6,22 @@ "push": { "playbook": "docker_image_push.yml" }, - "player": { + "player_deploy": { "playbook": "deploy.yml", "serviceName": "player", "deployExtraArgs": "deploy_stack=True" }, - "learner": { + "learner_deploy": { "playbook": "deploy.yml", "serviceName": "learner-service", "deployExtraArgs": "deploy_learner=True" }, - "telemetry": { + "telemetry_deploy": { "playbook": "deploy.yml", "serviceName": "telemetry-service", "deployExtraArgs": "deploy_telemetry=True" }, - "actor": { - "playbook": "deploy.yml", - "serviceName": "actor-service", - "deployExtraArgs": "deploy_actor=True" - }, - "content": { + "content_deploy": { "playbook": "deploy.yml", "serviceName": "content-service", "deployExtraArgs": "deploy_content=True" From 9da73e315469dbc4a5007930ca2a48a89919137c Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Mon, 24 Dec 2018 13:08:00 +0530 Subject: [PATCH 0543/1345] feat: DO-350 adding job specific push --- properties.json | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/properties.json b/properties.json index ebe03bfeb3..2a18a303ef 100644 --- a/properties.json +++ b/properties.json @@ -3,7 +3,16 @@ "scmUrl": "https://github.com/ekstep/sunbird-devops.git", "vaultFile": "/home/ops/vault" }, - "push": { + "push_player": { + "playbook": "docker_image_push.yml" + }, + "push_learner": { + "playbook": "docker_image_push.yml" + }, + "push_telemetry": { + "playbook": "docker_image_push.yml" + }, + "push_content": { "playbook": "docker_image_push.yml" }, "player_deploy": { From 54318ed38259855e74e76d788992854d1007301a Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Mon, 24 Dec 2018 13:09:37 +0530 Subject: [PATCH 0544/1345] feat: DO-350 Adding code to push latest tag --- ansible/docker_image_push.yml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/ansible/docker_image_push.yml b/ansible/docker_image_push.yml index 019545ef62..97de6cce36 100644 --- a/ansible/docker_image_push.yml +++ b/ansible/docker_image_push.yml @@ -14,7 +14,12 @@ password: "{{ vault_docker_registory }}" reauth: yes - - name: Push image to registry + - name: Push version image to registry + docker_image: + name: "{{ vault_docker_registery_url }}/{{ image_name }}:{{ image_tag }}" + push: yes + + - name: Push latest image to registry docker_image: name: "{{ vault_docker_registery_url }}/{{ image_name }}:{{ image_tag }}" push: yes From c670d9c0f4331280421aaa2f0949b9fc0a59427d Mon Sep 17 00:00:00 2001 From: Amol Ghatol Date: Mon, 24 Dec 2018 13:38:42 +0530 Subject: [PATCH 0545/1345] Issue #SB-9791 chore: Provide mobile app key & secret for Teacher Aid (#276) --- ansible/roles/kong-api/defaults/main.yml | 44 +++++++++++++++++++++--- 1 file changed, 39 insertions(+), 5 deletions(-) diff --git a/ansible/roles/kong-api/defaults/main.yml b/ansible/roles/kong-api/defaults/main.yml index 56847f5dab..d02edd5a00 100644 --- a/ansible/roles/kong-api/defaults/main.yml +++ b/ansible/roles/kong-api/defaults/main.yml @@ -447,7 +447,7 @@ kong_apis: config.hour: "{{ medium_rate_limit_per_hour }}" config.limit_by: credential - name: request-size-limiting - config.allowed_payload_size: "{{ small_request_size_limit }}" + config.allowed_payload_size: "{{ small_request_size_limit }}" - name: updateUser request_path: "{{ user_service_prefix }}/v1/update" upstream_url: "{{ learning_service_url }}/v1/user/update" @@ -495,7 +495,7 @@ kong_apis: config.hour: "{{ medium_rate_limit_per_hour }}" config.limit_by: credential - name: request-size-limiting - config.allowed_payload_size: "{{ small_request_size_limit }}" + config.allowed_payload_size: "{{ small_request_size_limit }}" - name: searchUser request_path: "{{ user_service_prefix }}/v1/search" upstream_url: "{{ learning_service_url }}/v1/user/search" @@ -1292,7 +1292,7 @@ kong_apis: config.hour: "{{ medium_rate_limit_per_hour }}" config.limit_by: credential - name: request-size-limiting - config.allowed_payload_size: "{{ small_request_size_limit }}" + config.allowed_payload_size: "{{ small_request_size_limit }}" - name: createBatch request_path: "{{ course_service_prefix }}/v1/batch/create" upstream_url: "{{ learning_service_url }}/v1/course/batch/create" @@ -3565,7 +3565,7 @@ kong_apis: config.hour: "{{ medium_rate_limit_per_hour }}" config.limit_by: credential - name: request-size-limiting - config.allowed_payload_size: "{{ small_request_size_limit }}" + config.allowed_payload_size: "{{ small_request_size_limit }}" - name: generateOtp request_path: "{{ otp_service_prefix }}/v1/generate" upstream_url: "{{ learning_service_url }}/v1/otp/generate" @@ -3613,4 +3613,38 @@ kong_apis: config.hour: "{{ medium_rate_limit_per_hour }}" config.limit_by: credential - name: request-size-limiting - config.allowed_payload_size: "{{ small_request_size_limit }}" \ No newline at end of file + config.allowed_payload_size: "{{ small_request_size_limit }}" + + - name: registerMobileAppTeacherAid + request_path: "{{ api_manager_perfix }}/v1/consumer/mobile_app_teacheraid/credential/register" + upstream_url: "{{ am_util_url }}/v1/consumer/mobile_app_teacheraid/credential/register" + strip_request_path: true + plugins: + - name: jwt + - name: cors + - "{{ statsd_pulgin }}" + - name: acl + config.whitelist: mobileAdminTeacherAid + - name: rate-limiting + config.policy: local + config.hour: "{{ medium_rate_limit_per_hour }}" + config.limit_by: credential + - name: request-size-limiting + config.allowed_payload_size: "{{ small_request_size_limit }}" + + - name: registerMobileDeviceTeacherAid + request_path: "{{ api_manager_perfix }}/v1/consumer/mobile_device_teacheraid/credential/register" + upstream_url: "{{ am_util_url }}/v1/consumer/mobile_device_teacheraid/credential/register" + strip_request_path: true + plugins: + - name: jwt + - name: cors + - "{{ statsd_pulgin }}" + - name: acl + config.whitelist: mobileAppTeacherAid + - name: rate-limiting + config.policy: local + config.hour: "{{ medium_rate_limit_per_hour }}" + config.limit_by: credential + - name: request-size-limiting + config.allowed_payload_size: "{{ small_request_size_limit }}" From 0c215718a6cc3819303aba04e43d5342e87703f7 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Mon, 24 Dec 2018 18:04:29 +0530 Subject: [PATCH 0546/1345] Update docker_image_push.yml --- ansible/docker_image_push.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ansible/docker_image_push.yml b/ansible/docker_image_push.yml index 97de6cce36..ba3ca3dcae 100644 --- a/ansible/docker_image_push.yml +++ b/ansible/docker_image_push.yml @@ -4,8 +4,8 @@ vars_files: - ['{{inventory_dir}}/secrets.yml'] become: yes - environment: - PYTHONPATH: /home/ops/.local/lib/python2.7/site-packages/ +# environment: +# PYTHONPATH: /home/ops/.local/lib/python2.7/site-packages/ tasks: - name: login to ACR docker_login: From 47915a687b0d682c1edd4a1beba94185e7039577 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Mon, 24 Dec 2018 18:10:11 +0530 Subject: [PATCH 0547/1345] feat: DO-409 Adding hub org to push --- pipelines/deploy/player/Jenkinsfile.push | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pipelines/deploy/player/Jenkinsfile.push b/pipelines/deploy/player/Jenkinsfile.push index 25d6b00c43..ad5a7c783a 100644 --- a/pipelines/deploy/player/Jenkinsfile.push +++ b/pipelines/deploy/player/Jenkinsfile.push @@ -35,8 +35,9 @@ node(){ agent = sh(returnStdout: true, script: 'jq -r .nodeName metadata.json').trim() values.put('image_name', image_name) values.put('image_tag', image_tag) + values.put('hub_org', hub_org) values.put('agent', agent) - ansibleExtraArgs = """--extra-vars "image_name=$values.image_name image_tag=$values.image_tag" --vault-password-file $values.vaultFile""".trim() + ansibleExtraArgs = """--extra-vars "image_name=$values.image_name image_tag=$values.image_tag hub_org=$values.hub_org" --vault-password-file $values.vaultFile""".trim() values.put('ansibleExtraArgs', ansibleExtraArgs) ansiblePlugin(values) archiveArtifacts 'metadata.json' From 706fe718eb519563085fd8eed8659a5face84a46 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Mon, 24 Dec 2018 18:11:41 +0530 Subject: [PATCH 0548/1345] feat: DO-409 Adding hub org to push --- ansible/docker_image_push.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ansible/docker_image_push.yml b/ansible/docker_image_push.yml index ba3ca3dcae..5c52dd7af9 100644 --- a/ansible/docker_image_push.yml +++ b/ansible/docker_image_push.yml @@ -16,10 +16,10 @@ - name: Push version image to registry docker_image: - name: "{{ vault_docker_registery_url }}/{{ image_name }}:{{ image_tag }}" + name: "{{ vault_docker_registery_url }}/{{ hub_org }}/{{ image_name }}:{{ image_tag }}" push: yes - name: Push latest image to registry docker_image: - name: "{{ vault_docker_registery_url }}/{{ image_name }}:{{ image_tag }}" + name: "{{ vault_docker_registery_url }}/{{ hub_org }}/{{ image_name }}:{{ image_tag }}" push: yes From a21bd684ecf289c336c2dc4f1b0274dae13d444f Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Mon, 24 Dec 2018 19:13:41 +0530 Subject: [PATCH 0549/1345] Update docker_image_push.yml --- ansible/docker_image_push.yml | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/ansible/docker_image_push.yml b/ansible/docker_image_push.yml index 5c52dd7af9..656aa12e1f 100644 --- a/ansible/docker_image_push.yml +++ b/ansible/docker_image_push.yml @@ -4,22 +4,18 @@ vars_files: - ['{{inventory_dir}}/secrets.yml'] become: yes -# environment: -# PYTHONPATH: /home/ops/.local/lib/python2.7/site-packages/ tasks: - name: login to ACR - docker_login: + docker_login: registry: "{{ vault_docker_registery_url }}" username: "{{ vault_docker_registery_user }}" password: "{{ vault_docker_registory }}" - reauth: yes - - - name: Push version image to registry - docker_image: - name: "{{ vault_docker_registery_url }}/{{ hub_org }}/{{ image_name }}:{{ image_tag }}" - push: yes - - name: Push latest image to registry + - name: Push image to registry docker_image: - name: "{{ vault_docker_registery_url }}/{{ hub_org }}/{{ image_name }}:{{ image_tag }}" + name: "{{ hub_org }}/{{ image_name }}:{{ item }}" + repository: "{{ vault_docker_registery_url }}" push: yes + with_items: + - "{{ image_tag }}" + - latest From 6160edff896af1e78d79a0eaa5a5d4719045ca29 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Mon, 24 Dec 2018 19:18:01 +0530 Subject: [PATCH 0550/1345] Update Jenkinsfile.push --- pipelines/deploy/player/Jenkinsfile.push | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/pipelines/deploy/player/Jenkinsfile.push b/pipelines/deploy/player/Jenkinsfile.push index ad5a7c783a..68859979e8 100644 --- a/pipelines/deploy/player/Jenkinsfile.push +++ b/pipelines/deploy/player/Jenkinsfile.push @@ -37,7 +37,11 @@ node(){ values.put('image_tag', image_tag) values.put('hub_org', hub_org) values.put('agent', agent) - ansibleExtraArgs = """--extra-vars "image_name=$values.image_name image_tag=$values.image_tag hub_org=$values.hub_org" --vault-password-file $values.vaultFile""".trim() + + ansibleExtraArgs = """\ + --extra-vars "hub_org=$hub_org image_name=$values.image_name + image_tag=$values.image_tag" --vault-password-file $values.vaultFile + """.stripIndent().replace("\n"," ") values.put('ansibleExtraArgs', ansibleExtraArgs) ansiblePlugin(values) archiveArtifacts 'metadata.json' From 5053ec60df87044bafa9c8b2cc57426251420432 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Mon, 24 Dec 2018 19:18:06 +0530 Subject: [PATCH 0551/1345] Update Jenkinsfile.deploy --- pipelines/deploy/player/Jenkinsfile.deploy | 1 + 1 file changed, 1 insertion(+) diff --git a/pipelines/deploy/player/Jenkinsfile.deploy b/pipelines/deploy/player/Jenkinsfile.deploy index e5735d410e..f9a07d8f7d 100644 --- a/pipelines/deploy/player/Jenkinsfile.deploy +++ b/pipelines/deploy/player/Jenkinsfile.deploy @@ -43,6 +43,7 @@ node() { values.put('agent', agent) values.put('image_name', image_name) values.put('image_tag', image_tag) + values.put('hub_org', hub_org) ansibleExtraArgs = """\ --tags "stack-sunbird" --extra-vars "hub_org=$hub_org From 0f83c50f0298ee7dfe3ed6758acabf5818971042 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Wed, 26 Dec 2018 10:33:58 +0530 Subject: [PATCH 0552/1345] Update Jenkinsfile.deploy --- pipelines/deploy/player/Jenkinsfile.deploy | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/pipelines/deploy/player/Jenkinsfile.deploy b/pipelines/deploy/player/Jenkinsfile.deploy index f9a07d8f7d..bda6135f82 100644 --- a/pipelines/deploy/player/Jenkinsfile.deploy +++ b/pipelines/deploy/player/Jenkinsfile.deploy @@ -33,8 +33,10 @@ node() { image_name = params.image_name if (params.image_tag == "") { - println "Image tag not specified, using the version specified in metadata.json" - image_tag = sh(returnStdout: true, script: 'jq -r .image_tag metadata.json').trim() +// println "Image tag not specified, using the version specified in metadata.json" +// image_tag = sh(returnStdout: true, script: 'jq -r .image_tag metadata.json').trim() + println "Image tag not specified, using the latest version + image_tag = "latest" } else image_tag = params.image_tag From 859f036fc42e56d6309dd69c9295cd7bc343391a Mon Sep 17 00:00:00 2001 From: msknext Date: Wed, 26 Dec 2018 10:54:40 +0530 Subject: [PATCH 0553/1345] Issue # 000: DO-409 Build only from master branch --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index cb782e3845..1c8dc2f814 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -50,4 +50,4 @@ workflows: release: release-1.13 filters: branches: - only: release-1.13 + only: master From d16528492b78b286802fc956476e99ca2a07008f Mon Sep 17 00:00:00 2001 From: msknext Date: Wed, 26 Dec 2018 10:57:43 +0530 Subject: [PATCH 0554/1345] Issue # 000: DO-409 Build only from master branch --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index cb782e3845..1c8dc2f814 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -50,4 +50,4 @@ workflows: release: release-1.13 filters: branches: - only: release-1.13 + only: master From ac8f94db3374d2a7be4b55925d731c0677aa851f Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Wed, 26 Dec 2018 11:07:46 +0530 Subject: [PATCH 0555/1345] Issue # 000: DO-408 Registry is part of hub_org --- ansible/docker_image_push.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/ansible/docker_image_push.yml b/ansible/docker_image_push.yml index 656aa12e1f..b5ecf2e6d6 100644 --- a/ansible/docker_image_push.yml +++ b/ansible/docker_image_push.yml @@ -14,7 +14,6 @@ - name: Push image to registry docker_image: name: "{{ hub_org }}/{{ image_name }}:{{ item }}" - repository: "{{ vault_docker_registery_url }}" push: yes with_items: - "{{ image_tag }}" From 28d75adf34dc6f34a4fd6d7a2cd1a55375903834 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Wed, 26 Dec 2018 11:08:55 +0530 Subject: [PATCH 0556/1345] Issue # 000: DO-408 Registry is part of hub_org --- ansible/roles/acr-docker/tasks/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/acr-docker/tasks/main.yml b/ansible/roles/acr-docker/tasks/main.yml index b147399ca5..e793f691d9 100644 --- a/ansible/roles/acr-docker/tasks/main.yml +++ b/ansible/roles/acr-docker/tasks/main.yml @@ -10,4 +10,4 @@ - name: Pull image to registry docker_image: - name: "{{ vault_docker_registery_url }}/{{ image_name }}:{{ image_tag }}" + name: "{{ hub_org }}/{{ image_name }}:{{ image_tag }}" From 76d9b995abf397cd82b8a90b30c0dede2f170f3e Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Wed, 26 Dec 2018 11:12:53 +0530 Subject: [PATCH 0557/1345] Update Jenkinsfile.deploy --- pipelines/deploy/player/Jenkinsfile.deploy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pipelines/deploy/player/Jenkinsfile.deploy b/pipelines/deploy/player/Jenkinsfile.deploy index bda6135f82..369b50ce6d 100644 --- a/pipelines/deploy/player/Jenkinsfile.deploy +++ b/pipelines/deploy/player/Jenkinsfile.deploy @@ -35,7 +35,7 @@ node() { if (params.image_tag == "") { // println "Image tag not specified, using the version specified in metadata.json" // image_tag = sh(returnStdout: true, script: 'jq -r .image_tag metadata.json').trim() - println "Image tag not specified, using the latest version + println "Image tag not specified, using the latest version" image_tag = "latest" } else From 52937bb671d86ad863e9e3fa3fe3f797a83ba4a8 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Wed, 26 Dec 2018 11:18:03 +0530 Subject: [PATCH 0558/1345] Issue # 000: DO-408 Reauth not required --- ansible/roles/acr-docker/tasks/main.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/ansible/roles/acr-docker/tasks/main.yml b/ansible/roles/acr-docker/tasks/main.yml index e793f691d9..5f03852dba 100644 --- a/ansible/roles/acr-docker/tasks/main.yml +++ b/ansible/roles/acr-docker/tasks/main.yml @@ -6,7 +6,6 @@ registry: "{{ vault_docker_registery_url }}" username: "{{ vault_docker_registery_user }}" password: "{{ vault_docker_registory }}" - reauth: yes - name: Pull image to registry docker_image: From 0d453873a5ab216b7e5709591ff49d34edae5d66 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Wed, 26 Dec 2018 11:22:48 +0530 Subject: [PATCH 0559/1345] feat: DO-408 Remove the latest tag option --- pipelines/deploy/player/Jenkinsfile.deploy | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/pipelines/deploy/player/Jenkinsfile.deploy b/pipelines/deploy/player/Jenkinsfile.deploy index 369b50ce6d..f9a07d8f7d 100644 --- a/pipelines/deploy/player/Jenkinsfile.deploy +++ b/pipelines/deploy/player/Jenkinsfile.deploy @@ -33,10 +33,8 @@ node() { image_name = params.image_name if (params.image_tag == "") { -// println "Image tag not specified, using the version specified in metadata.json" -// image_tag = sh(returnStdout: true, script: 'jq -r .image_tag metadata.json').trim() - println "Image tag not specified, using the latest version" - image_tag = "latest" + println "Image tag not specified, using the version specified in metadata.json" + image_tag = sh(returnStdout: true, script: 'jq -r .image_tag metadata.json').trim() } else image_tag = params.image_tag From 232159dca3ac4dad6904f2fa5566d79d15887e52 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Wed, 26 Dec 2018 11:33:58 +0530 Subject: [PATCH 0560/1345] feat: DO-408 Updating property keys --- properties.json | 19 +++++-------------- 1 file changed, 5 insertions(+), 14 deletions(-) diff --git a/properties.json b/properties.json index 2a18a303ef..13a26304de 100644 --- a/properties.json +++ b/properties.json @@ -3,34 +3,25 @@ "scmUrl": "https://github.com/ekstep/sunbird-devops.git", "vaultFile": "/home/ops/vault" }, - "push_player": { + "push": { "playbook": "docker_image_push.yml" }, - "push_learner": { - "playbook": "docker_image_push.yml" - }, - "push_telemetry": { - "playbook": "docker_image_push.yml" - }, - "push_content": { - "playbook": "docker_image_push.yml" - }, - "player_deploy": { + "player": { "playbook": "deploy.yml", "serviceName": "player", "deployExtraArgs": "deploy_stack=True" }, - "learner_deploy": { + "learner": { "playbook": "deploy.yml", "serviceName": "learner-service", "deployExtraArgs": "deploy_learner=True" }, - "telemetry_deploy": { + "telemetry": { "playbook": "deploy.yml", "serviceName": "telemetry-service", "deployExtraArgs": "deploy_telemetry=True" }, - "content_deploy": { + "content": { "playbook": "deploy.yml", "serviceName": "content-service", "deployExtraArgs": "deploy_content=True" From 0afa3aa34f43ae03a4e5f55b2c6f4fe7dd9bbde0 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Wed, 26 Dec 2018 12:29:40 +0530 Subject: [PATCH 0561/1345] feat: DO-408 Remove latest tag option --- ansible/docker_image_push.yml | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/ansible/docker_image_push.yml b/ansible/docker_image_push.yml index b5ecf2e6d6..7135af2744 100644 --- a/ansible/docker_image_push.yml +++ b/ansible/docker_image_push.yml @@ -13,8 +13,5 @@ - name: Push image to registry docker_image: - name: "{{ hub_org }}/{{ image_name }}:{{ item }}" + name: "{{ hub_org }}/{{ image_name }}:{{ image_tag }}" push: yes - with_items: - - "{{ image_tag }}" - - latest From 42a4d83d251c43a49d866f3a78aa53f55034e82b Mon Sep 17 00:00:00 2001 From: harshavardhnc Date: Wed, 26 Dec 2018 12:40:26 +0530 Subject: [PATCH 0562/1345] Issue #00 fix: removing telemetry_pdata_ver var since it will read directly by properties file --- .../roles/stack-sunbird/templates/sunbird_learner-service.env | 1 - 1 file changed, 1 deletion(-) diff --git a/ansible/roles/stack-sunbird/templates/sunbird_learner-service.env b/ansible/roles/stack-sunbird/templates/sunbird_learner-service.env index 406eb5ae75..c242ea6b0c 100644 --- a/ansible/roles/stack-sunbird/templates/sunbird_learner-service.env +++ b/ansible/roles/stack-sunbird/templates/sunbird_learner-service.env @@ -58,7 +58,6 @@ sunbird_api_base_url=http://content-service:5000 sunbird_authorization={{sunbird_api_auth_token}} telemetry_pdata_id={{sunbird_telemetry_pdata_id}} telemetry_pdata_pid=learner-service -telemetry_pdata_ver=1.7 sunbird_telemetry_base_url=http://telemetry-service:9001 telemetry_queue_threshold_value=100 sunbird_default_channel={{sunbird_default_channel}} From 096c090cfc3a6c81041de87ab83afdd1fd36ea02 Mon Sep 17 00:00:00 2001 From: harshavardhnc Date: Wed, 26 Dec 2018 12:49:01 +0530 Subject: [PATCH 0563/1345] Issue #00 fix: adding new learner service variable --- .../roles/stack-sunbird/templates/sunbird_learner-service.env | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/stack-sunbird/templates/sunbird_learner-service.env b/ansible/roles/stack-sunbird/templates/sunbird_learner-service.env index c242ea6b0c..a1e80f4d10 100644 --- a/ansible/roles/stack-sunbird/templates/sunbird_learner-service.env +++ b/ansible/roles/stack-sunbird/templates/sunbird_learner-service.env @@ -83,4 +83,4 @@ sunbird_course_batch_notification_enabled={{sunbird_course_batch_notification_en sunbird_course_batch_notification_signature={{sunbird_course_batch_notification_signature}} sunbird_otp_expiration={{sunbird_otp_expiration}} sunbird_otp_length={{sunbird_otp_length}} - +sunbird_content_azure_storage_container={{sunbird_content_azure_storage_container}} From eb4e45466c45c0c967885ee1ffd1fc1aff35124a Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Wed, 26 Dec 2018 13:43:31 +0530 Subject: [PATCH 0564/1345] feat: DO-408 hub org check moved to shared lib --- pipelines/deploy/player/Jenkinsfile.deploy | 3 --- 1 file changed, 3 deletions(-) diff --git a/pipelines/deploy/player/Jenkinsfile.deploy b/pipelines/deploy/player/Jenkinsfile.deploy index f9a07d8f7d..fdebc77f82 100644 --- a/pipelines/deploy/player/Jenkinsfile.deploy +++ b/pipelines/deploy/player/Jenkinsfile.deploy @@ -12,9 +12,6 @@ node() { if (values.parentProject == null && (params.parentProject == "" || params.parentProject == null)) error 'Please specify project name to copy metedata.json file as a parameter to job or set it as a Jenkins environment variable' - if (!env.hub_org) - error 'Please set a Jenkins environment variable named hub_org and value as sunbird' - if (values.parentProject != null) copyArtifacts filter: 'metadata.json', projectName: values.parentProject else if (params.parentProject != "" && params.parentProject != null) { From 6b9f5f4423b46e1a11ee9dd618d9dabe125c22e6 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Wed, 26 Dec 2018 16:33:03 +0530 Subject: [PATCH 0565/1345] feat: DO-408 Moving common items to shared lib --- pipelines/deploy/player/Jenkinsfile.deploy | 36 +--------------------- 1 file changed, 1 insertion(+), 35 deletions(-) diff --git a/pipelines/deploy/player/Jenkinsfile.deploy b/pipelines/deploy/player/Jenkinsfile.deploy index fdebc77f82..ac275f4519 100644 --- a/pipelines/deploy/player/Jenkinsfile.deploy +++ b/pipelines/deploy/player/Jenkinsfile.deploy @@ -7,41 +7,7 @@ node() { } stage('define variables') { - def values = setVariables() - - if (values.parentProject == null && (params.parentProject == "" || params.parentProject == null)) - error 'Please specify project name to copy metedata.json file as a parameter to job or set it as a Jenkins environment variable' - - if (values.parentProject != null) - copyArtifacts filter: 'metadata.json', projectName: values.parentProject - else if (params.parentProject != "" && params.parentProject != null) { - copyArtifacts filter: 'metadata.json', projectName: params.parentProject - values.put('parentProject', params.parentProject) - } - else - error 'Unable to determine project path to copy metadata.json file' - - if (params.image_name == "") { - println "Image name not specified, using the image name specified in metadata.json" - image_name = sh(returnStdout: true, script: 'jq -r .image_name metadata.json').trim() - println image_name - } - else - image_name = params.image_name - - if (params.image_tag == "") { - println "Image tag not specified, using the version specified in metadata.json" - image_tag = sh(returnStdout: true, script: 'jq -r .image_tag metadata.json').trim() - } - else - image_tag = params.image_tag - - agent = sh(returnStdout: true, script: 'jq -r .nodeName metadata.json').trim() - values.put('agent', agent) - values.put('image_name', image_name) - values.put('image_tag', image_tag) - values.put('hub_org', hub_org) - + def values = docker_service_variables() ansibleExtraArgs = """\ --tags "stack-sunbird" --extra-vars "hub_org=$hub_org image_name=$values.image_name image_tag=$values.image_tag service_name=$values.serviceName From ec6492e0d79dcaa3ec730515811ff78729cc3e0f Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Wed, 26 Dec 2018 16:33:13 +0530 Subject: [PATCH 0566/1345] feat: DO-408 Moving common items to shared lib --- pipelines/deploy/player/Jenkinsfile.push | 33 +----------------------- 1 file changed, 1 insertion(+), 32 deletions(-) diff --git a/pipelines/deploy/player/Jenkinsfile.push b/pipelines/deploy/player/Jenkinsfile.push index 68859979e8..b5a248e0d7 100644 --- a/pipelines/deploy/player/Jenkinsfile.push +++ b/pipelines/deploy/player/Jenkinsfile.push @@ -6,38 +6,7 @@ node(){ } stage('define variables') { - def values = setVariables() - if (values.parentProject == null && (params.parentProject == "" || params.parentProject == null)) - error 'Please specify project name to copy metedata.json file as a job parameter' - - if (values.parentProject != null) - copyArtifacts filter: 'metadata.json', projectName: values.parentProject - else if (params.parentProject != "" && params.parentProject != null) - copyArtifacts filter: 'metadata.json', projectName: params.parentProject - else - error 'Unable to determine project path to copy metadata.json file' - - if (params.image_name == "") { - println "Image name not specified, using the image name specified in metadata.json" - image_name = sh(returnStdout: true, script: 'jq -r .image_name metadata.json').trim() - println image_name - } - else - image_name = params.image_name - - if (params.image_tag == "") { - println "Image tag not specified, using the version specified in metadata.json" - image_tag = sh(returnStdout: true, script: 'jq -r .image_tag metadata.json').trim() - } - else - image_tag = params.image_tag - - agent = sh(returnStdout: true, script: 'jq -r .nodeName metadata.json').trim() - values.put('image_name', image_name) - values.put('image_tag', image_tag) - values.put('hub_org', hub_org) - values.put('agent', agent) - + def values = docker_service_variables() ansibleExtraArgs = """\ --extra-vars "hub_org=$hub_org image_name=$values.image_name image_tag=$values.image_tag" --vault-password-file $values.vaultFile From 07da24c88871c14d9ff3d7ae4c5be91b9e74d609 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Wed, 26 Dec 2018 16:44:31 +0530 Subject: [PATCH 0567/1345] feat: DO-408 renamed shared lib call --- pipelines/deploy/player/Jenkinsfile.push | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pipelines/deploy/player/Jenkinsfile.push b/pipelines/deploy/player/Jenkinsfile.push index b5a248e0d7..d35dfdd1c1 100644 --- a/pipelines/deploy/player/Jenkinsfile.push +++ b/pipelines/deploy/player/Jenkinsfile.push @@ -12,7 +12,7 @@ node(){ image_tag=$values.image_tag" --vault-password-file $values.vaultFile """.stripIndent().replace("\n"," ") values.put('ansibleExtraArgs', ansibleExtraArgs) - ansiblePlugin(values) + ansible_playbook_run(values) archiveArtifacts 'metadata.json' } } From e7c3f92d9f069e89c79f25a633f3f7a246447add Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Wed, 26 Dec 2018 16:44:56 +0530 Subject: [PATCH 0568/1345] feat: DO-408 rename shared lib call --- pipelines/deploy/player/Jenkinsfile.deploy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pipelines/deploy/player/Jenkinsfile.deploy b/pipelines/deploy/player/Jenkinsfile.deploy index ac275f4519..8a8aa818da 100644 --- a/pipelines/deploy/player/Jenkinsfile.deploy +++ b/pipelines/deploy/player/Jenkinsfile.deploy @@ -15,7 +15,7 @@ node() { """.stripIndent().replace("\n"," ") values.put('ansibleExtraArgs', ansibleExtraArgs) - ansiblePlugin(values) + ansible_playbook_run(values) archiveArtifacts 'metadata.json' } } From 595b84b6942f7cef5d4a1a78ac55c2f51980bdd0 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Thu, 27 Dec 2018 10:01:27 +0530 Subject: [PATCH 0569/1345] feat: DO-408 Testing first run --- pipelines/deploy/player/Jenkinsfile.push | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/pipelines/deploy/player/Jenkinsfile.push b/pipelines/deploy/player/Jenkinsfile.push index d35dfdd1c1..1bc524aed5 100644 --- a/pipelines/deploy/player/Jenkinsfile.push +++ b/pipelines/deploy/player/Jenkinsfile.push @@ -1,6 +1,16 @@ @Library('deploy-conf') _ node(){ try { + +// Testing module begin + + stage('first run'){ + println params + } + +// Testing module end + + stage('checkout public repo') { checkout scm } From c3ebafe21b8776d71d05dc90477a3c588198b96a Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Thu, 27 Dec 2018 10:10:10 +0530 Subject: [PATCH 0570/1345] feat: DO-408 Test first run --- pipelines/deploy/player/Jenkinsfile.push | 1 + 1 file changed, 1 insertion(+) diff --git a/pipelines/deploy/player/Jenkinsfile.push b/pipelines/deploy/player/Jenkinsfile.push index 1bc524aed5..4911f3d716 100644 --- a/pipelines/deploy/player/Jenkinsfile.push +++ b/pipelines/deploy/player/Jenkinsfile.push @@ -6,6 +6,7 @@ node(){ stage('first run'){ println params + println params.size() } // Testing module end From 4e1e2ffd3fe7951c49a135e5a820e38f8decafa8 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Thu, 27 Dec 2018 10:12:13 +0530 Subject: [PATCH 0571/1345] feat: DO-408 first run --- pipelines/deploy/player/Jenkinsfile.push | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/pipelines/deploy/player/Jenkinsfile.push b/pipelines/deploy/player/Jenkinsfile.push index 4911f3d716..f8d31a9595 100644 --- a/pipelines/deploy/player/Jenkinsfile.push +++ b/pipelines/deploy/player/Jenkinsfile.push @@ -7,6 +7,11 @@ node(){ stage('first run'){ println params println params.size() + + if (params.size() == 0) + properties([[$class: 'RebuildSettings', autoRebuild: false, rebuildDisabled: false], parameters([string(defaultValue: '', description: '', name: 'parent_project', trim: false), string(defaultValue: '', description: '', name: 'private_repo_branch', trim: false), string(defaultValue: '', description: '', name: 'image_name', trim: false), string(defaultValue: '', description: '', name: 'image_tag', trim: false)])]) + else + println "params OK" } // Testing module end From 8da826821cb33995f4459e0d1d18beb6f854392a Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Thu, 27 Dec 2018 10:16:09 +0530 Subject: [PATCH 0572/1345] feat: Do-408 test first run --- pipelines/deploy/player/Jenkinsfile.push | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/pipelines/deploy/player/Jenkinsfile.push b/pipelines/deploy/player/Jenkinsfile.push index f8d31a9595..0f4091bac8 100644 --- a/pipelines/deploy/player/Jenkinsfile.push +++ b/pipelines/deploy/player/Jenkinsfile.push @@ -8,8 +8,12 @@ node(){ println params println params.size() - if (params.size() == 0) - properties([[$class: 'RebuildSettings', autoRebuild: false, rebuildDisabled: false], parameters([string(defaultValue: '', description: '', name: 'parent_project', trim: false), string(defaultValue: '', description: '', name: 'private_repo_branch', trim: false), string(defaultValue: '', description: '', name: 'image_name', trim: false), string(defaultValue: '', description: '', name: 'image_tag', trim: false)])]) + if (params.size() == 0){ + properties([[$class: 'RebuildSettings', autoRebuild: false, rebuildDisabled: false], parameters([string(defaultValue: '', description: '', name: 'parent_project', trim: false), string(defaultValue: '', description: '', name: 'private_repo_branch', trim: false), string(defaultValue: '', description: '', name: 'image_name', trim: false), string(defaultValue: '', description: '', name: 'image_tag', trim: false)])]) + println "First run of the job. Parameters created. Stopping the current build. Please trigger new build and provide parameters if required" + currentBuild.result = 'SUCCESS' + return + } else println "params OK" } From c97b7a1bd5293e0b69d667be26c61a00ad1f6067 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Thu, 27 Dec 2018 10:24:45 +0530 Subject: [PATCH 0573/1345] feat: Do-408 test first run --- pipelines/deploy/player/Jenkinsfile.push | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/pipelines/deploy/player/Jenkinsfile.push b/pipelines/deploy/player/Jenkinsfile.push index 0f4091bac8..c2ce7b8591 100644 --- a/pipelines/deploy/player/Jenkinsfile.push +++ b/pipelines/deploy/player/Jenkinsfile.push @@ -2,12 +2,7 @@ node(){ try { -// Testing module begin - - stage('first run'){ - println params - println params.size() - +// Testing module begin if (params.size() == 0){ properties([[$class: 'RebuildSettings', autoRebuild: false, rebuildDisabled: false], parameters([string(defaultValue: '', description: '', name: 'parent_project', trim: false), string(defaultValue: '', description: '', name: 'private_repo_branch', trim: false), string(defaultValue: '', description: '', name: 'image_name', trim: false), string(defaultValue: '', description: '', name: 'image_tag', trim: false)])]) println "First run of the job. Parameters created. Stopping the current build. Please trigger new build and provide parameters if required" @@ -16,7 +11,7 @@ node(){ } else println "params OK" - } + // Testing module end From 34fafa792ce24eec1f2e816afc54f1f25d5e5549 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Thu, 27 Dec 2018 10:57:17 +0530 Subject: [PATCH 0574/1345] feat: Do-408 test first run --- pipelines/deploy/player/Jenkinsfile.push | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/pipelines/deploy/player/Jenkinsfile.push b/pipelines/deploy/player/Jenkinsfile.push index c2ce7b8591..28100bab69 100644 --- a/pipelines/deploy/player/Jenkinsfile.push +++ b/pipelines/deploy/player/Jenkinsfile.push @@ -5,6 +5,11 @@ node(){ // Testing module begin if (params.size() == 0){ properties([[$class: 'RebuildSettings', autoRebuild: false, rebuildDisabled: false], parameters([string(defaultValue: '', description: '', name: 'parent_project', trim: false), string(defaultValue: '', description: '', name: 'private_repo_branch', trim: false), string(defaultValue: '', description: '', name: 'image_name', trim: false), string(defaultValue: '', description: '', name: 'image_tag', trim: false)])]) + + ansiColor('xterm') { + println "First run of the job. Parameters created. Stopping the current build. Please trigger new build and provide parameters if required" + } + println "First run of the job. Parameters created. Stopping the current build. Please trigger new build and provide parameters if required" currentBuild.result = 'SUCCESS' return From b8ff72167ef673558ebf42cb4e1f2b0deb73a7bd Mon Sep 17 00:00:00 2001 From: Santhosh Gandham Date: Thu, 27 Dec 2018 16:27:41 +0530 Subject: [PATCH 0575/1345] #000: Issue Updating sunbird_lock_expiry_time value --- .../roles/stack-sunbird/templates/sunbird_content-service.env | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/stack-sunbird/templates/sunbird_content-service.env b/ansible/roles/stack-sunbird/templates/sunbird_content-service.env index b086a0c468..323777b2d1 100644 --- a/ansible/roles/stack-sunbird/templates/sunbird_content-service.env +++ b/ansible/roles/stack-sunbird/templates/sunbird_content-service.env @@ -44,4 +44,4 @@ sunbird_kafka_host={{sunbird_kafka_host}} sunbird_qrimage_topic={{sunbird_qrimage_topic}} #Release-1.13 -sunbird_lock_expiry_time=1800 +sunbird_lock_expiry_time={{sunbird_lock_expiry_time}} From 87a04c4fae1a62a1257faac8bd673f9b0ec8c869 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Fri, 28 Dec 2018 15:00:39 +0530 Subject: [PATCH 0576/1345] Issue #000 feat: Added more documentation for cassandra_backup --- deploy/cassandra_backup.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/deploy/cassandra_backup.py b/deploy/cassandra_backup.py index b47d84fa9b..135d6b3001 100755 --- a/deploy/cassandra_backup.py +++ b/deploy/cassandra_backup.py @@ -3,11 +3,20 @@ # Author: Rajesh Rajendran ''' -Create a snapshot and create tar ball in targetdirectory name +Create cassandra snapshot with specified name, +and create tar ball in targetdirectory name + +By default + +Cassandra data directory : /var/lib/cassandra/data +Snapshot name : cassandra_backup-YYYY-MM-DD +Backup name : cassandra_backup-YYYY-MM-DD.tar.gz usage: script snapshot_name eg: ./cassandra_backup.py + +for help ./cassandra_backup.py -h ''' from os import path, walk, sep, system, getcwd, makedirs From 5a4270c29e6aa28b91f0d0eb50ab52bbbe4fa02e Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Fri, 28 Dec 2018 15:23:59 +0530 Subject: [PATCH 0577/1345] Issue #000 feat: Added documentation for cassandra_restore --- deploy/cassandra_restore.py | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/deploy/cassandra_restore.py b/deploy/cassandra_restore.py index 9165527e6f..cb4e7ed40a 100755 --- a/deploy/cassandra_restore.py +++ b/deploy/cassandra_restore.py @@ -3,8 +3,22 @@ # Author: Rajesh Rajendran . """ + +This script will restore complete backup from the backup data folder. + To restore the cassandra database snapshot -usage: ./cassandra_restore.py --host snapshot_directory_name + +1. If it's an old cassandra instance, do the following else continue to step 2 + a. stop cassandra + b. delete the data + c. start cassandra + +2. Restore the schema + cqlsh -e "source 'backup_dir/db_schema.cql';" + +3. Restore the data + usage: ./cassandra_restore.py --host snapshot_directory_name + """ from os import walk, sep From 2cd06c7a0328e4bd6d6302ecba04439084b71f1e Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Fri, 28 Dec 2018 16:04:51 +0530 Subject: [PATCH 0578/1345] Issue #000 feat: Added documention for cassandra_restore --- deploy/cassandra_restore.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deploy/cassandra_restore.py b/deploy/cassandra_restore.py index cb4e7ed40a..1b3db53a34 100755 --- a/deploy/cassandra_restore.py +++ b/deploy/cassandra_restore.py @@ -10,7 +10,7 @@ 1. If it's an old cassandra instance, do the following else continue to step 2 a. stop cassandra - b. delete the data + b. delete the data (usually sudo rm -rf /var/lib/cassandra/*) c. start cassandra 2. Restore the schema From d450a07bea069eb33b29fdd372c134d1aa0909ca Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Fri, 28 Dec 2018 15:00:39 +0530 Subject: [PATCH 0579/1345] Issue #000 feat: Added more documentation for cassandra_backup --- deploy/cassandra_backup.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/deploy/cassandra_backup.py b/deploy/cassandra_backup.py index b47d84fa9b..135d6b3001 100755 --- a/deploy/cassandra_backup.py +++ b/deploy/cassandra_backup.py @@ -3,11 +3,20 @@ # Author: Rajesh Rajendran ''' -Create a snapshot and create tar ball in targetdirectory name +Create cassandra snapshot with specified name, +and create tar ball in targetdirectory name + +By default + +Cassandra data directory : /var/lib/cassandra/data +Snapshot name : cassandra_backup-YYYY-MM-DD +Backup name : cassandra_backup-YYYY-MM-DD.tar.gz usage: script snapshot_name eg: ./cassandra_backup.py + +for help ./cassandra_backup.py -h ''' from os import path, walk, sep, system, getcwd, makedirs From 3e3236e3d45514b6b026ea1602be7d4784cc736d Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Fri, 28 Dec 2018 15:23:59 +0530 Subject: [PATCH 0580/1345] Issue #000 feat: Added documentation for cassandra_restore --- deploy/cassandra_restore.py | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/deploy/cassandra_restore.py b/deploy/cassandra_restore.py index 9165527e6f..cb4e7ed40a 100755 --- a/deploy/cassandra_restore.py +++ b/deploy/cassandra_restore.py @@ -3,8 +3,22 @@ # Author: Rajesh Rajendran . """ + +This script will restore complete backup from the backup data folder. + To restore the cassandra database snapshot -usage: ./cassandra_restore.py --host snapshot_directory_name + +1. If it's an old cassandra instance, do the following else continue to step 2 + a. stop cassandra + b. delete the data + c. start cassandra + +2. Restore the schema + cqlsh -e "source 'backup_dir/db_schema.cql';" + +3. Restore the data + usage: ./cassandra_restore.py --host snapshot_directory_name + """ from os import walk, sep From 1832b2aeb4d723fa8178f950100bfa0cd1fe3d61 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Fri, 28 Dec 2018 16:04:51 +0530 Subject: [PATCH 0581/1345] Issue #000 feat: Added documention for cassandra_restore --- deploy/cassandra_restore.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deploy/cassandra_restore.py b/deploy/cassandra_restore.py index cb4e7ed40a..1b3db53a34 100755 --- a/deploy/cassandra_restore.py +++ b/deploy/cassandra_restore.py @@ -10,7 +10,7 @@ 1. If it's an old cassandra instance, do the following else continue to step 2 a. stop cassandra - b. delete the data + b. delete the data (usually sudo rm -rf /var/lib/cassandra/*) c. start cassandra 2. Restore the schema From 057acb62e9077a55d237f659978564579021b522 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Fri, 28 Dec 2018 17:40:22 +0530 Subject: [PATCH 0582/1345] Issue #000 feat: flac8 complient. --- deploy/cassandra_restore.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/deploy/cassandra_restore.py b/deploy/cassandra_restore.py index 1b3db53a34..9d5ab98745 100755 --- a/deploy/cassandra_restore.py +++ b/deploy/cassandra_restore.py @@ -14,7 +14,7 @@ c. start cassandra 2. Restore the schema - cqlsh -e "source 'backup_dir/db_schema.cql';" + cqlsh -e "source 'backup_dir/db_schema.cql';" 3. Restore the data usage: ./cassandra_restore.py --host snapshot_directory_name @@ -23,8 +23,7 @@ from os import walk, sep from subprocess import STDOUT, call -from argparse import ArgumentParser, SUPPRESS -from socket import gethostbyname, gethostname +from argparse import ArgumentParser parser = ArgumentParser(description="Restore cassandra snapshot") parser.add_argument("--host", default="127.0.0.1", help="ip address of cassandra instance. \ @@ -34,6 +33,6 @@ root_levels = args.snapshotdir.count(sep) for root, dirs, files in walk(args.snapshotdir): - if root.count(sep) == root_levels + 2: + if root.count(sep) == root_levels + 2: print(root) call(["sstableloader", "-v", "-d", args.host, root], stderr=STDOUT) From 27d40e0420c2e1e0a31a50ecb50448a67aec50c4 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Fri, 28 Dec 2018 17:40:22 +0530 Subject: [PATCH 0583/1345] Issue #000 feat: flac8 complient. --- deploy/cassandra_restore.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/deploy/cassandra_restore.py b/deploy/cassandra_restore.py index 1b3db53a34..9d5ab98745 100755 --- a/deploy/cassandra_restore.py +++ b/deploy/cassandra_restore.py @@ -14,7 +14,7 @@ c. start cassandra 2. Restore the schema - cqlsh -e "source 'backup_dir/db_schema.cql';" + cqlsh -e "source 'backup_dir/db_schema.cql';" 3. Restore the data usage: ./cassandra_restore.py --host snapshot_directory_name @@ -23,8 +23,7 @@ from os import walk, sep from subprocess import STDOUT, call -from argparse import ArgumentParser, SUPPRESS -from socket import gethostbyname, gethostname +from argparse import ArgumentParser parser = ArgumentParser(description="Restore cassandra snapshot") parser.add_argument("--host", default="127.0.0.1", help="ip address of cassandra instance. \ @@ -34,6 +33,6 @@ root_levels = args.snapshotdir.count(sep) for root, dirs, files in walk(args.snapshotdir): - if root.count(sep) == root_levels + 2: + if root.count(sep) == root_levels + 2: print(root) call(["sstableloader", "-v", "-d", args.host, root], stderr=STDOUT) From 40a652a3eee434481869cd5a21d64177ce57eacf Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Fri, 28 Dec 2018 18:53:36 +0530 Subject: [PATCH 0584/1345] Issue #000 feat: flac8 complient. --- deploy/cassandra_backup.py | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/deploy/cassandra_backup.py b/deploy/cassandra_backup.py index 135d6b3001..2978d1f2d4 100755 --- a/deploy/cassandra_backup.py +++ b/deploy/cassandra_backup.py @@ -6,7 +6,7 @@ Create cassandra snapshot with specified name, and create tar ball in targetdirectory name -By default +By default Cassandra data directory : /var/lib/cassandra/data Snapshot name : cassandra_backup-YYYY-MM-DD @@ -19,8 +19,8 @@ for help ./cassandra_backup.py -h ''' -from os import path, walk, sep, system, getcwd, makedirs -from argparse import ArgumentParser +from os import walk, sep, system, getcwd, makedirs +from argparse import ArgumentParser from shutil import rmtree, ignore_patterns, copytree from re import match, compile from sys import exit @@ -28,15 +28,20 @@ from time import strftime parser = ArgumentParser(description="Create a snapshot and create tar ball inside tardirectory") -parser.add_argument("-d","--datadirectory", metavar="datadir", default='/var/lib/cassandra/data', help="Path to cassadandra keyspaces. Default /var/lib/cassadra/data") -parser.add_argument("-s","--snapshotname", metavar="snapshotname", default="cassandra_backup-"+strftime("%Y-%m-%d"), help="Name with which snapshot to be taken. Default {}".format("cassandra_backup-"+strftime("%Y-%m-%d"))) -parser.add_argument("-t","--tardirectory", metavar="tardir", default=getcwd(), help="Path to create the tarball. Default {}".format(getcwd())) +parser.add_argument("-d", "--datadirectory", metavar="datadir", default='/var/lib/cassandra/data', + help="Path to cassadandra keyspaces. Default /var/lib/cassadra/data") +parser.add_argument("-s", "--snapshotname", metavar="snapshotname", + default="cassandra_backup-"+strftime("%Y-%m-%d"), + help="Name with which snapshot to be taken. Default {}".format("cassandra_backup-"+strftime("%Y-%m-%d"))) +parser.add_argument("-t", "--tardirectory", metavar="tardir", + default=getcwd(), help="Path to create the tarball. Default {}".format(getcwd())) args = parser.parse_args() # Create temporary directory to copy data -tmpdir=mkdtemp() +tmpdir = mkdtemp() makedirs(tmpdir+sep+"cassandra_backup") + def copy(): ''' Copying the data sanpshots to the target directory @@ -46,7 +51,7 @@ def copy(): try: for root, dirs, files in walk(args.datadirectory): - root_target_dir=tmpdir+sep+"cassandra_backup"+sep+sep.join(root.split(sep)[root_levels+1:-2]) + root_target_dir = tmpdir+sep+"cassandra_backup"+sep+sep.join(root.split(sep)[root_levels+1:-2]) if match(ignore_list, root_target_dir): continue if root.split(sep)[-1] == args.snapshotname: @@ -54,6 +59,7 @@ def copy(): except Exception as e: print(e) + # Creating schema command = "cqlsh -e 'DESC SCHEMA' > {}/cassandra_backup/db_schema.cql".format(tmpdir) rc = system(command) @@ -75,4 +81,4 @@ def copy(): system(command) # Cleaning up backup directory rmtree(tmpdir) - print("Cassandra backup completed and stored in {}/{}.tar.gz".format(args.tardirectory,args.snapshotname)) + print("Cassandra backup completed and stored in {}/{}.tar.gz".format(args.tardirectory, args.snapshotname)) From ba2f04b7c477da2ff6c862dce7b84de485d0494f Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Fri, 28 Dec 2018 18:53:36 +0530 Subject: [PATCH 0585/1345] Issue #000 feat: flac8 complient. --- deploy/cassandra_backup.py | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/deploy/cassandra_backup.py b/deploy/cassandra_backup.py index 135d6b3001..2978d1f2d4 100755 --- a/deploy/cassandra_backup.py +++ b/deploy/cassandra_backup.py @@ -6,7 +6,7 @@ Create cassandra snapshot with specified name, and create tar ball in targetdirectory name -By default +By default Cassandra data directory : /var/lib/cassandra/data Snapshot name : cassandra_backup-YYYY-MM-DD @@ -19,8 +19,8 @@ for help ./cassandra_backup.py -h ''' -from os import path, walk, sep, system, getcwd, makedirs -from argparse import ArgumentParser +from os import walk, sep, system, getcwd, makedirs +from argparse import ArgumentParser from shutil import rmtree, ignore_patterns, copytree from re import match, compile from sys import exit @@ -28,15 +28,20 @@ from time import strftime parser = ArgumentParser(description="Create a snapshot and create tar ball inside tardirectory") -parser.add_argument("-d","--datadirectory", metavar="datadir", default='/var/lib/cassandra/data', help="Path to cassadandra keyspaces. Default /var/lib/cassadra/data") -parser.add_argument("-s","--snapshotname", metavar="snapshotname", default="cassandra_backup-"+strftime("%Y-%m-%d"), help="Name with which snapshot to be taken. Default {}".format("cassandra_backup-"+strftime("%Y-%m-%d"))) -parser.add_argument("-t","--tardirectory", metavar="tardir", default=getcwd(), help="Path to create the tarball. Default {}".format(getcwd())) +parser.add_argument("-d", "--datadirectory", metavar="datadir", default='/var/lib/cassandra/data', + help="Path to cassadandra keyspaces. Default /var/lib/cassadra/data") +parser.add_argument("-s", "--snapshotname", metavar="snapshotname", + default="cassandra_backup-"+strftime("%Y-%m-%d"), + help="Name with which snapshot to be taken. Default {}".format("cassandra_backup-"+strftime("%Y-%m-%d"))) +parser.add_argument("-t", "--tardirectory", metavar="tardir", + default=getcwd(), help="Path to create the tarball. Default {}".format(getcwd())) args = parser.parse_args() # Create temporary directory to copy data -tmpdir=mkdtemp() +tmpdir = mkdtemp() makedirs(tmpdir+sep+"cassandra_backup") + def copy(): ''' Copying the data sanpshots to the target directory @@ -46,7 +51,7 @@ def copy(): try: for root, dirs, files in walk(args.datadirectory): - root_target_dir=tmpdir+sep+"cassandra_backup"+sep+sep.join(root.split(sep)[root_levels+1:-2]) + root_target_dir = tmpdir+sep+"cassandra_backup"+sep+sep.join(root.split(sep)[root_levels+1:-2]) if match(ignore_list, root_target_dir): continue if root.split(sep)[-1] == args.snapshotname: @@ -54,6 +59,7 @@ def copy(): except Exception as e: print(e) + # Creating schema command = "cqlsh -e 'DESC SCHEMA' > {}/cassandra_backup/db_schema.cql".format(tmpdir) rc = system(command) @@ -75,4 +81,4 @@ def copy(): system(command) # Cleaning up backup directory rmtree(tmpdir) - print("Cassandra backup completed and stored in {}/{}.tar.gz".format(args.tardirectory,args.snapshotname)) + print("Cassandra backup completed and stored in {}/{}.tar.gz".format(args.tardirectory, args.snapshotname)) From ffef230aa4d63ab3fed92f996cb6707092b471ce Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Fri, 28 Dec 2018 19:05:06 +0530 Subject: [PATCH 0586/1345] Issue #000 chore: Added sunbird_help_link_visibility --- ansible/roles/stack-sunbird/templates/sunbird_player.env | 1 + 1 file changed, 1 insertion(+) diff --git a/ansible/roles/stack-sunbird/templates/sunbird_player.env b/ansible/roles/stack-sunbird/templates/sunbird_player.env index cbd7202ba2..102bbff141 100644 --- a/ansible/roles/stack-sunbird/templates/sunbird_player.env +++ b/ansible/roles/stack-sunbird/templates/sunbird_player.env @@ -44,3 +44,4 @@ sunbird_google_oauth_clientSecret={{sunbird_google_oauth_clientSecret}} sunbird_google_captcha_site_key={{sunbird_google_captcha_site_key}} sunbird_google_keycloak_client_id={{sunbird_google_keycloak_client_id}} sunbird_google_keycloak_secret={{sunbird_google_keycloak_secret}} +sunbird_help_link_visibility={{sunbird_help_link_visibility|default('FALSE')}} From 8e691eff988ce85a0b0351ea83397a5d96efb3f8 Mon Sep 17 00:00:00 2001 From: S M Y Date: Sun, 30 Dec 2018 01:45:58 +0530 Subject: [PATCH 0587/1345] Issue #000 var: added missing variable --- ansible/inventories/sample/group_vars/sample | 1 + 1 file changed, 1 insertion(+) diff --git a/ansible/inventories/sample/group_vars/sample b/ansible/inventories/sample/group_vars/sample index 0171a9c45f..a5ec70503c 100644 --- a/ansible/inventories/sample/group_vars/sample +++ b/ansible/inventories/sample/group_vars/sample @@ -382,3 +382,4 @@ sunbird_google_oauth_clientSecret: sunbird_google_captcha_site_key: sunbird_google_keycloak_client_id: sunbird_google_keycloak_secret: +sunbird_content_azure_storage_container: From dc9f56482b68278698e958385b4552c208ef426a Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Mon, 31 Dec 2018 12:06:25 +0530 Subject: [PATCH 0588/1345] Update Jenkinsfile.push --- pipelines/deploy/player/Jenkinsfile.push | 31 ++++++++++++++++-------- 1 file changed, 21 insertions(+), 10 deletions(-) diff --git a/pipelines/deploy/player/Jenkinsfile.push b/pipelines/deploy/player/Jenkinsfile.push index 28100bab69..8aa9f29998 100644 --- a/pipelines/deploy/player/Jenkinsfile.push +++ b/pipelines/deploy/player/Jenkinsfile.push @@ -3,17 +3,28 @@ node(){ try { // Testing module begin - if (params.size() == 0){ - properties([[$class: 'RebuildSettings', autoRebuild: false, rebuildDisabled: false], parameters([string(defaultValue: '', description: '', name: 'parent_project', trim: false), string(defaultValue: '', description: '', name: 'private_repo_branch', trim: false), string(defaultValue: '', description: '', name: 'image_name', trim: false), string(defaultValue: '', description: '', name: 'image_tag', trim: false)])]) - - ansiColor('xterm') { - println "First run of the job. Parameters created. Stopping the current build. Please trigger new build and provide parameters if required" - } + if (params.size() == 0){ + properties([[$class: 'RebuildSettings', autoRebuild: false, rebuildDisabled: false], + parameters([[$class: 'WHideParameterDefinition', defaultValue: 'player', description: '', + name: 'docker_service_name'], string(defaultValue: '', description: '', name: 'docker_service_version', + trim: false), string(defaultValue: '', description: '', name: 'copy_metadata_from', trim: false), + [$class: 'WHideParameterDefinition', defaultValue: 'sunbirded.azurecr.io/sunbirded', description: '', + name: 'hub_org'], [$class: 'CascadeChoiceParameter', choiceType: 'PT_SINGLE_SELECT', description: '', + filterLength: 1, filterable: false, name: 'inventory_source', randomName: 'choice-parameter-330141505859086', + referencedParameters: '', script: [$class: 'GroovyScript', fallbackScript: [classpath: [], sandbox: + false, script: ''], script: [classpath: [], sandbox: false, script: 'return [\'GitHub\', \'Local\']']]], + [$class: 'DynamicReferenceParameter', choiceType: 'ET_FORMATTED_HTML', description: '', name: 'git_info', + omitValueField: false, randomName: 'choice-parameter-330141508543294', referencedParameters: 'inventory_source', + script: [$class: 'GroovyScript', fallbackScript: [classpath: [], sandbox: false, script: '''def gitUrl = "" + + ansiColor('xterm') { + println "First run of the job. Parameters created. Stopping the current build. Please trigger new build and provide parameters if required" + } - println "First run of the job. Parameters created. Stopping the current build. Please trigger new build and provide parameters if required" - currentBuild.result = 'SUCCESS' - return - } + println "First run of the job. Parameters created. Stopping the current build. Please trigger new build and provide parameters if required" + currentBuild.result = 'SUCCESS' + return + } else println "params OK" From bb4a0aed8975a03bf3d3b01db49ab60975cc8266 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Mon, 31 Dec 2018 12:13:58 +0530 Subject: [PATCH 0589/1345] Update Jenkinsfile.push --- pipelines/deploy/player/Jenkinsfile.push | 34 +++++++++++++++++------- 1 file changed, 25 insertions(+), 9 deletions(-) diff --git a/pipelines/deploy/player/Jenkinsfile.push b/pipelines/deploy/player/Jenkinsfile.push index 8aa9f29998..ff3246fa48 100644 --- a/pipelines/deploy/player/Jenkinsfile.push +++ b/pipelines/deploy/player/Jenkinsfile.push @@ -11,22 +11,38 @@ node(){ [$class: 'WHideParameterDefinition', defaultValue: 'sunbirded.azurecr.io/sunbirded', description: '', name: 'hub_org'], [$class: 'CascadeChoiceParameter', choiceType: 'PT_SINGLE_SELECT', description: '', filterLength: 1, filterable: false, name: 'inventory_source', randomName: 'choice-parameter-330141505859086', - referencedParameters: '', script: [$class: 'GroovyScript', fallbackScript: [classpath: [], sandbox: - false, script: ''], script: [classpath: [], sandbox: false, script: 'return [\'GitHub\', \'Local\']']]], - [$class: 'DynamicReferenceParameter', choiceType: 'ET_FORMATTED_HTML', description: '', name: 'git_info', - omitValueField: false, randomName: 'choice-parameter-330141508543294', referencedParameters: 'inventory_source', - script: [$class: 'GroovyScript', fallbackScript: [classpath: [], sandbox: false, script: '''def gitUrl = "" + referencedParameters: '', script: [$class: 'GroovyScript', fallbackScript: [classpath: [], sandbox: false, + script: ''], script: [classpath: [], sandbox: false, script: 'return [\'GitHub\', \'Local\']']]], + [$class: 'DynamicReferenceParameter', choiceType: 'ET_FORMATTED_HTML', description: '', + name: 'git_info', omitValueField: false, randomName: 'choice-parameter-330141508543294', + referencedParameters: 'inventory_source', script: [$class: 'GroovyScript', fallbackScript: + [classpath: [], sandbox: false, script: '''def gitUrl = "" def gitBranch = "" + + if(inventory_source.equals(\'GitHub\')){ + return "Git URL Branch"} + else + return "Not Applicable"'''], script: [classpath: [], sandbox: false, script: ''' + + def gitUrl = "${private_repo_url}" + def gitBranch = "${private_repo_branch}" + if(inventory_source.equals(\'GitHub\')){ + return "Git URL Branch"} + else + return "Not Applicable"''']]], string(defaultValue: '', + description: '', name: 'inventory_path', trim: false)])]) ansiColor('xterm') { println "First run of the job. Parameters created. Stopping the current build. Please trigger new build and provide parameters if required" } - - println "First run of the job. Parameters created. Stopping the current build. Please trigger new build and provide parameters if required" currentBuild.result = 'SUCCESS' return } - else - println "params OK" + else + println "params OK" // Testing module end From 30b0bbe3b16843bdeb602292087bc70494ea1ab9 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Mon, 31 Dec 2018 12:16:50 +0530 Subject: [PATCH 0590/1345] Update Jenkinsfile.push --- pipelines/deploy/player/Jenkinsfile.push | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/pipelines/deploy/player/Jenkinsfile.push b/pipelines/deploy/player/Jenkinsfile.push index ff3246fa48..95986b45db 100644 --- a/pipelines/deploy/player/Jenkinsfile.push +++ b/pipelines/deploy/player/Jenkinsfile.push @@ -16,24 +16,21 @@ node(){ [$class: 'DynamicReferenceParameter', choiceType: 'ET_FORMATTED_HTML', description: '', name: 'git_info', omitValueField: false, randomName: 'choice-parameter-330141508543294', referencedParameters: 'inventory_source', script: [$class: 'GroovyScript', fallbackScript: - [classpath: [], sandbox: false, script: '''def gitUrl = "" def gitBranch = "" - + [classpath: [], sandbox: false, script: ''' + + def gitUrl = "" + def gitBranch = "" if(inventory_source.equals(\'GitHub\')){ - return "Git URL Branch"} + return "Git URL Branch"} else return "Not Applicable"'''], script: [classpath: [], sandbox: false, script: ''' def gitUrl = "${private_repo_url}" def gitBranch = "${private_repo_branch}" if(inventory_source.equals(\'GitHub\')){ - return "Git URL Branch"} + return "Git URL Branch"} else - return "Not Applicable"''']]], string(defaultValue: '', - description: '', name: 'inventory_path', trim: false)])]) + return "Not Applicable"''']]], string(defaultValue: '', description: '', name: 'inventory_path', trim: false)])]) ansiColor('xterm') { println "First run of the job. Parameters created. Stopping the current build. Please trigger new build and provide parameters if required" From d8520eca65e42d2796a539ac910c980ef37f9ee3 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Mon, 31 Dec 2018 12:20:49 +0530 Subject: [PATCH 0591/1345] Update Jenkinsfile.push --- pipelines/deploy/player/Jenkinsfile.push | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/pipelines/deploy/player/Jenkinsfile.push b/pipelines/deploy/player/Jenkinsfile.push index 95986b45db..99b0a2fd50 100644 --- a/pipelines/deploy/player/Jenkinsfile.push +++ b/pipelines/deploy/player/Jenkinsfile.push @@ -15,17 +15,16 @@ node(){ script: ''], script: [classpath: [], sandbox: false, script: 'return [\'GitHub\', \'Local\']']]], [$class: 'DynamicReferenceParameter', choiceType: 'ET_FORMATTED_HTML', description: '', name: 'git_info', omitValueField: false, randomName: 'choice-parameter-330141508543294', - referencedParameters: 'inventory_source', script: [$class: 'GroovyScript', fallbackScript: - [classpath: [], sandbox: false, script: ''' + referencedParameters: 'inventory_source', - def gitUrl = "" + script: [$class: 'GroovyScript', fallbackScript: [classpath: [], sandbox: false, script: '''def gitUrl = "" def gitBranch = "" if(inventory_source.equals(\'GitHub\')){ return "Git URL Branch"} else - return "Not Applicable"'''], script: [classpath: [], sandbox: false, script: ''' - - def gitUrl = "${private_repo_url}" + return "Not Applicable"'''], + + script: [classpath: [], sandbox: false, script: '''def gitUrl = "${private_repo_url}" def gitBranch = "${private_repo_branch}" if(inventory_source.equals(\'GitHub\')){ return "Git URL Branch"} From 15bdd9a4e46488d6f63016559928659367c0fa93 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Mon, 31 Dec 2018 12:27:46 +0530 Subject: [PATCH 0592/1345] Update Jenkinsfile.push --- pipelines/deploy/player/Jenkinsfile.push | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/pipelines/deploy/player/Jenkinsfile.push b/pipelines/deploy/player/Jenkinsfile.push index 99b0a2fd50..695e8a6570 100644 --- a/pipelines/deploy/player/Jenkinsfile.push +++ b/pipelines/deploy/player/Jenkinsfile.push @@ -6,26 +6,25 @@ node(){ if (params.size() == 0){ properties([[$class: 'RebuildSettings', autoRebuild: false, rebuildDisabled: false], parameters([[$class: 'WHideParameterDefinition', defaultValue: 'player', description: '', - name: 'docker_service_name'], string(defaultValue: '', description: '', name: 'docker_service_version', - trim: false), string(defaultValue: '', description: '', name: 'copy_metadata_from', trim: false), + name: 'docker_service_name'], + string(defaultValue: '', description: '', name: 'docker_service_version', trim: false), + string(defaultValue: '', description: '', name: 'copy_metadata_from', trim: false), [$class: 'WHideParameterDefinition', defaultValue: 'sunbirded.azurecr.io/sunbirded', description: '', - name: 'hub_org'], [$class: 'CascadeChoiceParameter', choiceType: 'PT_SINGLE_SELECT', description: '', + name: 'hub_org'], + [$class: 'CascadeChoiceParameter', choiceType: 'PT_SINGLE_SELECT', description: '', filterLength: 1, filterable: false, name: 'inventory_source', randomName: 'choice-parameter-330141505859086', referencedParameters: '', script: [$class: 'GroovyScript', fallbackScript: [classpath: [], sandbox: false, script: ''], script: [classpath: [], sandbox: false, script: 'return [\'GitHub\', \'Local\']']]], [$class: 'DynamicReferenceParameter', choiceType: 'ET_FORMATTED_HTML', description: '', name: 'git_info', omitValueField: false, randomName: 'choice-parameter-330141508543294', referencedParameters: 'inventory_source', - - script: [$class: 'GroovyScript', fallbackScript: [classpath: [], sandbox: false, script: '''def gitUrl = "" - def gitBranch = "" + script: [$class: 'GroovyScript', fallbackScript: [classpath: [], sandbox: false, script: '''def gitUrl = "" def gitBranch = "" if(inventory_source.equals(\'GitHub\')){ return "Git URL Branch"} else return "Not Applicable"'''], - script: [classpath: [], sandbox: false, script: '''def gitUrl = "${private_repo_url}" - def gitBranch = "${private_repo_branch}" + script: [classpath: [], sandbox: false, script: '''def gitUrl = "${private_repo_url}" def gitBranch = "${private_repo_branch}" if(inventory_source.equals(\'GitHub\')){ return "Git URL Branch"} else From 11217d2104ac3e31b364d2654d0ed4f40f9da59d Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Mon, 31 Dec 2018 12:30:44 +0530 Subject: [PATCH 0593/1345] Update Jenkinsfile.push --- pipelines/deploy/player/Jenkinsfile.push | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/pipelines/deploy/player/Jenkinsfile.push b/pipelines/deploy/player/Jenkinsfile.push index 695e8a6570..e4a077008b 100644 --- a/pipelines/deploy/player/Jenkinsfile.push +++ b/pipelines/deploy/player/Jenkinsfile.push @@ -18,13 +18,17 @@ node(){ [$class: 'DynamicReferenceParameter', choiceType: 'ET_FORMATTED_HTML', description: '', name: 'git_info', omitValueField: false, randomName: 'choice-parameter-330141508543294', referencedParameters: 'inventory_source', - script: [$class: 'GroovyScript', fallbackScript: [classpath: [], sandbox: false, script: '''def gitUrl = "" def gitBranch = "" + script: [$class: 'GroovyScript', fallbackScript: [classpath: [], sandbox: false, script: + '''def gitUrl = "" + def gitBranch = "" if(inventory_source.equals(\'GitHub\')){ return "Git URL Branch"} else return "Not Applicable"'''], - script: [classpath: [], sandbox: false, script: '''def gitUrl = "${private_repo_url}" def gitBranch = "${private_repo_branch}" + script: [classpath: [], sandbox: false, script: + '''def gitUrl = "${private_repo_url}" + def gitBranch = "${private_repo_branch}" if(inventory_source.equals(\'GitHub\')){ return "Git URL Branch"} else From e623ffe32cb4c0af5efc8174a2e27f923cdbce9d Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Mon, 31 Dec 2018 12:37:12 +0530 Subject: [PATCH 0594/1345] Update Jenkinsfile.push --- pipelines/deploy/player/Jenkinsfile.push | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/pipelines/deploy/player/Jenkinsfile.push b/pipelines/deploy/player/Jenkinsfile.push index e4a077008b..87f13b1ad0 100644 --- a/pipelines/deploy/player/Jenkinsfile.push +++ b/pipelines/deploy/player/Jenkinsfile.push @@ -18,21 +18,22 @@ node(){ [$class: 'DynamicReferenceParameter', choiceType: 'ET_FORMATTED_HTML', description: '', name: 'git_info', omitValueField: false, randomName: 'choice-parameter-330141508543294', referencedParameters: 'inventory_source', + script: [$class: 'GroovyScript', fallbackScript: [classpath: [], sandbox: false, script: - '''def gitUrl = "" - def gitBranch = "" + '''def gitUrl = "", gitBranch = "" if(inventory_source.equals(\'GitHub\')){ - return "Git URL Branch"} + return "Git URL Branch"} else - return "Not Applicable"'''], + return "Not Applicable"'''], - script: [classpath: [], sandbox: false, script: - '''def gitUrl = "${private_repo_url}" - def gitBranch = "${private_repo_branch}" - if(inventory_source.equals(\'GitHub\')){ - return "Git URL Branch"} - else - return "Not Applicable"''']]], string(defaultValue: '', description: '', name: 'inventory_path', trim: false)])]) + script: [classpath: [], sandbox: false, script: + '''def gitUrl = "${private_repo_url}", gitBranch = "${private_repo_branch}" + if(inventory_source.equals(\'GitHub\')){ + return "Git URL Branch"} + else + return "Not Applicable"''']]], + + string(defaultValue: '', description: '', name: 'inventory_path', trim: false)])]) ansiColor('xterm') { println "First run of the job. Parameters created. Stopping the current build. Please trigger new build and provide parameters if required" From c5f455f4d28160b8c2101535dea7bb1b6f6560ed Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Mon, 31 Dec 2018 12:43:28 +0530 Subject: [PATCH 0595/1345] Update Jenkinsfile.push --- pipelines/deploy/player/Jenkinsfile.push | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pipelines/deploy/player/Jenkinsfile.push b/pipelines/deploy/player/Jenkinsfile.push index 87f13b1ad0..b0bee5cce4 100644 --- a/pipelines/deploy/player/Jenkinsfile.push +++ b/pipelines/deploy/player/Jenkinsfile.push @@ -4,8 +4,9 @@ node(){ // Testing module begin if (params.size() == 0){ + env.jobname = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() properties([[$class: 'RebuildSettings', autoRebuild: false, rebuildDisabled: false], - parameters([[$class: 'WHideParameterDefinition', defaultValue: 'player', description: '', + parameters([[$class: 'WHideParameterDefinition', defaultValue: "$jobname", description: '', name: 'docker_service_name'], string(defaultValue: '', description: '', name: 'docker_service_version', trim: false), string(defaultValue: '', description: '', name: 'copy_metadata_from', trim: false), From dc6739ad3d656680911d7729125f1d74e00b37d3 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Mon, 31 Dec 2018 14:57:16 +0530 Subject: [PATCH 0596/1345] feat: DO-431 Check dry run --- pipelines/deploy/player/Jenkinsfile.push | 52 +----------------------- 1 file changed, 2 insertions(+), 50 deletions(-) diff --git a/pipelines/deploy/player/Jenkinsfile.push b/pipelines/deploy/player/Jenkinsfile.push index b0bee5cce4..1985fdd8e3 100644 --- a/pipelines/deploy/player/Jenkinsfile.push +++ b/pipelines/deploy/player/Jenkinsfile.push @@ -1,58 +1,10 @@ @Library('deploy-conf') _ node(){ - try { - -// Testing module begin - if (params.size() == 0){ - env.jobname = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() - properties([[$class: 'RebuildSettings', autoRebuild: false, rebuildDisabled: false], - parameters([[$class: 'WHideParameterDefinition', defaultValue: "$jobname", description: '', - name: 'docker_service_name'], - string(defaultValue: '', description: '', name: 'docker_service_version', trim: false), - string(defaultValue: '', description: '', name: 'copy_metadata_from', trim: false), - [$class: 'WHideParameterDefinition', defaultValue: 'sunbirded.azurecr.io/sunbirded', description: '', - name: 'hub_org'], - [$class: 'CascadeChoiceParameter', choiceType: 'PT_SINGLE_SELECT', description: '', - filterLength: 1, filterable: false, name: 'inventory_source', randomName: 'choice-parameter-330141505859086', - referencedParameters: '', script: [$class: 'GroovyScript', fallbackScript: [classpath: [], sandbox: false, - script: ''], script: [classpath: [], sandbox: false, script: 'return [\'GitHub\', \'Local\']']]], - [$class: 'DynamicReferenceParameter', choiceType: 'ET_FORMATTED_HTML', description: '', - name: 'git_info', omitValueField: false, randomName: 'choice-parameter-330141508543294', - referencedParameters: 'inventory_source', - - script: [$class: 'GroovyScript', fallbackScript: [classpath: [], sandbox: false, script: - '''def gitUrl = "", gitBranch = "" - if(inventory_source.equals(\'GitHub\')){ - return "Git URL Branch"} - else - return "Not Applicable"'''], - - script: [classpath: [], sandbox: false, script: - '''def gitUrl = "${private_repo_url}", gitBranch = "${private_repo_branch}" - if(inventory_source.equals(\'GitHub\')){ - return "Git URL Branch"} - else - return "Not Applicable"''']]], - - string(defaultValue: '', description: '', name: 'inventory_path', trim: false)])]) - - ansiColor('xterm') { - println "First run of the job. Parameters created. Stopping the current build. Please trigger new build and provide parameters if required" - } - currentBuild.result = 'SUCCESS' - return - } - else - println "params OK" - - -// Testing module end - - + try { stage('checkout public repo') { checkout scm } - + stage('define variables') { def values = docker_service_variables() ansibleExtraArgs = """\ From 95e171f206afcc0a7978a81f80d547260495e1eb Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Mon, 31 Dec 2018 15:07:15 +0530 Subject: [PATCH 0597/1345] feat: DO-431 First run check --- pipelines/deploy/player/Jenkinsfile.push | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/pipelines/deploy/player/Jenkinsfile.push b/pipelines/deploy/player/Jenkinsfile.push index 1985fdd8e3..ce9773cf75 100644 --- a/pipelines/deploy/player/Jenkinsfile.push +++ b/pipelines/deploy/player/Jenkinsfile.push @@ -6,7 +6,11 @@ node(){ } stage('define variables') { - def values = docker_service_variables() + def values = docker_service_variables() + if(values == "first run"){ + currentBuild.result = 'SUCCESS' + return + } ansibleExtraArgs = """\ --extra-vars "hub_org=$hub_org image_name=$values.image_name image_tag=$values.image_tag" --vault-password-file $values.vaultFile From 4f4cb37a2f41b2e3e4c36e6b15bf6d199c2f11ed Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Mon, 31 Dec 2018 15:49:39 +0530 Subject: [PATCH 0598/1345] feat: DO-431 Check run --- pipelines/deploy/player/Jenkinsfile.push | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pipelines/deploy/player/Jenkinsfile.push b/pipelines/deploy/player/Jenkinsfile.push index ce9773cf75..926c0b80bd 100644 --- a/pipelines/deploy/player/Jenkinsfile.push +++ b/pipelines/deploy/player/Jenkinsfile.push @@ -12,8 +12,8 @@ node(){ return } ansibleExtraArgs = """\ - --extra-vars "hub_org=$hub_org image_name=$values.image_name - image_tag=$values.image_tag" --vault-password-file $values.vaultFile + --extra-vars "hub_org=$hub_org image_name=$params.docker_service_name + image_tag=$params.docker_service_version" --vault-password-file /home/ops/vault """.stripIndent().replace("\n"," ") values.put('ansibleExtraArgs', ansibleExtraArgs) ansible_playbook_run(values) From 599ab4752e555ee235c92ae25dab141d0f8e6d8c Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Mon, 31 Dec 2018 15:57:50 +0530 Subject: [PATCH 0599/1345] Delete properties.json --- properties.json | 29 ----------------------------- 1 file changed, 29 deletions(-) delete mode 100644 properties.json diff --git a/properties.json b/properties.json deleted file mode 100644 index 13a26304de..0000000000 --- a/properties.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "common": { - "scmUrl": "https://github.com/ekstep/sunbird-devops.git", - "vaultFile": "/home/ops/vault" - }, - "push": { - "playbook": "docker_image_push.yml" - }, - "player": { - "playbook": "deploy.yml", - "serviceName": "player", - "deployExtraArgs": "deploy_stack=True" - }, - "learner": { - "playbook": "deploy.yml", - "serviceName": "learner-service", - "deployExtraArgs": "deploy_learner=True" - }, - "telemetry": { - "playbook": "deploy.yml", - "serviceName": "telemetry-service", - "deployExtraArgs": "deploy_telemetry=True" - }, - "content": { - "playbook": "deploy.yml", - "serviceName": "content-service", - "deployExtraArgs": "deploy_content=True" - } -} From 083a6937991c28c81f6754a1c6f6762bef6ffed4 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Wed, 2 Jan 2019 10:57:47 +0530 Subject: [PATCH 0600/1345] Update Jenkinsfile.push --- pipelines/deploy/player/Jenkinsfile.push | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pipelines/deploy/player/Jenkinsfile.push b/pipelines/deploy/player/Jenkinsfile.push index 926c0b80bd..2413df5b25 100644 --- a/pipelines/deploy/player/Jenkinsfile.push +++ b/pipelines/deploy/player/Jenkinsfile.push @@ -11,10 +11,12 @@ node(){ currentBuild.result = 'SUCCESS' return } + currentWs = sh(returnStdout: true, script: pwd).trim() ansibleExtraArgs = """\ --extra-vars "hub_org=$hub_org image_name=$params.docker_service_name image_tag=$params.docker_service_version" --vault-password-file /home/ops/vault """.stripIndent().replace("\n"," ") + values.put('currentWs', currentWs) values.put('ansibleExtraArgs', ansibleExtraArgs) ansible_playbook_run(values) archiveArtifacts 'metadata.json' From 363596f147eeab277cc6a75ff0f154463e458a97 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Wed, 2 Jan 2019 11:02:52 +0530 Subject: [PATCH 0601/1345] Update Jenkinsfile.push --- pipelines/deploy/player/Jenkinsfile.push | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pipelines/deploy/player/Jenkinsfile.push b/pipelines/deploy/player/Jenkinsfile.push index 2413df5b25..f491b99a76 100644 --- a/pipelines/deploy/player/Jenkinsfile.push +++ b/pipelines/deploy/player/Jenkinsfile.push @@ -11,7 +11,7 @@ node(){ currentBuild.result = 'SUCCESS' return } - currentWs = sh(returnStdout: true, script: pwd).trim() + currentWs = sh(returnStdout: true, script: 'pwd').trim() ansibleExtraArgs = """\ --extra-vars "hub_org=$hub_org image_name=$params.docker_service_name image_tag=$params.docker_service_version" --vault-password-file /home/ops/vault From 862bd4b109d18de143b161afa73afcef797822b3 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Wed, 2 Jan 2019 11:22:05 +0530 Subject: [PATCH 0602/1345] Update Jenkinsfile.push --- pipelines/deploy/player/Jenkinsfile.push | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pipelines/deploy/player/Jenkinsfile.push b/pipelines/deploy/player/Jenkinsfile.push index f491b99a76..042f452990 100644 --- a/pipelines/deploy/player/Jenkinsfile.push +++ b/pipelines/deploy/player/Jenkinsfile.push @@ -12,11 +12,13 @@ node(){ return } currentWs = sh(returnStdout: true, script: 'pwd').trim() + ansiblePlaybook = "docker_image_push.yml" ansibleExtraArgs = """\ --extra-vars "hub_org=$hub_org image_name=$params.docker_service_name image_tag=$params.docker_service_version" --vault-password-file /home/ops/vault """.stripIndent().replace("\n"," ") - values.put('currentWs', currentWs) + values.put('currentWs', currentWs) + values.put('ansiblePlaybook', ansiblePlaybook) values.put('ansibleExtraArgs', ansibleExtraArgs) ansible_playbook_run(values) archiveArtifacts 'metadata.json' From ee6a721259564fe08a0cf272af1c44fa43f3dcf7 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Wed, 2 Jan 2019 11:44:24 +0530 Subject: [PATCH 0603/1345] Update Jenkinsfile.push --- pipelines/deploy/player/Jenkinsfile.push | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pipelines/deploy/player/Jenkinsfile.push b/pipelines/deploy/player/Jenkinsfile.push index 042f452990..8f5ad9566b 100644 --- a/pipelines/deploy/player/Jenkinsfile.push +++ b/pipelines/deploy/player/Jenkinsfile.push @@ -15,7 +15,7 @@ node(){ ansiblePlaybook = "docker_image_push.yml" ansibleExtraArgs = """\ --extra-vars "hub_org=$hub_org image_name=$params.docker_service_name - image_tag=$params.docker_service_version" --vault-password-file /home/ops/vault + image_tag=$docker_service_version" --vault-password-file /home/ops/vault """.stripIndent().replace("\n"," ") values.put('currentWs', currentWs) values.put('ansiblePlaybook', ansiblePlaybook) From 937d3951cbb41af10be3761214e8dd31f7b4171c Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Wed, 2 Jan 2019 11:58:18 +0530 Subject: [PATCH 0604/1345] feat: DO-431 image tag retrieve --- pipelines/deploy/player/Jenkinsfile.push | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pipelines/deploy/player/Jenkinsfile.push b/pipelines/deploy/player/Jenkinsfile.push index 8f5ad9566b..939340e236 100644 --- a/pipelines/deploy/player/Jenkinsfile.push +++ b/pipelines/deploy/player/Jenkinsfile.push @@ -15,7 +15,7 @@ node(){ ansiblePlaybook = "docker_image_push.yml" ansibleExtraArgs = """\ --extra-vars "hub_org=$hub_org image_name=$params.docker_service_name - image_tag=$docker_service_version" --vault-password-file /home/ops/vault + image_tag=$values.docker_service_version" --vault-password-file /home/ops/vault """.stripIndent().replace("\n"," ") values.put('currentWs', currentWs) values.put('ansiblePlaybook', ansiblePlaybook) From 7ac9012d6102638cce48882bca719aae43b9540c Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Wed, 2 Jan 2019 12:13:12 +0530 Subject: [PATCH 0605/1345] feat: DO-431 Check deploy --- pipelines/deploy/player/Jenkinsfile.deploy | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/pipelines/deploy/player/Jenkinsfile.deploy b/pipelines/deploy/player/Jenkinsfile.deploy index 8a8aa818da..225991ac7f 100644 --- a/pipelines/deploy/player/Jenkinsfile.deploy +++ b/pipelines/deploy/player/Jenkinsfile.deploy @@ -8,12 +8,19 @@ node() { stage('define variables') { def values = docker_service_variables() + if(values == "first run"){ + currentBuild.result = 'SUCCESS' + return + } + currentWs = sh(returnStdout: true, script: 'pwd').trim() + ansiblePlaybook = "deploy.yml" ansibleExtraArgs = """\ - --tags "stack-sunbird" --extra-vars "hub_org=$hub_org - image_name=$values.image_name image_tag=$values.image_tag service_name=$values.serviceName - $values.deployExtraArgs" --vault-password-file $values.vaultFile + --tags "stack-sunbird" --extra-vars "hub_org=$hub_org image_name=$params.docker_service_name + image_tag=$values.docker_service_version" service_name=player + deploy_stack=True" --vault-password-file $values.vaultFile """.stripIndent().replace("\n"," ") - + values.put('currentWs', currentWs) + values.put('ansiblePlaybook', ansiblePlaybook) values.put('ansibleExtraArgs', ansibleExtraArgs) ansible_playbook_run(values) archiveArtifacts 'metadata.json' From afe6e8faf72d9cd4af16d225f5fda0ff8ad086d6 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Wed, 2 Jan 2019 12:13:54 +0530 Subject: [PATCH 0606/1345] Update Jenkinsfile.deploy --- pipelines/deploy/player/Jenkinsfile.deploy | 1 - 1 file changed, 1 deletion(-) diff --git a/pipelines/deploy/player/Jenkinsfile.deploy b/pipelines/deploy/player/Jenkinsfile.deploy index 225991ac7f..744d4b4e27 100644 --- a/pipelines/deploy/player/Jenkinsfile.deploy +++ b/pipelines/deploy/player/Jenkinsfile.deploy @@ -1,5 +1,4 @@ @Library('deploy-conf') _ - node() { try { stage('checkout public repo') { From 2be183c576ffc6ca8ec0c800b6f327ed9b0e7cae Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Wed, 2 Jan 2019 12:24:20 +0530 Subject: [PATCH 0607/1345] Update Jenkinsfile.deploy --- pipelines/deploy/player/Jenkinsfile.deploy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pipelines/deploy/player/Jenkinsfile.deploy b/pipelines/deploy/player/Jenkinsfile.deploy index 744d4b4e27..df3a3ada43 100644 --- a/pipelines/deploy/player/Jenkinsfile.deploy +++ b/pipelines/deploy/player/Jenkinsfile.deploy @@ -16,7 +16,7 @@ node() { ansibleExtraArgs = """\ --tags "stack-sunbird" --extra-vars "hub_org=$hub_org image_name=$params.docker_service_name image_tag=$values.docker_service_version" service_name=player - deploy_stack=True" --vault-password-file $values.vaultFile + deploy_stack=True" --vault-password-file /home/ops/vault """.stripIndent().replace("\n"," ") values.put('currentWs', currentWs) values.put('ansiblePlaybook', ansiblePlaybook) From ccf1725323ebe7911dad49b598e8ac9af8420c2c Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Wed, 2 Jan 2019 12:40:32 +0530 Subject: [PATCH 0608/1345] Update Jenkinsfile.deploy --- pipelines/deploy/player/Jenkinsfile.deploy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pipelines/deploy/player/Jenkinsfile.deploy b/pipelines/deploy/player/Jenkinsfile.deploy index df3a3ada43..d17bb76174 100644 --- a/pipelines/deploy/player/Jenkinsfile.deploy +++ b/pipelines/deploy/player/Jenkinsfile.deploy @@ -15,7 +15,7 @@ node() { ansiblePlaybook = "deploy.yml" ansibleExtraArgs = """\ --tags "stack-sunbird" --extra-vars "hub_org=$hub_org image_name=$params.docker_service_name - image_tag=$values.docker_service_version" service_name=player + image_tag=$values.docker_service_version service_name=player deploy_stack=True" --vault-password-file /home/ops/vault """.stripIndent().replace("\n"," ") values.put('currentWs', currentWs) From f8de8d3b1b84c5fb3126b6a3864b92b084d6355d Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Wed, 2 Jan 2019 12:51:19 +0530 Subject: [PATCH 0609/1345] Update main.yml --- ansible/roles/acr-docker/tasks/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/acr-docker/tasks/main.yml b/ansible/roles/acr-docker/tasks/main.yml index 5f03852dba..3740d11e27 100644 --- a/ansible/roles/acr-docker/tasks/main.yml +++ b/ansible/roles/acr-docker/tasks/main.yml @@ -7,6 +7,6 @@ username: "{{ vault_docker_registery_user }}" password: "{{ vault_docker_registory }}" -- name: Pull image to registry +- name: Pull image from registry docker_image: name: "{{ hub_org }}/{{ image_name }}:{{ image_tag }}" From a1e436d4e00154935bdf108e67ecc61ec3fd6616 Mon Sep 17 00:00:00 2001 From: harshavardhnc Date: Wed, 2 Jan 2019 14:42:21 +0530 Subject: [PATCH 0610/1345] Issue #00 fix: cassandra backup dir fix --- .../roles/cassandra-backup/vars/.main.yml.swp | Bin 0 -> 12288 bytes ansible/roles/cassandra-backup/vars/main.yml | 3 ++- 2 files changed, 2 insertions(+), 1 deletion(-) create mode 100644 ansible/roles/cassandra-backup/vars/.main.yml.swp diff --git a/ansible/roles/cassandra-backup/vars/.main.yml.swp b/ansible/roles/cassandra-backup/vars/.main.yml.swp new file mode 100644 index 0000000000000000000000000000000000000000..105e664e7924d7694930923b0b42c6c29b4ae782 GIT binary patch literal 12288 zcmeI&J5Iwe7{Kwb3~Y#sULe5GDRp^BAZ8W@Mv#yyRZe2ms7V~zP9+xDxe^!P3~&t& zK*DpPVnp=+NtWe@Y=6JavXk-U*?Dv{I+Qm0A}?2i$)ns$e_dpzouBD$V0qX&L`O)XFzilDjO<%)-`Q>B{FxVU)9l@ha8c>nd|PPINkNYPD#O zrAnPwqnon$#kNdA0D&f4$HyCTu)jC%Fm`vgqruh%E(joi00IagfB*srAh1FLq3+3D zoA263&b=S%6(S*31Q0*~0R#|0009ILKmY**{+)o%L>@Lpp4-yB|9{^9yY^GpM<9Rz p0tg_000IagfB*srAb`MM7Wn!&KXulIX_mW_XsAp`zrWNE Date: Wed, 2 Jan 2019 16:30:58 +0530 Subject: [PATCH 0611/1345] feat: DO-431 Remove service name parameter --- pipelines/deploy/player/Jenkinsfile.deploy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pipelines/deploy/player/Jenkinsfile.deploy b/pipelines/deploy/player/Jenkinsfile.deploy index d17bb76174..25576bce70 100644 --- a/pipelines/deploy/player/Jenkinsfile.deploy +++ b/pipelines/deploy/player/Jenkinsfile.deploy @@ -14,7 +14,7 @@ node() { currentWs = sh(returnStdout: true, script: 'pwd').trim() ansiblePlaybook = "deploy.yml" ansibleExtraArgs = """\ - --tags "stack-sunbird" --extra-vars "hub_org=$hub_org image_name=$params.docker_service_name + --tags "stack-sunbird" --extra-vars "hub_org=$hub_org image_name=$values.docker_service_name image_tag=$values.docker_service_version service_name=player deploy_stack=True" --vault-password-file /home/ops/vault """.stripIndent().replace("\n"," ") From 7190157f337dbe3e573f808aab6f1f4fdf6bd9a7 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Wed, 2 Jan 2019 16:31:00 +0530 Subject: [PATCH 0612/1345] feat: DO-431 Remove service name parameter --- pipelines/deploy/player/Jenkinsfile.push | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pipelines/deploy/player/Jenkinsfile.push b/pipelines/deploy/player/Jenkinsfile.push index 939340e236..0217821add 100644 --- a/pipelines/deploy/player/Jenkinsfile.push +++ b/pipelines/deploy/player/Jenkinsfile.push @@ -14,7 +14,7 @@ node(){ currentWs = sh(returnStdout: true, script: 'pwd').trim() ansiblePlaybook = "docker_image_push.yml" ansibleExtraArgs = """\ - --extra-vars "hub_org=$hub_org image_name=$params.docker_service_name + --extra-vars "hub_org=$hub_org image_name=$values.docker_service_name image_tag=$values.docker_service_version" --vault-password-file /home/ops/vault """.stripIndent().replace("\n"," ") values.put('currentWs', currentWs) From 1fdfb9f2f7caaaabff3e54c40199fe82cd5732fc Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Thu, 3 Jan 2019 10:20:55 +0530 Subject: [PATCH 0613/1345] feat: DO-431 Renaming variables --- pipelines/deploy/player/Jenkinsfile.push | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pipelines/deploy/player/Jenkinsfile.push b/pipelines/deploy/player/Jenkinsfile.push index 0217821add..f9dc843d6e 100644 --- a/pipelines/deploy/player/Jenkinsfile.push +++ b/pipelines/deploy/player/Jenkinsfile.push @@ -14,8 +14,8 @@ node(){ currentWs = sh(returnStdout: true, script: 'pwd').trim() ansiblePlaybook = "docker_image_push.yml" ansibleExtraArgs = """\ - --extra-vars "hub_org=$hub_org image_name=$values.docker_service_name - image_tag=$values.docker_service_version" --vault-password-file /home/ops/vault + --extra-vars "hub_org=$hub_org image_name=$values.image_name + image_tag=$values.image_tag" --vault-password-file /home/ops/vault """.stripIndent().replace("\n"," ") values.put('currentWs', currentWs) values.put('ansiblePlaybook', ansiblePlaybook) From 8605c837218ed119ce6ae8ab45ab217db03e383e Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Thu, 3 Jan 2019 10:20:57 +0530 Subject: [PATCH 0614/1345] feat: DO-431 Renaming variables --- pipelines/deploy/player/Jenkinsfile.deploy | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pipelines/deploy/player/Jenkinsfile.deploy b/pipelines/deploy/player/Jenkinsfile.deploy index 25576bce70..459637fd83 100644 --- a/pipelines/deploy/player/Jenkinsfile.deploy +++ b/pipelines/deploy/player/Jenkinsfile.deploy @@ -14,8 +14,8 @@ node() { currentWs = sh(returnStdout: true, script: 'pwd').trim() ansiblePlaybook = "deploy.yml" ansibleExtraArgs = """\ - --tags "stack-sunbird" --extra-vars "hub_org=$hub_org image_name=$values.docker_service_name - image_tag=$values.docker_service_version service_name=player + --tags "stack-sunbird" --extra-vars "hub_org=$hub_org image_name=$values.image_name + image_tag=$values.image_tag service_name=player deploy_stack=True" --vault-password-file /home/ops/vault """.stripIndent().replace("\n"," ") values.put('currentWs', currentWs) From bd3b01665496edd0aae94c78ca604f69bb05d18a Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Thu, 3 Jan 2019 12:26:30 +0530 Subject: [PATCH 0615/1345] Rename pipelines/deploy/player/Jenkinsfile.push to pipelines/push/Jenkinsfile.push --- pipelines/{deploy/player => push}/Jenkinsfile.push | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename pipelines/{deploy/player => push}/Jenkinsfile.push (100%) diff --git a/pipelines/deploy/player/Jenkinsfile.push b/pipelines/push/Jenkinsfile.push similarity index 100% rename from pipelines/deploy/player/Jenkinsfile.push rename to pipelines/push/Jenkinsfile.push From 156dc1246f72032ec1bc31e43f07f43f8293e842 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Thu, 3 Jan 2019 12:28:11 +0530 Subject: [PATCH 0616/1345] Rename pipelines/push/Jenkinsfile.push to pipelines/deploy/push/Jenkinsfile.push --- pipelines/{ => deploy}/push/Jenkinsfile.push | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename pipelines/{ => deploy}/push/Jenkinsfile.push (100%) diff --git a/pipelines/push/Jenkinsfile.push b/pipelines/deploy/push/Jenkinsfile.push similarity index 100% rename from pipelines/push/Jenkinsfile.push rename to pipelines/deploy/push/Jenkinsfile.push From 30ff3048e39b19aca33dd32c6581f57bc4860096 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Thu, 3 Jan 2019 12:29:03 +0530 Subject: [PATCH 0617/1345] Create Jenkinsfile --- pipelines/deploy/player/Jenkinsfile | 1 + 1 file changed, 1 insertion(+) create mode 100644 pipelines/deploy/player/Jenkinsfile diff --git a/pipelines/deploy/player/Jenkinsfile b/pipelines/deploy/player/Jenkinsfile new file mode 100644 index 0000000000..8b13789179 --- /dev/null +++ b/pipelines/deploy/player/Jenkinsfile @@ -0,0 +1 @@ + From ff0f4b0286de555778355b60ec514d7f37fe7fce Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Thu, 3 Jan 2019 12:29:23 +0530 Subject: [PATCH 0618/1345] Rename pipelines/deploy/player/Jenkinsfile to pipelines/deploy/learner/Jenkinsfile --- pipelines/deploy/{player => learner}/Jenkinsfile | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename pipelines/deploy/{player => learner}/Jenkinsfile (100%) diff --git a/pipelines/deploy/player/Jenkinsfile b/pipelines/deploy/learner/Jenkinsfile similarity index 100% rename from pipelines/deploy/player/Jenkinsfile rename to pipelines/deploy/learner/Jenkinsfile From b3f9e9a46b4d784066c8c89cf019e1f6183bae86 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Thu, 3 Jan 2019 12:29:38 +0530 Subject: [PATCH 0619/1345] Rename Jenkinsfile.deploy to Jenkinsfile --- pipelines/deploy/player/{Jenkinsfile.deploy => Jenkinsfile} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename pipelines/deploy/player/{Jenkinsfile.deploy => Jenkinsfile} (100%) diff --git a/pipelines/deploy/player/Jenkinsfile.deploy b/pipelines/deploy/player/Jenkinsfile similarity index 100% rename from pipelines/deploy/player/Jenkinsfile.deploy rename to pipelines/deploy/player/Jenkinsfile From 09b7058a4adf18fbbceb4155eceab415e19df9c4 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Thu, 3 Jan 2019 12:33:04 +0530 Subject: [PATCH 0620/1345] Update Jenkinsfile --- pipelines/deploy/learner/Jenkinsfile | 31 ++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/pipelines/deploy/learner/Jenkinsfile b/pipelines/deploy/learner/Jenkinsfile index 8b13789179..693582fd63 100644 --- a/pipelines/deploy/learner/Jenkinsfile +++ b/pipelines/deploy/learner/Jenkinsfile @@ -1 +1,32 @@ +@Library('deploy-conf') _ +node() { + try { + stage('checkout public repo') { + checkout scm + } + + stage('define variables') { + def values = docker_service_variables() + if(values == "first run"){ + currentBuild.result = 'SUCCESS' + return + } + currentWs = sh(returnStdout: true, script: 'pwd').trim() + ansiblePlaybook = "deploy.yml" + ansibleExtraArgs = """\ + --tags "stack-sunbird" --extra-vars "hub_org=$hub_org image_name=$values.image_name + image_tag=$values.image_tag service_name=learner-service + deploy_learner=True" --vault-password-file /home/ops/vault + """.stripIndent().replace("\n"," ") + values.put('currentWs', currentWs) + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + ansible_playbook_run(values) + archiveArtifacts 'metadata.json' + } + } + catch (err) { + throw err + } +} From d2f5b8c4c056dff40eb5ac22b847f3c2c1d8cd3e Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Thu, 3 Jan 2019 12:58:04 +0530 Subject: [PATCH 0621/1345] Create Jenkinsfile --- pipelines/deploy/content/Jenkinsfile | 31 ++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 pipelines/deploy/content/Jenkinsfile diff --git a/pipelines/deploy/content/Jenkinsfile b/pipelines/deploy/content/Jenkinsfile new file mode 100644 index 0000000000..20b4480153 --- /dev/null +++ b/pipelines/deploy/content/Jenkinsfile @@ -0,0 +1,31 @@ +@Library('deploy-conf') _ +node() { + try { + stage('checkout public repo') { + checkout scm + } + + stage('define variables') { + def values = docker_service_variables() + if(values == "first run"){ + currentBuild.result = 'SUCCESS' + return + } + currentWs = sh(returnStdout: true, script: 'pwd').trim() + ansiblePlaybook = "deploy.yml" + ansibleExtraArgs = """\ + --tags "stack-sunbird" --extra-vars "hub_org=$hub_org image_name=$values.image_name + image_tag=$values.image_tag service_name=content-service + deploy_content=True" --vault-password-file /home/ops/vault + """.stripIndent().replace("\n"," ") + values.put('currentWs', currentWs) + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + ansible_playbook_run(values) + archiveArtifacts 'metadata.json' + } + } + catch (err) { + throw err + } +} From c857942708015b82faa21e637cd2ce8187129b58 Mon Sep 17 00:00:00 2001 From: S M Y Date: Thu, 3 Jan 2019 15:04:11 +0530 Subject: [PATCH 0622/1345] Issue #000 apis: onboarding API issue with statsd exporter --- ansible/roles/kong-api/defaults/main.yml | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/ansible/roles/kong-api/defaults/main.yml b/ansible/roles/kong-api/defaults/main.yml index d02edd5a00..7711958fd9 100644 --- a/ansible/roles/kong-api/defaults/main.yml +++ b/ansible/roles/kong-api/defaults/main.yml @@ -3360,7 +3360,7 @@ kong_apis: plugins: - {name: 'jwt'} - {name: 'cors'} - - {name: 'statsd', config.metrics: "{{ statsd_metrics }}" } + - "{{ statsd_pulgin }}" - {name: 'acl', config.whitelist: 'publicUser'} - {name: 'rate-limiting', config.policy: "local", config.hour: "{{ medium_rate_limit_per_hour }}"} - {name: 'request-size-limiting', config.allowed_payload_size: "{{ small_request_size_limit }}" } @@ -3371,7 +3371,7 @@ kong_apis: plugins: - {name: 'jwt'} - {name: 'cors'} - - {name: 'statsd', config.metrics: "{{ statsd_metrics }}" } + - "{{ statsd_pulgin }}" - {name: 'acl', config.whitelist: 'publicUser'} - {name: 'rate-limiting', config.policy: "local", config.hour: "{{ medium_rate_limit_per_hour }}"} - {name: 'request-size-limiting', config.allowed_payload_size: "{{ small_request_size_limit }}" } @@ -3382,7 +3382,7 @@ kong_apis: plugins: - {name: 'jwt'} - {name: 'cors'} - - {name: 'statsd', config.metrics: "{{ statsd_metrics }}" } + - "{{ statsd_pulgin }}" - {name: 'acl', config.whitelist: 'publicUser'} - {name: 'rate-limiting', config.policy: "local", config.hour: "{{ medium_rate_limit_per_hour }}"} - {name: 'request-size-limiting', config.allowed_payload_size: "{{ small_request_size_limit }}" } @@ -3392,7 +3392,7 @@ kong_apis: strip_request_path: true plugins: - {name: 'cors'} - - {name: 'statsd', config.metrics: "{{ statsd_metrics }}" } + - "{{ statsd_pulgin }}" - {name: 'rate-limiting', config.policy: "local", config.hour: "{{ medium_rate_limit_per_hour }}"} - {name: 'request-size-limiting', config.allowed_payload_size: "{{ small_request_size_limit }}" } - name: "channelSpecificTelemetryExhaust" @@ -3402,7 +3402,7 @@ kong_apis: plugins: - {name: 'jwt'} - {name: 'cors'} - - {name: 'statsd', config.metrics: "{{ statsd_metrics }}" } + - "{{ statsd_pulgin }}" - {name: 'acl', config.whitelist: 'publicUser'} - {name: 'rate-limiting', config.policy: "local", config.hour: "{{ medium_rate_limit_per_hour }}"} - {name: 'request-size-limiting', config.allowed_payload_size: "{{ small_request_size_limit }}" } @@ -3414,7 +3414,7 @@ kong_apis: plugins: - {name: 'jwt'} - {name: 'cors'} - - {name: 'statsd', config.metrics: "{{ statsd_metrics }}" } + - "{{ statsd_pulgin }}" - {name: 'acl', config.whitelist: 'publicUser'} - {name: 'rate-limiting', config.policy: "local", config.hour: "{{ medium_rate_limit_per_hour }}"} - {name: 'request-size-limiting', config.allowed_payload_size: "{{ small_request_size_limit }}" } @@ -3426,7 +3426,7 @@ kong_apis: plugins: - {name: 'jwt'} - {name: 'cors'} - - {name: 'statsd', config.metrics: "{{ statsd_metrics }}" } + - "{{ statsd_pulgin }}" - {name: 'acl', config.whitelist: 'dataAdmin'} - {name: 'rate-limiting', config.policy: "local", config.hour: "{{ small_rate_limit_per_hour }}"} - {name: 'request-size-limiting', config.allowed_payload_size: "{{ small_request_size_limit }}" } @@ -3438,7 +3438,7 @@ kong_apis: plugins: - {name: 'jwt'} - {name: 'cors'} - - {name: 'statsd', config.metrics: "{{ statsd_metrics }}" } + - "{{ statsd_pulgin }}" - {name: 'acl', config.whitelist: 'publicUser'} - {name: 'rate-limiting', config.policy: "local", config.hour: "{{ large_rate_limit_per_hour }}"} - {name: 'request-size-limiting', config.allowed_payload_size: "{{ small_request_size_limit }}" } @@ -3449,7 +3449,7 @@ kong_apis: plugins: - {name: 'jwt'} - {name: 'cors'} - - {name: 'statsd', config.metrics: "{{ statsd_metrics }}" } + - "{{ statsd_pulgin }}" - {name: 'acl', config.whitelist: 'dataAdmin'} - {name: 'rate-limiting', config.policy: "local", config.hour: "{{ medium_rate_limit_per_hour }}"} - {name: 'request-size-limiting', config.allowed_payload_size: "{{ small_request_size_limit }}" } @@ -3460,7 +3460,7 @@ kong_apis: plugins: - {name: 'jwt'} - {name: 'cors'} - - {name: 'statsd', config.metrics: "{{ statsd_metrics }}" } + - "{{ statsd_pulgin }}" - {name: 'acl', config.whitelist: 'publicUser'} - {name: 'rate-limiting', config.policy: "local", config.hour: "{{ medium_rate_limit_per_hour }}"} - {name: 'request-size-limiting', config.allowed_payload_size: "{{ small_request_size_limit }}" } @@ -3471,7 +3471,7 @@ kong_apis: plugins: - {name: 'jwt'} - {name: 'cors'} - - {name: 'statsd', config.metrics: "{{ statsd_metrics }}" } + - "{{ statsd_pulgin }}" - {name: 'acl', config.whitelist: 'dataAdmin'} - {name: 'rate-limiting', config.policy: "local", config.hour: "{{ small_rate_limit_per_hour }}"} - {name: 'request-size-limiting', config.allowed_payload_size: "{{ small_request_size_limit }}" } @@ -3482,7 +3482,7 @@ kong_apis: plugins: - {name: 'jwt'} - {name: 'cors'} - - {name: 'statsd', config.metrics: "{{ statsd_metrics }}" } + - "{{ statsd_pulgin }}" - {name: 'acl', config.whitelist: 'dataAdmin'} - {name: 'rate-limiting', config.policy: "local", config.hour: "{{ small_rate_limit_per_hour }}"} - {name: 'request-size-limiting', config.allowed_payload_size: "{{ small_request_size_limit }}" } From 21b065f9b751df815a4faa238723a174920d4397 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Fri, 4 Jan 2019 14:16:37 +0530 Subject: [PATCH 0623/1345] Rename Jenkinsfile.push to Jenkinsfile --- pipelines/deploy/push/{Jenkinsfile.push => Jenkinsfile} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename pipelines/deploy/push/{Jenkinsfile.push => Jenkinsfile} (100%) diff --git a/pipelines/deploy/push/Jenkinsfile.push b/pipelines/deploy/push/Jenkinsfile similarity index 100% rename from pipelines/deploy/push/Jenkinsfile.push rename to pipelines/deploy/push/Jenkinsfile From 856601950c50fab589881db677ba663cafb2021c Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Fri, 4 Jan 2019 15:50:42 +0530 Subject: [PATCH 0624/1345] feat: DO-431 Clean ws before build --- pipelines/deploy/learner/Jenkinsfile | 1 + 1 file changed, 1 insertion(+) diff --git a/pipelines/deploy/learner/Jenkinsfile b/pipelines/deploy/learner/Jenkinsfile index 693582fd63..de99253df6 100644 --- a/pipelines/deploy/learner/Jenkinsfile +++ b/pipelines/deploy/learner/Jenkinsfile @@ -3,6 +3,7 @@ node() { try { stage('checkout public repo') { + cleanWs() checkout scm } From 6417ec5f73a45fe6645bba656c51a6db46195a25 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Fri, 4 Jan 2019 15:50:47 +0530 Subject: [PATCH 0625/1345] feat: DO-431 Clean ws before build --- pipelines/deploy/content/Jenkinsfile | 1 + 1 file changed, 1 insertion(+) diff --git a/pipelines/deploy/content/Jenkinsfile b/pipelines/deploy/content/Jenkinsfile index 20b4480153..3472e40348 100644 --- a/pipelines/deploy/content/Jenkinsfile +++ b/pipelines/deploy/content/Jenkinsfile @@ -2,6 +2,7 @@ node() { try { stage('checkout public repo') { + cleanWs() checkout scm } From f17c53e5a1d7d9d9b95e5ea495150ae8e51297a6 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Fri, 4 Jan 2019 15:50:51 +0530 Subject: [PATCH 0626/1345] feat: DO-431 Clean ws before build --- pipelines/deploy/push/Jenkinsfile | 1 + 1 file changed, 1 insertion(+) diff --git a/pipelines/deploy/push/Jenkinsfile b/pipelines/deploy/push/Jenkinsfile index f9dc843d6e..87955afc1c 100644 --- a/pipelines/deploy/push/Jenkinsfile +++ b/pipelines/deploy/push/Jenkinsfile @@ -2,6 +2,7 @@ node(){ try { stage('checkout public repo') { + cleanWs() checkout scm } From 69b240109a1976e18d5c6b35ff3200248697e078 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Mon, 7 Jan 2019 14:09:42 +0530 Subject: [PATCH 0627/1345] feat: DO-431 Clean ws before build --- pipelines/deploy/player/Jenkinsfile | 1 + 1 file changed, 1 insertion(+) diff --git a/pipelines/deploy/player/Jenkinsfile b/pipelines/deploy/player/Jenkinsfile index 459637fd83..bcb20d6ece 100644 --- a/pipelines/deploy/player/Jenkinsfile +++ b/pipelines/deploy/player/Jenkinsfile @@ -2,6 +2,7 @@ node() { try { stage('checkout public repo') { + cleanWs() checkout scm } From 8747b9747bf8b79a244e67ccabb4a17960e309e5 Mon Sep 17 00:00:00 2001 From: S M Y Date: Mon, 7 Jan 2019 17:44:37 +0530 Subject: [PATCH 0628/1345] Issue #000 user: deployer name change --- ansible/roles/stack-jenkins-slave/defaults/main.yml | 2 ++ .../stack-jenkins-slave/templates/stack-jenkins-slave.yml | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/ansible/roles/stack-jenkins-slave/defaults/main.yml b/ansible/roles/stack-jenkins-slave/defaults/main.yml index b02731cb73..e998569dba 100644 --- a/ansible/roles/stack-jenkins-slave/defaults/main.yml +++ b/ansible/roles/stack-jenkins-slave/defaults/main.yml @@ -15,6 +15,8 @@ jenkins_slave_secrets: - name: ops-private-key value: "{{ ops_private_key }}" +deployer_name: deployer-ssh-key +ops_name: ops-private-key general_jenkins_slave_reservation_memory: 750M general_jenkins_slave_limit_memory: 750M jenkins_replicas: 1 diff --git a/ansible/roles/stack-jenkins-slave/templates/stack-jenkins-slave.yml b/ansible/roles/stack-jenkins-slave/templates/stack-jenkins-slave.yml index 7ed0571bbd..0116f70663 100644 --- a/ansible/roles/stack-jenkins-slave/templates/stack-jenkins-slave.yml +++ b/ansible/roles/stack-jenkins-slave/templates/stack-jenkins-slave.yml @@ -14,10 +14,10 @@ services: - jenkins-pass - hub-pass - source: deployer-ssh-key - target: deployer-ssh-key + target: "{{deployer_name}}" mode: 0600 - source: ops-private-key - target: ops-private-key + target: "{{ops_name}}" mode: 0600 - source: vault-pass target: vault-pass From c945cfdf0c4b41f91fcb71369c5dd7c26ad525a1 Mon Sep 17 00:00:00 2001 From: Harsha Date: Wed, 9 Jan 2019 14:51:33 +0530 Subject: [PATCH 0629/1345] Issue #00 feat: ansible role for artifacts upload (#278) --- ansible/artifacts-upload.yml | 6 ++++++ .../roles/artifacts-upload-azure/meta/main.yml | 2 ++ .../roles/artifacts-upload-azure/tasks/main.yml | 16 ++++++++++++++++ 3 files changed, 24 insertions(+) create mode 100644 ansible/artifacts-upload.yml create mode 100644 ansible/roles/artifacts-upload-azure/meta/main.yml create mode 100644 ansible/roles/artifacts-upload-azure/tasks/main.yml diff --git a/ansible/artifacts-upload.yml b/ansible/artifacts-upload.yml new file mode 100644 index 0000000000..6eb883c1e5 --- /dev/null +++ b/ansible/artifacts-upload.yml @@ -0,0 +1,6 @@ +--- +- hosts: localhost + vars_files: + - ['{{inventory_dir}}/secrets.yml', 'secrets/{{env}}.yml'] + roles: + - artifacts-upload-azure diff --git a/ansible/roles/artifacts-upload-azure/meta/main.yml b/ansible/roles/artifacts-upload-azure/meta/main.yml new file mode 100644 index 0000000000..23b18a800a --- /dev/null +++ b/ansible/roles/artifacts-upload-azure/meta/main.yml @@ -0,0 +1,2 @@ +dependencies: + - azure-cli \ No newline at end of file diff --git a/ansible/roles/artifacts-upload-azure/tasks/main.yml b/ansible/roles/artifacts-upload-azure/tasks/main.yml new file mode 100644 index 0000000000..62c424f87a --- /dev/null +++ b/ansible/roles/artifacts-upload-azure/tasks/main.yml @@ -0,0 +1,16 @@ +--- +- name: Ensure azure blob storage container exists + command: az storage container create --name {{ artifacts_container }} + ignore_errors: true + environment: + AZURE_STORAGE_ACCOUNT: "{{ artifacts_storage_account }}" + AZURE_STORAGE_KEY: "{{ artifact_storage_key }}" + + +- name: Upload to azure blob storage + command: az storage blob upload-batch -d {{ artifacts_container }} -s {{ artifacts }} + environment: + AZURE_STORAGE_ACCOUNT: "{{ artifacts_storage_account }}" + AZURE_STORAGE_KEY: "{{ artifacts_storage_key }}" + async: 100 + poll: 10 From d992af4156d1731dc944069b93d360a5ee42614e Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Wed, 9 Jan 2019 16:31:19 +0530 Subject: [PATCH 0630/1345] Issue # 000: Update ansible playbook path and docker params --- pipelines/deploy/content/Jenkinsfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pipelines/deploy/content/Jenkinsfile b/pipelines/deploy/content/Jenkinsfile index 3472e40348..c9faf358c7 100644 --- a/pipelines/deploy/content/Jenkinsfile +++ b/pipelines/deploy/content/Jenkinsfile @@ -7,13 +7,13 @@ node() { } stage('define variables') { - def values = docker_service_variables() + def values = docker_params() if(values == "first run"){ currentBuild.result = 'SUCCESS' return } currentWs = sh(returnStdout: true, script: 'pwd').trim() - ansiblePlaybook = "deploy.yml" + ansiblePlaybook = "$currentWs/ansible/deploy.yml" ansibleExtraArgs = """\ --tags "stack-sunbird" --extra-vars "hub_org=$hub_org image_name=$values.image_name image_tag=$values.image_tag service_name=content-service From 43deebc4cb93f2751141df0f7ec3f5642fa986ce Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Wed, 9 Jan 2019 16:31:26 +0530 Subject: [PATCH 0631/1345] Issue # 000: Update ansible playbook path and docker params --- pipelines/deploy/learner/Jenkinsfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pipelines/deploy/learner/Jenkinsfile b/pipelines/deploy/learner/Jenkinsfile index de99253df6..e396ed6ada 100644 --- a/pipelines/deploy/learner/Jenkinsfile +++ b/pipelines/deploy/learner/Jenkinsfile @@ -8,13 +8,13 @@ node() { } stage('define variables') { - def values = docker_service_variables() + def values = docker_params() if(values == "first run"){ currentBuild.result = 'SUCCESS' return } currentWs = sh(returnStdout: true, script: 'pwd').trim() - ansiblePlaybook = "deploy.yml" + ansiblePlaybook = "$currentWs/ansible/deploy.yml" ansibleExtraArgs = """\ --tags "stack-sunbird" --extra-vars "hub_org=$hub_org image_name=$values.image_name image_tag=$values.image_tag service_name=learner-service From ae4475ee163c11aff9f58fe08d0f9cf794d85836 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Wed, 9 Jan 2019 16:31:32 +0530 Subject: [PATCH 0632/1345] Issue # 000: Update ansible playbook path and docker params --- pipelines/deploy/player/Jenkinsfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pipelines/deploy/player/Jenkinsfile b/pipelines/deploy/player/Jenkinsfile index bcb20d6ece..e170545039 100644 --- a/pipelines/deploy/player/Jenkinsfile +++ b/pipelines/deploy/player/Jenkinsfile @@ -7,13 +7,13 @@ node() { } stage('define variables') { - def values = docker_service_variables() + def values = docker_params() if(values == "first run"){ currentBuild.result = 'SUCCESS' return } currentWs = sh(returnStdout: true, script: 'pwd').trim() - ansiblePlaybook = "deploy.yml" + ansiblePlaybook = "$currentWs/ansible/deploy.yml" ansibleExtraArgs = """\ --tags "stack-sunbird" --extra-vars "hub_org=$hub_org image_name=$values.image_name image_tag=$values.image_tag service_name=player From 1fa813c422e2b96c3704ebbe231cbdbc01a1edbb Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Wed, 9 Jan 2019 16:31:40 +0530 Subject: [PATCH 0633/1345] Issue # 000: Update ansible playbook path and docker params --- pipelines/deploy/push/Jenkinsfile | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/pipelines/deploy/push/Jenkinsfile b/pipelines/deploy/push/Jenkinsfile index 87955afc1c..4b58c2d568 100644 --- a/pipelines/deploy/push/Jenkinsfile +++ b/pipelines/deploy/push/Jenkinsfile @@ -7,18 +7,17 @@ node(){ } stage('define variables') { - def values = docker_service_variables() + def values = docker_params() if(values == "first run"){ currentBuild.result = 'SUCCESS' return } currentWs = sh(returnStdout: true, script: 'pwd').trim() - ansiblePlaybook = "docker_image_push.yml" + ansiblePlaybook = "$currentWs/ansible/docker_image_push.yml" ansibleExtraArgs = """\ --extra-vars "hub_org=$hub_org image_name=$values.image_name image_tag=$values.image_tag" --vault-password-file /home/ops/vault """.stripIndent().replace("\n"," ") - values.put('currentWs', currentWs) values.put('ansiblePlaybook', ansiblePlaybook) values.put('ansibleExtraArgs', ansibleExtraArgs) ansible_playbook_run(values) From 9c5c5c9ade1a9e5f3ae523fa63d5cac0198248ff Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Wed, 9 Jan 2019 18:05:15 +0530 Subject: [PATCH 0634/1345] Create Jenkinsfile --- pipelines/deploy/learning-platform/Jenkinsfile | 1 + 1 file changed, 1 insertion(+) create mode 100644 pipelines/deploy/learning-platform/Jenkinsfile diff --git a/pipelines/deploy/learning-platform/Jenkinsfile b/pipelines/deploy/learning-platform/Jenkinsfile new file mode 100644 index 0000000000..8b13789179 --- /dev/null +++ b/pipelines/deploy/learning-platform/Jenkinsfile @@ -0,0 +1 @@ + From 36b307a92801503e87c122bc691b9513b5e67a0c Mon Sep 17 00:00:00 2001 From: Amol Ghatol Date: Wed, 9 Jan 2019 18:17:45 +0530 Subject: [PATCH 0635/1345] Issue #SB-7902 chore:Updated getUserByKey API access to appUpdate (#279) --- ansible/roles/kong-api/defaults/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/kong-api/defaults/main.yml b/ansible/roles/kong-api/defaults/main.yml index 7711958fd9..49c03e682c 100644 --- a/ansible/roles/kong-api/defaults/main.yml +++ b/ansible/roles/kong-api/defaults/main.yml @@ -3607,7 +3607,7 @@ kong_apis: - name: cors - "{{ statsd_pulgin }}" - name: acl - config.whitelist: appAdmin + config.whitelist: appUpdate - name: rate-limiting config.policy: local config.hour: "{{ medium_rate_limit_per_hour }}" From 1ce9c0d9f4ffb1b3854c8b1e090ce4c895fd92db Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Wed, 9 Jan 2019 22:27:35 +0530 Subject: [PATCH 0636/1345] Update Jenkinsfile --- .../deploy/learning-platform/Jenkinsfile | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/pipelines/deploy/learning-platform/Jenkinsfile b/pipelines/deploy/learning-platform/Jenkinsfile index 8b13789179..22a0287a16 100644 --- a/pipelines/deploy/learning-platform/Jenkinsfile +++ b/pipelines/deploy/learning-platform/Jenkinsfile @@ -1 +1,24 @@ +@Library('deploy-conf') _ +node() { + try { + stage('checkout public repo') { + cleanWs() + checkout scm: [$class: 'GitSCM', branches: [[name: 'release-1.13']], userRemoteConfigs: [[url: 'https://github.com/project-sunbird/sunbird-devops.git']]] + } + currentWs = sh(returnStdout: true, script: 'pwd').trim() + ansiblePlaybook = "$currentWs/ansible/artifacts-upload.yml" + ansibleExtraArgs = """\ + --extra-vars "artifacts_container=lpcicdtest artifacts=TestFolder/Build/Sunbird_LP/lp_artifacts_newlpjenkins_bd615a3.zip" + --vault-password-file /home/ops/vault + """.stripIndent().replace("\n"," ") + values.put('currentWs', currentWs) + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + ansible_playbook_run(values) + } + } + catch (err) { + throw err + } +} From 8415fcc67a1a8f512d7b39e3375b406f7aebd944 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Wed, 9 Jan 2019 22:29:10 +0530 Subject: [PATCH 0637/1345] Update Jenkinsfile --- pipelines/deploy/learning-platform/Jenkinsfile | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/pipelines/deploy/learning-platform/Jenkinsfile b/pipelines/deploy/learning-platform/Jenkinsfile index 22a0287a16..26ad5c4ad8 100644 --- a/pipelines/deploy/learning-platform/Jenkinsfile +++ b/pipelines/deploy/learning-platform/Jenkinsfile @@ -3,15 +3,14 @@ node() { try { stage('checkout public repo') { cleanWs() - checkout scm: [$class: 'GitSCM', branches: [[name: 'release-1.13']], userRemoteConfigs: [[url: 'https://github.com/project-sunbird/sunbird-devops.git']]] - } + checkout scm: [$class: 'GitSCM', branches: [[name: 'release-1.13']], userRemoteConfigs: [[url: 'https://github.com/project-sunbird/sunbird-devops.git']]] currentWs = sh(returnStdout: true, script: 'pwd').trim() ansiblePlaybook = "$currentWs/ansible/artifacts-upload.yml" ansibleExtraArgs = """\ --extra-vars "artifacts_container=lpcicdtest artifacts=TestFolder/Build/Sunbird_LP/lp_artifacts_newlpjenkins_bd615a3.zip" --vault-password-file /home/ops/vault - """.stripIndent().replace("\n"," ") + """.stripIndent().replace("\n", " ") values.put('currentWs', currentWs) values.put('ansiblePlaybook', ansiblePlaybook) values.put('ansibleExtraArgs', ansibleExtraArgs) From 3f5156690ab3f01f8274d3d9f5b91662a0f4d861 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Wed, 9 Jan 2019 22:50:08 +0530 Subject: [PATCH 0638/1345] Update Jenkinsfile --- pipelines/deploy/learning-platform/Jenkinsfile | 1 + 1 file changed, 1 insertion(+) diff --git a/pipelines/deploy/learning-platform/Jenkinsfile b/pipelines/deploy/learning-platform/Jenkinsfile index 26ad5c4ad8..ce2d4564fd 100644 --- a/pipelines/deploy/learning-platform/Jenkinsfile +++ b/pipelines/deploy/learning-platform/Jenkinsfile @@ -2,6 +2,7 @@ node() { try { stage('checkout public repo') { + values = [:] cleanWs() checkout scm: [$class: 'GitSCM', branches: [[name: 'release-1.13']], userRemoteConfigs: [[url: 'https://github.com/project-sunbird/sunbird-devops.git']]] From c82c208681ea5e8966bf91d1f9f4aa4d87ee5e51 Mon Sep 17 00:00:00 2001 From: Harsha Date: Wed, 9 Jan 2019 14:51:33 +0530 Subject: [PATCH 0639/1345] Issue #00 feat: ansible role for artifacts upload (#278) --- ansible/artifacts-upload.yml | 6 ++++++ .../roles/artifacts-upload-azure/meta/main.yml | 2 ++ .../roles/artifacts-upload-azure/tasks/main.yml | 16 ++++++++++++++++ 3 files changed, 24 insertions(+) create mode 100644 ansible/artifacts-upload.yml create mode 100644 ansible/roles/artifacts-upload-azure/meta/main.yml create mode 100644 ansible/roles/artifacts-upload-azure/tasks/main.yml diff --git a/ansible/artifacts-upload.yml b/ansible/artifacts-upload.yml new file mode 100644 index 0000000000..6eb883c1e5 --- /dev/null +++ b/ansible/artifacts-upload.yml @@ -0,0 +1,6 @@ +--- +- hosts: localhost + vars_files: + - ['{{inventory_dir}}/secrets.yml', 'secrets/{{env}}.yml'] + roles: + - artifacts-upload-azure diff --git a/ansible/roles/artifacts-upload-azure/meta/main.yml b/ansible/roles/artifacts-upload-azure/meta/main.yml new file mode 100644 index 0000000000..23b18a800a --- /dev/null +++ b/ansible/roles/artifacts-upload-azure/meta/main.yml @@ -0,0 +1,2 @@ +dependencies: + - azure-cli \ No newline at end of file diff --git a/ansible/roles/artifacts-upload-azure/tasks/main.yml b/ansible/roles/artifacts-upload-azure/tasks/main.yml new file mode 100644 index 0000000000..62c424f87a --- /dev/null +++ b/ansible/roles/artifacts-upload-azure/tasks/main.yml @@ -0,0 +1,16 @@ +--- +- name: Ensure azure blob storage container exists + command: az storage container create --name {{ artifacts_container }} + ignore_errors: true + environment: + AZURE_STORAGE_ACCOUNT: "{{ artifacts_storage_account }}" + AZURE_STORAGE_KEY: "{{ artifact_storage_key }}" + + +- name: Upload to azure blob storage + command: az storage blob upload-batch -d {{ artifacts_container }} -s {{ artifacts }} + environment: + AZURE_STORAGE_ACCOUNT: "{{ artifacts_storage_account }}" + AZURE_STORAGE_KEY: "{{ artifacts_storage_key }}" + async: 100 + poll: 10 From 4dd79cf7fd0b4584706b3553edaf63a9f178a9e5 Mon Sep 17 00:00:00 2001 From: msknext Date: Wed, 9 Jan 2019 22:57:58 +0530 Subject: [PATCH 0640/1345] become SU --- ansible/artifacts-upload.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/ansible/artifacts-upload.yml b/ansible/artifacts-upload.yml index 6eb883c1e5..66a80a5af8 100644 --- a/ansible/artifacts-upload.yml +++ b/ansible/artifacts-upload.yml @@ -1,5 +1,6 @@ --- - hosts: localhost + become: yes vars_files: - ['{{inventory_dir}}/secrets.yml', 'secrets/{{env}}.yml'] roles: From 6d8291a182bd7d22cf432ff42f96897dcc0537cc Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Wed, 9 Jan 2019 22:58:46 +0530 Subject: [PATCH 0641/1345] Update Jenkinsfile --- pipelines/deploy/learning-platform/Jenkinsfile | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/pipelines/deploy/learning-platform/Jenkinsfile b/pipelines/deploy/learning-platform/Jenkinsfile index ce2d4564fd..d9a65ec7f0 100644 --- a/pipelines/deploy/learning-platform/Jenkinsfile +++ b/pipelines/deploy/learning-platform/Jenkinsfile @@ -4,8 +4,7 @@ node() { stage('checkout public repo') { values = [:] cleanWs() - checkout scm: [$class: 'GitSCM', branches: [[name: 'release-1.13']], userRemoteConfigs: [[url: 'https://github.com/project-sunbird/sunbird-devops.git']]] - + checkout scm currentWs = sh(returnStdout: true, script: 'pwd').trim() ansiblePlaybook = "$currentWs/ansible/artifacts-upload.yml" ansibleExtraArgs = """\ From b05d032a6a363240866696759be7d73b8ada7038 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Wed, 9 Jan 2019 23:10:56 +0530 Subject: [PATCH 0642/1345] Update main.yml --- ansible/roles/artifacts-upload-azure/tasks/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/artifacts-upload-azure/tasks/main.yml b/ansible/roles/artifacts-upload-azure/tasks/main.yml index 62c424f87a..834a1bda03 100644 --- a/ansible/roles/artifacts-upload-azure/tasks/main.yml +++ b/ansible/roles/artifacts-upload-azure/tasks/main.yml @@ -8,7 +8,7 @@ - name: Upload to azure blob storage - command: az storage blob upload-batch -d {{ artifacts_container }} -s {{ artifacts }} + command: az storage blob upload -c {{ artifacts_container }} --name {{ artifacts_container }} -f {{ artifacts }} environment: AZURE_STORAGE_ACCOUNT: "{{ artifacts_storage_account }}" AZURE_STORAGE_KEY: "{{ artifacts_storage_key }}" From 66a95f6c3bf27bde8bc16e86439f5920b9315ad6 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Thu, 10 Jan 2019 10:17:53 +0530 Subject: [PATCH 0643/1345] Update Jenkinsfile --- pipelines/deploy/learning-platform/Jenkinsfile | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/pipelines/deploy/learning-platform/Jenkinsfile b/pipelines/deploy/learning-platform/Jenkinsfile index d9a65ec7f0..21ee4c7414 100644 --- a/pipelines/deploy/learning-platform/Jenkinsfile +++ b/pipelines/deploy/learning-platform/Jenkinsfile @@ -1,14 +1,20 @@ -@Library('deploy-conf') _ +//@Library('deploy-conf') _ node() { try { stage('checkout public repo') { - values = [:] cleanWs() checkout scm + } + stage('define params') { + def values = lp_dp_params() + if(values == "first run"){ + currentBuild.result = 'SUCCESS' + return + } currentWs = sh(returnStdout: true, script: 'pwd').trim() ansiblePlaybook = "$currentWs/ansible/artifacts-upload.yml" ansibleExtraArgs = """\ - --extra-vars "artifacts_container=lpcicdtest artifacts=TestFolder/Build/Sunbird_LP/lp_artifacts_newlpjenkins_bd615a3.zip" + --extra-vars "artifacts_container=${params.azure_container_name} artifacts=${values.artifact_name}:${values.artifact_version}" --vault-password-file /home/ops/vault """.stripIndent().replace("\n", " ") values.put('currentWs', currentWs) From f8e3d547b586fdef009382d8d93c691ea51b1bed Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Thu, 10 Jan 2019 10:28:06 +0530 Subject: [PATCH 0644/1345] Update Jenkinsfile --- pipelines/deploy/learning-platform/Jenkinsfile | 1 + 1 file changed, 1 insertion(+) diff --git a/pipelines/deploy/learning-platform/Jenkinsfile b/pipelines/deploy/learning-platform/Jenkinsfile index 21ee4c7414..81b3c6ddf4 100644 --- a/pipelines/deploy/learning-platform/Jenkinsfile +++ b/pipelines/deploy/learning-platform/Jenkinsfile @@ -15,6 +15,7 @@ node() { ansiblePlaybook = "$currentWs/ansible/artifacts-upload.yml" ansibleExtraArgs = """\ --extra-vars "artifacts_container=${params.azure_container_name} artifacts=${values.artifact_name}:${values.artifact_version}" + -e "@ ${params.inventory_source}/group_vars/dev.yml" --vault-password-file /home/ops/vault """.stripIndent().replace("\n", " ") values.put('currentWs', currentWs) From 5cc91132d58de1f10d0dcf6dba371a9557b71be4 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Thu, 10 Jan 2019 10:29:19 +0530 Subject: [PATCH 0645/1345] Update Jenkinsfile --- pipelines/deploy/learning-platform/Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pipelines/deploy/learning-platform/Jenkinsfile b/pipelines/deploy/learning-platform/Jenkinsfile index 81b3c6ddf4..09fdfab22e 100644 --- a/pipelines/deploy/learning-platform/Jenkinsfile +++ b/pipelines/deploy/learning-platform/Jenkinsfile @@ -1,4 +1,4 @@ -//@Library('deploy-conf') _ +@Library('deploy-conf') _ node() { try { stage('checkout public repo') { From e16b09136eec5de8bd3d5ae58770787378e13d89 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Thu, 10 Jan 2019 10:47:57 +0530 Subject: [PATCH 0646/1345] Update Jenkinsfile --- pipelines/deploy/learning-platform/Jenkinsfile | 1 + 1 file changed, 1 insertion(+) diff --git a/pipelines/deploy/learning-platform/Jenkinsfile b/pipelines/deploy/learning-platform/Jenkinsfile index 09fdfab22e..4af63da17c 100644 --- a/pipelines/deploy/learning-platform/Jenkinsfile +++ b/pipelines/deploy/learning-platform/Jenkinsfile @@ -13,6 +13,7 @@ node() { } currentWs = sh(returnStdout: true, script: 'pwd').trim() ansiblePlaybook = "$currentWs/ansible/artifacts-upload.yml" + println values ansibleExtraArgs = """\ --extra-vars "artifacts_container=${params.azure_container_name} artifacts=${values.artifact_name}:${values.artifact_version}" -e "@ ${params.inventory_source}/group_vars/dev.yml" From 318ba95bd5bbb365a4fc9298ff4533b63f795801 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Thu, 10 Jan 2019 10:53:59 +0530 Subject: [PATCH 0647/1345] Update Jenkinsfile --- pipelines/deploy/learning-platform/Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pipelines/deploy/learning-platform/Jenkinsfile b/pipelines/deploy/learning-platform/Jenkinsfile index 4af63da17c..79403f9ba6 100644 --- a/pipelines/deploy/learning-platform/Jenkinsfile +++ b/pipelines/deploy/learning-platform/Jenkinsfile @@ -11,9 +11,9 @@ node() { currentBuild.result = 'SUCCESS' return } + println values currentWs = sh(returnStdout: true, script: 'pwd').trim() ansiblePlaybook = "$currentWs/ansible/artifacts-upload.yml" - println values ansibleExtraArgs = """\ --extra-vars "artifacts_container=${params.azure_container_name} artifacts=${values.artifact_name}:${values.artifact_version}" -e "@ ${params.inventory_source}/group_vars/dev.yml" From f3d3696312306da44b52200f5a1c54c630c5487f Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Thu, 10 Jan 2019 10:58:57 +0530 Subject: [PATCH 0648/1345] Update Jenkinsfile --- pipelines/deploy/learning-platform/Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pipelines/deploy/learning-platform/Jenkinsfile b/pipelines/deploy/learning-platform/Jenkinsfile index 79403f9ba6..dec7ccb7b9 100644 --- a/pipelines/deploy/learning-platform/Jenkinsfile +++ b/pipelines/deploy/learning-platform/Jenkinsfile @@ -11,7 +11,7 @@ node() { currentBuild.result = 'SUCCESS' return } - println values + println values currentWs = sh(returnStdout: true, script: 'pwd').trim() ansiblePlaybook = "$currentWs/ansible/artifacts-upload.yml" ansibleExtraArgs = """\ From 8fcc233d8ee018725a2ad65ba5adabf7d28ef5bc Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Thu, 10 Jan 2019 11:00:33 +0530 Subject: [PATCH 0649/1345] Update Jenkinsfile --- pipelines/deploy/learning-platform/Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pipelines/deploy/learning-platform/Jenkinsfile b/pipelines/deploy/learning-platform/Jenkinsfile index dec7ccb7b9..b11d043c0d 100644 --- a/pipelines/deploy/learning-platform/Jenkinsfile +++ b/pipelines/deploy/learning-platform/Jenkinsfile @@ -16,7 +16,7 @@ node() { ansiblePlaybook = "$currentWs/ansible/artifacts-upload.yml" ansibleExtraArgs = """\ --extra-vars "artifacts_container=${params.azure_container_name} artifacts=${values.artifact_name}:${values.artifact_version}" - -e "@ ${params.inventory_source}/group_vars/dev.yml" + -e "@ ${params.inventory_path}/group_vars/dev.yml" --vault-password-file /home/ops/vault """.stripIndent().replace("\n", " ") values.put('currentWs', currentWs) From 5856ed1dd5b828f63f0675419ba82a99982429d8 Mon Sep 17 00:00:00 2001 From: msknext Date: Thu, 10 Jan 2019 07:09:25 +0000 Subject: [PATCH 0650/1345] updated roles and playbook --- ansible/artifacts-upload.yml | 3 +++ ansible/roles/artifacts-upload-azure/tasks/main.yml | 8 +------- ansible/roles/azure-cli/tasks/main.yml | 5 ++++- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/ansible/artifacts-upload.yml b/ansible/artifacts-upload.yml index 66a80a5af8..67cd113bbe 100644 --- a/ansible/artifacts-upload.yml +++ b/ansible/artifacts-upload.yml @@ -3,5 +3,8 @@ become: yes vars_files: - ['{{inventory_dir}}/secrets.yml', 'secrets/{{env}}.yml'] + environment: + AZURE_STORAGE_ACCOUNT: "{{ artifacts_storage_account }}" + AZURE_STORAGE_KEY: "{{ artifact_storage_key }}" roles: - artifacts-upload-azure diff --git a/ansible/roles/artifacts-upload-azure/tasks/main.yml b/ansible/roles/artifacts-upload-azure/tasks/main.yml index 834a1bda03..13df38969d 100644 --- a/ansible/roles/artifacts-upload-azure/tasks/main.yml +++ b/ansible/roles/artifacts-upload-azure/tasks/main.yml @@ -2,15 +2,9 @@ - name: Ensure azure blob storage container exists command: az storage container create --name {{ artifacts_container }} ignore_errors: true - environment: - AZURE_STORAGE_ACCOUNT: "{{ artifacts_storage_account }}" - AZURE_STORAGE_KEY: "{{ artifact_storage_key }}" - name: Upload to azure blob storage - command: az storage blob upload -c {{ artifacts_container }} --name {{ artifacts_container }} -f {{ artifacts }} - environment: - AZURE_STORAGE_ACCOUNT: "{{ artifacts_storage_account }}" - AZURE_STORAGE_KEY: "{{ artifacts_storage_key }}" + command: az storage blob upload -c {{ artifacts_container }} --name {{ artifact }} -f {{ artifact_path }} async: 100 poll: 10 diff --git a/ansible/roles/azure-cli/tasks/main.yml b/ansible/roles/azure-cli/tasks/main.yml index 24c64bffc1..0da83e8fbd 100644 --- a/ansible/roles/azure-cli/tasks/main.yml +++ b/ansible/roles/azure-cli/tasks/main.yml @@ -6,4 +6,7 @@ shell: curl -L https://packages.microsoft.com/keys/microsoft.asc | apt-key add - - name: ensure azure-cli and apt-transport-https is installed - shell: apt update && apt install -y apt-transport-https azure-cli + apt: name={{ item }} state=present update_cache=yes cache_valid_time=3600 + with_items: + - apt-transport-https + - azure-cli From 0d99bb5d9b15c1d45226f183549c6e57337b4fd3 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Thu, 10 Jan 2019 12:43:30 +0530 Subject: [PATCH 0651/1345] Issue # 000: Remove new line --- ansible/roles/artifacts-upload-azure/tasks/main.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/ansible/roles/artifacts-upload-azure/tasks/main.yml b/ansible/roles/artifacts-upload-azure/tasks/main.yml index 13df38969d..6bd3fb8244 100644 --- a/ansible/roles/artifacts-upload-azure/tasks/main.yml +++ b/ansible/roles/artifacts-upload-azure/tasks/main.yml @@ -3,7 +3,6 @@ command: az storage container create --name {{ artifacts_container }} ignore_errors: true - - name: Upload to azure blob storage command: az storage blob upload -c {{ artifacts_container }} --name {{ artifact }} -f {{ artifact_path }} async: 100 From 5d8823c4b7bc648660c28901baab205727522929 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Thu, 10 Jan 2019 12:47:40 +0530 Subject: [PATCH 0652/1345] Update Jenkinsfile --- pipelines/deploy/learning-platform/Jenkinsfile | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/pipelines/deploy/learning-platform/Jenkinsfile b/pipelines/deploy/learning-platform/Jenkinsfile index b11d043c0d..b14f22d728 100644 --- a/pipelines/deploy/learning-platform/Jenkinsfile +++ b/pipelines/deploy/learning-platform/Jenkinsfile @@ -13,10 +13,11 @@ node() { } println values currentWs = sh(returnStdout: true, script: 'pwd').trim() - ansiblePlaybook = "$currentWs/ansible/artifacts-upload.yml" + artifact= values.artifact_name + ":" + values.artifact_version + ansiblePlaybook = "${currentWs}/ansible/artifacts-upload.yml" ansibleExtraArgs = """\ - --extra-vars "artifacts_container=${params.azure_container_name} artifacts=${values.artifact_name}:${values.artifact_version}" - -e "@ ${params.inventory_path}/group_vars/dev.yml" + --extra-vars "artifact=${artifact} + artifact_path=${currentWs}/${artifact}" --vault-password-file /home/ops/vault """.stripIndent().replace("\n", " ") values.put('currentWs', currentWs) From 4b2119e5034f6881ad534d2efe5f50353d192482 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Thu, 10 Jan 2019 12:56:18 +0530 Subject: [PATCH 0653/1345] Issue # 000: Archive artifacts --- .../deploy/learning-platform/{Jenkinsfile => Jenkinsfile.push} | 2 ++ 1 file changed, 2 insertions(+) rename pipelines/deploy/learning-platform/{Jenkinsfile => Jenkinsfile.push} (85%) diff --git a/pipelines/deploy/learning-platform/Jenkinsfile b/pipelines/deploy/learning-platform/Jenkinsfile.push similarity index 85% rename from pipelines/deploy/learning-platform/Jenkinsfile rename to pipelines/deploy/learning-platform/Jenkinsfile.push index b14f22d728..a3fa63c7c5 100644 --- a/pipelines/deploy/learning-platform/Jenkinsfile +++ b/pipelines/deploy/learning-platform/Jenkinsfile.push @@ -24,6 +24,8 @@ node() { values.put('ansiblePlaybook', ansiblePlaybook) values.put('ansibleExtraArgs', ansibleExtraArgs) ansible_playbook_run(values) + archiveArtifacts artifacts: "lp_artifacts.zip:${artifact_version}", fingerprint: true, onlyIfSuccessful: true + archiveArtifacts artifacts: 'metadata.json', onlyIfSuccessful: true } } catch (err) { From d4dc172c7774b5f42fff7a2940fa368519c77e08 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Thu, 10 Jan 2019 13:00:29 +0530 Subject: [PATCH 0654/1345] Update Jenkinsfile.push --- pipelines/deploy/learning-platform/Jenkinsfile.push | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pipelines/deploy/learning-platform/Jenkinsfile.push b/pipelines/deploy/learning-platform/Jenkinsfile.push index a3fa63c7c5..bbae483400 100644 --- a/pipelines/deploy/learning-platform/Jenkinsfile.push +++ b/pipelines/deploy/learning-platform/Jenkinsfile.push @@ -24,7 +24,7 @@ node() { values.put('ansiblePlaybook', ansiblePlaybook) values.put('ansibleExtraArgs', ansibleExtraArgs) ansible_playbook_run(values) - archiveArtifacts artifacts: "lp_artifacts.zip:${artifact_version}", fingerprint: true, onlyIfSuccessful: true + archiveArtifacts artifacts: "lp_artifacts.zip:${values.artifact_version}", fingerprint: true, onlyIfSuccessful: true archiveArtifacts artifacts: 'metadata.json', onlyIfSuccessful: true } } From 2a1f4862610209b5f52784dcdb6b32cb918e7343 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Thu, 10 Jan 2019 14:15:58 +0530 Subject: [PATCH 0655/1345] Create artifacts-download.yml --- ansible/artifacts-download.yml | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 ansible/artifacts-download.yml diff --git a/ansible/artifacts-download.yml b/ansible/artifacts-download.yml new file mode 100644 index 0000000000..64731526a2 --- /dev/null +++ b/ansible/artifacts-download.yml @@ -0,0 +1,10 @@ +--- +- hosts: {{ remote }} + become: yes + vars_files: + - ['{{inventory_dir}}/secrets.yml', 'secrets/{{env}}.yml'] + environment: + AZURE_STORAGE_ACCOUNT: "{{ artifacts_storage_account }}" + AZURE_STORAGE_KEY: "{{ artifact_storage_key }}" + roles: + - artifacts-download-azure From 3a204a59e864cce8870b1476699359cff4f1b4b9 Mon Sep 17 00:00:00 2001 From: msknext Date: Thu, 10 Jan 2019 14:21:42 +0530 Subject: [PATCH 0656/1345] download artifact roles --- ansible/roles/artifacts-download-azure/meta/main.yml | 2 ++ ansible/roles/artifacts-download-azure/tasks/main.yml | 8 ++++++++ ansible/roles/artifacts-upload-azure/tasks/main.yml | 1 - 3 files changed, 10 insertions(+), 1 deletion(-) create mode 100644 ansible/roles/artifacts-download-azure/meta/main.yml create mode 100644 ansible/roles/artifacts-download-azure/tasks/main.yml diff --git a/ansible/roles/artifacts-download-azure/meta/main.yml b/ansible/roles/artifacts-download-azure/meta/main.yml new file mode 100644 index 0000000000..23b18a800a --- /dev/null +++ b/ansible/roles/artifacts-download-azure/meta/main.yml @@ -0,0 +1,2 @@ +dependencies: + - azure-cli \ No newline at end of file diff --git a/ansible/roles/artifacts-download-azure/tasks/main.yml b/ansible/roles/artifacts-download-azure/tasks/main.yml new file mode 100644 index 0000000000..568a7b5ce2 --- /dev/null +++ b/ansible/roles/artifacts-download-azure/tasks/main.yml @@ -0,0 +1,8 @@ +--- +- name: Ensure azure blob storage container exists + command: az storage container exists --name {{ artifacts_container }} + +- name: Upload to azure blob storage + command: az storage blob download -c {{ artifacts_container }} --name {{ artifact }} -f {{ artifact_path }} + async: 100 + poll: 10 diff --git a/ansible/roles/artifacts-upload-azure/tasks/main.yml b/ansible/roles/artifacts-upload-azure/tasks/main.yml index 6bd3fb8244..07977a6ed0 100644 --- a/ansible/roles/artifacts-upload-azure/tasks/main.yml +++ b/ansible/roles/artifacts-upload-azure/tasks/main.yml @@ -1,7 +1,6 @@ --- - name: Ensure azure blob storage container exists command: az storage container create --name {{ artifacts_container }} - ignore_errors: true - name: Upload to azure blob storage command: az storage blob upload -c {{ artifacts_container }} --name {{ artifact }} -f {{ artifact_path }} From bc1320b6df027ae478c8e7c2a598871a37a6a35f Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Thu, 10 Jan 2019 14:24:46 +0530 Subject: [PATCH 0657/1345] Create Jenkinsfile.deploy --- .../learning-platform/Jenkinsfile.deploy | 46 +++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 pipelines/deploy/learning-platform/Jenkinsfile.deploy diff --git a/pipelines/deploy/learning-platform/Jenkinsfile.deploy b/pipelines/deploy/learning-platform/Jenkinsfile.deploy new file mode 100644 index 0000000000..d7c9f4196a --- /dev/null +++ b/pipelines/deploy/learning-platform/Jenkinsfile.deploy @@ -0,0 +1,46 @@ +//@Library('deploy-conf') _ +node() { + try { + String ANSI_GREEN = "\u001B[32m" + String ANSI_NORMAL = "\u001B[0m" + String ANSI_BOLD = "\u001B[1m" + String ANSI_RED = "\u001B[31m" + String ANSI_YELLOW = "\u001B[33m" + + stage('checkout public repo') { + cleanWs() + checkout scm + } + stage('define params') { + def values = lp_dp_params() + if(values == "first run"){ + currentBuild.result = 'SUCCESS' + return + } + ansiColor('xterm') { + stage('get artifact') { + if (params.artifact_source == "Remote") { + println(ANSI_BOLD + ANSI_YELLOW + '''\ + Option chosen is Remote, ignoring any previously copied artifacts and new artifacts will be downloaded from remote source + '''.stripIndent().replace("\n", " ") + ANSI_NORMAL) + currentWs = sh(returnStdout: true, script: 'pwd').trim() + artifact= values.artifact_name + ":" + values.artifact_version + ansiblePlaybook = "${currentWs}/ansible/artifacts-download.yml" + ansibleExtraArgs = """\ + --extra-vars "artifact=${artifact} + artifact_path=${currentWs}/${artifact}" + --vault-password-file /home/ops/vault + """.stripIndent().replace("\n", " ") + values.put('currentWs', currentWs) + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + ansible_playbook_run(values) + } + } + } + } + } + catch (err) { + throw err + } +} From ab3e9ec06d2366ad61beb3e1c37d376259635d58 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Thu, 10 Jan 2019 14:27:48 +0530 Subject: [PATCH 0658/1345] Load library --- pipelines/deploy/learning-platform/Jenkinsfile.deploy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pipelines/deploy/learning-platform/Jenkinsfile.deploy b/pipelines/deploy/learning-platform/Jenkinsfile.deploy index d7c9f4196a..714d8d1a69 100644 --- a/pipelines/deploy/learning-platform/Jenkinsfile.deploy +++ b/pipelines/deploy/learning-platform/Jenkinsfile.deploy @@ -1,4 +1,4 @@ -//@Library('deploy-conf') _ +@Library('deploy-conf') _ node() { try { String ANSI_GREEN = "\u001B[32m" From fdc461a5a9df0b4c9c7c136c64ba722a0aff73a0 Mon Sep 17 00:00:00 2001 From: msknext Date: Thu, 10 Jan 2019 09:06:02 +0000 Subject: [PATCH 0659/1345] updated download role --- ansible/artifacts-download.yml | 2 +- ansible/roles/artifacts-download-azure/tasks/main.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ansible/artifacts-download.yml b/ansible/artifacts-download.yml index 64731526a2..90ab74a0f7 100644 --- a/ansible/artifacts-download.yml +++ b/ansible/artifacts-download.yml @@ -1,5 +1,5 @@ --- -- hosts: {{ remote }} +- hosts: localhost become: yes vars_files: - ['{{inventory_dir}}/secrets.yml', 'secrets/{{env}}.yml'] diff --git a/ansible/roles/artifacts-download-azure/tasks/main.yml b/ansible/roles/artifacts-download-azure/tasks/main.yml index 568a7b5ce2..820039c25a 100644 --- a/ansible/roles/artifacts-download-azure/tasks/main.yml +++ b/ansible/roles/artifacts-download-azure/tasks/main.yml @@ -2,7 +2,7 @@ - name: Ensure azure blob storage container exists command: az storage container exists --name {{ artifacts_container }} -- name: Upload to azure blob storage +- name: Download from azure blob storage command: az storage blob download -c {{ artifacts_container }} --name {{ artifact }} -f {{ artifact_path }} async: 100 poll: 10 From 979814be74b90b0b7ca3df0004b01e7d4177f717 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Thu, 10 Jan 2019 16:32:01 +0530 Subject: [PATCH 0660/1345] Delete Jenkinsfile.deploy --- .../learning-platform/Jenkinsfile.deploy | 46 ------------------- 1 file changed, 46 deletions(-) delete mode 100644 pipelines/deploy/learning-platform/Jenkinsfile.deploy diff --git a/pipelines/deploy/learning-platform/Jenkinsfile.deploy b/pipelines/deploy/learning-platform/Jenkinsfile.deploy deleted file mode 100644 index 714d8d1a69..0000000000 --- a/pipelines/deploy/learning-platform/Jenkinsfile.deploy +++ /dev/null @@ -1,46 +0,0 @@ -@Library('deploy-conf') _ -node() { - try { - String ANSI_GREEN = "\u001B[32m" - String ANSI_NORMAL = "\u001B[0m" - String ANSI_BOLD = "\u001B[1m" - String ANSI_RED = "\u001B[31m" - String ANSI_YELLOW = "\u001B[33m" - - stage('checkout public repo') { - cleanWs() - checkout scm - } - stage('define params') { - def values = lp_dp_params() - if(values == "first run"){ - currentBuild.result = 'SUCCESS' - return - } - ansiColor('xterm') { - stage('get artifact') { - if (params.artifact_source == "Remote") { - println(ANSI_BOLD + ANSI_YELLOW + '''\ - Option chosen is Remote, ignoring any previously copied artifacts and new artifacts will be downloaded from remote source - '''.stripIndent().replace("\n", " ") + ANSI_NORMAL) - currentWs = sh(returnStdout: true, script: 'pwd').trim() - artifact= values.artifact_name + ":" + values.artifact_version - ansiblePlaybook = "${currentWs}/ansible/artifacts-download.yml" - ansibleExtraArgs = """\ - --extra-vars "artifact=${artifact} - artifact_path=${currentWs}/${artifact}" - --vault-password-file /home/ops/vault - """.stripIndent().replace("\n", " ") - values.put('currentWs', currentWs) - values.put('ansiblePlaybook', ansiblePlaybook) - values.put('ansibleExtraArgs', ansibleExtraArgs) - ansible_playbook_run(values) - } - } - } - } - } - catch (err) { - throw err - } -} From aa0aca05c6f54d1109486ae2eba31b095441fedd Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Thu, 10 Jan 2019 16:32:14 +0530 Subject: [PATCH 0661/1345] Delete Jenkinsfile.push --- .../deploy/learning-platform/Jenkinsfile.push | 34 ------------------- 1 file changed, 34 deletions(-) delete mode 100644 pipelines/deploy/learning-platform/Jenkinsfile.push diff --git a/pipelines/deploy/learning-platform/Jenkinsfile.push b/pipelines/deploy/learning-platform/Jenkinsfile.push deleted file mode 100644 index bbae483400..0000000000 --- a/pipelines/deploy/learning-platform/Jenkinsfile.push +++ /dev/null @@ -1,34 +0,0 @@ -@Library('deploy-conf') _ -node() { - try { - stage('checkout public repo') { - cleanWs() - checkout scm - } - stage('define params') { - def values = lp_dp_params() - if(values == "first run"){ - currentBuild.result = 'SUCCESS' - return - } - println values - currentWs = sh(returnStdout: true, script: 'pwd').trim() - artifact= values.artifact_name + ":" + values.artifact_version - ansiblePlaybook = "${currentWs}/ansible/artifacts-upload.yml" - ansibleExtraArgs = """\ - --extra-vars "artifact=${artifact} - artifact_path=${currentWs}/${artifact}" - --vault-password-file /home/ops/vault - """.stripIndent().replace("\n", " ") - values.put('currentWs', currentWs) - values.put('ansiblePlaybook', ansiblePlaybook) - values.put('ansibleExtraArgs', ansibleExtraArgs) - ansible_playbook_run(values) - archiveArtifacts artifacts: "lp_artifacts.zip:${values.artifact_version}", fingerprint: true, onlyIfSuccessful: true - archiveArtifacts artifacts: 'metadata.json', onlyIfSuccessful: true - } - } - catch (err) { - throw err - } -} From cd6c6e7c816126b58aff41763ef6f9040ac02fdc Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Thu, 10 Jan 2019 20:07:15 +0530 Subject: [PATCH 0662/1345] Update deploy.yml --- ansible/deploy.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/deploy.yml b/ansible/deploy.yml index eeb7f849b3..492d82d18d 100644 --- a/ansible/deploy.yml +++ b/ansible/deploy.yml @@ -23,7 +23,7 @@ vars_files: - ['{{inventory_dir}}/secrets.yml', 'secrets/{{env}}.yml'] roles: - - acr-docker +# - acr-docker - stack-sunbird tags: - stack-sunbird From ef63d31e9a0736e26c542cf284fe173175885f50 Mon Sep 17 00:00:00 2001 From: SMY ALTAMASH <30286162+SMYALTAMASH@users.noreply.github.com> Date: Sat, 12 Jan 2019 12:21:36 +0530 Subject: [PATCH 0663/1345] Release 1.13 (#281) * Issue #000 cqlsh: Changing the cassandra migration repo * Issue #000 monitor: Monitoring limits for containers * Issue #000 monitor: Monitoring and logging limits for containers * Issue #000 jenkins: jenkins limit memory * Issue #000 jenkins: replicas change * Issue #000 jenkins: replicas change * Issue #000 limit: limiting memory for logstash * Issues #SB-545 feat: new api for tnc * Issues #SB-545 feat: new api for tnc * Issue #000 Chore: Create Build image for player * Issue #000 chore: creating prebuild images * Issue #000 feat: Optimizing build image * Issue #000 feat: Added maintainer info * Issues #SB-00 feat: onboarding api for sending otp and verifying otp * Issues #SB-00 fix: chanegs otp from user prefix to otp prefix * Issues #SB-00 feat: onboarding get user by key api * Issue #000 es: es curator upgraded version * Issue #000 es: es curator version updation * Issue #000 es: logger limit updation * Issue #000 kibana: Kibana image change * Issue #000 es: es and log-es merge * Issue #000 es: es and log-es merge * Issue #000 vars: release-1.13 vars * Issue #000 keycloak: keycloak otp changes * Issue #000 chore: Updated google-oauth variable * Issue #000 chore: Updated env variable * Issue #000 chore: Added env variables * Issue #00 feat: script to create azure vm * Issue #000 vars: release-1.13 vars * Issues #SB-00 fix: removing user create v3 api and making system setting get and list api as publicUser * Issue #000 chore: updated player variables * Issue #000 vars: vars for portal * Issue #000 feat: Added oauth2callback for mobileteam * Issues #SB-00 fix:changes for get user by key api * Issue # 000: Adding 1.13 install scripts * Issue #SB-9791 chore: Provide mobile app key & secret for Teacher Aid (#276) * Issue # 000: DO-409 Build only from master branch * Issue #00 fix: removing telemetry_pdata_ver var since it will read directly by properties file * Issue #00 fix: adding new learner service variable * #000: Issue Updating sunbird_lock_expiry_time value * Issue #000 feat: Added more documentation for cassandra_backup * Issue #000 feat: Added documentation for cassandra_restore * Issue #000 feat: Added documention for cassandra_restore * Issue #000 feat: flac8 complient. * Issue #000 feat: flac8 complient. * Issue #000 chore: Added sunbird_help_link_visibility * Issue #000 var: added missing variable * Issue #00 fix: cassandra backup dir fix * Issue #000 apis: onboarding API issue with statsd exporter * Issue #000 user: deployer name change * Issue #00 feat: ansible role for artifacts upload (#278) * Issue #SB-7902 chore:Updated getUserByKey API access to appUpdate (#279) --- ansible/artifacts-upload.yml | 6 + ansible/inventories/sample/group_vars/sample | 10 ++ .../artifacts-upload-azure/meta/main.yml | 2 + .../artifacts-upload-azure/tasks/main.yml | 16 ++ .../roles/cassandra-backup/vars/.main.yml.swp | Bin 0 -> 12288 bytes ansible/roles/cassandra-backup/vars/main.yml | 3 +- ansible/roles/es-curator/defaults/main.yml | 2 +- .../roles/es5-snapshot-purge/meta/main.yml | 2 +- ansible/roles/keycloak/tasks/provision.yml | 2 +- ansible/roles/kong-api/defaults/main.yml | 147 ++++++++++++++---- .../stack-jenkins-slave/defaults/main.yml | 8 +- .../templates/stack-jenkins-slave.yml | 6 +- ansible/roles/stack-logger/defaults/main.yml | 12 +- .../stack-logger/templates/stack-logger.yml | 14 +- ansible/roles/stack-monitor/defaults/main.yml | 18 ++- .../stack-monitor/templates/stack-monitor.yml | 16 +- .../stack-proxy/templates/proxy-default.conf | 8 +- .../templates/sunbird_content-service.env | 3 + .../templates/sunbird_learner-service.env | 4 +- .../templates/sunbird_player.env | 7 + deploy/azure_vm/azure_create_vm.sh | 102 ++++++++++++ deploy/azure_vm/create_vm | 11 ++ images/BuildImages/Android/Dockerfile | 5 + images/BuildImages/player/Dockerfile | 8 + 24 files changed, 347 insertions(+), 65 deletions(-) create mode 100644 ansible/artifacts-upload.yml create mode 100644 ansible/roles/artifacts-upload-azure/meta/main.yml create mode 100644 ansible/roles/artifacts-upload-azure/tasks/main.yml create mode 100644 ansible/roles/cassandra-backup/vars/.main.yml.swp create mode 100755 deploy/azure_vm/azure_create_vm.sh create mode 100644 deploy/azure_vm/create_vm create mode 100644 images/BuildImages/Android/Dockerfile create mode 100644 images/BuildImages/player/Dockerfile diff --git a/ansible/artifacts-upload.yml b/ansible/artifacts-upload.yml new file mode 100644 index 0000000000..6eb883c1e5 --- /dev/null +++ b/ansible/artifacts-upload.yml @@ -0,0 +1,6 @@ +--- +- hosts: localhost + vars_files: + - ['{{inventory_dir}}/secrets.yml', 'secrets/{{env}}.yml'] + roles: + - artifacts-upload-azure diff --git a/ansible/inventories/sample/group_vars/sample b/ansible/inventories/sample/group_vars/sample index 114f1271a7..a5ec70503c 100644 --- a/ansible/inventories/sample/group_vars/sample +++ b/ansible/inventories/sample/group_vars/sample @@ -373,3 +373,13 @@ sunbird_lock_expiry_time: 1800 sunbird_content_service_local_base_url: http://content-service:5000 sunbird_kafka_host: sunbird_qrimage_topic: local.qrimage.request + + +sunbird_otp_expiration: 1800 +sunbird_otp_length: 6 +sunbird_google_oauth_clientId: +sunbird_google_oauth_clientSecret: +sunbird_google_captcha_site_key: +sunbird_google_keycloak_client_id: +sunbird_google_keycloak_secret: +sunbird_content_azure_storage_container: diff --git a/ansible/roles/artifacts-upload-azure/meta/main.yml b/ansible/roles/artifacts-upload-azure/meta/main.yml new file mode 100644 index 0000000000..23b18a800a --- /dev/null +++ b/ansible/roles/artifacts-upload-azure/meta/main.yml @@ -0,0 +1,2 @@ +dependencies: + - azure-cli \ No newline at end of file diff --git a/ansible/roles/artifacts-upload-azure/tasks/main.yml b/ansible/roles/artifacts-upload-azure/tasks/main.yml new file mode 100644 index 0000000000..62c424f87a --- /dev/null +++ b/ansible/roles/artifacts-upload-azure/tasks/main.yml @@ -0,0 +1,16 @@ +--- +- name: Ensure azure blob storage container exists + command: az storage container create --name {{ artifacts_container }} + ignore_errors: true + environment: + AZURE_STORAGE_ACCOUNT: "{{ artifacts_storage_account }}" + AZURE_STORAGE_KEY: "{{ artifact_storage_key }}" + + +- name: Upload to azure blob storage + command: az storage blob upload-batch -d {{ artifacts_container }} -s {{ artifacts }} + environment: + AZURE_STORAGE_ACCOUNT: "{{ artifacts_storage_account }}" + AZURE_STORAGE_KEY: "{{ artifacts_storage_key }}" + async: 100 + poll: 10 diff --git a/ansible/roles/cassandra-backup/vars/.main.yml.swp b/ansible/roles/cassandra-backup/vars/.main.yml.swp new file mode 100644 index 0000000000000000000000000000000000000000..105e664e7924d7694930923b0b42c6c29b4ae782 GIT binary patch literal 12288 zcmeI&J5Iwe7{Kwb3~Y#sULe5GDRp^BAZ8W@Mv#yyRZe2ms7V~zP9+xDxe^!P3~&t& zK*DpPVnp=+NtWe@Y=6JavXk-U*?Dv{I+Qm0A}?2i$)ns$e_dpzouBD$V0qX&L`O)XFzilDjO<%)-`Q>B{FxVU)9l@ha8c>nd|PPINkNYPD#O zrAnPwqnon$#kNdA0D&f4$HyCTu)jC%Fm`vgqruh%E(joi00IagfB*srAh1FLq3+3D zoA263&b=S%6(S*31Q0*~0R#|0009ILKmY**{+)o%L>@Lpp4-yB|9{^9yY^GpM<9Rz p0tg_000IagfB*srAb`MM7Wn!&KXulIX_mW_XsAp`zrWNE + +# update the VM details in create_vm file + +# checking for argumnent +if [[ $# == '0' ]]; then + echo "Please provide the Input file path" + echo "Usage: $0 " + exit 1 +fi + +# reading input file values +IFS="," +grep -v -e "^#" -e "^$" $1 | while read -ra LINE +do + rg="${LINE[0]}" + location="${LINE[1]}" + vnet="${LINE[2]}" + sn="${LINE[3]}" + ap="${LINE[4]}" + sp="${LINE[5]}" + nsg="${LINE[6]}" + aset="${LINE[7]}" + vname="${LINE[8]}" + size="${LINE[9]}" + baseos="${LINE[10]}" + uname="${LINE[11]}" + pubip="${LINE[12]}" + pubkey="${LINE[13]}" + +echo -e "\e[1;32mVM DETAILS\e[0m" +echo -e "RESOURCE_GROUP=$rg\nLOCATION=$location\nVNET_NAME=$vnet\nSUBNET_NAME=$sn\nADDRESS_PREFIX=$ap\nSUBNET_PREFIX=$sp\nNSG=$nsg\nAVAIL_SET=$aset\nVM_NAME=$vname\nSIZE=$size\nOS=$baseos\nUSER=$uname\nPUBLIC_IP=$pubip\nPATH_TO_PUB_KEY=$pubkey" + + +# valdating resource group and create if not exists +erg=$(az group list -o table | awk -F " " '{print $1}' | awk 'NR>2' | grep -E "^$rg$") + +if [[ $? == "0" ]]; then + echo -e "Resource group with this name \e[1;31m$rg\e[0m already exists" +else + echo -e "Creating the Resource group \e[1;32m$rg..\e[0m" + az group create --name $rg --location $location +fi + +# valdating virtual network and create if not exists +evnet=$(az network vnet list -o table | awk -F " " '{print $4}' | awk 'NR>2' | grep -E "^$vnet$") + +if [[ $? == "0" ]]; then + echo -e "Vnet with this name \e[1;31m$vnet\e[0m already exists" +else + echo -e "Creating the Vnet \e[1;32m$vnet..\e[0m" + az network vnet create --resource-group $rg --name $vnet --address-prefix $ap --subnet-name $sn --subnet-prefix $sp +fi + + +# valdating network security group and create if not exists +ensg=$(az network nsg list -g $rg -o table | awk -F " " '{print $2}' | awk 'NR>2' | grep -E "^$nsg$") + +if [[ $? == "0" ]]; then + echo -e "Security group with this name \e[1;31m$nsg\e[0m already exists" +else + echo -e "Creating the Security group \e[1;32m$nsg..\e[0m" + az network nsg create --name $nsg --resource-group $rg + az network nsg rule create --resource-group $rg --nsg-name $nsg --name ssh --protocol tcp --priority 1000 --destination-port-range 22 --access allow +fi + +# valdating availability set and create if not exists +easet=$(az vm availability-set list -g $aset -o table | awk -F " " '{print $2}' | awk 'NR>2' | grep -E "^$aset$") + +if [[ $? == "0" ]]; then + echo -e "Availability set with this name \e[1;31m$aset\e[0m already exists" +else + echo -e "Creating the Avaiablity set \e[1;32m$aset..\e[0m" + az vm availability-set create --resource-group $rg --name $aset +fi + +# attaching public ip +if [[ "$pubip" = "Yes" || "$pubip" = "yes" ]]; then + echo "Public IP will be assigned to the instance" +elif [[ "$pubip" = "No" || "$pubip" = "no" ]]; then + echo "Public IP will not be assigned" +else + echo "Wrong input! please enter 'Yes' for Yes or 'No' for No" +fi + + +# valdating vm and create if not exists +evname=$(az vm list -g $rg -o table | awk -F " " '{print $2}' | awk 'NR>2' | grep -E "^$vname$") + +if [[ $? == "0" ]]; then + echo -e "Virtual Machine with this name \e[1;31m$vname\e[0m already exists" +elif [[ "$pubip" == "Yes" || "$pubip" == "yes" ]]; then + echo -e "Creating Your Virtual Machine \e[1;32m$vname\e[0m hold on.." + az vm create --resource-group $rg --name $vname --location $location --availability-set $aset --image $baseos --admin-username $uname --vnet-name $vnet --subnet $sn --nsg $nsg --size $size --ssh-key-value $pubkey +else + echo -e "Creating Your Virtual Machine \e[1;32m$vname\e[0m hold on.." + az vm create --resource-group $rg --name $vname --location $location --availability-set $aset --image $baseos --admin-username $uname --vnet-name $vnet --subnet $sn --nsg $nsg --size $size --public-ip-address "" --ssh-key-value $pubkey +fi + +done diff --git a/deploy/azure_vm/create_vm b/deploy/azure_vm/create_vm new file mode 100644 index 0000000000..3b270ff21d --- /dev/null +++ b/deploy/azure_vm/create_vm @@ -0,0 +1,11 @@ +############################################################################################################################### +# # +# # +########################### ENTER VALUES WITH COMMA SEPERATED WITH EACH VM DETAILS IN EACH LINE ############################### +# # +# # +########################### LEAVE ADDRESS_PREFIX and SUBNET_PREFIX EMPTY if SUBNET ALREADY CREATED ############################ +# # +# # +#RESOURCE_GROUP,LOCATION,VNET_NAME,SUBNET_NAME,ADDRESS_PREFIX,SUBNET_PREFIX,NSG,AVAIL_SET,VM_NAME,SIZE,OS,USER,PATH_TO_PUB_KEY +test-rg,centralindia,test-vnet,test-subnet,22.0.0.0/16,22.0.0.0/24,test-nsg,test-aset,test-vm,Standard_A2_v2,UbuntuLTS,test-user,yes,path_to_pub_key diff --git a/images/BuildImages/Android/Dockerfile b/images/BuildImages/Android/Dockerfile new file mode 100644 index 0000000000..2d3e51bce7 --- /dev/null +++ b/images/BuildImages/Android/Dockerfile @@ -0,0 +1,5 @@ +FROM circleci/android:api-28-node8-alpha +MAINTAINER Rajesh Rajendran +WORKDIR /home/circleci +# node-sass is not installing as it's executing external scripts +RUN sudo npm install -g ionic cordova node-sass --unsafe-perm diff --git a/images/BuildImages/player/Dockerfile b/images/BuildImages/player/Dockerfile new file mode 100644 index 0000000000..60ecf22866 --- /dev/null +++ b/images/BuildImages/player/Dockerfile @@ -0,0 +1,8 @@ +from node:8.11-slim +RUN echo "deb http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list +RUN wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - +RUN apt-get update && apt-get -y install libxpm4 libxrender1 libgtk2.0-0 libnss3 libgconf-2-4 \ + xvfb gtk2-engines-pixbuf \ + xfonts-cyrillic xfonts-100dpi xfonts-75dpi xfonts-base xfonts-scalable \ + google-chrome-stable git \ + && apt-get clean && rm -rf /var/lib/apt/lists/ From 67ece805f7df0876de6c7f444f78cd20811de888 Mon Sep 17 00:00:00 2001 From: kaliraja <34502260+Kaali09@users.noreply.github.com> Date: Sat, 12 Jan 2019 14:34:42 +0530 Subject: [PATCH 0664/1345] updating cassandra default connection host (#280) --- deploy/cassandra_restore.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deploy/cassandra_restore.py b/deploy/cassandra_restore.py index 9d5ab98745..cbc40b0079 100755 --- a/deploy/cassandra_restore.py +++ b/deploy/cassandra_restore.py @@ -26,7 +26,7 @@ from argparse import ArgumentParser parser = ArgumentParser(description="Restore cassandra snapshot") -parser.add_argument("--host", default="127.0.0.1", help="ip address of cassandra instance. \ +parser.add_argument("--host", default="localhost", help="ip address of cassandra instance. \ Default: 127.0.0.1") parser.add_argument("snapshotdir", metavar="snapshotdirectory", help="snapshot directory name or path") args = parser.parse_args() From f81bdfbda20be11b2106f28825e967556b8bbcfa Mon Sep 17 00:00:00 2001 From: S M Y Date: Mon, 14 Jan 2019 11:11:19 +0530 Subject: [PATCH 0665/1345] Issue #000 remove: removing swap files --- .../roles/cassandra-backup/vars/.main.yml.swp | Bin 12288 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 ansible/roles/cassandra-backup/vars/.main.yml.swp diff --git a/ansible/roles/cassandra-backup/vars/.main.yml.swp b/ansible/roles/cassandra-backup/vars/.main.yml.swp deleted file mode 100644 index 105e664e7924d7694930923b0b42c6c29b4ae782..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12288 zcmeI&J5Iwe7{Kwb3~Y#sULe5GDRp^BAZ8W@Mv#yyRZe2ms7V~zP9+xDxe^!P3~&t& zK*DpPVnp=+NtWe@Y=6JavXk-U*?Dv{I+Qm0A}?2i$)ns$e_dpzouBD$V0qX&L`O)XFzilDjO<%)-`Q>B{FxVU)9l@ha8c>nd|PPINkNYPD#O zrAnPwqnon$#kNdA0D&f4$HyCTu)jC%Fm`vgqruh%E(joi00IagfB*srAh1FLq3+3D zoA263&b=S%6(S*31Q0*~0R#|0009ILKmY**{+)o%L>@Lpp4-yB|9{^9yY^GpM<9Rz p0tg_000IagfB*srAb`MM7Wn!&KXulIX_mW_XsAp`zrWNE Date: Mon, 14 Jan 2019 16:59:36 +0530 Subject: [PATCH 0666/1345] Issue #000 realm: adding realm with multinode --- ansible/roles/keycloak/tasks/keycloak_bootstrap.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/ansible/roles/keycloak/tasks/keycloak_bootstrap.yml b/ansible/roles/keycloak/tasks/keycloak_bootstrap.yml index 27ea05bc68..893c1e030f 100644 --- a/ansible/roles/keycloak/tasks/keycloak_bootstrap.yml +++ b/ansible/roles/keycloak/tasks/keycloak_bootstrap.yml @@ -12,6 +12,9 @@ - name: Copy realm json file to tmp location template: src="keycloak-realm.j2" dest="/tmp/keycloak-realm.json" mode="0644" +- name: copy the keycloak_main module to server + copy: src="{{ role_path }}/files/python-keycloak-0.12.0/keycloak/keycloak_main.py" dest="/tmp/keycloak_main.py" mode="0755" + - name: Copy user manager roles file to tmp location copy: src="files/python-keycloak-0.12.0/roles.json" dest="/tmp/roles.json" mode="0644" @@ -20,7 +23,7 @@ seconds: 100 - name: Run the keycloak bootstrap script - shell: cd {{ role_path }}/files/python-keycloak-0.12.0/keycloak/ && python keycloak_main.py /tmp/keycloak-bootstrap.conf.json + shell: python /tmp/keycloak_main.py /tmp/keycloak-bootstrap.conf.json register: out until: '"404" not in out.stderr' retries: 2 From 54a2e59f30ddb98ec2152e7194a81fa14a48297a Mon Sep 17 00:00:00 2001 From: S M Y Date: Mon, 14 Jan 2019 17:07:44 +0530 Subject: [PATCH 0667/1345] Issue #000 realm: adding realm with multinode --- ansible/roles/keycloak/tasks/keycloak_bootstrap.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/ansible/roles/keycloak/tasks/keycloak_bootstrap.yml b/ansible/roles/keycloak/tasks/keycloak_bootstrap.yml index 893c1e030f..668bd68de1 100644 --- a/ansible/roles/keycloak/tasks/keycloak_bootstrap.yml +++ b/ansible/roles/keycloak/tasks/keycloak_bootstrap.yml @@ -3,8 +3,11 @@ port: 8080 delay: 5 +- name: Copy setup file to tmp location + template: src="{{ role_path }}/files/python-keycloak-0.12.0/setup.py" dest="/tmp/setup.py" mode="0755" + - name: Initialize python library to run keycloak bootstrap script - shell: cd {{ role_path }}/files/python-keycloak-0.12.0 && python setup.py install + shell: python /tmp/setup.py install - name: Save keycalok vars to json template: src="keycloak-bootstrap.conf.j2" dest="/tmp/keycloak-bootstrap.conf.json" mode="0644" From a7d54a9ee4e4e79c3c7ec10e02a375a17625da8e Mon Sep 17 00:00:00 2001 From: S M Y Date: Mon, 14 Jan 2019 17:22:03 +0530 Subject: [PATCH 0668/1345] Issue #000 keyclaok: keycloak changes --- ansible/roles/keycloak/tasks/keycloak_bootstrap.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/ansible/roles/keycloak/tasks/keycloak_bootstrap.yml b/ansible/roles/keycloak/tasks/keycloak_bootstrap.yml index 668bd68de1..b471b55957 100644 --- a/ansible/roles/keycloak/tasks/keycloak_bootstrap.yml +++ b/ansible/roles/keycloak/tasks/keycloak_bootstrap.yml @@ -3,6 +3,10 @@ port: 8080 delay: 5 +- name: install dependencies for keycloak to work + become: yes + apt: name=python-setuptools update_cache=yes + - name: Copy setup file to tmp location template: src="{{ role_path }}/files/python-keycloak-0.12.0/setup.py" dest="/tmp/setup.py" mode="0755" From 6c49d95cfe3a62e5f5c4baf9db71cb82ec9c2e11 Mon Sep 17 00:00:00 2001 From: S M Y Date: Mon, 14 Jan 2019 17:39:50 +0530 Subject: [PATCH 0669/1345] Issue #000 remove: reverting changes --- .../roles/keycloak/tasks/keycloak_bootstrap.yml | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) diff --git a/ansible/roles/keycloak/tasks/keycloak_bootstrap.yml b/ansible/roles/keycloak/tasks/keycloak_bootstrap.yml index b471b55957..27ea05bc68 100644 --- a/ansible/roles/keycloak/tasks/keycloak_bootstrap.yml +++ b/ansible/roles/keycloak/tasks/keycloak_bootstrap.yml @@ -3,15 +3,8 @@ port: 8080 delay: 5 -- name: install dependencies for keycloak to work - become: yes - apt: name=python-setuptools update_cache=yes - -- name: Copy setup file to tmp location - template: src="{{ role_path }}/files/python-keycloak-0.12.0/setup.py" dest="/tmp/setup.py" mode="0755" - - name: Initialize python library to run keycloak bootstrap script - shell: python /tmp/setup.py install + shell: cd {{ role_path }}/files/python-keycloak-0.12.0 && python setup.py install - name: Save keycalok vars to json template: src="keycloak-bootstrap.conf.j2" dest="/tmp/keycloak-bootstrap.conf.json" mode="0644" @@ -19,9 +12,6 @@ - name: Copy realm json file to tmp location template: src="keycloak-realm.j2" dest="/tmp/keycloak-realm.json" mode="0644" -- name: copy the keycloak_main module to server - copy: src="{{ role_path }}/files/python-keycloak-0.12.0/keycloak/keycloak_main.py" dest="/tmp/keycloak_main.py" mode="0755" - - name: Copy user manager roles file to tmp location copy: src="files/python-keycloak-0.12.0/roles.json" dest="/tmp/roles.json" mode="0644" @@ -30,7 +20,7 @@ seconds: 100 - name: Run the keycloak bootstrap script - shell: python /tmp/keycloak_main.py /tmp/keycloak-bootstrap.conf.json + shell: cd {{ role_path }}/files/python-keycloak-0.12.0/keycloak/ && python keycloak_main.py /tmp/keycloak-bootstrap.conf.json register: out until: '"404" not in out.stderr' retries: 2 From db0c1217907092b0a71915202e46d0598d8e8e46 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Tue, 15 Jan 2019 21:30:59 +0530 Subject: [PATCH 0670/1345] Update build.sh --- images/openbadger/build.sh | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/images/openbadger/build.sh b/images/openbadger/build.sh index 4ff688a5cd..3d7182896f 100755 --- a/images/openbadger/build.sh +++ b/images/openbadger/build.sh @@ -1,13 +1,10 @@ #!/bin/sh # Build script # set -o errexit -e () { - echo $( echo ${1} | jq ".${2}" | sed 's/\"//g') -} -m=$(./images/openbadger/metadata.sh) +build_tag=$1 +name=badger +node=$2 +org=$3 -org=$(e "${m}" "org") -name=$(e "${m}" "name") -version=$(e "${m}" "version") - -docker build -f ./images/openbadger/Dockerfile -t ${org}/${name}:${version}-bronze . +docker build -f ./images/openbadger/Dockerfile -t ${org}/${name}:${build_tag} . +echo {\"image_name\" : \"${name}\", \"image_tag\" : \"${build_tag}\", \"node_name\" : \"$node\"} > metadata.json From dac677b6c9f40d1b4cad93a0ed8668f875bba16f Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Tue, 15 Jan 2019 21:32:48 +0530 Subject: [PATCH 0671/1345] Create Jenkinsfile --- images/openbadger/Jenkinsfile | 60 +++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 images/openbadger/Jenkinsfile diff --git a/images/openbadger/Jenkinsfile b/images/openbadger/Jenkinsfile new file mode 100644 index 0000000000..c600309315 --- /dev/null +++ b/images/openbadger/Jenkinsfile @@ -0,0 +1,60 @@ +node('build-slave') { + try { + String ANSI_GREEN = "\u001B[32m" + String ANSI_NORMAL = "\u001B[0m" + String ANSI_BOLD = "\u001B[1m" + String ANSI_RED = "\u001B[31m" + + if (params.size() == 0){ + properties([[$class: 'RebuildSettings', autoRebuild: false, rebuildDisabled: false], parameters([string(defaultValue: '', description: 'If you want to build from a tag, specify the tag name. If this parameter is blank, latest commit hash will be used to build', name: 'tag', trim: false)])]) + + ansiColor('xterm') { + println (ANSI_BOLD + ANSI_GREEN + '''\ + First run of the job. Parameters created. Stopping the current build. + Please trigger new build and provide parameters if required. + '''.stripIndent().replace("\n"," ") + ANSI_NORMAL) + } + return + } + + stage('Checkout'){ + ansiColor('xterm'){ + if(!env.hub_org){ + println (ANSI_BOLD + ANSI_RED + "Uh Oh! Please set a Jenkins environment variable named hub_org with value as registery/sunbidrded" + ANSI_NORMAL) + error 'Please resolve the errors and rerun..' + } + else + println (ANSI_BOLD + ANSI_GREEN + "Found environment variable named hub_org with value as: " + hub_org + ANSI_NORMAL) + } + cleanWs() + if(params.tag == ""){ + checkout scm + commit_hash = sh(script: 'git rev-parse --short HEAD', returnStdout: true).trim() + branch_name = sh(script: 'git name-rev --name-only HEAD | rev | cut -d "/" -f1| rev', returnStdout: true).trim() + build_tag = branch_name + "_" + commit_hash + } + else { + def scmVars = checkout scm + checkout scm: [$class: 'GitSCM', branches: [[name: "refs/tags/$params.tag"]], userRemoteConfigs: [[url: scmVars.GIT_URL]]] + build_tag = params.tag + } + echo "build_tag: "+build_tag + } + + stage('Build'){ + env.NODE_ENV = "build" + print "Environment will be : ${env.NODE_ENV}" + sh('chmod 777 build.sh') + sh("./images/openbadger/build.sh ${build_tag} ${env.NODE_NAME} ${hub_org}") + } + stage('ArchiveArtifacts'){ + archiveArtifacts "metadata.json" + } + + } + catch (err) { + currentBuild.result = "FAILURE" + throw err + } + +} From 696a7f4ac511db5f5c40b74f19531e8da90075b4 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Tue, 15 Jan 2019 21:41:46 +0530 Subject: [PATCH 0672/1345] Update Jenkinsfile --- images/openbadger/Jenkinsfile | 1 - 1 file changed, 1 deletion(-) diff --git a/images/openbadger/Jenkinsfile b/images/openbadger/Jenkinsfile index c600309315..6de8a0b76f 100644 --- a/images/openbadger/Jenkinsfile +++ b/images/openbadger/Jenkinsfile @@ -44,7 +44,6 @@ node('build-slave') { stage('Build'){ env.NODE_ENV = "build" print "Environment will be : ${env.NODE_ENV}" - sh('chmod 777 build.sh') sh("./images/openbadger/build.sh ${build_tag} ${env.NODE_NAME} ${hub_org}") } stage('ArchiveArtifacts'){ From c225ba21ecae9d28caffaab08c4f219b7f8defa4 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Tue, 15 Jan 2019 22:12:49 +0530 Subject: [PATCH 0673/1345] Update Jenkinsfile --- pipelines/deploy/push/Jenkinsfile | 1 + 1 file changed, 1 insertion(+) diff --git a/pipelines/deploy/push/Jenkinsfile b/pipelines/deploy/push/Jenkinsfile index 4b58c2d568..3910bb0b75 100644 --- a/pipelines/deploy/push/Jenkinsfile +++ b/pipelines/deploy/push/Jenkinsfile @@ -18,6 +18,7 @@ node(){ --extra-vars "hub_org=$hub_org image_name=$values.image_name image_tag=$values.image_tag" --vault-password-file /home/ops/vault """.stripIndent().replace("\n"," ") + values.put('currentWs', currentWs) values.put('ansiblePlaybook', ansiblePlaybook) values.put('ansibleExtraArgs', ansibleExtraArgs) ansible_playbook_run(values) From e0c4d48282da7741a0a64cd79905ee21945d285c Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Tue, 15 Jan 2019 22:57:50 +0530 Subject: [PATCH 0674/1345] Update Jenkinsfile --- pipelines/deploy/push/Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pipelines/deploy/push/Jenkinsfile b/pipelines/deploy/push/Jenkinsfile index 3910bb0b75..ba036994ed 100644 --- a/pipelines/deploy/push/Jenkinsfile +++ b/pipelines/deploy/push/Jenkinsfile @@ -6,7 +6,7 @@ node(){ checkout scm } - stage('define variables') { + stage('define params') { def values = docker_params() if(values == "first run"){ currentBuild.result = 'SUCCESS' From 7a683d8a2c8721908ec966a748bf182d84cd8198 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Tue, 15 Jan 2019 23:01:20 +0530 Subject: [PATCH 0675/1345] Update Jenkinsfile --- pipelines/deploy/content/Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pipelines/deploy/content/Jenkinsfile b/pipelines/deploy/content/Jenkinsfile index c9faf358c7..4b50de5067 100644 --- a/pipelines/deploy/content/Jenkinsfile +++ b/pipelines/deploy/content/Jenkinsfile @@ -6,7 +6,7 @@ node() { checkout scm } - stage('define variables') { + stage('define params') { def values = docker_params() if(values == "first run"){ currentBuild.result = 'SUCCESS' From 88e6a8f23f9503b40e3662213e017348a21891b2 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Tue, 15 Jan 2019 23:01:29 +0530 Subject: [PATCH 0676/1345] Update Jenkinsfile --- pipelines/deploy/learner/Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pipelines/deploy/learner/Jenkinsfile b/pipelines/deploy/learner/Jenkinsfile index e396ed6ada..94bef56b55 100644 --- a/pipelines/deploy/learner/Jenkinsfile +++ b/pipelines/deploy/learner/Jenkinsfile @@ -7,7 +7,7 @@ node() { checkout scm } - stage('define variables') { + stage('define params') { def values = docker_params() if(values == "first run"){ currentBuild.result = 'SUCCESS' From caa663be408c74914b10dac98a9c6717ca55583b Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Tue, 15 Jan 2019 23:01:38 +0530 Subject: [PATCH 0677/1345] Update Jenkinsfile --- pipelines/deploy/player/Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pipelines/deploy/player/Jenkinsfile b/pipelines/deploy/player/Jenkinsfile index e170545039..d5102a3d49 100644 --- a/pipelines/deploy/player/Jenkinsfile +++ b/pipelines/deploy/player/Jenkinsfile @@ -6,7 +6,7 @@ node() { checkout scm } - stage('define variables') { + stage('define params') { def values = docker_params() if(values == "first run"){ currentBuild.result = 'SUCCESS' From a13cc1f5a93c4c179a64d4f41defcf98d8b8133e Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Tue, 15 Jan 2019 23:12:52 +0530 Subject: [PATCH 0678/1345] Create Jenkinsfile --- pipelines/deploy/telemetry/Jenkinsfile | 32 ++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 pipelines/deploy/telemetry/Jenkinsfile diff --git a/pipelines/deploy/telemetry/Jenkinsfile b/pipelines/deploy/telemetry/Jenkinsfile new file mode 100644 index 0000000000..44a21733b7 --- /dev/null +++ b/pipelines/deploy/telemetry/Jenkinsfile @@ -0,0 +1,32 @@ +@Library('deploy-conf') _ +node() { + try { + stage('checkout public repo') { + cleanWs() + checkout scm + } + + stage('define params') { + def values = docker_params() + if(values == "first run"){ + currentBuild.result = 'SUCCESS' + return + } + currentWs = sh(returnStdout: true, script: 'pwd').trim() + ansiblePlaybook = "$currentWs/ansible/deploy.yml" + ansibleExtraArgs = """\ + --tags "stack-sunbird" --extra-vars "hub_org=$hub_org image_name=$values.image_name + image_tag=$values.image_tag service_name=telemetry-service + deploy_telemetry=True" --vault-password-file /home/ops/vault + """.stripIndent().replace("\n"," ") + values.put('currentWs', currentWs) + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + ansible_playbook_run(values) + archiveArtifacts 'metadata.json' + } + } + catch (err) { + throw err + } +} From 11415e44bdef3a974bc42959d2aed124dd286106 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Tue, 15 Jan 2019 23:13:25 +0530 Subject: [PATCH 0679/1345] Create Jenkinsfile --- pipelines/deploy/badger/Jenkinsfile | 32 +++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 pipelines/deploy/badger/Jenkinsfile diff --git a/pipelines/deploy/badger/Jenkinsfile b/pipelines/deploy/badger/Jenkinsfile new file mode 100644 index 0000000000..4353a924b9 --- /dev/null +++ b/pipelines/deploy/badger/Jenkinsfile @@ -0,0 +1,32 @@ +@Library('deploy-conf') _ +node() { + try { + stage('checkout public repo') { + cleanWs() + checkout scm + } + + stage('define params') { + def values = docker_params() + if(values == "first run"){ + currentBuild.result = 'SUCCESS' + return + } + currentWs = sh(returnStdout: true, script: 'pwd').trim() + ansiblePlaybook = "$currentWs/ansible/deploy-badger.yml" + ansibleExtraArgs = """\ + --extra-vars "hub_org=$hub_org image_name=$values.image_name + image_tag=$values.image_tag service_name=badger-service" + --vault-password-file /home/ops/vault + """.stripIndent().replace("\n"," ") + values.put('currentWs', currentWs) + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + ansible_playbook_run(values) + archiveArtifacts 'metadata.json' + } + } + catch (err) { + throw err + } +} From ec7c8b0460d18222af04cc55095d6a9a5d3d7712 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Tue, 15 Jan 2019 23:14:11 +0530 Subject: [PATCH 0680/1345] Create Jenkinsfile --- pipelines/deploy/config-service/Jenkinsfile | 32 +++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 pipelines/deploy/config-service/Jenkinsfile diff --git a/pipelines/deploy/config-service/Jenkinsfile b/pipelines/deploy/config-service/Jenkinsfile new file mode 100644 index 0000000000..e27191e300 --- /dev/null +++ b/pipelines/deploy/config-service/Jenkinsfile @@ -0,0 +1,32 @@ +@Library('deploy-conf') _ +node() { + try { + stage('checkout public repo') { + cleanWs() + checkout scm + } + + stage('define params') { + def values = docker_params() + if(values == "first run"){ + currentBuild.result = 'SUCCESS' + return + } + currentWs = sh(returnStdout: true, script: 'pwd').trim() + ansiblePlaybook = "$currentWs/ansible/deploy.yml" + ansibleExtraArgs = """\ + --tags "stack-sunbird" --extra-vars "hub_org=$hub_org image_name=$values.image_name + image_tag=$values.image_tag service_name=config-service + deploy_config=True" --vault-password-file /home/ops/vault + """.stripIndent().replace("\n"," ") + values.put('currentWs', currentWs) + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + ansible_playbook_run(values) + archiveArtifacts 'metadata.json' + } + } + catch (err) { + throw err + } +} From c7f9a0e49acf077fe9d62b48ca64163bcb38522e Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Tue, 15 Jan 2019 23:32:11 +0530 Subject: [PATCH 0681/1345] Update actor_service.yml --- ansible/roles/stack-sunbird/tasks/actor_service.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/stack-sunbird/tasks/actor_service.yml b/ansible/roles/stack-sunbird/tasks/actor_service.yml index 073b7f571f..4e5e785645 100644 --- a/ansible/roles/stack-sunbird/tasks/actor_service.yml +++ b/ansible/roles/stack-sunbird/tasks/actor_service.yml @@ -4,6 +4,6 @@ ignore_errors: yes - name: Deploy actor service - shell: "docker service create --replicas {{ actor_replicas }} -p 8088:8088 --name actor-service --hostname actor-service --reserve-memory {{ actor_reservation_memory }} --limit-memory {{ actor_limit_memory }} --network application_default --env-file /home/deployer/env/sunbird_actor-service.env {{hub_org}}/{{image_name}}:{{image_tag}}" + shell: "docker service create --replicas {{ actor_replicas }} -p 8088:8088 --name actor-service --hostname actor-service --reserve-memory {{ actor_reservation_memory }} --limit-memory {{ actor_limit_memory }} --network application_default --env-file /home/deployer/env/sunbird_actor-service.env {{hub_org}}/{{image_name}}:{{image_tag}} --with-registry-auth" args: chdir: /home/deployer/stack From 2ff7808710313438b8af1f6f9bf694712b9b78af Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Tue, 15 Jan 2019 23:32:22 +0530 Subject: [PATCH 0682/1345] Update config_service.yml --- ansible/roles/stack-sunbird/tasks/config_service.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/stack-sunbird/tasks/config_service.yml b/ansible/roles/stack-sunbird/tasks/config_service.yml index ffce431299..2d16b2af67 100644 --- a/ansible/roles/stack-sunbird/tasks/config_service.yml +++ b/ansible/roles/stack-sunbird/tasks/config_service.yml @@ -4,6 +4,6 @@ ignore_errors: yes - name: Deploy config service - shell: "docker service create --replicas {{ config_replicas }} -p 6000:8080 --name config-service --hostname config-service --reserve-memory {{ config_reservation_memory }} --limit-memory {{ config_limit_memory }} --network application_default --env-file /home/deployer/env/sunbird_config-service.env {{hub_org}}/{{image_name}}:{{image_tag}}" + shell: "docker service create --replicas {{ config_replicas }} -p 6000:8080 --name config-service --hostname config-service --reserve-memory {{ config_reservation_memory }} --limit-memory {{ config_limit_memory }} --network application_default --env-file /home/deployer/env/sunbird_config-service.env {{hub_org}}/{{image_name}}:{{image_tag}} --with-registry-auth" args: chdir: /home/deployer/stack From aeeb40184c22b81a1e8e445693858b346b1d2e33 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Tue, 15 Jan 2019 23:32:29 +0530 Subject: [PATCH 0683/1345] Update content_service.yml --- ansible/roles/stack-sunbird/tasks/content_service.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/stack-sunbird/tasks/content_service.yml b/ansible/roles/stack-sunbird/tasks/content_service.yml index 09ff768c47..1cf2863035 100644 --- a/ansible/roles/stack-sunbird/tasks/content_service.yml +++ b/ansible/roles/stack-sunbird/tasks/content_service.yml @@ -8,6 +8,6 @@ ignore_errors: yes - name: Deploy content service - shell: "docker service create --replicas {{ content_replicas }} -p 5000:5000 --name content-service --hostname content-service --reserve-memory {{ content_reservation_memory }} --limit-memory {{ content_limit_memory }} --limit-cpu {{ content_limit_cpu }} --reserve-cpu {{ content_reservation_cpu }} --health-cmd 'wget -qO- content-service:5000/health || exit 1' --health-timeout 3s --health-retries 3 --network application_default --env-file /home/deployer/env/sunbird_content-service.env {{hub_org}}/{{image_name}}:{{image_tag}}" + shell: "docker service create --replicas {{ content_replicas }} -p 5000:5000 --name content-service --hostname content-service --reserve-memory {{ content_reservation_memory }} --limit-memory {{ content_limit_memory }} --limit-cpu {{ content_limit_cpu }} --reserve-cpu {{ content_reservation_cpu }} --health-cmd 'wget -qO- content-service:5000/health || exit 1' --health-timeout 3s --health-retries 3 --network application_default --env-file /home/deployer/env/sunbird_content-service.env {{hub_org}}/{{image_name}}:{{image_tag}} --with-registry-auth" args: chdir: /home/deployer/stack From 8df382c41bb3f360b096ae4959b2289618c40851 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Tue, 15 Jan 2019 23:32:36 +0530 Subject: [PATCH 0684/1345] Update learner_service.yml --- ansible/roles/stack-sunbird/tasks/learner_service.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/stack-sunbird/tasks/learner_service.yml b/ansible/roles/stack-sunbird/tasks/learner_service.yml index cd421eb9d7..aff0379425 100644 --- a/ansible/roles/stack-sunbird/tasks/learner_service.yml +++ b/ansible/roles/stack-sunbird/tasks/learner_service.yml @@ -4,6 +4,6 @@ ignore_errors: yes - name: Deploy learner service - shell: "docker service create --replicas {{ learner_replicas }} -p 9000:9000 --name learner-service --hostname learner-service --reserve-memory {{ learner_reservation_memory }} --limit-memory {{ learner_limit_memory }} --limit-cpu {{ learner_limit_cpu }} --reserve-cpu {{ learner_reservation_cpu }} --health-cmd 'wget -qO- learner-service:9000/health || exit 1' --health-timeout 3s --health-retries 3 --network application_default --env-file /home/deployer/env/sunbird_learner-service.env {{hub_org}}/{{image_name}}:{{image_tag}}" + shell: "docker service create --replicas {{ learner_replicas }} -p 9000:9000 --name learner-service --hostname learner-service --reserve-memory {{ learner_reservation_memory }} --limit-memory {{ learner_limit_memory }} --limit-cpu {{ learner_limit_cpu }} --reserve-cpu {{ learner_reservation_cpu }} --health-cmd 'wget -qO- learner-service:9000/health || exit 1' --health-timeout 3s --health-retries 3 --network application_default --env-file /home/deployer/env/sunbird_learner-service.env {{hub_org}}/{{image_name}}:{{image_tag}} --with-registry-auth" args: chdir: /home/deployer/stack From 701092538e835c21d97809a2a885b2b87d72035e Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Tue, 15 Jan 2019 23:32:43 +0530 Subject: [PATCH 0685/1345] Update telemetry_service.yml --- ansible/roles/stack-sunbird/tasks/telemetry_service.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/stack-sunbird/tasks/telemetry_service.yml b/ansible/roles/stack-sunbird/tasks/telemetry_service.yml index 3e4c647f95..314ad397ec 100644 --- a/ansible/roles/stack-sunbird/tasks/telemetry_service.yml +++ b/ansible/roles/stack-sunbird/tasks/telemetry_service.yml @@ -4,6 +4,6 @@ ignore_errors: yes - name: Deploy telemetry service - shell: "docker service create --replicas {{ telemetry_replicas }} -p 9001:9001 --name telemetry-service --hostname telemetry-service --reserve-memory {{ telemetry_reservation_memory }} --limit-memory {{ telemetry_limit_memory }} --network application_default --env-file /home/deployer/env/sunbird_telemetry-service.env {{hub_org}}/{{image_name}}:{{image_tag}}" + shell: "docker service create --replicas {{ telemetry_replicas }} -p 9001:9001 --name telemetry-service --hostname telemetry-service --reserve-memory {{ telemetry_reservation_memory }} --limit-memory {{ telemetry_limit_memory }} --network application_default --env-file /home/deployer/env/sunbird_telemetry-service.env {{hub_org}}/{{image_name}}:{{image_tag}} --with-registry-auth" args: chdir: /home/deployer/stack From 4341572748e2bb8c19fe384a89c934fc5287af5e Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Tue, 15 Jan 2019 23:33:40 +0530 Subject: [PATCH 0686/1345] Update Jenkinsfile --- pipelines/deploy/learner/Jenkinsfile | 1 - 1 file changed, 1 deletion(-) diff --git a/pipelines/deploy/learner/Jenkinsfile b/pipelines/deploy/learner/Jenkinsfile index 94bef56b55..b79d027152 100644 --- a/pipelines/deploy/learner/Jenkinsfile +++ b/pipelines/deploy/learner/Jenkinsfile @@ -1,4 +1,3 @@ - @Library('deploy-conf') _ node() { try { From c2123aa86b39a00ed599f0237336f45ed98efc5a Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Tue, 15 Jan 2019 23:34:43 +0530 Subject: [PATCH 0687/1345] Update main.yml --- ansible/roles/stack-badger/tasks/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/stack-badger/tasks/main.yml b/ansible/roles/stack-badger/tasks/main.yml index e589e25ce0..4ae81ac79c 100644 --- a/ansible/roles/stack-badger/tasks/main.yml +++ b/ansible/roles/stack-badger/tasks/main.yml @@ -22,7 +22,7 @@ - name: Deploy badger service become: yes - shell: "docker service create --replicas {{ badger_replicas }} -p 8004:8004 --name badger-service --hostname badger-service --reserve-memory {{ badger_reservation_memory }} --limit-memory {{ badger_limit_memory }} --network application_default --config source=settings_local.py,target=/badger/code/apps/mainsite/settings_local.py,mode=0644 {{hub_org}}/{{image_name}}:{{image_tag}}" + shell: "docker service create --replicas {{ badger_replicas }} -p 8004:8004 --name badger-service --hostname badger-service --reserve-memory {{ badger_reservation_memory }} --limit-memory {{ badger_limit_memory }} --network application_default --config source=settings_local.py,target=/badger/code/apps/mainsite/settings_local.py,mode=0644 {{hub_org}}/{{image_name}}:{{image_tag}} --with-registry-auth" args: chdir: /home/deployer/stack From 7ff9421916e315daea2f4cc13b6b6a9f309ec777 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Tue, 15 Jan 2019 23:35:36 +0530 Subject: [PATCH 0688/1345] Update common.yml --- ansible/roles/stack-sunbird/tasks/common.yml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/ansible/roles/stack-sunbird/tasks/common.yml b/ansible/roles/stack-sunbird/tasks/common.yml index a96c9c3b16..f430fc10cf 100644 --- a/ansible/roles/stack-sunbird/tasks/common.yml +++ b/ansible/roles/stack-sunbird/tasks/common.yml @@ -19,4 +19,8 @@ - name: Save service configurations into an env file template: src="sunbird_{{service_name}}.env" dest="/home/deployer/env/sunbird_{{service_name}}.env" mode=0644 - ignore_errors: yes \ No newline at end of file + ignore_errors: yes + +- name: Login to docker + shell: "docker login {{ vault_docker_registery_url }} -u {{ vault_docker_registery_user }} -p {{ vault_docker_registory }}" + ignore_errors: yes From 83dc1781f362da43e21f85a7aba5d0a5dfe3635a Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Tue, 15 Jan 2019 23:38:17 +0530 Subject: [PATCH 0689/1345] Update telemetry_service.yml --- ansible/roles/stack-sunbird/tasks/telemetry_service.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/stack-sunbird/tasks/telemetry_service.yml b/ansible/roles/stack-sunbird/tasks/telemetry_service.yml index 314ad397ec..53f3a981d5 100644 --- a/ansible/roles/stack-sunbird/tasks/telemetry_service.yml +++ b/ansible/roles/stack-sunbird/tasks/telemetry_service.yml @@ -1,5 +1,5 @@ --- -- name: Remove learner service +- name: Remove telemetry service shell: "docker service rm telemetry-service" ignore_errors: yes From e1b43a280e625f24699d5d4915d4fab209fbd897 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Tue, 15 Jan 2019 23:51:31 +0530 Subject: [PATCH 0690/1345] Update actor_service.yml --- ansible/roles/stack-sunbird/tasks/actor_service.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/stack-sunbird/tasks/actor_service.yml b/ansible/roles/stack-sunbird/tasks/actor_service.yml index 4e5e785645..f6b91ee132 100644 --- a/ansible/roles/stack-sunbird/tasks/actor_service.yml +++ b/ansible/roles/stack-sunbird/tasks/actor_service.yml @@ -4,6 +4,6 @@ ignore_errors: yes - name: Deploy actor service - shell: "docker service create --replicas {{ actor_replicas }} -p 8088:8088 --name actor-service --hostname actor-service --reserve-memory {{ actor_reservation_memory }} --limit-memory {{ actor_limit_memory }} --network application_default --env-file /home/deployer/env/sunbird_actor-service.env {{hub_org}}/{{image_name}}:{{image_tag}} --with-registry-auth" + shell: "docker service create --with-registry-auth --replicas {{ actor_replicas }} -p 8088:8088 --name actor-service --hostname actor-service --reserve-memory {{ actor_reservation_memory }} --limit-memory {{ actor_limit_memory }} --network application_default --env-file /home/deployer/env/sunbird_actor-service.env {{hub_org}}/{{image_name}}:{{image_tag}}" args: chdir: /home/deployer/stack From 61d6a5b197e319cc40a9a21d2a8c66b0b221aff4 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Tue, 15 Jan 2019 23:53:03 +0530 Subject: [PATCH 0691/1345] Update main.yml --- ansible/roles/stack-badger/tasks/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/stack-badger/tasks/main.yml b/ansible/roles/stack-badger/tasks/main.yml index 4ae81ac79c..f2c6c2e832 100644 --- a/ansible/roles/stack-badger/tasks/main.yml +++ b/ansible/roles/stack-badger/tasks/main.yml @@ -22,7 +22,7 @@ - name: Deploy badger service become: yes - shell: "docker service create --replicas {{ badger_replicas }} -p 8004:8004 --name badger-service --hostname badger-service --reserve-memory {{ badger_reservation_memory }} --limit-memory {{ badger_limit_memory }} --network application_default --config source=settings_local.py,target=/badger/code/apps/mainsite/settings_local.py,mode=0644 {{hub_org}}/{{image_name}}:{{image_tag}} --with-registry-auth" + shell: "docker service create --with-registry-auth --replicas {{ badger_replicas }} -p 8004:8004 --name badger-service --hostname badger-service --reserve-memory {{ badger_reservation_memory }} --limit-memory {{ badger_limit_memory }} --network application_default --config source=settings_local.py,target=/badger/code/apps/mainsite/settings_local.py,mode=0644 {{hub_org}}/{{image_name}}:{{image_tag}}" args: chdir: /home/deployer/stack From 913d998dda344559f313f464ee4f8e8c20a64ecb Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Tue, 15 Jan 2019 23:53:15 +0530 Subject: [PATCH 0692/1345] Update telemetry_service.yml --- ansible/roles/stack-sunbird/tasks/telemetry_service.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/stack-sunbird/tasks/telemetry_service.yml b/ansible/roles/stack-sunbird/tasks/telemetry_service.yml index 53f3a981d5..4137162093 100644 --- a/ansible/roles/stack-sunbird/tasks/telemetry_service.yml +++ b/ansible/roles/stack-sunbird/tasks/telemetry_service.yml @@ -4,6 +4,6 @@ ignore_errors: yes - name: Deploy telemetry service - shell: "docker service create --replicas {{ telemetry_replicas }} -p 9001:9001 --name telemetry-service --hostname telemetry-service --reserve-memory {{ telemetry_reservation_memory }} --limit-memory {{ telemetry_limit_memory }} --network application_default --env-file /home/deployer/env/sunbird_telemetry-service.env {{hub_org}}/{{image_name}}:{{image_tag}} --with-registry-auth" + shell: "docker service create --with-registry-auth --replicas {{ telemetry_replicas }} -p 9001:9001 --name telemetry-service --hostname telemetry-service --reserve-memory {{ telemetry_reservation_memory }} --limit-memory {{ telemetry_limit_memory }} --network application_default --env-file /home/deployer/env/sunbird_telemetry-service.env {{hub_org}}/{{image_name}}:{{image_tag}}" args: chdir: /home/deployer/stack From afddab601586ba2e8fe4c10449d90f6e0a18b7bf Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Tue, 15 Jan 2019 23:53:44 +0530 Subject: [PATCH 0693/1345] Update learner_service.yml --- ansible/roles/stack-sunbird/tasks/learner_service.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/stack-sunbird/tasks/learner_service.yml b/ansible/roles/stack-sunbird/tasks/learner_service.yml index aff0379425..b3845bf88c 100644 --- a/ansible/roles/stack-sunbird/tasks/learner_service.yml +++ b/ansible/roles/stack-sunbird/tasks/learner_service.yml @@ -4,6 +4,6 @@ ignore_errors: yes - name: Deploy learner service - shell: "docker service create --replicas {{ learner_replicas }} -p 9000:9000 --name learner-service --hostname learner-service --reserve-memory {{ learner_reservation_memory }} --limit-memory {{ learner_limit_memory }} --limit-cpu {{ learner_limit_cpu }} --reserve-cpu {{ learner_reservation_cpu }} --health-cmd 'wget -qO- learner-service:9000/health || exit 1' --health-timeout 3s --health-retries 3 --network application_default --env-file /home/deployer/env/sunbird_learner-service.env {{hub_org}}/{{image_name}}:{{image_tag}} --with-registry-auth" + shell: "docker service create --with-registry-auth --replicas {{ learner_replicas }} -p 9000:9000 --name learner-service --hostname learner-service --reserve-memory {{ learner_reservation_memory }} --limit-memory {{ learner_limit_memory }} --limit-cpu {{ learner_limit_cpu }} --reserve-cpu {{ learner_reservation_cpu }} --health-cmd 'wget -qO- learner-service:9000/health || exit 1' --health-timeout 3s --health-retries 3 --network application_default --env-file /home/deployer/env/sunbird_learner-service.env {{hub_org}}/{{image_name}}:{{image_tag}}" args: chdir: /home/deployer/stack From 58a38ccac09c1fd170c815c1476dc56ee016622d Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Tue, 15 Jan 2019 23:54:00 +0530 Subject: [PATCH 0694/1345] Update content_service.yml --- ansible/roles/stack-sunbird/tasks/content_service.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/stack-sunbird/tasks/content_service.yml b/ansible/roles/stack-sunbird/tasks/content_service.yml index 1cf2863035..6f2a01cc02 100644 --- a/ansible/roles/stack-sunbird/tasks/content_service.yml +++ b/ansible/roles/stack-sunbird/tasks/content_service.yml @@ -8,6 +8,6 @@ ignore_errors: yes - name: Deploy content service - shell: "docker service create --replicas {{ content_replicas }} -p 5000:5000 --name content-service --hostname content-service --reserve-memory {{ content_reservation_memory }} --limit-memory {{ content_limit_memory }} --limit-cpu {{ content_limit_cpu }} --reserve-cpu {{ content_reservation_cpu }} --health-cmd 'wget -qO- content-service:5000/health || exit 1' --health-timeout 3s --health-retries 3 --network application_default --env-file /home/deployer/env/sunbird_content-service.env {{hub_org}}/{{image_name}}:{{image_tag}} --with-registry-auth" + shell: "docker service create --with-registry-auth --replicas {{ content_replicas }} -p 5000:5000 --name content-service --hostname content-service --reserve-memory {{ content_reservation_memory }} --limit-memory {{ content_limit_memory }} --limit-cpu {{ content_limit_cpu }} --reserve-cpu {{ content_reservation_cpu }} --health-cmd 'wget -qO- content-service:5000/health || exit 1' --health-timeout 3s --health-retries 3 --network application_default --env-file /home/deployer/env/sunbird_content-service.env {{hub_org}}/{{image_name}}:{{image_tag}}" args: chdir: /home/deployer/stack From 91e8fb1839e5467a810d3a4cd497706a1f5ffd9e Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Tue, 15 Jan 2019 23:54:15 +0530 Subject: [PATCH 0695/1345] Update config_service.yml --- ansible/roles/stack-sunbird/tasks/config_service.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/stack-sunbird/tasks/config_service.yml b/ansible/roles/stack-sunbird/tasks/config_service.yml index 2d16b2af67..8086fe1571 100644 --- a/ansible/roles/stack-sunbird/tasks/config_service.yml +++ b/ansible/roles/stack-sunbird/tasks/config_service.yml @@ -4,6 +4,6 @@ ignore_errors: yes - name: Deploy config service - shell: "docker service create --replicas {{ config_replicas }} -p 6000:8080 --name config-service --hostname config-service --reserve-memory {{ config_reservation_memory }} --limit-memory {{ config_limit_memory }} --network application_default --env-file /home/deployer/env/sunbird_config-service.env {{hub_org}}/{{image_name}}:{{image_tag}} --with-registry-auth" + shell: "docker service create --with-registry-auth --replicas {{ config_replicas }} -p 6000:8080 --name config-service --hostname config-service --reserve-memory {{ config_reservation_memory }} --limit-memory {{ config_limit_memory }} --network application_default --env-file /home/deployer/env/sunbird_config-service.env {{hub_org}}/{{image_name}}:{{image_tag}}" args: chdir: /home/deployer/stack From 88a67953a9df076506ab7cc491ce7aa4b6763a44 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Tue, 15 Jan 2019 23:56:23 +0530 Subject: [PATCH 0696/1345] Update main.yml --- ansible/roles/stack-badger/tasks/main.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/ansible/roles/stack-badger/tasks/main.yml b/ansible/roles/stack-badger/tasks/main.yml index f2c6c2e832..6479a4e460 100644 --- a/ansible/roles/stack-badger/tasks/main.yml +++ b/ansible/roles/stack-badger/tasks/main.yml @@ -1,4 +1,8 @@ --- +- name: Login to docker + shell: "docker login {{ vault_docker_registery_url }} -u {{ vault_docker_registery_user }} -p {{ vault_docker_registory }}" + ignore_errors: yes + - name: Remove badger service become: yes shell: "docker service rm badger-service" From afed1a73cf522e66b008284ec0bdb3709446d81f Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Tue, 15 Jan 2019 23:56:55 +0530 Subject: [PATCH 0697/1345] Update common.yml --- ansible/roles/stack-sunbird/tasks/common.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ansible/roles/stack-sunbird/tasks/common.yml b/ansible/roles/stack-sunbird/tasks/common.yml index f430fc10cf..1bb6c13597 100644 --- a/ansible/roles/stack-sunbird/tasks/common.yml +++ b/ansible/roles/stack-sunbird/tasks/common.yml @@ -1,4 +1,8 @@ --- +- name: Login to docker + shell: "docker login {{ vault_docker_registery_url }} -u {{ vault_docker_registery_user }} -p {{ vault_docker_registory }}" + ignore_errors: yes + - name: Ensure env directory exists file: path: /home/deployer/env @@ -20,7 +24,3 @@ - name: Save service configurations into an env file template: src="sunbird_{{service_name}}.env" dest="/home/deployer/env/sunbird_{{service_name}}.env" mode=0644 ignore_errors: yes - -- name: Login to docker - shell: "docker login {{ vault_docker_registery_url }} -u {{ vault_docker_registery_user }} -p {{ vault_docker_registory }}" - ignore_errors: yes From d716b0763b8295d0aa47412336ed2e90dd7aa66e Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Wed, 16 Jan 2019 00:00:08 +0530 Subject: [PATCH 0698/1345] Update main.yml --- ansible/roles/stack-badger/tasks/main.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/ansible/roles/stack-badger/tasks/main.yml b/ansible/roles/stack-badger/tasks/main.yml index 6479a4e460..faaf07f0ab 100644 --- a/ansible/roles/stack-badger/tasks/main.yml +++ b/ansible/roles/stack-badger/tasks/main.yml @@ -1,6 +1,7 @@ --- - name: Login to docker shell: "docker login {{ vault_docker_registery_url }} -u {{ vault_docker_registery_user }} -p {{ vault_docker_registory }}" + no_log: True ignore_errors: yes - name: Remove badger service From 86ba8a5675caf11d6014e085e0f4dd15d4569653 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Wed, 16 Jan 2019 00:00:11 +0530 Subject: [PATCH 0699/1345] Update common.yml --- ansible/roles/stack-sunbird/tasks/common.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/ansible/roles/stack-sunbird/tasks/common.yml b/ansible/roles/stack-sunbird/tasks/common.yml index 1bb6c13597..710d76a563 100644 --- a/ansible/roles/stack-sunbird/tasks/common.yml +++ b/ansible/roles/stack-sunbird/tasks/common.yml @@ -1,6 +1,7 @@ --- - name: Login to docker shell: "docker login {{ vault_docker_registery_url }} -u {{ vault_docker_registery_user }} -p {{ vault_docker_registory }}" + no_log: True ignore_errors: yes - name: Ensure env directory exists From 638d9432ce4ff3bccbfccf619a6b687ce7154d48 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Wed, 16 Jan 2019 00:16:47 +0530 Subject: [PATCH 0700/1345] Update main.yml --- ansible/roles/stack-badger/tasks/main.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/ansible/roles/stack-badger/tasks/main.yml b/ansible/roles/stack-badger/tasks/main.yml index faaf07f0ab..6479a4e460 100644 --- a/ansible/roles/stack-badger/tasks/main.yml +++ b/ansible/roles/stack-badger/tasks/main.yml @@ -1,7 +1,6 @@ --- - name: Login to docker shell: "docker login {{ vault_docker_registery_url }} -u {{ vault_docker_registery_user }} -p {{ vault_docker_registory }}" - no_log: True ignore_errors: yes - name: Remove badger service From 2cad47917ebf1e7a4f19536789e059501f84ae13 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Wed, 16 Jan 2019 00:19:35 +0530 Subject: [PATCH 0701/1345] Update main.yml --- ansible/roles/stack-badger/tasks/main.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ansible/roles/stack-badger/tasks/main.yml b/ansible/roles/stack-badger/tasks/main.yml index 6479a4e460..a178102283 100644 --- a/ansible/roles/stack-badger/tasks/main.yml +++ b/ansible/roles/stack-badger/tasks/main.yml @@ -1,6 +1,8 @@ --- - name: Login to docker shell: "docker login {{ vault_docker_registery_url }} -u {{ vault_docker_registery_user }} -p {{ vault_docker_registory }}" + become: yes + no_log: True ignore_errors: yes - name: Remove badger service From a7a402f8ba3f746c99eea092920fb4e83ddaab44 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Wed, 16 Jan 2019 00:34:41 +0530 Subject: [PATCH 0702/1345] Update Jenkinsfile --- pipelines/deploy/player/Jenkinsfile | 1 + 1 file changed, 1 insertion(+) diff --git a/pipelines/deploy/player/Jenkinsfile b/pipelines/deploy/player/Jenkinsfile index d5102a3d49..fdd4f4b4e5 100644 --- a/pipelines/deploy/player/Jenkinsfile +++ b/pipelines/deploy/player/Jenkinsfile @@ -24,6 +24,7 @@ node() { values.put('ansibleExtraArgs', ansibleExtraArgs) ansible_playbook_run(values) archiveArtifacts 'metadata.json' + currentBuild.description = ${values.image_tag} } } catch (err) { From 62782a3381115bdf6e424c35d7ca113b61686a68 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Wed, 16 Jan 2019 00:37:10 +0530 Subject: [PATCH 0703/1345] Update Jenkinsfile --- pipelines/deploy/player/Jenkinsfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pipelines/deploy/player/Jenkinsfile b/pipelines/deploy/player/Jenkinsfile index fdd4f4b4e5..6549de040f 100644 --- a/pipelines/deploy/player/Jenkinsfile +++ b/pipelines/deploy/player/Jenkinsfile @@ -22,9 +22,9 @@ node() { values.put('currentWs', currentWs) values.put('ansiblePlaybook', ansiblePlaybook) values.put('ansibleExtraArgs', ansibleExtraArgs) - ansible_playbook_run(values) +// ansible_playbook_run(values) archiveArtifacts 'metadata.json' - currentBuild.description = ${values.image_tag} + currentBuild.description = "${values.image_tag}" } } catch (err) { From baa0770dd0e7e0288c79dba7027816c1e6d6014f Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Wed, 16 Jan 2019 00:38:33 +0530 Subject: [PATCH 0704/1345] Update Jenkinsfile --- pipelines/deploy/player/Jenkinsfile | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/pipelines/deploy/player/Jenkinsfile b/pipelines/deploy/player/Jenkinsfile index 6549de040f..38090f7d46 100644 --- a/pipelines/deploy/player/Jenkinsfile +++ b/pipelines/deploy/player/Jenkinsfile @@ -5,7 +5,6 @@ node() { cleanWs() checkout scm } - stage('define params') { def values = docker_params() if(values == "first run"){ @@ -22,7 +21,7 @@ node() { values.put('currentWs', currentWs) values.put('ansiblePlaybook', ansiblePlaybook) values.put('ansibleExtraArgs', ansibleExtraArgs) -// ansible_playbook_run(values) + ansible_playbook_run(values) archiveArtifacts 'metadata.json' currentBuild.description = "${values.image_tag}" } From 9cf3d29980cfad8760e333687dc4cb18873ff2e0 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Wed, 16 Jan 2019 09:56:31 +0530 Subject: [PATCH 0705/1345] Delete main.yml --- ansible/roles/acr-docker/tasks/main.yml | 12 ------------ 1 file changed, 12 deletions(-) delete mode 100644 ansible/roles/acr-docker/tasks/main.yml diff --git a/ansible/roles/acr-docker/tasks/main.yml b/ansible/roles/acr-docker/tasks/main.yml deleted file mode 100644 index 3740d11e27..0000000000 --- a/ansible/roles/acr-docker/tasks/main.yml +++ /dev/null @@ -1,12 +0,0 @@ ---- -- name: install pip docker - command: pip install docker -- name: login to ACR - docker_login: - registry: "{{ vault_docker_registery_url }}" - username: "{{ vault_docker_registery_user }}" - password: "{{ vault_docker_registory }}" - -- name: Pull image from registry - docker_image: - name: "{{ hub_org }}/{{ image_name }}:{{ image_tag }}" From c65d7bf8e8925d7a8a900da99d4fe27cc74216f8 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Wed, 16 Jan 2019 10:36:40 +0530 Subject: [PATCH 0706/1345] Update Jenkinsfile --- images/openbadger/Jenkinsfile | 42 ++++++++++++++++++----------------- 1 file changed, 22 insertions(+), 20 deletions(-) diff --git a/images/openbadger/Jenkinsfile b/images/openbadger/Jenkinsfile index 6de8a0b76f..c322c44c52 100644 --- a/images/openbadger/Jenkinsfile +++ b/images/openbadger/Jenkinsfile @@ -4,6 +4,7 @@ node('build-slave') { String ANSI_NORMAL = "\u001B[0m" String ANSI_BOLD = "\u001B[1m" String ANSI_RED = "\u001B[31m" + String ANSI_YELLOW = "\u001B[33m" if (params.size() == 0){ properties([[$class: 'RebuildSettings', autoRebuild: false, rebuildDisabled: false], parameters([string(defaultValue: '', description: 'If you want to build from a tag, specify the tag name. If this parameter is blank, latest commit hash will be used to build', name: 'tag', trim: false)])]) @@ -17,37 +18,38 @@ node('build-slave') { return } - stage('Checkout'){ - ansiColor('xterm'){ - if(!env.hub_org){ - println (ANSI_BOLD + ANSI_RED + "Uh Oh! Please set a Jenkins environment variable named hub_org with value as registery/sunbidrded" + ANSI_NORMAL) + ansiColor('xterm') { + stage('Checkout') { + if (!env.hub_org) { + println(ANSI_BOLD + ANSI_RED + "Uh Oh! Please set a Jenkins environment variable named hub_org with value as registery/sunbidrded" + ANSI_NORMAL) error 'Please resolve the errors and rerun..' - } - else - println (ANSI_BOLD + ANSI_GREEN + "Found environment variable named hub_org with value as: " + hub_org + ANSI_NORMAL) + } else + println(ANSI_BOLD + ANSI_GREEN + "Found environment variable named hub_org with value as: " + hub_org + ANSI_NORMAL) } cleanWs() - if(params.tag == ""){ + if (params.tag == "") { checkout scm commit_hash = sh(script: 'git rev-parse --short HEAD', returnStdout: true).trim() branch_name = sh(script: 'git name-rev --name-only HEAD | rev | cut -d "/" -f1| rev', returnStdout: true).trim() build_tag = branch_name + "_" + commit_hash - } - else { + println(ANSI_BOLD + ANSI_YELLOW + "Tag not specified, using the latest commit hash: " + commit_hash + ANSI_NORMAL) + } else { def scmVars = checkout scm - checkout scm: [$class: 'GitSCM', branches: [[name: "refs/tags/$params.tag"]], userRemoteConfigs: [[url: scmVars.GIT_URL]]] + checkout scm: [$class: 'GitSCM', branches: [[name: "refs/tags/$params.tag"]], userRemoteConfigs: [[url: scmVars.GIT_URL]]] build_tag = params.tag + println(ANSI_BOLD + ANSI_YELLOW + "Tag specified, building from tag: " + params.tag + ANSI_NORMAL) } - echo "build_tag: "+build_tag - } + echo "build_tag: " + build_tag - stage('Build'){ - env.NODE_ENV = "build" - print "Environment will be : ${env.NODE_ENV}" - sh("./images/openbadger/build.sh ${build_tag} ${env.NODE_NAME} ${hub_org}") - } - stage('ArchiveArtifacts'){ - archiveArtifacts "metadata.json" + stage('Build') { + env.NODE_ENV = "build" + print "Environment will be : ${env.NODE_ENV}" + sh("./images/openbadger/build.sh ${build_tag} ${env.NODE_NAME} ${hub_org}") + } + stage('ArchiveArtifacts') { + archiveArtifacts "metadata.json" + currentBuild.description = "${build_tag}" + } } } From e20f0712e420c3713d3a62d03ec054e0520bf3da Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Wed, 16 Jan 2019 11:37:39 +0530 Subject: [PATCH 0707/1345] Update Jenkinsfile --- images/openbadger/Jenkinsfile | 1 + 1 file changed, 1 insertion(+) diff --git a/images/openbadger/Jenkinsfile b/images/openbadger/Jenkinsfile index c322c44c52..7a23569408 100644 --- a/images/openbadger/Jenkinsfile +++ b/images/openbadger/Jenkinsfile @@ -55,6 +55,7 @@ node('build-slave') { } catch (err) { currentBuild.result = "FAILURE" + currentBuild.description = "${build_tag}" throw err } From 728fe2faf4fa4929b21db10d46c30f87c2559a32 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Wed, 16 Jan 2019 12:01:24 +0530 Subject: [PATCH 0708/1345] Update Jenkinsfile --- pipelines/deploy/telemetry/Jenkinsfile | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pipelines/deploy/telemetry/Jenkinsfile b/pipelines/deploy/telemetry/Jenkinsfile index 44a21733b7..317125ac44 100644 --- a/pipelines/deploy/telemetry/Jenkinsfile +++ b/pipelines/deploy/telemetry/Jenkinsfile @@ -24,9 +24,12 @@ node() { values.put('ansibleExtraArgs', ansibleExtraArgs) ansible_playbook_run(values) archiveArtifacts 'metadata.json' + currentBuild.description = "${values.image_tag}" } } catch (err) { + currentBuild.result = "FAILURE" + currentBuild.description = "${values.image_tag}" throw err } } From 2b3d93545bb0a4c13e671eddc396ee0198e10ae6 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Wed, 16 Jan 2019 12:03:00 +0530 Subject: [PATCH 0709/1345] Update Jenkinsfile --- pipelines/deploy/badger/Jenkinsfile | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pipelines/deploy/badger/Jenkinsfile b/pipelines/deploy/badger/Jenkinsfile index 4353a924b9..80773d013a 100644 --- a/pipelines/deploy/badger/Jenkinsfile +++ b/pipelines/deploy/badger/Jenkinsfile @@ -24,9 +24,12 @@ node() { values.put('ansibleExtraArgs', ansibleExtraArgs) ansible_playbook_run(values) archiveArtifacts 'metadata.json' + currentBuild.description = "${values.image_tag}" } } catch (err) { + currentBuild.result = "FAILURE" + currentBuild.description = "${values.image_tag}" throw err } } From b26545ad56527332782e4cb05b8cf099d7f2dc0e Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Wed, 16 Jan 2019 12:03:17 +0530 Subject: [PATCH 0710/1345] Update Jenkinsfile --- pipelines/deploy/config-service/Jenkinsfile | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pipelines/deploy/config-service/Jenkinsfile b/pipelines/deploy/config-service/Jenkinsfile index e27191e300..00907eb251 100644 --- a/pipelines/deploy/config-service/Jenkinsfile +++ b/pipelines/deploy/config-service/Jenkinsfile @@ -24,9 +24,12 @@ node() { values.put('ansibleExtraArgs', ansibleExtraArgs) ansible_playbook_run(values) archiveArtifacts 'metadata.json' + currentBuild.description = "${values.image_tag}" } } catch (err) { + currentBuild.result = "FAILURE" + currentBuild.description = "${values.image_tag}" throw err } } From f38ae1b2e9ef02dc67e4f8b710215d5677279382 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Wed, 16 Jan 2019 12:03:32 +0530 Subject: [PATCH 0711/1345] Update Jenkinsfile --- pipelines/deploy/content/Jenkinsfile | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/pipelines/deploy/content/Jenkinsfile b/pipelines/deploy/content/Jenkinsfile index 4b50de5067..1423495440 100644 --- a/pipelines/deploy/content/Jenkinsfile +++ b/pipelines/deploy/content/Jenkinsfile @@ -9,9 +9,9 @@ node() { stage('define params') { def values = docker_params() if(values == "first run"){ - currentBuild.result = 'SUCCESS' - return - } + currentBuild.result = 'SUCCESS' + return + } currentWs = sh(returnStdout: true, script: 'pwd').trim() ansiblePlaybook = "$currentWs/ansible/deploy.yml" ansibleExtraArgs = """\ @@ -24,9 +24,12 @@ node() { values.put('ansibleExtraArgs', ansibleExtraArgs) ansible_playbook_run(values) archiveArtifacts 'metadata.json' + currentBuild.description = "${values.image_tag}" } } catch (err) { + currentBuild.result = "FAILURE" + currentBuild.description = "${values.image_tag}" throw err } } From d34109390cd152829809640bcdd2dff3445f1dcd Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Wed, 16 Jan 2019 12:03:55 +0530 Subject: [PATCH 0712/1345] Update Jenkinsfile --- pipelines/deploy/learner/Jenkinsfile | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/pipelines/deploy/learner/Jenkinsfile b/pipelines/deploy/learner/Jenkinsfile index b79d027152..d62ca4136e 100644 --- a/pipelines/deploy/learner/Jenkinsfile +++ b/pipelines/deploy/learner/Jenkinsfile @@ -9,9 +9,9 @@ node() { stage('define params') { def values = docker_params() if(values == "first run"){ - currentBuild.result = 'SUCCESS' - return - } + currentBuild.result = 'SUCCESS' + return + } currentWs = sh(returnStdout: true, script: 'pwd').trim() ansiblePlaybook = "$currentWs/ansible/deploy.yml" ansibleExtraArgs = """\ @@ -24,9 +24,12 @@ node() { values.put('ansibleExtraArgs', ansibleExtraArgs) ansible_playbook_run(values) archiveArtifacts 'metadata.json' + currentBuild.description = "${values.image_tag}" } } catch (err) { + currentBuild.result = "FAILURE" + currentBuild.description = "${values.image_tag}" throw err } } From 0e3699432ad89f7766f83144a3f6a6ec7dae7a3a Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Wed, 16 Jan 2019 12:04:12 +0530 Subject: [PATCH 0713/1345] Update Jenkinsfile --- pipelines/deploy/player/Jenkinsfile | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/pipelines/deploy/player/Jenkinsfile b/pipelines/deploy/player/Jenkinsfile index 38090f7d46..c4cb728d4d 100644 --- a/pipelines/deploy/player/Jenkinsfile +++ b/pipelines/deploy/player/Jenkinsfile @@ -8,9 +8,9 @@ node() { stage('define params') { def values = docker_params() if(values == "first run"){ - currentBuild.result = 'SUCCESS' - return - } + currentBuild.result = 'SUCCESS' + return + } currentWs = sh(returnStdout: true, script: 'pwd').trim() ansiblePlaybook = "$currentWs/ansible/deploy.yml" ansibleExtraArgs = """\ @@ -27,6 +27,8 @@ node() { } } catch (err) { + currentBuild.result = "FAILURE" + currentBuild.description = "${values.image_tag}" throw err } } From 811d53cdbff33c5af69ae1f0dc00b6ecdec45529 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Wed, 16 Jan 2019 12:05:24 +0530 Subject: [PATCH 0714/1345] Update Jenkinsfile --- pipelines/deploy/push/Jenkinsfile | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/pipelines/deploy/push/Jenkinsfile b/pipelines/deploy/push/Jenkinsfile index ba036994ed..463decb85a 100644 --- a/pipelines/deploy/push/Jenkinsfile +++ b/pipelines/deploy/push/Jenkinsfile @@ -1,17 +1,17 @@ @Library('deploy-conf') _ node(){ - try { + try { stage('checkout public repo') { cleanWs() checkout scm } - + stage('define params') { def values = docker_params() if(values == "first run"){ - currentBuild.result = 'SUCCESS' - return - } + currentBuild.result = 'SUCCESS' + return + } currentWs = sh(returnStdout: true, script: 'pwd').trim() ansiblePlaybook = "$currentWs/ansible/docker_image_push.yml" ansibleExtraArgs = """\ @@ -23,11 +23,13 @@ node(){ values.put('ansibleExtraArgs', ansibleExtraArgs) ansible_playbook_run(values) archiveArtifacts 'metadata.json' + currentBuild.description = "${values.image_tag}" } } - catch (err) - { + catch (err) { + currentBuild.result = "FAILURE" + currentBuild.description = "${values.image_tag}" throw err } } From 0de349bc86cfa34811e5952047eaa885037e98da Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Wed, 16 Jan 2019 13:18:26 +0530 Subject: [PATCH 0715/1345] Update Jenkinsfile --- pipelines/deploy/badger/Jenkinsfile | 1 - 1 file changed, 1 deletion(-) diff --git a/pipelines/deploy/badger/Jenkinsfile b/pipelines/deploy/badger/Jenkinsfile index 80773d013a..56b7d1ad7b 100644 --- a/pipelines/deploy/badger/Jenkinsfile +++ b/pipelines/deploy/badger/Jenkinsfile @@ -29,7 +29,6 @@ node() { } catch (err) { currentBuild.result = "FAILURE" - currentBuild.description = "${values.image_tag}" throw err } } From 8ef95927110986010611765d1b6ea0d7b82b476e Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Wed, 16 Jan 2019 13:18:34 +0530 Subject: [PATCH 0716/1345] Update Jenkinsfile --- pipelines/deploy/config-service/Jenkinsfile | 1 - 1 file changed, 1 deletion(-) diff --git a/pipelines/deploy/config-service/Jenkinsfile b/pipelines/deploy/config-service/Jenkinsfile index 00907eb251..b8cded40a6 100644 --- a/pipelines/deploy/config-service/Jenkinsfile +++ b/pipelines/deploy/config-service/Jenkinsfile @@ -29,7 +29,6 @@ node() { } catch (err) { currentBuild.result = "FAILURE" - currentBuild.description = "${values.image_tag}" throw err } } From 74a9cb3b3a3b5436f8894a5c1b83aaf7cc8fc13d Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Wed, 16 Jan 2019 13:18:39 +0530 Subject: [PATCH 0717/1345] Update Jenkinsfile --- pipelines/deploy/content/Jenkinsfile | 1 - 1 file changed, 1 deletion(-) diff --git a/pipelines/deploy/content/Jenkinsfile b/pipelines/deploy/content/Jenkinsfile index 1423495440..2a1bffbdad 100644 --- a/pipelines/deploy/content/Jenkinsfile +++ b/pipelines/deploy/content/Jenkinsfile @@ -29,7 +29,6 @@ node() { } catch (err) { currentBuild.result = "FAILURE" - currentBuild.description = "${values.image_tag}" throw err } } From b594a39b2524f32bc6c6020bc7f6899f4f6ff9a0 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Wed, 16 Jan 2019 13:18:45 +0530 Subject: [PATCH 0718/1345] Update Jenkinsfile --- pipelines/deploy/learner/Jenkinsfile | 1 - 1 file changed, 1 deletion(-) diff --git a/pipelines/deploy/learner/Jenkinsfile b/pipelines/deploy/learner/Jenkinsfile index d62ca4136e..7884b4187c 100644 --- a/pipelines/deploy/learner/Jenkinsfile +++ b/pipelines/deploy/learner/Jenkinsfile @@ -29,7 +29,6 @@ node() { } catch (err) { currentBuild.result = "FAILURE" - currentBuild.description = "${values.image_tag}" throw err } } From dffad610ccdc291693e6ee9ee96f7358ccd9e396 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Wed, 16 Jan 2019 13:18:51 +0530 Subject: [PATCH 0719/1345] Update Jenkinsfile --- pipelines/deploy/player/Jenkinsfile | 1 - 1 file changed, 1 deletion(-) diff --git a/pipelines/deploy/player/Jenkinsfile b/pipelines/deploy/player/Jenkinsfile index c4cb728d4d..bad9be18b4 100644 --- a/pipelines/deploy/player/Jenkinsfile +++ b/pipelines/deploy/player/Jenkinsfile @@ -28,7 +28,6 @@ node() { } catch (err) { currentBuild.result = "FAILURE" - currentBuild.description = "${values.image_tag}" throw err } } From f82c61307682efb3de99609668cab765cac7957e Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Wed, 16 Jan 2019 13:18:57 +0530 Subject: [PATCH 0720/1345] Update Jenkinsfile --- pipelines/deploy/push/Jenkinsfile | 1 - 1 file changed, 1 deletion(-) diff --git a/pipelines/deploy/push/Jenkinsfile b/pipelines/deploy/push/Jenkinsfile index 463decb85a..2768576f21 100644 --- a/pipelines/deploy/push/Jenkinsfile +++ b/pipelines/deploy/push/Jenkinsfile @@ -29,7 +29,6 @@ node(){ catch (err) { currentBuild.result = "FAILURE" - currentBuild.description = "${values.image_tag}" throw err } } From 4039933c293264d80d80bd5b362c1cc6bcee27da Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Wed, 16 Jan 2019 13:19:03 +0530 Subject: [PATCH 0721/1345] Update Jenkinsfile --- pipelines/deploy/telemetry/Jenkinsfile | 1 - 1 file changed, 1 deletion(-) diff --git a/pipelines/deploy/telemetry/Jenkinsfile b/pipelines/deploy/telemetry/Jenkinsfile index 317125ac44..7b4f915dcf 100644 --- a/pipelines/deploy/telemetry/Jenkinsfile +++ b/pipelines/deploy/telemetry/Jenkinsfile @@ -29,7 +29,6 @@ node() { } catch (err) { currentBuild.result = "FAILURE" - currentBuild.description = "${values.image_tag}" throw err } } From d8fcf46ec1bdab267fffa30b8d827b1468445085 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Wed, 16 Jan 2019 13:22:37 +0530 Subject: [PATCH 0722/1345] Update Jenkinsfile --- images/openbadger/Jenkinsfile | 1 - 1 file changed, 1 deletion(-) diff --git a/images/openbadger/Jenkinsfile b/images/openbadger/Jenkinsfile index 7a23569408..c322c44c52 100644 --- a/images/openbadger/Jenkinsfile +++ b/images/openbadger/Jenkinsfile @@ -55,7 +55,6 @@ node('build-slave') { } catch (err) { currentBuild.result = "FAILURE" - currentBuild.description = "${build_tag}" throw err } From 7a99aa64b1965de1f1f5eb605279543e1c39fb09 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Wed, 16 Jan 2019 22:46:00 +0530 Subject: [PATCH 0723/1345] Update Jenkinsfile --- pipelines/deploy/push/Jenkinsfile | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/pipelines/deploy/push/Jenkinsfile b/pipelines/deploy/push/Jenkinsfile index 2768576f21..8f918cbc06 100644 --- a/pipelines/deploy/push/Jenkinsfile +++ b/pipelines/deploy/push/Jenkinsfile @@ -14,10 +14,7 @@ node(){ } currentWs = sh(returnStdout: true, script: 'pwd').trim() ansiblePlaybook = "$currentWs/ansible/docker_image_push.yml" - ansibleExtraArgs = """\ - --extra-vars "hub_org=$hub_org image_name=$values.image_name - image_tag=$values.image_tag" --vault-password-file /home/ops/vault - """.stripIndent().replace("\n"," ") + ansibleExtraArgs = "--extra-vars \"hub_org=${hub_org} image_name=${values.image_name} image_tag=${values.image_tag}\" --vault-password-file /home/ops/vault" values.put('currentWs', currentWs) values.put('ansiblePlaybook', ansiblePlaybook) values.put('ansibleExtraArgs', ansibleExtraArgs) From 4702ccc1bf09d99d26e4149cb1e565d19ce604dd Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Wed, 16 Jan 2019 22:49:05 +0530 Subject: [PATCH 0724/1345] Update Jenkinsfile --- pipelines/deploy/badger/Jenkinsfile | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/pipelines/deploy/badger/Jenkinsfile b/pipelines/deploy/badger/Jenkinsfile index 56b7d1ad7b..fb32256cb9 100644 --- a/pipelines/deploy/badger/Jenkinsfile +++ b/pipelines/deploy/badger/Jenkinsfile @@ -14,11 +14,7 @@ node() { } currentWs = sh(returnStdout: true, script: 'pwd').trim() ansiblePlaybook = "$currentWs/ansible/deploy-badger.yml" - ansibleExtraArgs = """\ - --extra-vars "hub_org=$hub_org image_name=$values.image_name - image_tag=$values.image_tag service_name=badger-service" - --vault-password-file /home/ops/vault - """.stripIndent().replace("\n"," ") + ansibleExtraArgs = "--extra-vars \"hub_org=$hub_org image_name=$values.image_name image_tag=$values.image_tag service_name=badger-service\" --vault-password-file /home/ops/vault" values.put('currentWs', currentWs) values.put('ansiblePlaybook', ansiblePlaybook) values.put('ansibleExtraArgs', ansibleExtraArgs) From 54dc6324751027c18b62bac22936e827eccad228 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Wed, 16 Jan 2019 22:50:20 +0530 Subject: [PATCH 0725/1345] Update Jenkinsfile --- pipelines/deploy/config-service/Jenkinsfile | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/pipelines/deploy/config-service/Jenkinsfile b/pipelines/deploy/config-service/Jenkinsfile index b8cded40a6..aaaa2c2b5c 100644 --- a/pipelines/deploy/config-service/Jenkinsfile +++ b/pipelines/deploy/config-service/Jenkinsfile @@ -14,11 +14,7 @@ node() { } currentWs = sh(returnStdout: true, script: 'pwd').trim() ansiblePlaybook = "$currentWs/ansible/deploy.yml" - ansibleExtraArgs = """\ - --tags "stack-sunbird" --extra-vars "hub_org=$hub_org image_name=$values.image_name - image_tag=$values.image_tag service_name=config-service - deploy_config=True" --vault-password-file /home/ops/vault - """.stripIndent().replace("\n"," ") + ansibleExtraArgs = "--tags \"stack-sunbird\" --extra-vars \"hub_org=$hub_org image_name=$values.image_name image_tag=$values.image_tag service_name=config-service deploy_config=True\" --vault-password-file /home/ops/vault" values.put('currentWs', currentWs) values.put('ansiblePlaybook', ansiblePlaybook) values.put('ansibleExtraArgs', ansibleExtraArgs) From 2c26261d567b759bbb0930b2e88472e207370d04 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Wed, 16 Jan 2019 22:51:21 +0530 Subject: [PATCH 0726/1345] Update Jenkinsfile --- pipelines/deploy/content/Jenkinsfile | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/pipelines/deploy/content/Jenkinsfile b/pipelines/deploy/content/Jenkinsfile index 2a1bffbdad..5e2b1114ae 100644 --- a/pipelines/deploy/content/Jenkinsfile +++ b/pipelines/deploy/content/Jenkinsfile @@ -5,7 +5,7 @@ node() { cleanWs() checkout scm } - + stage('define params') { def values = docker_params() if(values == "first run"){ @@ -14,11 +14,7 @@ node() { } currentWs = sh(returnStdout: true, script: 'pwd').trim() ansiblePlaybook = "$currentWs/ansible/deploy.yml" - ansibleExtraArgs = """\ - --tags "stack-sunbird" --extra-vars "hub_org=$hub_org image_name=$values.image_name - image_tag=$values.image_tag service_name=content-service - deploy_content=True" --vault-password-file /home/ops/vault - """.stripIndent().replace("\n"," ") + ansibleExtraArgs = "--tags \"stack-sunbird\" --extra-vars \"hub_org=$hub_org image_name=$values.image_name image_tag=$values.image_tag service_name=content-service deploy_content=True\" --vault-password-file /home/ops/vault" values.put('currentWs', currentWs) values.put('ansiblePlaybook', ansiblePlaybook) values.put('ansibleExtraArgs', ansibleExtraArgs) From d73850081a0b71d2e447e0ff7e964b8a7cd60cb3 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Wed, 16 Jan 2019 22:52:12 +0530 Subject: [PATCH 0727/1345] Update Jenkinsfile --- pipelines/deploy/learner/Jenkinsfile | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/pipelines/deploy/learner/Jenkinsfile b/pipelines/deploy/learner/Jenkinsfile index 7884b4187c..fe6721422c 100644 --- a/pipelines/deploy/learner/Jenkinsfile +++ b/pipelines/deploy/learner/Jenkinsfile @@ -14,11 +14,7 @@ node() { } currentWs = sh(returnStdout: true, script: 'pwd').trim() ansiblePlaybook = "$currentWs/ansible/deploy.yml" - ansibleExtraArgs = """\ - --tags "stack-sunbird" --extra-vars "hub_org=$hub_org image_name=$values.image_name - image_tag=$values.image_tag service_name=learner-service - deploy_learner=True" --vault-password-file /home/ops/vault - """.stripIndent().replace("\n"," ") + ansibleExtraArgs = "--tags \"stack-sunbird\" --extra-vars \"hub_org=$hub_org image_name=$values.image_name image_tag=$values.image_tag service_name=learner-service deploy_learner=True\" --vault-password-file /home/ops/vault" values.put('currentWs', currentWs) values.put('ansiblePlaybook', ansiblePlaybook) values.put('ansibleExtraArgs', ansibleExtraArgs) From 2a77d97c2b1124d27f6947fbea3437f6284bf5cd Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Wed, 16 Jan 2019 22:53:13 +0530 Subject: [PATCH 0728/1345] Update Jenkinsfile --- pipelines/deploy/player/Jenkinsfile | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/pipelines/deploy/player/Jenkinsfile b/pipelines/deploy/player/Jenkinsfile index bad9be18b4..e9a78b7c31 100644 --- a/pipelines/deploy/player/Jenkinsfile +++ b/pipelines/deploy/player/Jenkinsfile @@ -13,11 +13,7 @@ node() { } currentWs = sh(returnStdout: true, script: 'pwd').trim() ansiblePlaybook = "$currentWs/ansible/deploy.yml" - ansibleExtraArgs = """\ - --tags "stack-sunbird" --extra-vars "hub_org=$hub_org image_name=$values.image_name - image_tag=$values.image_tag service_name=player - deploy_stack=True" --vault-password-file /home/ops/vault - """.stripIndent().replace("\n"," ") + ansibleExtraArgs = "--tags \"stack-sunbird\" --extra-vars \"hub_org=$hub_org image_name=$values.image_name image_tag=$values.image_tag service_name=player deploy_stack=True\" --vault-password-file /home/ops/vault" values.put('currentWs', currentWs) values.put('ansiblePlaybook', ansiblePlaybook) values.put('ansibleExtraArgs', ansibleExtraArgs) From 6211338eadbeab93a31d13dc6b80d0deba2143d1 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Wed, 16 Jan 2019 22:53:57 +0530 Subject: [PATCH 0729/1345] Update Jenkinsfile --- pipelines/deploy/telemetry/Jenkinsfile | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/pipelines/deploy/telemetry/Jenkinsfile b/pipelines/deploy/telemetry/Jenkinsfile index 7b4f915dcf..4d7e2c5b21 100644 --- a/pipelines/deploy/telemetry/Jenkinsfile +++ b/pipelines/deploy/telemetry/Jenkinsfile @@ -14,11 +14,7 @@ node() { } currentWs = sh(returnStdout: true, script: 'pwd').trim() ansiblePlaybook = "$currentWs/ansible/deploy.yml" - ansibleExtraArgs = """\ - --tags "stack-sunbird" --extra-vars "hub_org=$hub_org image_name=$values.image_name - image_tag=$values.image_tag service_name=telemetry-service - deploy_telemetry=True" --vault-password-file /home/ops/vault - """.stripIndent().replace("\n"," ") + ansibleExtraArgs = "--tags \"stack-sunbird\" --extra-vars \"hub_org=$hub_org image_name=$values.image_name image_tag=$values.image_tag service_name=telemetry-service deploy_telemetry=True\" --vault-password-file /home/ops/vault" values.put('currentWs', currentWs) values.put('ansiblePlaybook', ansiblePlaybook) values.put('ansibleExtraArgs', ansibleExtraArgs) From 80d13e461f612628e6717fb7ae902e7d48e32497 Mon Sep 17 00:00:00 2001 From: S M Y Date: Thu, 17 Jan 2019 15:06:14 +0530 Subject: [PATCH 0730/1345] Issue #000 api: api misconfiguration changes --- ansible/roles/kong-api/defaults/main.yml | 2 +- deploy/utilities/kill_samza_app.sh | 13 +++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 deploy/utilities/kill_samza_app.sh diff --git a/ansible/roles/kong-api/defaults/main.yml b/ansible/roles/kong-api/defaults/main.yml index 49c03e682c..e1186747da 100644 --- a/ansible/roles/kong-api/defaults/main.yml +++ b/ansible/roles/kong-api/defaults/main.yml @@ -2493,7 +2493,7 @@ kong_apis: config.allowed_payload_size: "{{ small_request_size_limit }}" - name: searchChannel request_path: "{{ channel_service_prefix }}/v1/search" - upstream_url: "{{ content_service_url }}v1/channel/search" + upstream_url: "{{ content_service_url }}/v1/channel/search" strip_request_path: true plugins: - name: jwt diff --git a/deploy/utilities/kill_samza_app.sh b/deploy/utilities/kill_samza_app.sh new file mode 100644 index 0000000000..e7d4b69df5 --- /dev/null +++ b/deploy/utilities/kill_samza_app.sh @@ -0,0 +1,13 @@ +#!/bin/bash +# Author S M Y +# Kill All the Samza Jobs and + +for id in $(/usr/local/hadoop/bin/yarn application --list | column -t | awk 'NR>2{print $1}' | tr "\n" " "); +do + echo "ID is $id" + /usr/local/hadoop/bin/yarn application -kill $id + sleep 1 +done +echo -e "\n--------------------------------------------------------------------------\n" +echo "The Overall status of yarn is as follows:" +/usr/local/hadoop/bin/yarn application --list | awk '{print $1 " " $2 " " $6 " " $7 " " $9}' | column -t From 3846e336d861d4eeb136dfea262199f3ecc5fecf Mon Sep 17 00:00:00 2001 From: S M Y Date: Thu, 17 Jan 2019 15:07:47 +0530 Subject: [PATCH 0731/1345] Issue #000 api: terminate all applications of samza jobs --- deploy/utilities/kill_samza_app.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deploy/utilities/kill_samza_app.sh b/deploy/utilities/kill_samza_app.sh index e7d4b69df5..b46e18d1c4 100644 --- a/deploy/utilities/kill_samza_app.sh +++ b/deploy/utilities/kill_samza_app.sh @@ -1,6 +1,6 @@ #!/bin/bash # Author S M Y -# Kill All the Samza Jobs and +# Kill All the Samza Jobs for id in $(/usr/local/hadoop/bin/yarn application --list | column -t | awk 'NR>2{print $1}' | tr "\n" " "); do From 4d686cd228665e7d98dfb04720b82999710a06cd Mon Sep 17 00:00:00 2001 From: S M Y Date: Thu, 17 Jan 2019 16:59:56 +0530 Subject: [PATCH 0732/1345] Issue #000 jar: cassandra jar update --- ansible/roles/cassandra-cql-update/tasks/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/cassandra-cql-update/tasks/main.yml b/ansible/roles/cassandra-cql-update/tasks/main.yml index dfb637163a..65286a4624 100644 --- a/ansible/roles/cassandra-cql-update/tasks/main.yml +++ b/ansible/roles/cassandra-cql-update/tasks/main.yml @@ -52,7 +52,7 @@ - name: download become: yes - command: wget https://github.com/project-sunbird/sunbird-utils/releases/download/release-1.12/cassandra-migration-0.0.1-SNAPSHOT-jar-with-dependencies.jar + command: wget https://github.com/project-sunbird/sunbird-utils/releases/download/release-1.13.0/cassandra-migration-0.0.1-SNAPSHOT-jar-with-dependencies.jar args: chdir: /tmp run_once: true From d1c54d90cad5c6e22847c5a8671a4a7e3208d9c3 Mon Sep 17 00:00:00 2001 From: S M Y Date: Thu, 17 Jan 2019 16:59:56 +0530 Subject: [PATCH 0733/1345] Issue #000 jar: cassandra jar update --- ansible/roles/cassandra-cql-update/tasks/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/cassandra-cql-update/tasks/main.yml b/ansible/roles/cassandra-cql-update/tasks/main.yml index dfb637163a..65286a4624 100644 --- a/ansible/roles/cassandra-cql-update/tasks/main.yml +++ b/ansible/roles/cassandra-cql-update/tasks/main.yml @@ -52,7 +52,7 @@ - name: download become: yes - command: wget https://github.com/project-sunbird/sunbird-utils/releases/download/release-1.12/cassandra-migration-0.0.1-SNAPSHOT-jar-with-dependencies.jar + command: wget https://github.com/project-sunbird/sunbird-utils/releases/download/release-1.13.0/cassandra-migration-0.0.1-SNAPSHOT-jar-with-dependencies.jar args: chdir: /tmp run_once: true From fb4ab685774c85be8ef387ead433b030e13e3bc6 Mon Sep 17 00:00:00 2001 From: Manzarul Date: Thu, 17 Jan 2019 19:16:05 +0530 Subject: [PATCH 0734/1345] Isseus #SB-00 fix: adding mock response --- ansible/roles/kong-api/defaults/main.yml | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/ansible/roles/kong-api/defaults/main.yml b/ansible/roles/kong-api/defaults/main.yml index e1186747da..a590082ffe 100644 --- a/ansible/roles/kong-api/defaults/main.yml +++ b/ansible/roles/kong-api/defaults/main.yml @@ -3648,3 +3648,14 @@ kong_apis: config.limit_by: credential - name: request-size-limiting config.allowed_payload_size: "{{ small_request_size_limit }}" + - name: "getUserByexternalId" + request_path: "{{ user_service_prefix }}/v1/mock/read" + upstream_url: "{{ learning_service_url }}/v1/user/mock/read" + strip_request_path: true + plugins: + - {name: 'jwt'} + - {name: 'cors'} + - "{{ statsd_pulgin }}" + - {name: 'acl', config.whitelist: 'publicUser'} + - {name: 'rate-limiting', config.policy: "local", config.hour: "{{ large_rate_limit_per_hour }}"} + - {name: 'request-size-limiting', config.allowed_payload_size: "{{ small_request_size_limit }}" } \ No newline at end of file From d1c711fb4bd443db01498e48fdf53a89c3ffb554 Mon Sep 17 00:00:00 2001 From: S M Y Date: Thu, 17 Jan 2019 19:44:20 +0530 Subject: [PATCH 0735/1345] Issue #000 api: upgrading jenkins version --- .../roles/stack-jenkins-slave/templates/stack-jenkins-slave.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/stack-jenkins-slave/templates/stack-jenkins-slave.yml b/ansible/roles/stack-jenkins-slave/templates/stack-jenkins-slave.yml index 0116f70663..dd5b0ea1c7 100644 --- a/ansible/roles/stack-jenkins-slave/templates/stack-jenkins-slave.yml +++ b/ansible/roles/stack-jenkins-slave/templates/stack-jenkins-slave.yml @@ -2,7 +2,7 @@ version: '3.1' services: jenkins-slave: - image: vfarcic/jenkins-swarm-agent:17.10.07-4 + image: vfarcic/jenkins-swarm-agent:18.02.12-10 environment: USER_NAME_SECRET: "/run/secrets/${JENKINS_USER_SECRET:-jenkins-user}" PASSWORD_SECRET: "/run/secrets/${JENKINS_PASS_SECRET:-jenkins-pass}" From 3fe6624d17c5533788a18312240a5d7b8e776c48 Mon Sep 17 00:00:00 2001 From: S M Y Date: Fri, 18 Jan 2019 09:05:34 +0530 Subject: [PATCH 0736/1345] Issue #000 vars: group vars updation --- ansible/inventories/sample/group_vars/sample | 3 +++ ansible/roles/stack-sunbird/templates/sunbird_player.env | 3 +++ 2 files changed, 6 insertions(+) diff --git a/ansible/inventories/sample/group_vars/sample b/ansible/inventories/sample/group_vars/sample index a5ec70503c..d6df8583b7 100644 --- a/ansible/inventories/sample/group_vars/sample +++ b/ansible/inventories/sample/group_vars/sample @@ -383,3 +383,6 @@ sunbird_google_captcha_site_key: sunbird_google_keycloak_client_id: sunbird_google_keycloak_secret: sunbird_content_azure_storage_container: +sunbird_azure_report_container_name: reports +sunbird_azure_account_name: +sunbird_azure_account_key: diff --git a/ansible/roles/stack-sunbird/templates/sunbird_player.env b/ansible/roles/stack-sunbird/templates/sunbird_player.env index 102bbff141..5e4a8b0f23 100644 --- a/ansible/roles/stack-sunbird/templates/sunbird_player.env +++ b/ansible/roles/stack-sunbird/templates/sunbird_player.env @@ -45,3 +45,6 @@ sunbird_google_captcha_site_key={{sunbird_google_captcha_site_key}} sunbird_google_keycloak_client_id={{sunbird_google_keycloak_client_id}} sunbird_google_keycloak_secret={{sunbird_google_keycloak_secret}} sunbird_help_link_visibility={{sunbird_help_link_visibility|default('FALSE')}} +sunbird_azure_report_container_name={{sunbird_azure_account_name}} +sunbird_azure_account_name={{sunbird_azure_account_name}} +sunbird_azure_account_key={{sunbird_azure_storage_key}} From a8970a2842c4445e258728c130f37aa040851130 Mon Sep 17 00:00:00 2001 From: S M Y Date: Fri, 18 Jan 2019 11:03:26 +0530 Subject: [PATCH 0737/1345] Issue #000 vars: group vars updation --- ansible/roles/stack-sunbird/templates/sunbird_player.env | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/stack-sunbird/templates/sunbird_player.env b/ansible/roles/stack-sunbird/templates/sunbird_player.env index 5e4a8b0f23..a4d14e70c6 100644 --- a/ansible/roles/stack-sunbird/templates/sunbird_player.env +++ b/ansible/roles/stack-sunbird/templates/sunbird_player.env @@ -45,6 +45,6 @@ sunbird_google_captcha_site_key={{sunbird_google_captcha_site_key}} sunbird_google_keycloak_client_id={{sunbird_google_keycloak_client_id}} sunbird_google_keycloak_secret={{sunbird_google_keycloak_secret}} sunbird_help_link_visibility={{sunbird_help_link_visibility|default('FALSE')}} -sunbird_azure_report_container_name={{sunbird_azure_account_name}} +sunbird_azure_report_container_name={{sunbird_azure_report_container_name}} sunbird_azure_account_name={{sunbird_azure_account_name}} sunbird_azure_account_key={{sunbird_azure_storage_key}} From 7494389cae8b797cea4876f8f4fdfa5f57b5aeee Mon Sep 17 00:00:00 2001 From: S M Y Date: Fri, 18 Jan 2019 11:39:53 +0530 Subject: [PATCH 0738/1345] Issue #000 vars: roolback jenkins updated version --- .../roles/stack-jenkins-slave/templates/stack-jenkins-slave.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/stack-jenkins-slave/templates/stack-jenkins-slave.yml b/ansible/roles/stack-jenkins-slave/templates/stack-jenkins-slave.yml index dd5b0ea1c7..0116f70663 100644 --- a/ansible/roles/stack-jenkins-slave/templates/stack-jenkins-slave.yml +++ b/ansible/roles/stack-jenkins-slave/templates/stack-jenkins-slave.yml @@ -2,7 +2,7 @@ version: '3.1' services: jenkins-slave: - image: vfarcic/jenkins-swarm-agent:18.02.12-10 + image: vfarcic/jenkins-swarm-agent:17.10.07-4 environment: USER_NAME_SECRET: "/run/secrets/${JENKINS_USER_SECRET:-jenkins-user}" PASSWORD_SECRET: "/run/secrets/${JENKINS_PASS_SECRET:-jenkins-pass}" From 6f04b24578cbf49a58a9d10e0a69076eb3004ba7 Mon Sep 17 00:00:00 2001 From: Anoop HM Date: Mon, 28 Jan 2019 12:28:29 +0530 Subject: [PATCH 0739/1345] Issue # SC-775 feat: On boarding create session api (#283) --- ansible/roles/kong-api/defaults/main.yml | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/ansible/roles/kong-api/defaults/main.yml b/ansible/roles/kong-api/defaults/main.yml index a590082ffe..5db6890ef0 100644 --- a/ansible/roles/kong-api/defaults/main.yml +++ b/ansible/roles/kong-api/defaults/main.yml @@ -51,6 +51,7 @@ config_service_prefix: /config textbook_service_prefix: /textbook lock_service_prefix: /lock otp_service_prefix: /otp +sso_service_prefix: /sso # Service URLs content_service_url: "http://content-service:5000" @@ -3351,6 +3352,22 @@ kong_apis: config.limit_by: credential - name: request-size-limiting config.allowed_payload_size: "{{ small_request_size_limit }}" + - name: createSession + request_path: "{{ sso_service_prefix }}/v1/create/session" + upstream_url: "{{ player_service_url }}/v1/sso/create/session" + strip_request_path: true + plugins: + - name: jwt + - name: cors + - "{{ statsd_pulgin }}" + - name: acl + config.whitelist: publicUser + - name: rate-limiting + config.policy: local + config.hour: "{{ medium_rate_limit_per_hour }}" + config.limit_by: credential + - name: request-size-limiting + config.allowed_payload_size: "{{ small_request_size_limit }}" # Data pipeline - name: "datasetSubmitRequest" From 5c38a177bc94c8689b6bbce3364da337b6ca12d2 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Mon, 28 Jan 2019 13:16:56 +0530 Subject: [PATCH 0740/1345] Update Jenkinsfile --- pipelines/adminutils/Jenkinsfile | 55 +++++++++++++++----------------- 1 file changed, 25 insertions(+), 30 deletions(-) diff --git a/pipelines/adminutils/Jenkinsfile b/pipelines/adminutils/Jenkinsfile index abc0f7b17d..e62c7bf199 100644 --- a/pipelines/adminutils/Jenkinsfile +++ b/pipelines/adminutils/Jenkinsfile @@ -1,34 +1,29 @@ - -// Importing deploy configuration @Library('deploy-conf') _ - -// Defining env specific variables -def getValues() { - if (environment == "dev") { - return [env: 'dev', - agent: 'general-dev'] +node() { + try { + stage('checkout public repo') { + cleanWs() + checkout scm + } + stage('define params') { + def values = docker_params() + if(values == "first run"){ + currentBuild.result = 'SUCCESS' + return + } + currentWs = sh(returnStdout: true, script: 'pwd').trim() + ansiblePlaybook = "$currentWs/ansible/deploy.yml" + ansibleExtraArgs = "--tags \"stack-adminutil\" --extra-vars \"hub_org=$hub_org image_name=$values.image_name image_tag=$values.image_tag\" --vault-password-file /home/ops/vault" + values.put('currentWs', currentWs) + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + ansible_playbook_run(values) + archiveArtifacts 'metadata.json' + currentBuild.description = "${values.image_tag}" + } } - else { - return [env: 'staging', - agent: 'general-staging'] + catch (err) { + currentBuild.result = "FAILURE" + throw err } } - -// Getting env specific values -def values = getValues() -def publicBranch = gitBranch - -copyArtifacts filter: 'metadata.json', projectName: 'test/player_build' -env.imagename = sh(returnStdout: true, script: 'cat metadata.json').trim() -println imagename - -// Backing up cassandra -ansiblePlugin{ - agent = build-slave - branch = publicBranch - image_name = imagename - scmUrl = 'https =//github.com/project-sunbird/sunbird-devops.git' - env = values.env - playBook = 'docker_push.yml' - ansibleExtraArgs = ' agent, --vault-password-file /run/secrets/vault-pass, image_name' -} From 48c1f1564fdc2b3beedc4fb9515e6b4fbd3153d4 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Mon, 28 Jan 2019 13:20:39 +0530 Subject: [PATCH 0741/1345] Create Jenkinsfile --- pipelines/am-onboard-apis/Jenkinsfile | 47 +++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 pipelines/am-onboard-apis/Jenkinsfile diff --git a/pipelines/am-onboard-apis/Jenkinsfile b/pipelines/am-onboard-apis/Jenkinsfile new file mode 100644 index 0000000000..433b2fcc52 --- /dev/null +++ b/pipelines/am-onboard-apis/Jenkinsfile @@ -0,0 +1,47 @@ +@Library('deploy-conf') _ +node() { + try { + String ANSI_GREEN = "\u001B[32m" + String ANSI_NORMAL = "\u001B[0m" + String ANSI_BOLD = "\u001B[1m" + String ANSI_RED = "\u001B[31m" + String ANSI_YELLOW = "\u001B[33m" + + if (params.size() == 0){ + envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() + properties([[$class: 'RebuildSettings', autoRebuild: false, rebuildDisabled: false], parameters([ + choice(choices: ['GitHub', 'Local'], description: 'Choose the ansible inventory source', name: 'inventory_source'), + string(defaultValue: "${WORKSPACE}/private/ansible/inventories/${envDir}", description: 'Please sepecify the full path to the inventory directory. The default value is $WORKSPACE/private/ansible/env. Here env is the previous directory of the job.', name: 'inventory_path', trim: false)])]) + ansiColor('xterm') { + println (ANSI_BOLD + ANSI_GREEN + '''\ + First run of the job. Parameters created. Stopping the current build. + Please trigger new build and provide parameters if required. + '''.stripIndent().replace("\n"," ") + ANSI_NORMAL) + } + currentBuild.result = 'SUCCESS' + return "first run" + } + + stage('checkout public repo') { + cleanWs() + checkout scm + } + + ansiColor('xterm') { + stage('deploy'){ + values = [:] + currentWs = sh(returnStdout: true, script: 'pwd').trim() + values.put('currentWs', currentWs) + ansiblePlaybook = "${currentWs}/ansible/api-manager.yml" + ansibleExtraArgs = "--tags kong-api --vault-password-file /run/secrets/vault-pass" + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + println values +// ansible_playbook_run(values) + } + } + } + catch (err) { + throw err + } +} From 425163138ae25ecf2800b08f628cbb7f47700d8e Mon Sep 17 00:00:00 2001 From: "kaliraja.ramasamy" Date: Mon, 28 Jan 2019 13:23:58 +0530 Subject: [PATCH 0742/1345] Issue #0000 fix: DO-350 added the jenkinsfile in shared library format --- pipelines/am-onboard-apis/Jenkinsfile | 47 ++++++++++++++++++++++ pipelines/am-onboard-consumers/Jenkinsfile | 47 ++++++++++++++++++++++ 2 files changed, 94 insertions(+) create mode 100644 pipelines/am-onboard-apis/Jenkinsfile create mode 100644 pipelines/am-onboard-consumers/Jenkinsfile diff --git a/pipelines/am-onboard-apis/Jenkinsfile b/pipelines/am-onboard-apis/Jenkinsfile new file mode 100644 index 0000000000..0d10a33023 --- /dev/null +++ b/pipelines/am-onboard-apis/Jenkinsfile @@ -0,0 +1,47 @@ +@Library('deploy-conf') _ +node() { + try { + String ANSI_GREEN = "\u001B[32m" + String ANSI_NORMAL = "\u001B[0m" + String ANSI_BOLD = "\u001B[1m" + String ANSI_RED = "\u001B[31m" + String ANSI_YELLOW = "\u001B[33m" + + if (params.size() == 0){ + envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() + properties([[$class: 'RebuildSettings', autoRebuild: false, rebuildDisabled: false], parameters([ + choice(choices: ['GitHub', 'Local'], description: 'Choose the ansible inventory source', name: 'inventory_source'), + string(defaultValue: "${WORKSPACE}/private/ansible/inventories/${envDir}", description: 'Please sepecify the full path to the inventory directory. The default value is $WORKSPACE/private/ansible/env. Here env is the previous directory of the job.', name: 'inventory_path', trim: false)])]) + ansiColor('xterm') { + println (ANSI_BOLD + ANSI_GREEN + '''\ + First run of the job. Parameters created. Stopping the current build. + Please trigger new build and provide parameters if required. + '''.stripIndent().replace("\n"," ") + ANSI_NORMAL) + } + currentBuild.result = 'SUCCESS' + return "first run" + } + + stage('checkout public repo') { + cleanWs() + checkout scm + } + + ansiColor('xterm') { + stage('deploy'){ + values = [:] + currentWs = sh(returnStdout: true, script: 'pwd').trim() + values.put('currentWs', currentWs) + ansiblePlaybook = "${currentWs}/ansible/api-manager.yml" + ansibleExtraArgs = "--tags kong-api --vault-password-file /run/secrets/vault-pass -v" + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + println values +// ansible_playbook_run(values) + } + } + } + catch (err) { + throw err + } +} diff --git a/pipelines/am-onboard-consumers/Jenkinsfile b/pipelines/am-onboard-consumers/Jenkinsfile new file mode 100644 index 0000000000..cb3c9649f7 --- /dev/null +++ b/pipelines/am-onboard-consumers/Jenkinsfile @@ -0,0 +1,47 @@ +@Library('deploy-conf') _ +node() { + try { + String ANSI_GREEN = "\u001B[32m" + String ANSI_NORMAL = "\u001B[0m" + String ANSI_BOLD = "\u001B[1m" + String ANSI_RED = "\u001B[31m" + String ANSI_YELLOW = "\u001B[33m" + + if (params.size() == 0){ + envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() + properties([[$class: 'RebuildSettings', autoRebuild: false, rebuildDisabled: false], parameters([ + choice(choices: ['GitHub', 'Local'], description: 'Choose the ansible inventory source', name: 'inventory_source'), + string(defaultValue: "${WORKSPACE}/private/ansible/inventories/${envDir}", description: 'Please sepecify the full path to the inventory directory. The default value is $WORKSPACE/private/ansible/env. Here env is the previous directory of the job.', name: 'inventory_path', trim: false)])]) + ansiColor('xterm') { + println (ANSI_BOLD + ANSI_GREEN + '''\ + First run of the job. Parameters created. Stopping the current build. + Please trigger new build and provide parameters if required. + '''.stripIndent().replace("\n"," ") + ANSI_NORMAL) + } + currentBuild.result = 'SUCCESS' + return "first run" + } + + stage('checkout public repo') { + cleanWs() + checkout scm + } + + ansiColor('xterm') { + stage('deploy'){ + values = [:] + currentWs = sh(returnStdout: true, script: 'pwd').trim() + values.put('currentWs', currentWs) + ansiblePlaybook = "${currentWs}/ansible/api-manager.yml" + ansibleExtraArgs = "--tags kong-consumer --vault-password-file /run/secrets/vault-pass -v" + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + println values +// ansible_playbook_run(values) + } + } + } + catch (err) { + throw err + } +} From 3e3e59a9ed0ce2cfbcb6549ef557392f5200b683 Mon Sep 17 00:00:00 2001 From: "kaliraja.ramasamy" Date: Mon, 28 Jan 2019 13:28:50 +0530 Subject: [PATCH 0743/1345] Issue #0000 fix: DO-350 added the jenkinsfile in shared library format --- pipelines/am-onboard-apis/Jenkinsfile | 4 ---- 1 file changed, 4 deletions(-) diff --git a/pipelines/am-onboard-apis/Jenkinsfile b/pipelines/am-onboard-apis/Jenkinsfile index 4f66d69c8c..0d10a33023 100644 --- a/pipelines/am-onboard-apis/Jenkinsfile +++ b/pipelines/am-onboard-apis/Jenkinsfile @@ -33,11 +33,7 @@ node() { currentWs = sh(returnStdout: true, script: 'pwd').trim() values.put('currentWs', currentWs) ansiblePlaybook = "${currentWs}/ansible/api-manager.yml" -<<<<<<< HEAD ansibleExtraArgs = "--tags kong-api --vault-password-file /run/secrets/vault-pass -v" -======= - ansibleExtraArgs = "--tags kong-api --vault-password-file /run/secrets/vault-pass" ->>>>>>> 48c1f1564fdc2b3beedc4fb9515e6b4fbd3153d4 values.put('ansiblePlaybook', ansiblePlaybook) values.put('ansibleExtraArgs', ansibleExtraArgs) println values From 48038c13653c764d823601a37f34c1a6242cf6eb Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Mon, 28 Jan 2019 14:01:44 +0530 Subject: [PATCH 0744/1345] Create Jenkinsfile --- .../application-elasticsearch/Jenkinsfile | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 pipelines/application-elasticsearch/Jenkinsfile diff --git a/pipelines/application-elasticsearch/Jenkinsfile b/pipelines/application-elasticsearch/Jenkinsfile new file mode 100644 index 0000000000..e2409b6ca6 --- /dev/null +++ b/pipelines/application-elasticsearch/Jenkinsfile @@ -0,0 +1,47 @@ +@Library('deploy-conf') _ +node() { + try { + String ANSI_GREEN = "\u001B[32m" + String ANSI_NORMAL = "\u001B[0m" + String ANSI_BOLD = "\u001B[1m" + String ANSI_RED = "\u001B[31m" + String ANSI_YELLOW = "\u001B[33m" + + if (params.size() == 0){ + envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() + properties([[$class: 'RebuildSettings', autoRebuild: false, rebuildDisabled: false], parameters([ + choice(choices: ['GitHub', 'Local'], description: 'Choose the ansible inventory source', name: 'inventory_source'), + string(defaultValue: "${WORKSPACE}/private/ansible/inventories/${envDir}", description: 'Please sepecify the full path to the inventory directory. The default value is $WORKSPACE/private/ansible/env. Here env is the previous directory of the job.', name: 'inventory_path', trim: false)])]) + ansiColor('xterm') { + println (ANSI_BOLD + ANSI_GREEN + '''\ + First run of the job. Parameters created. Stopping the current build. + Please trigger new build and provide parameters if required. + '''.stripIndent().replace("\n"," ") + ANSI_NORMAL) + } + currentBuild.result = 'SUCCESS' + return "first run" + } + + stage('checkout public repo') { + cleanWs() + checkout scm + } + + ansiColor('xterm') { + stage('deploy'){ + values = [:] + currentWs = sh(returnStdout: true, script: 'pwd').trim() + values.put('currentWs', currentWs) + ansiblePlaybook = "${currentWs}/ansible/provision.yml" + ansibleExtraArgs = "--tags es --vault-password-file /run/secrets/vault-pass" + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + println values +// ansible_playbook_run(values) + } + } + } + catch (err) { + throw err + } +} From 20f760401ebaae870e2aae49b8be7b4b90087f18 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Mon, 28 Jan 2019 14:11:37 +0530 Subject: [PATCH 0745/1345] Create Jenkinsfile --- pipelines/es-backup/Jenkinsfile | 57 +++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 pipelines/es-backup/Jenkinsfile diff --git a/pipelines/es-backup/Jenkinsfile b/pipelines/es-backup/Jenkinsfile new file mode 100644 index 0000000000..90032d2cb1 --- /dev/null +++ b/pipelines/es-backup/Jenkinsfile @@ -0,0 +1,57 @@ +@Library('deploy-conf') _ +node() { + try { + String ANSI_GREEN = "\u001B[32m" + String ANSI_NORMAL = "\u001B[0m" + String ANSI_BOLD = "\u001B[1m" + String ANSI_RED = "\u001B[31m" + String ANSI_YELLOW = "\u001B[33m" + + if (params.size() == 0){ + envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() + properties([[$class: 'RebuildSettings', autoRebuild: false, rebuildDisabled: false], parameters([ + choice(choices: ['GitHub', 'Local'], description: 'Choose the ansible inventory source', name: 'inventory_source'), + string(defaultValue: "${WORKSPACE}/private/ansible/inventories/${envDir}", description: 'Please sepecify the full path to the inventory directory. The default value is $WORKSPACE/private/ansible/env. Here env is the previous directory of the job.', name: 'inventory_path', trim: false)])]) + ansiColor('xterm') { + println (ANSI_BOLD + ANSI_GREEN + '''\ + First run of the job. Parameters created. Stopping the current build. + Please trigger new build and provide parameters if required. + '''.stripIndent().replace("\n"," ") + ANSI_NORMAL) + } + currentBuild.result = 'SUCCESS' + return "first run" + } + + triggers { + cron('H 0 * * *') + } + + stage('checkout public repo') { + cleanWs() + checkout scm + } + + ansiColor('xterm') { + stage('deploy'){ + values = [:] + currentWs = sh(returnStdout: true, script: 'pwd').trim() + values.put('currentWs', currentWs) + ansiblePlaybook = "${currentWs}/ansible/es.yml" + ansibleExtraArgs = "--tags \"es_backup\" -v --vault-password-file /run/secrets/vault-pass" + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + println values +// ansible_playbook_run(values) + } + } + + post { + failure { + slackSend channel: '#devops-team', color: 'danger', message: "Build Failed - ${env.JOB_NAME} ${env.BUILD_NUMBER} (<${env.BUILD_URL}|Open>)" + } + } + } + catch (err) { + throw err + } +} From 3910c2d1c5c670d71d79a3a7a2b20777e28b99cc Mon Sep 17 00:00:00 2001 From: "kaliraja.ramasamy" Date: Mon, 28 Jan 2019 14:22:33 +0530 Subject: [PATCH 0746/1345] Issue #0000 fix: DO-350 added the logging jenkinsfile --- pipelines/logger/Jenkinsfile | 47 ++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 pipelines/logger/Jenkinsfile diff --git a/pipelines/logger/Jenkinsfile b/pipelines/logger/Jenkinsfile new file mode 100644 index 0000000000..597d673cae --- /dev/null +++ b/pipelines/logger/Jenkinsfile @@ -0,0 +1,47 @@ +@Library('deploy-conf') _ +node() { + try { + String ANSI_GREEN = "\u001B[32m" + String ANSI_NORMAL = "\u001B[0m" + String ANSI_BOLD = "\u001B[1m" + String ANSI_RED = "\u001B[31m" + String ANSI_YELLOW = "\u001B[33m" + + if (params.size() == 0){ + envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() + properties([[$class: 'RebuildSettings', autoRebuild: false, rebuildDisabled: false], parameters([ + choice(choices: ['GitHub', 'Local'], description: 'Choose the ansible inventory source', name: 'inventory_source'), + string(defaultValue: "${WORKSPACE}/private/ansible/inventories/${envDir}", description: 'Please sepecify the full path to the inventory directory. The default value is $WORKSPACE/private/ansible/env. Here env is the previous directory of the job.', name: 'inventory_path', trim: false)])]) + ansiColor('xterm') { + println (ANSI_BOLD + ANSI_GREEN + '''\ + First run of the job. Parameters created. Stopping the current build. + Please trigger new build and provide parameters if required. + '''.stripIndent().replace("\n"," ") + ANSI_NORMAL) + } + currentBuild.result = 'SUCCESS' + return "first run" + } + + stage('checkout public repo') { + cleanWs() + checkout scm + } + + ansiColor('xterm') { + stage('deploy'){ + values = [:] + currentWs = sh(returnStdout: true, script: 'pwd').trim() + values.put('currentWs', currentWs) + ansiblePlaybook = "${currentWs}/ansible/logging.yml" + ansibleExtraArgs = "--vault-password-file /run/secrets/vault-pass -v" + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + println values +// ansible_playbook_run(values) + } + } + } + catch (err) { + throw err + } +} From 3841eaadb8f99eca8e70dcfcf7ea21c32b30b82a Mon Sep 17 00:00:00 2001 From: "kaliraja.ramasamy" Date: Mon, 28 Jan 2019 14:23:36 +0530 Subject: [PATCH 0747/1345] Issue #0000 fix: DO-350 added the logging jenkinsfile --- pipelines/logger/Jenkinsfile | 47 ------------------------------------ 1 file changed, 47 deletions(-) delete mode 100644 pipelines/logger/Jenkinsfile diff --git a/pipelines/logger/Jenkinsfile b/pipelines/logger/Jenkinsfile deleted file mode 100644 index 597d673cae..0000000000 --- a/pipelines/logger/Jenkinsfile +++ /dev/null @@ -1,47 +0,0 @@ -@Library('deploy-conf') _ -node() { - try { - String ANSI_GREEN = "\u001B[32m" - String ANSI_NORMAL = "\u001B[0m" - String ANSI_BOLD = "\u001B[1m" - String ANSI_RED = "\u001B[31m" - String ANSI_YELLOW = "\u001B[33m" - - if (params.size() == 0){ - envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() - properties([[$class: 'RebuildSettings', autoRebuild: false, rebuildDisabled: false], parameters([ - choice(choices: ['GitHub', 'Local'], description: 'Choose the ansible inventory source', name: 'inventory_source'), - string(defaultValue: "${WORKSPACE}/private/ansible/inventories/${envDir}", description: 'Please sepecify the full path to the inventory directory. The default value is $WORKSPACE/private/ansible/env. Here env is the previous directory of the job.', name: 'inventory_path', trim: false)])]) - ansiColor('xterm') { - println (ANSI_BOLD + ANSI_GREEN + '''\ - First run of the job. Parameters created. Stopping the current build. - Please trigger new build and provide parameters if required. - '''.stripIndent().replace("\n"," ") + ANSI_NORMAL) - } - currentBuild.result = 'SUCCESS' - return "first run" - } - - stage('checkout public repo') { - cleanWs() - checkout scm - } - - ansiColor('xterm') { - stage('deploy'){ - values = [:] - currentWs = sh(returnStdout: true, script: 'pwd').trim() - values.put('currentWs', currentWs) - ansiblePlaybook = "${currentWs}/ansible/logging.yml" - ansibleExtraArgs = "--vault-password-file /run/secrets/vault-pass -v" - values.put('ansiblePlaybook', ansiblePlaybook) - values.put('ansibleExtraArgs', ansibleExtraArgs) - println values -// ansible_playbook_run(values) - } - } - } - catch (err) { - throw err - } -} From caa10cadad51db07d8605577142d450d8707a0b5 Mon Sep 17 00:00:00 2001 From: "kaliraja.ramasamy" Date: Mon, 28 Jan 2019 14:26:40 +0530 Subject: [PATCH 0748/1345] Issue #0000 fix: DO-350 added the logging jenkinsfile~ --- pipelines/logger/Jenkinsfile | 47 ++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 pipelines/logger/Jenkinsfile diff --git a/pipelines/logger/Jenkinsfile b/pipelines/logger/Jenkinsfile new file mode 100644 index 0000000000..597d673cae --- /dev/null +++ b/pipelines/logger/Jenkinsfile @@ -0,0 +1,47 @@ +@Library('deploy-conf') _ +node() { + try { + String ANSI_GREEN = "\u001B[32m" + String ANSI_NORMAL = "\u001B[0m" + String ANSI_BOLD = "\u001B[1m" + String ANSI_RED = "\u001B[31m" + String ANSI_YELLOW = "\u001B[33m" + + if (params.size() == 0){ + envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() + properties([[$class: 'RebuildSettings', autoRebuild: false, rebuildDisabled: false], parameters([ + choice(choices: ['GitHub', 'Local'], description: 'Choose the ansible inventory source', name: 'inventory_source'), + string(defaultValue: "${WORKSPACE}/private/ansible/inventories/${envDir}", description: 'Please sepecify the full path to the inventory directory. The default value is $WORKSPACE/private/ansible/env. Here env is the previous directory of the job.', name: 'inventory_path', trim: false)])]) + ansiColor('xterm') { + println (ANSI_BOLD + ANSI_GREEN + '''\ + First run of the job. Parameters created. Stopping the current build. + Please trigger new build and provide parameters if required. + '''.stripIndent().replace("\n"," ") + ANSI_NORMAL) + } + currentBuild.result = 'SUCCESS' + return "first run" + } + + stage('checkout public repo') { + cleanWs() + checkout scm + } + + ansiColor('xterm') { + stage('deploy'){ + values = [:] + currentWs = sh(returnStdout: true, script: 'pwd').trim() + values.put('currentWs', currentWs) + ansiblePlaybook = "${currentWs}/ansible/logging.yml" + ansibleExtraArgs = "--vault-password-file /run/secrets/vault-pass -v" + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + println values +// ansible_playbook_run(values) + } + } + } + catch (err) { + throw err + } +} From 0412d28d476f62cde56f68b2b06908753e9c73de Mon Sep 17 00:00:00 2001 From: "kaliraja.ramasamy" Date: Mon, 28 Jan 2019 14:32:46 +0530 Subject: [PATCH 0749/1345] Issue #0000 fix: DO-350 added the monitoring jenkinsfile~ --- pipelines/monitor/Jenkinsfile | 47 +++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 pipelines/monitor/Jenkinsfile diff --git a/pipelines/monitor/Jenkinsfile b/pipelines/monitor/Jenkinsfile new file mode 100644 index 0000000000..1b542b500c --- /dev/null +++ b/pipelines/monitor/Jenkinsfile @@ -0,0 +1,47 @@ +@Library('deploy-conf') _ +node() { + try { + String ANSI_GREEN = "\u001B[32m" + String ANSI_NORMAL = "\u001B[0m" + String ANSI_BOLD = "\u001B[1m" + String ANSI_RED = "\u001B[31m" + String ANSI_YELLOW = "\u001B[33m" + + if (params.size() == 0){ + envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() + properties([[$class: 'RebuildSettings', autoRebuild: false, rebuildDisabled: false], parameters([ + choice(choices: ['GitHub', 'Local'], description: 'Choose the ansible inventory source', name: 'inventory_source'), + string(defaultValue: "${WORKSPACE}/private/ansible/inventories/${envDir}", description: 'Please sepecify the full path to the inventory directory. The default value is $WORKSPACE/private/ansible/env. Here env is the previous directory of the job.', name: 'inventory_path', trim: false)])]) + ansiColor('xterm') { + println (ANSI_BOLD + ANSI_GREEN + '''\ + First run of the job. Parameters created. Stopping the current build. + Please trigger new build and provide parameters if required. + '''.stripIndent().replace("\n"," ") + ANSI_NORMAL) + } + currentBuild.result = 'SUCCESS' + return "first run" + } + + stage('checkout public repo') { + cleanWs() + checkout scm + } + + ansiColor('xterm') { + stage('deploy'){ + values = [:] + currentWs = sh(returnStdout: true, script: 'pwd').trim() + values.put('currentWs', currentWs) + ansiblePlaybook = "${currentWs}/ansible/monitoring.yml" + ansibleExtraArgs = "--vault-password-file /run/secrets/vault-pass -v" + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + println values +// ansible_playbook_run(values) + } + } + } + catch (err) { + throw err + } +} From 6c4e10fd97f52d231f9d6ab4e60869cdb4afb865 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Mon, 28 Jan 2019 14:57:39 +0530 Subject: [PATCH 0750/1345] Create Jenkinsfile --- pipelines/es-restore/Jenkinsfile | 52 ++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 pipelines/es-restore/Jenkinsfile diff --git a/pipelines/es-restore/Jenkinsfile b/pipelines/es-restore/Jenkinsfile new file mode 100644 index 0000000000..f74375ca0d --- /dev/null +++ b/pipelines/es-restore/Jenkinsfile @@ -0,0 +1,52 @@ +@Library('deploy-conf') _ +node() { + try { + String ANSI_GREEN = "\u001B[32m" + String ANSI_NORMAL = "\u001B[0m" + String ANSI_BOLD = "\u001B[1m" + String ANSI_RED = "\u001B[31m" + String ANSI_YELLOW = "\u001B[33m" + + if (params.size() == 0){ + envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() + properties([[$class: 'RebuildSettings', autoRebuild: false, rebuildDisabled: false], parameters([ + choice(choices: ['GitHub', 'Local'], description: 'Choose the ansible inventory source', name: 'inventory_source'), + string(defaultValue: "${WORKSPACE}/private/ansible/inventories/${envDir}", description: 'Please sepecify the full path to the inventory directory. The default value is $WORKSPACE/private/ansible/env. Here env is the previous directory of the job.', name: 'inventory_path', trim: false), + string(defaultValue: '', description: 'Specify the snapshot number', name: 'snapshot_number')])]) + ansiColor('xterm') { + println (ANSI_BOLD + ANSI_GREEN + '''\ + First run of the job. Parameters created. Stopping the current build. + Please trigger new build and provide parameters if required. + '''.stripIndent().replace("\n"," ") + ANSI_NORMAL) + } + currentBuild.result = 'SUCCESS' + return "first run" + } + + triggers { + cron('H 0 * * *') + } + + stage('checkout public repo') { + cleanWs() + checkout scm + } + + ansiColor('xterm') { + stage('deploy'){ + values = [:] + currentWs = sh(returnStdout: true, script: 'pwd').trim() + values.put('currentWs', currentWs) + ansiblePlaybook = "${currentWs}/ansible/es.yml" + ansibleExtraArgs = "--tags \"es_restore\" --extra-vars \"snapshot_number=${snapshot_number}\" -v --vault-password-file /run/secrets/vault-pass" + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + println values +// ansible_playbook_run(values) + } + } + } + catch (err) { + throw err + } +} From 03bf0680b69983dc5db984db730d3b1a0276082a Mon Sep 17 00:00:00 2001 From: "kaliraja.ramasamy" Date: Mon, 28 Jan 2019 15:00:46 +0530 Subject: [PATCH 0751/1345] Issue #0000 fix: DO-350 added the logger-elasticsearch jenkinsfile --- pipelines/logger-elasticsearch/Jenkinsfile | 47 ++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 pipelines/logger-elasticsearch/Jenkinsfile diff --git a/pipelines/logger-elasticsearch/Jenkinsfile b/pipelines/logger-elasticsearch/Jenkinsfile new file mode 100644 index 0000000000..6d966c0527 --- /dev/null +++ b/pipelines/logger-elasticsearch/Jenkinsfile @@ -0,0 +1,47 @@ +@Library('deploy-conf') _ +node() { + try { + String ANSI_GREEN = "\u001B[32m" + String ANSI_NORMAL = "\u001B[0m" + String ANSI_BOLD = "\u001B[1m" + String ANSI_RED = "\u001B[31m" + String ANSI_YELLOW = "\u001B[33m" + + if (params.size() == 0){ + envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() + properties([[$class: 'RebuildSettings', autoRebuild: false, rebuildDisabled: false], parameters([ + choice(choices: ['GitHub', 'Local'], description: 'Choose the ansible inventory source', name: 'inventory_source'), + string(defaultValue: "${WORKSPACE}/private/ansible/inventories/${envDir}", description: 'Please sepecify the full path to the inventory directory. The default value is $WORKSPACE/private/ansible/env. Here env is the previous directory of the job.', name: 'inventory_path', trim: false)])]) + ansiColor('xterm') { + println (ANSI_BOLD + ANSI_GREEN + '''\ + First run of the job. Parameters created. Stopping the current build. + Please trigger new build and provide parameters if required. + '''.stripIndent().replace("\n"," ") + ANSI_NORMAL) + } + currentBuild.result = 'SUCCESS' + return "first run" + } + + stage('checkout public repo') { + cleanWs() + checkout scm + } + + ansiColor('xterm') { + stage('deploy'){ + values = [:] + currentWs = sh(returnStdout: true, script: 'pwd').trim() + values.put('currentWs', currentWs) + ansiblePlaybook = "${currentWs}/ansible/logging.yml" + ansibleExtraArgs = "--tags log-es --vault-password-file /run/secrets/vault-pass -v" + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + println values +// ansible_playbook_run(values) + } + } + } + catch (err) { + throw err + } +} From 89aae1e35ce0c0d11fd1e220dadda8110ba42866 Mon Sep 17 00:00:00 2001 From: "kaliraja.ramasamy" Date: Mon, 28 Jan 2019 15:12:28 +0530 Subject: [PATCH 0752/1345] Issue #0000 fix: DO-350 added the logger-elasticsearch-backup and restore jenkinsfile --- pipelines/log-es-backup/Jenkinsfile | 57 ++++++++++++++++++++++++++++ pipelines/log-es-restore/Jenkinsfile | 52 +++++++++++++++++++++++++ 2 files changed, 109 insertions(+) create mode 100644 pipelines/log-es-backup/Jenkinsfile create mode 100644 pipelines/log-es-restore/Jenkinsfile diff --git a/pipelines/log-es-backup/Jenkinsfile b/pipelines/log-es-backup/Jenkinsfile new file mode 100644 index 0000000000..1958eeb317 --- /dev/null +++ b/pipelines/log-es-backup/Jenkinsfile @@ -0,0 +1,57 @@ +@Library('deploy-conf') _ +node() { + try { + String ANSI_GREEN = "\u001B[32m" + String ANSI_NORMAL = "\u001B[0m" + String ANSI_BOLD = "\u001B[1m" + String ANSI_RED = "\u001B[31m" + String ANSI_YELLOW = "\u001B[33m" + + if (params.size() == 0){ + envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() + properties([[$class: 'RebuildSettings', autoRebuild: false, rebuildDisabled: false], parameters([ + choice(choices: ['GitHub', 'Local'], description: 'Choose the ansible inventory source', name: 'inventory_source'), + string(defaultValue: "${WORKSPACE}/private/ansible/inventories/${envDir}", description: 'Please sepecify the full path to the inventory directory. The default value is $WORKSPACE/private/ansible/env. Here env is the previous directory of the job.', name: 'inventory_path', trim: false)])]) + ansiColor('xterm') { + println (ANSI_BOLD + ANSI_GREEN + '''\ + First run of the job. Parameters created. Stopping the current build. + Please trigger new build and provide parameters if required. + '''.stripIndent().replace("\n"," ") + ANSI_NORMAL) + } + currentBuild.result = 'SUCCESS' + return "first run" + } + + triggers { + cron('H 0 * * *') + } + + stage('checkout public repo') { + cleanWs() + checkout scm + } + + ansiColor('xterm') { + stage('deploy'){ + values = [:] + currentWs = sh(returnStdout: true, script: 'pwd').trim() + values.put('currentWs', currentWs) + ansiblePlaybook = "${currentWs}/ansible/es.yml" + ansibleExtraArgs = "--tags \"log_es_backup\" -v --vault-password-file /run/secrets/vault-pass" + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + println values +// ansible_playbook_run(values) + } + } + + post { + failure { + slackSend channel: '#devops-team', color: 'danger', message: "Build Failed - ${env.JOB_NAME} ${env.BUILD_NUMBER} (<${env.BUILD_URL}|Open>)" + } + } + } + catch (err) { + throw err + } +} diff --git a/pipelines/log-es-restore/Jenkinsfile b/pipelines/log-es-restore/Jenkinsfile new file mode 100644 index 0000000000..aa9113f30e --- /dev/null +++ b/pipelines/log-es-restore/Jenkinsfile @@ -0,0 +1,52 @@ +@Library('deploy-conf') _ +node() { + try { + String ANSI_GREEN = "\u001B[32m" + String ANSI_NORMAL = "\u001B[0m" + String ANSI_BOLD = "\u001B[1m" + String ANSI_RED = "\u001B[31m" + String ANSI_YELLOW = "\u001B[33m" + + if (params.size() == 0){ + envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() + properties([[$class: 'RebuildSettings', autoRebuild: false, rebuildDisabled: false], parameters([ + choice(choices: ['GitHub', 'Local'], description: 'Choose the ansible inventory source', name: 'inventory_source'), + string(defaultValue: "${WORKSPACE}/private/ansible/inventories/${envDir}", description: 'Please sepecify the full path to the inventory directory. The default value is $WORKSPACE/private/ansible/env. Here env is the previous directory of the job.', name: 'inventory_path', trim: false), + string(defaultValue: '', description: 'Specify the snapshot number', name: 'snapshot_number')])]) + ansiColor('xterm') { + println (ANSI_BOLD + ANSI_GREEN + '''\ + First run of the job. Parameters created. Stopping the current build. + Please trigger new build and provide parameters if required. + '''.stripIndent().replace("\n"," ") + ANSI_NORMAL) + } + currentBuild.result = 'SUCCESS' + return "first run" + } + + triggers { + cron('H 0 * * *') + } + + stage('checkout public repo') { + cleanWs() + checkout scm + } + + ansiColor('xterm') { + stage('deploy'){ + values = [:] + currentWs = sh(returnStdout: true, script: 'pwd').trim() + values.put('currentWs', currentWs) + ansiblePlaybook = "${currentWs}/ansible/es.yml" + ansibleExtraArgs = "--tags \"log_es_restore\" --extra-vars \"snapshot_number=${snapshot_number}\" -v --vault-password-file /run/secrets/vault-pass" + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + println values +// ansible_playbook_run(values) + } + } + } + catch (err) { + throw err + } +} From c59545b6bddb9ac69741695af5d4fe4b63caba3b Mon Sep 17 00:00:00 2001 From: "kaliraja.ramasamy" Date: Mon, 28 Jan 2019 15:35:21 +0530 Subject: [PATCH 0753/1345] Issue #0000 fix: DO-350 added the cassandra-backup jenkinsfile --- pipelines/cassandra-backup/Jenkinsfile | 58 ++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 pipelines/cassandra-backup/Jenkinsfile diff --git a/pipelines/cassandra-backup/Jenkinsfile b/pipelines/cassandra-backup/Jenkinsfile new file mode 100644 index 0000000000..00c7b398f2 --- /dev/null +++ b/pipelines/cassandra-backup/Jenkinsfile @@ -0,0 +1,58 @@ +@Library('deploy-conf') _ +node() { + try { + String ANSI_GREEN = "\u001B[32m" + String ANSI_NORMAL = "\u001B[0m" + String ANSI_BOLD = "\u001B[1m" + String ANSI_RED = "\u001B[31m" + String ANSI_YELLOW = "\u001B[33m" + + if (params.size() == 0){ + envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() + properties([[$class: 'RebuildSettings', autoRebuild: false, rebuildDisabled: false], parameters([ + choice(choices: ['GitHub', 'Local'], description: 'Choose the ansible inventory source', name: 'inventory_source'), + string(defaultValue: "${WORKSPACE}/private/ansible/inventories/${envDir}", description: 'Please sepecify the full path to the inventory directory. The default value is $WORKSPACE/private/ansible/env. Here env is the previous directory of the job.', name: 'inventory_path', trim: false)])]) + ansiColor('xterm') { + println (ANSI_BOLD + ANSI_GREEN + '''\ + First run of the job. Parameters created. Stopping the current build. + Please trigger new build and provide parameters if required. + '''.stripIndent().replace("\n"," ") + ANSI_NORMAL) + } + currentBuild.result = 'SUCCESS' + return "first run" + } + + triggers { + cron('H 0 * * *') + } + + stage('checkout public repo') { + cleanWs() + checkout scm + } + + ansiColor('xterm') { + stage('deploy'){ + values = [:] + currentWs = sh(returnStdout: true, script: 'pwd').trim() + values.put('currentWs', currentWs) + ansiblePlaybook = "${currentWs}/ansible/cassandra-backup.yml" + ansibleExtraArgs = "--vault-password-file /run/secrets/vault-pass" + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + println values +// ansible_playbook_run(values) + } + } + + post { + failure { + slackSend channel: '#devops-team', color: 'danger', message: "Build Failed - ${env.JOB_NAME} ${env.BUILD_NUMBER} (<${env.BUILD_URL}|Open>)" + } + } + } + catch (err) { + throw err + } +} + From c0c671302fc549a64acb5011a5d7f474d4359d0f Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Mon, 28 Jan 2019 16:12:26 +0530 Subject: [PATCH 0754/1345] Create Jenkinsfile --- pipelines/keycloak-provison/Jenkinsfile | 57 +++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 pipelines/keycloak-provison/Jenkinsfile diff --git a/pipelines/keycloak-provison/Jenkinsfile b/pipelines/keycloak-provison/Jenkinsfile new file mode 100644 index 0000000000..35603798dd --- /dev/null +++ b/pipelines/keycloak-provison/Jenkinsfile @@ -0,0 +1,57 @@ +@Library('deploy-conf') _ +node() { + try { + String ANSI_GREEN = "\u001B[32m" + String ANSI_NORMAL = "\u001B[0m" + String ANSI_BOLD = "\u001B[1m" + String ANSI_RED = "\u001B[31m" + String ANSI_YELLOW = "\u001B[33m" + + if (params.size() == 0){ + envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() + properties([[$class: 'RebuildSettings', autoRebuild: false, rebuildDisabled: false], parameters([ + choice(choices: ['GitHub', 'Local'], description: 'Choose the ansible inventory source', name: 'inventory_source'), + string(defaultValue: "${WORKSPACE}/private/ansible/inventories/${envDir}", description: 'Please sepecify the full path to the inventory directory. The default value is $WORKSPACE/private/ansible/env. Here env is the previous directory of the job.', name: 'inventory_path', trim: false)])]) + ansiColor('xterm') { + println (ANSI_BOLD + ANSI_GREEN + '''\ + First run of the job. Parameters created. Stopping the current build. + Please trigger new build and provide parameters if required. + '''.stripIndent().replace("\n"," ") + ANSI_NORMAL) + } + currentBuild.result = 'SUCCESS' + return "first run" + } + + triggers { + cron('H 0 * * *') + } + + stage('checkout public repo') { + cleanWs() + checkout scm + } + + ansiColor('xterm') { + stage('deploy'){ + values = [:] + currentWs = sh(returnStdout: true, script: 'pwd').trim() + values.put('currentWs', currentWs) + ansiblePlaybook = "${currentWs}/ansible/keycloak.yml" + ansibleExtraArgs = "--tags provision --vault-password-file /run/secrets/vault-pass" + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + println values +// ansible_playbook_run(values) + } + } + + post { + failure { + slackSend channel: '#devops-team', color: 'danger', message: "Build Failed - ${env.JOB_NAME} ${env.BUILD_NUMBER} (<${env.BUILD_URL}|Open>)" + } + } + } + catch (err) { + throw err + } +} From 0f43783072369bfe9d713e614b37843eb4cb4107 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Mon, 28 Jan 2019 16:30:09 +0530 Subject: [PATCH 0755/1345] Create Jenkinsfile --- images/proxy/Jenkinsfile | 61 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 images/proxy/Jenkinsfile diff --git a/images/proxy/Jenkinsfile b/images/proxy/Jenkinsfile new file mode 100644 index 0000000000..4eafe32310 --- /dev/null +++ b/images/proxy/Jenkinsfile @@ -0,0 +1,61 @@ +node('build-slave') { + try { + String ANSI_GREEN = "\u001B[32m" + String ANSI_NORMAL = "\u001B[0m" + String ANSI_BOLD = "\u001B[1m" + String ANSI_RED = "\u001B[31m" + String ANSI_YELLOW = "\u001B[33m" + + if (params.size() == 0){ + properties([[$class: 'RebuildSettings', autoRebuild: false, rebuildDisabled: false], parameters([string(defaultValue: '', description: 'If you want to build from a tag, specify the tag name. If this parameter is blank, latest commit hash will be used to build', name: 'tag', trim: false)])]) + + ansiColor('xterm') { + println (ANSI_BOLD + ANSI_GREEN + '''\ + First run of the job. Parameters created. Stopping the current build. + Please trigger new build and provide parameters if required. + '''.stripIndent().replace("\n"," ") + ANSI_NORMAL) + } + return + } + + ansiColor('xterm') { + stage('Checkout') { + if (!env.hub_org) { + println(ANSI_BOLD + ANSI_RED + "Uh Oh! Please set a Jenkins environment variable named hub_org with value as registery/sunbidrded" + ANSI_NORMAL) + error 'Please resolve the errors and rerun..' + } else + println(ANSI_BOLD + ANSI_GREEN + "Found environment variable named hub_org with value as: " + hub_org + ANSI_NORMAL) + } + cleanWs() + if (params.tag == "") { + checkout scm + commit_hash = sh(script: 'git rev-parse --short HEAD', returnStdout: true).trim() + branch_name = sh(script: 'git name-rev --name-only HEAD | rev | cut -d "/" -f1| rev', returnStdout: true).trim() + build_tag = branch_name + "_" + commit_hash + println(ANSI_BOLD + ANSI_YELLOW + "Tag not specified, using the latest commit hash: " + commit_hash + ANSI_NORMAL) + } else { + def scmVars = checkout scm + checkout scm: [$class: 'GitSCM', branches: [[name: "refs/tags/$params.tag"]], userRemoteConfigs: [[url: scmVars.GIT_URL]]] + build_tag = params.tag + println(ANSI_BOLD + ANSI_YELLOW + "Tag specified, building from tag: " + params.tag + ANSI_NORMAL) + } + echo "build_tag: " + build_tag + + stage('Build') { + env.NODE_ENV = "build" + print "Environment will be : ${env.NODE_ENV}" + sh("./images/proxy/build.sh ${build_tag} ${env.NODE_NAME} ${hub_org}") + } + stage('ArchiveArtifacts') { + archiveArtifacts "metadata.json" + currentBuild.description = "${build_tag}" + } + } + + } + catch (err) { + currentBuild.result = "FAILURE" + throw err + } + +} From b5bf259315fbbb87ab0c52c60dfb71c6292dfd07 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Mon, 28 Jan 2019 16:31:34 +0530 Subject: [PATCH 0756/1345] Update build.sh --- images/proxy/build.sh | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/images/proxy/build.sh b/images/proxy/build.sh index a5529a4b50..509b3cf95f 100755 --- a/images/proxy/build.sh +++ b/images/proxy/build.sh @@ -1,13 +1,10 @@ #!/bin/sh # Build script # set -o errexit -e () { - echo $( echo ${1} | jq ".${2}" | sed 's/\"//g') -} -m=$(./images/proxy/metadata.sh) +build_tag=$1 +name=proxy +node=$2 +org=$3 -org=$(e "${m}" "org") -name=$(e "${m}" "name") -version=$(e "${m}" "version") - -docker build -f ./images/proxy/Dockerfile -t ${org}/${name}:${version}-bronze . +docker build -f ./images/proxy/Dockerfile -t ${org}/${name}:${build_tag} . +echo {\"image_name\" : \"${name}\", \"image_tag\" : \"${build_tag}\", \"node_name\" : \"$node\"} > metadata.json From 2d617e8ad72545d8cad662ed68f128d2d55e0326 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Mon, 28 Jan 2019 16:47:07 +0530 Subject: [PATCH 0757/1345] Create Jenkinsfile --- pipelines/deploy/proxy/Jenkinsfile | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 pipelines/deploy/proxy/Jenkinsfile diff --git a/pipelines/deploy/proxy/Jenkinsfile b/pipelines/deploy/proxy/Jenkinsfile new file mode 100644 index 0000000000..ee2e7c3d92 --- /dev/null +++ b/pipelines/deploy/proxy/Jenkinsfile @@ -0,0 +1,30 @@ +@Library('deploy-conf') _ +node() { + try { + stage('checkout public repo') { + cleanWs() + checkout scm + } + + stage('define params') { + def values = docker_params() + if(values == "first run"){ + currentBuild.result = 'SUCCESS' + return + } + currentWs = sh(returnStdout: true, script: 'pwd').trim() + ansiblePlaybook = "$currentWs/ansible/deploy.yml" + ansibleExtraArgs = "--tags \"stack-proxy\" --extra-vars \"hub_org=$hub_org image_name=$values.image_name image_tag=$values.image_tag\" --vault-password-file /home/ops/vault" + values.put('currentWs', currentWs) + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + ansible_playbook_run(values) + archiveArtifacts 'metadata.json' + currentBuild.description = "${values.image_tag}" + } + } + catch (err) { + currentBuild.result = "FAILURE" + throw err + } +} From f110cd6e414b99f03c4f06bb3e4e7d3f5440d9e7 Mon Sep 17 00:00:00 2001 From: "kaliraja.ramasamy" Date: Mon, 28 Jan 2019 17:25:44 +0530 Subject: [PATCH 0758/1345] Issue #0000 fix: DO-350 added the cassandra jenkinsfile --- pipelines/cassandra/Jenkinsfile | 47 +++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 pipelines/cassandra/Jenkinsfile diff --git a/pipelines/cassandra/Jenkinsfile b/pipelines/cassandra/Jenkinsfile new file mode 100644 index 0000000000..fca929c041 --- /dev/null +++ b/pipelines/cassandra/Jenkinsfile @@ -0,0 +1,47 @@ +@Library('deploy-conf') _ +node() { + try { + String ANSI_GREEN = "\u001B[32m" + String ANSI_NORMAL = "\u001B[0m" + String ANSI_BOLD = "\u001B[1m" + String ANSI_RED = "\u001B[31m" + String ANSI_YELLOW = "\u001B[33m" + + if (params.size() == 0){ + envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() + properties([[$class: 'RebuildSettings', autoRebuild: false, rebuildDisabled: false], parameters([ + choice(choices: ['GitHub', 'Local'], description: 'Choose the ansible inventory source', name: 'inventory_source'), + string(defaultValue: "${WORKSPACE}/private/ansible/inventories/${envDir}", description: 'Please sepecify the full path to the inventory directory. The default value is $WORKSPACE/private/ansible/env. Here env is the previous directory of the job.', name: 'inventory_path', trim: false)])]) + ansiColor('xterm') { + println (ANSI_BOLD + ANSI_GREEN + '''\ + First run of the job. Parameters created. Stopping the current build. + Please trigger new build and provide parameters if required. + '''.stripIndent().replace("\n"," ") + ANSI_NORMAL) + } + currentBuild.result = 'SUCCESS' + return "first run" + } + + stage('checkout public repo') { + cleanWs() + checkout scm + } + + ansiColor('xterm') { + stage('deploy'){ + values = [:] + currentWs = sh(returnStdout: true, script: 'pwd').trim() + values.put('currentWs', currentWs) + ansiblePlaybook = "${currentWs}/ansible/provision.yml" + ansibleExtraArgs = "--tags cassandra --vault-password-file /run/secrets/vault-pass -v" + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + println values +// ansible_playbook_run(values) + } + } + } + catch (err) { + throw err + } +} From fd11d7429941ad34d189b14e46a857d3966610a8 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Mon, 28 Jan 2019 17:27:30 +0530 Subject: [PATCH 0759/1345] Create Jenkinsfile --- pipelines/registry-provision/Jenkinsfile | 59 ++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 pipelines/registry-provision/Jenkinsfile diff --git a/pipelines/registry-provision/Jenkinsfile b/pipelines/registry-provision/Jenkinsfile new file mode 100644 index 0000000000..b2f34d9c55 --- /dev/null +++ b/pipelines/registry-provision/Jenkinsfile @@ -0,0 +1,59 @@ +@Library('deploy-conf') _ +node() { + try { + String ANSI_GREEN = "\u001B[32m" + String ANSI_NORMAL = "\u001B[0m" + String ANSI_BOLD = "\u001B[1m" + String ANSI_RED = "\u001B[31m" + String ANSI_YELLOW = "\u001B[33m" + + if (params.size() == 0){ + envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() + properties([[$class: 'RebuildSettings', autoRebuild: false, rebuildDisabled: false], parameters([ + choice(choices: ['GitHub', 'Local'], description: 'Choose the ansible inventory source', name: 'inventory_source'), + string(defaultValue: "${WORKSPACE}/private/ansible/inventories/${envDir}", description: 'Please sepecify the full path to the inventory directory. The default value is $WORKSPACE/private/ansible/env. Here env is the previous directory of the job.', name: 'inventory_path', trim: false)])]) + ansiColor('xterm') { + println (ANSI_BOLD + ANSI_GREEN + '''\ + First run of the job. Parameters created. Stopping the current build. + Please trigger new build and provide parameters if required. + '''.stripIndent().replace("\n"," ") + ANSI_NORMAL) + } + currentBuild.result = 'SUCCESS' + return "first run" + } + + stage('checkout public repo') { + cleanWs() + checkout scm + sh """ + rm -rf opensaber + git clone https://github.com/project-sunbird/open-saber.git opensaber + cd opensaber + ./configure-dependencies.sh + cd java + mvn clean install + cd registry + mvn clean install + cp target/registry.jar ${WORKSPACE}/ansible + cd ${WORKSPACE} + """ + } + + ansiColor('xterm') { + stage('deploy'){ + values = [:] + currentWs = sh(returnStdout: true, script: 'pwd').trim() + values.put('currentWs', currentWs) + ansiblePlaybook = "${currentWs}/ansible/registry.yml" + ansibleExtraArgs = "--vault-password-file /home/ops/vault" + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + println values +// ansible_playbook_run(values) + } + } + } + catch (err) { + throw err + } +} From 798bbc9e217bde2d31f09e8e8bb1a9285fa0508e Mon Sep 17 00:00:00 2001 From: "kaliraja.ramasamy" Date: Mon, 28 Jan 2019 17:49:28 +0530 Subject: [PATCH 0760/1345] Issue #0000 fix: DO-350 added the provision-kafka jenkinsfile --- pipelines/provision-kafka/Jenkinsfile | 47 +++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 pipelines/provision-kafka/Jenkinsfile diff --git a/pipelines/provision-kafka/Jenkinsfile b/pipelines/provision-kafka/Jenkinsfile new file mode 100644 index 0000000000..358227a090 --- /dev/null +++ b/pipelines/provision-kafka/Jenkinsfile @@ -0,0 +1,47 @@ +@Library('deploy-conf') _ +node() { + try { + String ANSI_GREEN = "\u001B[32m" + String ANSI_NORMAL = "\u001B[0m" + String ANSI_BOLD = "\u001B[1m" + String ANSI_RED = "\u001B[31m" + String ANSI_YELLOW = "\u001B[33m" + + if (params.size() == 0){ + envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() + properties([[$class: 'RebuildSettings', autoRebuild: false, rebuildDisabled: false], parameters([ + choice(choices: ['GitHub', 'Local'], description: 'Choose the ansible inventory source', name: 'inventory_source'), + string(defaultValue: "${WORKSPACE}/private/ansible/inventories/${envDir}", description: 'Please sepecify the full path to the inventory directory. The default value is $WORKSPACE/private/ansible/env. Here env is the previous directory of the job.', name: 'inventory_path', trim: false)])]) + ansiColor('xterm') { + println (ANSI_BOLD + ANSI_GREEN + '''\ + First run of the job. Parameters created. Stopping the current build. + Please trigger new build and provide parameters if required. + '''.stripIndent().replace("\n"," ") + ANSI_NORMAL) + } + currentBuild.result = 'SUCCESS' + return "first run" + } + + stage('checkout public repo') { + cleanWs() + checkout scm + } + + ansiColor('xterm') { + stage('deploy'){ + values = [:] + currentWs = sh(returnStdout: true, script: 'pwd').trim() + values.put('currentWs', currentWs) + ansiblePlaybook = "${currentWs}/ansible/provision-kafka.yml" + ansibleExtraArgs = "--vault-password-file /run/secrets/vault-pass -v" + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + println values +// ansible_playbook_run(values) + } + } + } + catch (err) { + throw err + } +} From 5c1d6b46165433ba02342e46cc109b02485650b3 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Mon, 28 Jan 2019 18:00:07 +0530 Subject: [PATCH 0761/1345] Create Jenkinsfile --- pipelines/push-artifacts/Jenkinsfile | 40 ++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 pipelines/push-artifacts/Jenkinsfile diff --git a/pipelines/push-artifacts/Jenkinsfile b/pipelines/push-artifacts/Jenkinsfile new file mode 100644 index 0000000000..210f935b26 --- /dev/null +++ b/pipelines/push-artifacts/Jenkinsfile @@ -0,0 +1,40 @@ +@Library('deploy-conf') _ +node() { + try { + stage('checkout public repo') { + cleanWs() + checkout scm + } + stage('define params') { + def values = lp_dp_params() + if(values == "first run"){ + // Override default parameters + envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() + properties([[$class: 'RebuildSettings', autoRebuild: false, rebuildDisabled: false], parameters([ + string(defaultValue: '', description: 'Please specify the absolute path to the job from which the metadata.json will be copied.', name: 'copy_metadata_from', trim: false), + string(defaultValue: 'lastSuccessfulBuild', description: 'Specify the build number to copy the artifact from. Default is last successful build of the job', name: 'build_number', trim: false), + choice(choices: ['GitHub', 'Local'], description: 'Choose the ansible inventory source', name: 'inventory_source'), + string(defaultValue: "$WORKSPACE/private/ansible/inventories/$envDir", description: 'Please sepecify the full path to the inventory directory. The default value is $WORKSPACE/private/ansible/env. Here env is the previous directory of the job.', name: 'inventory_path', trim: false)])]) + currentBuild.result = 'SUCCESS' + return + } + artifact_version = sh(returnStdout: true, script: 'jq -r .artifact_version metadata.json').trim() + values.put('artifact_version', artifact_version) + currentWs = sh(returnStdout: true, script: 'pwd').trim() + artifact = values.artifact_name + ":" + values.artifact_version + ansiblePlaybook = "${currentWs}/devops/artifacts-upload.yml" + ansibleExtraArgs = "--extra-vars \"artifact=${artifact} artifact_path=${currentWs}/${artifact}\" --vault-password-file /home/ops/vault" + values.put('currentWs', currentWs) + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + ansible_playbook_run(values) + archiveArtifacts artifacts: "${artifact}", fingerprint: true, onlyIfSuccessful: true + archiveArtifacts artifacts: 'metadata.json', onlyIfSuccessful: true + currentBuild.description = "${artifact_version}" + } + } + catch (err) { + currentBuild.result = "FAILURE" + throw err + } +} From 79ec7393d46b1451d1fb5e233707f1032ee018e7 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Mon, 28 Jan 2019 18:01:51 +0530 Subject: [PATCH 0762/1345] Update artifacts-upload.yml From a40a68050f183000288bfcb91385e7885ae7ae6b Mon Sep 17 00:00:00 2001 From: "kaliraja.ramasamy" Date: Mon, 28 Jan 2019 18:01:54 +0530 Subject: [PATCH 0763/1345] Issue #0000 fix: DO-350 added the telemetry-logstash-datapipeline jenkinsfile --- .../Jenkinsfile | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 pipelines/telemetry-logstash-datapipeline/Jenkinsfile diff --git a/pipelines/telemetry-logstash-datapipeline/Jenkinsfile b/pipelines/telemetry-logstash-datapipeline/Jenkinsfile new file mode 100644 index 0000000000..6d047e503d --- /dev/null +++ b/pipelines/telemetry-logstash-datapipeline/Jenkinsfile @@ -0,0 +1,47 @@ +@Library('deploy-conf') _ +node() { + try { + String ANSI_GREEN = "\u001B[32m" + String ANSI_NORMAL = "\u001B[0m" + String ANSI_BOLD = "\u001B[1m" + String ANSI_RED = "\u001B[31m" + String ANSI_YELLOW = "\u001B[33m" + + if (params.size() == 0){ + envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() + properties([[$class: 'RebuildSettings', autoRebuild: false, rebuildDisabled: false], parameters([ + choice(choices: ['GitHub', 'Local'], description: 'Choose the ansible inventory source', name: 'inventory_source'), + string(defaultValue: "${WORKSPACE}/private/ansible/inventories/${envDir}", description: 'Please sepecify the full path to the inventory directory. The default value is $WORKSPACE/private/ansible/env. Here env is the previous directory of the job.', name: 'inventory_path', trim: false)])]) + ansiColor('xterm') { + println (ANSI_BOLD + ANSI_GREEN + '''\ + First run of the job. Parameters created. Stopping the current build. + Please trigger new build and provide parameters if required. + '''.stripIndent().replace("\n"," ") + ANSI_NORMAL) + } + currentBuild.result = 'SUCCESS' + return "first run" + } + + stage('checkout public repo') { + cleanWs() + checkout scm + } + + ansiColor('xterm') { + stage('deploy'){ + values = [:] + currentWs = sh(returnStdout: true, script: 'pwd').trim() + values.put('currentWs', currentWs) + ansiblePlaybook = "${currentWs}/ansible/deploy.yml" + ansibleExtraArgs = "--tags \"stack-sunbird\" --extra-vars \"service_name=telemetry-service deploy_telemetry_logstash_datapipeline=True\" --vault-password-file /run/secrets/vault-pass -v" + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + println values +// ansible_playbook_run(values) + } + } + } + catch (err) { + throw err + } +} From afe2703a4d9895df7f6b10c246c6a94b5846dd1f Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Mon, 28 Jan 2019 18:02:24 +0530 Subject: [PATCH 0764/1345] Update artifacts-download.yml From 56cf2b46965f8d8672788f53d408975c5e804080 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Mon, 28 Jan 2019 18:02:46 +0530 Subject: [PATCH 0765/1345] Update artifacts-upload.yml From d32a2b9a8e2872daadc3217965705be38dec0ba8 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Mon, 28 Jan 2019 18:03:44 +0530 Subject: [PATCH 0766/1345] Update main.yml From 2e10983bfe678ca63e92253ad79aa2166c2cd75a Mon Sep 17 00:00:00 2001 From: "kaliraja.ramasamy" Date: Mon, 28 Jan 2019 18:03:52 +0530 Subject: [PATCH 0767/1345] Issue #0000 fix: DO-350 added the telemetry-logstash-datapipeline jenkinsfile --- .../Jenkinsfile | 47 ------------------- 1 file changed, 47 deletions(-) delete mode 100644 pipelines/telemetry-logstash-datapipeline/Jenkinsfile diff --git a/pipelines/telemetry-logstash-datapipeline/Jenkinsfile b/pipelines/telemetry-logstash-datapipeline/Jenkinsfile deleted file mode 100644 index 6d047e503d..0000000000 --- a/pipelines/telemetry-logstash-datapipeline/Jenkinsfile +++ /dev/null @@ -1,47 +0,0 @@ -@Library('deploy-conf') _ -node() { - try { - String ANSI_GREEN = "\u001B[32m" - String ANSI_NORMAL = "\u001B[0m" - String ANSI_BOLD = "\u001B[1m" - String ANSI_RED = "\u001B[31m" - String ANSI_YELLOW = "\u001B[33m" - - if (params.size() == 0){ - envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() - properties([[$class: 'RebuildSettings', autoRebuild: false, rebuildDisabled: false], parameters([ - choice(choices: ['GitHub', 'Local'], description: 'Choose the ansible inventory source', name: 'inventory_source'), - string(defaultValue: "${WORKSPACE}/private/ansible/inventories/${envDir}", description: 'Please sepecify the full path to the inventory directory. The default value is $WORKSPACE/private/ansible/env. Here env is the previous directory of the job.', name: 'inventory_path', trim: false)])]) - ansiColor('xterm') { - println (ANSI_BOLD + ANSI_GREEN + '''\ - First run of the job. Parameters created. Stopping the current build. - Please trigger new build and provide parameters if required. - '''.stripIndent().replace("\n"," ") + ANSI_NORMAL) - } - currentBuild.result = 'SUCCESS' - return "first run" - } - - stage('checkout public repo') { - cleanWs() - checkout scm - } - - ansiColor('xterm') { - stage('deploy'){ - values = [:] - currentWs = sh(returnStdout: true, script: 'pwd').trim() - values.put('currentWs', currentWs) - ansiblePlaybook = "${currentWs}/ansible/deploy.yml" - ansibleExtraArgs = "--tags \"stack-sunbird\" --extra-vars \"service_name=telemetry-service deploy_telemetry_logstash_datapipeline=True\" --vault-password-file /run/secrets/vault-pass -v" - values.put('ansiblePlaybook', ansiblePlaybook) - values.put('ansibleExtraArgs', ansibleExtraArgs) - println values -// ansible_playbook_run(values) - } - } - } - catch (err) { - throw err - } -} From 95b9ec7c65e80b1d29da843a3d65dbde83cbdda8 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Mon, 28 Jan 2019 18:05:13 +0530 Subject: [PATCH 0768/1345] Update main.yml From 014bbe06c89c4e7ddea58cd115ee37a61f11a928 Mon Sep 17 00:00:00 2001 From: "kaliraja.ramasamy" Date: Mon, 28 Jan 2019 18:05:33 +0530 Subject: [PATCH 0769/1345] Issue #0000 fix: DO-350 added the telemetry-logstash-datapipeline jenkinsfile --- pipelines/Jenkinsfile | 47 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 pipelines/Jenkinsfile diff --git a/pipelines/Jenkinsfile b/pipelines/Jenkinsfile new file mode 100644 index 0000000000..6d047e503d --- /dev/null +++ b/pipelines/Jenkinsfile @@ -0,0 +1,47 @@ +@Library('deploy-conf') _ +node() { + try { + String ANSI_GREEN = "\u001B[32m" + String ANSI_NORMAL = "\u001B[0m" + String ANSI_BOLD = "\u001B[1m" + String ANSI_RED = "\u001B[31m" + String ANSI_YELLOW = "\u001B[33m" + + if (params.size() == 0){ + envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() + properties([[$class: 'RebuildSettings', autoRebuild: false, rebuildDisabled: false], parameters([ + choice(choices: ['GitHub', 'Local'], description: 'Choose the ansible inventory source', name: 'inventory_source'), + string(defaultValue: "${WORKSPACE}/private/ansible/inventories/${envDir}", description: 'Please sepecify the full path to the inventory directory. The default value is $WORKSPACE/private/ansible/env. Here env is the previous directory of the job.', name: 'inventory_path', trim: false)])]) + ansiColor('xterm') { + println (ANSI_BOLD + ANSI_GREEN + '''\ + First run of the job. Parameters created. Stopping the current build. + Please trigger new build and provide parameters if required. + '''.stripIndent().replace("\n"," ") + ANSI_NORMAL) + } + currentBuild.result = 'SUCCESS' + return "first run" + } + + stage('checkout public repo') { + cleanWs() + checkout scm + } + + ansiColor('xterm') { + stage('deploy'){ + values = [:] + currentWs = sh(returnStdout: true, script: 'pwd').trim() + values.put('currentWs', currentWs) + ansiblePlaybook = "${currentWs}/ansible/deploy.yml" + ansibleExtraArgs = "--tags \"stack-sunbird\" --extra-vars \"service_name=telemetry-service deploy_telemetry_logstash_datapipeline=True\" --vault-password-file /run/secrets/vault-pass -v" + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + println values +// ansible_playbook_run(values) + } + } + } + catch (err) { + throw err + } +} From 8df0b55cb42f5f2009e1de20b1fb5ddabd7da3db Mon Sep 17 00:00:00 2001 From: "kaliraja.ramasamy" Date: Mon, 28 Jan 2019 18:07:33 +0530 Subject: [PATCH 0770/1345] Issue #0000 fix: DO-350 added the telemetry-logstash-datapipeline jenkinsfile --- .../Jenkinsfile | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 pipelines/telemetry-logstash-datapipeline/Jenkinsfile diff --git a/pipelines/telemetry-logstash-datapipeline/Jenkinsfile b/pipelines/telemetry-logstash-datapipeline/Jenkinsfile new file mode 100644 index 0000000000..6d047e503d --- /dev/null +++ b/pipelines/telemetry-logstash-datapipeline/Jenkinsfile @@ -0,0 +1,47 @@ +@Library('deploy-conf') _ +node() { + try { + String ANSI_GREEN = "\u001B[32m" + String ANSI_NORMAL = "\u001B[0m" + String ANSI_BOLD = "\u001B[1m" + String ANSI_RED = "\u001B[31m" + String ANSI_YELLOW = "\u001B[33m" + + if (params.size() == 0){ + envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() + properties([[$class: 'RebuildSettings', autoRebuild: false, rebuildDisabled: false], parameters([ + choice(choices: ['GitHub', 'Local'], description: 'Choose the ansible inventory source', name: 'inventory_source'), + string(defaultValue: "${WORKSPACE}/private/ansible/inventories/${envDir}", description: 'Please sepecify the full path to the inventory directory. The default value is $WORKSPACE/private/ansible/env. Here env is the previous directory of the job.', name: 'inventory_path', trim: false)])]) + ansiColor('xterm') { + println (ANSI_BOLD + ANSI_GREEN + '''\ + First run of the job. Parameters created. Stopping the current build. + Please trigger new build and provide parameters if required. + '''.stripIndent().replace("\n"," ") + ANSI_NORMAL) + } + currentBuild.result = 'SUCCESS' + return "first run" + } + + stage('checkout public repo') { + cleanWs() + checkout scm + } + + ansiColor('xterm') { + stage('deploy'){ + values = [:] + currentWs = sh(returnStdout: true, script: 'pwd').trim() + values.put('currentWs', currentWs) + ansiblePlaybook = "${currentWs}/ansible/deploy.yml" + ansibleExtraArgs = "--tags \"stack-sunbird\" --extra-vars \"service_name=telemetry-service deploy_telemetry_logstash_datapipeline=True\" --vault-password-file /run/secrets/vault-pass -v" + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + println values +// ansible_playbook_run(values) + } + } + } + catch (err) { + throw err + } +} From d79153216b882ed862a73fd9398926572dc2271c Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Mon, 28 Jan 2019 18:09:13 +0530 Subject: [PATCH 0771/1345] Update Jenkinsfile --- pipelines/push-artifacts/Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pipelines/push-artifacts/Jenkinsfile b/pipelines/push-artifacts/Jenkinsfile index 210f935b26..6bd9591961 100644 --- a/pipelines/push-artifacts/Jenkinsfile +++ b/pipelines/push-artifacts/Jenkinsfile @@ -22,7 +22,7 @@ node() { values.put('artifact_version', artifact_version) currentWs = sh(returnStdout: true, script: 'pwd').trim() artifact = values.artifact_name + ":" + values.artifact_version - ansiblePlaybook = "${currentWs}/devops/artifacts-upload.yml" + ansiblePlaybook = "${currentWs}/ansible/artifacts-upload.yml" ansibleExtraArgs = "--extra-vars \"artifact=${artifact} artifact_path=${currentWs}/${artifact}\" --vault-password-file /home/ops/vault" values.put('currentWs', currentWs) values.put('ansiblePlaybook', ansiblePlaybook) From 470e97c33be027498f73638aa0bea9aa83bad608 Mon Sep 17 00:00:00 2001 From: "kaliraja.ramasamy" Date: Mon, 28 Jan 2019 18:14:20 +0530 Subject: [PATCH 0772/1345] Issue #0000 fix: DO-350 added the telemetry-logstash jenkinsfile --- .../telemetry-logstash/Jenkinsfile | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 pipelines/telemetry-logstash-datapipeline/telemetry-logstash/Jenkinsfile diff --git a/pipelines/telemetry-logstash-datapipeline/telemetry-logstash/Jenkinsfile b/pipelines/telemetry-logstash-datapipeline/telemetry-logstash/Jenkinsfile new file mode 100644 index 0000000000..14b90f5dc3 --- /dev/null +++ b/pipelines/telemetry-logstash-datapipeline/telemetry-logstash/Jenkinsfile @@ -0,0 +1,47 @@ +@Library('deploy-conf') _ +node() { + try { + String ANSI_GREEN = "\u001B[32m" + String ANSI_NORMAL = "\u001B[0m" + String ANSI_BOLD = "\u001B[1m" + String ANSI_RED = "\u001B[31m" + String ANSI_YELLOW = "\u001B[33m" + + if (params.size() == 0){ + envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() + properties([[$class: 'RebuildSettings', autoRebuild: false, rebuildDisabled: false], parameters([ + choice(choices: ['GitHub', 'Local'], description: 'Choose the ansible inventory source', name: 'inventory_source'), + string(defaultValue: "${WORKSPACE}/private/ansible/inventories/${envDir}", description: 'Please sepecify the full path to the inventory directory. The default value is $WORKSPACE/private/ansible/env. Here env is the previous directory of the job.', name: 'inventory_path', trim: false)])]) + ansiColor('xterm') { + println (ANSI_BOLD + ANSI_GREEN + '''\ + First run of the job. Parameters created. Stopping the current build. + Please trigger new build and provide parameters if required. + '''.stripIndent().replace("\n"," ") + ANSI_NORMAL) + } + currentBuild.result = 'SUCCESS' + return "first run" + } + + stage('checkout public repo') { + cleanWs() + checkout scm + } + + ansiColor('xterm') { + stage('deploy'){ + values = [:] + currentWs = sh(returnStdout: true, script: 'pwd').trim() + values.put('currentWs', currentWs) + ansiblePlaybook = "${currentWs}/ansible/deploy.yml" + ansibleExtraArgs = "--tags \"stack-sunbird\" --extra-vars \"service_name=telemetry-service deploy_telemetry_logstash=True\" --vault-password-file /run/secrets/vault-pass -v" + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + println values +// ansible_playbook_run(values) + } + } + } + catch (err) { + throw err + } +} From 2b18c3c0800ed29d59d818cfe59b69b4d0c82606 Mon Sep 17 00:00:00 2001 From: "kaliraja.ramasamy" Date: Mon, 28 Jan 2019 18:16:55 +0530 Subject: [PATCH 0773/1345] Issue #0000 fix: DO-350 added the telemetry-logstash jenkinsfile --- .../telemetry-logstash/Jenkinsfile | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename pipelines/{telemetry-logstash-datapipeline => }/telemetry-logstash/Jenkinsfile (100%) diff --git a/pipelines/telemetry-logstash-datapipeline/telemetry-logstash/Jenkinsfile b/pipelines/telemetry-logstash/Jenkinsfile similarity index 100% rename from pipelines/telemetry-logstash-datapipeline/telemetry-logstash/Jenkinsfile rename to pipelines/telemetry-logstash/Jenkinsfile From 7fe4de45c2d429bc3decb8fbd8f08d4b6d402fc8 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Mon, 28 Jan 2019 18:21:24 +0530 Subject: [PATCH 0774/1345] Create Jenkinsfile --- pipelines/deploy/cassandra-deploy/Jenkinsfile | 67 +++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 pipelines/deploy/cassandra-deploy/Jenkinsfile diff --git a/pipelines/deploy/cassandra-deploy/Jenkinsfile b/pipelines/deploy/cassandra-deploy/Jenkinsfile new file mode 100644 index 0000000000..2e245d3e1b --- /dev/null +++ b/pipelines/deploy/cassandra-deploy/Jenkinsfile @@ -0,0 +1,67 @@ +@Library('deploy-conf') _ +node() { + try { + String ANSI_GREEN = "\u001B[32m" + String ANSI_NORMAL = "\u001B[0m" + String ANSI_BOLD = "\u001B[1m" + String ANSI_RED = "\u001B[31m" + String ANSI_YELLOW = "\u001B[33m" + + stage('checkout public repo') { + cleanWs() + checkout scm + } + stage('define params') { + def values = lp_dp_params() + if(values == "first run"){ + currentBuild.result = 'SUCCESS' + return + } + ansiColor('xterm') { + stage('get artifact') { + currentWs = sh(returnStdout: true, script: 'pwd').trim() + artifact = values.artifact_name + ":" + values.artifact_version + values.put('currentWs', currentWs) + if (params.artifact_source == "Remote") { + println(ANSI_BOLD + ANSI_YELLOW + '''\ + Option chosen is Remote, ignoring any previously copied artifacts and new artifacts will be downloaded from remote source + '''.stripIndent().replace("\n", " ") + ANSI_NORMAL) + ansiblePlaybook = "${currentWs}/ansible/artifacts-download.yml" + ansibleExtraArgs = """\ + --extra-vars "artifact=${artifact} + artifact_path=${currentWs}/${artifact}" + --vault-password-file /home/ops/vault + """.stripIndent().replace("\n", " ") + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + ansible_playbook_run(values) + } + else{ + println(ANSI_BOLD + ANSI_YELLOW + '''\ + Option chosen is Local, using the artifacts copied + '''.stripIndent().replace("\n", " ") + ANSI_NORMAL) + } + } + stage('deploy artifact'){ + sh """ + unzip ${artifact} + """ + ansiblePlaybook = "${currentWs}/devops/cassandra-deploy.yml" + ansibleExtraArgs = "--vault-password-file /run/secrets/vault-pass" + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + println values +// ansible_playbook_run(values) + + archiveArtifacts artifacts: "${artifact}", fingerprint: true, onlyIfSuccessful: true + archiveArtifacts artifacts: 'metadata.json', onlyIfSuccessful: true + currentBuild.description = "${values.artifact_version}" + } + } + } + } + catch (err) { + currentBuild.result = "FAILURE" + throw err + } +} From dc9343e9b0b91ccf81c7b6a21d216a648269543b Mon Sep 17 00:00:00 2001 From: Manzarul Date: Mon, 28 Jan 2019 19:06:33 +0530 Subject: [PATCH 0775/1345] Issues #SB-00 feat: onboarding some private api for testing --- ansible/roles/kong-api/defaults/main.yml | 30 ++++++++++++++++++++---- 1 file changed, 26 insertions(+), 4 deletions(-) diff --git a/ansible/roles/kong-api/defaults/main.yml b/ansible/roles/kong-api/defaults/main.yml index 5db6890ef0..86e692c8b5 100644 --- a/ansible/roles/kong-api/defaults/main.yml +++ b/ansible/roles/kong-api/defaults/main.yml @@ -3665,9 +3665,9 @@ kong_apis: config.limit_by: credential - name: request-size-limiting config.allowed_payload_size: "{{ small_request_size_limit }}" - - name: "getUserByexternalId" - request_path: "{{ user_service_prefix }}/v1/mock/read" - upstream_url: "{{ learning_service_url }}/v1/user/mock/read" + - name: "updateUserPrivate" + request_path: "{{ user_service_prefix }}/private/v1/update" + upstream_url: "{{ learning_service_url }}/private/user/v1/update" strip_request_path: true plugins: - {name: 'jwt'} @@ -3675,4 +3675,26 @@ kong_apis: - "{{ statsd_pulgin }}" - {name: 'acl', config.whitelist: 'publicUser'} - {name: 'rate-limiting', config.policy: "local", config.hour: "{{ large_rate_limit_per_hour }}"} - - {name: 'request-size-limiting', config.allowed_payload_size: "{{ small_request_size_limit }}" } \ No newline at end of file + - {name: 'request-size-limiting', config.allowed_payload_size: "{{ small_request_size_limit }}" } + - name: "getUserByExternalId" + request_path: "{{ user_service_prefix }}/private/v1/read/" + upstream_url: "{{ learning_service_url }}/private/user/v1/read/" + strip_request_path: true + plugins: + - {name: 'jwt'} + - {name: 'cors'} + - "{{ statsd_pulgin }}" + - {name: 'acl', config.whitelist: 'publicUser'} + - {name: 'rate-limiting', config.policy: "local", config.hour: "{{ large_rate_limit_per_hour }}"} + - {name: 'request-size-limiting', config.allowed_payload_size: "{{ small_request_size_limit }}" } + - name: "assignprivateRole" + request_path: "{{ user_service_prefix }}/private/v1/assign/role" + upstream_url: "{{ learning_service_url }}/private/user/v1/assign/role" + strip_request_path: true + plugins: + - {name: 'jwt'} + - {name: 'cors'} + - "{{ statsd_pulgin }}" + - {name: 'acl', config.whitelist: 'publicUser'} + - {name: 'rate-limiting', config.policy: "local", config.hour: "{{ large_rate_limit_per_hour }}"} + - {name: 'request-size-limiting', config.allowed_payload_size: "{{ small_request_size_limit }}" } \ No newline at end of file From 3a97cf7f34f6483cac19d3a614c04d2aeee982c4 Mon Sep 17 00:00:00 2001 From: "kaliraja.ramasamy" Date: Tue, 29 Jan 2019 12:48:24 +0530 Subject: [PATCH 0776/1345] Issue #0000 fix: DO-350 added the telemetry-logstash jenkinsfile --- pipelines/provision-secor/Jenkinsfile | 47 +++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 pipelines/provision-secor/Jenkinsfile diff --git a/pipelines/provision-secor/Jenkinsfile b/pipelines/provision-secor/Jenkinsfile new file mode 100644 index 0000000000..d69e319bf5 --- /dev/null +++ b/pipelines/provision-secor/Jenkinsfile @@ -0,0 +1,47 @@ +@Library('deploy-conf') _ +node() { + try { + String ANSI_GREEN = "\u001B[32m" + String ANSI_NORMAL = "\u001B[0m" + String ANSI_BOLD = "\u001B[1m" + String ANSI_RED = "\u001B[31m" + String ANSI_YELLOW = "\u001B[33m" + + if (params.size() == 0){ + envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() + properties([[$class: 'RebuildSettings', autoRebuild: false, rebuildDisabled: false], parameters([ + choice(choices: ['GitHub', 'Local'], description: 'Choose the ansible inventory source', name: 'inventory_source'), + string(defaultValue: "${WORKSPACE}/private/ansible/inventories/${envDir}", description: 'Please sepecify the full path to the inventory directory. The default value is $WORKSPACE/private/ansible/env. Here env is the previous directory of the job.', name: 'inventory_path', trim: false)])]) + ansiColor('xterm') { + println (ANSI_BOLD + ANSI_GREEN + '''\ + First run of the job. Parameters created. Stopping the current build. + Please trigger new build and provide parameters if required. + '''.stripIndent().replace("\n"," ") + ANSI_NORMAL) + } + currentBuild.result = 'SUCCESS' + return "first run" + } + + stage('checkout public repo') { + cleanWs() + checkout scm + } + + ansiColor('xterm') { + stage('deploy'){ + values = [:] + currentWs = sh(returnStdout: true, script: 'pwd').trim() + values.put('currentWs', currentWs) + ansiblePlaybook = "${currentWs}/ansible/provision-secor.yml" + ansibleExtraArgs = "--vault-password-file /run/secrets/vault-pass" + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + println values +// ansible_playbook_run(values) + } + } + } + catch (err) { + throw err + } +} From e31df8a9700ae4802d619583d984ce5baa0b6b14 Mon Sep 17 00:00:00 2001 From: msknext Date: Tue, 29 Jan 2019 14:00:58 +0530 Subject: [PATCH 0777/1345] feat: DO-498 Restructure jenkinsfiles --- pipelines/adminutils/Jenkinsfile.sample | 27 ----------- pipelines/adminutils/deploy.sh | 28 ----------- pipelines/adminutils/installDeps.sh | 5 -- pipelines/adminutils/metadata.json | 6 --- pipelines/am-onboard-apis/Jenkinsfile.sample | 15 ------ .../am-onboard-consumers/Jenkinsfile.sample | 15 ------ .../Jenkinsfile.sample | 22 --------- pipelines/{ => deploy}/adminutils/Jenkinsfile | 0 .../{ => deploy}/am-onboard-apis/Jenkinsfile | 0 .../am-onboard-consumers/Jenkinsfile | 0 .../application-elasticsearch/Jenkinsfile | 0 pipelines/{ => deploy}/es-backup/Jenkinsfile | 0 pipelines/{ => deploy}/es-restore/Jenkinsfile | 0 .../registry-provision/Jenkinsfile | 0 .../Jenkinsfile | 0 .../telemetry-logstash/Jenkinsfile | 0 pipelines/dockerTag.sh | 23 --------- pipelines/es-backup/Jenkinsfile.sample | 20 -------- pipelines/es-backup/deploy.sh | 6 --- pipelines/es-backup/installDeps.sh | 5 -- pipelines/es-restore/Jenkinsfile.sample | 17 ------- pipelines/es-restore/deploy.sh | 6 --- pipelines/es-restore/installDeps.sh | 5 -- pipelines/proxy/Jenkinsfile.sample | 25 ---------- pipelines/proxy/deploy.sh | 23 --------- pipelines/proxy/metadata.json | 6 --- .../{ => push}/push-artifacts/Jenkinsfile | 0 .../push => push/push-docker}/Jenkinsfile | 0 .../Jenkinsfile | 47 ------------------- 29 files changed, 301 deletions(-) delete mode 100644 pipelines/adminutils/Jenkinsfile.sample delete mode 100755 pipelines/adminutils/deploy.sh delete mode 100755 pipelines/adminutils/installDeps.sh delete mode 100644 pipelines/adminutils/metadata.json delete mode 100644 pipelines/am-onboard-apis/Jenkinsfile.sample delete mode 100644 pipelines/am-onboard-consumers/Jenkinsfile.sample delete mode 100644 pipelines/application-elasticsearch/Jenkinsfile.sample rename pipelines/{ => deploy}/adminutils/Jenkinsfile (100%) rename pipelines/{ => deploy}/am-onboard-apis/Jenkinsfile (100%) rename pipelines/{ => deploy}/am-onboard-consumers/Jenkinsfile (100%) rename pipelines/{ => deploy}/application-elasticsearch/Jenkinsfile (100%) rename pipelines/{ => deploy}/es-backup/Jenkinsfile (100%) rename pipelines/{ => deploy}/es-restore/Jenkinsfile (100%) rename pipelines/{ => deploy}/registry-provision/Jenkinsfile (100%) rename pipelines/{ => deploy/telemetry-logstash-datapipeline}/Jenkinsfile (100%) rename pipelines/{ => deploy}/telemetry-logstash/Jenkinsfile (100%) delete mode 100755 pipelines/dockerTag.sh delete mode 100644 pipelines/es-backup/Jenkinsfile.sample delete mode 100755 pipelines/es-backup/deploy.sh delete mode 100755 pipelines/es-backup/installDeps.sh delete mode 100644 pipelines/es-restore/Jenkinsfile.sample delete mode 100755 pipelines/es-restore/deploy.sh delete mode 100755 pipelines/es-restore/installDeps.sh delete mode 100644 pipelines/proxy/Jenkinsfile.sample delete mode 100755 pipelines/proxy/deploy.sh delete mode 100644 pipelines/proxy/metadata.json rename pipelines/{ => push}/push-artifacts/Jenkinsfile (100%) rename pipelines/{deploy/push => push/push-docker}/Jenkinsfile (100%) delete mode 100644 pipelines/telemetry-logstash-datapipeline/Jenkinsfile diff --git a/pipelines/adminutils/Jenkinsfile.sample b/pipelines/adminutils/Jenkinsfile.sample deleted file mode 100644 index 6684dc3d8e..0000000000 --- a/pipelines/adminutils/Jenkinsfile.sample +++ /dev/null @@ -1,27 +0,0 @@ -#!groovy - -node('general-staging') { - - currentBuild.result = "SUCCESS" - - try { - stage('Checkout'){ - checkout scm - } - stage('Pre-Build'){ - sh('./pipelines/adminutils/installDeps.sh') - } - stage('Deploy'){ - step ([$class: 'CopyArtifact', - projectName: 'Tag_As_Silver/AM_AdminUtils_Tag_Silver', - filter: 'metadata.json']); - sh 'METADATA_FILE=metadata.json ARTIFACT_LABEL=silver ENV=staging ./pipelines/adminutils/deploy.sh' - archive includes: "metadata.json" - } - } - catch (err) { - currentBuild.result = "FAILURE" - throw err - } - -} diff --git a/pipelines/adminutils/deploy.sh b/pipelines/adminutils/deploy.sh deleted file mode 100755 index 0dcb3cf5e4..0000000000 --- a/pipelines/adminutils/deploy.sh +++ /dev/null @@ -1,28 +0,0 @@ -#!/bin/sh -# Build script -# set -o errexit -set -e -e () { - echo $( echo ${1} | jq ".${2}" | sed 's/\"//g') -} -m=$(cat $METADATA_FILE) - -org=$(e "${m}" "org") -name=$(e "${m}" "name") -version=$(e "${m}" "version") - -artifactLabel=${ARTIFACT_LABEL:-bronze} -env=${ENV:-null} - -echo "artifactLabel: ${artifactLabel}" -echo "env: ${env}" -echo "org: ${org}" -echo "name: ${name}" -echo "version: ${version}" -echo "ANSIBLE_PATH: $ANSIBLE_PATH" - -ansible-playbook --version -ansible-playbook -i ansible/inventory/${env} ansible/deploy.yml --tags "stack-adminutil" --extra-vars "hub_org=${org} image_name=${name} image_tag=${version}-${artifactLabel}" --vault-password-file /run/secrets/vault-pass -# ENV=${env} ORG=${org} NAME=${name} \ -# TAG=${version}-${artifactLabel} \ -# docker stack deploy -c ./pipelines/proxy/docker-compose.yml ${name}-${env} diff --git a/pipelines/adminutils/installDeps.sh b/pipelines/adminutils/installDeps.sh deleted file mode 100755 index 4bd4763793..0000000000 --- a/pipelines/adminutils/installDeps.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/sh -# Build script -# set -o errexit -apk -v --update --no-cache add jq bash -apk -v add ansible=2.3.0.0-r1 diff --git a/pipelines/adminutils/metadata.json b/pipelines/adminutils/metadata.json deleted file mode 100644 index d66f241143..0000000000 --- a/pipelines/adminutils/metadata.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "name": "adminutil", - "version": "0.0.1-SNAPSHOT", - "org": "sunbird", - "hubuser": "purplesunbird" -} diff --git a/pipelines/am-onboard-apis/Jenkinsfile.sample b/pipelines/am-onboard-apis/Jenkinsfile.sample deleted file mode 100644 index c148704f90..0000000000 --- a/pipelines/am-onboard-apis/Jenkinsfile.sample +++ /dev/null @@ -1,15 +0,0 @@ -pipeline { - agent { - label 'kong-staging' - } - stages { - stage('Deploy') { - steps { - sh ''' - cd ansible - ansible-playbook -i inventory/staging api-manager.yml --tags kong-api --vault-password-file /run/secrets/vault-pass - ''' - } - } - } -} \ No newline at end of file diff --git a/pipelines/am-onboard-consumers/Jenkinsfile.sample b/pipelines/am-onboard-consumers/Jenkinsfile.sample deleted file mode 100644 index 4a789dc981..0000000000 --- a/pipelines/am-onboard-consumers/Jenkinsfile.sample +++ /dev/null @@ -1,15 +0,0 @@ -pipeline { - agent { - label 'kong-staging' - } - stages { - stage('Deploy') { - steps { - sh ''' - cd ansible - ansible-playbook -i inventory/staging api-manager.yml --tags kong-consumer --vault-password-file /run/secrets/vault-pass -v - ''' - } - } - } -} \ No newline at end of file diff --git a/pipelines/application-elasticsearch/Jenkinsfile.sample b/pipelines/application-elasticsearch/Jenkinsfile.sample deleted file mode 100644 index fdd5dfe923..0000000000 --- a/pipelines/application-elasticsearch/Jenkinsfile.sample +++ /dev/null @@ -1,22 +0,0 @@ -pipeline { - agent { - label 'general-staging' - } - stages { - stage('Pre-Build'){ - steps { - sh('chmod a+x ansible/installDeps.sh') - sh('./ansible/installDeps.sh') - } - } - - stage('Deploy') { - steps { - sh ''' - cd ansible - ansible-playbook -i inventory/staging provision.yml --tags es --vault-password-file /run/secrets/vault-pass - ''' - } - } - } -} \ No newline at end of file diff --git a/pipelines/adminutils/Jenkinsfile b/pipelines/deploy/adminutils/Jenkinsfile similarity index 100% rename from pipelines/adminutils/Jenkinsfile rename to pipelines/deploy/adminutils/Jenkinsfile diff --git a/pipelines/am-onboard-apis/Jenkinsfile b/pipelines/deploy/am-onboard-apis/Jenkinsfile similarity index 100% rename from pipelines/am-onboard-apis/Jenkinsfile rename to pipelines/deploy/am-onboard-apis/Jenkinsfile diff --git a/pipelines/am-onboard-consumers/Jenkinsfile b/pipelines/deploy/am-onboard-consumers/Jenkinsfile similarity index 100% rename from pipelines/am-onboard-consumers/Jenkinsfile rename to pipelines/deploy/am-onboard-consumers/Jenkinsfile diff --git a/pipelines/application-elasticsearch/Jenkinsfile b/pipelines/deploy/application-elasticsearch/Jenkinsfile similarity index 100% rename from pipelines/application-elasticsearch/Jenkinsfile rename to pipelines/deploy/application-elasticsearch/Jenkinsfile diff --git a/pipelines/es-backup/Jenkinsfile b/pipelines/deploy/es-backup/Jenkinsfile similarity index 100% rename from pipelines/es-backup/Jenkinsfile rename to pipelines/deploy/es-backup/Jenkinsfile diff --git a/pipelines/es-restore/Jenkinsfile b/pipelines/deploy/es-restore/Jenkinsfile similarity index 100% rename from pipelines/es-restore/Jenkinsfile rename to pipelines/deploy/es-restore/Jenkinsfile diff --git a/pipelines/registry-provision/Jenkinsfile b/pipelines/deploy/registry-provision/Jenkinsfile similarity index 100% rename from pipelines/registry-provision/Jenkinsfile rename to pipelines/deploy/registry-provision/Jenkinsfile diff --git a/pipelines/Jenkinsfile b/pipelines/deploy/telemetry-logstash-datapipeline/Jenkinsfile similarity index 100% rename from pipelines/Jenkinsfile rename to pipelines/deploy/telemetry-logstash-datapipeline/Jenkinsfile diff --git a/pipelines/telemetry-logstash/Jenkinsfile b/pipelines/deploy/telemetry-logstash/Jenkinsfile similarity index 100% rename from pipelines/telemetry-logstash/Jenkinsfile rename to pipelines/deploy/telemetry-logstash/Jenkinsfile diff --git a/pipelines/dockerTag.sh b/pipelines/dockerTag.sh deleted file mode 100755 index cb006feba5..0000000000 --- a/pipelines/dockerTag.sh +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/sh -# Build script -# set -o errexit -set -e -e () { - echo $( echo ${1} | jq ".${2}" | sed 's/\"//g') -} -m=$(cat $METADATA_FILE) - -org=$(e "${m}" "org") -hubuser=$(e "${m}" "hubuser") -name=$(e "${m}" "name") -version=$(e "${m}" "version") - -artifactLabel=${ARTIFACT_LABEL:-gold} -PREVIOUS_LABEL=silver - -docker pull ${org}/${name}:${version}-${PREVIOUS_LABEL} -docker image tag ${org}/${name}:${version}-${PREVIOUS_LABEL} ${org}/${name}:${version}-${artifactLabel} - -docker login -u "${hubuser}" -p`cat /run/secrets/hub-pass` -docker push ${org}/${name}:${version}-${artifactLabel} -docker logout diff --git a/pipelines/es-backup/Jenkinsfile.sample b/pipelines/es-backup/Jenkinsfile.sample deleted file mode 100644 index b17f44dcc1..0000000000 --- a/pipelines/es-backup/Jenkinsfile.sample +++ /dev/null @@ -1,20 +0,0 @@ -pipeline { - agent { - label 'general-staging' - } - triggers { - cron('H 0 * * *') - } - stages { - stage('Pre-Build'){ - steps { - sh('./pipelines/es-backup/installDeps.sh') - } - } - stage('Deploy') { - steps { - sh 'ENV=staging ./pipelines/es-backup/deploy.sh' - } - } - } -} diff --git a/pipelines/es-backup/deploy.sh b/pipelines/es-backup/deploy.sh deleted file mode 100755 index 663c26c73f..0000000000 --- a/pipelines/es-backup/deploy.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/sh -# Build script -# set -o errexit -set -e -ansible-playbook --version -ANSIBLE_FORCE_COLOR=true ansible-playbook -i ansible/inventory/$ENV ansible/es.yml --tags "es_backup" -v --vault-password-file /run/secrets/vault-pass diff --git a/pipelines/es-backup/installDeps.sh b/pipelines/es-backup/installDeps.sh deleted file mode 100755 index acc98d5f3a..0000000000 --- a/pipelines/es-backup/installDeps.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/sh -# Build script -# set -o errexit -apk -v --update --no-cache add jq -apk -v add ansible=2.3.0.0-r1 diff --git a/pipelines/es-restore/Jenkinsfile.sample b/pipelines/es-restore/Jenkinsfile.sample deleted file mode 100644 index ca04227546..0000000000 --- a/pipelines/es-restore/Jenkinsfile.sample +++ /dev/null @@ -1,17 +0,0 @@ -pipeline { - agent { - label 'general-staging' - } - stages { - stage('Pre-Build'){ - steps { - sh('./pipelines/es-restore/installDeps.sh') - } - } - stage('Deploy') { - steps { - sh 'ENV=staging ./pipelines/es-restore/deploy.sh' - } - } - } -} diff --git a/pipelines/es-restore/deploy.sh b/pipelines/es-restore/deploy.sh deleted file mode 100755 index a0eed000b0..0000000000 --- a/pipelines/es-restore/deploy.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/sh -# Build script -# set -o errexit -set -e -ansible-playbook --version -ANSIBLE_FORCE_COLOR=true ansible-playbook -i ansible/inventory/$ENV ansible/es.yml --tags "es_restore" --extra-vars "snapshot_number=$SNAPSHOT_NUMBER" -v --vault-password-file /run/secrets/vault-pass diff --git a/pipelines/es-restore/installDeps.sh b/pipelines/es-restore/installDeps.sh deleted file mode 100755 index acc98d5f3a..0000000000 --- a/pipelines/es-restore/installDeps.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/sh -# Build script -# set -o errexit -apk -v --update --no-cache add jq -apk -v add ansible=2.3.0.0-r1 diff --git a/pipelines/proxy/Jenkinsfile.sample b/pipelines/proxy/Jenkinsfile.sample deleted file mode 100644 index cf39631134..0000000000 --- a/pipelines/proxy/Jenkinsfile.sample +++ /dev/null @@ -1,25 +0,0 @@ -pipeline { - agent { - label 'general-staging' - } - stages { - stage('Pre-Build'){ - steps { - sh('chmod a+x ansible/installDeps.sh') - sh('./ansible/installDeps.sh') - } - } - - stage('Deploy') { - steps { - step ([$class: 'CopyArtifact', - projectName: 'Dev/Proxy', - filter: 'metadata.json']); - - sh 'METADATA_FILE=metadata.json ARTIFACT_LABEL=bronze ENV=staging ./pipelines/proxy/deploy.sh' - - archive includes: "metadata.json" - } - } - } -} \ No newline at end of file diff --git a/pipelines/proxy/deploy.sh b/pipelines/proxy/deploy.sh deleted file mode 100755 index be0a7ed992..0000000000 --- a/pipelines/proxy/deploy.sh +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/sh -set -e -e () { - echo $( echo ${1} | jq ".${2}" | sed 's/\"//g') -} -m=$(cat $METADATA_FILE) - -org=$(e "${m}" "org") -name=$(e "${m}" "name") -version=$(e "${m}" "version") - -artifactLabel=${ARTIFACT_LABEL:-bronze} -env=${ENV:-null} - -echo "artifactLabel: ${artifactLabel}" -echo "env: ${env}" -echo "org: ${org}" -echo "name: ${name}" -echo "version: ${version}" - - -ansible-playbook --version -ansible-playbook -i ansible/inventory/$ENV ansible/deploy.yml --tags "stack-proxy" --extra-vars "hub_org=${org} image_name=${name} image_tag=${version}-${artifactLabel}" --vault-password-file /run/secrets/vault-pass diff --git a/pipelines/proxy/metadata.json b/pipelines/proxy/metadata.json deleted file mode 100644 index 28d3fc61c0..0000000000 --- a/pipelines/proxy/metadata.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "name": "proxy", - "version": "0.0.1", - "org": "sunbird", - "hubuser": "purplesunbird" -} \ No newline at end of file diff --git a/pipelines/push-artifacts/Jenkinsfile b/pipelines/push/push-artifacts/Jenkinsfile similarity index 100% rename from pipelines/push-artifacts/Jenkinsfile rename to pipelines/push/push-artifacts/Jenkinsfile diff --git a/pipelines/deploy/push/Jenkinsfile b/pipelines/push/push-docker/Jenkinsfile similarity index 100% rename from pipelines/deploy/push/Jenkinsfile rename to pipelines/push/push-docker/Jenkinsfile diff --git a/pipelines/telemetry-logstash-datapipeline/Jenkinsfile b/pipelines/telemetry-logstash-datapipeline/Jenkinsfile deleted file mode 100644 index 6d047e503d..0000000000 --- a/pipelines/telemetry-logstash-datapipeline/Jenkinsfile +++ /dev/null @@ -1,47 +0,0 @@ -@Library('deploy-conf') _ -node() { - try { - String ANSI_GREEN = "\u001B[32m" - String ANSI_NORMAL = "\u001B[0m" - String ANSI_BOLD = "\u001B[1m" - String ANSI_RED = "\u001B[31m" - String ANSI_YELLOW = "\u001B[33m" - - if (params.size() == 0){ - envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() - properties([[$class: 'RebuildSettings', autoRebuild: false, rebuildDisabled: false], parameters([ - choice(choices: ['GitHub', 'Local'], description: 'Choose the ansible inventory source', name: 'inventory_source'), - string(defaultValue: "${WORKSPACE}/private/ansible/inventories/${envDir}", description: 'Please sepecify the full path to the inventory directory. The default value is $WORKSPACE/private/ansible/env. Here env is the previous directory of the job.', name: 'inventory_path', trim: false)])]) - ansiColor('xterm') { - println (ANSI_BOLD + ANSI_GREEN + '''\ - First run of the job. Parameters created. Stopping the current build. - Please trigger new build and provide parameters if required. - '''.stripIndent().replace("\n"," ") + ANSI_NORMAL) - } - currentBuild.result = 'SUCCESS' - return "first run" - } - - stage('checkout public repo') { - cleanWs() - checkout scm - } - - ansiColor('xterm') { - stage('deploy'){ - values = [:] - currentWs = sh(returnStdout: true, script: 'pwd').trim() - values.put('currentWs', currentWs) - ansiblePlaybook = "${currentWs}/ansible/deploy.yml" - ansibleExtraArgs = "--tags \"stack-sunbird\" --extra-vars \"service_name=telemetry-service deploy_telemetry_logstash_datapipeline=True\" --vault-password-file /run/secrets/vault-pass -v" - values.put('ansiblePlaybook', ansiblePlaybook) - values.put('ansibleExtraArgs', ansibleExtraArgs) - println values -// ansible_playbook_run(values) - } - } - } - catch (err) { - throw err - } -} From 86e079892e740f0724729e3f1961706d8a1c9397 Mon Sep 17 00:00:00 2001 From: msknext Date: Tue, 29 Jan 2019 14:02:16 +0530 Subject: [PATCH 0778/1345] feat: DO-498 Restructure jenkinsfiles --- pipelines/{deploy => provision}/registry-provision/Jenkinsfile | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename pipelines/{deploy => provision}/registry-provision/Jenkinsfile (100%) diff --git a/pipelines/deploy/registry-provision/Jenkinsfile b/pipelines/provision/registry-provision/Jenkinsfile similarity index 100% rename from pipelines/deploy/registry-provision/Jenkinsfile rename to pipelines/provision/registry-provision/Jenkinsfile From cbbe276be0425cba51f77f7969c566c3a2e98115 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Tue, 29 Jan 2019 14:05:19 +0530 Subject: [PATCH 0779/1345] feat: DO-498 Parameters handling using config.xml --- pipelines/deploy/adminutils/Jenkinsfile | 4 ---- 1 file changed, 4 deletions(-) diff --git a/pipelines/deploy/adminutils/Jenkinsfile b/pipelines/deploy/adminutils/Jenkinsfile index e62c7bf199..77f6387f1d 100644 --- a/pipelines/deploy/adminutils/Jenkinsfile +++ b/pipelines/deploy/adminutils/Jenkinsfile @@ -7,10 +7,6 @@ node() { } stage('define params') { def values = docker_params() - if(values == "first run"){ - currentBuild.result = 'SUCCESS' - return - } currentWs = sh(returnStdout: true, script: 'pwd').trim() ansiblePlaybook = "$currentWs/ansible/deploy.yml" ansibleExtraArgs = "--tags \"stack-adminutil\" --extra-vars \"hub_org=$hub_org image_name=$values.image_name image_tag=$values.image_tag\" --vault-password-file /home/ops/vault" From b283d67ffabb78df649132b0bae8a3f270a5a21f Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Tue, 29 Jan 2019 14:06:29 +0530 Subject: [PATCH 0780/1345] feat: DO-498 Parameters handling using config.xml --- pipelines/deploy/am-onboard-apis/Jenkinsfile | 17 +---------------- 1 file changed, 1 insertion(+), 16 deletions(-) diff --git a/pipelines/deploy/am-onboard-apis/Jenkinsfile b/pipelines/deploy/am-onboard-apis/Jenkinsfile index 0d10a33023..eef7e73b8d 100644 --- a/pipelines/deploy/am-onboard-apis/Jenkinsfile +++ b/pipelines/deploy/am-onboard-apis/Jenkinsfile @@ -6,22 +6,7 @@ node() { String ANSI_BOLD = "\u001B[1m" String ANSI_RED = "\u001B[31m" String ANSI_YELLOW = "\u001B[33m" - - if (params.size() == 0){ - envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() - properties([[$class: 'RebuildSettings', autoRebuild: false, rebuildDisabled: false], parameters([ - choice(choices: ['GitHub', 'Local'], description: 'Choose the ansible inventory source', name: 'inventory_source'), - string(defaultValue: "${WORKSPACE}/private/ansible/inventories/${envDir}", description: 'Please sepecify the full path to the inventory directory. The default value is $WORKSPACE/private/ansible/env. Here env is the previous directory of the job.', name: 'inventory_path', trim: false)])]) - ansiColor('xterm') { - println (ANSI_BOLD + ANSI_GREEN + '''\ - First run of the job. Parameters created. Stopping the current build. - Please trigger new build and provide parameters if required. - '''.stripIndent().replace("\n"," ") + ANSI_NORMAL) - } - currentBuild.result = 'SUCCESS' - return "first run" - } - + stage('checkout public repo') { cleanWs() checkout scm From 87ad6de03426b646a21e1e845c090d815700dcd1 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Tue, 29 Jan 2019 14:08:13 +0530 Subject: [PATCH 0781/1345] feat: DO-498 Parameters handling using config.xml --- .../deploy/am-onboard-consumers/Jenkinsfile | 17 +---------------- 1 file changed, 1 insertion(+), 16 deletions(-) diff --git a/pipelines/deploy/am-onboard-consumers/Jenkinsfile b/pipelines/deploy/am-onboard-consumers/Jenkinsfile index cb3c9649f7..2f55ad7f2b 100644 --- a/pipelines/deploy/am-onboard-consumers/Jenkinsfile +++ b/pipelines/deploy/am-onboard-consumers/Jenkinsfile @@ -6,22 +6,7 @@ node() { String ANSI_BOLD = "\u001B[1m" String ANSI_RED = "\u001B[31m" String ANSI_YELLOW = "\u001B[33m" - - if (params.size() == 0){ - envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() - properties([[$class: 'RebuildSettings', autoRebuild: false, rebuildDisabled: false], parameters([ - choice(choices: ['GitHub', 'Local'], description: 'Choose the ansible inventory source', name: 'inventory_source'), - string(defaultValue: "${WORKSPACE}/private/ansible/inventories/${envDir}", description: 'Please sepecify the full path to the inventory directory. The default value is $WORKSPACE/private/ansible/env. Here env is the previous directory of the job.', name: 'inventory_path', trim: false)])]) - ansiColor('xterm') { - println (ANSI_BOLD + ANSI_GREEN + '''\ - First run of the job. Parameters created. Stopping the current build. - Please trigger new build and provide parameters if required. - '''.stripIndent().replace("\n"," ") + ANSI_NORMAL) - } - currentBuild.result = 'SUCCESS' - return "first run" - } - + stage('checkout public repo') { cleanWs() checkout scm From e1a09cf9713822ebd249fede6fe6340cee38ed95 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Tue, 29 Jan 2019 14:09:12 +0530 Subject: [PATCH 0782/1345] feat: DO-498 Parameters handling using config.xml --- .../deploy/application-elasticsearch/Jenkinsfile | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/pipelines/deploy/application-elasticsearch/Jenkinsfile b/pipelines/deploy/application-elasticsearch/Jenkinsfile index e2409b6ca6..ee84a0a828 100644 --- a/pipelines/deploy/application-elasticsearch/Jenkinsfile +++ b/pipelines/deploy/application-elasticsearch/Jenkinsfile @@ -7,21 +7,6 @@ node() { String ANSI_RED = "\u001B[31m" String ANSI_YELLOW = "\u001B[33m" - if (params.size() == 0){ - envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() - properties([[$class: 'RebuildSettings', autoRebuild: false, rebuildDisabled: false], parameters([ - choice(choices: ['GitHub', 'Local'], description: 'Choose the ansible inventory source', name: 'inventory_source'), - string(defaultValue: "${WORKSPACE}/private/ansible/inventories/${envDir}", description: 'Please sepecify the full path to the inventory directory. The default value is $WORKSPACE/private/ansible/env. Here env is the previous directory of the job.', name: 'inventory_path', trim: false)])]) - ansiColor('xterm') { - println (ANSI_BOLD + ANSI_GREEN + '''\ - First run of the job. Parameters created. Stopping the current build. - Please trigger new build and provide parameters if required. - '''.stripIndent().replace("\n"," ") + ANSI_NORMAL) - } - currentBuild.result = 'SUCCESS' - return "first run" - } - stage('checkout public repo') { cleanWs() checkout scm From 6346d1bc0b84095edf6a8aadfaf7caf50e6c0a11 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Tue, 29 Jan 2019 14:10:42 +0530 Subject: [PATCH 0783/1345] feat: DO-498 Parameters handling using config.xml --- pipelines/deploy/badger/Jenkinsfile | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/pipelines/deploy/badger/Jenkinsfile b/pipelines/deploy/badger/Jenkinsfile index fb32256cb9..b323f5b662 100644 --- a/pipelines/deploy/badger/Jenkinsfile +++ b/pipelines/deploy/badger/Jenkinsfile @@ -6,12 +6,8 @@ node() { checkout scm } - stage('define params') { + stage('deploy') { def values = docker_params() - if(values == "first run"){ - currentBuild.result = 'SUCCESS' - return - } currentWs = sh(returnStdout: true, script: 'pwd').trim() ansiblePlaybook = "$currentWs/ansible/deploy-badger.yml" ansibleExtraArgs = "--extra-vars \"hub_org=$hub_org image_name=$values.image_name image_tag=$values.image_tag service_name=badger-service\" --vault-password-file /home/ops/vault" From e98ac62f024403b784094828cb5936906d56a08d Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Tue, 29 Jan 2019 14:13:06 +0530 Subject: [PATCH 0784/1345] feat: DO-498 Parameters handling using config.xml --- pipelines/deploy/adminutils/Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pipelines/deploy/adminutils/Jenkinsfile b/pipelines/deploy/adminutils/Jenkinsfile index 77f6387f1d..c6aa578cd7 100644 --- a/pipelines/deploy/adminutils/Jenkinsfile +++ b/pipelines/deploy/adminutils/Jenkinsfile @@ -5,7 +5,7 @@ node() { cleanWs() checkout scm } - stage('define params') { + stage('deploy') { def values = docker_params() currentWs = sh(returnStdout: true, script: 'pwd').trim() ansiblePlaybook = "$currentWs/ansible/deploy.yml" From 00c11ee3566f6ff7bbb3da0dc034bac78b31aca3 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Tue, 29 Jan 2019 14:20:06 +0530 Subject: [PATCH 0785/1345] feat: DO-498 Parameters and inventory handling --- pipelines/deploy/am-onboard-apis/Jenkinsfile | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/pipelines/deploy/am-onboard-apis/Jenkinsfile b/pipelines/deploy/am-onboard-apis/Jenkinsfile index eef7e73b8d..e4ce661229 100644 --- a/pipelines/deploy/am-onboard-apis/Jenkinsfile +++ b/pipelines/deploy/am-onboard-apis/Jenkinsfile @@ -15,13 +15,18 @@ node() { ansiColor('xterm') { stage('deploy'){ values = [:] + envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-3].trim() + module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() + jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() currentWs = sh(returnStdout: true, script: 'pwd').trim() - values.put('currentWs', currentWs) ansiblePlaybook = "${currentWs}/ansible/api-manager.yml" ansibleExtraArgs = "--tags kong-api --vault-password-file /run/secrets/vault-pass -v" + values.put('currentWs', currentWs) + values.put('env', envDir) + values.put('module', module) + values.put('jobName', jobName) values.put('ansiblePlaybook', ansiblePlaybook) - values.put('ansibleExtraArgs', ansibleExtraArgs) - println values + values.put('ansibleExtraArgs', ansibleExtraArgs) // ansible_playbook_run(values) } } From cee04b529a04c3e88202dae49e12ea26c4562211 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Tue, 29 Jan 2019 14:21:29 +0530 Subject: [PATCH 0786/1345] Update Jenkinsfile --- pipelines/deploy/am-onboard-consumers/Jenkinsfile | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/pipelines/deploy/am-onboard-consumers/Jenkinsfile b/pipelines/deploy/am-onboard-consumers/Jenkinsfile index 2f55ad7f2b..56b40ea679 100644 --- a/pipelines/deploy/am-onboard-consumers/Jenkinsfile +++ b/pipelines/deploy/am-onboard-consumers/Jenkinsfile @@ -6,7 +6,7 @@ node() { String ANSI_BOLD = "\u001B[1m" String ANSI_RED = "\u001B[31m" String ANSI_YELLOW = "\u001B[33m" - + stage('checkout public repo') { cleanWs() checkout scm @@ -15,10 +15,16 @@ node() { ansiColor('xterm') { stage('deploy'){ values = [:] + envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-3].trim() + module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() + jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() currentWs = sh(returnStdout: true, script: 'pwd').trim() - values.put('currentWs', currentWs) ansiblePlaybook = "${currentWs}/ansible/api-manager.yml" ansibleExtraArgs = "--tags kong-consumer --vault-password-file /run/secrets/vault-pass -v" + values.put('currentWs', currentWs) + values.put('env', envDir) + values.put('module', module) + values.put('jobName', jobName) values.put('ansiblePlaybook', ansiblePlaybook) values.put('ansibleExtraArgs', ansibleExtraArgs) println values From a9aa3d26f32fa2e7bd497bd1055a4b20cd269de0 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Tue, 29 Jan 2019 14:22:21 +0530 Subject: [PATCH 0787/1345] feat: DO-498 Parameters and inventory handling --- pipelines/deploy/application-elasticsearch/Jenkinsfile | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/pipelines/deploy/application-elasticsearch/Jenkinsfile b/pipelines/deploy/application-elasticsearch/Jenkinsfile index ee84a0a828..8e3ed915e9 100644 --- a/pipelines/deploy/application-elasticsearch/Jenkinsfile +++ b/pipelines/deploy/application-elasticsearch/Jenkinsfile @@ -15,10 +15,16 @@ node() { ansiColor('xterm') { stage('deploy'){ values = [:] + envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-3].trim() + module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() + jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() currentWs = sh(returnStdout: true, script: 'pwd').trim() - values.put('currentWs', currentWs) ansiblePlaybook = "${currentWs}/ansible/provision.yml" ansibleExtraArgs = "--tags es --vault-password-file /run/secrets/vault-pass" + values.put('currentWs', currentWs) + values.put('env', envDir) + values.put('module', module) + values.put('jobName', jobName) values.put('ansiblePlaybook', ansiblePlaybook) values.put('ansibleExtraArgs', ansibleExtraArgs) println values From ab9b210515c707f5a351a10d4d3fa1deb1403025 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Tue, 29 Jan 2019 14:28:23 +0530 Subject: [PATCH 0788/1345] feat: DO-498 Parameters handling using config.xml --- pipelines/deploy/cassandra-deploy/Jenkinsfile | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/pipelines/deploy/cassandra-deploy/Jenkinsfile b/pipelines/deploy/cassandra-deploy/Jenkinsfile index 2e245d3e1b..a4e2ab8804 100644 --- a/pipelines/deploy/cassandra-deploy/Jenkinsfile +++ b/pipelines/deploy/cassandra-deploy/Jenkinsfile @@ -11,20 +11,15 @@ node() { cleanWs() checkout scm } - stage('define params') { - def values = lp_dp_params() - if(values == "first run"){ - currentBuild.result = 'SUCCESS' - return - } ansiColor('xterm') { stage('get artifact') { + def values = lp_dp_params() currentWs = sh(returnStdout: true, script: 'pwd').trim() artifact = values.artifact_name + ":" + values.artifact_version values.put('currentWs', currentWs) if (params.artifact_source == "Remote") { println(ANSI_BOLD + ANSI_YELLOW + '''\ - Option chosen is Remote, ignoring any previously copied artifacts and new artifacts will be downloaded from remote source + Option chosen is Artifact_Repository, ignoring any previously copied artifacts and new artifacts will be downloaded from artifact repository '''.stripIndent().replace("\n", " ") + ANSI_NORMAL) ansiblePlaybook = "${currentWs}/ansible/artifacts-download.yml" ansibleExtraArgs = """\ @@ -35,14 +30,13 @@ node() { values.put('ansiblePlaybook', ansiblePlaybook) values.put('ansibleExtraArgs', ansibleExtraArgs) ansible_playbook_run(values) - } - else{ + } else { println(ANSI_BOLD + ANSI_YELLOW + '''\ Option chosen is Local, using the artifacts copied '''.stripIndent().replace("\n", " ") + ANSI_NORMAL) } } - stage('deploy artifact'){ + stage('deploy artifact') { sh """ unzip ${artifact} """ @@ -58,7 +52,6 @@ node() { currentBuild.description = "${values.artifact_version}" } } - } } catch (err) { currentBuild.result = "FAILURE" From 09efe97585a025acbe28cf9a1a5855e340e1c9b4 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Tue, 29 Jan 2019 14:29:28 +0530 Subject: [PATCH 0789/1345] feat: DO-498 Parameters and inventory handling --- pipelines/deploy/am-onboard-apis/Jenkinsfile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pipelines/deploy/am-onboard-apis/Jenkinsfile b/pipelines/deploy/am-onboard-apis/Jenkinsfile index e4ce661229..4d85a1d943 100644 --- a/pipelines/deploy/am-onboard-apis/Jenkinsfile +++ b/pipelines/deploy/am-onboard-apis/Jenkinsfile @@ -26,7 +26,8 @@ node() { values.put('module', module) values.put('jobName', jobName) values.put('ansiblePlaybook', ansiblePlaybook) - values.put('ansibleExtraArgs', ansibleExtraArgs) + values.put('ansibleExtraArgs', ansibleExtraArgs) + println values // ansible_playbook_run(values) } } From 44be367ca1467cd2e4aa2fb58d5e3a09a8b573a4 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Tue, 29 Jan 2019 14:30:57 +0530 Subject: [PATCH 0790/1345] feat: DO-498 Parameters handling using config.xml --- pipelines/deploy/config-service/Jenkinsfile | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/pipelines/deploy/config-service/Jenkinsfile b/pipelines/deploy/config-service/Jenkinsfile index aaaa2c2b5c..113906d55b 100644 --- a/pipelines/deploy/config-service/Jenkinsfile +++ b/pipelines/deploy/config-service/Jenkinsfile @@ -6,12 +6,8 @@ node() { checkout scm } - stage('define params') { + stage('deploy') { def values = docker_params() - if(values == "first run"){ - currentBuild.result = 'SUCCESS' - return - } currentWs = sh(returnStdout: true, script: 'pwd').trim() ansiblePlaybook = "$currentWs/ansible/deploy.yml" ansibleExtraArgs = "--tags \"stack-sunbird\" --extra-vars \"hub_org=$hub_org image_name=$values.image_name image_tag=$values.image_tag service_name=config-service deploy_config=True\" --vault-password-file /home/ops/vault" From a362de8d6d83b226a62ca4a0160ab39716dea89f Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Tue, 29 Jan 2019 14:31:30 +0530 Subject: [PATCH 0791/1345] feat: DO-498 Parameters handling using config.xml --- pipelines/deploy/content/Jenkinsfile | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/pipelines/deploy/content/Jenkinsfile b/pipelines/deploy/content/Jenkinsfile index 5e2b1114ae..1d4bc3aa82 100644 --- a/pipelines/deploy/content/Jenkinsfile +++ b/pipelines/deploy/content/Jenkinsfile @@ -5,13 +5,9 @@ node() { cleanWs() checkout scm } - - stage('define params') { + + stage('deploy') { def values = docker_params() - if(values == "first run"){ - currentBuild.result = 'SUCCESS' - return - } currentWs = sh(returnStdout: true, script: 'pwd').trim() ansiblePlaybook = "$currentWs/ansible/deploy.yml" ansibleExtraArgs = "--tags \"stack-sunbird\" --extra-vars \"hub_org=$hub_org image_name=$values.image_name image_tag=$values.image_tag service_name=content-service deploy_content=True\" --vault-password-file /home/ops/vault" From 5aa56ddd3b06aa7279681f27cae1db3e5f429045 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Tue, 29 Jan 2019 14:32:53 +0530 Subject: [PATCH 0792/1345] feat: DO-498 Parameters and inventory handling --- pipelines/deploy/es-backup/Jenkinsfile | 22 +++++++--------------- 1 file changed, 7 insertions(+), 15 deletions(-) diff --git a/pipelines/deploy/es-backup/Jenkinsfile b/pipelines/deploy/es-backup/Jenkinsfile index 90032d2cb1..2f517fdae6 100644 --- a/pipelines/deploy/es-backup/Jenkinsfile +++ b/pipelines/deploy/es-backup/Jenkinsfile @@ -7,21 +7,6 @@ node() { String ANSI_RED = "\u001B[31m" String ANSI_YELLOW = "\u001B[33m" - if (params.size() == 0){ - envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() - properties([[$class: 'RebuildSettings', autoRebuild: false, rebuildDisabled: false], parameters([ - choice(choices: ['GitHub', 'Local'], description: 'Choose the ansible inventory source', name: 'inventory_source'), - string(defaultValue: "${WORKSPACE}/private/ansible/inventories/${envDir}", description: 'Please sepecify the full path to the inventory directory. The default value is $WORKSPACE/private/ansible/env. Here env is the previous directory of the job.', name: 'inventory_path', trim: false)])]) - ansiColor('xterm') { - println (ANSI_BOLD + ANSI_GREEN + '''\ - First run of the job. Parameters created. Stopping the current build. - Please trigger new build and provide parameters if required. - '''.stripIndent().replace("\n"," ") + ANSI_NORMAL) - } - currentBuild.result = 'SUCCESS' - return "first run" - } - triggers { cron('H 0 * * *') } @@ -34,10 +19,17 @@ node() { ansiColor('xterm') { stage('deploy'){ values = [:] + envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-3].trim() + module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() + jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() currentWs = sh(returnStdout: true, script: 'pwd').trim() values.put('currentWs', currentWs) ansiblePlaybook = "${currentWs}/ansible/es.yml" ansibleExtraArgs = "--tags \"es_backup\" -v --vault-password-file /run/secrets/vault-pass" + values.put('currentWs', currentWs) + values.put('env', envDir) + values.put('module', module) + values.put('jobName', jobName) values.put('ansiblePlaybook', ansiblePlaybook) values.put('ansibleExtraArgs', ansibleExtraArgs) println values From 430002a9db07f7fb0ebb86c232cdb4f08c49d4e3 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Tue, 29 Jan 2019 14:33:55 +0530 Subject: [PATCH 0793/1345] feat: DO-498 Parameters and inventory handling --- pipelines/deploy/es-restore/Jenkinsfile | 24 +++++++----------------- 1 file changed, 7 insertions(+), 17 deletions(-) diff --git a/pipelines/deploy/es-restore/Jenkinsfile b/pipelines/deploy/es-restore/Jenkinsfile index f74375ca0d..001ab7de82 100644 --- a/pipelines/deploy/es-restore/Jenkinsfile +++ b/pipelines/deploy/es-restore/Jenkinsfile @@ -7,22 +7,6 @@ node() { String ANSI_RED = "\u001B[31m" String ANSI_YELLOW = "\u001B[33m" - if (params.size() == 0){ - envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() - properties([[$class: 'RebuildSettings', autoRebuild: false, rebuildDisabled: false], parameters([ - choice(choices: ['GitHub', 'Local'], description: 'Choose the ansible inventory source', name: 'inventory_source'), - string(defaultValue: "${WORKSPACE}/private/ansible/inventories/${envDir}", description: 'Please sepecify the full path to the inventory directory. The default value is $WORKSPACE/private/ansible/env. Here env is the previous directory of the job.', name: 'inventory_path', trim: false), - string(defaultValue: '', description: 'Specify the snapshot number', name: 'snapshot_number')])]) - ansiColor('xterm') { - println (ANSI_BOLD + ANSI_GREEN + '''\ - First run of the job. Parameters created. Stopping the current build. - Please trigger new build and provide parameters if required. - '''.stripIndent().replace("\n"," ") + ANSI_NORMAL) - } - currentBuild.result = 'SUCCESS' - return "first run" - } - triggers { cron('H 0 * * *') } @@ -36,9 +20,15 @@ node() { stage('deploy'){ values = [:] currentWs = sh(returnStdout: true, script: 'pwd').trim() - values.put('currentWs', currentWs) + envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-3].trim() + module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() + jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() ansiblePlaybook = "${currentWs}/ansible/es.yml" ansibleExtraArgs = "--tags \"es_restore\" --extra-vars \"snapshot_number=${snapshot_number}\" -v --vault-password-file /run/secrets/vault-pass" + values.put('currentWs', currentWs) + values.put('env', envDir) + values.put('module', module) + values.put('jobName', jobName) values.put('ansiblePlaybook', ansiblePlaybook) values.put('ansibleExtraArgs', ansibleExtraArgs) println values From 005a95bb79d87e967fe520d68f38917559b0daaa Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Tue, 29 Jan 2019 14:34:27 +0530 Subject: [PATCH 0794/1345] Update Jenkinsfile --- pipelines/deploy/es-backup/Jenkinsfile | 1 - 1 file changed, 1 deletion(-) diff --git a/pipelines/deploy/es-backup/Jenkinsfile b/pipelines/deploy/es-backup/Jenkinsfile index 2f517fdae6..4016a3e29d 100644 --- a/pipelines/deploy/es-backup/Jenkinsfile +++ b/pipelines/deploy/es-backup/Jenkinsfile @@ -23,7 +23,6 @@ node() { module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() currentWs = sh(returnStdout: true, script: 'pwd').trim() - values.put('currentWs', currentWs) ansiblePlaybook = "${currentWs}/ansible/es.yml" ansibleExtraArgs = "--tags \"es_backup\" -v --vault-password-file /run/secrets/vault-pass" values.put('currentWs', currentWs) From 621decdcc7f175a369154f3f23a7eda7d32ed1f3 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Tue, 29 Jan 2019 14:35:07 +0530 Subject: [PATCH 0795/1345] feat: DO-498 Parameters handling using config.xml --- pipelines/deploy/learner/Jenkinsfile | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/pipelines/deploy/learner/Jenkinsfile b/pipelines/deploy/learner/Jenkinsfile index fe6721422c..227ac20fbd 100644 --- a/pipelines/deploy/learner/Jenkinsfile +++ b/pipelines/deploy/learner/Jenkinsfile @@ -6,12 +6,8 @@ node() { checkout scm } - stage('define params') { + stage('deploy') { def values = docker_params() - if(values == "first run"){ - currentBuild.result = 'SUCCESS' - return - } currentWs = sh(returnStdout: true, script: 'pwd').trim() ansiblePlaybook = "$currentWs/ansible/deploy.yml" ansibleExtraArgs = "--tags \"stack-sunbird\" --extra-vars \"hub_org=$hub_org image_name=$values.image_name image_tag=$values.image_tag service_name=learner-service deploy_learner=True\" --vault-password-file /home/ops/vault" From 2f7f845bb0d6ac9b1cb95b7d80ddaf0f0f456eed Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Tue, 29 Jan 2019 14:35:38 +0530 Subject: [PATCH 0796/1345] Update Jenkinsfile --- pipelines/deploy/player/Jenkinsfile | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/pipelines/deploy/player/Jenkinsfile b/pipelines/deploy/player/Jenkinsfile index e9a78b7c31..2e96ab1a6d 100644 --- a/pipelines/deploy/player/Jenkinsfile +++ b/pipelines/deploy/player/Jenkinsfile @@ -5,12 +5,8 @@ node() { cleanWs() checkout scm } - stage('define params') { + stage('deploy') { def values = docker_params() - if(values == "first run"){ - currentBuild.result = 'SUCCESS' - return - } currentWs = sh(returnStdout: true, script: 'pwd').trim() ansiblePlaybook = "$currentWs/ansible/deploy.yml" ansibleExtraArgs = "--tags \"stack-sunbird\" --extra-vars \"hub_org=$hub_org image_name=$values.image_name image_tag=$values.image_tag service_name=player deploy_stack=True\" --vault-password-file /home/ops/vault" From bd8d70a56866df188c2b239b219eef8ff37deec6 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Tue, 29 Jan 2019 14:36:42 +0530 Subject: [PATCH 0797/1345] feat: DO-498 Parameters handling using config.xml --- pipelines/deploy/proxy/Jenkinsfile | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/pipelines/deploy/proxy/Jenkinsfile b/pipelines/deploy/proxy/Jenkinsfile index ee2e7c3d92..2b67d739e2 100644 --- a/pipelines/deploy/proxy/Jenkinsfile +++ b/pipelines/deploy/proxy/Jenkinsfile @@ -6,12 +6,8 @@ node() { checkout scm } - stage('define params') { + stage('deploy') { def values = docker_params() - if(values == "first run"){ - currentBuild.result = 'SUCCESS' - return - } currentWs = sh(returnStdout: true, script: 'pwd').trim() ansiblePlaybook = "$currentWs/ansible/deploy.yml" ansibleExtraArgs = "--tags \"stack-proxy\" --extra-vars \"hub_org=$hub_org image_name=$values.image_name image_tag=$values.image_tag\" --vault-password-file /home/ops/vault" From bbc12a57628948bae6ae4a5cc527b0212eec32d5 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Tue, 29 Jan 2019 14:38:40 +0530 Subject: [PATCH 0798/1345] feat: DO-498 Parameters and inventory handling --- .../Jenkinsfile | 23 ++++++------------- 1 file changed, 7 insertions(+), 16 deletions(-) diff --git a/pipelines/deploy/telemetry-logstash-datapipeline/Jenkinsfile b/pipelines/deploy/telemetry-logstash-datapipeline/Jenkinsfile index 6d047e503d..4af1a48e0c 100644 --- a/pipelines/deploy/telemetry-logstash-datapipeline/Jenkinsfile +++ b/pipelines/deploy/telemetry-logstash-datapipeline/Jenkinsfile @@ -7,21 +7,6 @@ node() { String ANSI_RED = "\u001B[31m" String ANSI_YELLOW = "\u001B[33m" - if (params.size() == 0){ - envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() - properties([[$class: 'RebuildSettings', autoRebuild: false, rebuildDisabled: false], parameters([ - choice(choices: ['GitHub', 'Local'], description: 'Choose the ansible inventory source', name: 'inventory_source'), - string(defaultValue: "${WORKSPACE}/private/ansible/inventories/${envDir}", description: 'Please sepecify the full path to the inventory directory. The default value is $WORKSPACE/private/ansible/env. Here env is the previous directory of the job.', name: 'inventory_path', trim: false)])]) - ansiColor('xterm') { - println (ANSI_BOLD + ANSI_GREEN + '''\ - First run of the job. Parameters created. Stopping the current build. - Please trigger new build and provide parameters if required. - '''.stripIndent().replace("\n"," ") + ANSI_NORMAL) - } - currentBuild.result = 'SUCCESS' - return "first run" - } - stage('checkout public repo') { cleanWs() checkout scm @@ -30,10 +15,16 @@ node() { ansiColor('xterm') { stage('deploy'){ values = [:] + envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-3].trim() + module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() + jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() currentWs = sh(returnStdout: true, script: 'pwd').trim() - values.put('currentWs', currentWs) ansiblePlaybook = "${currentWs}/ansible/deploy.yml" ansibleExtraArgs = "--tags \"stack-sunbird\" --extra-vars \"service_name=telemetry-service deploy_telemetry_logstash_datapipeline=True\" --vault-password-file /run/secrets/vault-pass -v" + values.put('currentWs', currentWs) + values.put('env', envDir) + values.put('module', module) + values.put('jobName', jobName) values.put('ansiblePlaybook', ansiblePlaybook) values.put('ansibleExtraArgs', ansibleExtraArgs) println values From fd1d6542ce3d468a4acae6e8b6be09efdc225c8d Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Tue, 29 Jan 2019 14:39:55 +0530 Subject: [PATCH 0799/1345] feat: DO-498 Parameters and inventory handling --- .../deploy/telemetry-logstash/Jenkinsfile | 23 ++++++------------- 1 file changed, 7 insertions(+), 16 deletions(-) diff --git a/pipelines/deploy/telemetry-logstash/Jenkinsfile b/pipelines/deploy/telemetry-logstash/Jenkinsfile index 14b90f5dc3..f4933aebae 100644 --- a/pipelines/deploy/telemetry-logstash/Jenkinsfile +++ b/pipelines/deploy/telemetry-logstash/Jenkinsfile @@ -7,21 +7,6 @@ node() { String ANSI_RED = "\u001B[31m" String ANSI_YELLOW = "\u001B[33m" - if (params.size() == 0){ - envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() - properties([[$class: 'RebuildSettings', autoRebuild: false, rebuildDisabled: false], parameters([ - choice(choices: ['GitHub', 'Local'], description: 'Choose the ansible inventory source', name: 'inventory_source'), - string(defaultValue: "${WORKSPACE}/private/ansible/inventories/${envDir}", description: 'Please sepecify the full path to the inventory directory. The default value is $WORKSPACE/private/ansible/env. Here env is the previous directory of the job.', name: 'inventory_path', trim: false)])]) - ansiColor('xterm') { - println (ANSI_BOLD + ANSI_GREEN + '''\ - First run of the job. Parameters created. Stopping the current build. - Please trigger new build and provide parameters if required. - '''.stripIndent().replace("\n"," ") + ANSI_NORMAL) - } - currentBuild.result = 'SUCCESS' - return "first run" - } - stage('checkout public repo') { cleanWs() checkout scm @@ -30,10 +15,16 @@ node() { ansiColor('xterm') { stage('deploy'){ values = [:] + envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-3].trim() + module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() + jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() currentWs = sh(returnStdout: true, script: 'pwd').trim() - values.put('currentWs', currentWs) ansiblePlaybook = "${currentWs}/ansible/deploy.yml" ansibleExtraArgs = "--tags \"stack-sunbird\" --extra-vars \"service_name=telemetry-service deploy_telemetry_logstash=True\" --vault-password-file /run/secrets/vault-pass -v" + values.put('currentWs', currentWs) + values.put('env', envDir) + values.put('module', module) + values.put('jobName', jobName) values.put('ansiblePlaybook', ansiblePlaybook) values.put('ansibleExtraArgs', ansibleExtraArgs) println values From 20f29bf333ee71ac0f5dc37b58ae565a89cad12a Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Tue, 29 Jan 2019 14:40:31 +0530 Subject: [PATCH 0800/1345] feat: DO-498 Parameters handling using config.xml --- pipelines/deploy/telemetry/Jenkinsfile | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/pipelines/deploy/telemetry/Jenkinsfile b/pipelines/deploy/telemetry/Jenkinsfile index 4d7e2c5b21..13bf11d802 100644 --- a/pipelines/deploy/telemetry/Jenkinsfile +++ b/pipelines/deploy/telemetry/Jenkinsfile @@ -6,12 +6,8 @@ node() { checkout scm } - stage('define params') { + stage('deploy') { def values = docker_params() - if(values == "first run"){ - currentBuild.result = 'SUCCESS' - return - } currentWs = sh(returnStdout: true, script: 'pwd').trim() ansiblePlaybook = "$currentWs/ansible/deploy.yml" ansibleExtraArgs = "--tags \"stack-sunbird\" --extra-vars \"hub_org=$hub_org image_name=$values.image_name image_tag=$values.image_tag service_name=telemetry-service deploy_telemetry=True\" --vault-password-file /home/ops/vault" From 5b3873c48ca1c8a35ff549f39d3b46705c3e54fc Mon Sep 17 00:00:00 2001 From: harshavardhnc Date: Tue, 29 Jan 2019 14:45:44 +0530 Subject: [PATCH 0801/1345] Issue #00: secor process condition --- ansible/roles/stack-monitor/templates/alertrules.process | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/stack-monitor/templates/alertrules.process b/ansible/roles/stack-monitor/templates/alertrules.process index f860b0683b..fd133ac64a 100644 --- a/ansible/roles/stack-monitor/templates/alertrules.process +++ b/ansible/roles/stack-monitor/templates/alertrules.process @@ -6,7 +6,7 @@ ALERT kafka_process_not_running description = "Number of running processes are: {% raw %}{{$value}}{% endraw %}", } ALERT secor_process_not_running - IF namedprocess_namegroup_states{groupname="secor",state="Sleeping"} < 6 + IF namedprocess_namegroup_states{groupname="secor",state="Sleeping"} != 7 FOR 1m ANNOTATIONS { summary = "Secor process is not running", From 1b15a32e7af158f2c8a6c1a250a8e3dc0773ba0e Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Tue, 29 Jan 2019 14:54:47 +0530 Subject: [PATCH 0802/1345] feat: DO-498 Parameters handling using config.xml --- pipelines/push/push-docker/Jenkinsfile | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/pipelines/push/push-docker/Jenkinsfile b/pipelines/push/push-docker/Jenkinsfile index 8f918cbc06..2ef8846a97 100644 --- a/pipelines/push/push-docker/Jenkinsfile +++ b/pipelines/push/push-docker/Jenkinsfile @@ -6,12 +6,8 @@ node(){ checkout scm } - stage('define params') { + stage('Artifact Upload') { def values = docker_params() - if(values == "first run"){ - currentBuild.result = 'SUCCESS' - return - } currentWs = sh(returnStdout: true, script: 'pwd').trim() ansiblePlaybook = "$currentWs/ansible/docker_image_push.yml" ansibleExtraArgs = "--extra-vars \"hub_org=${hub_org} image_name=${values.image_name} image_tag=${values.image_tag}\" --vault-password-file /home/ops/vault" From 4865c2bf6791ea2190189df98d31438cd465dece Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Tue, 29 Jan 2019 14:57:52 +0530 Subject: [PATCH 0803/1345] feat: DO-498 Parameters and inventory handling --- .../provision/registry-provision/Jenkinsfile | 23 ++++++------------- 1 file changed, 7 insertions(+), 16 deletions(-) diff --git a/pipelines/provision/registry-provision/Jenkinsfile b/pipelines/provision/registry-provision/Jenkinsfile index b2f34d9c55..f210cf2156 100644 --- a/pipelines/provision/registry-provision/Jenkinsfile +++ b/pipelines/provision/registry-provision/Jenkinsfile @@ -7,21 +7,6 @@ node() { String ANSI_RED = "\u001B[31m" String ANSI_YELLOW = "\u001B[33m" - if (params.size() == 0){ - envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() - properties([[$class: 'RebuildSettings', autoRebuild: false, rebuildDisabled: false], parameters([ - choice(choices: ['GitHub', 'Local'], description: 'Choose the ansible inventory source', name: 'inventory_source'), - string(defaultValue: "${WORKSPACE}/private/ansible/inventories/${envDir}", description: 'Please sepecify the full path to the inventory directory. The default value is $WORKSPACE/private/ansible/env. Here env is the previous directory of the job.', name: 'inventory_path', trim: false)])]) - ansiColor('xterm') { - println (ANSI_BOLD + ANSI_GREEN + '''\ - First run of the job. Parameters created. Stopping the current build. - Please trigger new build and provide parameters if required. - '''.stripIndent().replace("\n"," ") + ANSI_NORMAL) - } - currentBuild.result = 'SUCCESS' - return "first run" - } - stage('checkout public repo') { cleanWs() checkout scm @@ -42,10 +27,16 @@ node() { ansiColor('xterm') { stage('deploy'){ values = [:] + envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-3].trim() + module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() + jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() currentWs = sh(returnStdout: true, script: 'pwd').trim() - values.put('currentWs', currentWs) ansiblePlaybook = "${currentWs}/ansible/registry.yml" ansibleExtraArgs = "--vault-password-file /home/ops/vault" + values.put('currentWs', currentWs) + values.put('env', envDir) + values.put('module', module) + values.put('jobName', jobName) values.put('ansiblePlaybook', ansiblePlaybook) values.put('ansibleExtraArgs', ansibleExtraArgs) println values From d0829dc885c85258c276e2e99587eb1ca8690333 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Tue, 29 Jan 2019 14:58:59 +0530 Subject: [PATCH 0804/1345] feat: DO-498 Parameters handling using config.xml --- pipelines/push/push-artifacts/Jenkinsfile | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/pipelines/push/push-artifacts/Jenkinsfile b/pipelines/push/push-artifacts/Jenkinsfile index 6bd9591961..0ed4ffa6e8 100644 --- a/pipelines/push/push-artifacts/Jenkinsfile +++ b/pipelines/push/push-artifacts/Jenkinsfile @@ -5,19 +5,8 @@ node() { cleanWs() checkout scm } - stage('define params') { + stage('Artifact Upload') { def values = lp_dp_params() - if(values == "first run"){ - // Override default parameters - envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() - properties([[$class: 'RebuildSettings', autoRebuild: false, rebuildDisabled: false], parameters([ - string(defaultValue: '', description: 'Please specify the absolute path to the job from which the metadata.json will be copied.', name: 'copy_metadata_from', trim: false), - string(defaultValue: 'lastSuccessfulBuild', description: 'Specify the build number to copy the artifact from. Default is last successful build of the job', name: 'build_number', trim: false), - choice(choices: ['GitHub', 'Local'], description: 'Choose the ansible inventory source', name: 'inventory_source'), - string(defaultValue: "$WORKSPACE/private/ansible/inventories/$envDir", description: 'Please sepecify the full path to the inventory directory. The default value is $WORKSPACE/private/ansible/env. Here env is the previous directory of the job.', name: 'inventory_path', trim: false)])]) - currentBuild.result = 'SUCCESS' - return - } artifact_version = sh(returnStdout: true, script: 'jq -r .artifact_version metadata.json').trim() values.put('artifact_version', artifact_version) currentWs = sh(returnStdout: true, script: 'pwd').trim() From 31e32a42b472375febd086e1e2e3a0405d75ba36 Mon Sep 17 00:00:00 2001 From: msknext Date: Tue, 29 Jan 2019 15:49:24 +0530 Subject: [PATCH 0805/1345] feat: DO-498 Jenksinfile restructure --- pipelines/{push/push-artifacts => upload/artifacts}/Jenkinsfile | 0 pipelines/{push/push-docker => upload/docker}/Jenkinsfile | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename pipelines/{push/push-artifacts => upload/artifacts}/Jenkinsfile (100%) rename pipelines/{push/push-docker => upload/docker}/Jenkinsfile (100%) diff --git a/pipelines/push/push-artifacts/Jenkinsfile b/pipelines/upload/artifacts/Jenkinsfile similarity index 100% rename from pipelines/push/push-artifacts/Jenkinsfile rename to pipelines/upload/artifacts/Jenkinsfile diff --git a/pipelines/push/push-docker/Jenkinsfile b/pipelines/upload/docker/Jenkinsfile similarity index 100% rename from pipelines/push/push-docker/Jenkinsfile rename to pipelines/upload/docker/Jenkinsfile From 6c47315da725a7e6ecbf5fd9cbe94da1bba4f987 Mon Sep 17 00:00:00 2001 From: harshavardhnc Date: Tue, 29 Jan 2019 16:03:17 +0530 Subject: [PATCH 0806/1345] secor process monitoring fix --- ansible/roles/stack-monitor/templates/alertrules.process | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/stack-monitor/templates/alertrules.process b/ansible/roles/stack-monitor/templates/alertrules.process index fd133ac64a..d10e61a7c6 100644 --- a/ansible/roles/stack-monitor/templates/alertrules.process +++ b/ansible/roles/stack-monitor/templates/alertrules.process @@ -6,7 +6,7 @@ ALERT kafka_process_not_running description = "Number of running processes are: {% raw %}{{$value}}{% endraw %}", } ALERT secor_process_not_running - IF namedprocess_namegroup_states{groupname="secor",state="Sleeping"} != 7 + IF namedprocess_namegroup_states{groupname="secor",state="Sleeping"} != 8 FOR 1m ANNOTATIONS { summary = "Secor process is not running", From 3dfeaf9e32282a4d0a052b15f5f7fff9357740ff Mon Sep 17 00:00:00 2001 From: G33tha Date: Tue, 29 Jan 2019 21:10:18 +0530 Subject: [PATCH 0807/1345] Update Jenkinsfile --- images/proxy/Jenkinsfile | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/images/proxy/Jenkinsfile b/images/proxy/Jenkinsfile index 4eafe32310..f5be25eb71 100644 --- a/images/proxy/Jenkinsfile +++ b/images/proxy/Jenkinsfile @@ -6,18 +6,6 @@ node('build-slave') { String ANSI_RED = "\u001B[31m" String ANSI_YELLOW = "\u001B[33m" - if (params.size() == 0){ - properties([[$class: 'RebuildSettings', autoRebuild: false, rebuildDisabled: false], parameters([string(defaultValue: '', description: 'If you want to build from a tag, specify the tag name. If this parameter is blank, latest commit hash will be used to build', name: 'tag', trim: false)])]) - - ansiColor('xterm') { - println (ANSI_BOLD + ANSI_GREEN + '''\ - First run of the job. Parameters created. Stopping the current build. - Please trigger new build and provide parameters if required. - '''.stripIndent().replace("\n"," ") + ANSI_NORMAL) - } - return - } - ansiColor('xterm') { stage('Checkout') { if (!env.hub_org) { From ad1cad7c64f6c26388caee04dbbbfdcb480b2fba Mon Sep 17 00:00:00 2001 From: "kaliraja.ramasamy" Date: Wed, 30 Jan 2019 10:05:41 +0530 Subject: [PATCH 0808/1345] Issue #0000 fix: DO-350 added the summery jenkinsfile --- pipelines/summery/Jenkinsfile | 53 +++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 pipelines/summery/Jenkinsfile diff --git a/pipelines/summery/Jenkinsfile b/pipelines/summery/Jenkinsfile new file mode 100644 index 0000000000..30c8763057 --- /dev/null +++ b/pipelines/summery/Jenkinsfile @@ -0,0 +1,53 @@ +node(){ + cleanWS() + + values = [:] + def upstream = currentBuild.rawBuild.getCause(hudson.model.Cause$UpstreamCause) + triggerCause = upstream?.shortDescription + if (triggerCause != null) + triggerCause = triggerCause.split()[4].replaceAll('"', '') + values.put('copy_metadata_from', triggerCause) + + + + envDir = values.copy_metadata_from.split('/')[-3].trim() + module = values.copy_metadata_from.split('/')[-2].trim() + jobName = values.copy_metadata_from.split('/')[-1].trim() + + copyArtifacts projectName: values.copy_metadata_from, fingerprintArtifacts: true, flatten: true, selector: specific(params.build_number), filter: metadata.json + + if (module == "Core"){ + image_name = sh(returnStdout: true, script: 'jq -r .image_name metadata.json').trim() + image_tag = sh(returnStdout: true, script: 'jq -r .image_tag metadata.json').trim() + } + else + + artifact_version = sh(returnStdout: true, script: 'jq -r .artifact_version metadata.json').trim() + + + pipelineParams.put('envDir', env) + pipelineParams.put('module', module) + pipelineParams.put('jobName', jobName) + pipelineParams.put('artifact_version', artifact_version) + pipelineParams.put('image_name', image_name) + pipelineParams.put('image_tag', image_tag) + + if (pipelineParams.image_tag == null){ + sh """ + mkdir -p $JENKINS_HOME/summary/${pipelineParams.env} + touch -a $JENKINS_HOME/summary/${pipelineParams.env}/summary.txt + sed -i "s/${pipelineParams.jobName}.*//g" $JENKINS_HOME/summary/${pipelineParams.env}/summary.txt + sed -i "/^$/d" $JENKINS_HOME/summary/${pipelineParams.env}/summary.txt + echo "${pipelineParams.jobName} : ${pipelineParams.artifact_version}" >> $JENKINS_HOME/summary/${pipelineParams.env}/summary.txt + """ + } + if (pipelineParams.image_tag != null){ + sh """ + mkdir -p $JENKINS_HOME/summary/${pipelineParams.env} + touch -a $JENKINS_HOME/summary/${pipelineParams.env}/summary.txt + sed -i "s/${pipelineParams.image_name}.*//g" $JENKINS_HOME/summary/${pipelineParams.env}/summary.txt + sed -i "/^$/d" $JENKINS_HOME/summary/${pipelineParams.env}/summary.txt + echo "${pipelineParams.image_name} : ${pipelineParams.image_tag}" >> $JENKINS_HOME/summary/${pipelineParams.env}/summary.txt + """ + } +} From 3572b52525d2e9cb3bdb1f317666894ba130a02e Mon Sep 17 00:00:00 2001 From: S M Y Date: Wed, 30 Jan 2019 10:35:14 +0530 Subject: [PATCH 0809/1345] correcting monitoring --- ansible/monitoring.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/monitoring.yml b/ansible/monitoring.yml index 5bf4544b40..f9641507e0 100644 --- a/ansible/monitoring.yml +++ b/ansible/monitoring.yml @@ -55,7 +55,7 @@ tags: - stack-monitor -- hosts: node-exporter +- hosts: all become: yes vars_files: - ['{{inventory_dir}}/secrets.yml', 'secrets/{{env}}.yml'] From 399600a229b67eecb12ff6bd33d42a2ee8ef6c5c Mon Sep 17 00:00:00 2001 From: Manzarul Date: Wed, 30 Jan 2019 10:46:20 +0530 Subject: [PATCH 0810/1345] Issues #SB-00 feat:removing private api onboarding,it will be container to container call --- ansible/roles/kong-api/defaults/main.yml | 35 +----------------------- 1 file changed, 1 insertion(+), 34 deletions(-) diff --git a/ansible/roles/kong-api/defaults/main.yml b/ansible/roles/kong-api/defaults/main.yml index 86e692c8b5..7c58376665 100644 --- a/ansible/roles/kong-api/defaults/main.yml +++ b/ansible/roles/kong-api/defaults/main.yml @@ -3664,37 +3664,4 @@ kong_apis: config.hour: "{{ medium_rate_limit_per_hour }}" config.limit_by: credential - name: request-size-limiting - config.allowed_payload_size: "{{ small_request_size_limit }}" - - name: "updateUserPrivate" - request_path: "{{ user_service_prefix }}/private/v1/update" - upstream_url: "{{ learning_service_url }}/private/user/v1/update" - strip_request_path: true - plugins: - - {name: 'jwt'} - - {name: 'cors'} - - "{{ statsd_pulgin }}" - - {name: 'acl', config.whitelist: 'publicUser'} - - {name: 'rate-limiting', config.policy: "local", config.hour: "{{ large_rate_limit_per_hour }}"} - - {name: 'request-size-limiting', config.allowed_payload_size: "{{ small_request_size_limit }}" } - - name: "getUserByExternalId" - request_path: "{{ user_service_prefix }}/private/v1/read/" - upstream_url: "{{ learning_service_url }}/private/user/v1/read/" - strip_request_path: true - plugins: - - {name: 'jwt'} - - {name: 'cors'} - - "{{ statsd_pulgin }}" - - {name: 'acl', config.whitelist: 'publicUser'} - - {name: 'rate-limiting', config.policy: "local", config.hour: "{{ large_rate_limit_per_hour }}"} - - {name: 'request-size-limiting', config.allowed_payload_size: "{{ small_request_size_limit }}" } - - name: "assignprivateRole" - request_path: "{{ user_service_prefix }}/private/v1/assign/role" - upstream_url: "{{ learning_service_url }}/private/user/v1/assign/role" - strip_request_path: true - plugins: - - {name: 'jwt'} - - {name: 'cors'} - - "{{ statsd_pulgin }}" - - {name: 'acl', config.whitelist: 'publicUser'} - - {name: 'rate-limiting', config.policy: "local", config.hour: "{{ large_rate_limit_per_hour }}"} - - {name: 'request-size-limiting', config.allowed_payload_size: "{{ small_request_size_limit }}" } \ No newline at end of file + config.allowed_payload_size: "{{ small_request_size_limit }}" \ No newline at end of file From 4f9252da292bed37b37b946f94ef1a28c7abc4cf Mon Sep 17 00:00:00 2001 From: G33tha Date: Wed, 30 Jan 2019 11:17:11 +0530 Subject: [PATCH 0811/1345] Update Jenkinsfile --- images/openbadger/Jenkinsfile | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/images/openbadger/Jenkinsfile b/images/openbadger/Jenkinsfile index c322c44c52..54505a2a45 100644 --- a/images/openbadger/Jenkinsfile +++ b/images/openbadger/Jenkinsfile @@ -27,7 +27,7 @@ node('build-slave') { println(ANSI_BOLD + ANSI_GREEN + "Found environment variable named hub_org with value as: " + hub_org + ANSI_NORMAL) } cleanWs() - if (params.tag == "") { + if (params.github_release_tag == "") { checkout scm commit_hash = sh(script: 'git rev-parse --short HEAD', returnStdout: true).trim() branch_name = sh(script: 'git name-rev --name-only HEAD | rev | cut -d "/" -f1| rev', returnStdout: true).trim() @@ -35,9 +35,9 @@ node('build-slave') { println(ANSI_BOLD + ANSI_YELLOW + "Tag not specified, using the latest commit hash: " + commit_hash + ANSI_NORMAL) } else { def scmVars = checkout scm - checkout scm: [$class: 'GitSCM', branches: [[name: "refs/tags/$params.tag"]], userRemoteConfigs: [[url: scmVars.GIT_URL]]] - build_tag = params.tag - println(ANSI_BOLD + ANSI_YELLOW + "Tag specified, building from tag: " + params.tag + ANSI_NORMAL) + checkout scm: [$class: 'GitSCM', branches: [[name: "refs/tags/$params.github_release_tag"]], userRemoteConfigs: [[url: scmVars.GIT_URL]]] + build_tag = params.github_release_tag + println(ANSI_BOLD + ANSI_YELLOW + "Tag specified, building from tag: " + params.github_relase_tag + ANSI_NORMAL) } echo "build_tag: " + build_tag From b9918cdb20d3e1a8b0bfac3d99777d9725c94777 Mon Sep 17 00:00:00 2001 From: G33tha Date: Wed, 30 Jan 2019 11:34:15 +0530 Subject: [PATCH 0812/1345] Update Jenkinsfile --- images/proxy/Jenkinsfile | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/images/proxy/Jenkinsfile b/images/proxy/Jenkinsfile index f5be25eb71..e00c08357f 100644 --- a/images/proxy/Jenkinsfile +++ b/images/proxy/Jenkinsfile @@ -15,7 +15,7 @@ node('build-slave') { println(ANSI_BOLD + ANSI_GREEN + "Found environment variable named hub_org with value as: " + hub_org + ANSI_NORMAL) } cleanWs() - if (params.tag == "") { + if (params.github_release_tag == "") { checkout scm commit_hash = sh(script: 'git rev-parse --short HEAD', returnStdout: true).trim() branch_name = sh(script: 'git name-rev --name-only HEAD | rev | cut -d "/" -f1| rev', returnStdout: true).trim() @@ -23,9 +23,9 @@ node('build-slave') { println(ANSI_BOLD + ANSI_YELLOW + "Tag not specified, using the latest commit hash: " + commit_hash + ANSI_NORMAL) } else { def scmVars = checkout scm - checkout scm: [$class: 'GitSCM', branches: [[name: "refs/tags/$params.tag"]], userRemoteConfigs: [[url: scmVars.GIT_URL]]] - build_tag = params.tag - println(ANSI_BOLD + ANSI_YELLOW + "Tag specified, building from tag: " + params.tag + ANSI_NORMAL) + checkout scm: [$class: 'GitSCM', branches: [[name: "refs/tags/$params.github_release_tag"]], userRemoteConfigs: [[url: scmVars.GIT_URL]]] + build_tag = params.github_release_tag + println(ANSI_BOLD + ANSI_YELLOW + "Tag specified, building from tag: " + params.github_release_tag + ANSI_NORMAL) } echo "build_tag: " + build_tag From 0cf4486f7e0d3f530d56aef3d06a8dfbfa683977 Mon Sep 17 00:00:00 2001 From: Manzarul Date: Wed, 30 Jan 2019 12:02:17 +0530 Subject: [PATCH 0813/1345] Issues #SB-00 fix: adding private api for mobile app testing --- ansible/roles/kong-api/defaults/main.yml | 35 +++++++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git a/ansible/roles/kong-api/defaults/main.yml b/ansible/roles/kong-api/defaults/main.yml index 7c58376665..6285ef35f5 100644 --- a/ansible/roles/kong-api/defaults/main.yml +++ b/ansible/roles/kong-api/defaults/main.yml @@ -3664,4 +3664,37 @@ kong_apis: config.hour: "{{ medium_rate_limit_per_hour }}" config.limit_by: credential - name: request-size-limiting - config.allowed_payload_size: "{{ small_request_size_limit }}" \ No newline at end of file + config.allowed_payload_size: "{{ small_request_size_limit }}" + - name: "updateUserPrivate" + request_path: "{{ user_service_prefix }}/private/v1/update" + upstream_url: "{{ learning_service_url }}/private/user/v1/update" + strip_request_path: true + plugins: + - {name: 'jwt'} + - {name: 'cors'} + - "{{ statsd_pulgin }}" + - {name: 'acl', config.whitelist: 'publicUser'} + - {name: 'rate-limiting', config.policy: "local", config.hour: "{{ large_rate_limit_per_hour }}"} + - {name: 'request-size-limiting', config.allowed_payload_size: "{{ small_request_size_limit }}" } + - name: "getUserByExternalId" + request_path: "{{ user_service_prefix }}/private/v1/read/" + upstream_url: "{{ learning_service_url }}/private/user/v1/read/" + strip_request_path: true + plugins: + - {name: 'jwt'} + - {name: 'cors'} + - "{{ statsd_pulgin }}" + - {name: 'acl', config.whitelist: 'publicUser'} + - {name: 'rate-limiting', config.policy: "local", config.hour: "{{ large_rate_limit_per_hour }}"} + - {name: 'request-size-limiting', config.allowed_payload_size: "{{ small_request_size_limit }}" } + - name: "assignprivateRole" + request_path: "{{ user_service_prefix }}/private/v1/assign/role" + upstream_url: "{{ learning_service_url }}/private/user/v1/assign/role" + strip_request_path: true + plugins: + - {name: 'jwt'} + - {name: 'cors'} + - "{{ statsd_pulgin }}" + - {name: 'acl', config.whitelist: 'publicUser'} + - {name: 'rate-limiting', config.policy: "local", config.hour: "{{ large_rate_limit_per_hour }}"} + - {name: 'request-size-limiting', config.allowed_payload_size: "{{ small_request_size_limit }}" } \ No newline at end of file From cbf86116010dbe9d5d77401f29f451b6edbe9abf Mon Sep 17 00:00:00 2001 From: "kaliraja.ramasamy" Date: Wed, 30 Jan 2019 14:08:45 +0530 Subject: [PATCH 0814/1345] Issue #0000 fix: DO-350 added the summery jenkinsfile --- pipelines/summary/Jenkinsfile | 59 +++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 pipelines/summary/Jenkinsfile diff --git a/pipelines/summary/Jenkinsfile b/pipelines/summary/Jenkinsfile new file mode 100644 index 0000000000..78196c4aad --- /dev/null +++ b/pipelines/summary/Jenkinsfile @@ -0,0 +1,59 @@ +node(){ + cleanWs() + stage('check upstream') + { + pipelineParams = [:] + def upstream = currentBuild.rawBuild.getCause(hudson.model.Cause$UpstreamCause) + triggerCause = upstream?.shortDescription + println triggerCause + } + + stage('Do stuff') + { + if (triggerCause != null) + { + triggerCause = triggerCause.split()[4].replaceAll('"', '') + pipelineParams.put('copy_metadata_from', triggerCause) + println triggerCause + println pipelineParams + def envDir = triggerCause.split('/')[-3].toString().trim() + def module = triggerCause.split('/')[-2].toString().trim() + def jobName = triggerCause.split('/')[-1].toString().trim() + println envDir + " " + module + " " + jobName + + copyArtifacts projectName: pipelineParams.copy_metadata_from, fingerprintArtifacts: true, flatten: true, filter: 'metadata.json' + + if (module.equals("Core")){ + image_name = sh(returnStdout: true, script: 'jq -r .image_name metadata.json').trim() + image_tag = sh(returnStdout: true, script: 'jq -r .image_tag metadata.json').trim() + println image_name + " " + image_tag + } + else + artifact_version = sh(returnStdout: true, script: 'jq -r .artifact_version metadata.json').trim() + + if (pipelineParams.image_tag == null){ + sh """ + mkdir -p $JENKINS_HOME/summary/${envDir} + touch -a $JENKINS_HOME/summary/${envDir}/summary.txt + sed -i "s/${jobName}.*//g" $JENKINS_HOME/summary/${envDir}/summary.txt + sed -i "/^\$/d" $JENKINS_HOME/summary/${envDir}/summary.txt + echo "${jobName} : ${artifact_version}" >> $JENKINS_HOME/summary/${envDir}/summary.txt + """ + } + + if (pipelineParams.image_tag != null){ + sh """ + mkdir -p $JENKINS_HOME/summary/${envDir} + touch -a $JENKINS_HOME/summary/${envDir}/summary.txt + sed -i "s/${image_name}.*//g" $JENKINS_HOME/summary/${envDir}/summary.txt + sed -i "/^\$/d" $JENKINS_HOME/summary/${envDir}/summary.txt + echo "${image_name} : ${image_tag}" >> $JENKINS_HOME/summary/${envDir}/summary.txt + """ + } + + } + else + println "This job can be only triggered from an upstream project" + } +} + From 05dc2d04b91654a0564f1dd7dfa535c3f4e745d5 Mon Sep 17 00:00:00 2001 From: "kaliraja.ramasamy" Date: Wed, 30 Jan 2019 14:08:57 +0530 Subject: [PATCH 0815/1345] Issue #0000 fix: DO-350 added the summery jenkinsfile --- pipelines/summery/Jenkinsfile | 53 ----------------------------------- 1 file changed, 53 deletions(-) delete mode 100644 pipelines/summery/Jenkinsfile diff --git a/pipelines/summery/Jenkinsfile b/pipelines/summery/Jenkinsfile deleted file mode 100644 index 30c8763057..0000000000 --- a/pipelines/summery/Jenkinsfile +++ /dev/null @@ -1,53 +0,0 @@ -node(){ - cleanWS() - - values = [:] - def upstream = currentBuild.rawBuild.getCause(hudson.model.Cause$UpstreamCause) - triggerCause = upstream?.shortDescription - if (triggerCause != null) - triggerCause = triggerCause.split()[4].replaceAll('"', '') - values.put('copy_metadata_from', triggerCause) - - - - envDir = values.copy_metadata_from.split('/')[-3].trim() - module = values.copy_metadata_from.split('/')[-2].trim() - jobName = values.copy_metadata_from.split('/')[-1].trim() - - copyArtifacts projectName: values.copy_metadata_from, fingerprintArtifacts: true, flatten: true, selector: specific(params.build_number), filter: metadata.json - - if (module == "Core"){ - image_name = sh(returnStdout: true, script: 'jq -r .image_name metadata.json').trim() - image_tag = sh(returnStdout: true, script: 'jq -r .image_tag metadata.json').trim() - } - else - - artifact_version = sh(returnStdout: true, script: 'jq -r .artifact_version metadata.json').trim() - - - pipelineParams.put('envDir', env) - pipelineParams.put('module', module) - pipelineParams.put('jobName', jobName) - pipelineParams.put('artifact_version', artifact_version) - pipelineParams.put('image_name', image_name) - pipelineParams.put('image_tag', image_tag) - - if (pipelineParams.image_tag == null){ - sh """ - mkdir -p $JENKINS_HOME/summary/${pipelineParams.env} - touch -a $JENKINS_HOME/summary/${pipelineParams.env}/summary.txt - sed -i "s/${pipelineParams.jobName}.*//g" $JENKINS_HOME/summary/${pipelineParams.env}/summary.txt - sed -i "/^$/d" $JENKINS_HOME/summary/${pipelineParams.env}/summary.txt - echo "${pipelineParams.jobName} : ${pipelineParams.artifact_version}" >> $JENKINS_HOME/summary/${pipelineParams.env}/summary.txt - """ - } - if (pipelineParams.image_tag != null){ - sh """ - mkdir -p $JENKINS_HOME/summary/${pipelineParams.env} - touch -a $JENKINS_HOME/summary/${pipelineParams.env}/summary.txt - sed -i "s/${pipelineParams.image_name}.*//g" $JENKINS_HOME/summary/${pipelineParams.env}/summary.txt - sed -i "/^$/d" $JENKINS_HOME/summary/${pipelineParams.env}/summary.txt - echo "${pipelineParams.image_name} : ${pipelineParams.image_tag}" >> $JENKINS_HOME/summary/${pipelineParams.env}/summary.txt - """ - } -} From 2ded1d0db7a58d4ef35615a1dc9556fea0528145 Mon Sep 17 00:00:00 2001 From: "kaliraja.ramasamy" Date: Wed, 30 Jan 2019 14:28:49 +0530 Subject: [PATCH 0816/1345] Issue #0000 fix: DO-350 added the summery jenkinsfile --- pipelines/summary/Jenkinsfile | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/pipelines/summary/Jenkinsfile b/pipelines/summary/Jenkinsfile index 78196c4aad..8dacf634a9 100644 --- a/pipelines/summary/Jenkinsfile +++ b/pipelines/summary/Jenkinsfile @@ -47,7 +47,7 @@ node(){ touch -a $JENKINS_HOME/summary/${envDir}/summary.txt sed -i "s/${image_name}.*//g" $JENKINS_HOME/summary/${envDir}/summary.txt sed -i "/^\$/d" $JENKINS_HOME/summary/${envDir}/summary.txt - echo "${image_name} : ${image_tag}" >> $JENKINS_HOME/summary/${envDir}/summary.txt + echo "${image_name} : ${image_tag}" >> $JENKINS_HOME/summary/${envDir}/summary.txt """ } @@ -55,5 +55,12 @@ node(){ else println "This job can be only triggered from an upstream project" } + + stage('Archive artifacts'){ + archiveArtifacts artifacts: $JENKINS_HOME/summary/${envDir}/summary.txt, fingerprint: true, onlyIfSuccessful: true + + } + + } From 5b1a31344a106bdc56c1a6e66ad57c4c42bd8138 Mon Sep 17 00:00:00 2001 From: "kaliraja.ramasamy" Date: Wed, 30 Jan 2019 14:31:20 +0530 Subject: [PATCH 0817/1345] Issue #0000 fix: DO-350 added the summery jenkinsfile --- pipelines/summary/Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pipelines/summary/Jenkinsfile b/pipelines/summary/Jenkinsfile index 8dacf634a9..ec7614a808 100644 --- a/pipelines/summary/Jenkinsfile +++ b/pipelines/summary/Jenkinsfile @@ -57,7 +57,7 @@ node(){ } stage('Archive artifacts'){ - archiveArtifacts artifacts: $JENKINS_HOME/summary/${envDir}/summary.txt, fingerprint: true, onlyIfSuccessful: true + archiveArtifacts artifacts: "$JENKINS_HOME/summary/${envDir}/summary.txt", fingerprint: true, onlyIfSuccessful: true } From 3731e74af5122829a0a43d6faf26a80c4ecbe878 Mon Sep 17 00:00:00 2001 From: "kaliraja.ramasamy" Date: Wed, 30 Jan 2019 14:34:47 +0530 Subject: [PATCH 0818/1345] Issue #0000 fix: DO-350 added the summery jenkinsfile --- pipelines/summary/Jenkinsfile | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/pipelines/summary/Jenkinsfile b/pipelines/summary/Jenkinsfile index ec7614a808..56de1b5cff 100644 --- a/pipelines/summary/Jenkinsfile +++ b/pipelines/summary/Jenkinsfile @@ -54,13 +54,13 @@ node(){ } else println "This job can be only triggered from an upstream project" - } - - stage('Archive artifacts'){ + + stage('Archive artifacts'){ archiveArtifacts artifacts: "$JENKINS_HOME/summary/${envDir}/summary.txt", fingerprint: true, onlyIfSuccessful: true } - - -} + } + + +} From 244112fdfcee345005fcaf6621db3d625319e1ea Mon Sep 17 00:00:00 2001 From: "kaliraja.ramasamy" Date: Wed, 30 Jan 2019 14:37:04 +0530 Subject: [PATCH 0819/1345] Issue #0000 fix: DO-350 added the summery jenkinsfile --- pipelines/summary/Jenkinsfile | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/pipelines/summary/Jenkinsfile b/pipelines/summary/Jenkinsfile index 56de1b5cff..ea9132c7ac 100644 --- a/pipelines/summary/Jenkinsfile +++ b/pipelines/summary/Jenkinsfile @@ -51,16 +51,16 @@ node(){ """ } - } - else - println "This job can be only triggered from an upstream project" - - stage('Archive artifacts'){ + stage('Archive artifacts'){ archiveArtifacts artifacts: "$JENKINS_HOME/summary/${envDir}/summary.txt", fingerprint: true, onlyIfSuccessful: true - } + } - } - + } + else + println "This job can be only triggered from an upstream project" + + } + } From fe7bd22fecc670f9a4a14f51aaa9f6ff44c9a003 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Wed, 30 Jan 2019 14:38:13 +0530 Subject: [PATCH 0820/1345] Issue #000 feat: Added folder structure for ansible DO-470 --- ansible_poc/inventory/env/DP/group_vars/all.yml | 1 + ansible_poc/inventory/env/DP/group_vars/env.yml | 0 ansible_poc/inventory/env/DP/hosts | 0 ansible_poc/inventory/env/DP/secrets.yml | 1 + ansible_poc/inventory/env/LP/group_vars/all.yml | 1 + ansible_poc/inventory/env/LP/group_vars/env.yml | 0 ansible_poc/inventory/env/LP/hosts | 0 ansible_poc/inventory/env/LP/secrets.yml | 1 + ansible_poc/inventory/env/common.yml | 0 ansible_poc/inventory/env/core/group_vars/all.yml | 1 + ansible_poc/inventory/env/core/group_vars/env.yml | 0 ansible_poc/inventory/env/core/hosts | 0 ansible_poc/inventory/env/core/secrets.yml | 1 + ansible_poc/inventory/env/secrets.yml | 0 14 files changed, 6 insertions(+) create mode 120000 ansible_poc/inventory/env/DP/group_vars/all.yml create mode 100644 ansible_poc/inventory/env/DP/group_vars/env.yml create mode 100644 ansible_poc/inventory/env/DP/hosts create mode 120000 ansible_poc/inventory/env/DP/secrets.yml create mode 120000 ansible_poc/inventory/env/LP/group_vars/all.yml create mode 100644 ansible_poc/inventory/env/LP/group_vars/env.yml create mode 100644 ansible_poc/inventory/env/LP/hosts create mode 120000 ansible_poc/inventory/env/LP/secrets.yml create mode 100644 ansible_poc/inventory/env/common.yml create mode 120000 ansible_poc/inventory/env/core/group_vars/all.yml create mode 100644 ansible_poc/inventory/env/core/group_vars/env.yml create mode 100644 ansible_poc/inventory/env/core/hosts create mode 120000 ansible_poc/inventory/env/core/secrets.yml create mode 100644 ansible_poc/inventory/env/secrets.yml diff --git a/ansible_poc/inventory/env/DP/group_vars/all.yml b/ansible_poc/inventory/env/DP/group_vars/all.yml new file mode 120000 index 0000000000..1ef58f6bfd --- /dev/null +++ b/ansible_poc/inventory/env/DP/group_vars/all.yml @@ -0,0 +1 @@ +../../common.yml \ No newline at end of file diff --git a/ansible_poc/inventory/env/DP/group_vars/env.yml b/ansible_poc/inventory/env/DP/group_vars/env.yml new file mode 100644 index 0000000000..e69de29bb2 diff --git a/ansible_poc/inventory/env/DP/hosts b/ansible_poc/inventory/env/DP/hosts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/ansible_poc/inventory/env/DP/secrets.yml b/ansible_poc/inventory/env/DP/secrets.yml new file mode 120000 index 0000000000..4871141eb4 --- /dev/null +++ b/ansible_poc/inventory/env/DP/secrets.yml @@ -0,0 +1 @@ +../secrets.yml \ No newline at end of file diff --git a/ansible_poc/inventory/env/LP/group_vars/all.yml b/ansible_poc/inventory/env/LP/group_vars/all.yml new file mode 120000 index 0000000000..1ef58f6bfd --- /dev/null +++ b/ansible_poc/inventory/env/LP/group_vars/all.yml @@ -0,0 +1 @@ +../../common.yml \ No newline at end of file diff --git a/ansible_poc/inventory/env/LP/group_vars/env.yml b/ansible_poc/inventory/env/LP/group_vars/env.yml new file mode 100644 index 0000000000..e69de29bb2 diff --git a/ansible_poc/inventory/env/LP/hosts b/ansible_poc/inventory/env/LP/hosts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/ansible_poc/inventory/env/LP/secrets.yml b/ansible_poc/inventory/env/LP/secrets.yml new file mode 120000 index 0000000000..4871141eb4 --- /dev/null +++ b/ansible_poc/inventory/env/LP/secrets.yml @@ -0,0 +1 @@ +../secrets.yml \ No newline at end of file diff --git a/ansible_poc/inventory/env/common.yml b/ansible_poc/inventory/env/common.yml new file mode 100644 index 0000000000..e69de29bb2 diff --git a/ansible_poc/inventory/env/core/group_vars/all.yml b/ansible_poc/inventory/env/core/group_vars/all.yml new file mode 120000 index 0000000000..1ef58f6bfd --- /dev/null +++ b/ansible_poc/inventory/env/core/group_vars/all.yml @@ -0,0 +1 @@ +../../common.yml \ No newline at end of file diff --git a/ansible_poc/inventory/env/core/group_vars/env.yml b/ansible_poc/inventory/env/core/group_vars/env.yml new file mode 100644 index 0000000000..e69de29bb2 diff --git a/ansible_poc/inventory/env/core/hosts b/ansible_poc/inventory/env/core/hosts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/ansible_poc/inventory/env/core/secrets.yml b/ansible_poc/inventory/env/core/secrets.yml new file mode 120000 index 0000000000..4871141eb4 --- /dev/null +++ b/ansible_poc/inventory/env/core/secrets.yml @@ -0,0 +1 @@ +../secrets.yml \ No newline at end of file diff --git a/ansible_poc/inventory/env/secrets.yml b/ansible_poc/inventory/env/secrets.yml new file mode 100644 index 0000000000..e69de29bb2 From 856b6a6e4f577160df39ee6606930dfc2f6707b3 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Wed, 30 Jan 2019 15:07:48 +0530 Subject: [PATCH 0821/1345] Issue #000 feat: Boostrapping all nodes for deployer user DO-470 --- ansible/bootstrap.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/bootstrap.yml b/ansible/bootstrap.yml index 45286dabf8..85a517a85c 100644 --- a/ansible/bootstrap.yml +++ b/ansible/bootstrap.yml @@ -1,4 +1,4 @@ -- hosts: "{{hosts}}" +- hosts: all become: yes roles: - role: bootstrap_any From e81a24a100ce8670fe758b47b80868b7cc964643 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Wed, 30 Jan 2019 15:11:30 +0530 Subject: [PATCH 0822/1345] Issue #000 feat: Updated ops user selection for bootstrap DO-470 --- ansible/bootstrap.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/ansible/bootstrap.yml b/ansible/bootstrap.yml index 85a517a85c..7be8726a92 100644 --- a/ansible/bootstrap.yml +++ b/ansible/bootstrap.yml @@ -1,5 +1,9 @@ - hosts: all become: yes + gather_facts: no + vars: + ansible_ssh_user: "{{bootstrap_user}}" + ansible_ssh_private_key_file: "{{bootstrap_key_path}}" roles: - role: bootstrap_any tags: From 2142d00c28f76b7b19af0bf7abac7c3f1a31894b Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Wed, 30 Jan 2019 15:12:58 +0530 Subject: [PATCH 0823/1345] Issue # 000: Fix variable name --- ansible/roles/stack-sunbird/tasks/common.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/stack-sunbird/tasks/common.yml b/ansible/roles/stack-sunbird/tasks/common.yml index 710d76a563..616262fe71 100644 --- a/ansible/roles/stack-sunbird/tasks/common.yml +++ b/ansible/roles/stack-sunbird/tasks/common.yml @@ -1,6 +1,6 @@ --- - name: Login to docker - shell: "docker login {{ vault_docker_registery_url }} -u {{ vault_docker_registery_user }} -p {{ vault_docker_registory }}" + shell: "docker login {{ vault_docker_registery_url }} -u {{ vault_docker_registery_user }} -p {{ vault_docker_registery_password }}" no_log: True ignore_errors: yes From 3bc6e19819436da7e2b7e2e3fce864a08cb4204b Mon Sep 17 00:00:00 2001 From: S M Y Date: Wed, 30 Jan 2019 15:15:49 +0530 Subject: [PATCH 0824/1345] Issue #000 vars: bootstrap changes --- ansible/bootstrap.yml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/ansible/bootstrap.yml b/ansible/bootstrap.yml index 45286dabf8..7be8726a92 100644 --- a/ansible/bootstrap.yml +++ b/ansible/bootstrap.yml @@ -1,5 +1,9 @@ -- hosts: "{{hosts}}" +- hosts: all become: yes + gather_facts: no + vars: + ansible_ssh_user: "{{bootstrap_user}}" + ansible_ssh_private_key_file: "{{bootstrap_key_path}}" roles: - role: bootstrap_any tags: From 0b6e14e31b3f4ff169864697d4b1de95d3b574b8 Mon Sep 17 00:00:00 2001 From: msknext Date: Wed, 30 Jan 2019 15:38:05 +0530 Subject: [PATCH 0825/1345] DO-498 Removed properties and restructure --- .../{ => backup}/cassandra-backup/Jenkinsfile | 23 +++----- .../logger-es-backup}/Jenkinsfile | 23 +++----- .../backup/logger-es-restore/Jenkinsfile | 42 +++++++++++++++ pipelines/cassandra-backup/Jenkinsfile.sample | 32 ------------ pipelines/cassandra/Jenkinsfile | 47 ----------------- pipelines/cassandra/Jenkinsfile.sample | 32 ------------ pipelines/cassandra/installDeps.sh | 1 - .../deploy/logger-elasticsearch/Jenkinsfile | 38 ++++++++++++++ pipelines/deploy/logger/Jenkinsfile | 39 ++++++++++++++ pipelines/deploy/monitor/Jenkinsfile | 38 ++++++++++++++ pipelines/log-es-backup/Jenkinsfile.sample | 20 ------- pipelines/log-es-backup/deploy.sh | 6 --- pipelines/log-es-backup/installDeps.sh | 5 -- pipelines/log-es-restore/Jenkinsfile | 52 ------------------- pipelines/log-es-restore/deploy.sh | 6 --- pipelines/log-es-restore/installDeps.sh | 5 -- pipelines/logger-elasticsearch/Jenkinsfile | 47 ----------------- .../logger-elasticsearch/Jenkinsfile.sample | 22 -------- pipelines/logger/Jenkinsfile | 47 ----------------- pipelines/logger/deploy.sh | 7 --- pipelines/logger/installDeps.sh | 5 -- pipelines/monitor/Jenkinsfile | 47 ----------------- pipelines/monitor/Jenkinsfile.sample | 31 ----------- pipelines/monitor/deploy.sh | 6 --- pipelines/monitor/installDeps.sh | 4 -- pipelines/provision-kafka/Jenkinsfile | 47 ----------------- pipelines/provision-secor/Jenkinsfile | 47 ----------------- pipelines/provision/cassandra/Jenkinsfile | 38 ++++++++++++++ pipelines/provision/kafka/Jenkinsfile | 38 ++++++++++++++ .../keycloak}/Jenkinsfile | 23 +++----- .../Jenkinsfile | 2 +- pipelines/provision/secor/Jenkinsfile | 38 ++++++++++++++ 32 files changed, 293 insertions(+), 565 deletions(-) rename pipelines/{ => backup}/cassandra-backup/Jenkinsfile (51%) rename pipelines/{log-es-backup => backup/logger-es-backup}/Jenkinsfile (52%) create mode 100644 pipelines/backup/logger-es-restore/Jenkinsfile delete mode 100644 pipelines/cassandra-backup/Jenkinsfile.sample delete mode 100644 pipelines/cassandra/Jenkinsfile delete mode 100644 pipelines/cassandra/Jenkinsfile.sample delete mode 100644 pipelines/cassandra/installDeps.sh create mode 100644 pipelines/deploy/logger-elasticsearch/Jenkinsfile create mode 100644 pipelines/deploy/logger/Jenkinsfile create mode 100644 pipelines/deploy/monitor/Jenkinsfile delete mode 100644 pipelines/log-es-backup/Jenkinsfile.sample delete mode 100755 pipelines/log-es-backup/deploy.sh delete mode 100755 pipelines/log-es-backup/installDeps.sh delete mode 100644 pipelines/log-es-restore/Jenkinsfile delete mode 100755 pipelines/log-es-restore/deploy.sh delete mode 100755 pipelines/log-es-restore/installDeps.sh delete mode 100644 pipelines/logger-elasticsearch/Jenkinsfile delete mode 100644 pipelines/logger-elasticsearch/Jenkinsfile.sample delete mode 100644 pipelines/logger/Jenkinsfile delete mode 100755 pipelines/logger/deploy.sh delete mode 100755 pipelines/logger/installDeps.sh delete mode 100644 pipelines/monitor/Jenkinsfile delete mode 100644 pipelines/monitor/Jenkinsfile.sample delete mode 100755 pipelines/monitor/deploy.sh delete mode 100755 pipelines/monitor/installDeps.sh delete mode 100644 pipelines/provision-kafka/Jenkinsfile delete mode 100644 pipelines/provision-secor/Jenkinsfile create mode 100644 pipelines/provision/cassandra/Jenkinsfile create mode 100644 pipelines/provision/kafka/Jenkinsfile rename pipelines/{keycloak-provison => provision/keycloak}/Jenkinsfile (52%) rename pipelines/provision/{registry-provision => registry}/Jenkinsfile (100%) create mode 100644 pipelines/provision/secor/Jenkinsfile diff --git a/pipelines/cassandra-backup/Jenkinsfile b/pipelines/backup/cassandra-backup/Jenkinsfile similarity index 51% rename from pipelines/cassandra-backup/Jenkinsfile rename to pipelines/backup/cassandra-backup/Jenkinsfile index 00c7b398f2..80e6e53a83 100644 --- a/pipelines/cassandra-backup/Jenkinsfile +++ b/pipelines/backup/cassandra-backup/Jenkinsfile @@ -7,21 +7,6 @@ node() { String ANSI_RED = "\u001B[31m" String ANSI_YELLOW = "\u001B[33m" - if (params.size() == 0){ - envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() - properties([[$class: 'RebuildSettings', autoRebuild: false, rebuildDisabled: false], parameters([ - choice(choices: ['GitHub', 'Local'], description: 'Choose the ansible inventory source', name: 'inventory_source'), - string(defaultValue: "${WORKSPACE}/private/ansible/inventories/${envDir}", description: 'Please sepecify the full path to the inventory directory. The default value is $WORKSPACE/private/ansible/env. Here env is the previous directory of the job.', name: 'inventory_path', trim: false)])]) - ansiColor('xterm') { - println (ANSI_BOLD + ANSI_GREEN + '''\ - First run of the job. Parameters created. Stopping the current build. - Please trigger new build and provide parameters if required. - '''.stripIndent().replace("\n"," ") + ANSI_NORMAL) - } - currentBuild.result = 'SUCCESS' - return "first run" - } - triggers { cron('H 0 * * *') } @@ -35,9 +20,15 @@ node() { stage('deploy'){ values = [:] currentWs = sh(returnStdout: true, script: 'pwd').trim() - values.put('currentWs', currentWs) + envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-3].trim() + module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() + jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() ansiblePlaybook = "${currentWs}/ansible/cassandra-backup.yml" ansibleExtraArgs = "--vault-password-file /run/secrets/vault-pass" + values.put('currentWs', currentWs) + values.put('env', envDir) + values.put('module', module) + values.put('jobName', jobName) values.put('ansiblePlaybook', ansiblePlaybook) values.put('ansibleExtraArgs', ansibleExtraArgs) println values diff --git a/pipelines/log-es-backup/Jenkinsfile b/pipelines/backup/logger-es-backup/Jenkinsfile similarity index 52% rename from pipelines/log-es-backup/Jenkinsfile rename to pipelines/backup/logger-es-backup/Jenkinsfile index 1958eeb317..ec24ce7e07 100644 --- a/pipelines/log-es-backup/Jenkinsfile +++ b/pipelines/backup/logger-es-backup/Jenkinsfile @@ -7,21 +7,6 @@ node() { String ANSI_RED = "\u001B[31m" String ANSI_YELLOW = "\u001B[33m" - if (params.size() == 0){ - envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() - properties([[$class: 'RebuildSettings', autoRebuild: false, rebuildDisabled: false], parameters([ - choice(choices: ['GitHub', 'Local'], description: 'Choose the ansible inventory source', name: 'inventory_source'), - string(defaultValue: "${WORKSPACE}/private/ansible/inventories/${envDir}", description: 'Please sepecify the full path to the inventory directory. The default value is $WORKSPACE/private/ansible/env. Here env is the previous directory of the job.', name: 'inventory_path', trim: false)])]) - ansiColor('xterm') { - println (ANSI_BOLD + ANSI_GREEN + '''\ - First run of the job. Parameters created. Stopping the current build. - Please trigger new build and provide parameters if required. - '''.stripIndent().replace("\n"," ") + ANSI_NORMAL) - } - currentBuild.result = 'SUCCESS' - return "first run" - } - triggers { cron('H 0 * * *') } @@ -35,9 +20,15 @@ node() { stage('deploy'){ values = [:] currentWs = sh(returnStdout: true, script: 'pwd').trim() - values.put('currentWs', currentWs) + envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-3].trim() + module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() + jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() ansiblePlaybook = "${currentWs}/ansible/es.yml" ansibleExtraArgs = "--tags \"log_es_backup\" -v --vault-password-file /run/secrets/vault-pass" + values.put('currentWs', currentWs) + values.put('env', envDir) + values.put('module', module) + values.put('jobName', jobName) values.put('ansiblePlaybook', ansiblePlaybook) values.put('ansibleExtraArgs', ansibleExtraArgs) println values diff --git a/pipelines/backup/logger-es-restore/Jenkinsfile b/pipelines/backup/logger-es-restore/Jenkinsfile new file mode 100644 index 0000000000..3bc2a53914 --- /dev/null +++ b/pipelines/backup/logger-es-restore/Jenkinsfile @@ -0,0 +1,42 @@ +@Library('deploy-conf') _ +node() { + try { + String ANSI_GREEN = "\u001B[32m" + String ANSI_NORMAL = "\u001B[0m" + String ANSI_BOLD = "\u001B[1m" + String ANSI_RED = "\u001B[31m" + String ANSI_YELLOW = "\u001B[33m" + + triggers { + cron('H 0 * * *') + } + + stage('checkout public repo') { + cleanWs() + checkout scm + } + + ansiColor('xterm') { + stage('deploy'){ + values = [:] + currentWs = sh(returnStdout: true, script: 'pwd').trim() + envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-3].trim() + module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() + jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() + ansiblePlaybook = "${currentWs}/ansible/es.yml" + ansibleExtraArgs = "--tags \"log_es_restore\" --extra-vars \"snapshot_number=${snapshot_number}\" -v --vault-password-file /run/secrets/vault-pass" + values.put('currentWs', currentWs) + values.put('env', envDir) + values.put('module', module) + values.put('jobName', jobName) + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + println values +// ansible_playbook_run(values) + } + } + } + catch (err) { + throw err + } +} diff --git a/pipelines/cassandra-backup/Jenkinsfile.sample b/pipelines/cassandra-backup/Jenkinsfile.sample deleted file mode 100644 index fee2318964..0000000000 --- a/pipelines/cassandra-backup/Jenkinsfile.sample +++ /dev/null @@ -1,32 +0,0 @@ -#!groovy - -node('general-staging') { - - currentBuild.result = "SUCCESS" - - try { - - stage('Checkout'){ - - checkout scm - } - - - - stage('Pre-Build'){ - sh('chmod a+x ansible/installDeps.sh') - sh('./ansible/installDeps.sh') - } - - stage('Build'){ - - sh('ansible-playbook -i ansible/inventory/staging ansible/cassandra-backup.yml --vault-password-file /run/secrets/vault-pass ') - } - - } - catch (err) { - currentBuild.result = "FAILURE" - throw err - } - -} \ No newline at end of file diff --git a/pipelines/cassandra/Jenkinsfile b/pipelines/cassandra/Jenkinsfile deleted file mode 100644 index fca929c041..0000000000 --- a/pipelines/cassandra/Jenkinsfile +++ /dev/null @@ -1,47 +0,0 @@ -@Library('deploy-conf') _ -node() { - try { - String ANSI_GREEN = "\u001B[32m" - String ANSI_NORMAL = "\u001B[0m" - String ANSI_BOLD = "\u001B[1m" - String ANSI_RED = "\u001B[31m" - String ANSI_YELLOW = "\u001B[33m" - - if (params.size() == 0){ - envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() - properties([[$class: 'RebuildSettings', autoRebuild: false, rebuildDisabled: false], parameters([ - choice(choices: ['GitHub', 'Local'], description: 'Choose the ansible inventory source', name: 'inventory_source'), - string(defaultValue: "${WORKSPACE}/private/ansible/inventories/${envDir}", description: 'Please sepecify the full path to the inventory directory. The default value is $WORKSPACE/private/ansible/env. Here env is the previous directory of the job.', name: 'inventory_path', trim: false)])]) - ansiColor('xterm') { - println (ANSI_BOLD + ANSI_GREEN + '''\ - First run of the job. Parameters created. Stopping the current build. - Please trigger new build and provide parameters if required. - '''.stripIndent().replace("\n"," ") + ANSI_NORMAL) - } - currentBuild.result = 'SUCCESS' - return "first run" - } - - stage('checkout public repo') { - cleanWs() - checkout scm - } - - ansiColor('xterm') { - stage('deploy'){ - values = [:] - currentWs = sh(returnStdout: true, script: 'pwd').trim() - values.put('currentWs', currentWs) - ansiblePlaybook = "${currentWs}/ansible/provision.yml" - ansibleExtraArgs = "--tags cassandra --vault-password-file /run/secrets/vault-pass -v" - values.put('ansiblePlaybook', ansiblePlaybook) - values.put('ansibleExtraArgs', ansibleExtraArgs) - println values -// ansible_playbook_run(values) - } - } - } - catch (err) { - throw err - } -} diff --git a/pipelines/cassandra/Jenkinsfile.sample b/pipelines/cassandra/Jenkinsfile.sample deleted file mode 100644 index 72543ff348..0000000000 --- a/pipelines/cassandra/Jenkinsfile.sample +++ /dev/null @@ -1,32 +0,0 @@ -#!groovy - -node('general-staging') { - - currentBuild.result = "SUCCESS" - - try { - - stage('Checkout'){ - - checkout scm - } - - - - stage('Pre-Build'){ - sh('chmod a+x ansible/installDeps.sh') - sh('./ansible/installDeps.sh') - } - - stage('Build'){ - - sh('ansible-playbook -i ansible/inventory/staging ansible/provision.yml --tags cassandra --vault-password-file /run/secrets/vault-pass ') - } - - } - catch (err) { - currentBuild.result = "FAILURE" - throw err - } - -} \ No newline at end of file diff --git a/pipelines/cassandra/installDeps.sh b/pipelines/cassandra/installDeps.sh deleted file mode 100644 index 49a927e6e5..0000000000 --- a/pipelines/cassandra/installDeps.sh +++ /dev/null @@ -1 +0,0 @@ -apk -v add ansible=2.3.0.0-r1 diff --git a/pipelines/deploy/logger-elasticsearch/Jenkinsfile b/pipelines/deploy/logger-elasticsearch/Jenkinsfile new file mode 100644 index 0000000000..b6131cbe78 --- /dev/null +++ b/pipelines/deploy/logger-elasticsearch/Jenkinsfile @@ -0,0 +1,38 @@ +@Library('deploy-conf') _ +node() { + try { + String ANSI_GREEN = "\u001B[32m" + String ANSI_NORMAL = "\u001B[0m" + String ANSI_BOLD = "\u001B[1m" + String ANSI_RED = "\u001B[31m" + String ANSI_YELLOW = "\u001B[33m" + + stage('checkout public repo') { + cleanWs() + checkout scm + } + + ansiColor('xterm') { + stage('deploy'){ + values = [:] + envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-3].trim() + module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() + jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() + values.put('currentWs', currentWs) + ansiblePlaybook = "${currentWs}/ansible/logging.yml" + ansibleExtraArgs = "--tags log-es --vault-password-file /run/secrets/vault-pass -v" + values.put('currentWs', currentWs) + values.put('env', envDir) + values.put('module', module) + values.put('jobName', jobName) + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + println values +// ansible_playbook_run(values) + } + } + } + catch (err) { + throw err + } +} diff --git a/pipelines/deploy/logger/Jenkinsfile b/pipelines/deploy/logger/Jenkinsfile new file mode 100644 index 0000000000..3c8bf1f1fb --- /dev/null +++ b/pipelines/deploy/logger/Jenkinsfile @@ -0,0 +1,39 @@ +@Library('deploy-conf') _ +node() { + try { + String ANSI_GREEN = "\u001B[32m" + String ANSI_NORMAL = "\u001B[0m" + String ANSI_BOLD = "\u001B[1m" + String ANSI_RED = "\u001B[31m" + String ANSI_YELLOW = "\u001B[33m" + + stage('checkout public repo') { + cleanWs() + checkout scm + } + + ansiColor('xterm') { + stage('deploy'){ + values = [:] + currentWs = sh(returnStdout: true, script: 'pwd').trim() + currentWs = sh(returnStdout: true, script: 'pwd').trim() + envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-3].trim() + module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() + jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() + ansiblePlaybook = "${currentWs}/ansible/logging.yml" + ansibleExtraArgs = "--vault-password-file /run/secrets/vault-pass -v" + values.put('currentWs', currentWs) + values.put('env', envDir) + values.put('module', module) + values.put('jobName', jobName) + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + println values +// ansible_playbook_run(values) + } + } + } + catch (err) { + throw err + } +} diff --git a/pipelines/deploy/monitor/Jenkinsfile b/pipelines/deploy/monitor/Jenkinsfile new file mode 100644 index 0000000000..0bded197b1 --- /dev/null +++ b/pipelines/deploy/monitor/Jenkinsfile @@ -0,0 +1,38 @@ +@Library('deploy-conf') _ +node() { + try { + String ANSI_GREEN = "\u001B[32m" + String ANSI_NORMAL = "\u001B[0m" + String ANSI_BOLD = "\u001B[1m" + String ANSI_RED = "\u001B[31m" + String ANSI_YELLOW = "\u001B[33m" + + stage('checkout public repo') { + cleanWs() + checkout scm + } + + ansiColor('xterm') { + stage('deploy'){ + values = [:] + currentWs = sh(returnStdout: true, script: 'pwd').trim() + envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-3].trim() + module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() + jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() + ansiblePlaybook = "${currentWs}/ansible/monitoring.yml" + ansibleExtraArgs = "--vault-password-file /run/secrets/vault-pass -v" + values.put('currentWs', currentWs) + values.put('env', envDir) + values.put('module', module) + values.put('jobName', jobName) + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + println values +// ansible_playbook_run(values) + } + } + } + catch (err) { + throw err + } +} diff --git a/pipelines/log-es-backup/Jenkinsfile.sample b/pipelines/log-es-backup/Jenkinsfile.sample deleted file mode 100644 index b7763f2bd9..0000000000 --- a/pipelines/log-es-backup/Jenkinsfile.sample +++ /dev/null @@ -1,20 +0,0 @@ -pipeline { - agent { - label 'general-staging' - } - triggers { - cron('H 0 * * *') - } - stages { - stage('Pre-Build'){ - steps { - sh('./pipelines/log-es-backup/installDeps.sh') - } - } - stage('Deploy') { - steps { - sh 'ENV=staging ./pipelines/log-es-backup/deploy.sh' - } - } - } -} diff --git a/pipelines/log-es-backup/deploy.sh b/pipelines/log-es-backup/deploy.sh deleted file mode 100755 index 868dccaca2..0000000000 --- a/pipelines/log-es-backup/deploy.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/sh -# Build script -# set -o errexit -set -e -ansible-playbook --version -ANSIBLE_FORCE_COLOR=true ansible-playbook -i ansible/inventory/$ENV ansible/es.yml --tags "log_es_backup" -v --vault-password-file /run/secrets/vault-pass diff --git a/pipelines/log-es-backup/installDeps.sh b/pipelines/log-es-backup/installDeps.sh deleted file mode 100755 index acc98d5f3a..0000000000 --- a/pipelines/log-es-backup/installDeps.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/sh -# Build script -# set -o errexit -apk -v --update --no-cache add jq -apk -v add ansible=2.3.0.0-r1 diff --git a/pipelines/log-es-restore/Jenkinsfile b/pipelines/log-es-restore/Jenkinsfile deleted file mode 100644 index aa9113f30e..0000000000 --- a/pipelines/log-es-restore/Jenkinsfile +++ /dev/null @@ -1,52 +0,0 @@ -@Library('deploy-conf') _ -node() { - try { - String ANSI_GREEN = "\u001B[32m" - String ANSI_NORMAL = "\u001B[0m" - String ANSI_BOLD = "\u001B[1m" - String ANSI_RED = "\u001B[31m" - String ANSI_YELLOW = "\u001B[33m" - - if (params.size() == 0){ - envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() - properties([[$class: 'RebuildSettings', autoRebuild: false, rebuildDisabled: false], parameters([ - choice(choices: ['GitHub', 'Local'], description: 'Choose the ansible inventory source', name: 'inventory_source'), - string(defaultValue: "${WORKSPACE}/private/ansible/inventories/${envDir}", description: 'Please sepecify the full path to the inventory directory. The default value is $WORKSPACE/private/ansible/env. Here env is the previous directory of the job.', name: 'inventory_path', trim: false), - string(defaultValue: '', description: 'Specify the snapshot number', name: 'snapshot_number')])]) - ansiColor('xterm') { - println (ANSI_BOLD + ANSI_GREEN + '''\ - First run of the job. Parameters created. Stopping the current build. - Please trigger new build and provide parameters if required. - '''.stripIndent().replace("\n"," ") + ANSI_NORMAL) - } - currentBuild.result = 'SUCCESS' - return "first run" - } - - triggers { - cron('H 0 * * *') - } - - stage('checkout public repo') { - cleanWs() - checkout scm - } - - ansiColor('xterm') { - stage('deploy'){ - values = [:] - currentWs = sh(returnStdout: true, script: 'pwd').trim() - values.put('currentWs', currentWs) - ansiblePlaybook = "${currentWs}/ansible/es.yml" - ansibleExtraArgs = "--tags \"log_es_restore\" --extra-vars \"snapshot_number=${snapshot_number}\" -v --vault-password-file /run/secrets/vault-pass" - values.put('ansiblePlaybook', ansiblePlaybook) - values.put('ansibleExtraArgs', ansibleExtraArgs) - println values -// ansible_playbook_run(values) - } - } - } - catch (err) { - throw err - } -} diff --git a/pipelines/log-es-restore/deploy.sh b/pipelines/log-es-restore/deploy.sh deleted file mode 100755 index 2f4de577eb..0000000000 --- a/pipelines/log-es-restore/deploy.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/sh -# Build script -# set -o errexit - -ansible-playbook --version -ANSIBLE_FORCE_COLOR=true ansible-playbook -i ansible/inventory/$ENV ansible/es.yml --tags "log_es_restore" --extra-vars "snapshot_number=$SNAPSHOT_NUMBER" -v --vault-password-file /run/secrets/vault-pass diff --git a/pipelines/log-es-restore/installDeps.sh b/pipelines/log-es-restore/installDeps.sh deleted file mode 100755 index acc98d5f3a..0000000000 --- a/pipelines/log-es-restore/installDeps.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/sh -# Build script -# set -o errexit -apk -v --update --no-cache add jq -apk -v add ansible=2.3.0.0-r1 diff --git a/pipelines/logger-elasticsearch/Jenkinsfile b/pipelines/logger-elasticsearch/Jenkinsfile deleted file mode 100644 index 6d966c0527..0000000000 --- a/pipelines/logger-elasticsearch/Jenkinsfile +++ /dev/null @@ -1,47 +0,0 @@ -@Library('deploy-conf') _ -node() { - try { - String ANSI_GREEN = "\u001B[32m" - String ANSI_NORMAL = "\u001B[0m" - String ANSI_BOLD = "\u001B[1m" - String ANSI_RED = "\u001B[31m" - String ANSI_YELLOW = "\u001B[33m" - - if (params.size() == 0){ - envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() - properties([[$class: 'RebuildSettings', autoRebuild: false, rebuildDisabled: false], parameters([ - choice(choices: ['GitHub', 'Local'], description: 'Choose the ansible inventory source', name: 'inventory_source'), - string(defaultValue: "${WORKSPACE}/private/ansible/inventories/${envDir}", description: 'Please sepecify the full path to the inventory directory. The default value is $WORKSPACE/private/ansible/env. Here env is the previous directory of the job.', name: 'inventory_path', trim: false)])]) - ansiColor('xterm') { - println (ANSI_BOLD + ANSI_GREEN + '''\ - First run of the job. Parameters created. Stopping the current build. - Please trigger new build and provide parameters if required. - '''.stripIndent().replace("\n"," ") + ANSI_NORMAL) - } - currentBuild.result = 'SUCCESS' - return "first run" - } - - stage('checkout public repo') { - cleanWs() - checkout scm - } - - ansiColor('xterm') { - stage('deploy'){ - values = [:] - currentWs = sh(returnStdout: true, script: 'pwd').trim() - values.put('currentWs', currentWs) - ansiblePlaybook = "${currentWs}/ansible/logging.yml" - ansibleExtraArgs = "--tags log-es --vault-password-file /run/secrets/vault-pass -v" - values.put('ansiblePlaybook', ansiblePlaybook) - values.put('ansibleExtraArgs', ansibleExtraArgs) - println values -// ansible_playbook_run(values) - } - } - } - catch (err) { - throw err - } -} diff --git a/pipelines/logger-elasticsearch/Jenkinsfile.sample b/pipelines/logger-elasticsearch/Jenkinsfile.sample deleted file mode 100644 index 474ae6faae..0000000000 --- a/pipelines/logger-elasticsearch/Jenkinsfile.sample +++ /dev/null @@ -1,22 +0,0 @@ -pipeline { - agent { - label 'general-staging' - } - stages { - stage('Pre-Build'){ - steps { - sh('chmod a+x ansible/installDeps.sh') - sh('./ansible/installDeps.sh') - } - } - - stage('Deploy') { - steps { - sh ''' - cd ansible - ansible-playbook -i inventory/staging provision.yml --tags log-es --vault-password-file /run/secrets/vault-pass - ''' - } - } - } -} \ No newline at end of file diff --git a/pipelines/logger/Jenkinsfile b/pipelines/logger/Jenkinsfile deleted file mode 100644 index 597d673cae..0000000000 --- a/pipelines/logger/Jenkinsfile +++ /dev/null @@ -1,47 +0,0 @@ -@Library('deploy-conf') _ -node() { - try { - String ANSI_GREEN = "\u001B[32m" - String ANSI_NORMAL = "\u001B[0m" - String ANSI_BOLD = "\u001B[1m" - String ANSI_RED = "\u001B[31m" - String ANSI_YELLOW = "\u001B[33m" - - if (params.size() == 0){ - envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() - properties([[$class: 'RebuildSettings', autoRebuild: false, rebuildDisabled: false], parameters([ - choice(choices: ['GitHub', 'Local'], description: 'Choose the ansible inventory source', name: 'inventory_source'), - string(defaultValue: "${WORKSPACE}/private/ansible/inventories/${envDir}", description: 'Please sepecify the full path to the inventory directory. The default value is $WORKSPACE/private/ansible/env. Here env is the previous directory of the job.', name: 'inventory_path', trim: false)])]) - ansiColor('xterm') { - println (ANSI_BOLD + ANSI_GREEN + '''\ - First run of the job. Parameters created. Stopping the current build. - Please trigger new build and provide parameters if required. - '''.stripIndent().replace("\n"," ") + ANSI_NORMAL) - } - currentBuild.result = 'SUCCESS' - return "first run" - } - - stage('checkout public repo') { - cleanWs() - checkout scm - } - - ansiColor('xterm') { - stage('deploy'){ - values = [:] - currentWs = sh(returnStdout: true, script: 'pwd').trim() - values.put('currentWs', currentWs) - ansiblePlaybook = "${currentWs}/ansible/logging.yml" - ansibleExtraArgs = "--vault-password-file /run/secrets/vault-pass -v" - values.put('ansiblePlaybook', ansiblePlaybook) - values.put('ansibleExtraArgs', ansibleExtraArgs) - println values -// ansible_playbook_run(values) - } - } - } - catch (err) { - throw err - } -} diff --git a/pipelines/logger/deploy.sh b/pipelines/logger/deploy.sh deleted file mode 100755 index 48df1b43a5..0000000000 --- a/pipelines/logger/deploy.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/sh -# Build script -# set -o errexit - -ansible-playbook --version - -ansible-playbook -i ansible/inventory/${ENV} ansible/logging.yml --vault-password-file /run/secrets/vault-pass diff --git a/pipelines/logger/installDeps.sh b/pipelines/logger/installDeps.sh deleted file mode 100755 index acc98d5f3a..0000000000 --- a/pipelines/logger/installDeps.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/sh -# Build script -# set -o errexit -apk -v --update --no-cache add jq -apk -v add ansible=2.3.0.0-r1 diff --git a/pipelines/monitor/Jenkinsfile b/pipelines/monitor/Jenkinsfile deleted file mode 100644 index 1b542b500c..0000000000 --- a/pipelines/monitor/Jenkinsfile +++ /dev/null @@ -1,47 +0,0 @@ -@Library('deploy-conf') _ -node() { - try { - String ANSI_GREEN = "\u001B[32m" - String ANSI_NORMAL = "\u001B[0m" - String ANSI_BOLD = "\u001B[1m" - String ANSI_RED = "\u001B[31m" - String ANSI_YELLOW = "\u001B[33m" - - if (params.size() == 0){ - envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() - properties([[$class: 'RebuildSettings', autoRebuild: false, rebuildDisabled: false], parameters([ - choice(choices: ['GitHub', 'Local'], description: 'Choose the ansible inventory source', name: 'inventory_source'), - string(defaultValue: "${WORKSPACE}/private/ansible/inventories/${envDir}", description: 'Please sepecify the full path to the inventory directory. The default value is $WORKSPACE/private/ansible/env. Here env is the previous directory of the job.', name: 'inventory_path', trim: false)])]) - ansiColor('xterm') { - println (ANSI_BOLD + ANSI_GREEN + '''\ - First run of the job. Parameters created. Stopping the current build. - Please trigger new build and provide parameters if required. - '''.stripIndent().replace("\n"," ") + ANSI_NORMAL) - } - currentBuild.result = 'SUCCESS' - return "first run" - } - - stage('checkout public repo') { - cleanWs() - checkout scm - } - - ansiColor('xterm') { - stage('deploy'){ - values = [:] - currentWs = sh(returnStdout: true, script: 'pwd').trim() - values.put('currentWs', currentWs) - ansiblePlaybook = "${currentWs}/ansible/monitoring.yml" - ansibleExtraArgs = "--vault-password-file /run/secrets/vault-pass -v" - values.put('ansiblePlaybook', ansiblePlaybook) - values.put('ansibleExtraArgs', ansibleExtraArgs) - println values -// ansible_playbook_run(values) - } - } - } - catch (err) { - throw err - } -} diff --git a/pipelines/monitor/Jenkinsfile.sample b/pipelines/monitor/Jenkinsfile.sample deleted file mode 100644 index 93c80c93ab..0000000000 --- a/pipelines/monitor/Jenkinsfile.sample +++ /dev/null @@ -1,31 +0,0 @@ -#!groovy - -node('general-staging') { - - currentBuild.result = "SUCCESS" - - try { - - stage('Checkout'){ - - checkout scm - } - - stage('Pre-Build'){ - - sh('./pipelines/monitor/installDeps.sh') - - } - - stage('Deploy'){ - - sh 'TARGET_ENV=staging ./pipelines/monitor/deploy.sh' - - } - } - catch (err) { - currentBuild.result = "FAILURE" - throw err - } - -} diff --git a/pipelines/monitor/deploy.sh b/pipelines/monitor/deploy.sh deleted file mode 100755 index a6655e4763..0000000000 --- a/pipelines/monitor/deploy.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/sh -# Build script -# set -o errexit - -ansible-playbook --version -ansible-playbook -i ansible/inventory/${TARGET_ENV} ansible/monitoring.yml -v --vault-password-file /run/secrets/vault-pass diff --git a/pipelines/monitor/installDeps.sh b/pipelines/monitor/installDeps.sh deleted file mode 100755 index ccc9677a01..0000000000 --- a/pipelines/monitor/installDeps.sh +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/sh -# Build script -# set -o errexit -apk -v --update --no-cache add ansible=2.3.0.0-r1 diff --git a/pipelines/provision-kafka/Jenkinsfile b/pipelines/provision-kafka/Jenkinsfile deleted file mode 100644 index 358227a090..0000000000 --- a/pipelines/provision-kafka/Jenkinsfile +++ /dev/null @@ -1,47 +0,0 @@ -@Library('deploy-conf') _ -node() { - try { - String ANSI_GREEN = "\u001B[32m" - String ANSI_NORMAL = "\u001B[0m" - String ANSI_BOLD = "\u001B[1m" - String ANSI_RED = "\u001B[31m" - String ANSI_YELLOW = "\u001B[33m" - - if (params.size() == 0){ - envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() - properties([[$class: 'RebuildSettings', autoRebuild: false, rebuildDisabled: false], parameters([ - choice(choices: ['GitHub', 'Local'], description: 'Choose the ansible inventory source', name: 'inventory_source'), - string(defaultValue: "${WORKSPACE}/private/ansible/inventories/${envDir}", description: 'Please sepecify the full path to the inventory directory. The default value is $WORKSPACE/private/ansible/env. Here env is the previous directory of the job.', name: 'inventory_path', trim: false)])]) - ansiColor('xterm') { - println (ANSI_BOLD + ANSI_GREEN + '''\ - First run of the job. Parameters created. Stopping the current build. - Please trigger new build and provide parameters if required. - '''.stripIndent().replace("\n"," ") + ANSI_NORMAL) - } - currentBuild.result = 'SUCCESS' - return "first run" - } - - stage('checkout public repo') { - cleanWs() - checkout scm - } - - ansiColor('xterm') { - stage('deploy'){ - values = [:] - currentWs = sh(returnStdout: true, script: 'pwd').trim() - values.put('currentWs', currentWs) - ansiblePlaybook = "${currentWs}/ansible/provision-kafka.yml" - ansibleExtraArgs = "--vault-password-file /run/secrets/vault-pass -v" - values.put('ansiblePlaybook', ansiblePlaybook) - values.put('ansibleExtraArgs', ansibleExtraArgs) - println values -// ansible_playbook_run(values) - } - } - } - catch (err) { - throw err - } -} diff --git a/pipelines/provision-secor/Jenkinsfile b/pipelines/provision-secor/Jenkinsfile deleted file mode 100644 index d69e319bf5..0000000000 --- a/pipelines/provision-secor/Jenkinsfile +++ /dev/null @@ -1,47 +0,0 @@ -@Library('deploy-conf') _ -node() { - try { - String ANSI_GREEN = "\u001B[32m" - String ANSI_NORMAL = "\u001B[0m" - String ANSI_BOLD = "\u001B[1m" - String ANSI_RED = "\u001B[31m" - String ANSI_YELLOW = "\u001B[33m" - - if (params.size() == 0){ - envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() - properties([[$class: 'RebuildSettings', autoRebuild: false, rebuildDisabled: false], parameters([ - choice(choices: ['GitHub', 'Local'], description: 'Choose the ansible inventory source', name: 'inventory_source'), - string(defaultValue: "${WORKSPACE}/private/ansible/inventories/${envDir}", description: 'Please sepecify the full path to the inventory directory. The default value is $WORKSPACE/private/ansible/env. Here env is the previous directory of the job.', name: 'inventory_path', trim: false)])]) - ansiColor('xterm') { - println (ANSI_BOLD + ANSI_GREEN + '''\ - First run of the job. Parameters created. Stopping the current build. - Please trigger new build and provide parameters if required. - '''.stripIndent().replace("\n"," ") + ANSI_NORMAL) - } - currentBuild.result = 'SUCCESS' - return "first run" - } - - stage('checkout public repo') { - cleanWs() - checkout scm - } - - ansiColor('xterm') { - stage('deploy'){ - values = [:] - currentWs = sh(returnStdout: true, script: 'pwd').trim() - values.put('currentWs', currentWs) - ansiblePlaybook = "${currentWs}/ansible/provision-secor.yml" - ansibleExtraArgs = "--vault-password-file /run/secrets/vault-pass" - values.put('ansiblePlaybook', ansiblePlaybook) - values.put('ansibleExtraArgs', ansibleExtraArgs) - println values -// ansible_playbook_run(values) - } - } - } - catch (err) { - throw err - } -} diff --git a/pipelines/provision/cassandra/Jenkinsfile b/pipelines/provision/cassandra/Jenkinsfile new file mode 100644 index 0000000000..fca2309813 --- /dev/null +++ b/pipelines/provision/cassandra/Jenkinsfile @@ -0,0 +1,38 @@ +@Library('deploy-conf') _ +node() { + try { + String ANSI_GREEN = "\u001B[32m" + String ANSI_NORMAL = "\u001B[0m" + String ANSI_BOLD = "\u001B[1m" + String ANSI_RED = "\u001B[31m" + String ANSI_YELLOW = "\u001B[33m" + + stage('checkout public repo') { + cleanWs() + checkout scm + } + + ansiColor('xterm') { + stage('deploy'){ + values = [:] + currentWs = sh(returnStdout: true, script: 'pwd').trim() + envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-3].trim() + module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() + jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() + ansiblePlaybook = "${currentWs}/ansible/provision.yml" + ansibleExtraArgs = "--tags cassandra --vault-password-file /run/secrets/vault-pass -v" + values.put('currentWs', currentWs) + values.put('env', envDir) + values.put('module', module) + values.put('jobName', jobName) + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + println values +// ansible_playbook_run(values) + } + } + } + catch (err) { + throw err + } +} diff --git a/pipelines/provision/kafka/Jenkinsfile b/pipelines/provision/kafka/Jenkinsfile new file mode 100644 index 0000000000..866b9d72c4 --- /dev/null +++ b/pipelines/provision/kafka/Jenkinsfile @@ -0,0 +1,38 @@ +@Library('deploy-conf') _ +node() { + try { + String ANSI_GREEN = "\u001B[32m" + String ANSI_NORMAL = "\u001B[0m" + String ANSI_BOLD = "\u001B[1m" + String ANSI_RED = "\u001B[31m" + String ANSI_YELLOW = "\u001B[33m" + + stage('checkout public repo') { + cleanWs() + checkout scm + } + + ansiColor('xterm') { + stage('deploy'){ + values = [:] + currentWs = sh(returnStdout: true, script: 'pwd').trim() + envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-3].trim() + module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() + jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() + ansiblePlaybook = "${currentWs}/ansible/provision-kafka.yml" + ansibleExtraArgs = "--vault-password-file /run/secrets/vault-pass -v" + values.put('currentWs', currentWs) + values.put('env', envDir) + values.put('module', module) + values.put('jobName', jobName) + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + println values +// ansible_playbook_run(values) + } + } + } + catch (err) { + throw err + } +} diff --git a/pipelines/keycloak-provison/Jenkinsfile b/pipelines/provision/keycloak/Jenkinsfile similarity index 52% rename from pipelines/keycloak-provison/Jenkinsfile rename to pipelines/provision/keycloak/Jenkinsfile index 35603798dd..943b6f001b 100644 --- a/pipelines/keycloak-provison/Jenkinsfile +++ b/pipelines/provision/keycloak/Jenkinsfile @@ -7,21 +7,6 @@ node() { String ANSI_RED = "\u001B[31m" String ANSI_YELLOW = "\u001B[33m" - if (params.size() == 0){ - envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() - properties([[$class: 'RebuildSettings', autoRebuild: false, rebuildDisabled: false], parameters([ - choice(choices: ['GitHub', 'Local'], description: 'Choose the ansible inventory source', name: 'inventory_source'), - string(defaultValue: "${WORKSPACE}/private/ansible/inventories/${envDir}", description: 'Please sepecify the full path to the inventory directory. The default value is $WORKSPACE/private/ansible/env. Here env is the previous directory of the job.', name: 'inventory_path', trim: false)])]) - ansiColor('xterm') { - println (ANSI_BOLD + ANSI_GREEN + '''\ - First run of the job. Parameters created. Stopping the current build. - Please trigger new build and provide parameters if required. - '''.stripIndent().replace("\n"," ") + ANSI_NORMAL) - } - currentBuild.result = 'SUCCESS' - return "first run" - } - triggers { cron('H 0 * * *') } @@ -35,9 +20,15 @@ node() { stage('deploy'){ values = [:] currentWs = sh(returnStdout: true, script: 'pwd').trim() - values.put('currentWs', currentWs) + envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-3].trim() + module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() + jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() ansiblePlaybook = "${currentWs}/ansible/keycloak.yml" ansibleExtraArgs = "--tags provision --vault-password-file /run/secrets/vault-pass" + values.put('currentWs', currentWs) + values.put('env', envDir) + values.put('module', module) + values.put('jobName', jobName) values.put('ansiblePlaybook', ansiblePlaybook) values.put('ansibleExtraArgs', ansibleExtraArgs) println values diff --git a/pipelines/provision/registry-provision/Jenkinsfile b/pipelines/provision/registry/Jenkinsfile similarity index 100% rename from pipelines/provision/registry-provision/Jenkinsfile rename to pipelines/provision/registry/Jenkinsfile index f210cf2156..55a87f6ce7 100644 --- a/pipelines/provision/registry-provision/Jenkinsfile +++ b/pipelines/provision/registry/Jenkinsfile @@ -27,10 +27,10 @@ node() { ansiColor('xterm') { stage('deploy'){ values = [:] + currentWs = sh(returnStdout: true, script: 'pwd').trim() envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-3].trim() module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() - currentWs = sh(returnStdout: true, script: 'pwd').trim() ansiblePlaybook = "${currentWs}/ansible/registry.yml" ansibleExtraArgs = "--vault-password-file /home/ops/vault" values.put('currentWs', currentWs) diff --git a/pipelines/provision/secor/Jenkinsfile b/pipelines/provision/secor/Jenkinsfile new file mode 100644 index 0000000000..08c0719e10 --- /dev/null +++ b/pipelines/provision/secor/Jenkinsfile @@ -0,0 +1,38 @@ +@Library('deploy-conf') _ +node() { + try { + String ANSI_GREEN = "\u001B[32m" + String ANSI_NORMAL = "\u001B[0m" + String ANSI_BOLD = "\u001B[1m" + String ANSI_RED = "\u001B[31m" + String ANSI_YELLOW = "\u001B[33m" + + stage('checkout public repo') { + cleanWs() + checkout scm + } + + ansiColor('xterm') { + stage('deploy'){ + values = [:] + currentWs = sh(returnStdout: true, script: 'pwd').trim() + envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-3].trim() + module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() + jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() + ansiblePlaybook = "${currentWs}/ansible/provision-secor.yml" + ansibleExtraArgs = "--vault-password-file /run/secrets/vault-pass" + values.put('currentWs', currentWs) + values.put('env', envDir) + values.put('module', module) + values.put('jobName', jobName) + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + println values +// ansible_playbook_run(values) + } + } + } + catch (err) { + throw err + } +} From 6d6d6202684090a9fa1ee75d13e90b30425722e4 Mon Sep 17 00:00:00 2001 From: G33tha Date: Wed, 30 Jan 2019 16:05:12 +0530 Subject: [PATCH 0826/1345] Create Jenkinsfile --- pipelines/bootstrap/Jenkinsfile | 38 +++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 pipelines/bootstrap/Jenkinsfile diff --git a/pipelines/bootstrap/Jenkinsfile b/pipelines/bootstrap/Jenkinsfile new file mode 100644 index 0000000000..4cc2acec6a --- /dev/null +++ b/pipelines/bootstrap/Jenkinsfile @@ -0,0 +1,38 @@ +@Library('deploy-conf') _ +node() { + try { + String ANSI_GREEN = "\u001B[32m" + String ANSI_NORMAL = "\u001B[0m" + String ANSI_BOLD = "\u001B[1m" + String ANSI_RED = "\u001B[31m" + String ANSI_YELLOW = "\u001B[33m" + + stage('checkout public repo') { + cleanWs() + checkout scm + } + + ansiColor('xterm') { + stage('deploy'){ + values = [:] + envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-3].trim() + module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() + jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() + currentWs = sh(returnStdout: true, script: 'pwd').trim() + ansiblePlaybook = "${currentWs}/ansible/bootstrap.yml" + ansibleExtraArgs = "--extra-vars \"hosts=${params.hosts}\"" + values.put('currentWs', currentWs) + values.put('env', envDir) + values.put('module', module) + values.put('jobName', jobName) + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + println values + ansible_playbook_run(values) + } + } + } + catch (err) { + throw err + } +} From 40dab17b483309a6a7d66204adb6ebbf91009ab7 Mon Sep 17 00:00:00 2001 From: Kartish Date: Wed, 30 Jan 2019 16:20:43 +0530 Subject: [PATCH 0827/1345] Issue #0000 fix: es variables --- ansible/es.yml | 10 ++++++++++ ansible/roles/application_elasticsearch/meta/main.yml | 4 ++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/ansible/es.yml b/ansible/es.yml index 783fc96ee5..ab6aaf2ce8 100644 --- a/ansible/es.yml +++ b/ansible/es.yml @@ -2,6 +2,9 @@ become: yes vars_files: - ['{{inventory_dir}}/secrets.yml', 'secrets/{{env}}.yml'] + vars: + - es_snapshot_host: "{{app_es_snapshot_host}}" + - snapshot_base_path: "{{app_snapshot_base_path}}" roles: - es-azure-snapshot - es5-snapshot-purge @@ -12,6 +15,8 @@ become: yes vars_files: - ['{{inventory_dir}}/secrets.yml', 'secrets/{{env}}.yml'] + vars: + - es_restore_host: "{{app_es_restore_host}}" roles: - es-azure-restore tags: @@ -21,6 +26,9 @@ become: yes vars_files: - ['{{inventory_dir}}/secrets.yml', 'secrets/{{env}}.yml'] + vars: + - es_snapshot_host: "{{log_es_snapshot_host}}" + - snapshot_base_path: "{{log_snapshot_base_path}}" roles: - es-azure-snapshot - es2-snapshot-purge @@ -31,6 +39,8 @@ become: yes vars_files: - ['{{inventory_dir}}/secrets.yml', 'secrets/{{env}}.yml'] + vars: + - es_restore_host: "{{log_es_restore_host}}" roles: - es-azure-restore tags: diff --git a/ansible/roles/application_elasticsearch/meta/main.yml b/ansible/roles/application_elasticsearch/meta/main.yml index c38ad624bb..0091abe7ea 100755 --- a/ansible/roles/application_elasticsearch/meta/main.yml +++ b/ansible/roles/application_elasticsearch/meta/main.yml @@ -8,12 +8,12 @@ dependencies: es_api_host: "{{ hostvars[inventory_hostname]['ansible_default_ipv4']['address'] }}", es_config: { node.name: "{{ es_instance_name }}", - cluster.name: "{{ es_etc_cluster_name }}", + cluster.name: "{{ app_es_etc_cluster_name }}", network.host: "{{ es_api_host }}", discovery.zen.ping.unicast.hosts: "{{ groups['es'] }}", node.data: "{{ es_etc_node_data }}", node.master: "{{ es_etc_node_master }}", - discovery.zen.minimum_master_nodes: "{{ es_etc_discovery_zen_minimum_master_nodes }}", + discovery.zen.minimum_master_nodes: "{{ app_es_etc_discovery_zen_minimum_master_nodes }}", bootstrap.memory_lock: true, cloud.azure.storage.my_account: { account: "{{ backup_storage_name }}", From f0b90f816cc531788788f31f7f2c9472b679b2a0 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Wed, 30 Jan 2019 16:51:39 +0530 Subject: [PATCH 0828/1345] Issue #000 feat: Changing ansible folder name DO-470 --- .../sample/group_vars/postgresql-master | 5 - ansible/inventories/sample/group_vars/sample | 388 ------------------ ansible/inventories/sample/hosts | 88 ---- .../inventory/env/DP/group_vars/all.yml | 0 .../inventory/env/DP/group_vars/env.yml | 0 .../inventory/env/DP/hosts | 0 .../inventory/env/DP/secrets.yml | 0 .../inventory/env/LP/group_vars/all.yml | 0 .../inventory/env/LP/group_vars/env.yml | 0 .../inventory/env/LP/hosts | 0 .../inventory/env/LP/secrets.yml | 0 .../inventory/env/common.yml | 0 .../inventory/env/core/group_vars/all.yml | 0 .../inventory/env/core/group_vars/env.yml | 0 .../inventory/env/core/hosts | 0 .../inventory/env/core/secrets.yml | 0 .../inventory/env/secrets.yml | 0 ansible/roles/bootstrap_any/tasks/main.yml | 1 - 18 files changed, 482 deletions(-) delete mode 100644 ansible/inventories/sample/group_vars/postgresql-master delete mode 100644 ansible/inventories/sample/group_vars/sample delete mode 100644 ansible/inventories/sample/hosts rename {ansible_poc => ansible}/inventory/env/DP/group_vars/all.yml (100%) rename {ansible_poc => ansible}/inventory/env/DP/group_vars/env.yml (100%) rename {ansible_poc => ansible}/inventory/env/DP/hosts (100%) rename {ansible_poc => ansible}/inventory/env/DP/secrets.yml (100%) rename {ansible_poc => ansible}/inventory/env/LP/group_vars/all.yml (100%) rename {ansible_poc => ansible}/inventory/env/LP/group_vars/env.yml (100%) rename {ansible_poc => ansible}/inventory/env/LP/hosts (100%) rename {ansible_poc => ansible}/inventory/env/LP/secrets.yml (100%) rename {ansible_poc => ansible}/inventory/env/common.yml (100%) rename {ansible_poc => ansible}/inventory/env/core/group_vars/all.yml (100%) rename {ansible_poc => ansible}/inventory/env/core/group_vars/env.yml (100%) rename {ansible_poc => ansible}/inventory/env/core/hosts (100%) rename {ansible_poc => ansible}/inventory/env/core/secrets.yml (100%) rename {ansible_poc => ansible}/inventory/env/secrets.yml (100%) diff --git a/ansible/inventories/sample/group_vars/postgresql-master b/ansible/inventories/sample/group_vars/postgresql-master deleted file mode 100644 index 5602fcf220..0000000000 --- a/ansible/inventories/sample/group_vars/postgresql-master +++ /dev/null @@ -1,5 +0,0 @@ -postgresql_databases: - - name: "{{kong_postgres_database}}" - - name: "{{keycloak_postgres_database}}" - - name: "{{application_postgres_database}}" - - name: "{{badger_postgres_database}}" diff --git a/ansible/inventories/sample/group_vars/sample b/ansible/inventories/sample/group_vars/sample deleted file mode 100644 index d6df8583b7..0000000000 --- a/ansible/inventories/sample/group_vars/sample +++ /dev/null @@ -1,388 +0,0 @@ -# ENVIRONMENT CONFIGURATION -env: "{{env}}" #Name of the environment, e.g. dev, staging or production. -proxy_server_name: "{{dns_name}}" #Domain on which the portal will be accessed. e.g. staging.{implementation-name}.org -proxy_site_key: "{{lookup('file',key_path) if key_path else ''}}" #SSL certificate's site.key file path. More details in this wiki: https://github.com/project-sunbird/sunbird-devops/wiki/Updating-SSL-certificates-in-Sunbird-Proxy-service -proxy_site_crt: "{{lookup('file',cert_path) if cert_path else ''}}" #SSL certificate's site.crt file path. More details in this wiki: https://github.com/project-sunbird/sunbird-devops/wiki/Updating-SSL-certificates-in-Sunbird-Proxy-service -sunbird_private_key_path: -hub_org: sunbird -sunbird_external_content_whitelisted_domains: -learner_limit_cpu: 1 -learner_reservation_cpu: 1 -sunbird_default_channel: -sunbird_cs_base_url: -sunbird_content_service_whitelisted_channels: -# DB CONFIGURATION -## Below passwords are used by DB install scripts when creating databases. Please use strong passwords. -application_postgres_password: "{{postgres_app_password if postgres_app_password else database_password}}" -keycloak_postgres_password: "{{postgres_keycloak_password if postgres_keycloak_password else database_password}}" -kong_postgres_password: "{{postgres_kong_password if postgres_kong_password else database_password}}" -badger_postgres_password: "{{postgres_badger_password if postgres_badger_password else database_password}}" - -## Postgres configuration -swarm_address_space: "{{app_address_space}}" #Application server address space (e.g. 10.3.0.0/24), also the agentpublicSubnet if using Azure scripts provided - -## Cassandra configuration -keystore_password: "{{cassandra_password if cassandra_password else database_password}}" #Password to use for encrypting cassandra keystore. Use a strong password. -truststore_password: "{{cassandra_password if cassandra_password else database_password}}" #Password to use for encrypting cassandra truststore. Use a strong password. -cassandra_listen_address: "{{ groups['cassandra'][0]|default(database_host) }}" -cassandra_seeds: "{{ groups['cassandra'][0]|default(database_host) }}" -cassandra_broadcast_rpc_address: "{{ groups['cassandra'][0]|default(database_host) }}" -cassandra_broadcast_address: "{{ groups['cassandra'][0]|default(database_host) }}" -cassandra_listen_interface: '' -cassandra_log_dir: '/var/log/cassandra' -cassandra_root_dir: '/etc/cassandra' -cassandra_version: '3.9' -cassandra_port: 9042 -cassandra_rpc_address: 0.0.0.0 -cassandra_restore_dir: /home/deployer/ -cassandra_server_private_ip: "{{groups['cassandra'][0]|default(database_host)}}" - - -# APPLICATION CONFIGURATION - -kong_host: api-manager_kong # Private IP of the application server -keycloak_url: "http://{{ groups['keycloak'][0] | default(application_host) }}:8080" #Internal url of keycloak. Example: http://:8080 - -## DB address -application_postgres_host: "{{ groups['postgresql-master'][0] | default(database_host) }}" #Private IP of Postgres server -keycloak_postgres_host: "{{ groups['postgresql-master'][0] | default(database_host) }}" #Private IP of Postgres server -kong_postgres_host: "{{ groups['postgresql-master'][0] | default(database_host) }}" #Private IP of Postgres server -sunbird_cassandra_host: "{{ groups['cassandra'][0] | default(database_host) }}" #Private IP of Cassandra server -sunbird_es_host: "{{ groups['es-1'][0] | default(database_host) }}" #Private IP of Elastic Search server. If ES cluster has multiple nodes then add all nodes by separating them with comma. e.g. 10.2.0.1,10.2.0.2,10.2.0.3 - -## Application server configurations -sunbird_ekstep_api_base_url: "{{ekstep_api_base_url}}" #API base URL of the Ekstep environment. Use `https://qa.ekstep.in/api` for non-prod deployments, and use `https://api.ekstep.in/` for prod deployment. -sunbird_ekstep_proxy_base_url: "{{ekstep_proxy_base_url}}" #Base URL of the Ekstep environment. Use `https://qa.ekstep.in/` for non-prod deployments, and `https://community.ekstep.in/` for prod deployment. -sunbird_env: qa #Ekstep environment to connect to. Use `qa` for non-prod deployments, and `prod` for prod deployment. -sunbird_mail_server_host: "{{ mail_server_host }}" #SMTP server IP. Could be ignored if not mails are to be sent. -sunbird_mail_server_port: "{{ mail_server_port }}" #SMTP port. Could be ignored if not mails are to be sent. -sunbird_mail_server_username: "{{ mail_server_username }}" #SMTP username. Could be ignored if not mails are to be sent. -sunbird_mail_server_password: "{{ mail_server_password }}" #SMTP server pasword. Could be ignored if not mails are to be sent. -sunbird_mail_server_from_email: "{{alerts_mailing_list}}" #Email ID that should be as from address in mails - -#player_tenant_dir: #Configure if customising the image, path in which volume should be mounted. -sunbird_background_actor_host: actor-service -sunbird_actor_system_name: BackGroundRemoteMiddlewareActorSystem - - -## Keycloak (auth server) login details -sunbird_sso_username: user-manager -sunbird_sso_password: "{{sso_password}}" -sunbird_sso_publickey: -keycloak_password: "{{keycloak_admin_password}}" #admin password for the keycloak_auth login -keycloak_theme_path: #path to the keycloak theme files - -## Keycloak bootstrap -keycloak_realm_json_file_path: "roles/keycloak/files/python-keycloak-0.12.0/keycloak-realm.json" -keycloak_user_manager_roles_json_file_path: "roles/keycloak/files/python-keycloak-0.12.0/roles.json" -keycloak_api_management_username: "{{sunbird_sso_username}}" -keycloak_api_management_user_email: "" -keycloak_api_management_user_first_name: "user" -keycloak_api_management_user_last_name: "manager" -keycloak_api_management_user_password: "{{sso_password}}" - -## Content Repo configuration -sunbird_api_auth_token: #Authorization key (JWT) to access Sunbird APIs. This will be in the output of deploy-apis.sh script, extracting it out is documented in the deployment wiki. -sunbird_ekstep_api_key: "{{ekstep_api_key}}" #Authorization key (JWT) to access Ekstep APIs. Steps to generate this are documented on https://github.com/project-sunbird/sunbird-commons/wiki/Obtaining-API-token-for-accessing-ekstep-APIs -sunbird_trampoline_secret: "{{trampoline_secret}}" - - -# ADVANCED CONFIGURATIONS -keycloak_auth_server_url: "{{proto}}://{{proxy_server_name}}/auth" -keycloak_realm: sunbird -sunbird_content_player_url: "{{proto}}://{{proxy_server_name}}/api/" -sunbird_learner_player_url: "{{proto}}://{{proxy_server_name}}/api/" -sunbird_sso_url: "{{proto}}://{{proxy_server_name}}/auth" -sunbird_sso_client_id: admin-cli -sunbird_portal_realm: sunbird -sunbird_portal_auth_server_client: portal -sunbird_trampoline_client_id: trampoline -sunbird_default_tenant: sunbird -sunbird_echo_api_url: "{{proto}}://{{proxy_server_name}}/api/echo" -sunbird_pg_host: "{{ application_postgres_host }}" -sunbird_pg_port: 5432 -sunbird_pg_db: quartz -sunbird_pg_user: quartz -sunbird_pg_password: "{{ application_postgres_password }}" -sunbird_installation: sunbird -sunbird_account_name: "{{sunbird_azure_storage_account}}" -sunbird_account_key: "{{sunbird_azure_storage_key}}" -sunbird_sunbird_quartz_mode: cluster #Use `embedded` to run Quartz without any database, use any other value to use Postgres as database -sunbird_cassandra_urls: "{{groups['cassandra'][0]|default(database_host)}}:{{ cassandra_port }}" -sunbird_session_store_type: cassandra -sunbird_portal_title_name: portal -sunbird_keycloak_client_id: 'portal' -sunbird_msg_91_auth: -sunbird_keycloak_public: true -sunbird_msg_sender: -project: sunbird -application_postgres_database: quartz -application_postgres_user: quartz -keycloak_postgres_database: keycloak -keycloak_postgres_user: keycloak -sunbird_dataservice_url: "{{proto}}://{{proxy_server_name}}/api" -sunbird_azure_storage_account: "{sunbird_azure_storage_account}}" -sunbird_azure_storage_key: "{{sunbird_azure_storage_key}}" -sunbird_container_name: portal -sunbird_telemetry_packet_size: 200 -sunbird_image_storage_url: "{{sunbird_image_storage_url}}" -sunbird_telemetry_sync_batch_size: 200 -sunbird_installation_email: "{{sunbird_installation_email}}" -sunbird_telemetry_pdata_id: "{{sunbird_telemetry_pdata_id}}" -sunbird_environment: "{{env}}" -sunbird_instance: "{{implementation_name}}" - - -## elasticsearch configurations - -es_heap_size: 1500m -es_etc_cluster_name: sunbird-sample -es_etc_discovery_zen_minimum_master_nodes: 1 - -## Cassandra download URI -cassandra_repo: 'deb http://www.apache.org/dist/cassandra/debian 39x main' -cassandra_repo_key: 'https://www.apache.org/dist/cassandra/KEYS' - -#API Manager -kong_postgres_port: 5432 -kong_postgres_user: "api_manager" -kong_postgres_database: "api_manager" - - - -## PostgreSQL config -postgresql_hba_entries: - - { type: local, database: all, user: postgres, auth_method: peer } - - { type: local, database: all, user: all, auth_method: peer } - - { type: host, database: all, user: all, address: '127.0.0.1/32', auth_method: md5 } - - { type: host, database: all, user: all, address: '::1/128', auth_method: md5 } - - { type: host, database: all, user: all, address: '{{ swarm_address_space }}', auth_method: md5 } - -postgresql_users: - - name: "{{kong_postgres_user}}" - password: "{{postgres_kong_password if postgres_kong_password else database_password}}" - db: "{{kong_postgres_database}}" - priv: "ALL" - - name: "{{keycloak_postgres_user}}" - password: "{{postgres_keycloak_password if postgres_keycloak_password else database_password}}" - db: "{{keycloak_postgres_database}}" - priv: "ALL" - - name: "{{application_postgres_user}}" - password: "{{postgres_app_password if postgres_app_password else database_password}}" - db: "{{application_postgres_database}}" - priv: "ALL" - - name: "{{badger_postgres_user}}" - password: "{{postgres_badger_password if postgres_badger_password else database_password}}" - db: "{{badger_postgres_database}}" - priv: "ALL" - - -proxy_replicas: 1 -proxy_reservation_memory: 64M -proxy_limit_memory: 128M -kong_replicas: 1 -kong_reservation_memory: 120M -kong_limit_memory: 256M -echo_service_replicas: 1 -echo_service_reservation_memory: 16M -echo_service_limit_memory: 32M -adminutil_replicas: 1 -adminutil_reservation_memory: 512M -adminutil_limit_memory: 1024M - -actor_replicas: 1 -actor_reservation_memory: 500M -actor_limit_memory: 1024M - -learner_replicas: 1 -learner_reservation_memory: 1500M -learner_limit_memory: 1500M - -player_replicas: 1 -player_reservation_memory: 256M -player_limit_memory: 512M - -content_replicas: 1 -content_reservation_memory: 125M -content_limit_memory: 256M - - -#badger -badger_postgres_user: badger -badger_postgres_database: badger -badger_host: "{{ groups['postgresql-master'][0]|default(database_host)}}" -badger_replicas: 1 -badger_reservation_memory: 500MB -badger_limit_memory: 500MB -badger_file_storage: storages.backends.azure_storage.AzureStorage -badger_url: http://azureaccountname.blob.core.windows.net/ -badger_container: badgr -badger_admin_user: admin -badger_admin_password: "{{badger_admin_password}}" -badger_admin_email: "{{badger_admin_email}}" -sunbird_http_orgin: "https://{{proxy_server_name}}/badging" - - -#Logging -kibana_oauth_redirect_url: "{{proto}}://{{proxy_server_name}}/oauth2/callback" -monitor_alerts_slack_channel: "sunbird-{{env}}-alert" -google_client_id: "{{vault_google_client_id}}" -google_client_secret: "{{vault_google_client_secret}}" -cookie_secret: "{{vault_cookie_secret}}" -syslog: - host: "{{application_host}}" - port: 51415 -logger_es_host: "{{ groups['log-es'][0] }}" -logger_es_port: 9200 -swarm_load_balancer: "{{application_host}}" -filebeat_logtsash_host: "{{ application_host }}" -expected_minimum_logs_per_minute: 30 -#kibana_oauth_authenticated_email_domains: -# - optit.co -#kibana_oauth_authenticated_email_ids: -# - smy.altamash@gmail.com - - - -#Monitoring -monitor_alerts_mail_from_email: "alerts@{{proxy_server_name}}" -monitor_alerts_mail_server_host: "{{ mail_server_host }}" -monitor_alerts_mail_server_port: "{{ mail_server_port }}" -monitor_alerts_mail_server_username: "{{ mail_server_username }}" -monitor_alerts_mail_server_password: "{{ mail_server_password }}" -grafana_url: "{{proto}}://{{proxy_server_name}}/grafana" -grafana_editor_username: editor -app_alerts_mailing_list: "{{alerts_mailing_list}}" -site_alerts_mailing_list: "{{alerts_mailing_list}}" -keycloak_alerts_mailing_list: "{{alerts_mailing_list}}" -api_manager_alerts_mailing_list: "{{alerts_mailing_list}}" -monitor_es_host: "{{ groups['es'][0] }}" -alertmanager_host: "{{ groups['swarm-agent-for-alertmanager'][0]||default(application_host) }}" -prometheus_host: "{{ groups['swarm-agent-for-prometheus'][0]|default(application_host) }}" -postgres_exporter_postgres_port: 5432 -postgres_exporter_user: postgres_exporter -postgres_exporter_password: "{{ vault_postgres_exporter_password }}" -api__host: "{{proxy_server_name}}" -kong__test_jwt: "{{kong__test_jwt}}" -prometheus_storage_retention_time: 72h0m0s -sunbird_android_app_url: sunbird.org - -sunbird_user_bulk_upload_size: 1001 -sunbird_installation_display_name: - -telemetry_proxy_url: https://dev.ekstep.in/api/data/v3/telemetry - -#content service vars - -sunbird_content_repo_api_base_url: https://qa.ekstep.in/api -sunbird_content_repo_api_key: "{{ekstep_api_key}}" -sunbird_search_service_api_base_url: https://qa.ekstep.in/api/search -sunbird_search_service_api_key: "{{ekstep_api_key}}" -sunbird_dial_repo_api_base_url: https://qa.ekstep.in/api -sunbird_dial_repo_api_key: "{{ekstep_api_key}}" -sunbird_plugin_repo_api_base_url: https://qa.ekstep.in/api -sunbird_plugin_repo_api_key: "{{ekstep_api_key}}" -sunbird_data_service_api_base_url: https://qa.ekstep.in/api -sunbird_data_service_api_key: "{{ekstep_api_key}}" -sunbird_content_service_enable_logging: true - -learning_analytics_service_url: "http://{{application_host}}:9000" -sunbird_tenant_cdn_url: -sunbird_cloud_storage_urls: 'https://s3.ap-south-1.amazonaws.com/ekstep-public-qa/,https://ekstep-public-qa.s3-ap-south-1.amazonaws.com/' -sunbird_analytics_api_base_url: -content_service_channel_refresh_cron: -content_service_whitelisted_framework: -content_service_blacklisted_framework: -content_service_blacklisted_contenttype: -content_service_blacklisted_resourcetype: -content_service_blacklisted_mimetype: -content_service_whitelisted_mimetype: -content_service_whitelisted_resourcetype: -sunbird_language_service_api_key: -sunbird_language_service_api_base_url: "https://qa.ekstep.in/api/language" - -#Telemetry Service vars -sunbird_telemetry_kafka_servers: -sunbird_data_pipeline_kafka_servers: -sunbird_telemetry_kafka_topic: - -#Config Service Vars -cloud_storage_type: "azure" -azure_storage_key: "{{sunbird_azure_storage_account}}" -azure_storage_secret: "{{sunbird_azure_storage_key}}" -azure_storage_container: -aws_storage_key: -aws_storage_secret: -aws_storage_container: - -sunbird_cassandra_host: "{{groups['cassandra'][0]|default(database_host)}}" -sunbird_cassandra_port: 9042 -sunbird_cassandra_username: cassandra -sunbird_cassandra_password: "{{cassandra_password if cassandra_password else database_password}}" -sunbird_config_service_url: "{{proto}}://{{proxy_server_name}}/api/config/" -config_cache_ttl: 600 - -#Portal vars -sunbird_portal_base_url: https://staging.open-sunbird.org - -#Learner Vars -sunbird_email_max_recipients_limit: 100 - -#Proxy vars -sunbird_blob_env: "{{env}}" - -#encryption Service -encryption_service_user: encryption -encryption_db_name: encryption -encryption_db_dialect: postgres -encryption_reservation_memory: 750MB -encryption_replicas: 1 -encryption_limit_memory: 750MB -encryption_limit_cpu: 1 -encryption_reservation_cpu: 1 - -logger_logstash_reservation_memory: 750M -logger_logstash_limit_memory: 750M - -#Portal vars: -sunbird_portal_user_upload_ref_link: http://www.sunbird.org/features-documentation/register_user - -#learner Vars -sunbird_url_shortner_access_token: -sunbird_url_shortner_enable: false -sunbird_keycloak_required_action_link_expiration_seconds: 7200 -sunbird_user_profile_field_default_visibility: public - -#Player Vars -config_service_enabled: false -config_refresh_interval: 10 -sunbird_analytics_api_base_url: "{{ekstep_api_base_url}}" -sunbird_cassandra_urls: -sunbird_cassandra_consistency_level: one -sunbird_cassandra_replication_strategy: '{"class":"SimpleStrategy","replication_factor":"1"}' -sunbird_allowed_login: -sunbird_course_batch_notification_enabled: true - -sunbird_device_register_api: - -sunbird_course_batch_notification_signature: sunbird - -sunbird_authorization: -sunbird_lms_base_url: -sunbird_lock_expiry_time: 1800 -sunbird_content_service_local_base_url: http://content-service:5000 -sunbird_kafka_host: -sunbird_qrimage_topic: local.qrimage.request - - -sunbird_otp_expiration: 1800 -sunbird_otp_length: 6 -sunbird_google_oauth_clientId: -sunbird_google_oauth_clientSecret: -sunbird_google_captcha_site_key: -sunbird_google_keycloak_client_id: -sunbird_google_keycloak_secret: -sunbird_content_azure_storage_container: -sunbird_azure_report_container_name: reports -sunbird_azure_account_name: -sunbird_azure_account_key: diff --git a/ansible/inventories/sample/hosts b/ansible/inventories/sample/hosts deleted file mode 100644 index 104b73ac22..0000000000 --- a/ansible/inventories/sample/hosts +++ /dev/null @@ -1,88 +0,0 @@ -[swarm-manager-1] -"{{application_host}}" ansible_ssh_user="{{ssh_ansible_user}}" ansible_ssh_private_key_file="{{ansible_private_key_path}}" ansible_sudo_pass="{{sudo_passwd|default('')}}" swarm_master=true - -[swarm-manager:children] -swarm-manager-1 - -[swarm-bootstrap-manager:children] -swarm-manager-1 - -[postgresql-1] -"{{database_host}}" ansible_ssh_user="{{ssh_ansible_user}}" ansible_sudo_pass="{{sudo_passwd|default('')}}" ansible_ssh_private_key_file="{{ansible_private_key_path}}" - -[es-1] -"{{database_host}}" ansible_ssh_user="{{ssh_ansible_user}}" ansible_ssh_private_key_file="{{ansible_private_key_path}}" es_instance_name=es-1 es_etc_node_master=true ansible_sudo_pass="{{sudo_passwd|default('')}}" es_etc_node_data=true - -[cassandra-1] -"{{database_host}}" ansible_ssh_user="{{ssh_ansible_user}}" ansible_sudo_pass="{{sudo_passwd|default('')}}" ansible_ssh_private_key_file="{{ansible_private_key_path}}" - -[keycloak-1] -"{{application_host}}" ansible_ssh_user="{{ssh_ansible_user}}" ansible_sudo_pass="{{sudo_passwd|default('')}}" ansible_ssh_private_key_file="{{ansible_private_key_path}}" - -[keycloak:children] -keycloak-1 - -[postgresql-master:children] -postgresql-1 - -[postgresql-slave:children] - -[es:children] -es-1 - -[cassandra:children] -cassandra-1 - -[kong-api] -"{{application_host}}" ansible_ssh_user="{{ssh_ansible_user}}" ansible_sudo_pass="{{sudo_passwd|default('')}}" ansible_ssh_private_key_file="{{ansible_private_key_path}}" - -[swarm-agent-for-prometheus] -"{{application_host}}" ansible_ssh_user="{{ssh_ansible_user}}" ansible_sudo_pass="{{sudo_passwd|default('')}}" ansible_ssh_private_key_file="{{ansible_private_key_path}}" - -[swarm-agent-for-grafana] -"{{application_host}}" ansible_ssh_user="{{ssh_ansible_user}}" ansible_sudo_pass="{{sudo_passwd|default('')}}" ansible_ssh_private_key_file="{{ansible_private_key_path}}" - -[swarm-agent-for-alertmanager] -"{{application_host}}" ansible_ssh_user="{{ssh_ansible_user}}" ansible_sudo_pass="{{sudo_passwd|default('')}}" ansible_ssh_private_key_file="{{ansible_private_key_path}}" - - -[dev-log-es-1] -"{{application_host}}" ansible_ssh_user="{{ssh_ansible_user}}" ansible_sudo_pass="{{sudo_passwd|default('')}}" node_name=dev-log-es-1 es_etc_node_master=true es_etc_node_data=true ansible_ssh_private_key_file="{{ansible_private_key_path}}" - - -[dev-log-es:children] -dev-log-es-1 - - -[log-es:children] -dev-log-es - - -[non-swarm-nodes:children] -postgresql-master -postgresql-slave -es -cassandra -kong-api -keycloak -log-es - - -[swarm-nodes:children] -swarm-manager -swarm-bootstrap-manager -swarm-agent-for-prometheus -swarm-agent-for-grafana -swarm-agent-for-alertmanager - -[node-exporter:children] -non-swarm-nodes -swarm-manager - -[log-forwarder:children] -non-swarm-nodes -swarm-manager - -[sample:children] -non-swarm-nodes -swarm-nodes diff --git a/ansible_poc/inventory/env/DP/group_vars/all.yml b/ansible/inventory/env/DP/group_vars/all.yml similarity index 100% rename from ansible_poc/inventory/env/DP/group_vars/all.yml rename to ansible/inventory/env/DP/group_vars/all.yml diff --git a/ansible_poc/inventory/env/DP/group_vars/env.yml b/ansible/inventory/env/DP/group_vars/env.yml similarity index 100% rename from ansible_poc/inventory/env/DP/group_vars/env.yml rename to ansible/inventory/env/DP/group_vars/env.yml diff --git a/ansible_poc/inventory/env/DP/hosts b/ansible/inventory/env/DP/hosts similarity index 100% rename from ansible_poc/inventory/env/DP/hosts rename to ansible/inventory/env/DP/hosts diff --git a/ansible_poc/inventory/env/DP/secrets.yml b/ansible/inventory/env/DP/secrets.yml similarity index 100% rename from ansible_poc/inventory/env/DP/secrets.yml rename to ansible/inventory/env/DP/secrets.yml diff --git a/ansible_poc/inventory/env/LP/group_vars/all.yml b/ansible/inventory/env/LP/group_vars/all.yml similarity index 100% rename from ansible_poc/inventory/env/LP/group_vars/all.yml rename to ansible/inventory/env/LP/group_vars/all.yml diff --git a/ansible_poc/inventory/env/LP/group_vars/env.yml b/ansible/inventory/env/LP/group_vars/env.yml similarity index 100% rename from ansible_poc/inventory/env/LP/group_vars/env.yml rename to ansible/inventory/env/LP/group_vars/env.yml diff --git a/ansible_poc/inventory/env/LP/hosts b/ansible/inventory/env/LP/hosts similarity index 100% rename from ansible_poc/inventory/env/LP/hosts rename to ansible/inventory/env/LP/hosts diff --git a/ansible_poc/inventory/env/LP/secrets.yml b/ansible/inventory/env/LP/secrets.yml similarity index 100% rename from ansible_poc/inventory/env/LP/secrets.yml rename to ansible/inventory/env/LP/secrets.yml diff --git a/ansible_poc/inventory/env/common.yml b/ansible/inventory/env/common.yml similarity index 100% rename from ansible_poc/inventory/env/common.yml rename to ansible/inventory/env/common.yml diff --git a/ansible_poc/inventory/env/core/group_vars/all.yml b/ansible/inventory/env/core/group_vars/all.yml similarity index 100% rename from ansible_poc/inventory/env/core/group_vars/all.yml rename to ansible/inventory/env/core/group_vars/all.yml diff --git a/ansible_poc/inventory/env/core/group_vars/env.yml b/ansible/inventory/env/core/group_vars/env.yml similarity index 100% rename from ansible_poc/inventory/env/core/group_vars/env.yml rename to ansible/inventory/env/core/group_vars/env.yml diff --git a/ansible_poc/inventory/env/core/hosts b/ansible/inventory/env/core/hosts similarity index 100% rename from ansible_poc/inventory/env/core/hosts rename to ansible/inventory/env/core/hosts diff --git a/ansible_poc/inventory/env/core/secrets.yml b/ansible/inventory/env/core/secrets.yml similarity index 100% rename from ansible_poc/inventory/env/core/secrets.yml rename to ansible/inventory/env/core/secrets.yml diff --git a/ansible_poc/inventory/env/secrets.yml b/ansible/inventory/env/secrets.yml similarity index 100% rename from ansible_poc/inventory/env/secrets.yml rename to ansible/inventory/env/secrets.yml diff --git a/ansible/roles/bootstrap_any/tasks/main.yml b/ansible/roles/bootstrap_any/tasks/main.yml index e7d5e92d1a..e063f5c8ee 100644 --- a/ansible/roles/bootstrap_any/tasks/main.yml +++ b/ansible/roles/bootstrap_any/tasks/main.yml @@ -12,7 +12,6 @@ authorized_key: user=deployer key='{{ssh_public_key_deployer}}' become: yes - - name: Create ulimit configuration template: src: limits.conf.j2 From 4c4520cfdc10cde210bf7d062d0adbb5296a558b Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Wed, 30 Jan 2019 16:54:59 +0530 Subject: [PATCH 0829/1345] Issue #000 feat: Renamed DP LP and Core DO-470 --- ansible/inventory/env/{DP => Core}/group_vars/all.yml | 0 ansible/inventory/env/{DP => Core}/group_vars/env.yml | 0 ansible/inventory/env/{DP => Core}/hosts | 0 ansible/inventory/env/{DP => Core}/secrets.yml | 0 ansible/inventory/env/{LP => DataPipeline}/group_vars/all.yml | 0 ansible/inventory/env/{LP => DataPipeline}/group_vars/env.yml | 0 ansible/inventory/env/{LP => DataPipeline}/hosts | 0 ansible/inventory/env/{LP => DataPipeline}/secrets.yml | 0 .../inventory/env/{core => LearningPlatform}/group_vars/all.yml | 0 .../inventory/env/{core => LearningPlatform}/group_vars/env.yml | 0 ansible/inventory/env/{core => LearningPlatform}/hosts | 0 ansible/inventory/env/{core => LearningPlatform}/secrets.yml | 0 12 files changed, 0 insertions(+), 0 deletions(-) rename ansible/inventory/env/{DP => Core}/group_vars/all.yml (100%) rename ansible/inventory/env/{DP => Core}/group_vars/env.yml (100%) rename ansible/inventory/env/{DP => Core}/hosts (100%) rename ansible/inventory/env/{DP => Core}/secrets.yml (100%) rename ansible/inventory/env/{LP => DataPipeline}/group_vars/all.yml (100%) rename ansible/inventory/env/{LP => DataPipeline}/group_vars/env.yml (100%) rename ansible/inventory/env/{LP => DataPipeline}/hosts (100%) rename ansible/inventory/env/{LP => DataPipeline}/secrets.yml (100%) rename ansible/inventory/env/{core => LearningPlatform}/group_vars/all.yml (100%) rename ansible/inventory/env/{core => LearningPlatform}/group_vars/env.yml (100%) rename ansible/inventory/env/{core => LearningPlatform}/hosts (100%) rename ansible/inventory/env/{core => LearningPlatform}/secrets.yml (100%) diff --git a/ansible/inventory/env/DP/group_vars/all.yml b/ansible/inventory/env/Core/group_vars/all.yml similarity index 100% rename from ansible/inventory/env/DP/group_vars/all.yml rename to ansible/inventory/env/Core/group_vars/all.yml diff --git a/ansible/inventory/env/DP/group_vars/env.yml b/ansible/inventory/env/Core/group_vars/env.yml similarity index 100% rename from ansible/inventory/env/DP/group_vars/env.yml rename to ansible/inventory/env/Core/group_vars/env.yml diff --git a/ansible/inventory/env/DP/hosts b/ansible/inventory/env/Core/hosts similarity index 100% rename from ansible/inventory/env/DP/hosts rename to ansible/inventory/env/Core/hosts diff --git a/ansible/inventory/env/DP/secrets.yml b/ansible/inventory/env/Core/secrets.yml similarity index 100% rename from ansible/inventory/env/DP/secrets.yml rename to ansible/inventory/env/Core/secrets.yml diff --git a/ansible/inventory/env/LP/group_vars/all.yml b/ansible/inventory/env/DataPipeline/group_vars/all.yml similarity index 100% rename from ansible/inventory/env/LP/group_vars/all.yml rename to ansible/inventory/env/DataPipeline/group_vars/all.yml diff --git a/ansible/inventory/env/LP/group_vars/env.yml b/ansible/inventory/env/DataPipeline/group_vars/env.yml similarity index 100% rename from ansible/inventory/env/LP/group_vars/env.yml rename to ansible/inventory/env/DataPipeline/group_vars/env.yml diff --git a/ansible/inventory/env/LP/hosts b/ansible/inventory/env/DataPipeline/hosts similarity index 100% rename from ansible/inventory/env/LP/hosts rename to ansible/inventory/env/DataPipeline/hosts diff --git a/ansible/inventory/env/LP/secrets.yml b/ansible/inventory/env/DataPipeline/secrets.yml similarity index 100% rename from ansible/inventory/env/LP/secrets.yml rename to ansible/inventory/env/DataPipeline/secrets.yml diff --git a/ansible/inventory/env/core/group_vars/all.yml b/ansible/inventory/env/LearningPlatform/group_vars/all.yml similarity index 100% rename from ansible/inventory/env/core/group_vars/all.yml rename to ansible/inventory/env/LearningPlatform/group_vars/all.yml diff --git a/ansible/inventory/env/core/group_vars/env.yml b/ansible/inventory/env/LearningPlatform/group_vars/env.yml similarity index 100% rename from ansible/inventory/env/core/group_vars/env.yml rename to ansible/inventory/env/LearningPlatform/group_vars/env.yml diff --git a/ansible/inventory/env/core/hosts b/ansible/inventory/env/LearningPlatform/hosts similarity index 100% rename from ansible/inventory/env/core/hosts rename to ansible/inventory/env/LearningPlatform/hosts diff --git a/ansible/inventory/env/core/secrets.yml b/ansible/inventory/env/LearningPlatform/secrets.yml similarity index 100% rename from ansible/inventory/env/core/secrets.yml rename to ansible/inventory/env/LearningPlatform/secrets.yml From 1fb165df25b50c7ba7022b5dc72eb76935523939 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Wed, 30 Jan 2019 16:57:24 +0530 Subject: [PATCH 0830/1345] Issue #000 Cron: Changing frequency of cron --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 1c8dc2f814..ec73c6bb21 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -29,7 +29,7 @@ workflows: nightly: triggers: - schedule: - cron: "0 17 1,5,9,13,17,21,25,29 * *" + cron: "0 17 1,17 * *" filters: branches: only: From 324549eacb55b890d68c8648cf3245c4f603903b Mon Sep 17 00:00:00 2001 From: S M Y Date: Wed, 30 Jan 2019 17:15:00 +0530 Subject: [PATCH 0831/1345] Issue #000 vars: remove unwanted stuff --- Jenkinsfile | 26 - ansible/jmeter-deploy.yml | 5 - ansible/jmeter-provision.yml | 6 - ansible/mongobackup.yml | 8 - ansible/run_command.yml | 3 +- .../swarm/acs-engine/common/azuredeploy.json | 1059 ----------------- .../acs-engine/production.sample/README.md | 80 -- .../azuredeploy.parameters.json.sample | 48 - .../swarm/acs-engine/production.sample/env.sh | 8 - cloud/azure/arm/vm/azuredeploy.json | 162 --- .../arm/vm/azuredeploy.parameters.json.sample | 48 - cloud/openvpn/openvpn.sh | 15 - pipelines/adminutils/Jenkinsfile.sample | 27 - pipelines/adminutils/deploy.sh | 28 - pipelines/adminutils/installDeps.sh | 5 - pipelines/adminutils/metadata.json | 6 - pipelines/am-onboard-apis/Jenkinsfile.sample | 15 - .../am-onboard-consumers/Jenkinsfile.sample | 15 - pipelines/api-manager/Jenkinsfile.sample | 34 - pipelines/api-manager/deploy.sh | 23 - pipelines/api-manager/installDeps.sh | 5 - pipelines/api-manager/metadata.json | 6 - .../Jenkinsfile.sample | 22 - pipelines/cassandra-backup/Jenkinsfile.sample | 32 - .../cassandra-restore/Jenkinsfile.sample | 34 - pipelines/cassandra/Jenkinsfile.sample | 32 - pipelines/cassandra/installDeps.sh | 1 - pipelines/dockerTag.sh | 23 - .../Jenkinsfile.deploy-slave | 19 - .../documentation-jenkins-slave/deploy.sh | 11 - pipelines/es-backup/Jenkinsfile.sample | 20 - pipelines/es-backup/deploy.sh | 6 - pipelines/es-backup/installDeps.sh | 5 - pipelines/es-restore/Jenkinsfile.sample | 17 - pipelines/es-restore/deploy.sh | 6 - pipelines/es-restore/installDeps.sh | 5 - .../jenkins-backup-upload/Jenkinsfile.admin | 18 - pipelines/keycloak1/deploy.sh | 29 - pipelines/keycloak1/installDeps.sh | 5 - pipelines/keycloak1/metadata.json | 6 - pipelines/keycloak2/deploy.sh | 29 - pipelines/keycloak2/installDeps.sh | 5 - pipelines/keycloak2/metadata.json | 6 - pipelines/log-es-backup/Jenkinsfile.sample | 20 - pipelines/log-es-backup/deploy.sh | 6 - pipelines/log-es-backup/installDeps.sh | 5 - pipelines/log-es-restore/deploy.sh | 6 - pipelines/log-es-restore/installDeps.sh | 5 - .../logger-elasticsearch/Jenkinsfile.sample | 22 - pipelines/logger/deploy.sh | 7 - pipelines/logger/installDeps.sh | 5 - pipelines/mongodb-backup/Jenkinsfile.sample | 32 - pipelines/mongodb-backup/installDeps.sh | 1 - pipelines/mongodb/installDeps.sh | 1 - pipelines/monitor/Jenkinsfile.sample | 31 - pipelines/monitor/deploy.sh | 6 - pipelines/monitor/installDeps.sh | 4 - .../postgresql-backup/Jenkinsfile.sample | 24 - .../postgresql-data-update/Jenkinsfile.sample | 21 - .../postgresql-master/Jenkinsfile.sample | 21 - .../postgresql-restore/Jenkinsfile.sample | 37 - .../Jenkinsfile.sample | 22 - pipelines/postgresql-slave/Jenkinsfile.sample | 21 - pipelines/proxy/Jenkinsfile.sample | 25 - pipelines/proxy/deploy.sh | 23 - pipelines/proxy/metadata.json | 6 - .../sunbird-actor-service/Jenkinsfile.sample | 34 - pipelines/sunbird-actor-service/deploy.sh | 29 - .../sunbird-actor-service/installDeps.sh | 5 - pipelines/sunbird-actor-service/metadata.json | 6 - .../sunbird-bootstrap/Jenkinsfile.db.sample | 25 - .../sunbird-bootstrap/Jenkinsfile.sample | 32 - pipelines/sunbird-bootstrap/installDeps.sh | 1 - .../Jenkinsfile.sample | 34 - pipelines/sunbird-content-service/deploy.sh | 29 - .../sunbird-content-service/installDeps.sh | 5 - .../sunbird-content-service/metadata.json | 6 - .../Jenkinsfile.sample | 33 - pipelines/sunbird-learner-service/deploy.sh | 29 - .../sunbird-learner-service/installDeps.sh | 5 - .../sunbird-learner-service/metadata.json | 6 - pipelines/sunbird-player/Jenkinsfile.sample | 34 - pipelines/sunbird-player/deploy.sh | 29 - pipelines/sunbird-player/installDeps.sh | 5 - pipelines/sunbird-player/metadata.json | 6 - .../Jenkinsfile.sample | 33 - pipelines/sunbird-telemetry-service/deploy.sh | 29 - .../sunbird-telemetry-service/installDeps.sh | 5 - .../sunbird-telemetry-service/metadata.json | 6 - .../Jenkinsfile.sample | 18 - 90 files changed, 1 insertion(+), 2757 deletions(-) delete mode 100644 Jenkinsfile delete mode 100644 ansible/jmeter-deploy.yml delete mode 100644 ansible/jmeter-provision.yml delete mode 100644 ansible/mongobackup.yml delete mode 100644 cloud/azure/arm/swarm/acs-engine/common/azuredeploy.json delete mode 100644 cloud/azure/arm/swarm/acs-engine/production.sample/README.md delete mode 100644 cloud/azure/arm/swarm/acs-engine/production.sample/azuredeploy.parameters.json.sample delete mode 100644 cloud/azure/arm/swarm/acs-engine/production.sample/env.sh delete mode 100644 cloud/azure/arm/vm/azuredeploy.json delete mode 100644 cloud/azure/arm/vm/azuredeploy.parameters.json.sample delete mode 100644 cloud/openvpn/openvpn.sh delete mode 100644 pipelines/adminutils/Jenkinsfile.sample delete mode 100755 pipelines/adminutils/deploy.sh delete mode 100755 pipelines/adminutils/installDeps.sh delete mode 100644 pipelines/adminutils/metadata.json delete mode 100644 pipelines/am-onboard-apis/Jenkinsfile.sample delete mode 100644 pipelines/am-onboard-consumers/Jenkinsfile.sample delete mode 100644 pipelines/api-manager/Jenkinsfile.sample delete mode 100755 pipelines/api-manager/deploy.sh delete mode 100755 pipelines/api-manager/installDeps.sh delete mode 100644 pipelines/api-manager/metadata.json delete mode 100644 pipelines/application-elasticsearch/Jenkinsfile.sample delete mode 100644 pipelines/cassandra-backup/Jenkinsfile.sample delete mode 100644 pipelines/cassandra-restore/Jenkinsfile.sample delete mode 100644 pipelines/cassandra/Jenkinsfile.sample delete mode 100644 pipelines/cassandra/installDeps.sh delete mode 100755 pipelines/dockerTag.sh delete mode 100644 pipelines/documentation-jenkins-slave/Jenkinsfile.deploy-slave delete mode 100755 pipelines/documentation-jenkins-slave/deploy.sh delete mode 100644 pipelines/es-backup/Jenkinsfile.sample delete mode 100755 pipelines/es-backup/deploy.sh delete mode 100755 pipelines/es-backup/installDeps.sh delete mode 100644 pipelines/es-restore/Jenkinsfile.sample delete mode 100755 pipelines/es-restore/deploy.sh delete mode 100755 pipelines/es-restore/installDeps.sh delete mode 100644 pipelines/jenkins-backup-upload/Jenkinsfile.admin delete mode 100755 pipelines/keycloak1/deploy.sh delete mode 100755 pipelines/keycloak1/installDeps.sh delete mode 100644 pipelines/keycloak1/metadata.json delete mode 100755 pipelines/keycloak2/deploy.sh delete mode 100755 pipelines/keycloak2/installDeps.sh delete mode 100644 pipelines/keycloak2/metadata.json delete mode 100644 pipelines/log-es-backup/Jenkinsfile.sample delete mode 100755 pipelines/log-es-backup/deploy.sh delete mode 100755 pipelines/log-es-backup/installDeps.sh delete mode 100755 pipelines/log-es-restore/deploy.sh delete mode 100755 pipelines/log-es-restore/installDeps.sh delete mode 100644 pipelines/logger-elasticsearch/Jenkinsfile.sample delete mode 100755 pipelines/logger/deploy.sh delete mode 100755 pipelines/logger/installDeps.sh delete mode 100644 pipelines/mongodb-backup/Jenkinsfile.sample delete mode 100644 pipelines/mongodb-backup/installDeps.sh delete mode 100644 pipelines/mongodb/installDeps.sh delete mode 100644 pipelines/monitor/Jenkinsfile.sample delete mode 100755 pipelines/monitor/deploy.sh delete mode 100755 pipelines/monitor/installDeps.sh delete mode 100644 pipelines/postgresql-backup/Jenkinsfile.sample delete mode 100644 pipelines/postgresql-data-update/Jenkinsfile.sample delete mode 100644 pipelines/postgresql-master/Jenkinsfile.sample delete mode 100644 pipelines/postgresql-restore/Jenkinsfile.sample delete mode 100644 pipelines/postgresql-slave-to-master-promotion/Jenkinsfile.sample delete mode 100644 pipelines/postgresql-slave/Jenkinsfile.sample delete mode 100644 pipelines/proxy/Jenkinsfile.sample delete mode 100755 pipelines/proxy/deploy.sh delete mode 100644 pipelines/proxy/metadata.json delete mode 100644 pipelines/sunbird-actor-service/Jenkinsfile.sample delete mode 100755 pipelines/sunbird-actor-service/deploy.sh delete mode 100755 pipelines/sunbird-actor-service/installDeps.sh delete mode 100644 pipelines/sunbird-actor-service/metadata.json delete mode 100644 pipelines/sunbird-bootstrap/Jenkinsfile.db.sample delete mode 100644 pipelines/sunbird-bootstrap/Jenkinsfile.sample delete mode 100644 pipelines/sunbird-bootstrap/installDeps.sh delete mode 100644 pipelines/sunbird-content-service/Jenkinsfile.sample delete mode 100755 pipelines/sunbird-content-service/deploy.sh delete mode 100755 pipelines/sunbird-content-service/installDeps.sh delete mode 100644 pipelines/sunbird-content-service/metadata.json delete mode 100644 pipelines/sunbird-learner-service/Jenkinsfile.sample delete mode 100755 pipelines/sunbird-learner-service/deploy.sh delete mode 100755 pipelines/sunbird-learner-service/installDeps.sh delete mode 100644 pipelines/sunbird-learner-service/metadata.json delete mode 100644 pipelines/sunbird-player/Jenkinsfile.sample delete mode 100755 pipelines/sunbird-player/deploy.sh delete mode 100755 pipelines/sunbird-player/installDeps.sh delete mode 100644 pipelines/sunbird-player/metadata.json delete mode 100644 pipelines/sunbird-telemetry-service/Jenkinsfile.sample delete mode 100755 pipelines/sunbird-telemetry-service/deploy.sh delete mode 100755 pipelines/sunbird-telemetry-service/installDeps.sh delete mode 100644 pipelines/sunbird-telemetry-service/metadata.json delete mode 100644 pipelines/swarm-agent-docker-prune/Jenkinsfile.sample diff --git a/Jenkinsfile b/Jenkinsfile deleted file mode 100644 index e022376380..0000000000 --- a/Jenkinsfile +++ /dev/null @@ -1,26 +0,0 @@ -pipeline { - agent { - label 'build-slave' - } - triggers { - pollSCM('H/5 * * * *') - } - stages { - stage('Pre-Build'){ - steps { - sh('chmod a+x ansible/installDeps.sh') - sh('./ansible/installDeps.sh') - } - } - stage('Build') { - steps { - sh './test.sh' - } - } - } - post { - failure { - slackSend channel: '#devops-team', color: 'danger', message: "Build Failed - ${env.JOB_NAME} ${env.BUILD_NUMBER} (<${env.BUILD_URL}|Open>)" - } - } -} \ No newline at end of file diff --git a/ansible/jmeter-deploy.yml b/ansible/jmeter-deploy.yml deleted file mode 100644 index c452b2f500..0000000000 --- a/ansible/jmeter-deploy.yml +++ /dev/null @@ -1,5 +0,0 @@ -- hosts: "jmeter" - vars_files: - - ['{{inventory_dir}}/secrets.yml', 'secrets/{{env}}.yml'] - roles: - - jmeter-deploy \ No newline at end of file diff --git a/ansible/jmeter-provision.yml b/ansible/jmeter-provision.yml deleted file mode 100644 index ef0fc1c866..0000000000 --- a/ansible/jmeter-provision.yml +++ /dev/null @@ -1,6 +0,0 @@ -- hosts: "jmeter" - become: yes - vars_files: - - ['{{inventory_dir}}/secrets.yml', 'secrets/{{env}}.yml'] - roles: - - jmeter-provision \ No newline at end of file diff --git a/ansible/mongobackup.yml b/ansible/mongobackup.yml deleted file mode 100644 index f17a55222c..0000000000 --- a/ansible/mongobackup.yml +++ /dev/null @@ -1,8 +0,0 @@ -- hosts: mongodb - vars_files: - - ['{{inventory_dir}}/secrets.yml', 'secrets/{{env}}.yml'] - become: yes - roles: - - mongo-backup - - diff --git a/ansible/run_command.yml b/ansible/run_command.yml index e54880135d..350a988ff0 100644 --- a/ansible/run_command.yml +++ b/ansible/run_command.yml @@ -1,4 +1,3 @@ -# This playbook uses all as host. Run this playbook with --limit pattern - hosts: all vars_files: - ['{{inventory_dir}}/secrets.yml', 'secrets/{{env}}.yml'] @@ -14,4 +13,4 @@ - debug: var: log verbosity: 4 - become: yes \ No newline at end of file + become: yes diff --git a/cloud/azure/arm/swarm/acs-engine/common/azuredeploy.json b/cloud/azure/arm/swarm/acs-engine/common/azuredeploy.json deleted file mode 100644 index bb63477204..0000000000 --- a/cloud/azure/arm/swarm/acs-engine/common/azuredeploy.json +++ /dev/null @@ -1,1059 +0,0 @@ -{ - "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", - "contentVersion": "1.0.0.0", - "parameters": { - "agentpublicCount": { - "allowedValues": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100 - ], - "defaultValue": 3, - "metadata": { - "description": "The number of agents for the cluster. This value can be from 1 to 100" - }, - "type": "int" - }, - "agentpublicEndpointDNSNamePrefix": { - "metadata": { - "description": "Sets the Domain name label for the agent pool IP Address. The concatenation of the domain name label and the regional DNS zone make up the fully qualified domain name associated with the public IP address." - }, - "type": "string" - }, - "agentpublicSubnet": { - "defaultValue": "10.0.0.0/16", - "metadata": { - "description": "Sets the subnet of agent pool 'agentpublic'." - }, - "type": "string" - }, - "internalLBprivateIPAddress": { - "defaultValue": "10.0.0.100", - "metadata": { - "description": "IP of the internal load balancer" - }, - "type": "string" - }, - "agentpublicVMSize": { - "allowedValues": [ - "Standard_A10", - "Standard_A11", - "Standard_A2", - "Standard_A2_v2", - "Standard_A2m_v2", - "Standard_A3", - "Standard_A4", - "Standard_A4_v2", - "Standard_A4m_v2", - "Standard_A5", - "Standard_A6", - "Standard_A7", - "Standard_A8", - "Standard_A8_v2", - "Standard_A8m_v2", - "Standard_A9", - "Standard_D11", - "Standard_D11_v2", - "Standard_D11_v2_Promo", - "Standard_D12", - "Standard_D12_v2", - "Standard_D12_v2_Promo", - "Standard_D13", - "Standard_D13_v2", - "Standard_D13_v2_Promo", - "Standard_D14", - "Standard_D14_v2", - "Standard_D14_v2_Promo", - "Standard_D15_v2", - "Standard_D2", - "Standard_D2_v2", - "Standard_D2_v2_Promo", - "Standard_D3", - "Standard_D3_v2", - "Standard_D3_v2_Promo", - "Standard_D4", - "Standard_D4_v2", - "Standard_D4_v2_Promo", - "Standard_D5_v2", - "Standard_D5_v2_Promo", - "Standard_DS11", - "Standard_DS11_v2", - "Standard_DS11_v2_Promo", - "Standard_DS12", - "Standard_DS12_v2", - "Standard_DS12_v2_Promo", - "Standard_DS13", - "Standard_DS13_v2", - "Standard_DS13_v2_Promo", - "Standard_DS14", - "Standard_DS14_v2", - "Standard_DS14_v2_Promo", - "Standard_DS15_v2", - "Standard_DS2", - "Standard_DS2_v2", - "Standard_DS2_v2_Promo", - "Standard_DS3", - "Standard_DS3_v2", - "Standard_DS3_v2_Promo", - "Standard_DS4", - "Standard_DS4_v2", - "Standard_DS4_v2_Promo", - "Standard_DS5_v2", - "Standard_DS5_v2_Promo", - "Standard_F16", - "Standard_F16s", - "Standard_F2", - "Standard_F2s", - "Standard_F4", - "Standard_F4s", - "Standard_F8", - "Standard_F8s", - "Standard_G1", - "Standard_G2", - "Standard_G3", - "Standard_G4", - "Standard_G5", - "Standard_GS1", - "Standard_GS2", - "Standard_GS3", - "Standard_GS4", - "Standard_GS5", - "Standard_H16", - "Standard_H16m", - "Standard_H16mr", - "Standard_H16r", - "Standard_H8", - "Standard_H8m", - "Standard_L16s", - "Standard_L32s", - "Standard_L4s", - "Standard_L8s", - "Standard_M128ms", - "Standard_M128s", - "Standard_M64ms", - "Standard_NC12", - "Standard_NC24", - "Standard_NC24r", - "Standard_NC6", - "Standard_NV12", - "Standard_NV24", - "Standard_NV6" - ], - "defaultValue": "Standard_D3_v2", - "metadata": { - "description": "The size of the Virtual Machine." - }, - "type": "string" - }, - "firstConsecutiveStaticIP": { - "defaultValue": "172.16.0.5", - "metadata": { - "description": "Sets the static IP of the first master" - }, - "type": "string" - }, - "linuxAdminUsername": { - "metadata": { - "description": "User name for the Linux Virtual Machines (SSH or Password)." - }, - "type": "string" - }, - "location": { - "defaultValue": "", - "metadata": { - "description": "Sets the location for all resources in the cluster" - }, - "type": "string" - }, - "masterEndpointDNSNamePrefix": { - "metadata": { - "description": "Sets the Domain name label for the master IP Address. The concatenation of the domain name label and the regional DNS zone make up the fully qualified domain name associated with the public IP address." - }, - "type": "string" - }, - "masterSubnet": { - "defaultValue": "172.16.0.0/24", - "metadata": { - "description": "Sets the subnet of the master node(s)." - }, - "type": "string" - }, - "masterCount": { - "defaultValue": "1", - "metadata": { - "description": "Master nodes in the swarm" - }, - "type": "int" - }, - "masterVMSize": { - "allowedValues": [ - "Standard_A10", - "Standard_A11", - "Standard_A2", - "Standard_A2_v2", - "Standard_A2m_v2", - "Standard_A3", - "Standard_A4", - "Standard_A4_v2", - "Standard_A4m_v2", - "Standard_A5", - "Standard_A6", - "Standard_A7", - "Standard_A8", - "Standard_A8_v2", - "Standard_A8m_v2", - "Standard_A9", - "Standard_D11", - "Standard_D11_v2", - "Standard_D11_v2_Promo", - "Standard_D12", - "Standard_D12_v2", - "Standard_D12_v2_Promo", - "Standard_D13", - "Standard_D13_v2", - "Standard_D13_v2_Promo", - "Standard_D14", - "Standard_D14_v2", - "Standard_D14_v2_Promo", - "Standard_D15_v2", - "Standard_D2", - "Standard_D2_v2", - "Standard_D2_v2_Promo", - "Standard_D3", - "Standard_D3_v2", - "Standard_D3_v2_Promo", - "Standard_D4", - "Standard_D4_v2", - "Standard_D4_v2_Promo", - "Standard_D5_v2", - "Standard_D5_v2_Promo", - "Standard_DS11", - "Standard_DS11_v2", - "Standard_DS11_v2_Promo", - "Standard_DS12", - "Standard_DS12_v2", - "Standard_DS12_v2_Promo", - "Standard_DS13", - "Standard_DS13_v2", - "Standard_DS13_v2_Promo", - "Standard_DS14", - "Standard_DS14_v2", - "Standard_DS14_v2_Promo", - "Standard_DS15_v2", - "Standard_DS2", - "Standard_DS2_v2", - "Standard_DS2_v2_Promo", - "Standard_DS3", - "Standard_DS3_v2", - "Standard_DS3_v2_Promo", - "Standard_DS4", - "Standard_DS4_v2", - "Standard_DS4_v2_Promo", - "Standard_DS5_v2", - "Standard_DS5_v2_Promo", - "Standard_F16", - "Standard_F16s", - "Standard_F2", - "Standard_F2s", - "Standard_F4", - "Standard_F4s", - "Standard_F8", - "Standard_F8s", - "Standard_G1", - "Standard_G2", - "Standard_G3", - "Standard_G4", - "Standard_G5", - "Standard_GS1", - "Standard_GS2", - "Standard_GS3", - "Standard_GS4", - "Standard_GS5", - "Standard_H16", - "Standard_H16m", - "Standard_H16mr", - "Standard_H16r", - "Standard_H8", - "Standard_H8m", - "Standard_L16s", - "Standard_L32s", - "Standard_L4s", - "Standard_L8s", - "Standard_M128ms", - "Standard_M128s", - "Standard_M64ms", - "Standard_NC12", - "Standard_NC24", - "Standard_NC24r", - "Standard_NC6", - "Standard_NV12", - "Standard_NV24", - "Standard_NV6" - ], - "metadata": { - "description": "The size of the Virtual Machine." - }, - "type": "string" - }, - "nameSuffix": { - "defaultValue": "49420225", - "metadata": { - "description": "A string hash of the master DNS name to uniquely identify the cluster." - }, - "type": "string" - }, - "sshRSAPublicKey": { - "metadata": { - "description": "SSH public key used for auth to all Linux machines. Not Required. If not set, you must provide a password key." - }, - "type": "string" - }, - "targetEnvironment": { - "defaultValue": "AzurePublicCloud", - "metadata": { - "description": "The azure deploy environment. Currently support: AzurePublicCloud, AzureChinaCloud" - }, - "type": "string" - } - }, - "variables": { - "adminUsername": "[parameters('linuxAdminUsername')]", - "agentCustomScript": "[concat('/usr/bin/nohup /bin/bash -c \"/bin/bash /opt/azure/containers/',variables('configureClusterScriptFile'), ' ',variables('clusterInstallParameters'),' >> /var/log/azure/cluster-bootstrap.log 2>&1 &\" &')]", - "agentMaxVMs": 100, - "agentRunCmd": "[concat('runcmd:\n - [ /bin/bash, /opt/azure/containers/install-cluster.sh ]\n\n')]", - "agentRunCmdFile": "[concat(' - content: |\n #!/bin/bash\n ','sudo mkdir -p /var/log/azure\n ',variables('agentCustomScript'),'\n path: /opt/azure/containers/install-cluster.sh\n permissions: \"0744\"\n')]", - "agentpublicCount": "[parameters('agentpublicCount')]", - "agentpublicEndpointDNSNamePrefix": "[tolower(parameters('agentpublicEndpointDNSNamePrefix'))]", - "agentpublicIPAddressName": "[concat(variables('orchestratorName'), '-agent-ip-', variables('agentpublicEndpointDNSNamePrefix'), '-', variables('nameSuffix'))]", - "agentpublicIndex": 0, - "agentpublicLbBackendPoolName": "[concat(variables('orchestratorName'), '-agentpublic-', variables('nameSuffix'))]", - "agentpublicLbID": "[resourceId('Microsoft.Network/loadBalancers',variables('agentpublicLbName'))]", - "agentpublicLbIPConfigID": "[concat(variables('agentpublicLbID'),'/frontendIPConfigurations/', variables('agentpublicLbIPConfigName'))]", - "agentpublicLbIPConfigName": "[concat(variables('orchestratorName'), '-agentpublic-', variables('nameSuffix'))]", - "agentpublicLbName": "[concat(variables('orchestratorName'), '-agentpublic-', variables('nameSuffix'))]", - "agentprivateLbBackendPoolName": "[concat(variables('orchestratorName'), '-agentprivate-', variables('nameSuffix'))]", - "agentprivateLbID": "[resourceId('Microsoft.Network/loadBalancers',variables('agentprivateLbName'))]", - "agentprivateLbIPConfigID": "[concat(variables('agentprivateLbID'),'/frontendIPConfigurations/', variables('agentprivateLbIPConfigName'))]", - "agentprivateLbIPConfigName": "[concat(variables('orchestratorName'), '-agentprivate-', variables('nameSuffix'))]", - "agentprivateLbName": "[concat(variables('orchestratorName'), '-agentprivate-', variables('nameSuffix'))]", - "agentpublicSubnet": "[parameters('agentpublicSubnet')]", - "internalLBprivateIPAddress": "[parameters('internalLBprivateIPAddress')]", - "agentpublicSubnetName": "[concat(variables('orchestratorName'), '-agentpublicsubnet')]", - "agentpublicVMNamePrefix": "[concat(variables('orchestratorName'), '-agentpublic-', variables('nameSuffix'))]", - "agentpublicVMSize": "[parameters('agentpublicVMSize')]", - "agentpublicVMSizeTier": "[split(parameters('agentpublicVMSize'),'_')[0]]", - "agentpublicVnetSubnetID": "[concat(variables('vnetID'),'/subnets/',variables('agentpublicSubnetName'))]", - "apiVersionDefault": "2016-03-30", - "apiVersionStorageManagedDisks": "2016-04-30-preview", - "clusterInstallParameters": "[concat(variables('masterCount'), ' ',variables('masterVMNamePrefix'), ' ',variables('masterFirstAddrOctet4'), ' ',variables('adminUsername'),' ',variables('postInstallScriptURI'),' ',variables('masterFirstAddrPrefix'))]", - "configureClusterScriptFile": "configure-swarmmode-cluster.sh", - "location": "[variables('locations')[mod(add(2,length(parameters('location'))),add(1,length(parameters('location'))))]]", - "locations": [ - "[resourceGroup().location]", - "[parameters('location')]" - ], - "masterAvailabilitySet": "[concat(variables('orchestratorName'), '-master-availabilitySet-', variables('nameSuffix'))]", - "masterCount": "[parameters('masterCount')]", - "masterCustomScript": "[concat('/bin/bash -c \"/bin/bash /opt/azure/containers/',variables('configureClusterScriptFile'), ' ',variables('clusterInstallParameters'),' >> /var/log/azure/cluster-bootstrap.log 2>&1\"')]", - "masterEndpointDNSNamePrefix": "[tolower(parameters('masterEndpointDNSNamePrefix'))]", - "masterFirstAddrOctet4": "[variables('masterFirstAddrOctets')[3]]", - "masterFirstAddrOctets": "[split(parameters('firstConsecutiveStaticIP'),'.')]", - "masterFirstAddrPrefix": "[concat(variables('masterFirstAddrOctets')[0],'.',variables('masterFirstAddrOctets')[1],'.',variables('masterFirstAddrOctets')[2],'.')]", - "masterLbBackendPoolName": "[concat(variables('orchestratorName'), '-master-pool-', variables('nameSuffix'))]", - "masterLbID": "[resourceId('Microsoft.Network/loadBalancers',variables('masterLbName'))]", - "masterLbIPConfigID": "[concat(variables('masterLbID'),'/frontendIPConfigurations/', variables('masterLbIPConfigName'))]", - "masterLbIPConfigName": "[concat(variables('orchestratorName'), '-master-lbFrontEnd-', variables('nameSuffix'))]", - "masterLbInboundNatRules": [ - [ - { - "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'0')]" - }, - { - "id": "[concat(variables('masterSshPort22InboundNatRuleIdPrefix'),'0')]" - } - ], - [ - { - "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'1')]" - } - ], - [ - { - "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'2')]" - } - ], - [ - { - "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'3')]" - } - ], - [ - { - "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'4')]" - } - ] - ], - "masterLbName": "[concat(variables('orchestratorName'), '-master-lb-', variables('nameSuffix'))]", - "masterPublicIPAddressName": "[concat(variables('orchestratorName'), '-master-ip-', variables('masterEndpointDNSNamePrefix'), '-', variables('nameSuffix'))]", - "masterSshInboundNatRuleIdPrefix": "[concat(variables('masterLbID'),'/inboundNatRules/SSH-',variables('masterVMNamePrefix'))]", - "masterSshPort22InboundNatRuleIdPrefix": "[concat(variables('masterLbID'),'/inboundNatRules/SSHPort22-',variables('masterVMNamePrefix'))]", - "masterSshPort22InboundNatRuleNamePrefix": "[concat(variables('masterLbName'),'/SSHPort22-',variables('masterVMNamePrefix'))]", - "masterSubnet": "[parameters('masterSubnet')]", - "masterSubnetName": "[concat(variables('orchestratorName'), '-masterSubnet')]", - "masterVMNamePrefix": "[concat(variables('orchestratorName'), '-master-', variables('nameSuffix'), '-')]", - "masterVMSize": "[parameters('masterVMSize')]", - "masterVnetSubnetID": "[concat(variables('vnetID'),'/subnets/',variables('masterSubnetName'))]", - "maxVMsPerPool": 100, - "nameSuffix": "[parameters('nameSuffix')]", - "orchestratorName": "swarmm", - "osImageOffer": "UbuntuServer", - "osImagePublisher": "Canonical", - "osImageSKU": "16.04-LTS", - "osImageVersion": "16.04.201706191", - "postInstallScriptURI": "disabled", - "sshKeyPath": "[concat('/home/', variables('adminUsername'), '/.ssh/authorized_keys')]", - "sshRSAPublicKey": "[parameters('sshRSAPublicKey')]", - "storageAccountBaseName": "", - "storageAccountPrefixes": [], - "virtualNetworkName": "[concat(variables('orchestratorName'), '-vnet-', variables('nameSuffix'))]", - "vnetID": "[resourceId('Microsoft.Network/virtualNetworks',variables('virtualNetworkName'))]" - }, - "resources": [ - { - "apiVersion": "[variables('apiVersionDefault')]", - "location": "[variables('location')]", - "name": "[variables('agentpublicIPAddressName')]", - "properties": { - "dnsSettings": { - "domainNameLabel": "[variables('agentpublicEndpointDNSNamePrefix')]" - }, - "publicIPAllocationMethod": "Static" - }, - "type": "Microsoft.Network/publicIPAddresses" - }, - { - "apiVersion": "[variables('apiVersionDefault')]", - "dependsOn": [ - "[concat('Microsoft.Network/publicIPAddresses/', variables('agentpublicIPAddressName'))]" - ], - "location": "[variables('location')]", - "name": "[variables('agentpublicLbName')]", - "properties": { - "backendAddressPools": [ - { - "name": "[variables('agentpublicLbBackendPoolName')]" - } - ], - "frontendIPConfigurations": [ - { - "name": "[variables('agentpublicLbIPConfigName')]", - "properties": { - "publicIPAddress": { - "id": "[resourceId('Microsoft.Network/publicIPAddresses',variables('agentpublicIPAddressName'))]" - } - } - } - ], - "inboundNatRules": [], - "loadBalancingRules": [ - { - "name": "LBRule80", - "properties": { - "backendAddressPool": { - "id": "[concat(variables('agentpublicLbID'), '/backendAddressPools/', variables('agentpublicLbBackendPoolName'))]" - }, - "backendPort": 80, - "enableFloatingIP": false, - "frontendIPConfiguration": { - "id": "[variables('agentpublicLbIPConfigID')]" - }, - "frontendPort": 80, - "idleTimeoutInMinutes": 5, - "loadDistribution": "Default", - "probe": { - "id": "[concat(variables('agentpublicLbID'),'/probes/tcp80Probe')]" - }, - "protocol": "tcp" - } - }, - { - "name": "LBRule443", - "properties": { - "backendAddressPool": { - "id": "[concat(variables('agentpublicLbID'), '/backendAddressPools/', variables('agentpublicLbBackendPoolName'))]" - }, - "backendPort": 443, - "enableFloatingIP": false, - "frontendIPConfiguration": { - "id": "[variables('agentpublicLbIPConfigID')]" - }, - "frontendPort": 443, - "idleTimeoutInMinutes": 5, - "loadDistribution": "Default", - "probe": { - "id": "[concat(variables('agentpublicLbID'),'/probes/tcp443Probe')]" - }, - "protocol": "tcp" - } - } - ], - "probes": [ - { - "name": "tcp80Probe", - "properties": { - "intervalInSeconds": "5", - "numberOfProbes": "2", - "port": 80, - "protocol": "tcp" - } - }, - { - "name": "tcp443Probe", - "properties": { - "intervalInSeconds": "5", - "numberOfProbes": "2", - "port": 443, - "protocol": "tcp" - } - } - ] - }, - "type": "Microsoft.Network/loadBalancers" - }, - { - "apiVersion": "[variables('apiVersionStorageManagedDisks')]", - "dependsOn": [ - "[concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))]", - "[variables('vnetID')]", - "[variables('agentpublicLbID')]", - "[variables('agentprivateLbID')]" - ], - "location": "[variables('location')]", - "name": "[concat(variables('agentpublicVMNamePrefix'), '-vmss')]", - "properties": { - "upgradePolicy": { - "mode": "Automatic" - }, - "virtualMachineProfile": { - "networkProfile": { - "networkInterfaceConfigurations": [ - { - "name": "nic", - "properties": { - "ipConfigurations": [ - { - "name": "nicipconfig", - "properties": { - "loadBalancerBackendAddressPools": [ - { - "id": "[concat(variables('agentpublicLbID'), '/backendAddressPools/', variables('agentpublicLbBackendPoolName'))]" - }, - { - "id": "[concat(variables('agentprivateLbID'), '/backendAddressPools/', variables('agentprivateLbBackendPoolName'))]" - } - ], - "subnet": { - "id": "[variables('agentpublicVnetSubnetID')]" - } - } - } - ], - "primary": "true" - } - } - ] - }, - "osProfile": { - "adminUsername": "[variables('adminUsername')]", - "computerNamePrefix": "[variables('agentpublicVMNamePrefix')]", - "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarmmode-cluster.sh\n permissions: \"0744\"\n\n',variables('agentRunCmdFile'),variables('agentRunCmd')))]", - "linuxConfiguration": { - "disablePasswordAuthentication": "true", - "ssh": { - "publicKeys": [ - { - "keyData": "[parameters('sshRSAPublicKey')]", - "path": "[variables('sshKeyPath')]" - } - ] - } - } - }, - "storageProfile": { - "imageReference": { - "offer": "[variables('osImageOffer')]", - "publisher": "[variables('osImagePublisher')]", - "sku": "[variables('osImageSKU')]", - "version": "[variables('osImageVersion')]" - }, - "osDisk": { - "caching": "ReadWrite", - "createOption": "FromImage" - } - }, - "extensionProfile": { - "extensions": [ - { - "type": "Microsoft.Compute/virtualMachines/extensions", - "name": "[concat(variables('agentpublicVMNamePrefix'), '-SwarmNodePostInstallScript')]", - "properties": { - "publisher": "Microsoft.Azure.Extensions", - "type": "CustomScript", - "typeHandlerVersion": "2.0", - "settings": { - "fileUris": [ - "https://raw.githubusercontent.com/project-sunbird/sunbird-devops/master/deploy/docker-swam-node-post-install.sh" - ], - "commandToExecute": "sh docker-swam-node-post-install.sh" - } - } - } - ] - } - } - }, - "sku": { - "capacity": "[variables('agentpublicCount')]", - "name": "[variables('agentpublicVMSize')]", - "tier": "[variables('agentpublicVMSizeTier')]" - }, - "tags": { - "creationSource": "[concat('acsengine-', variables('agentpublicVMNamePrefix'), '-vmss')]" - }, - "type": "Microsoft.Compute/virtualMachineScaleSets" - }, - { - "apiVersion": "[variables('apiVersionDefault')]", - "location": "[variables('location')]", - "name": "[variables('virtualNetworkName')]", - "properties": { - "addressSpace": { - "addressPrefixes": [ - "[variables('masterSubnet')]", - "[variables('agentpublicSubnet')]" - ] - }, - "subnets": [ - { - "name": "[variables('masterSubnetName')]", - "properties": { - "addressPrefix": "[variables('masterSubnet')]" - } - }, - { - "name": "[variables('agentpublicSubnetName')]", - "properties": { - "addressPrefix": "[variables('agentpublicSubnet')]" - } - } - ] - }, - "type": "Microsoft.Network/virtualNetworks" - }, - { - "type": "Microsoft.Network/loadBalancers", - "name": "[variables('agentprivateLbName')]", - "location": "[variables('location')]", - "apiVersion": "[variables('apiVersionDefault')]", - "dependsOn": [ - "[variables('vnetID')]" - ], - "properties": { - "frontendIPConfigurations": [ - { - "name": "[variables('agentprivateLbIPConfigName')]", - "properties": { - "subnet": { - "id": "[variables('agentpublicVnetSubnetID')]" - }, - "privateIPAddress": "[variables('internalLBprivateIPAddress')]", - "privateIPAllocationMethod": "Static" - } - } - ], - "backendAddressPools": [ - { - "name": "[variables('agentprivateLbBackendPoolName')]" - } - ], - "inboundNatPools": [], - "loadBalancingRules": [ - { - "name": "LogRule", - "properties": { - "loadDistribution": "Default", - "frontendIPConfiguration": { - "id": "[variables('agentprivateLbIPConfigID')]" - }, - "backendAddressPool": { - "id": "[concat(variables('agentprivateLbID'), '/backendAddressPools/', variables('agentprivateLbBackendPoolName'))]" - }, - "protocol": "Tcp", - "frontendPort": 51415, - "backendPort": 51415, - "enableFloatingIP": false, - "idleTimeoutInMinutes": 5, - "probe": { - "id": "[concat(variables('agentprivateLbID'),'/probes/tcp51415Probe')]" - } - } - }, - { - "name": "LogstashRule", - "properties": { - "loadDistribution": "Default", - "frontendIPConfiguration": { - "id": "[variables('agentprivateLbIPConfigID')]" - }, - "backendAddressPool": { - "id": "[concat(variables('agentprivateLbID'), '/backendAddressPools/', variables('agentprivateLbBackendPoolName'))]" - }, - "protocol": "Tcp", - "frontendPort": 5044, - "backendPort": 5044, - "enableFloatingIP": false, - "idleTimeoutInMinutes": 5, - "probe": { - "id": "[concat(variables('agentprivateLbID'),'/probes/tcp5044Probe')]" - } - } - } - ], - "probes": [ - { - "name": "tcp51415Probe", - "properties": { - "intervalInSeconds": "5", - "numberOfProbes": "2", - "port": 51415, - "protocol": "tcp" - } - }, - { - "name": "tcp5044Probe", - "properties": { - "intervalInSeconds": "5", - "numberOfProbes": "2", - "port": 5044, - "protocol": "tcp" - } - } - ] - } - }, - { - "apiVersion": "[variables('apiVersionStorageManagedDisks')]", - "location": "[variables('location')]", - "name": "[variables('masterAvailabilitySet')]", - "properties": { - "managed": "true", - "platformFaultDomainCount": "2", - "platformUpdateDomainCount": "3" - }, - "type": "Microsoft.Compute/availabilitySets" - }, - { - "apiVersion": "[variables('apiVersionDefault')]", - "location": "[variables('location')]", - "name": "[variables('masterPublicIPAddressName')]", - "properties": { - "dnsSettings": { - "domainNameLabel": "[variables('masterEndpointDNSNamePrefix')]" - }, - "publicIPAllocationMethod": "Static" - }, - "type": "Microsoft.Network/publicIPAddresses" - }, - { - "apiVersion": "[variables('apiVersionDefault')]", - "dependsOn": [ - "[concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))]" - ], - "location": "[variables('location')]", - "name": "[variables('masterLbName')]", - "properties": { - "backendAddressPools": [ - { - "name": "[variables('masterLbBackendPoolName')]" - } - ], - "frontendIPConfigurations": [ - { - "name": "[variables('masterLbIPConfigName')]", - "properties": { - "publicIPAddress": { - "id": "[resourceId('Microsoft.Network/publicIPAddresses',variables('masterPublicIPAddressName'))]" - } - } - } - ] - }, - "type": "Microsoft.Network/loadBalancers" - }, - { - "apiVersion": "[variables('apiVersionDefault')]", - "copy": { - "count": "[variables('masterCount')]", - "name": "masterLbLoopNode" - }, - "dependsOn": [ - "[variables('masterLbID')]" - ], - "location": "[variables('location')]", - "name": "[concat(variables('masterLbName'), '/', 'SSH-', variables('masterVMNamePrefix'), copyIndex())]", - "properties": { - "backendPort": 22, - "enableFloatingIP": false, - "frontendIPConfiguration": { - "id": "[variables('masterLbIPConfigID')]" - }, - "frontendPort": "[copyIndex(2200)]", - "protocol": "tcp" - }, - "type": "Microsoft.Network/loadBalancers/inboundNatRules" - }, - { - "apiVersion": "[variables('apiVersionDefault')]", - "dependsOn": [ - "[variables('masterLbID')]" - ], - "location": "[variables('location')]", - "name": "[concat(variables('masterSshPort22InboundNatRuleNamePrefix'), '0')]", - "properties": { - "backendPort": 2222, - "enableFloatingIP": false, - "frontendIPConfiguration": { - "id": "[variables('masterLbIPConfigID')]" - }, - "frontendPort": "22", - "protocol": "tcp" - }, - "type": "Microsoft.Network/loadBalancers/inboundNatRules" - }, - { - "apiVersion": "[variables('apiVersionDefault')]", - "copy": { - "count": "[variables('masterCount')]", - "name": "nicLoopNode" - }, - "dependsOn": [ - "[variables('vnetID')]", - "[variables('masterLbID')]", - "[concat(variables('masterSshPort22InboundNatRuleIdPrefix'),'0')]", - "[concat(variables('masterSshInboundNatRuleIdPrefix'),copyIndex())]" - ], - "location": "[variables('location')]", - "name": "[concat(variables('masterVMNamePrefix'), 'nic-', copyIndex())]", - "properties": { - "ipConfigurations": [ - { - "name": "ipConfigNode", - "properties": { - "loadBalancerBackendAddressPools": [ - { - "id": "[concat(variables('masterLbID'), '/backendAddressPools/', variables('masterLbBackendPoolName'))]" - } - ], - "loadBalancerInboundNatRules": "[variables('masterLbInboundNatRules')[copyIndex()]]", - "privateIPAddress": "[concat(variables('masterFirstAddrPrefix'), copyIndex(int(variables('masterFirstAddrOctet4'))))]", - "privateIPAllocationMethod": "Static", - "subnet": { - "id": "[variables('masterVnetSubnetID')]" - } - } - } - ] - }, - "type": "Microsoft.Network/networkInterfaces" - }, - { - "apiVersion": "[variables('apiVersionStorageManagedDisks')]", - "copy": { - "count": "[variables('masterCount')]", - "name": "vmLoopNode" - }, - "dependsOn": [ - "[concat('Microsoft.Network/networkInterfaces/', variables('masterVMNamePrefix'), 'nic-', copyIndex())]", - "[concat('Microsoft.Compute/availabilitySets/',variables('masterAvailabilitySet'))]" - ], - "location": "[variables('location')]", - "name": "[concat(variables('masterVMNamePrefix'), copyIndex())]", - "properties": { - "availabilitySet": { - "id": "[resourceId('Microsoft.Compute/availabilitySets',variables('masterAvailabilitySet'))]" - }, - "hardwareProfile": { - "vmSize": "[variables('masterVMSize')]" - }, - "networkProfile": { - "networkInterfaces": [ - { - "id": "[resourceId('Microsoft.Network/networkInterfaces',concat(variables('masterVMNamePrefix'), 'nic-', copyIndex()))]" - } - ] - }, - "osProfile": { - "adminUsername": "[variables('adminUsername')]", - "computername": "[concat(variables('masterVMNamePrefix'), copyIndex())]", - "customData": "[base64('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarmmode-cluster.sh\n permissions: \"0744\"\n\n')]", - "linuxConfiguration": { - "disablePasswordAuthentication": "true", - "ssh": { - "publicKeys": [ - { - "keyData": "[variables('sshRSAPublicKey')]", - "path": "[variables('sshKeyPath')]" - } - ] - } - } - }, - "storageProfile": { - "imageReference": { - "offer": "[variables('osImageOffer')]", - "publisher": "[variables('osImagePublisher')]", - "sku": "[variables('osImageSKU')]", - "version": "[variables('osImageVersion')]" - }, - "osDisk": { - "caching": "ReadWrite", - "createOption": "FromImage" - } - } - }, - "tags": { - "creationSource": "[concat('acsengine-', variables('masterVMNamePrefix'), copyIndex())]" - }, - "type": "Microsoft.Compute/virtualMachines" - }, - { - "apiVersion": "[variables('apiVersionDefault')]", - "copy": { - "count": "[variables('masterCount')]", - "name": "vmLoopNode" - }, - "dependsOn": [ - "[concat('Microsoft.Compute/virtualMachines/', concat(variables('masterVMNamePrefix'), copyIndex()))]" - ], - "location": "[variables('location')]", - "name": "[concat(variables('masterVMNamePrefix'), copyIndex(), '/configuremaster')]", - "properties": { - "publisher": "Microsoft.OSTCExtensions", - "settings": { - "commandToExecute": "[variables('masterCustomScript')]", - "fileUris": [] - }, - "type": "CustomScriptForLinux", - "typeHandlerVersion": "1.4" - }, - "type": "Microsoft.Compute/virtualMachines/extensions" - } - ], - "outputs": { - "agentpublicFQDN": { - "type": "string", - "value": "[reference(concat('Microsoft.Network/publicIPAddresses/', variables('agentpublicIPAddressName'))).dnsSettings.fqdn]" - }, - "masterFQDN": { - "type": "string", - "value": "[reference(concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))).dnsSettings.fqdn]" - } - } -} \ No newline at end of file diff --git a/cloud/azure/arm/swarm/acs-engine/production.sample/README.md b/cloud/azure/arm/swarm/acs-engine/production.sample/README.md deleted file mode 100644 index d64843bf8c..0000000000 --- a/cloud/azure/arm/swarm/acs-engine/production.sample/README.md +++ /dev/null @@ -1,80 +0,0 @@ -### Understanding deploy parameters -Below is a sample file with comments: -``` -{ - "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#", - "contentVersion": "1.0.0.0", - "parameters": { - "agentpublicCount": { - // number of agents you want to launch - // agent machines run your application services. - // So, if you detect services not starting up or running slow - // bump up the number of agents - "value": 1 - }, - "agentpublicEndpointDNSNamePrefix": { - // this is the DNS Name for your application servers - "value": "production-1b" - }, - "agentpublicSubnet": { - // private subnet range for your agent machines - "value": "10.1.0.0/16" - }, - "internalLBprivateIPAddress": { - "value": "10.1.0.100" - }, - "agentpublicVMSize": { - // the agent VM size - // Note that you cannot change it once you have set it - // Standard_F2s is a good 2 core 4 gig minimum machine to start with - "value": "Standard_F2s" - }, - "firstConsecutiveStaticIP": { - "value": "172.16.1.5" - }, - "linuxAdminUsername": { - // the linux administrator user name - // will be used to SSH - "value": "ops" - }, - "location": { - // Any Azure location which servers your interest - "value": "centralindia" - }, - "masterEndpointDNSNamePrefix": { - // DNS Name for master server - // master server is used to administer application services - "value": "production-1a" - }, - "masterSubnet": { - // master server subnet - "value": "172.16.1.0/24" - }, - "masterVMSize": { - // This dependends on your work load. - // Standard_F2s is a good starting configuration - "value": "Standard_F2s" - }, - "masterCount": { - // Need an odd number of servers - // 1 is a risky configuration with no fail over - // Use 3 or more when you have passed testing phase - "value": 1 - }, - "sshRSAPublicKey": { - // Put in the RSA 2048 bit SSH Public key for SSH login - // refer to linuxAdminUsername above - "value": "" - }, - "targetEnvironment": { - "value": "AzurePublicCloud" - }, - "nameSuffix":{ - // unique name to be prepended for Azure Resource Group name - // Change it if you need to create a new setup - "value": "" - } - - } - } -``` \ No newline at end of file diff --git a/cloud/azure/arm/swarm/acs-engine/production.sample/azuredeploy.parameters.json.sample b/cloud/azure/arm/swarm/acs-engine/production.sample/azuredeploy.parameters.json.sample deleted file mode 100644 index 2d8dbde308..0000000000 --- a/cloud/azure/arm/swarm/acs-engine/production.sample/azuredeploy.parameters.json.sample +++ /dev/null @@ -1,48 +0,0 @@ -{ - "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#", - "contentVersion": "1.0.0.0", - "parameters": { - "agentpublicCount": { - "value": 1 - }, - "agentpublicEndpointDNSNamePrefix": { - "value": "sample-1b" - }, - "agentpublicSubnet": { - "value": "10.1.0.0/16" - }, - "internalLBprivateIPAddress": { - "value": "10.1.0.100" - }, - "agentpublicVMSize": { - "value": "Standard_DS2_v2" - }, - "firstConsecutiveStaticIP": { - "value": "172.16.1.5" - }, - "linuxAdminUsername": { - "value": "ops" - }, - "location": { - "value": "centralindia" - }, - "masterEndpointDNSNamePrefix": { - "value": "sample-1a" - }, - "masterSubnet": { - "value": "172.16.1.0/24" - }, - "masterVMSize": { - "value": "Standard_F2s" - }, - "masterCount": { - "value": 1 - }, - "sshRSAPublicKey": { - "value": "" - }, - "targetEnvironment": { - "value": "AzurePublicCloud" - } - } -} \ No newline at end of file diff --git a/cloud/azure/arm/swarm/acs-engine/production.sample/env.sh b/cloud/azure/arm/swarm/acs-engine/production.sample/env.sh deleted file mode 100644 index eb0327066d..0000000000 --- a/cloud/azure/arm/swarm/acs-engine/production.sample/env.sh +++ /dev/null @@ -1,8 +0,0 @@ -# Mention the Azure Subscription ID -export AZURE_SUBSCRIPTION="" -# Name of Azure Resource Group -export AZURE_RG_NAME=sample-1 -# Azure resource group location -export AZURE_RG_LOCATION= -# A string to identify your deployment in Azure portal -export AZURE_DEPLOYMENT_NAME=sample-1-deployment \ No newline at end of file diff --git a/cloud/azure/arm/vm/azuredeploy.json b/cloud/azure/arm/vm/azuredeploy.json deleted file mode 100644 index bf2cac3348..0000000000 --- a/cloud/azure/arm/vm/azuredeploy.json +++ /dev/null @@ -1,162 +0,0 @@ -{ - "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", - "contentVersion": "1.0.0.0", - "parameters": { - "location": { - "type": "string" - }, - "virtualMachineName": { - "type": "string" - }, - "virtualMachineSize": { - "type": "string" - }, - "adminUsername": { - "type": "string" - }, - "virtualNetworkName": { - "type": "string" - }, - "networkInterfaceName": { - "type": "string" - }, - "adminPublicKey": { - "type": "string" - }, - "availabilitySetName": { - "type": "string" - }, - "availabilitySetPlatformFaultDomainCount": { - "type": "string" - }, - "availabilitySetPlatformUpdateDomainCount": { - "type": "string" - }, - "diagnosticsStorageAccountName": { - "type": "string" - }, - "diagnosticsStorageAccountId": { - "type": "string" - }, - "diagnosticsStorageAccountType": { - "type": "string" - }, - "subnetName": { - "type": "string" - } - }, - "variables": { - "vnetId": "[resourceId(resourceGroup().name,'Microsoft.Network/virtualNetworks', parameters('virtualNetworkName'))]", - "subnetRef": "[concat(variables('vnetId'), '/subnets/', parameters('subnetName'))]" - }, - "resources": [ - { - "name": "[parameters('virtualMachineName')]", - "type": "Microsoft.Compute/virtualMachines", - "apiVersion": "2016-04-30-preview", - "location": "[parameters('location')]", - "dependsOn": [ - "[concat('Microsoft.Network/networkInterfaces/', parameters('networkInterfaceName'))]", - "[concat('Microsoft.Compute/availabilitySets/', parameters('availabilitySetName'))]", - "[concat('Microsoft.Storage/storageAccounts/', parameters('diagnosticsStorageAccountName'))]" - ], - "properties": { - "osProfile": { - "computerName": "[parameters('virtualMachineName')]", - "adminUsername": "[parameters('adminUsername')]", - "linuxConfiguration": { - "disablePasswordAuthentication": "true", - "ssh": { - "publicKeys": [ - { - "path": "[concat('/home/', parameters('adminUsername'), '/.ssh/authorized_keys')]", - "keyData": "[parameters('adminPublicKey')]" - } - ] - } - } - }, - "hardwareProfile": { - "vmSize": "[parameters('virtualMachineSize')]" - }, - "storageProfile": { - "imageReference": { - "publisher": "Canonical", - "offer": "UbuntuServer", - "sku": "16.04-LTS", - "version": "latest" - }, - "osDisk": { - "createOption": "fromImage", - "managedDisk": { - "storageAccountType": "Premium_LRS" - } - }, - "dataDisks": [] - }, - "networkProfile": { - "networkInterfaces": [ - { - "id": "[resourceId('Microsoft.Network/networkInterfaces', parameters('networkInterfaceName'))]" - } - ] - }, - "diagnosticsProfile": { - "bootDiagnostics": { - "enabled": true, - "storageUri": "[reference(resourceId(resourceGroup().name, 'Microsoft.Storage/storageAccounts', parameters('diagnosticsStorageAccountName')), '2015-06-15').primaryEndpoints['blob']]" - } - }, - "availabilitySet": { - "id": "[resourceId('Microsoft.Compute/availabilitySets', parameters('availabilitySetName'))]" - } - } - }, - { - "name": "[parameters('availabilitySetName')]", - "type": "Microsoft.Compute/availabilitySets", - "apiVersion": "2016-04-30-preview", - "location": "[parameters('location')]", - "properties": { - "platformFaultDomainCount": "[parameters('availabilitySetPlatformFaultDomainCount')]", - "platformUpdateDomainCount": "[parameters('availabilitySetPlatformUpdateDomainCount')]", - "managed": true - } - }, - { - "name": "[parameters('diagnosticsStorageAccountName')]", - "type": "Microsoft.Storage/storageAccounts", - "apiVersion": "2015-06-15", - "location": "[parameters('location')]", - "properties": { - "accountType": "[parameters('diagnosticsStorageAccountType')]" - } - }, - { - "name": "[parameters('networkInterfaceName')]", - "type": "Microsoft.Network/networkInterfaces", - "apiVersion": "2016-09-01", - "location": "[parameters('location')]", - "dependsOn": [], - "properties": { - "ipConfigurations": [ - { - "name": "ipconfig1", - "properties": { - "subnet": { - "id": "[variables('subnetRef')]" - }, - "privateIPAllocationMethod": "Dynamic" - } - } - ] - } - } - ], - "outputs": { - "adminUsername": { - "type": "string", - "value": "[parameters('adminUsername')]" - } - } -} \ No newline at end of file diff --git a/cloud/azure/arm/vm/azuredeploy.parameters.json.sample b/cloud/azure/arm/vm/azuredeploy.parameters.json.sample deleted file mode 100644 index 651ad32f0c..0000000000 --- a/cloud/azure/arm/vm/azuredeploy.parameters.json.sample +++ /dev/null @@ -1,48 +0,0 @@ -{ - "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#", - "contentVersion": "1.0.0.0", - "parameters": { - "location": { - "value": "centralindia" - }, - "virtualMachineName": { - "value": "db-1" - }, - "virtualMachineSize": { - "value": "Standard_DS2_v2" - }, - "adminUsername": { - "value": "ops" - }, - "virtualNetworkName": { - "value": "swarmm-vnet-49420225" - }, - "networkInterfaceName": { - "value": "db-49420225" - }, - "adminPublicKey": { - "value": "" - }, - "availabilitySetName": { - "value": "sample" - }, - "availabilitySetPlatformFaultDomainCount": { - "value": "2" - }, - "availabilitySetPlatformUpdateDomainCount": { - "value": "5" - }, - "diagnosticsStorageAccountName": { - "value": "sunbirdsamplediag123456" - }, - "diagnosticsStorageAccountType": { - "value": "Standard_DS2_v2" - }, - "diagnosticsStorageAccountId": { - "value": "Microsoft.Storage/storageAccounts/sunbirdsamplediag1234" - }, - "subnetName": { - "value": "swarmm-agentpublicsubnet" - } - } -} diff --git a/cloud/openvpn/openvpn.sh b/cloud/openvpn/openvpn.sh deleted file mode 100644 index fb5c29841a..0000000000 --- a/cloud/openvpn/openvpn.sh +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/bash -userPassword=$1 -#download the packages -#cd /tmp -#wget -c http://swupdate.openvpn.org/as/openvpn-as-2.1.9-Ubuntu16.amd_64.deb -#install the software -#sudo dpkg -i openvpn-as-2.1.9-Ubuntu16.amd_64.deb -#update the password for user openvpn -sudo echo "openvpn:$userPassword"|sudo chpasswd -#configure server network settings -#PUBLICIP=$(curl -s ifconfig.me) -#sudo apt-get install sqlite3 -#sudo sqlite3 "/usr/local/openvpn_as/etc/db/config.db" "update config set value='$PUBLICIP' where name='host.name';" -##restart OpenVPN AS service -#sudo systemctl restart openvpnas \ No newline at end of file diff --git a/pipelines/adminutils/Jenkinsfile.sample b/pipelines/adminutils/Jenkinsfile.sample deleted file mode 100644 index 6684dc3d8e..0000000000 --- a/pipelines/adminutils/Jenkinsfile.sample +++ /dev/null @@ -1,27 +0,0 @@ -#!groovy - -node('general-staging') { - - currentBuild.result = "SUCCESS" - - try { - stage('Checkout'){ - checkout scm - } - stage('Pre-Build'){ - sh('./pipelines/adminutils/installDeps.sh') - } - stage('Deploy'){ - step ([$class: 'CopyArtifact', - projectName: 'Tag_As_Silver/AM_AdminUtils_Tag_Silver', - filter: 'metadata.json']); - sh 'METADATA_FILE=metadata.json ARTIFACT_LABEL=silver ENV=staging ./pipelines/adminutils/deploy.sh' - archive includes: "metadata.json" - } - } - catch (err) { - currentBuild.result = "FAILURE" - throw err - } - -} diff --git a/pipelines/adminutils/deploy.sh b/pipelines/adminutils/deploy.sh deleted file mode 100755 index 0dcb3cf5e4..0000000000 --- a/pipelines/adminutils/deploy.sh +++ /dev/null @@ -1,28 +0,0 @@ -#!/bin/sh -# Build script -# set -o errexit -set -e -e () { - echo $( echo ${1} | jq ".${2}" | sed 's/\"//g') -} -m=$(cat $METADATA_FILE) - -org=$(e "${m}" "org") -name=$(e "${m}" "name") -version=$(e "${m}" "version") - -artifactLabel=${ARTIFACT_LABEL:-bronze} -env=${ENV:-null} - -echo "artifactLabel: ${artifactLabel}" -echo "env: ${env}" -echo "org: ${org}" -echo "name: ${name}" -echo "version: ${version}" -echo "ANSIBLE_PATH: $ANSIBLE_PATH" - -ansible-playbook --version -ansible-playbook -i ansible/inventory/${env} ansible/deploy.yml --tags "stack-adminutil" --extra-vars "hub_org=${org} image_name=${name} image_tag=${version}-${artifactLabel}" --vault-password-file /run/secrets/vault-pass -# ENV=${env} ORG=${org} NAME=${name} \ -# TAG=${version}-${artifactLabel} \ -# docker stack deploy -c ./pipelines/proxy/docker-compose.yml ${name}-${env} diff --git a/pipelines/adminutils/installDeps.sh b/pipelines/adminutils/installDeps.sh deleted file mode 100755 index 4bd4763793..0000000000 --- a/pipelines/adminutils/installDeps.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/sh -# Build script -# set -o errexit -apk -v --update --no-cache add jq bash -apk -v add ansible=2.3.0.0-r1 diff --git a/pipelines/adminutils/metadata.json b/pipelines/adminutils/metadata.json deleted file mode 100644 index d66f241143..0000000000 --- a/pipelines/adminutils/metadata.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "name": "adminutil", - "version": "0.0.1-SNAPSHOT", - "org": "sunbird", - "hubuser": "purplesunbird" -} diff --git a/pipelines/am-onboard-apis/Jenkinsfile.sample b/pipelines/am-onboard-apis/Jenkinsfile.sample deleted file mode 100644 index c148704f90..0000000000 --- a/pipelines/am-onboard-apis/Jenkinsfile.sample +++ /dev/null @@ -1,15 +0,0 @@ -pipeline { - agent { - label 'kong-staging' - } - stages { - stage('Deploy') { - steps { - sh ''' - cd ansible - ansible-playbook -i inventory/staging api-manager.yml --tags kong-api --vault-password-file /run/secrets/vault-pass - ''' - } - } - } -} \ No newline at end of file diff --git a/pipelines/am-onboard-consumers/Jenkinsfile.sample b/pipelines/am-onboard-consumers/Jenkinsfile.sample deleted file mode 100644 index 4a789dc981..0000000000 --- a/pipelines/am-onboard-consumers/Jenkinsfile.sample +++ /dev/null @@ -1,15 +0,0 @@ -pipeline { - agent { - label 'kong-staging' - } - stages { - stage('Deploy') { - steps { - sh ''' - cd ansible - ansible-playbook -i inventory/staging api-manager.yml --tags kong-consumer --vault-password-file /run/secrets/vault-pass -v - ''' - } - } - } -} \ No newline at end of file diff --git a/pipelines/api-manager/Jenkinsfile.sample b/pipelines/api-manager/Jenkinsfile.sample deleted file mode 100644 index b7541c660d..0000000000 --- a/pipelines/api-manager/Jenkinsfile.sample +++ /dev/null @@ -1,34 +0,0 @@ -#!groovy - -node('general-staging') { - - currentBuild.result = "SUCCESS" - - try { - - stage('Checkout'){ - - checkout scm - } - - stage('Pre-Build'){ - - sh('./pipelines/api-manager/installDeps.sh') - - } - - stage('Deploy'){ - - step ([$class: 'CopyArtifact', - projectName: 'Tag_As_Silver/Echo_Server_Tag_Silver', - filter: 'metadata.json']); - sh 'METADATA_FILE=metadata.json ENV=staging ./pipelines/api-manager/deploy.sh' - archive includes: "metadata.json" - } - } - catch (err) { - currentBuild.result = "FAILURE" - throw err - } - -} diff --git a/pipelines/api-manager/deploy.sh b/pipelines/api-manager/deploy.sh deleted file mode 100755 index 194c29df3a..0000000000 --- a/pipelines/api-manager/deploy.sh +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/sh -# Build script -# set -o errexit -set -e -e () { - echo $( echo ${1} | jq ".${2}" | sed 's/\"//g') -} -m=$(cat $METADATA_FILE) - -org=$(e "${m}" "org") -name=$(e "${m}" "name") -version=$(e "${m}" "version") - -artifactLabel=${ARTIFACT_LABEL:-bronze} -env=${ENV:-null} - -echo "artifactLabel: ${artifactLabel}" -echo "env: ${env}" -echo "org: ${org}" -echo "name: ${name}" -echo "version: ${version}" -ansible-playbook --version -ansible-playbook -i ansible/inventory/$ENV ansible/deploy.yml --tags "stack-api-manager" --extra-vars "hub_org=${org} echo_server_image_name=${name} echo_server_image_tag=${version}-${artifactLabel}" --vault-password-file /run/secrets/vault-pass diff --git a/pipelines/api-manager/installDeps.sh b/pipelines/api-manager/installDeps.sh deleted file mode 100755 index f99345239c..0000000000 --- a/pipelines/api-manager/installDeps.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/sh -# Build script -# set -o errexit -apk -v --update --no-cache add ansible=2.3.0.0-r1 -apk -v add jq diff --git a/pipelines/api-manager/metadata.json b/pipelines/api-manager/metadata.json deleted file mode 100644 index 0103cf310f..0000000000 --- a/pipelines/api-manager/metadata.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "name": "echo-server", - "version": "0.0.1", - "org": "sunbird", - "hubuser": "purplesunbird" -} \ No newline at end of file diff --git a/pipelines/application-elasticsearch/Jenkinsfile.sample b/pipelines/application-elasticsearch/Jenkinsfile.sample deleted file mode 100644 index fdd5dfe923..0000000000 --- a/pipelines/application-elasticsearch/Jenkinsfile.sample +++ /dev/null @@ -1,22 +0,0 @@ -pipeline { - agent { - label 'general-staging' - } - stages { - stage('Pre-Build'){ - steps { - sh('chmod a+x ansible/installDeps.sh') - sh('./ansible/installDeps.sh') - } - } - - stage('Deploy') { - steps { - sh ''' - cd ansible - ansible-playbook -i inventory/staging provision.yml --tags es --vault-password-file /run/secrets/vault-pass - ''' - } - } - } -} \ No newline at end of file diff --git a/pipelines/cassandra-backup/Jenkinsfile.sample b/pipelines/cassandra-backup/Jenkinsfile.sample deleted file mode 100644 index fee2318964..0000000000 --- a/pipelines/cassandra-backup/Jenkinsfile.sample +++ /dev/null @@ -1,32 +0,0 @@ -#!groovy - -node('general-staging') { - - currentBuild.result = "SUCCESS" - - try { - - stage('Checkout'){ - - checkout scm - } - - - - stage('Pre-Build'){ - sh('chmod a+x ansible/installDeps.sh') - sh('./ansible/installDeps.sh') - } - - stage('Build'){ - - sh('ansible-playbook -i ansible/inventory/staging ansible/cassandra-backup.yml --vault-password-file /run/secrets/vault-pass ') - } - - } - catch (err) { - currentBuild.result = "FAILURE" - throw err - } - -} \ No newline at end of file diff --git a/pipelines/cassandra-restore/Jenkinsfile.sample b/pipelines/cassandra-restore/Jenkinsfile.sample deleted file mode 100644 index 0203cae04c..0000000000 --- a/pipelines/cassandra-restore/Jenkinsfile.sample +++ /dev/null @@ -1,34 +0,0 @@ -#!groovy - -node('general-staging') { - - properties([parameters([string(defaultValue: '', description: 'time ', name: 'snapshot')]), pipelineTriggers([])]) - - currentBuild.result = "SUCCESS" - - try { - - stage('Checkout'){ - - checkout scm - } - - stage('Pre-Build'){ - sh('chmod a+x ansible/installDeps.sh') - sh('./ansible/installDeps.sh') - } - - stage('Build'){ - - sh('ansible-playbook -i ansible/inventory/staging ansible/cassandra-restore.yml --vault-password-file /run/secrets/vault-pass --extra-vars "cassandra_restore_gzip_file_name=cassandra_backup_${snapshot}.zip snapshot=${snapshot}"') - } - - } - catch (err) { - currentBuild.result = "FAILURE" - throw err - } - -} - - diff --git a/pipelines/cassandra/Jenkinsfile.sample b/pipelines/cassandra/Jenkinsfile.sample deleted file mode 100644 index 72543ff348..0000000000 --- a/pipelines/cassandra/Jenkinsfile.sample +++ /dev/null @@ -1,32 +0,0 @@ -#!groovy - -node('general-staging') { - - currentBuild.result = "SUCCESS" - - try { - - stage('Checkout'){ - - checkout scm - } - - - - stage('Pre-Build'){ - sh('chmod a+x ansible/installDeps.sh') - sh('./ansible/installDeps.sh') - } - - stage('Build'){ - - sh('ansible-playbook -i ansible/inventory/staging ansible/provision.yml --tags cassandra --vault-password-file /run/secrets/vault-pass ') - } - - } - catch (err) { - currentBuild.result = "FAILURE" - throw err - } - -} \ No newline at end of file diff --git a/pipelines/cassandra/installDeps.sh b/pipelines/cassandra/installDeps.sh deleted file mode 100644 index 49a927e6e5..0000000000 --- a/pipelines/cassandra/installDeps.sh +++ /dev/null @@ -1 +0,0 @@ -apk -v add ansible=2.3.0.0-r1 diff --git a/pipelines/dockerTag.sh b/pipelines/dockerTag.sh deleted file mode 100755 index cb006feba5..0000000000 --- a/pipelines/dockerTag.sh +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/sh -# Build script -# set -o errexit -set -e -e () { - echo $( echo ${1} | jq ".${2}" | sed 's/\"//g') -} -m=$(cat $METADATA_FILE) - -org=$(e "${m}" "org") -hubuser=$(e "${m}" "hubuser") -name=$(e "${m}" "name") -version=$(e "${m}" "version") - -artifactLabel=${ARTIFACT_LABEL:-gold} -PREVIOUS_LABEL=silver - -docker pull ${org}/${name}:${version}-${PREVIOUS_LABEL} -docker image tag ${org}/${name}:${version}-${PREVIOUS_LABEL} ${org}/${name}:${version}-${artifactLabel} - -docker login -u "${hubuser}" -p`cat /run/secrets/hub-pass` -docker push ${org}/${name}:${version}-${artifactLabel} -docker logout diff --git a/pipelines/documentation-jenkins-slave/Jenkinsfile.deploy-slave b/pipelines/documentation-jenkins-slave/Jenkinsfile.deploy-slave deleted file mode 100644 index 902988b8ef..0000000000 --- a/pipelines/documentation-jenkins-slave/Jenkinsfile.deploy-slave +++ /dev/null @@ -1,19 +0,0 @@ -pipeline { - agent { - label 'general-dev' - } - stages { - stage('Deploy') { - steps { - step ([$class: 'CopyArtifact', - projectName: 'Build/Documentation_Jenkins_Slave', - filter: 'metadata.json']); - - sh 'METADATA_FILE=metadata.json ENV=dev ./pipelines/documentation-jenkins-slave/deploy.sh' - - archive includes: "metadata.json" - } - } - } -} - diff --git a/pipelines/documentation-jenkins-slave/deploy.sh b/pipelines/documentation-jenkins-slave/deploy.sh deleted file mode 100755 index 625c46c1d6..0000000000 --- a/pipelines/documentation-jenkins-slave/deploy.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/sh -set -e -e () { - echo $( echo ${1} | jq ".${2}" | sed 's/\"//g') -} - -env=${ENV:-null} - -echo "env: ${env}" - -ansible-playbook -i ansible/inventory/$ENV ansible/jenkins-slave.yml --tags "documentation-jenkins-slave" --vault-password-file /run/secrets/vault-pass diff --git a/pipelines/es-backup/Jenkinsfile.sample b/pipelines/es-backup/Jenkinsfile.sample deleted file mode 100644 index b17f44dcc1..0000000000 --- a/pipelines/es-backup/Jenkinsfile.sample +++ /dev/null @@ -1,20 +0,0 @@ -pipeline { - agent { - label 'general-staging' - } - triggers { - cron('H 0 * * *') - } - stages { - stage('Pre-Build'){ - steps { - sh('./pipelines/es-backup/installDeps.sh') - } - } - stage('Deploy') { - steps { - sh 'ENV=staging ./pipelines/es-backup/deploy.sh' - } - } - } -} diff --git a/pipelines/es-backup/deploy.sh b/pipelines/es-backup/deploy.sh deleted file mode 100755 index 663c26c73f..0000000000 --- a/pipelines/es-backup/deploy.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/sh -# Build script -# set -o errexit -set -e -ansible-playbook --version -ANSIBLE_FORCE_COLOR=true ansible-playbook -i ansible/inventory/$ENV ansible/es.yml --tags "es_backup" -v --vault-password-file /run/secrets/vault-pass diff --git a/pipelines/es-backup/installDeps.sh b/pipelines/es-backup/installDeps.sh deleted file mode 100755 index acc98d5f3a..0000000000 --- a/pipelines/es-backup/installDeps.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/sh -# Build script -# set -o errexit -apk -v --update --no-cache add jq -apk -v add ansible=2.3.0.0-r1 diff --git a/pipelines/es-restore/Jenkinsfile.sample b/pipelines/es-restore/Jenkinsfile.sample deleted file mode 100644 index ca04227546..0000000000 --- a/pipelines/es-restore/Jenkinsfile.sample +++ /dev/null @@ -1,17 +0,0 @@ -pipeline { - agent { - label 'general-staging' - } - stages { - stage('Pre-Build'){ - steps { - sh('./pipelines/es-restore/installDeps.sh') - } - } - stage('Deploy') { - steps { - sh 'ENV=staging ./pipelines/es-restore/deploy.sh' - } - } - } -} diff --git a/pipelines/es-restore/deploy.sh b/pipelines/es-restore/deploy.sh deleted file mode 100755 index a0eed000b0..0000000000 --- a/pipelines/es-restore/deploy.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/sh -# Build script -# set -o errexit -set -e -ansible-playbook --version -ANSIBLE_FORCE_COLOR=true ansible-playbook -i ansible/inventory/$ENV ansible/es.yml --tags "es_restore" --extra-vars "snapshot_number=$SNAPSHOT_NUMBER" -v --vault-password-file /run/secrets/vault-pass diff --git a/pipelines/es-restore/installDeps.sh b/pipelines/es-restore/installDeps.sh deleted file mode 100755 index acc98d5f3a..0000000000 --- a/pipelines/es-restore/installDeps.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/sh -# Build script -# set -o errexit -apk -v --update --no-cache add jq -apk -v add ansible=2.3.0.0-r1 diff --git a/pipelines/jenkins-backup-upload/Jenkinsfile.admin b/pipelines/jenkins-backup-upload/Jenkinsfile.admin deleted file mode 100644 index e9554f46f9..0000000000 --- a/pipelines/jenkins-backup-upload/Jenkinsfile.admin +++ /dev/null @@ -1,18 +0,0 @@ -pipeline { - agent { - label 'master' - } - triggers { - cron('@midnight') - } - stages { - stage('Deploy') { - steps { - sh ''' - cd ansible - ansible-playbook -i inventory/admin jenkins-backup.yml --vault-password-file /run/secrets/vault-pass - ''' - } - } - } -} \ No newline at end of file diff --git a/pipelines/keycloak1/deploy.sh b/pipelines/keycloak1/deploy.sh deleted file mode 100755 index 2677a35b36..0000000000 --- a/pipelines/keycloak1/deploy.sh +++ /dev/null @@ -1,29 +0,0 @@ -#!/bin/sh -# Build script -# set -o errexit - -#!/bin/sh -# Build script -# set -o errexit -set -e -e () { - echo $( echo ${1} | jq ".${2}" | sed 's/\"//g') -} -m=$(cat $METADATA_FILE) - -org=$(e "${m}" "org") -name=$(e "${m}" "name") -version=$(e "${m}" "version") - -artifactLabel=${ARTIFACT_LABEL:-bronze} -env=${ENV:-null} - -echo "artifactLabel: ${artifactLabel}" -echo "env: ${env}" -echo "org: ${org}" -echo "name: ${name}" -echo "version: ${version}" -echo "ANSIBLE_PATH: $ANSIBLE_PATH" - -ansible-playbook --version -ansible-playbook -i ansible/inventory/$ENV ansible/deploy.yml --tags "stack-keycloak1" --extra-vars "hub_org=${org} image_name=${name} image_tag=${version}-${artifactLabel} service_name=keycloak1 deploy_keycloak1=True" --vault-password-file /run/secrets/vault-pass diff --git a/pipelines/keycloak1/installDeps.sh b/pipelines/keycloak1/installDeps.sh deleted file mode 100755 index edee05c045..0000000000 --- a/pipelines/keycloak1/installDeps.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/sh -# Build script -# set -o errexit -apk -v --update --no-cache add jq -apk -v --no-cache add ansible=2.3.0.0-r1 diff --git a/pipelines/keycloak1/metadata.json b/pipelines/keycloak1/metadata.json deleted file mode 100644 index f947f2f669..0000000000 --- a/pipelines/keycloak1/metadata.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "name": "keycloak_image", - "version": "3.2.1.Final", - "org": "sunbird", - "hubuser": "purplesunbird" -} \ No newline at end of file diff --git a/pipelines/keycloak2/deploy.sh b/pipelines/keycloak2/deploy.sh deleted file mode 100755 index b1df8b1f96..0000000000 --- a/pipelines/keycloak2/deploy.sh +++ /dev/null @@ -1,29 +0,0 @@ -#!/bin/sh -# Build script -# set -o errexit - -#!/bin/sh -# Build script -# set -o errexit -set -e -e () { - echo $( echo ${1} | jq ".${2}" | sed 's/\"//g') -} -m=$(cat $METADATA_FILE) - -org=$(e "${m}" "org") -name=$(e "${m}" "name") -version=$(e "${m}" "version") - -artifactLabel=${ARTIFACT_LABEL:-bronze} -env=${ENV:-null} - -echo "artifactLabel: ${artifactLabel}" -echo "env: ${env}" -echo "org: ${org}" -echo "name: ${name}" -echo "version: ${version}" -echo "ANSIBLE_PATH: $ANSIBLE_PATH" - -ansible-playbook --version -ansible-playbook -i ansible/inventory/$ENV ansible/deploy.yml --tags "stack-keycloak2" --extra-vars "hub_org=${org} image_name=${name} image_tag=${version}-${artifactLabel} service_name=keycloak2 deploy_keycloak2=True" --vault-password-file /run/secrets/vault-pass diff --git a/pipelines/keycloak2/installDeps.sh b/pipelines/keycloak2/installDeps.sh deleted file mode 100755 index edee05c045..0000000000 --- a/pipelines/keycloak2/installDeps.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/sh -# Build script -# set -o errexit -apk -v --update --no-cache add jq -apk -v --no-cache add ansible=2.3.0.0-r1 diff --git a/pipelines/keycloak2/metadata.json b/pipelines/keycloak2/metadata.json deleted file mode 100644 index f947f2f669..0000000000 --- a/pipelines/keycloak2/metadata.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "name": "keycloak_image", - "version": "3.2.1.Final", - "org": "sunbird", - "hubuser": "purplesunbird" -} \ No newline at end of file diff --git a/pipelines/log-es-backup/Jenkinsfile.sample b/pipelines/log-es-backup/Jenkinsfile.sample deleted file mode 100644 index b7763f2bd9..0000000000 --- a/pipelines/log-es-backup/Jenkinsfile.sample +++ /dev/null @@ -1,20 +0,0 @@ -pipeline { - agent { - label 'general-staging' - } - triggers { - cron('H 0 * * *') - } - stages { - stage('Pre-Build'){ - steps { - sh('./pipelines/log-es-backup/installDeps.sh') - } - } - stage('Deploy') { - steps { - sh 'ENV=staging ./pipelines/log-es-backup/deploy.sh' - } - } - } -} diff --git a/pipelines/log-es-backup/deploy.sh b/pipelines/log-es-backup/deploy.sh deleted file mode 100755 index 868dccaca2..0000000000 --- a/pipelines/log-es-backup/deploy.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/sh -# Build script -# set -o errexit -set -e -ansible-playbook --version -ANSIBLE_FORCE_COLOR=true ansible-playbook -i ansible/inventory/$ENV ansible/es.yml --tags "log_es_backup" -v --vault-password-file /run/secrets/vault-pass diff --git a/pipelines/log-es-backup/installDeps.sh b/pipelines/log-es-backup/installDeps.sh deleted file mode 100755 index acc98d5f3a..0000000000 --- a/pipelines/log-es-backup/installDeps.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/sh -# Build script -# set -o errexit -apk -v --update --no-cache add jq -apk -v add ansible=2.3.0.0-r1 diff --git a/pipelines/log-es-restore/deploy.sh b/pipelines/log-es-restore/deploy.sh deleted file mode 100755 index 2f4de577eb..0000000000 --- a/pipelines/log-es-restore/deploy.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/sh -# Build script -# set -o errexit - -ansible-playbook --version -ANSIBLE_FORCE_COLOR=true ansible-playbook -i ansible/inventory/$ENV ansible/es.yml --tags "log_es_restore" --extra-vars "snapshot_number=$SNAPSHOT_NUMBER" -v --vault-password-file /run/secrets/vault-pass diff --git a/pipelines/log-es-restore/installDeps.sh b/pipelines/log-es-restore/installDeps.sh deleted file mode 100755 index acc98d5f3a..0000000000 --- a/pipelines/log-es-restore/installDeps.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/sh -# Build script -# set -o errexit -apk -v --update --no-cache add jq -apk -v add ansible=2.3.0.0-r1 diff --git a/pipelines/logger-elasticsearch/Jenkinsfile.sample b/pipelines/logger-elasticsearch/Jenkinsfile.sample deleted file mode 100644 index 474ae6faae..0000000000 --- a/pipelines/logger-elasticsearch/Jenkinsfile.sample +++ /dev/null @@ -1,22 +0,0 @@ -pipeline { - agent { - label 'general-staging' - } - stages { - stage('Pre-Build'){ - steps { - sh('chmod a+x ansible/installDeps.sh') - sh('./ansible/installDeps.sh') - } - } - - stage('Deploy') { - steps { - sh ''' - cd ansible - ansible-playbook -i inventory/staging provision.yml --tags log-es --vault-password-file /run/secrets/vault-pass - ''' - } - } - } -} \ No newline at end of file diff --git a/pipelines/logger/deploy.sh b/pipelines/logger/deploy.sh deleted file mode 100755 index 48df1b43a5..0000000000 --- a/pipelines/logger/deploy.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/sh -# Build script -# set -o errexit - -ansible-playbook --version - -ansible-playbook -i ansible/inventory/${ENV} ansible/logging.yml --vault-password-file /run/secrets/vault-pass diff --git a/pipelines/logger/installDeps.sh b/pipelines/logger/installDeps.sh deleted file mode 100755 index acc98d5f3a..0000000000 --- a/pipelines/logger/installDeps.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/sh -# Build script -# set -o errexit -apk -v --update --no-cache add jq -apk -v add ansible=2.3.0.0-r1 diff --git a/pipelines/mongodb-backup/Jenkinsfile.sample b/pipelines/mongodb-backup/Jenkinsfile.sample deleted file mode 100644 index 3098103c8f..0000000000 --- a/pipelines/mongodb-backup/Jenkinsfile.sample +++ /dev/null @@ -1,32 +0,0 @@ -#!groovy - -node('general-staging') { - - currentBuild.result = "SUCCESS" - - try { - - stage('Checkout'){ - - checkout scm - } - - - - stage('Pre-Build'){ - sh('chmod a+x ansible/installDeps.sh') - sh('./ansible/installDeps.sh') - } - - stage('Build'){ - - sh('ansible-playbook -i ansible/inventory/staging ansible/mongobackup.yml --vault-password-file /run/secrets/vault-pass ') - } - - } - catch (err) { - currentBuild.result = "FAILURE" - throw err - } - -} \ No newline at end of file diff --git a/pipelines/mongodb-backup/installDeps.sh b/pipelines/mongodb-backup/installDeps.sh deleted file mode 100644 index 49a927e6e5..0000000000 --- a/pipelines/mongodb-backup/installDeps.sh +++ /dev/null @@ -1 +0,0 @@ -apk -v add ansible=2.3.0.0-r1 diff --git a/pipelines/mongodb/installDeps.sh b/pipelines/mongodb/installDeps.sh deleted file mode 100644 index 49a927e6e5..0000000000 --- a/pipelines/mongodb/installDeps.sh +++ /dev/null @@ -1 +0,0 @@ -apk -v add ansible=2.3.0.0-r1 diff --git a/pipelines/monitor/Jenkinsfile.sample b/pipelines/monitor/Jenkinsfile.sample deleted file mode 100644 index 93c80c93ab..0000000000 --- a/pipelines/monitor/Jenkinsfile.sample +++ /dev/null @@ -1,31 +0,0 @@ -#!groovy - -node('general-staging') { - - currentBuild.result = "SUCCESS" - - try { - - stage('Checkout'){ - - checkout scm - } - - stage('Pre-Build'){ - - sh('./pipelines/monitor/installDeps.sh') - - } - - stage('Deploy'){ - - sh 'TARGET_ENV=staging ./pipelines/monitor/deploy.sh' - - } - } - catch (err) { - currentBuild.result = "FAILURE" - throw err - } - -} diff --git a/pipelines/monitor/deploy.sh b/pipelines/monitor/deploy.sh deleted file mode 100755 index a6655e4763..0000000000 --- a/pipelines/monitor/deploy.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/sh -# Build script -# set -o errexit - -ansible-playbook --version -ansible-playbook -i ansible/inventory/${TARGET_ENV} ansible/monitoring.yml -v --vault-password-file /run/secrets/vault-pass diff --git a/pipelines/monitor/installDeps.sh b/pipelines/monitor/installDeps.sh deleted file mode 100755 index ccc9677a01..0000000000 --- a/pipelines/monitor/installDeps.sh +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/sh -# Build script -# set -o errexit -apk -v --update --no-cache add ansible=2.3.0.0-r1 diff --git a/pipelines/postgresql-backup/Jenkinsfile.sample b/pipelines/postgresql-backup/Jenkinsfile.sample deleted file mode 100644 index 497b0ea9e9..0000000000 --- a/pipelines/postgresql-backup/Jenkinsfile.sample +++ /dev/null @@ -1,24 +0,0 @@ -pipeline { - agent { - label 'general-staging' - } - triggers { - cron('@midnight') - } - stages { - stage('Pre-Build'){ - steps { - sh('chmod a+x ansible/installDeps.sh') - sh('./ansible/installDeps.sh') - } - } - stage('Deploy') { - steps { - sh ''' - cd ansible - ansible-playbook -i inventory/staging postgresql-backup.yml --vault-password-file /run/secrets/vault-pass - ''' - } - } - } -} \ No newline at end of file diff --git a/pipelines/postgresql-data-update/Jenkinsfile.sample b/pipelines/postgresql-data-update/Jenkinsfile.sample deleted file mode 100644 index 7cff5cd9b9..0000000000 --- a/pipelines/postgresql-data-update/Jenkinsfile.sample +++ /dev/null @@ -1,21 +0,0 @@ -pipeline { - agent { - label 'general-staging' - } - stages { - stage('Pre-Build'){ - steps { - sh('chmod a+x ansible/installDeps.sh') - sh('./ansible/installDeps.sh') - } - } - stage('Deploy') { - steps { - sh ''' - cd ansible - ansible-playbook -i inventory/staging postgresql-data-update.yml --vault-password-file /run/secrets/vault-pass - ''' - } - } - } -} \ No newline at end of file diff --git a/pipelines/postgresql-master/Jenkinsfile.sample b/pipelines/postgresql-master/Jenkinsfile.sample deleted file mode 100644 index 05d072e1f2..0000000000 --- a/pipelines/postgresql-master/Jenkinsfile.sample +++ /dev/null @@ -1,21 +0,0 @@ -pipeline { - agent { - label 'general-staging' - } - stages { - stage('Pre-Build'){ - steps { - sh('chmod a+x ansible/installDeps.sh') - sh('./ansible/installDeps.sh') - } - } - stage('Deploy') { - steps { - sh ''' - cd ansible - ansible-playbook -i inventory/staging provision.yml --tags postgresql-master --vault-password-file /run/secrets/vault-pass - ''' - } - } - } -} \ No newline at end of file diff --git a/pipelines/postgresql-restore/Jenkinsfile.sample b/pipelines/postgresql-restore/Jenkinsfile.sample deleted file mode 100644 index baea33c389..0000000000 --- a/pipelines/postgresql-restore/Jenkinsfile.sample +++ /dev/null @@ -1,37 +0,0 @@ -pipeline { - agent { - label 'general-staging' - } - parameters { - string(name: 'postgresql_restore_gzip_file_name', defaultValue: '', description: 'Specify the backup file name in azure which should be restored') - } - stages { - stage('Pre-Build'){ - steps { - sh('chmod a+x ansible/installDeps.sh') - sh('./ansible/installDeps.sh') - } - } - stage('Deploy') { - steps { - sh ''' - cd ansible - ansible-playbook -i inventory/staging postgresql-restore.yml --extra-vars "postgresql_restore_gzip_file_name=${postgresql_restore_gzip_file_name}" --vault-password-file /run/secrets/vault-pass - ''' - } - } - // The postgresql config is set to defaults after restore task which recreates pg cluster - // We need to build master job to ensure configuration is as expected - // We need to build slave job to ensure it has latest restore data - stage('Configure Postgresql Master') { - steps { - build 'Postgresql_Master' - } - } - stage('Configure Postgresql Slave') { - steps { - build 'Postgresql_Slave' - } - } - } -} \ No newline at end of file diff --git a/pipelines/postgresql-slave-to-master-promotion/Jenkinsfile.sample b/pipelines/postgresql-slave-to-master-promotion/Jenkinsfile.sample deleted file mode 100644 index c267f47f47..0000000000 --- a/pipelines/postgresql-slave-to-master-promotion/Jenkinsfile.sample +++ /dev/null @@ -1,22 +0,0 @@ -pipeline { - agent { - label 'general-staging' - } - stages { - stage('Pre-Build'){ - steps { - sh('chmod a+x ansible/installDeps.sh') - sh('./ansible/installDeps.sh') - } - } - stage('Deploy') { - steps { - sh ''' - cd ansible - ansible-playbook -i inventory/staging postgresql-slave-to-master-promotion.yml --tags ensure-postgresql-master-stopped --vault-password-file /run/secrets/vault-pass || echo "Ignoring error while stopping master" - ansible-playbook -i inventory/staging postgresql-slave-to-master-promotion.yml --tags postgresql-slave-to-master-promotion --vault-password-file /run/secrets/vault-pass - ''' - } - } - } -} \ No newline at end of file diff --git a/pipelines/postgresql-slave/Jenkinsfile.sample b/pipelines/postgresql-slave/Jenkinsfile.sample deleted file mode 100644 index 2aae125290..0000000000 --- a/pipelines/postgresql-slave/Jenkinsfile.sample +++ /dev/null @@ -1,21 +0,0 @@ -pipeline { - agent { - label 'general-staging' - } - stages { - stage('Pre-Build'){ - steps { - sh('chmod a+x ansible/installDeps.sh') - sh('./ansible/installDeps.sh') - } - } - stage('Deploy') { - steps { - sh ''' - cd ansible - ansible-playbook -i inventory/staging provision.yml --tags postgresql-slave --vault-password-file /run/secrets/vault-pass - ''' - } - } - } -} \ No newline at end of file diff --git a/pipelines/proxy/Jenkinsfile.sample b/pipelines/proxy/Jenkinsfile.sample deleted file mode 100644 index cf39631134..0000000000 --- a/pipelines/proxy/Jenkinsfile.sample +++ /dev/null @@ -1,25 +0,0 @@ -pipeline { - agent { - label 'general-staging' - } - stages { - stage('Pre-Build'){ - steps { - sh('chmod a+x ansible/installDeps.sh') - sh('./ansible/installDeps.sh') - } - } - - stage('Deploy') { - steps { - step ([$class: 'CopyArtifact', - projectName: 'Dev/Proxy', - filter: 'metadata.json']); - - sh 'METADATA_FILE=metadata.json ARTIFACT_LABEL=bronze ENV=staging ./pipelines/proxy/deploy.sh' - - archive includes: "metadata.json" - } - } - } -} \ No newline at end of file diff --git a/pipelines/proxy/deploy.sh b/pipelines/proxy/deploy.sh deleted file mode 100755 index be0a7ed992..0000000000 --- a/pipelines/proxy/deploy.sh +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/sh -set -e -e () { - echo $( echo ${1} | jq ".${2}" | sed 's/\"//g') -} -m=$(cat $METADATA_FILE) - -org=$(e "${m}" "org") -name=$(e "${m}" "name") -version=$(e "${m}" "version") - -artifactLabel=${ARTIFACT_LABEL:-bronze} -env=${ENV:-null} - -echo "artifactLabel: ${artifactLabel}" -echo "env: ${env}" -echo "org: ${org}" -echo "name: ${name}" -echo "version: ${version}" - - -ansible-playbook --version -ansible-playbook -i ansible/inventory/$ENV ansible/deploy.yml --tags "stack-proxy" --extra-vars "hub_org=${org} image_name=${name} image_tag=${version}-${artifactLabel}" --vault-password-file /run/secrets/vault-pass diff --git a/pipelines/proxy/metadata.json b/pipelines/proxy/metadata.json deleted file mode 100644 index 28d3fc61c0..0000000000 --- a/pipelines/proxy/metadata.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "name": "proxy", - "version": "0.0.1", - "org": "sunbird", - "hubuser": "purplesunbird" -} \ No newline at end of file diff --git a/pipelines/sunbird-actor-service/Jenkinsfile.sample b/pipelines/sunbird-actor-service/Jenkinsfile.sample deleted file mode 100644 index 34da7fa335..0000000000 --- a/pipelines/sunbird-actor-service/Jenkinsfile.sample +++ /dev/null @@ -1,34 +0,0 @@ -#!groovy - -node('general-staging') { - - currentBuild.result = "SUCCESS" - - try { - - stage('Checkout'){ - - checkout scm - } - - stage('Pre-Build'){ - - sh('./pipelines/sunbird-actor-service/installDeps.sh') - - } - - stage('Deploy'){ - step ([$class: 'CopyArtifact', - projectName: 'Dev/Sunbird_ActorService_Deploy_Dev', - filter: 'metadata.json']); - sh 'METADATA_FILE=metadata.json ARTIFACT_LABEL=silver ENV=staging ./pipelines/sunbird-actor-service/deploy.sh' - archive includes: "metadata.json" - } - - } - catch (err) { - currentBuild.result = "FAILURE" - throw err - } - -} diff --git a/pipelines/sunbird-actor-service/deploy.sh b/pipelines/sunbird-actor-service/deploy.sh deleted file mode 100755 index 71fb4c1c4b..0000000000 --- a/pipelines/sunbird-actor-service/deploy.sh +++ /dev/null @@ -1,29 +0,0 @@ -#!/bin/sh -# Build script -# set -o errexit - -#!/bin/sh -# Build script -# set -o errexit -set -e -e () { - echo $( echo ${1} | jq ".${2}" | sed 's/\"//g') -} -m=$(cat $METADATA_FILE) - -org=$(e "${m}" "org") -name=$(e "${m}" "name") -version=$(e "${m}" "version") - -artifactLabel=${ARTIFACT_LABEL:-bronze} -env=${ENV:-null} - -echo "artifactLabel: ${artifactLabel}" -echo "env: ${env}" -echo "org: ${org}" -echo "name: ${name}" -echo "version: ${version}" -echo "ANSIBLE_PATH: $ANSIBLE_PATH" - -ansible-playbook --version -ansible-playbook -i ansible/inventory/$ENV ansible/deploy.yml --tags "stack-sunbird" --extra-vars "hub_org=${org} image_name=${name} image_tag=${version}-${artifactLabel} service_name=actor-service deploy_actor=True" --vault-password-file /run/secrets/vault-pass diff --git a/pipelines/sunbird-actor-service/installDeps.sh b/pipelines/sunbird-actor-service/installDeps.sh deleted file mode 100755 index edee05c045..0000000000 --- a/pipelines/sunbird-actor-service/installDeps.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/sh -# Build script -# set -o errexit -apk -v --update --no-cache add jq -apk -v --no-cache add ansible=2.3.0.0-r1 diff --git a/pipelines/sunbird-actor-service/metadata.json b/pipelines/sunbird-actor-service/metadata.json deleted file mode 100644 index 950e154ead..0000000000 --- a/pipelines/sunbird-actor-service/metadata.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "name": "actor-service", - "version": "0.0.1", - "org": "sunbird", - "hubuser": "purplesunbird" -} \ No newline at end of file diff --git a/pipelines/sunbird-bootstrap/Jenkinsfile.db.sample b/pipelines/sunbird-bootstrap/Jenkinsfile.db.sample deleted file mode 100644 index a1fe617a3b..0000000000 --- a/pipelines/sunbird-bootstrap/Jenkinsfile.db.sample +++ /dev/null @@ -1,25 +0,0 @@ -#!groovy - -node('general-staging') { - currentBuild.result = "SUCCESS" - - try { - - stage('Checkout'){ - checkout scm - } - - stage('Pre-Build'){ - sh('chmod a+x ansible/installDeps.sh') - sh('./ansible/installDeps.sh') - } - - stage('Build'){ - sh('ansible-playbook -i ansible/inventory/db-bootstrap ansible/bootstrap.yml --extra-vars "hosts=staging bootstrap_secret_file=bootstrap" --vault-password-file /run/secrets/vault-pass ') - } - } - catch (err) { - currentBuild.result = "FAILURE" - throw err - } -} diff --git a/pipelines/sunbird-bootstrap/Jenkinsfile.sample b/pipelines/sunbird-bootstrap/Jenkinsfile.sample deleted file mode 100644 index b200f1fa92..0000000000 --- a/pipelines/sunbird-bootstrap/Jenkinsfile.sample +++ /dev/null @@ -1,32 +0,0 @@ -#!groovy - -node('general-staging') { - - currentBuild.result = "SUCCESS" - - try { - - stage('Checkout'){ - - checkout scm - } - - - - stage('Pre-Build'){ - sh('chmod a+x ansible/installDeps.sh') - sh('./ansible/installDeps.sh') - } - - stage('Build'){ - - sh('ansible-playbook -i ansible/inventory/admin ansible/bootstrap.yml --extra-vars "hosts=staging" --vault-password-file /run/secrets/vault-pass ') - } - - } - catch (err) { - currentBuild.result = "FAILURE" - throw err - } - -} diff --git a/pipelines/sunbird-bootstrap/installDeps.sh b/pipelines/sunbird-bootstrap/installDeps.sh deleted file mode 100644 index 49a927e6e5..0000000000 --- a/pipelines/sunbird-bootstrap/installDeps.sh +++ /dev/null @@ -1 +0,0 @@ -apk -v add ansible=2.3.0.0-r1 diff --git a/pipelines/sunbird-content-service/Jenkinsfile.sample b/pipelines/sunbird-content-service/Jenkinsfile.sample deleted file mode 100644 index f4cece38a3..0000000000 --- a/pipelines/sunbird-content-service/Jenkinsfile.sample +++ /dev/null @@ -1,34 +0,0 @@ -#!groovy - -node('general-staging') { - - currentBuild.result = "SUCCESS" - - try { - - stage('Checkout'){ - - checkout scm - } - - stage('Pre-Build'){ - - sh('./pipelines/sunbird-content-service/installDeps.sh') - - } - - stage('Deploy'){ - step ([$class: 'CopyArtifact', - projectName: 'Dev/Sunbird_ContentService_Deploy_Dev', - filter: 'metadata.json']); - sh 'METADATA_FILE=metadata.json ARTIFACT_LABEL=silver ENV=staging ./pipelines/sunbird-content-service/deploy.sh' - archive includes: "metadata.json" - } - - } - catch (err) { - currentBuild.result = "FAILURE" - throw err - } - -} diff --git a/pipelines/sunbird-content-service/deploy.sh b/pipelines/sunbird-content-service/deploy.sh deleted file mode 100755 index d76111e223..0000000000 --- a/pipelines/sunbird-content-service/deploy.sh +++ /dev/null @@ -1,29 +0,0 @@ -#!/bin/sh -# Build script -# set -o errexit - -#!/bin/sh -# Build script -# set -o errexit -set -e -e () { - echo $( echo ${1} | jq ".${2}" | sed 's/\"//g') -} -m=$(cat $METADATA_FILE) - -org=$(e "${m}" "org") -name=$(e "${m}" "name") -version=$(e "${m}" "version") - -artifactLabel=${ARTIFACT_LABEL:-bronze} -env=${ENV:-null} - -echo "artifactLabel: ${artifactLabel}" -echo "env: ${env}" -echo "org: ${org}" -echo "name: ${name}" -echo "version: ${version}" -echo "ANSIBLE_PATH: $ANSIBLE_PATH" - -ansible-playbook --version -ansible-playbook -i ansible/inventory/$ENV ansible/deploy.yml --tags "stack-sunbird" --extra-vars "hub_org=${org} image_name=${name} image_tag=${version}-${artifactLabel} service_name=content_service deploy_stack=True" --vault-password-file /run/secrets/vault-pass diff --git a/pipelines/sunbird-content-service/installDeps.sh b/pipelines/sunbird-content-service/installDeps.sh deleted file mode 100755 index edee05c045..0000000000 --- a/pipelines/sunbird-content-service/installDeps.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/sh -# Build script -# set -o errexit -apk -v --update --no-cache add jq -apk -v --no-cache add ansible=2.3.0.0-r1 diff --git a/pipelines/sunbird-content-service/metadata.json b/pipelines/sunbird-content-service/metadata.json deleted file mode 100644 index c5b9f7f9f6..0000000000 --- a/pipelines/sunbird-content-service/metadata.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "name": "content_service", - "version": "0.0.1", - "org": "sunbird", - "hubuser": "purplesunbird" -} \ No newline at end of file diff --git a/pipelines/sunbird-learner-service/Jenkinsfile.sample b/pipelines/sunbird-learner-service/Jenkinsfile.sample deleted file mode 100644 index aa21c6bccc..0000000000 --- a/pipelines/sunbird-learner-service/Jenkinsfile.sample +++ /dev/null @@ -1,33 +0,0 @@ -#!groovy - -node('general-staging') { - - currentBuild.result = "SUCCESS" - - try { - - stage('Checkout'){ - - checkout scm - } - - stage('Pre-Build'){ - - sh('./pipelines/sunbird-learner-service/installDeps.sh') - - } - - stage('Deploy'){ - step ([$class: 'CopyArtifact', - projectName: 'Dev/Sunbird_LearnerService_Deploy_Dev', - filter: 'metadata.json']); - sh 'METADATA_FILE=metadata.json ARTIFACT_LABEL=silver ENV=staging ./pipelines/sunbird-learner-service/deploy.sh' - archive includes: "metadata.json" - } - } - catch (err) { - currentBuild.result = "FAILURE" - throw err - } - -} diff --git a/pipelines/sunbird-learner-service/deploy.sh b/pipelines/sunbird-learner-service/deploy.sh deleted file mode 100755 index 6b1a2e3953..0000000000 --- a/pipelines/sunbird-learner-service/deploy.sh +++ /dev/null @@ -1,29 +0,0 @@ -#!/bin/sh -# Build script -# set -o errexit - -#!/bin/sh -# Build script -# set -o errexit -set -e -e () { - echo $( echo ${1} | jq ".${2}" | sed 's/\"//g') -} -m=$(cat $METADATA_FILE) - -org=$(e "${m}" "org") -name=$(e "${m}" "name") -version=$(e "${m}" "version") - -artifactLabel=${ARTIFACT_LABEL:-bronze} -env=${ENV:-null} - -echo "artifactLabel: ${artifactLabel}" -echo "env: ${env}" -echo "org: ${org}" -echo "name: ${name}" -echo "version: ${version}" -echo "ANSIBLE_PATH: $ANSIBLE_PATH" - -ansible-playbook --version -ansible-playbook -i ansible/inventory/$ENV ansible/deploy.yml --tags "stack-sunbird" --extra-vars "hub_org=${org} image_name=${name} image_tag=${version}-${artifactLabel} service_name=learner-service deploy_learner=True" --vault-password-file /run/secrets/vault-pass diff --git a/pipelines/sunbird-learner-service/installDeps.sh b/pipelines/sunbird-learner-service/installDeps.sh deleted file mode 100755 index edee05c045..0000000000 --- a/pipelines/sunbird-learner-service/installDeps.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/sh -# Build script -# set -o errexit -apk -v --update --no-cache add jq -apk -v --no-cache add ansible=2.3.0.0-r1 diff --git a/pipelines/sunbird-learner-service/metadata.json b/pipelines/sunbird-learner-service/metadata.json deleted file mode 100644 index 4c1ea90071..0000000000 --- a/pipelines/sunbird-learner-service/metadata.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "name": "learner_service", - "version": "0.0.1", - "org": "sunbird", - "hubuser": "purplesunbird" -} \ No newline at end of file diff --git a/pipelines/sunbird-player/Jenkinsfile.sample b/pipelines/sunbird-player/Jenkinsfile.sample deleted file mode 100644 index 0ad38e8059..0000000000 --- a/pipelines/sunbird-player/Jenkinsfile.sample +++ /dev/null @@ -1,34 +0,0 @@ -#!groovy - -node('general-staging') { - - currentBuild.result = "SUCCESS" - - try { - - stage('Checkout'){ - - checkout scm - } - - stage('Pre-Build'){ - - sh('./pipelines/sunbird-player/installDeps.sh') - - } - - stage('Deploy'){ - step ([$class: 'CopyArtifact', - projectName: 'Dev/Sunbird_Player_Deploy_Dev', - filter: 'metadata.json']); - sh 'METADATA_FILE=metadata.json ARTIFACT_LABEL=silver ENV=staging ./pipelines/sunbird-player/deploy.sh' - archive includes: "metadata.json" - } - - } - catch (err) { - currentBuild.result = "FAILURE" - throw err - } - -} diff --git a/pipelines/sunbird-player/deploy.sh b/pipelines/sunbird-player/deploy.sh deleted file mode 100755 index ee9df8f02e..0000000000 --- a/pipelines/sunbird-player/deploy.sh +++ /dev/null @@ -1,29 +0,0 @@ -#!/bin/sh -# Build script -# set -o errexit - -#!/bin/sh -# Build script -# set -o errexit -set -e -e () { - echo $( echo ${1} | jq ".${2}" | sed 's/\"//g') -} -m=$(cat $METADATA_FILE) - -org=$(e "${m}" "org") -name=$(e "${m}" "name") -version=$(e "${m}" "version") - -artifactLabel=${ARTIFACT_LABEL:-bronze} -env=${ENV:-null} - -echo "artifactLabel: ${artifactLabel}" -echo "env: ${env}" -echo "org: ${org}" -echo "name: ${name}" -echo "version: ${version}" -echo "ANSIBLE_PATH: $ANSIBLE_PATH" - -ansible-playbook --version -ansible-playbook -i ansible/inventory/$ENV ansible/deploy.yml --tags "stack-sunbird" --extra-vars "hub_org=${org} image_name=${name} image_tag=${version}-${artifactLabel} service_name=player deploy_stack=True" --vault-password-file /run/secrets/vault-pass diff --git a/pipelines/sunbird-player/installDeps.sh b/pipelines/sunbird-player/installDeps.sh deleted file mode 100755 index 7e4676ee49..0000000000 --- a/pipelines/sunbird-player/installDeps.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/sh -# Build script -# set -o errexit -apk -v --update --no-cache add jq -apk -v --update --no-cache add ansible=2.3.0.0-r1 diff --git a/pipelines/sunbird-player/metadata.json b/pipelines/sunbird-player/metadata.json deleted file mode 100644 index 657eb7dc36..0000000000 --- a/pipelines/sunbird-player/metadata.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "name": "player", - "version": "0.0.6", - "org": "sunbird", - "hubuser": "purplesunbird" -} \ No newline at end of file diff --git a/pipelines/sunbird-telemetry-service/Jenkinsfile.sample b/pipelines/sunbird-telemetry-service/Jenkinsfile.sample deleted file mode 100644 index 42a44a13c7..0000000000 --- a/pipelines/sunbird-telemetry-service/Jenkinsfile.sample +++ /dev/null @@ -1,33 +0,0 @@ -#!groovy - -node('general-staging') { - - currentBuild.result = "SUCCESS" - - try { - - stage('Checkout'){ - - checkout scm - } - - stage('Pre-Build'){ - - sh('./pipelines/sunbird-telemetry-service/installDeps.sh') - - } - - stage('Deploy'){ - step ([$class: 'CopyArtifact', - projectName: 'Dev/Sunbird_TelemetryService_Deploy_Dev', - filter: 'metadata.json']); - sh 'METADATA_FILE=metadata.json ARTIFACT_LABEL=silver ENV=staging ./pipelines/sunbird-telemetry-service/deploy.sh' - archive includes: "metadata.json" - } - } - catch (err) { - currentBuild.result = "FAILURE" - throw err - } - -} diff --git a/pipelines/sunbird-telemetry-service/deploy.sh b/pipelines/sunbird-telemetry-service/deploy.sh deleted file mode 100755 index 01a9bb96ba..0000000000 --- a/pipelines/sunbird-telemetry-service/deploy.sh +++ /dev/null @@ -1,29 +0,0 @@ -#!/bin/sh -# Build script -# set -o errexit - -#!/bin/sh -# Build script -# set -o errexit -set -e -e () { - echo $( echo ${1} | jq ".${2}" | sed 's/\"//g') -} -m=$(cat $METADATA_FILE) - -org=$(e "${m}" "org") -name=$(e "${m}" "name") -version=$(e "${m}" "version") - -artifactLabel=${ARTIFACT_LABEL:-bronze} -env=${ENV:-null} - -echo "artifactLabel: ${artifactLabel}" -echo "env: ${env}" -echo "org: ${org}" -echo "name: ${name}" -echo "version: ${version}" -echo "ANSIBLE_PATH: $ANSIBLE_PATH" - -ansible-playbook --version -ansible-playbook -i ansible/inventory/$ENV ansible/deploy.yml --tags "stack-sunbird" --extra-vars "hub_org=${org} image_name=${name} image_tag=${version}-${artifactLabel} service_name=telemetry-service deploy_telemetry=True" --vault-password-file /run/secrets/vault-pass diff --git a/pipelines/sunbird-telemetry-service/installDeps.sh b/pipelines/sunbird-telemetry-service/installDeps.sh deleted file mode 100755 index edee05c045..0000000000 --- a/pipelines/sunbird-telemetry-service/installDeps.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/sh -# Build script -# set -o errexit -apk -v --update --no-cache add jq -apk -v --no-cache add ansible=2.3.0.0-r1 diff --git a/pipelines/sunbird-telemetry-service/metadata.json b/pipelines/sunbird-telemetry-service/metadata.json deleted file mode 100644 index 3a2d5a0fb2..0000000000 --- a/pipelines/sunbird-telemetry-service/metadata.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "name": "telemetry-service", - "version": "0.0.1", - "org": "sunbird", - "hubuser": "purplesunbird" -} \ No newline at end of file diff --git a/pipelines/swarm-agent-docker-prune/Jenkinsfile.sample b/pipelines/swarm-agent-docker-prune/Jenkinsfile.sample deleted file mode 100644 index 67ae6ebf10..0000000000 --- a/pipelines/swarm-agent-docker-prune/Jenkinsfile.sample +++ /dev/null @@ -1,18 +0,0 @@ -pipeline { - agent { - label 'general-staging' - } - triggers { - cron('@midnight') - } - stages { - stage('Deploy') { - steps { - sh ''' - cd ansible - ansible-playbook -v -i inventory/staging swarm-agent-docker-prune.yml --vault-password-file /run/secrets/vault-pass - ''' - } - } - } -} \ No newline at end of file From ba99080f16164060daec15604396d663a5e727b8 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Wed, 30 Jan 2019 17:55:30 +0530 Subject: [PATCH 0832/1345] feat: DO-498 Push only if artifact repo is specified --- pipelines/upload/artifacts/Jenkinsfile | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/pipelines/upload/artifacts/Jenkinsfile b/pipelines/upload/artifacts/Jenkinsfile index 0ed4ffa6e8..0ee396a547 100644 --- a/pipelines/upload/artifacts/Jenkinsfile +++ b/pipelines/upload/artifacts/Jenkinsfile @@ -7,16 +7,19 @@ node() { } stage('Artifact Upload') { def values = lp_dp_params() - artifact_version = sh(returnStdout: true, script: 'jq -r .artifact_version metadata.json').trim() - values.put('artifact_version', artifact_version) - currentWs = sh(returnStdout: true, script: 'pwd').trim() - artifact = values.artifact_name + ":" + values.artifact_version - ansiblePlaybook = "${currentWs}/ansible/artifacts-upload.yml" - ansibleExtraArgs = "--extra-vars \"artifact=${artifact} artifact_path=${currentWs}/${artifact}\" --vault-password-file /home/ops/vault" - values.put('currentWs', currentWs) - values.put('ansiblePlaybook', ansiblePlaybook) - values.put('ansibleExtraArgs', ansibleExtraArgs) - ansible_playbook_run(values) + if(params.artifact_source == "ArtifactRepo") + { + artifact_version = sh(returnStdout: true, script: 'jq -r .artifact_version metadata.json').trim() + values.put('artifact_version', artifact_version) + currentWs = sh(returnStdout: true, script: 'pwd').trim() + artifact = values.artifact_name + ":" + values.artifact_version + ansiblePlaybook = "${currentWs}/ansible/artifacts-upload.yml" + ansibleExtraArgs = "--extra-vars \"artifact=${artifact} artifact_path=${currentWs}/${artifact}\" --vault-password-file /home/ops/vault" + values.put('currentWs', currentWs) + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + ansible_playbook_run(values) + } archiveArtifacts artifacts: "${artifact}", fingerprint: true, onlyIfSuccessful: true archiveArtifacts artifacts: 'metadata.json', onlyIfSuccessful: true currentBuild.description = "${artifact_version}" From 1a6e5168e73cb977fdf234f4d3f6362e464a9b5f Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Wed, 30 Jan 2019 17:58:54 +0530 Subject: [PATCH 0833/1345] feat: DO-498 Push only if artifact repo is specified --- pipelines/upload/docker/Jenkinsfile | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/pipelines/upload/docker/Jenkinsfile b/pipelines/upload/docker/Jenkinsfile index 2ef8846a97..a8f7b2fbde 100644 --- a/pipelines/upload/docker/Jenkinsfile +++ b/pipelines/upload/docker/Jenkinsfile @@ -8,13 +8,15 @@ node(){ stage('Artifact Upload') { def values = docker_params() - currentWs = sh(returnStdout: true, script: 'pwd').trim() - ansiblePlaybook = "$currentWs/ansible/docker_image_push.yml" - ansibleExtraArgs = "--extra-vars \"hub_org=${hub_org} image_name=${values.image_name} image_tag=${values.image_tag}\" --vault-password-file /home/ops/vault" - values.put('currentWs', currentWs) - values.put('ansiblePlaybook', ansiblePlaybook) - values.put('ansibleExtraArgs', ansibleExtraArgs) - ansible_playbook_run(values) + if(params.artifact_source == "ArtifactRepo") { + currentWs = sh(returnStdout: true, script: 'pwd').trim() + ansiblePlaybook = "$currentWs/ansible/docker_image_push.yml" + ansibleExtraArgs = "--extra-vars \"hub_org=${hub_org} image_name=${values.image_name} image_tag=${values.image_tag}\" --vault-password-file /home/ops/vault" + values.put('currentWs', currentWs) + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + ansible_playbook_run(values) + } archiveArtifacts 'metadata.json' currentBuild.description = "${values.image_tag}" } From 93c80fb4a43e04955a243845c73f163e85eb9619 Mon Sep 17 00:00:00 2001 From: msknext Date: Thu, 31 Jan 2019 09:42:46 +0530 Subject: [PATCH 0834/1345] Issue # 000: Renaming folder --- .../{LearningPlatform => KnowledgePlatform}/group_vars/all.yml | 0 .../{LearningPlatform => KnowledgePlatform}/group_vars/env.yml | 0 .../inventory/env/{LearningPlatform => KnowledgePlatform}/hosts | 0 .../env/{LearningPlatform => KnowledgePlatform}/secrets.yml | 0 4 files changed, 0 insertions(+), 0 deletions(-) rename ansible/inventory/env/{LearningPlatform => KnowledgePlatform}/group_vars/all.yml (100%) rename ansible/inventory/env/{LearningPlatform => KnowledgePlatform}/group_vars/env.yml (100%) rename ansible/inventory/env/{LearningPlatform => KnowledgePlatform}/hosts (100%) rename ansible/inventory/env/{LearningPlatform => KnowledgePlatform}/secrets.yml (100%) diff --git a/ansible/inventory/env/LearningPlatform/group_vars/all.yml b/ansible/inventory/env/KnowledgePlatform/group_vars/all.yml similarity index 100% rename from ansible/inventory/env/LearningPlatform/group_vars/all.yml rename to ansible/inventory/env/KnowledgePlatform/group_vars/all.yml diff --git a/ansible/inventory/env/LearningPlatform/group_vars/env.yml b/ansible/inventory/env/KnowledgePlatform/group_vars/env.yml similarity index 100% rename from ansible/inventory/env/LearningPlatform/group_vars/env.yml rename to ansible/inventory/env/KnowledgePlatform/group_vars/env.yml diff --git a/ansible/inventory/env/LearningPlatform/hosts b/ansible/inventory/env/KnowledgePlatform/hosts similarity index 100% rename from ansible/inventory/env/LearningPlatform/hosts rename to ansible/inventory/env/KnowledgePlatform/hosts diff --git a/ansible/inventory/env/LearningPlatform/secrets.yml b/ansible/inventory/env/KnowledgePlatform/secrets.yml similarity index 100% rename from ansible/inventory/env/LearningPlatform/secrets.yml rename to ansible/inventory/env/KnowledgePlatform/secrets.yml From 860e58770ef6dc9893325209830e6102f8295740 Mon Sep 17 00:00:00 2001 From: S M Y Date: Thu, 31 Jan 2019 11:32:50 +0530 Subject: [PATCH 0835/1345] Issue #000 merge: merging vars-update to jenkins-pipeline --- ansible/inventory/env/Core/env.yml | 454 +++++++++++++++++++++++++++++ 1 file changed, 454 insertions(+) create mode 100644 ansible/inventory/env/Core/env.yml diff --git a/ansible/inventory/env/Core/env.yml b/ansible/inventory/env/Core/env.yml new file mode 100644 index 0000000000..8dea667cdf --- /dev/null +++ b/ansible/inventory/env/Core/env.yml @@ -0,0 +1,454 @@ +# ENVIRONMENT CONFIGURATION +proxy_site_key: "{{ core_vault_proxy_site_key }}" #SSL certificate's site.key file contents. More details in this wiki: {{proto}}://github.com/project-sunbird/sunbird-commons/wiki/Updating-SSL-certificates-in-Sunbird-Proxy-service +proxy_site_crt: "{{ core_vault_proxy_site_crt }}" #SSL certificate's site.crt file contents. More details in this wiki: {{proto}}://github.com/project-sunbird/sunbird-commons/wiki/Updating-SSL-certificates-in-Sunbird-Proxy-service + +## Below passwords are used by DB install scripts when creating databases. Please use strong passwords. +sunbird_pg_user: "{{core_vault_postgres_username}}" +application_postgres_user: "{{core_vault_postgres_username}}" +keycloak_postgres_user: "{{core_vault_postgres_username}}" +kong_postgres_user: "{{core_vault_postgres_username}}" +enc_postgres_user: "{{core_vault_postgres_username}}" +analytics_postgres_user: "{{core_vault_postgres_username}}" +badger_postgres_user: "{{core_vault_postgres_username}}" +postgres_password: "{{ core_vault_postgres_password }}" #Password for Kong (API Manager) database. +sunbird_default_channel: sunbird +backup_storage_account: "{{core_vault_sunbird_azure_storage_account}}" +backup_storage_key: "{{core_vault_sunbird_azure_storage_key}}" +sunbird_account_name: "{{core_vault_sunbird_azure_storage_account}}" +sunbird_account_key: "{{core_vault_sunbird_azure_storage_key}}" +ansible_vault_password: "{{ core_vault_ansible_vault_password }}" +sunbird_account_name: "{{core_vault_sunbird_azure_storage_account}}" +sunbird_azure_account_name: "{{core_vault_sunbird_azure_storage_account}}" +sunbird_google_keycloak_secret: "{{core_vault_google_keycloak_secret}}" +jenkins_admin_username: "{{core_vault_jenkins_admin_username}}" +jenkins_admin_password: "{{core_vault_jenkins_admin_password}}" +bootstrap_user: "{{core_vault_bootstrap_user}}" +bootstrap_key_path: "{{core_vault_bootstrap_key_path}}" + +## Postgres configuration +swarm_address_space: "{{groups['swarm-manager'][0].split(\".\")[0]}}.0.0.0/8" #Application server address space (e.g. 10.3.0.0/24), also the agentpublicSubnet if using Azure scripts provided +keycloak_address_space: "{{groups['keycloak'][0].split(\".\")[0]}}.0.0.0/8" +postgres_address_space: "{{groups['postgresql-master'][0].split(\".\")[0]}}.0.0.0/8" + +## Cassandra configuration +cassandra_server_private_ip: "{{groups['cassandra'][0]}}" #Private IP of cassandra server +keystore_password: "{{core_vault_keystore_password}}" #Password to use for encrypting cassandra keystore. Use a strong password. +truststore_password: "{{core_vault_truststore_password}}" #Password to use for encrypting cassandra truststore. Use a strong password. + +# APPLICATION CONFIGURATION +kong_host: api-manager_kong + +## DB address +application_postgres_host: "{{groups['postgres'][0]}}" #Private IP of Postgres server +keycloak_postgres_host: "{{groups['postgres'][0]}}" #Private IP of Postgres server +kong_postgres_host: "{{groups['postgres'][0]}}" #Private IP of Postgres server +sunbird_cassandra_host: "{{groups['cassandra'][0]}}" #Private IP of Cassandra server +sunbird_es_host: "{{groups['es']| join(',')}}" + +## Application server configurations +sunbird_analytics_api_base_url: "http://{{analyticsapi_ip}}:9000" +sunbird_search_service_api_base_url: "http://{{searchservice_ip}}:9000" +sunbird_mail_server_host: "{{ mail_server_host }}" #SMTP server IP. Could be ignored if not mails are to be sent. +sunbird_mail_server_port: "{{ mail_server_port }}" #SMTP port. Could be ignored if not mails are to be sent. +sunbird_mail_server_username: "{{ mail_server_username }}" #SMTP username. Could be ignored if not mails are to be sent. +sunbird_mail_server_password: "{{ mail_server_password }}" #SMTP server pasword. Could be ignored if not mails are to be sent. + +## Keycloak (auth server) login details +sunbird_sso_username: "{{ core_vault_sunbird_sso_username }}" +sunbird_sso_password: "{{ core_vault_sunbird_sso_password }}" +keycloak_admin_initial_password: "{{ core_vault_keyclaok_deployer_sudo_pass }}" + + +## Content Repo configuration +sunbird_api_auth_token: "{{ core_vault_sunbird_api_auth_token }}" #Authorization key (JWT) to access Sunbird APIs. This will be in the output of deploy-apis.sh script, extracting it out is documented in the deployment wiki. +sunbird_ekstep_api_key: "{{ core_vault_sunbird_ekstep_api_key }}" #Authorization key (JWT) to access Ekstep APIs. Steps to generate this are documented on {{proto}}://github.com/project-sunbird/sunbird-commons/wiki/Obtaining-API-token-for-accessing-ekstep-APIs +sunbird_trampoline_secret: "{{ core_vault_sunbird_trampoline_secret }}" + +# ADVANCED CONFIGURATIONS + +cassandra_listen_address: "{{ cassandra_server_private_ip }}" +cassandra_seeds: "{{ cassandra_server_private_ip }}" +cassandra_broadcast_rpc_address: "{{ cassandra_server_private_ip }}" +cassandra_broadcast_address: "{{ cassandra_server_private_ip }}" +cassandra_listen_interface: '' +cassandra_log_dir: '/var/log/cassandra' +cassandra_root_dir: '/etc/cassandra' +cassandra_version: '3.9' +cassandra_port: 9042 +cassandra_rpc_address: 0.0.0.0 +cassandra_restore_dir: /home/deployer/ +cassandra_backup_azure_container_name: cassandra-backup +cassandra_backup_azure_storage_account_name: "{{ core_vault_sunbird_azure_storage_account }}" +cassandra_backup_azure_storage_access_key: "{{backup_storage_key}}" +cassandra_backup_dir: /data/cassandra/backup + + +keycloak_auth_server_url: "{{proto}}://{{ proxy_server_name }}/auth" +keycloak_realm: sunbird +sunbird_content_player_url: "http://api-manager_kong:8000/" +sunbird_learner_player_url: "http://api-manager_kong:8000/" +sunbird_sso_client_id: admin-cli +sunbird_portal_realm: sunbird +sunbird_portal_auth_server_client: portal +sunbird_trampoline_client_id: trampoline +sunbird_appid: "{{env}}.sunbird.portal" +sunbird_echo_api_url: "{{proto}}://{{ proxy_server_name }}/api/echo/" +sunbird_pg_db: quartz +sunbird_pg_host: "{{ application_postgres_host }}" +sunbird_pg_port: 5432 +sunbird_pg_password: "{{ core_vault_postgres_password }}" +sunbird_account_key: "{{ core_vault_sunbird_azure_storage_key }}" +sunbird_sunbird_quartz_mode: cluster +sunbird_encryption_mode: local +sunbird_cassandra_urls: "{{ cassandra_server_private_ip }}:{{ cassandra_port }}" +sunbird_session_store_type: cassandra +sunbird_keycloak_client_id: 'portal' +sunbird_keycloak_public: true +sunbird_cache_store: "memory" +sunbird_cache_ttl: 1800 +sunbird_portal_title_name: portal +sunbird_web_url: "{{proto}}://{{ proxy_server_name }}" +sunbird_sso_publickey: "{{core_vault_sunbird_sso_publickey}}" +sunbird_azure_storage_account: "{{core_vault_sunbird_azure_storage_account}}" +sunbird_azure_storage_key: "{{core_vault_sunbird_azure_storage_key}}" +sunbird_app_url: +sunbird_fcm_account_key: "{{core_vault_sunbird_fcm_account_key}}" +sunbird_env_logo_url: "{{proto}}://{{proxy_server_name}}/common/images/sunbird_logo.png" +sunbird_msg_91_auth: "{{core_vault_msg91_auth_key}}" +sunbird_telemetry_dispatchers: kafka +sunbird_content_service_producer_id: "{{env}}.sunbird.content-service" +sunbird_telemetry_pdata_id: "{{env}}.sunbird.learning.service" +sunbird_http_orgin: "{{proto}}://{{ proxy_server_name }}/badging" +sunbird_encryption_key: "{{ core_vault_sunbird_encryption_key }}" +#player_tenant_dir: +sunbird_dataservice_url: "{{proto}}://{{ proxy_server_name }}/api/" +application_postgres_database: quartz +keycloak_postgres_database: keycloak +keyclaok_deployer_sudo_pass: "{{core_vault_keyclaok_deployer_sudo_pass}}" +keycloak_password: "{{core_vault_keycloak_password}}" +#Content Service Vars +sunbird_content_repo_api_base_url: "http://{{learningservice_ip}}:8080/learning-service" +sunbird_content_repo_api_key: "{{ core_vault_sunbird_ekstep_api_key }}" +sunbird_search_service_api_key: "{{ core_vault_sunbird_ekstep_api_key }}" +sunbird_dial_repo_api_base_url: "{{sunbird_ekstep_api_base_url}}" +sunbird_dial_repo_api_key: "{{ core_vault_sunbird_ekstep_api_key }}" +sunbird_plugin_repo_api_base_url: "{{sunbird_ekstep_api_base_url}}" +sunbird_plugin_repo_api_key: "{{ core_vault_sunbird_ekstep_api_key }}" +sunbird_data_service_api_base_url: "{{sunbird_ekstep_api_base_url}}" +sunbird_data_service_api_key: "{{ core_vault_sunbird_ekstep_api_key }}" + + + +## Cassandra download URI +cassandra_repo: 'deb http://www.apache.org/dist/cassandra/debian 39x main' +cassandra_repo_key: '{{proto}}://www.apache.org/dist/cassandra/KEYS' + +#API Manager +kong_postgres_port: 5432 +kong_postgres_database: api_manager_dev +es_curl_host: "{{groups['es'][0]}}" + +## Logging details +syslog: + host: "{{groups['swarm-manager']}}" + port: 51415 + +jenkins_replicas: 2 + +## PostgreSQL config +postgres_replication_user_name: "{{ core_vault_postgres_username }}" +postgres_password: "{{ core_vault_postgres_password }}" + + +postgresql_hba_entries: + - { type: local, database: all, user: postgres, auth_method: peer } + - { type: local, database: all, user: all, auth_method: peer } + - { type: host, database: all, user: all, address: '127.0.0.1/32', auth_method: md5 } + - { type: host, database: all, user: all, address: '::1/128', auth_method: md5 } + - { type: host, database: all, user: "{{ postgres_exporter_user }}", address: '{{ swarm_address_space }}', auth_method: md5 } + - { type: host, database: replication, user: "{{ postgres_replication_user_name }}", address: '{{ postgres_address_space }}', auth_method: md5 } + - { type: host, database: all, user: all, address: '{{ swarm_address_space }}', auth_method: md5 } + - { type: host, database: all, user: all, address: '{{ keycloak_address_space }}', auth_method: md5 } + +docker_hub_password: "{{ core_vault_docker_hub_password }}" +jenkins_slave_jenkins_username: "{{ core_vault_jenkins_slave_jenkins_username }}" +jenkins_slave_jenkins_password: "{{ core_vault_jenkins_slave_jenkins_password }}" +ops_private_key: "{{ core_vault_ops_private_key }}" +deployer_ssh_key: "{{ core_vault_deployer_ssh_key }}" +proxy_prometheus_admin_creds: "{{ core_vault_proxy_prometheus_admin_creds }}" +vault_docker_registery_url: "{{core_vault_docker_registery_url}}" +vault_docker_registery_user: "{{core_vault_docker_registery_user}}" +vault_docker_registry_password: "{{core_vault_docker_registry_password}}" + +# ADDITIONAL CONFIGURATION +curl_host: "{{proxy_server_name}}" +prometheus_data_dir: /var/dockerdata/prometheus/data +mail_server_password: "{{ core_vault_mail_server_password }}" + +logger_es_host: "{{ groups['log-es'][0] }}" +logger_es_port: 9200 +#kibana_image: kibana:5.4.3 + +kibana_oauth_redirect_url: "{{proto}}://{{proxy_server_name}}/oauth2/callback" +keycloak: True + +api__host: "{{proxy_server_name}}" + +# New variable +sunbird_enable_signup: 'true' +sunbird_portal_base_url: "{{proto}}://{{proxy_server_name}}" + +monitor_es_host: "{{ groups['es'][0] }}" +alertmanager_host: "{{ groups['swarm-agent-for-alertmanager'][0] }}" +prometheus_host: "{{ groups['swarm-agent-for-prometheus'][0] }}" + +swarm_load_balancer: "{{swarm_agent_load_balancer}}" +filebeat_logtsash_host: "{{ swarm_load_balancer }}" +expected_minimum_logs_per_minute: 30 +proxy_prometheus: true +enable_scraping_docker_metrics: false +postgres_exporter_postgres_port: 5432 +postgres_exporter_user: postgres_exporter +sunbird_cs_base_url: "{{proto}}://{{proxy_server_name}}/api" +kong_admin_api_url: http://api-manager_kong:8001 +#kong_admin_api_url: manager + +postgresql_backup_azure_storage_account_name: "{{ core_vault_sunbird_azure_storage_account }}" +postgresql_backup_azure_storage_access_key: "{{ backup_storage_key }}" +postgresql_restore_azure_storage_account_name: "{{ core_vault_sunbird_azure_storage_account }}" +postgresql_restore_azure_storage_access_key: "{{ backup_storage_key }}" + +grafana_url: "{{proto}}://{{proxy_server_name}}/grafana" +grafana_editor_username: editor + +monitor_alerts_mail_server_host: "{{ mail_server_host }}" +monitor_alerts_mail_server_port: "{{ mail_server_port }}" +monitor_alerts_mail_server_username: "{{ mail_server_username }}" +monitor_alerts_mail_server_password: "{{ mail_server_password }}" + +#badger +badger_admin_password: "{{core_vault_badger_admin_password}}" +badger_postgres_database: badger +badger_host: "{{ groups['postgresql-master'][0]}}" +badger_container: badgr +sunbird_http_orgin: "{{proto}}://{{proxy_server_name}}/badging" + +#enc-service +enc_postgres_database: encryption + +#analytics-service +analytics_postgres_database: analytics + + +#kafka vars +zk_hosts: "127.0.0.1:2181" +kafka_conf_dir: /etc/kafka +kafka_data_dir: /var/kafka +kafka_group: kafka +kafka_user: kafka +kafka_log_dir: /var/log/kafka +kafka_upstart_conf: /etc/init/kafka.conf +kafka_systemd_service: /etc/systemd/system/kafka.service +zookeeper_systemd_service: /etc/systemd/system/zookeeper.service +kafka_auto_create_topics: "false" +monasca_log_level: ERROR +delete_topic_enable: "true" +zk_port: 2181 + +kafka_broker_host: "{{groups['kafka']|join(',')}}" +zookeeper_quorum: "{{groups['kafka']|join(':2182,')}}:2181" +sunbird_account_key: "{{core_vault_sunbird_azure_storage_key}}" +sunbird_telemetry_kafka_topic: "{{env}}.telemetry.ingestion" +sunbird_data_pipeline_kafka_topic: "{{env}}.telemetry.ingest" +telemetry_proxy_url: "{{sunbird_ekstep_api_base_url}}/data/v3/telemetry" +sunbird_telemetry_request_max_count: 100 +sunbird_telemetry_api: "{{sunbird_ekstep_api_base_url}}/data/v3/telemetry" + +sunbird_portal_cdn_url: "{{sunbird_cdn_url}}/player/" +sunbird_tenant_cdn_url: "{{sunbird_cdn_url}}/tenants" + +# sunbird_cdn_url +player_cdn_account_key: "{{core_vault_sunbird_azure_storage_key}}" +player_cdn_container: player +player_cdn_account: "{{ core_vault_sunbird_azure_storage_account }}" + + +#Additional Variables +sunbird_user_bulk_upload_size: 1001 + +sunbird_open_saber_bridge_enable: 'false' + +# --- Content service specific ENV vars --- # +sunbird_content_service_enable_logging: 'true' +sunbird_language_service_api_key: "{{core_vault_sunbird_ekstep_api_key}}" +sunbird_language_service_api_base_url: '{{sunbird_ekstep_api_base_url}}/language' + +kong_version: 1.5.0-gold + +# Data pipeline vars +learning_analytics_service_url: 'http://{{learningservice_ip}}:9000' + + +#encryption Service +encryption_service_user: encryption +encryption_db_name: encryption +encryption_db_dialect: postgres +sunbird_allowed_login: +sunbird_course_batch_notification_enabled: 'true' +sunbird_device_register_api: "{{api_proxy_name}}/v3/device/register/" +sunbird_course_batch_notification_signature: sunbird + +sunbird_authorization: "{{core_vault_sunbird_api_auth_token}}" +sunbird_lms_base_url: "{{proto}}://{{proxy_server_name}}/api" +sunbird_content_service_local_base_url: http://content-service:5000 +sunbird_kafka_host: "{{groups['kafka']|join(':9092,')}}:9092" +sunbird_qrimage_topic: "{{env}}.qrimage.request" + + +sunbird_azure_report_container_name: reports +sunbird_azure_account_key: "{{core_vault_sunbird_azure_storage_key}}" + +sunbird_google_captcha_site_key: "{{core_vault_sunbird_google_captcha_site_key_portal}}" +sunbird_google_oauth_clientId: "{{core_vault_sunbird_google_oauth_clientId_portal}}" +sunbird_google_oauth_clientSecret: "{{core_vault_sunbird_google_oauth_clientSecret_portal}}" +google_client_id: "{{core_vault_kibana_google_client_id}}" +google_client_secret: "{{core_vault_kibana_google_client_secret}}" +cookie_secret: "{{core_vault_kibana_cookie_secret}}" +grafana_admin_password: "{{core_vault_grafana_admin_password}}" +grafana_editor_password: "{{core_vault_grafana_editor_password}}" +grafana_dashboards_git_repo_url_with_credentails: "{{core_vault_grafana_dashboards_git_repo_url_with_credentails}}" +monitor_alerts_slack_url: "{{core_vault_monitor_alerts_slack_url}}" +kong__test_jwt: "{{core_vault_kong__test_jwt}}" + +# postgresql_users should only be created in master and replicated to slave +postgresql_databases: + - name: "{{kong_postgres_database}}" + - name: "{{keycloak_postgres_database}}" + - name: "{{application_postgres_database}}" + - name: "{{badger_postgres_database}}" + - name: "{{enc_postgres_database}}" + - name: "{{analytics_postgres_database}}" + +#######App ES + +app_es_etc_cluster_name: "{{env}}" +app_es_etc_discovery_zen_minimum_master_nodes: "{{groups['es']| length | int}}" +app_es_snapshot_host: "{{ groups['es'][0] }}" +app_es_restore_host: "{{ groups['es'][0] }}" +app_es_snapshot_base_path: application + + +#######Log Es +log_es_etc_cluster_name: "{{env}}-log" +log_es_snapshot_host: "{{ groups['log-es'][0] }}" +log_es_restore_host: "{{ groups['log-es'][0] }}" +log_snapshot_base_path: logger +log_es_host: "{{ groups['log-es'][0] }}" + +####### Advanced Config ########## +keycloak_tar_path: keycloak.tar.gz +keycloak_theme_path: artifacts/sunbird +sunbird_telemetry_packet_size: 200 +sunbird_telemetry_sync_batch_size: 200 +content_service_whitelisted_channels: '' +content_service_blacklisted_channels: '' +content_service_channel_refresh_cron: '*/5 * * * *' +content_service_whitelisted_framework: '' +content_service_blacklisted_framework: '' +content_service_blacklisted_contenttype: '' +content_service_blacklisted_resourcetype: '' +content_service_whitelisted_resourcetype: '' +content_service_whitelisted_mimetype: '' +content_service_blacklisted_mimetype: '' +prometheus_storage_retention_time: 72h0m0s +kafka_jvm_opts: "-Xmx1G -Xms1G" +kafka_log_retention_hours: 2400 +sunbird_cloud_storage_urls: 'https://s3.ap-south-1.amazonaws.com/ekstep-public-dev/,https://ekstep-public-dev.s3-ap-south-1.amazonaws.com/,https://sunbirddev.blob.core.windows.net/sunbird-content-dev/' +sunbird_email_max_recipients_limit: 100 +sunbird_cassandra_consistency_level: one +sunbird_cassandra_replication_strategy: '{"class":"SimpleStrategy","replication_factor":"1"}' +medium_rate_limit_per_hour: 5000 +sunbird_lock_expiry_time: 1800 +sunbird_lock_expiry_time: 3600 +app_es_heap_size: 1500m +log_es_heap_size: 1500m +sunbird_otp_expiration: 1800 +sunbird_otp_length: 6 +sunbird_help_link_visibility: FALSE + + + +#Container Limits +proxy_replicas: 1 +proxy_reservation_memory: 64M +proxy_limit_memory: 128M +kong_replicas: 1 +kong_reservation_memory: 64M +kong_limit_memory: 256M +echo_service_replicas: 1 +echo_service_reservation_memory: 8M +echo_service_limit_memory: 16M +adminutil_replicas: 1 +adminutil_reservation_memory: 300M +adminutil_limit_memory: 300M +actor_replicas: 1 +actor_reservation_memory: 500M +actor_limit_memory: 1024M +learner_limit_cpu: 1 +learner_replicas: 1 +learner_reservation_memory: 1000M +learner_limit_memory: 1000M +logger_logstash_heap_size: 512M +logger_logstash_replicas: 1 +logger_logstash_reservation_memory: 512M +logger_logstash_limit_memory: 750M +logger_kibana_reservation_memory: 750M +logger_kibana_limit_memory: 750M +logger_logspout_reservation_memory: 75M +logger_logspout_limit_memory: 75M +logger_oauth_reservation_memory: 32M +logger_oauth_limit_memory: 32M +logger_logstash_reservation_memory: 1024M +logger_logstash_limit_memory: 1024M +prometheus_reservation_memory: 1G +prometheus_limit_memory: 1G +alertmanager_reservation_memory: 100M +alertmanager_limit_memory: 100M +node_exporter_reservation_memory: 16M +node_exporter_limit_memory: 32M +cadvisor_reservation_memory: 100M +cadvisor_limit_memory: 100M +elasticsearch_exporter_reservation_memory: 8M +elasticsearch_exporter_limit_memory: 24M +postgres_exporter_reservation_memory: 16M +postgres_exporter_limit_memory: 32M +statsd_exporter_reservation_memory: 8M +statsd_exporter_limit_memory: 16M +blackbox_exporter_reservation_memory: 16M +blackbox_exporter_limit_memory: 32M +jsonpath_exporter_reservation_memory: 32M +jsonpath_exporter_limit_memory: 64M +azure_blob_exporter_reservation_memory: 16M +azure_blob_exporter_limit_memory: 64M +grafana_reservation_memory: 100M +grafana_limit_memory: 100M +monitor_logstash_replicas: 1 +monitor_logstash_heap_size: 256m +monitor_logstash_reservation_memory: 256M +monitor_logstash_limit_memory: 350M +monitor_logspout_reservation_memory: 150M +monitor_logspout_limit_memory: 150M +player_replicas: 1 +player_reservation_memory: 256M +player_limit_memory: 512M +content_replicas: 1 +content_reservation_memory: 1000M +content_limit_memory: 1000M +learner_replicas: 1 +learner_reservation_memory: 1000M +learner_limit_memory: 1000M +learner_reservation_cpu: 1 +badger_replicas: 2 +badger_reservation_memory: 500MB +badger_limit_memory: 500MB + From 42ed71db913db0568c00128316b1158c9c4f9065 Mon Sep 17 00:00:00 2001 From: S M Y Date: Thu, 31 Jan 2019 11:38:31 +0530 Subject: [PATCH 0836/1345] Issue #000 vars: env vars update --- ansible/inventory/env/Core/env.yml | 454 ------------------ ansible/inventory/env/Core/group_vars/env.yml | 454 ++++++++++++++++++ 2 files changed, 454 insertions(+), 454 deletions(-) delete mode 100644 ansible/inventory/env/Core/env.yml diff --git a/ansible/inventory/env/Core/env.yml b/ansible/inventory/env/Core/env.yml deleted file mode 100644 index 8dea667cdf..0000000000 --- a/ansible/inventory/env/Core/env.yml +++ /dev/null @@ -1,454 +0,0 @@ -# ENVIRONMENT CONFIGURATION -proxy_site_key: "{{ core_vault_proxy_site_key }}" #SSL certificate's site.key file contents. More details in this wiki: {{proto}}://github.com/project-sunbird/sunbird-commons/wiki/Updating-SSL-certificates-in-Sunbird-Proxy-service -proxy_site_crt: "{{ core_vault_proxy_site_crt }}" #SSL certificate's site.crt file contents. More details in this wiki: {{proto}}://github.com/project-sunbird/sunbird-commons/wiki/Updating-SSL-certificates-in-Sunbird-Proxy-service - -## Below passwords are used by DB install scripts when creating databases. Please use strong passwords. -sunbird_pg_user: "{{core_vault_postgres_username}}" -application_postgres_user: "{{core_vault_postgres_username}}" -keycloak_postgres_user: "{{core_vault_postgres_username}}" -kong_postgres_user: "{{core_vault_postgres_username}}" -enc_postgres_user: "{{core_vault_postgres_username}}" -analytics_postgres_user: "{{core_vault_postgres_username}}" -badger_postgres_user: "{{core_vault_postgres_username}}" -postgres_password: "{{ core_vault_postgres_password }}" #Password for Kong (API Manager) database. -sunbird_default_channel: sunbird -backup_storage_account: "{{core_vault_sunbird_azure_storage_account}}" -backup_storage_key: "{{core_vault_sunbird_azure_storage_key}}" -sunbird_account_name: "{{core_vault_sunbird_azure_storage_account}}" -sunbird_account_key: "{{core_vault_sunbird_azure_storage_key}}" -ansible_vault_password: "{{ core_vault_ansible_vault_password }}" -sunbird_account_name: "{{core_vault_sunbird_azure_storage_account}}" -sunbird_azure_account_name: "{{core_vault_sunbird_azure_storage_account}}" -sunbird_google_keycloak_secret: "{{core_vault_google_keycloak_secret}}" -jenkins_admin_username: "{{core_vault_jenkins_admin_username}}" -jenkins_admin_password: "{{core_vault_jenkins_admin_password}}" -bootstrap_user: "{{core_vault_bootstrap_user}}" -bootstrap_key_path: "{{core_vault_bootstrap_key_path}}" - -## Postgres configuration -swarm_address_space: "{{groups['swarm-manager'][0].split(\".\")[0]}}.0.0.0/8" #Application server address space (e.g. 10.3.0.0/24), also the agentpublicSubnet if using Azure scripts provided -keycloak_address_space: "{{groups['keycloak'][0].split(\".\")[0]}}.0.0.0/8" -postgres_address_space: "{{groups['postgresql-master'][0].split(\".\")[0]}}.0.0.0/8" - -## Cassandra configuration -cassandra_server_private_ip: "{{groups['cassandra'][0]}}" #Private IP of cassandra server -keystore_password: "{{core_vault_keystore_password}}" #Password to use for encrypting cassandra keystore. Use a strong password. -truststore_password: "{{core_vault_truststore_password}}" #Password to use for encrypting cassandra truststore. Use a strong password. - -# APPLICATION CONFIGURATION -kong_host: api-manager_kong - -## DB address -application_postgres_host: "{{groups['postgres'][0]}}" #Private IP of Postgres server -keycloak_postgres_host: "{{groups['postgres'][0]}}" #Private IP of Postgres server -kong_postgres_host: "{{groups['postgres'][0]}}" #Private IP of Postgres server -sunbird_cassandra_host: "{{groups['cassandra'][0]}}" #Private IP of Cassandra server -sunbird_es_host: "{{groups['es']| join(',')}}" - -## Application server configurations -sunbird_analytics_api_base_url: "http://{{analyticsapi_ip}}:9000" -sunbird_search_service_api_base_url: "http://{{searchservice_ip}}:9000" -sunbird_mail_server_host: "{{ mail_server_host }}" #SMTP server IP. Could be ignored if not mails are to be sent. -sunbird_mail_server_port: "{{ mail_server_port }}" #SMTP port. Could be ignored if not mails are to be sent. -sunbird_mail_server_username: "{{ mail_server_username }}" #SMTP username. Could be ignored if not mails are to be sent. -sunbird_mail_server_password: "{{ mail_server_password }}" #SMTP server pasword. Could be ignored if not mails are to be sent. - -## Keycloak (auth server) login details -sunbird_sso_username: "{{ core_vault_sunbird_sso_username }}" -sunbird_sso_password: "{{ core_vault_sunbird_sso_password }}" -keycloak_admin_initial_password: "{{ core_vault_keyclaok_deployer_sudo_pass }}" - - -## Content Repo configuration -sunbird_api_auth_token: "{{ core_vault_sunbird_api_auth_token }}" #Authorization key (JWT) to access Sunbird APIs. This will be in the output of deploy-apis.sh script, extracting it out is documented in the deployment wiki. -sunbird_ekstep_api_key: "{{ core_vault_sunbird_ekstep_api_key }}" #Authorization key (JWT) to access Ekstep APIs. Steps to generate this are documented on {{proto}}://github.com/project-sunbird/sunbird-commons/wiki/Obtaining-API-token-for-accessing-ekstep-APIs -sunbird_trampoline_secret: "{{ core_vault_sunbird_trampoline_secret }}" - -# ADVANCED CONFIGURATIONS - -cassandra_listen_address: "{{ cassandra_server_private_ip }}" -cassandra_seeds: "{{ cassandra_server_private_ip }}" -cassandra_broadcast_rpc_address: "{{ cassandra_server_private_ip }}" -cassandra_broadcast_address: "{{ cassandra_server_private_ip }}" -cassandra_listen_interface: '' -cassandra_log_dir: '/var/log/cassandra' -cassandra_root_dir: '/etc/cassandra' -cassandra_version: '3.9' -cassandra_port: 9042 -cassandra_rpc_address: 0.0.0.0 -cassandra_restore_dir: /home/deployer/ -cassandra_backup_azure_container_name: cassandra-backup -cassandra_backup_azure_storage_account_name: "{{ core_vault_sunbird_azure_storage_account }}" -cassandra_backup_azure_storage_access_key: "{{backup_storage_key}}" -cassandra_backup_dir: /data/cassandra/backup - - -keycloak_auth_server_url: "{{proto}}://{{ proxy_server_name }}/auth" -keycloak_realm: sunbird -sunbird_content_player_url: "http://api-manager_kong:8000/" -sunbird_learner_player_url: "http://api-manager_kong:8000/" -sunbird_sso_client_id: admin-cli -sunbird_portal_realm: sunbird -sunbird_portal_auth_server_client: portal -sunbird_trampoline_client_id: trampoline -sunbird_appid: "{{env}}.sunbird.portal" -sunbird_echo_api_url: "{{proto}}://{{ proxy_server_name }}/api/echo/" -sunbird_pg_db: quartz -sunbird_pg_host: "{{ application_postgres_host }}" -sunbird_pg_port: 5432 -sunbird_pg_password: "{{ core_vault_postgres_password }}" -sunbird_account_key: "{{ core_vault_sunbird_azure_storage_key }}" -sunbird_sunbird_quartz_mode: cluster -sunbird_encryption_mode: local -sunbird_cassandra_urls: "{{ cassandra_server_private_ip }}:{{ cassandra_port }}" -sunbird_session_store_type: cassandra -sunbird_keycloak_client_id: 'portal' -sunbird_keycloak_public: true -sunbird_cache_store: "memory" -sunbird_cache_ttl: 1800 -sunbird_portal_title_name: portal -sunbird_web_url: "{{proto}}://{{ proxy_server_name }}" -sunbird_sso_publickey: "{{core_vault_sunbird_sso_publickey}}" -sunbird_azure_storage_account: "{{core_vault_sunbird_azure_storage_account}}" -sunbird_azure_storage_key: "{{core_vault_sunbird_azure_storage_key}}" -sunbird_app_url: -sunbird_fcm_account_key: "{{core_vault_sunbird_fcm_account_key}}" -sunbird_env_logo_url: "{{proto}}://{{proxy_server_name}}/common/images/sunbird_logo.png" -sunbird_msg_91_auth: "{{core_vault_msg91_auth_key}}" -sunbird_telemetry_dispatchers: kafka -sunbird_content_service_producer_id: "{{env}}.sunbird.content-service" -sunbird_telemetry_pdata_id: "{{env}}.sunbird.learning.service" -sunbird_http_orgin: "{{proto}}://{{ proxy_server_name }}/badging" -sunbird_encryption_key: "{{ core_vault_sunbird_encryption_key }}" -#player_tenant_dir: -sunbird_dataservice_url: "{{proto}}://{{ proxy_server_name }}/api/" -application_postgres_database: quartz -keycloak_postgres_database: keycloak -keyclaok_deployer_sudo_pass: "{{core_vault_keyclaok_deployer_sudo_pass}}" -keycloak_password: "{{core_vault_keycloak_password}}" -#Content Service Vars -sunbird_content_repo_api_base_url: "http://{{learningservice_ip}}:8080/learning-service" -sunbird_content_repo_api_key: "{{ core_vault_sunbird_ekstep_api_key }}" -sunbird_search_service_api_key: "{{ core_vault_sunbird_ekstep_api_key }}" -sunbird_dial_repo_api_base_url: "{{sunbird_ekstep_api_base_url}}" -sunbird_dial_repo_api_key: "{{ core_vault_sunbird_ekstep_api_key }}" -sunbird_plugin_repo_api_base_url: "{{sunbird_ekstep_api_base_url}}" -sunbird_plugin_repo_api_key: "{{ core_vault_sunbird_ekstep_api_key }}" -sunbird_data_service_api_base_url: "{{sunbird_ekstep_api_base_url}}" -sunbird_data_service_api_key: "{{ core_vault_sunbird_ekstep_api_key }}" - - - -## Cassandra download URI -cassandra_repo: 'deb http://www.apache.org/dist/cassandra/debian 39x main' -cassandra_repo_key: '{{proto}}://www.apache.org/dist/cassandra/KEYS' - -#API Manager -kong_postgres_port: 5432 -kong_postgres_database: api_manager_dev -es_curl_host: "{{groups['es'][0]}}" - -## Logging details -syslog: - host: "{{groups['swarm-manager']}}" - port: 51415 - -jenkins_replicas: 2 - -## PostgreSQL config -postgres_replication_user_name: "{{ core_vault_postgres_username }}" -postgres_password: "{{ core_vault_postgres_password }}" - - -postgresql_hba_entries: - - { type: local, database: all, user: postgres, auth_method: peer } - - { type: local, database: all, user: all, auth_method: peer } - - { type: host, database: all, user: all, address: '127.0.0.1/32', auth_method: md5 } - - { type: host, database: all, user: all, address: '::1/128', auth_method: md5 } - - { type: host, database: all, user: "{{ postgres_exporter_user }}", address: '{{ swarm_address_space }}', auth_method: md5 } - - { type: host, database: replication, user: "{{ postgres_replication_user_name }}", address: '{{ postgres_address_space }}', auth_method: md5 } - - { type: host, database: all, user: all, address: '{{ swarm_address_space }}', auth_method: md5 } - - { type: host, database: all, user: all, address: '{{ keycloak_address_space }}', auth_method: md5 } - -docker_hub_password: "{{ core_vault_docker_hub_password }}" -jenkins_slave_jenkins_username: "{{ core_vault_jenkins_slave_jenkins_username }}" -jenkins_slave_jenkins_password: "{{ core_vault_jenkins_slave_jenkins_password }}" -ops_private_key: "{{ core_vault_ops_private_key }}" -deployer_ssh_key: "{{ core_vault_deployer_ssh_key }}" -proxy_prometheus_admin_creds: "{{ core_vault_proxy_prometheus_admin_creds }}" -vault_docker_registery_url: "{{core_vault_docker_registery_url}}" -vault_docker_registery_user: "{{core_vault_docker_registery_user}}" -vault_docker_registry_password: "{{core_vault_docker_registry_password}}" - -# ADDITIONAL CONFIGURATION -curl_host: "{{proxy_server_name}}" -prometheus_data_dir: /var/dockerdata/prometheus/data -mail_server_password: "{{ core_vault_mail_server_password }}" - -logger_es_host: "{{ groups['log-es'][0] }}" -logger_es_port: 9200 -#kibana_image: kibana:5.4.3 - -kibana_oauth_redirect_url: "{{proto}}://{{proxy_server_name}}/oauth2/callback" -keycloak: True - -api__host: "{{proxy_server_name}}" - -# New variable -sunbird_enable_signup: 'true' -sunbird_portal_base_url: "{{proto}}://{{proxy_server_name}}" - -monitor_es_host: "{{ groups['es'][0] }}" -alertmanager_host: "{{ groups['swarm-agent-for-alertmanager'][0] }}" -prometheus_host: "{{ groups['swarm-agent-for-prometheus'][0] }}" - -swarm_load_balancer: "{{swarm_agent_load_balancer}}" -filebeat_logtsash_host: "{{ swarm_load_balancer }}" -expected_minimum_logs_per_minute: 30 -proxy_prometheus: true -enable_scraping_docker_metrics: false -postgres_exporter_postgres_port: 5432 -postgres_exporter_user: postgres_exporter -sunbird_cs_base_url: "{{proto}}://{{proxy_server_name}}/api" -kong_admin_api_url: http://api-manager_kong:8001 -#kong_admin_api_url: manager - -postgresql_backup_azure_storage_account_name: "{{ core_vault_sunbird_azure_storage_account }}" -postgresql_backup_azure_storage_access_key: "{{ backup_storage_key }}" -postgresql_restore_azure_storage_account_name: "{{ core_vault_sunbird_azure_storage_account }}" -postgresql_restore_azure_storage_access_key: "{{ backup_storage_key }}" - -grafana_url: "{{proto}}://{{proxy_server_name}}/grafana" -grafana_editor_username: editor - -monitor_alerts_mail_server_host: "{{ mail_server_host }}" -monitor_alerts_mail_server_port: "{{ mail_server_port }}" -monitor_alerts_mail_server_username: "{{ mail_server_username }}" -monitor_alerts_mail_server_password: "{{ mail_server_password }}" - -#badger -badger_admin_password: "{{core_vault_badger_admin_password}}" -badger_postgres_database: badger -badger_host: "{{ groups['postgresql-master'][0]}}" -badger_container: badgr -sunbird_http_orgin: "{{proto}}://{{proxy_server_name}}/badging" - -#enc-service -enc_postgres_database: encryption - -#analytics-service -analytics_postgres_database: analytics - - -#kafka vars -zk_hosts: "127.0.0.1:2181" -kafka_conf_dir: /etc/kafka -kafka_data_dir: /var/kafka -kafka_group: kafka -kafka_user: kafka -kafka_log_dir: /var/log/kafka -kafka_upstart_conf: /etc/init/kafka.conf -kafka_systemd_service: /etc/systemd/system/kafka.service -zookeeper_systemd_service: /etc/systemd/system/zookeeper.service -kafka_auto_create_topics: "false" -monasca_log_level: ERROR -delete_topic_enable: "true" -zk_port: 2181 - -kafka_broker_host: "{{groups['kafka']|join(',')}}" -zookeeper_quorum: "{{groups['kafka']|join(':2182,')}}:2181" -sunbird_account_key: "{{core_vault_sunbird_azure_storage_key}}" -sunbird_telemetry_kafka_topic: "{{env}}.telemetry.ingestion" -sunbird_data_pipeline_kafka_topic: "{{env}}.telemetry.ingest" -telemetry_proxy_url: "{{sunbird_ekstep_api_base_url}}/data/v3/telemetry" -sunbird_telemetry_request_max_count: 100 -sunbird_telemetry_api: "{{sunbird_ekstep_api_base_url}}/data/v3/telemetry" - -sunbird_portal_cdn_url: "{{sunbird_cdn_url}}/player/" -sunbird_tenant_cdn_url: "{{sunbird_cdn_url}}/tenants" - -# sunbird_cdn_url -player_cdn_account_key: "{{core_vault_sunbird_azure_storage_key}}" -player_cdn_container: player -player_cdn_account: "{{ core_vault_sunbird_azure_storage_account }}" - - -#Additional Variables -sunbird_user_bulk_upload_size: 1001 - -sunbird_open_saber_bridge_enable: 'false' - -# --- Content service specific ENV vars --- # -sunbird_content_service_enable_logging: 'true' -sunbird_language_service_api_key: "{{core_vault_sunbird_ekstep_api_key}}" -sunbird_language_service_api_base_url: '{{sunbird_ekstep_api_base_url}}/language' - -kong_version: 1.5.0-gold - -# Data pipeline vars -learning_analytics_service_url: 'http://{{learningservice_ip}}:9000' - - -#encryption Service -encryption_service_user: encryption -encryption_db_name: encryption -encryption_db_dialect: postgres -sunbird_allowed_login: -sunbird_course_batch_notification_enabled: 'true' -sunbird_device_register_api: "{{api_proxy_name}}/v3/device/register/" -sunbird_course_batch_notification_signature: sunbird - -sunbird_authorization: "{{core_vault_sunbird_api_auth_token}}" -sunbird_lms_base_url: "{{proto}}://{{proxy_server_name}}/api" -sunbird_content_service_local_base_url: http://content-service:5000 -sunbird_kafka_host: "{{groups['kafka']|join(':9092,')}}:9092" -sunbird_qrimage_topic: "{{env}}.qrimage.request" - - -sunbird_azure_report_container_name: reports -sunbird_azure_account_key: "{{core_vault_sunbird_azure_storage_key}}" - -sunbird_google_captcha_site_key: "{{core_vault_sunbird_google_captcha_site_key_portal}}" -sunbird_google_oauth_clientId: "{{core_vault_sunbird_google_oauth_clientId_portal}}" -sunbird_google_oauth_clientSecret: "{{core_vault_sunbird_google_oauth_clientSecret_portal}}" -google_client_id: "{{core_vault_kibana_google_client_id}}" -google_client_secret: "{{core_vault_kibana_google_client_secret}}" -cookie_secret: "{{core_vault_kibana_cookie_secret}}" -grafana_admin_password: "{{core_vault_grafana_admin_password}}" -grafana_editor_password: "{{core_vault_grafana_editor_password}}" -grafana_dashboards_git_repo_url_with_credentails: "{{core_vault_grafana_dashboards_git_repo_url_with_credentails}}" -monitor_alerts_slack_url: "{{core_vault_monitor_alerts_slack_url}}" -kong__test_jwt: "{{core_vault_kong__test_jwt}}" - -# postgresql_users should only be created in master and replicated to slave -postgresql_databases: - - name: "{{kong_postgres_database}}" - - name: "{{keycloak_postgres_database}}" - - name: "{{application_postgres_database}}" - - name: "{{badger_postgres_database}}" - - name: "{{enc_postgres_database}}" - - name: "{{analytics_postgres_database}}" - -#######App ES - -app_es_etc_cluster_name: "{{env}}" -app_es_etc_discovery_zen_minimum_master_nodes: "{{groups['es']| length | int}}" -app_es_snapshot_host: "{{ groups['es'][0] }}" -app_es_restore_host: "{{ groups['es'][0] }}" -app_es_snapshot_base_path: application - - -#######Log Es -log_es_etc_cluster_name: "{{env}}-log" -log_es_snapshot_host: "{{ groups['log-es'][0] }}" -log_es_restore_host: "{{ groups['log-es'][0] }}" -log_snapshot_base_path: logger -log_es_host: "{{ groups['log-es'][0] }}" - -####### Advanced Config ########## -keycloak_tar_path: keycloak.tar.gz -keycloak_theme_path: artifacts/sunbird -sunbird_telemetry_packet_size: 200 -sunbird_telemetry_sync_batch_size: 200 -content_service_whitelisted_channels: '' -content_service_blacklisted_channels: '' -content_service_channel_refresh_cron: '*/5 * * * *' -content_service_whitelisted_framework: '' -content_service_blacklisted_framework: '' -content_service_blacklisted_contenttype: '' -content_service_blacklisted_resourcetype: '' -content_service_whitelisted_resourcetype: '' -content_service_whitelisted_mimetype: '' -content_service_blacklisted_mimetype: '' -prometheus_storage_retention_time: 72h0m0s -kafka_jvm_opts: "-Xmx1G -Xms1G" -kafka_log_retention_hours: 2400 -sunbird_cloud_storage_urls: 'https://s3.ap-south-1.amazonaws.com/ekstep-public-dev/,https://ekstep-public-dev.s3-ap-south-1.amazonaws.com/,https://sunbirddev.blob.core.windows.net/sunbird-content-dev/' -sunbird_email_max_recipients_limit: 100 -sunbird_cassandra_consistency_level: one -sunbird_cassandra_replication_strategy: '{"class":"SimpleStrategy","replication_factor":"1"}' -medium_rate_limit_per_hour: 5000 -sunbird_lock_expiry_time: 1800 -sunbird_lock_expiry_time: 3600 -app_es_heap_size: 1500m -log_es_heap_size: 1500m -sunbird_otp_expiration: 1800 -sunbird_otp_length: 6 -sunbird_help_link_visibility: FALSE - - - -#Container Limits -proxy_replicas: 1 -proxy_reservation_memory: 64M -proxy_limit_memory: 128M -kong_replicas: 1 -kong_reservation_memory: 64M -kong_limit_memory: 256M -echo_service_replicas: 1 -echo_service_reservation_memory: 8M -echo_service_limit_memory: 16M -adminutil_replicas: 1 -adminutil_reservation_memory: 300M -adminutil_limit_memory: 300M -actor_replicas: 1 -actor_reservation_memory: 500M -actor_limit_memory: 1024M -learner_limit_cpu: 1 -learner_replicas: 1 -learner_reservation_memory: 1000M -learner_limit_memory: 1000M -logger_logstash_heap_size: 512M -logger_logstash_replicas: 1 -logger_logstash_reservation_memory: 512M -logger_logstash_limit_memory: 750M -logger_kibana_reservation_memory: 750M -logger_kibana_limit_memory: 750M -logger_logspout_reservation_memory: 75M -logger_logspout_limit_memory: 75M -logger_oauth_reservation_memory: 32M -logger_oauth_limit_memory: 32M -logger_logstash_reservation_memory: 1024M -logger_logstash_limit_memory: 1024M -prometheus_reservation_memory: 1G -prometheus_limit_memory: 1G -alertmanager_reservation_memory: 100M -alertmanager_limit_memory: 100M -node_exporter_reservation_memory: 16M -node_exporter_limit_memory: 32M -cadvisor_reservation_memory: 100M -cadvisor_limit_memory: 100M -elasticsearch_exporter_reservation_memory: 8M -elasticsearch_exporter_limit_memory: 24M -postgres_exporter_reservation_memory: 16M -postgres_exporter_limit_memory: 32M -statsd_exporter_reservation_memory: 8M -statsd_exporter_limit_memory: 16M -blackbox_exporter_reservation_memory: 16M -blackbox_exporter_limit_memory: 32M -jsonpath_exporter_reservation_memory: 32M -jsonpath_exporter_limit_memory: 64M -azure_blob_exporter_reservation_memory: 16M -azure_blob_exporter_limit_memory: 64M -grafana_reservation_memory: 100M -grafana_limit_memory: 100M -monitor_logstash_replicas: 1 -monitor_logstash_heap_size: 256m -monitor_logstash_reservation_memory: 256M -monitor_logstash_limit_memory: 350M -monitor_logspout_reservation_memory: 150M -monitor_logspout_limit_memory: 150M -player_replicas: 1 -player_reservation_memory: 256M -player_limit_memory: 512M -content_replicas: 1 -content_reservation_memory: 1000M -content_limit_memory: 1000M -learner_replicas: 1 -learner_reservation_memory: 1000M -learner_limit_memory: 1000M -learner_reservation_cpu: 1 -badger_replicas: 2 -badger_reservation_memory: 500MB -badger_limit_memory: 500MB - diff --git a/ansible/inventory/env/Core/group_vars/env.yml b/ansible/inventory/env/Core/group_vars/env.yml index e69de29bb2..8dea667cdf 100644 --- a/ansible/inventory/env/Core/group_vars/env.yml +++ b/ansible/inventory/env/Core/group_vars/env.yml @@ -0,0 +1,454 @@ +# ENVIRONMENT CONFIGURATION +proxy_site_key: "{{ core_vault_proxy_site_key }}" #SSL certificate's site.key file contents. More details in this wiki: {{proto}}://github.com/project-sunbird/sunbird-commons/wiki/Updating-SSL-certificates-in-Sunbird-Proxy-service +proxy_site_crt: "{{ core_vault_proxy_site_crt }}" #SSL certificate's site.crt file contents. More details in this wiki: {{proto}}://github.com/project-sunbird/sunbird-commons/wiki/Updating-SSL-certificates-in-Sunbird-Proxy-service + +## Below passwords are used by DB install scripts when creating databases. Please use strong passwords. +sunbird_pg_user: "{{core_vault_postgres_username}}" +application_postgres_user: "{{core_vault_postgres_username}}" +keycloak_postgres_user: "{{core_vault_postgres_username}}" +kong_postgres_user: "{{core_vault_postgres_username}}" +enc_postgres_user: "{{core_vault_postgres_username}}" +analytics_postgres_user: "{{core_vault_postgres_username}}" +badger_postgres_user: "{{core_vault_postgres_username}}" +postgres_password: "{{ core_vault_postgres_password }}" #Password for Kong (API Manager) database. +sunbird_default_channel: sunbird +backup_storage_account: "{{core_vault_sunbird_azure_storage_account}}" +backup_storage_key: "{{core_vault_sunbird_azure_storage_key}}" +sunbird_account_name: "{{core_vault_sunbird_azure_storage_account}}" +sunbird_account_key: "{{core_vault_sunbird_azure_storage_key}}" +ansible_vault_password: "{{ core_vault_ansible_vault_password }}" +sunbird_account_name: "{{core_vault_sunbird_azure_storage_account}}" +sunbird_azure_account_name: "{{core_vault_sunbird_azure_storage_account}}" +sunbird_google_keycloak_secret: "{{core_vault_google_keycloak_secret}}" +jenkins_admin_username: "{{core_vault_jenkins_admin_username}}" +jenkins_admin_password: "{{core_vault_jenkins_admin_password}}" +bootstrap_user: "{{core_vault_bootstrap_user}}" +bootstrap_key_path: "{{core_vault_bootstrap_key_path}}" + +## Postgres configuration +swarm_address_space: "{{groups['swarm-manager'][0].split(\".\")[0]}}.0.0.0/8" #Application server address space (e.g. 10.3.0.0/24), also the agentpublicSubnet if using Azure scripts provided +keycloak_address_space: "{{groups['keycloak'][0].split(\".\")[0]}}.0.0.0/8" +postgres_address_space: "{{groups['postgresql-master'][0].split(\".\")[0]}}.0.0.0/8" + +## Cassandra configuration +cassandra_server_private_ip: "{{groups['cassandra'][0]}}" #Private IP of cassandra server +keystore_password: "{{core_vault_keystore_password}}" #Password to use for encrypting cassandra keystore. Use a strong password. +truststore_password: "{{core_vault_truststore_password}}" #Password to use for encrypting cassandra truststore. Use a strong password. + +# APPLICATION CONFIGURATION +kong_host: api-manager_kong + +## DB address +application_postgres_host: "{{groups['postgres'][0]}}" #Private IP of Postgres server +keycloak_postgres_host: "{{groups['postgres'][0]}}" #Private IP of Postgres server +kong_postgres_host: "{{groups['postgres'][0]}}" #Private IP of Postgres server +sunbird_cassandra_host: "{{groups['cassandra'][0]}}" #Private IP of Cassandra server +sunbird_es_host: "{{groups['es']| join(',')}}" + +## Application server configurations +sunbird_analytics_api_base_url: "http://{{analyticsapi_ip}}:9000" +sunbird_search_service_api_base_url: "http://{{searchservice_ip}}:9000" +sunbird_mail_server_host: "{{ mail_server_host }}" #SMTP server IP. Could be ignored if not mails are to be sent. +sunbird_mail_server_port: "{{ mail_server_port }}" #SMTP port. Could be ignored if not mails are to be sent. +sunbird_mail_server_username: "{{ mail_server_username }}" #SMTP username. Could be ignored if not mails are to be sent. +sunbird_mail_server_password: "{{ mail_server_password }}" #SMTP server pasword. Could be ignored if not mails are to be sent. + +## Keycloak (auth server) login details +sunbird_sso_username: "{{ core_vault_sunbird_sso_username }}" +sunbird_sso_password: "{{ core_vault_sunbird_sso_password }}" +keycloak_admin_initial_password: "{{ core_vault_keyclaok_deployer_sudo_pass }}" + + +## Content Repo configuration +sunbird_api_auth_token: "{{ core_vault_sunbird_api_auth_token }}" #Authorization key (JWT) to access Sunbird APIs. This will be in the output of deploy-apis.sh script, extracting it out is documented in the deployment wiki. +sunbird_ekstep_api_key: "{{ core_vault_sunbird_ekstep_api_key }}" #Authorization key (JWT) to access Ekstep APIs. Steps to generate this are documented on {{proto}}://github.com/project-sunbird/sunbird-commons/wiki/Obtaining-API-token-for-accessing-ekstep-APIs +sunbird_trampoline_secret: "{{ core_vault_sunbird_trampoline_secret }}" + +# ADVANCED CONFIGURATIONS + +cassandra_listen_address: "{{ cassandra_server_private_ip }}" +cassandra_seeds: "{{ cassandra_server_private_ip }}" +cassandra_broadcast_rpc_address: "{{ cassandra_server_private_ip }}" +cassandra_broadcast_address: "{{ cassandra_server_private_ip }}" +cassandra_listen_interface: '' +cassandra_log_dir: '/var/log/cassandra' +cassandra_root_dir: '/etc/cassandra' +cassandra_version: '3.9' +cassandra_port: 9042 +cassandra_rpc_address: 0.0.0.0 +cassandra_restore_dir: /home/deployer/ +cassandra_backup_azure_container_name: cassandra-backup +cassandra_backup_azure_storage_account_name: "{{ core_vault_sunbird_azure_storage_account }}" +cassandra_backup_azure_storage_access_key: "{{backup_storage_key}}" +cassandra_backup_dir: /data/cassandra/backup + + +keycloak_auth_server_url: "{{proto}}://{{ proxy_server_name }}/auth" +keycloak_realm: sunbird +sunbird_content_player_url: "http://api-manager_kong:8000/" +sunbird_learner_player_url: "http://api-manager_kong:8000/" +sunbird_sso_client_id: admin-cli +sunbird_portal_realm: sunbird +sunbird_portal_auth_server_client: portal +sunbird_trampoline_client_id: trampoline +sunbird_appid: "{{env}}.sunbird.portal" +sunbird_echo_api_url: "{{proto}}://{{ proxy_server_name }}/api/echo/" +sunbird_pg_db: quartz +sunbird_pg_host: "{{ application_postgres_host }}" +sunbird_pg_port: 5432 +sunbird_pg_password: "{{ core_vault_postgres_password }}" +sunbird_account_key: "{{ core_vault_sunbird_azure_storage_key }}" +sunbird_sunbird_quartz_mode: cluster +sunbird_encryption_mode: local +sunbird_cassandra_urls: "{{ cassandra_server_private_ip }}:{{ cassandra_port }}" +sunbird_session_store_type: cassandra +sunbird_keycloak_client_id: 'portal' +sunbird_keycloak_public: true +sunbird_cache_store: "memory" +sunbird_cache_ttl: 1800 +sunbird_portal_title_name: portal +sunbird_web_url: "{{proto}}://{{ proxy_server_name }}" +sunbird_sso_publickey: "{{core_vault_sunbird_sso_publickey}}" +sunbird_azure_storage_account: "{{core_vault_sunbird_azure_storage_account}}" +sunbird_azure_storage_key: "{{core_vault_sunbird_azure_storage_key}}" +sunbird_app_url: +sunbird_fcm_account_key: "{{core_vault_sunbird_fcm_account_key}}" +sunbird_env_logo_url: "{{proto}}://{{proxy_server_name}}/common/images/sunbird_logo.png" +sunbird_msg_91_auth: "{{core_vault_msg91_auth_key}}" +sunbird_telemetry_dispatchers: kafka +sunbird_content_service_producer_id: "{{env}}.sunbird.content-service" +sunbird_telemetry_pdata_id: "{{env}}.sunbird.learning.service" +sunbird_http_orgin: "{{proto}}://{{ proxy_server_name }}/badging" +sunbird_encryption_key: "{{ core_vault_sunbird_encryption_key }}" +#player_tenant_dir: +sunbird_dataservice_url: "{{proto}}://{{ proxy_server_name }}/api/" +application_postgres_database: quartz +keycloak_postgres_database: keycloak +keyclaok_deployer_sudo_pass: "{{core_vault_keyclaok_deployer_sudo_pass}}" +keycloak_password: "{{core_vault_keycloak_password}}" +#Content Service Vars +sunbird_content_repo_api_base_url: "http://{{learningservice_ip}}:8080/learning-service" +sunbird_content_repo_api_key: "{{ core_vault_sunbird_ekstep_api_key }}" +sunbird_search_service_api_key: "{{ core_vault_sunbird_ekstep_api_key }}" +sunbird_dial_repo_api_base_url: "{{sunbird_ekstep_api_base_url}}" +sunbird_dial_repo_api_key: "{{ core_vault_sunbird_ekstep_api_key }}" +sunbird_plugin_repo_api_base_url: "{{sunbird_ekstep_api_base_url}}" +sunbird_plugin_repo_api_key: "{{ core_vault_sunbird_ekstep_api_key }}" +sunbird_data_service_api_base_url: "{{sunbird_ekstep_api_base_url}}" +sunbird_data_service_api_key: "{{ core_vault_sunbird_ekstep_api_key }}" + + + +## Cassandra download URI +cassandra_repo: 'deb http://www.apache.org/dist/cassandra/debian 39x main' +cassandra_repo_key: '{{proto}}://www.apache.org/dist/cassandra/KEYS' + +#API Manager +kong_postgres_port: 5432 +kong_postgres_database: api_manager_dev +es_curl_host: "{{groups['es'][0]}}" + +## Logging details +syslog: + host: "{{groups['swarm-manager']}}" + port: 51415 + +jenkins_replicas: 2 + +## PostgreSQL config +postgres_replication_user_name: "{{ core_vault_postgres_username }}" +postgres_password: "{{ core_vault_postgres_password }}" + + +postgresql_hba_entries: + - { type: local, database: all, user: postgres, auth_method: peer } + - { type: local, database: all, user: all, auth_method: peer } + - { type: host, database: all, user: all, address: '127.0.0.1/32', auth_method: md5 } + - { type: host, database: all, user: all, address: '::1/128', auth_method: md5 } + - { type: host, database: all, user: "{{ postgres_exporter_user }}", address: '{{ swarm_address_space }}', auth_method: md5 } + - { type: host, database: replication, user: "{{ postgres_replication_user_name }}", address: '{{ postgres_address_space }}', auth_method: md5 } + - { type: host, database: all, user: all, address: '{{ swarm_address_space }}', auth_method: md5 } + - { type: host, database: all, user: all, address: '{{ keycloak_address_space }}', auth_method: md5 } + +docker_hub_password: "{{ core_vault_docker_hub_password }}" +jenkins_slave_jenkins_username: "{{ core_vault_jenkins_slave_jenkins_username }}" +jenkins_slave_jenkins_password: "{{ core_vault_jenkins_slave_jenkins_password }}" +ops_private_key: "{{ core_vault_ops_private_key }}" +deployer_ssh_key: "{{ core_vault_deployer_ssh_key }}" +proxy_prometheus_admin_creds: "{{ core_vault_proxy_prometheus_admin_creds }}" +vault_docker_registery_url: "{{core_vault_docker_registery_url}}" +vault_docker_registery_user: "{{core_vault_docker_registery_user}}" +vault_docker_registry_password: "{{core_vault_docker_registry_password}}" + +# ADDITIONAL CONFIGURATION +curl_host: "{{proxy_server_name}}" +prometheus_data_dir: /var/dockerdata/prometheus/data +mail_server_password: "{{ core_vault_mail_server_password }}" + +logger_es_host: "{{ groups['log-es'][0] }}" +logger_es_port: 9200 +#kibana_image: kibana:5.4.3 + +kibana_oauth_redirect_url: "{{proto}}://{{proxy_server_name}}/oauth2/callback" +keycloak: True + +api__host: "{{proxy_server_name}}" + +# New variable +sunbird_enable_signup: 'true' +sunbird_portal_base_url: "{{proto}}://{{proxy_server_name}}" + +monitor_es_host: "{{ groups['es'][0] }}" +alertmanager_host: "{{ groups['swarm-agent-for-alertmanager'][0] }}" +prometheus_host: "{{ groups['swarm-agent-for-prometheus'][0] }}" + +swarm_load_balancer: "{{swarm_agent_load_balancer}}" +filebeat_logtsash_host: "{{ swarm_load_balancer }}" +expected_minimum_logs_per_minute: 30 +proxy_prometheus: true +enable_scraping_docker_metrics: false +postgres_exporter_postgres_port: 5432 +postgres_exporter_user: postgres_exporter +sunbird_cs_base_url: "{{proto}}://{{proxy_server_name}}/api" +kong_admin_api_url: http://api-manager_kong:8001 +#kong_admin_api_url: manager + +postgresql_backup_azure_storage_account_name: "{{ core_vault_sunbird_azure_storage_account }}" +postgresql_backup_azure_storage_access_key: "{{ backup_storage_key }}" +postgresql_restore_azure_storage_account_name: "{{ core_vault_sunbird_azure_storage_account }}" +postgresql_restore_azure_storage_access_key: "{{ backup_storage_key }}" + +grafana_url: "{{proto}}://{{proxy_server_name}}/grafana" +grafana_editor_username: editor + +monitor_alerts_mail_server_host: "{{ mail_server_host }}" +monitor_alerts_mail_server_port: "{{ mail_server_port }}" +monitor_alerts_mail_server_username: "{{ mail_server_username }}" +monitor_alerts_mail_server_password: "{{ mail_server_password }}" + +#badger +badger_admin_password: "{{core_vault_badger_admin_password}}" +badger_postgres_database: badger +badger_host: "{{ groups['postgresql-master'][0]}}" +badger_container: badgr +sunbird_http_orgin: "{{proto}}://{{proxy_server_name}}/badging" + +#enc-service +enc_postgres_database: encryption + +#analytics-service +analytics_postgres_database: analytics + + +#kafka vars +zk_hosts: "127.0.0.1:2181" +kafka_conf_dir: /etc/kafka +kafka_data_dir: /var/kafka +kafka_group: kafka +kafka_user: kafka +kafka_log_dir: /var/log/kafka +kafka_upstart_conf: /etc/init/kafka.conf +kafka_systemd_service: /etc/systemd/system/kafka.service +zookeeper_systemd_service: /etc/systemd/system/zookeeper.service +kafka_auto_create_topics: "false" +monasca_log_level: ERROR +delete_topic_enable: "true" +zk_port: 2181 + +kafka_broker_host: "{{groups['kafka']|join(',')}}" +zookeeper_quorum: "{{groups['kafka']|join(':2182,')}}:2181" +sunbird_account_key: "{{core_vault_sunbird_azure_storage_key}}" +sunbird_telemetry_kafka_topic: "{{env}}.telemetry.ingestion" +sunbird_data_pipeline_kafka_topic: "{{env}}.telemetry.ingest" +telemetry_proxy_url: "{{sunbird_ekstep_api_base_url}}/data/v3/telemetry" +sunbird_telemetry_request_max_count: 100 +sunbird_telemetry_api: "{{sunbird_ekstep_api_base_url}}/data/v3/telemetry" + +sunbird_portal_cdn_url: "{{sunbird_cdn_url}}/player/" +sunbird_tenant_cdn_url: "{{sunbird_cdn_url}}/tenants" + +# sunbird_cdn_url +player_cdn_account_key: "{{core_vault_sunbird_azure_storage_key}}" +player_cdn_container: player +player_cdn_account: "{{ core_vault_sunbird_azure_storage_account }}" + + +#Additional Variables +sunbird_user_bulk_upload_size: 1001 + +sunbird_open_saber_bridge_enable: 'false' + +# --- Content service specific ENV vars --- # +sunbird_content_service_enable_logging: 'true' +sunbird_language_service_api_key: "{{core_vault_sunbird_ekstep_api_key}}" +sunbird_language_service_api_base_url: '{{sunbird_ekstep_api_base_url}}/language' + +kong_version: 1.5.0-gold + +# Data pipeline vars +learning_analytics_service_url: 'http://{{learningservice_ip}}:9000' + + +#encryption Service +encryption_service_user: encryption +encryption_db_name: encryption +encryption_db_dialect: postgres +sunbird_allowed_login: +sunbird_course_batch_notification_enabled: 'true' +sunbird_device_register_api: "{{api_proxy_name}}/v3/device/register/" +sunbird_course_batch_notification_signature: sunbird + +sunbird_authorization: "{{core_vault_sunbird_api_auth_token}}" +sunbird_lms_base_url: "{{proto}}://{{proxy_server_name}}/api" +sunbird_content_service_local_base_url: http://content-service:5000 +sunbird_kafka_host: "{{groups['kafka']|join(':9092,')}}:9092" +sunbird_qrimage_topic: "{{env}}.qrimage.request" + + +sunbird_azure_report_container_name: reports +sunbird_azure_account_key: "{{core_vault_sunbird_azure_storage_key}}" + +sunbird_google_captcha_site_key: "{{core_vault_sunbird_google_captcha_site_key_portal}}" +sunbird_google_oauth_clientId: "{{core_vault_sunbird_google_oauth_clientId_portal}}" +sunbird_google_oauth_clientSecret: "{{core_vault_sunbird_google_oauth_clientSecret_portal}}" +google_client_id: "{{core_vault_kibana_google_client_id}}" +google_client_secret: "{{core_vault_kibana_google_client_secret}}" +cookie_secret: "{{core_vault_kibana_cookie_secret}}" +grafana_admin_password: "{{core_vault_grafana_admin_password}}" +grafana_editor_password: "{{core_vault_grafana_editor_password}}" +grafana_dashboards_git_repo_url_with_credentails: "{{core_vault_grafana_dashboards_git_repo_url_with_credentails}}" +monitor_alerts_slack_url: "{{core_vault_monitor_alerts_slack_url}}" +kong__test_jwt: "{{core_vault_kong__test_jwt}}" + +# postgresql_users should only be created in master and replicated to slave +postgresql_databases: + - name: "{{kong_postgres_database}}" + - name: "{{keycloak_postgres_database}}" + - name: "{{application_postgres_database}}" + - name: "{{badger_postgres_database}}" + - name: "{{enc_postgres_database}}" + - name: "{{analytics_postgres_database}}" + +#######App ES + +app_es_etc_cluster_name: "{{env}}" +app_es_etc_discovery_zen_minimum_master_nodes: "{{groups['es']| length | int}}" +app_es_snapshot_host: "{{ groups['es'][0] }}" +app_es_restore_host: "{{ groups['es'][0] }}" +app_es_snapshot_base_path: application + + +#######Log Es +log_es_etc_cluster_name: "{{env}}-log" +log_es_snapshot_host: "{{ groups['log-es'][0] }}" +log_es_restore_host: "{{ groups['log-es'][0] }}" +log_snapshot_base_path: logger +log_es_host: "{{ groups['log-es'][0] }}" + +####### Advanced Config ########## +keycloak_tar_path: keycloak.tar.gz +keycloak_theme_path: artifacts/sunbird +sunbird_telemetry_packet_size: 200 +sunbird_telemetry_sync_batch_size: 200 +content_service_whitelisted_channels: '' +content_service_blacklisted_channels: '' +content_service_channel_refresh_cron: '*/5 * * * *' +content_service_whitelisted_framework: '' +content_service_blacklisted_framework: '' +content_service_blacklisted_contenttype: '' +content_service_blacklisted_resourcetype: '' +content_service_whitelisted_resourcetype: '' +content_service_whitelisted_mimetype: '' +content_service_blacklisted_mimetype: '' +prometheus_storage_retention_time: 72h0m0s +kafka_jvm_opts: "-Xmx1G -Xms1G" +kafka_log_retention_hours: 2400 +sunbird_cloud_storage_urls: 'https://s3.ap-south-1.amazonaws.com/ekstep-public-dev/,https://ekstep-public-dev.s3-ap-south-1.amazonaws.com/,https://sunbirddev.blob.core.windows.net/sunbird-content-dev/' +sunbird_email_max_recipients_limit: 100 +sunbird_cassandra_consistency_level: one +sunbird_cassandra_replication_strategy: '{"class":"SimpleStrategy","replication_factor":"1"}' +medium_rate_limit_per_hour: 5000 +sunbird_lock_expiry_time: 1800 +sunbird_lock_expiry_time: 3600 +app_es_heap_size: 1500m +log_es_heap_size: 1500m +sunbird_otp_expiration: 1800 +sunbird_otp_length: 6 +sunbird_help_link_visibility: FALSE + + + +#Container Limits +proxy_replicas: 1 +proxy_reservation_memory: 64M +proxy_limit_memory: 128M +kong_replicas: 1 +kong_reservation_memory: 64M +kong_limit_memory: 256M +echo_service_replicas: 1 +echo_service_reservation_memory: 8M +echo_service_limit_memory: 16M +adminutil_replicas: 1 +adminutil_reservation_memory: 300M +adminutil_limit_memory: 300M +actor_replicas: 1 +actor_reservation_memory: 500M +actor_limit_memory: 1024M +learner_limit_cpu: 1 +learner_replicas: 1 +learner_reservation_memory: 1000M +learner_limit_memory: 1000M +logger_logstash_heap_size: 512M +logger_logstash_replicas: 1 +logger_logstash_reservation_memory: 512M +logger_logstash_limit_memory: 750M +logger_kibana_reservation_memory: 750M +logger_kibana_limit_memory: 750M +logger_logspout_reservation_memory: 75M +logger_logspout_limit_memory: 75M +logger_oauth_reservation_memory: 32M +logger_oauth_limit_memory: 32M +logger_logstash_reservation_memory: 1024M +logger_logstash_limit_memory: 1024M +prometheus_reservation_memory: 1G +prometheus_limit_memory: 1G +alertmanager_reservation_memory: 100M +alertmanager_limit_memory: 100M +node_exporter_reservation_memory: 16M +node_exporter_limit_memory: 32M +cadvisor_reservation_memory: 100M +cadvisor_limit_memory: 100M +elasticsearch_exporter_reservation_memory: 8M +elasticsearch_exporter_limit_memory: 24M +postgres_exporter_reservation_memory: 16M +postgres_exporter_limit_memory: 32M +statsd_exporter_reservation_memory: 8M +statsd_exporter_limit_memory: 16M +blackbox_exporter_reservation_memory: 16M +blackbox_exporter_limit_memory: 32M +jsonpath_exporter_reservation_memory: 32M +jsonpath_exporter_limit_memory: 64M +azure_blob_exporter_reservation_memory: 16M +azure_blob_exporter_limit_memory: 64M +grafana_reservation_memory: 100M +grafana_limit_memory: 100M +monitor_logstash_replicas: 1 +monitor_logstash_heap_size: 256m +monitor_logstash_reservation_memory: 256M +monitor_logstash_limit_memory: 350M +monitor_logspout_reservation_memory: 150M +monitor_logspout_limit_memory: 150M +player_replicas: 1 +player_reservation_memory: 256M +player_limit_memory: 512M +content_replicas: 1 +content_reservation_memory: 1000M +content_limit_memory: 1000M +learner_replicas: 1 +learner_reservation_memory: 1000M +learner_limit_memory: 1000M +learner_reservation_cpu: 1 +badger_replicas: 2 +badger_reservation_memory: 500MB +badger_limit_memory: 500MB + From 94e2c6e7d2dd235e7ef84c99edaf02e4603729c4 Mon Sep 17 00:00:00 2001 From: "kaliraja.ramasamy" Date: Thu, 31 Jan 2019 11:49:32 +0530 Subject: [PATCH 0837/1345] Issue #0000 fix: DO-350 updated the vars --- ansible/docker_image_push.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ansible/docker_image_push.yml b/ansible/docker_image_push.yml index 7135af2744..95dfbef336 100644 --- a/ansible/docker_image_push.yml +++ b/ansible/docker_image_push.yml @@ -7,9 +7,9 @@ tasks: - name: login to ACR docker_login: - registry: "{{ vault_docker_registery_url }}" - username: "{{ vault_docker_registery_user }}" - password: "{{ vault_docker_registory }}" + registry: "{{ vault_docker_registry_url }}" + username: "{{ vault_docker_registry_user }}" + password: "{{ vault_docker_registry_password }}" - name: Push image to registry docker_image: From c844b56a639747142b20435a7674dc1a6f5e4ef7 Mon Sep 17 00:00:00 2001 From: S M Y Date: Thu, 31 Jan 2019 12:00:50 +0530 Subject: [PATCH 0838/1345] Issue #000 vars: env vars update --- ansible/docker_image_push.yml | 8 ++++---- ansible/inventory/env/Core/group_vars/env.yml | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/ansible/docker_image_push.yml b/ansible/docker_image_push.yml index 7135af2744..41c52035bd 100644 --- a/ansible/docker_image_push.yml +++ b/ansible/docker_image_push.yml @@ -1,5 +1,5 @@ --- -- name: "Push docker images to Azure container registory" +- name: "Push docker images to Azure container registry" hosts: localhost vars_files: - ['{{inventory_dir}}/secrets.yml'] @@ -7,9 +7,9 @@ tasks: - name: login to ACR docker_login: - registry: "{{ vault_docker_registery_url }}" - username: "{{ vault_docker_registery_user }}" - password: "{{ vault_docker_registory }}" + registry: "{{ vault_docker_registry_url }}" + username: "{{ vault_docker_registry_user }}" + password: "{{ vault_docker_registry_password }}" - name: Push image to registry docker_image: diff --git a/ansible/inventory/env/Core/group_vars/env.yml b/ansible/inventory/env/Core/group_vars/env.yml index 8dea667cdf..8d9aff29c0 100644 --- a/ansible/inventory/env/Core/group_vars/env.yml +++ b/ansible/inventory/env/Core/group_vars/env.yml @@ -176,8 +176,8 @@ jenkins_slave_jenkins_password: "{{ core_vault_jenkins_slave_jenkins_password }} ops_private_key: "{{ core_vault_ops_private_key }}" deployer_ssh_key: "{{ core_vault_deployer_ssh_key }}" proxy_prometheus_admin_creds: "{{ core_vault_proxy_prometheus_admin_creds }}" -vault_docker_registery_url: "{{core_vault_docker_registery_url}}" -vault_docker_registery_user: "{{core_vault_docker_registery_user}}" +vault_docker_registry_url: "{{core_vault_docker_registry_url}}" +vault_docker_registry_user: "{{core_vault_docker_registry_user}}" vault_docker_registry_password: "{{core_vault_docker_registry_password}}" # ADDITIONAL CONFIGURATION From c8bc15fd2c6546824d30cacf0e47787e3d1cedfa Mon Sep 17 00:00:00 2001 From: S M Y Date: Thu, 31 Jan 2019 12:38:03 +0530 Subject: [PATCH 0839/1345] Issue #00 vars: updating vars --- ansible/inventory/env/Core/group_vars/all.yml | 1 - ansible/inventory/env/Core/hosts | 0 ansible/inventory/env/Core/secrets.yml | 1 - ansible/inventory/env/DataPipeline/group_vars/all.yml | 1 - ansible/inventory/env/DataPipeline/group_vars/env.yml | 0 ansible/inventory/env/DataPipeline/hosts | 0 ansible/inventory/env/DataPipeline/secrets.yml | 1 - ansible/inventory/env/KnowledgePlatform/group_vars/all.yml | 1 - ansible/inventory/env/KnowledgePlatform/group_vars/env.yml | 0 ansible/inventory/env/KnowledgePlatform/hosts | 0 ansible/inventory/env/KnowledgePlatform/secrets.yml | 1 - ansible/inventory/env/group_vars/all.yml | 1 + ansible/inventory/env/{Core => }/group_vars/env.yml | 0 ansible/inventory/env/secrets.yml | 0 14 files changed, 1 insertion(+), 6 deletions(-) delete mode 120000 ansible/inventory/env/Core/group_vars/all.yml delete mode 100644 ansible/inventory/env/Core/hosts delete mode 120000 ansible/inventory/env/Core/secrets.yml delete mode 120000 ansible/inventory/env/DataPipeline/group_vars/all.yml delete mode 100644 ansible/inventory/env/DataPipeline/group_vars/env.yml delete mode 100644 ansible/inventory/env/DataPipeline/hosts delete mode 120000 ansible/inventory/env/DataPipeline/secrets.yml delete mode 120000 ansible/inventory/env/KnowledgePlatform/group_vars/all.yml delete mode 100644 ansible/inventory/env/KnowledgePlatform/group_vars/env.yml delete mode 100644 ansible/inventory/env/KnowledgePlatform/hosts delete mode 120000 ansible/inventory/env/KnowledgePlatform/secrets.yml create mode 120000 ansible/inventory/env/group_vars/all.yml rename ansible/inventory/env/{Core => }/group_vars/env.yml (100%) delete mode 100644 ansible/inventory/env/secrets.yml diff --git a/ansible/inventory/env/Core/group_vars/all.yml b/ansible/inventory/env/Core/group_vars/all.yml deleted file mode 120000 index 1ef58f6bfd..0000000000 --- a/ansible/inventory/env/Core/group_vars/all.yml +++ /dev/null @@ -1 +0,0 @@ -../../common.yml \ No newline at end of file diff --git a/ansible/inventory/env/Core/hosts b/ansible/inventory/env/Core/hosts deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/ansible/inventory/env/Core/secrets.yml b/ansible/inventory/env/Core/secrets.yml deleted file mode 120000 index 4871141eb4..0000000000 --- a/ansible/inventory/env/Core/secrets.yml +++ /dev/null @@ -1 +0,0 @@ -../secrets.yml \ No newline at end of file diff --git a/ansible/inventory/env/DataPipeline/group_vars/all.yml b/ansible/inventory/env/DataPipeline/group_vars/all.yml deleted file mode 120000 index 1ef58f6bfd..0000000000 --- a/ansible/inventory/env/DataPipeline/group_vars/all.yml +++ /dev/null @@ -1 +0,0 @@ -../../common.yml \ No newline at end of file diff --git a/ansible/inventory/env/DataPipeline/group_vars/env.yml b/ansible/inventory/env/DataPipeline/group_vars/env.yml deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/ansible/inventory/env/DataPipeline/hosts b/ansible/inventory/env/DataPipeline/hosts deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/ansible/inventory/env/DataPipeline/secrets.yml b/ansible/inventory/env/DataPipeline/secrets.yml deleted file mode 120000 index 4871141eb4..0000000000 --- a/ansible/inventory/env/DataPipeline/secrets.yml +++ /dev/null @@ -1 +0,0 @@ -../secrets.yml \ No newline at end of file diff --git a/ansible/inventory/env/KnowledgePlatform/group_vars/all.yml b/ansible/inventory/env/KnowledgePlatform/group_vars/all.yml deleted file mode 120000 index 1ef58f6bfd..0000000000 --- a/ansible/inventory/env/KnowledgePlatform/group_vars/all.yml +++ /dev/null @@ -1 +0,0 @@ -../../common.yml \ No newline at end of file diff --git a/ansible/inventory/env/KnowledgePlatform/group_vars/env.yml b/ansible/inventory/env/KnowledgePlatform/group_vars/env.yml deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/ansible/inventory/env/KnowledgePlatform/hosts b/ansible/inventory/env/KnowledgePlatform/hosts deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/ansible/inventory/env/KnowledgePlatform/secrets.yml b/ansible/inventory/env/KnowledgePlatform/secrets.yml deleted file mode 120000 index 4871141eb4..0000000000 --- a/ansible/inventory/env/KnowledgePlatform/secrets.yml +++ /dev/null @@ -1 +0,0 @@ -../secrets.yml \ No newline at end of file diff --git a/ansible/inventory/env/group_vars/all.yml b/ansible/inventory/env/group_vars/all.yml new file mode 120000 index 0000000000..a9c19506c3 --- /dev/null +++ b/ansible/inventory/env/group_vars/all.yml @@ -0,0 +1 @@ +../common.yml \ No newline at end of file diff --git a/ansible/inventory/env/Core/group_vars/env.yml b/ansible/inventory/env/group_vars/env.yml similarity index 100% rename from ansible/inventory/env/Core/group_vars/env.yml rename to ansible/inventory/env/group_vars/env.yml diff --git a/ansible/inventory/env/secrets.yml b/ansible/inventory/env/secrets.yml deleted file mode 100644 index e69de29bb2..0000000000 From 41708638a66135910b67877afba7bdbe74a1bdd6 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Thu, 31 Jan 2019 13:39:11 +0530 Subject: [PATCH 0840/1345] Issue # 000: Description rewrite --- ansible/docker_image_push.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ansible/docker_image_push.yml b/ansible/docker_image_push.yml index 41c52035bd..a9bb19b231 100644 --- a/ansible/docker_image_push.yml +++ b/ansible/docker_image_push.yml @@ -1,11 +1,11 @@ --- -- name: "Push docker images to Azure container registry" +- name: "Push docker images to any docker registry" hosts: localhost vars_files: - ['{{inventory_dir}}/secrets.yml'] become: yes tasks: - - name: login to ACR + - name: login to registry docker_login: registry: "{{ vault_docker_registry_url }}" username: "{{ vault_docker_registry_user }}" From 7fdc877b9834ae94990734044d96e97a81391b29 Mon Sep 17 00:00:00 2001 From: "kaliraja.ramasamy" Date: Thu, 31 Jan 2019 14:32:42 +0530 Subject: [PATCH 0841/1345] Issue #0000 fix: DO-350 updated the vars --- ansible/bootstrap.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/ansible/bootstrap.yml b/ansible/bootstrap.yml index 7be8726a92..64629b36db 100644 --- a/ansible/bootstrap.yml +++ b/ansible/bootstrap.yml @@ -1,11 +1,13 @@ - hosts: all become: yes gather_facts: no + vars_files: + - "{{inventory_dir}}/secrets.yml" vars: ansible_ssh_user: "{{bootstrap_user}}" ansible_ssh_private_key_file: "{{bootstrap_key_path}}" roles: - - role: bootstrap_any + - bootstrap_any tags: - bootstrap_any @@ -23,3 +25,4 @@ - role: azure-cli tags: - azure_cli + From 80eae73b0ecfb2fb5e920c9685fd2938290f976f Mon Sep 17 00:00:00 2001 From: "kaliraja.ramasamy" Date: Thu, 31 Jan 2019 15:38:35 +0530 Subject: [PATCH 0842/1345] Issue #0000 fix: DO-470 updated the bootstarp file --- ansible/roles/bootstrap_any/tasks/main.yml | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/ansible/roles/bootstrap_any/tasks/main.yml b/ansible/roles/bootstrap_any/tasks/main.yml index e063f5c8ee..daa4f83d99 100644 --- a/ansible/roles/bootstrap_any/tasks/main.yml +++ b/ansible/roles/bootstrap_any/tasks/main.yml @@ -1,13 +1,17 @@ -- include_vars: "{{inventory_dir}}/secrets.yml" - - name: Create group deployer group: name=deployer state=present become: yes - name: Create user deployer - user: name=deployer comment="deployer" group=deployer groups=sudo shell=/bin/bash password="{{sudo_crypt_deployer}}" update_password=always + user: name=deployer comment="deployer" group=deployer groups=sudo shell=/bin/bash become: yes +- name: Giving access to sudo without password + lineinfile: + path: /etc/sudoers + line: 'deployer ALL=(ALL) NOPASSWD:ALL' + state: present + - name: Add ssh public key deployer authorized_key: user=deployer key='{{ssh_public_key_deployer}}' become: yes @@ -16,4 +20,4 @@ template: src: limits.conf.j2 dest: "{{ ulimit_config_location }}" - become: yes +become: yes From a6fb5a723ef386593522ae4a75c7d00124de7936 Mon Sep 17 00:00:00 2001 From: "kaliraja.ramasamy" Date: Thu, 31 Jan 2019 15:42:33 +0530 Subject: [PATCH 0843/1345] Issue #0000 fix: DO-470 updated the bootstarp file --- ansible/roles/bootstrap_any/tasks/main.yml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/ansible/roles/bootstrap_any/tasks/main.yml b/ansible/roles/bootstrap_any/tasks/main.yml index daa4f83d99..3dcfd77a53 100644 --- a/ansible/roles/bootstrap_any/tasks/main.yml +++ b/ansible/roles/bootstrap_any/tasks/main.yml @@ -1,10 +1,8 @@ - name: Create group deployer group: name=deployer state=present - become: yes - name: Create user deployer user: name=deployer comment="deployer" group=deployer groups=sudo shell=/bin/bash - become: yes - name: Giving access to sudo without password lineinfile: @@ -14,10 +12,8 @@ - name: Add ssh public key deployer authorized_key: user=deployer key='{{ssh_public_key_deployer}}' - become: yes - name: Create ulimit configuration template: src: limits.conf.j2 dest: "{{ ulimit_config_location }}" -become: yes From 08e8a54698867175f4474fd08cd186bde430ebf3 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Thu, 31 Jan 2019 16:29:30 +0530 Subject: [PATCH 0844/1345] Issue #000 feat: Updating secrets file jenkins-pipeline --- ansible/bootstrap.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/ansible/bootstrap.yml b/ansible/bootstrap.yml index 64629b36db..f915fdfb46 100644 --- a/ansible/bootstrap.yml +++ b/ansible/bootstrap.yml @@ -13,6 +13,8 @@ - hosts: "{{hosts}}" become: yes + vars_files: + - "{{inventory_dir}}/secrets.yml" roles: - role: bootstrap_swarm when: swarm_master @@ -21,6 +23,8 @@ - hosts: "{{hosts}}" become: yes + vars_files: + - "{{inventory_dir}}/secrets.yml" roles: - role: azure-cli tags: From b52be70c46bf4e9dcff5dbb3dc9cdec1954e0c90 Mon Sep 17 00:00:00 2001 From: S M Y Date: Thu, 31 Jan 2019 16:42:28 +0530 Subject: [PATCH 0845/1345] Issue #000 vars: bootstrap tag updation --- pipelines/bootstrap/Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pipelines/bootstrap/Jenkinsfile b/pipelines/bootstrap/Jenkinsfile index 4cc2acec6a..e1464148ad 100644 --- a/pipelines/bootstrap/Jenkinsfile +++ b/pipelines/bootstrap/Jenkinsfile @@ -20,7 +20,7 @@ node() { jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() currentWs = sh(returnStdout: true, script: 'pwd').trim() ansiblePlaybook = "${currentWs}/ansible/bootstrap.yml" - ansibleExtraArgs = "--extra-vars \"hosts=${params.hosts}\"" + ansibleExtraArgs = "--tags bootstrap_any --extra-vars \"hosts=${params.hosts}\"" values.put('currentWs', currentWs) values.put('env', envDir) values.put('module', module) From a07f53e17996d7ca5b468cae7fe645c262951274 Mon Sep 17 00:00:00 2001 From: S M Y Date: Thu, 31 Jan 2019 16:51:32 +0530 Subject: [PATCH 0846/1345] Issue #000 vars: bootstrap tag updation --- ansible/bootstrap.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/bootstrap.yml b/ansible/bootstrap.yml index f915fdfb46..ae3f23945e 100644 --- a/ansible/bootstrap.yml +++ b/ansible/bootstrap.yml @@ -1,4 +1,4 @@ -- hosts: all +- hosts: 'all:!localhost' become: yes gather_facts: no vars_files: From 2e5b9a27a2008acfd771e8634efa5be834ef68f3 Mon Sep 17 00:00:00 2001 From: "kaliraja.ramasamy" Date: Thu, 31 Jan 2019 17:04:10 +0530 Subject: [PATCH 0847/1345] Issue #0000 fix: DO-470 updated the bootstarp file --- pipelines/deploy/application-elasticsearch/Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pipelines/deploy/application-elasticsearch/Jenkinsfile b/pipelines/deploy/application-elasticsearch/Jenkinsfile index 8e3ed915e9..6319434352 100644 --- a/pipelines/deploy/application-elasticsearch/Jenkinsfile +++ b/pipelines/deploy/application-elasticsearch/Jenkinsfile @@ -28,7 +28,7 @@ node() { values.put('ansiblePlaybook', ansiblePlaybook) values.put('ansibleExtraArgs', ansibleExtraArgs) println values -// ansible_playbook_run(values) + ansible_playbook_run(values) } } } From 0d0a5d24b5c8b1cd9f72fdb44f29ece5cd601165 Mon Sep 17 00:00:00 2001 From: S M Y Date: Thu, 31 Jan 2019 17:20:28 +0530 Subject: [PATCH 0848/1345] Issue #000 vars: es changes --- ansible/inventory/env/group_vars/env.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/ansible/inventory/env/group_vars/env.yml b/ansible/inventory/env/group_vars/env.yml index 8d9aff29c0..83eb0ea650 100644 --- a/ansible/inventory/env/group_vars/env.yml +++ b/ansible/inventory/env/group_vars/env.yml @@ -372,6 +372,7 @@ sunbird_lock_expiry_time: 1800 sunbird_lock_expiry_time: 3600 app_es_heap_size: 1500m log_es_heap_size: 1500m +es_heap_size: 1500m sunbird_otp_expiration: 1800 sunbird_otp_length: 6 sunbird_help_link_visibility: FALSE From 54696f3702ac6abba2f1b248298889ea8d528305 Mon Sep 17 00:00:00 2001 From: harshavardhnc Date: Thu, 31 Jan 2019 17:08:29 +0530 Subject: [PATCH 0849/1345] updated swarm bootstrap role --- ansible/setup-dockerswarm.yml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/ansible/setup-dockerswarm.yml b/ansible/setup-dockerswarm.yml index d14cbd8b39..d008482d30 100644 --- a/ansible/setup-dockerswarm.yml +++ b/ansible/setup-dockerswarm.yml @@ -64,3 +64,11 @@ register: result - shell: docker node update --availability drain $(hostname) when: result is skipped + +- name: Create network on manager + hosts: swarm-manager:swarm-manager:swarm-worker + become: yes + gather_facts: yes + tasks: + - shell: "docker network create -d overlay application_default" + From 3f56f76d15c0ca80e5633f90e988fc2d1caff2d8 Mon Sep 17 00:00:00 2001 From: harshavardhnc Date: Thu, 31 Jan 2019 17:24:33 +0530 Subject: [PATCH 0850/1345] updated swarm bootstrap role --- ansible/setup-dockerswarm.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/ansible/setup-dockerswarm.yml b/ansible/setup-dockerswarm.yml index d008482d30..34c7a9577b 100644 --- a/ansible/setup-dockerswarm.yml +++ b/ansible/setup-dockerswarm.yml @@ -70,5 +70,4 @@ become: yes gather_facts: yes tasks: - - shell: "docker network create -d overlay application_default" - + - roles: bootstrap_swarm From 11e51d76c67ddc2112ec6e374ac62a396a237c5f Mon Sep 17 00:00:00 2001 From: S M Y Date: Thu, 31 Jan 2019 17:25:33 +0530 Subject: [PATCH 0851/1345] Issue #000 vars: es changes --- ansible/roles/elasticsearch/defaults/main.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/ansible/roles/elasticsearch/defaults/main.yml b/ansible/roles/elasticsearch/defaults/main.yml index 59f01afd19..589464a655 100755 --- a/ansible/roles/elasticsearch/defaults/main.yml +++ b/ansible/roles/elasticsearch/defaults/main.yml @@ -29,6 +29,7 @@ es_xpack_features: ["alerting","monitoring","graph","security"] #They do not effect the current configuration es_api_host: "localhost" es_api_port: 9200 +es_heap_size: 1500m # Since ansible 2.2 the following variables need to be defined # to allow the role to be conditionally played with a when condition. From b6e117c91c1be28f2482ba3ef2f83fa70f5a0506 Mon Sep 17 00:00:00 2001 From: harshavardhnc Date: Thu, 31 Jan 2019 17:33:25 +0530 Subject: [PATCH 0852/1345] pipeline for swarm bootstrap --- pipelines/bootstrap_swarm/.Jenkinsfile.swp | Bin 0 -> 12288 bytes pipelines/bootstrap_swarm/Jenkinsfile | 38 +++++++++++++++++++++ 2 files changed, 38 insertions(+) create mode 100644 pipelines/bootstrap_swarm/.Jenkinsfile.swp create mode 100644 pipelines/bootstrap_swarm/Jenkinsfile diff --git a/pipelines/bootstrap_swarm/.Jenkinsfile.swp b/pipelines/bootstrap_swarm/.Jenkinsfile.swp new file mode 100644 index 0000000000000000000000000000000000000000..e4cb9ba345e096d5bb33ce1593b82bf7ed95ee38 GIT binary patch literal 12288 zcmeI2O=uHA6vszTepN+5@Z`D{Hv#j}Mi2zS)&^11L{hcb55i_MZPxDY3^TKBL#d+T zK|Of(phpES;=!|55k$eW;6<;Vym<0Wcav<5i9%1x8~A7E<3Dd^esA|sI`#b33zNpF z>`4M;KOxiat8*Xjo8Bi?sDq60hPHrV@fJv^O{_-g`c}fgC#eR3$921Vm-7V0VI$lFhmNYBYE9( z%sgrwJa8pBh;<}@1dsp{Kmter2_OL^fCT_dp(~0{S*Y$U{&T^kokrPe4`B5zzPDguDSg0?mL9gMPps z-hp0&UV&bK9)li$?t=6lZ-cNP0VIF~kN^@u0!RP}{L=*1i2)`0)iu==Y{j5L5Z!WY zDE13#V(=i^se7hO;f->kZSH0Rdz)C8!ETFr^wSRHqFk zLVCiGj&M1&EWXmP(pe>3Kh=A-82_KcnAB-9WB6iayjC8YESl-8;?JI*-;__wWg8kBpiWu>DpTYqOdh3A;ZM9NxK zRQQ(u>^oC8f8$P*I!ll=$d=!+=pc?q?O<9aG8V7bnZd)l=Q@U`8e`?D z3$<&-QmHZxyEo^;e12qnwovf9Z&T7)ElwnDBYkY+l~U5z&sMHfC&x;OfcZZ0&R2`Y ka>7>_jg3mQ09(KsG^P2SExC1Ji&h(W#$mw%oV!MT0v`a#WdHyG literal 0 HcmV?d00001 diff --git a/pipelines/bootstrap_swarm/Jenkinsfile b/pipelines/bootstrap_swarm/Jenkinsfile new file mode 100644 index 0000000000..f3357efea6 --- /dev/null +++ b/pipelines/bootstrap_swarm/Jenkinsfile @@ -0,0 +1,38 @@ +@Library('deploy-conf') _ +node() { + try { + String ANSI_GREEN = "\u001B[32m" + String ANSI_NORMAL = "\u001B[0m" + String ANSI_BOLD = "\u001B[1m" + String ANSI_RED = "\u001B[31m" + String ANSI_YELLOW = "\u001B[33m" + + stage('checkout public repo') { + cleanWs() + checkout scm + } + + ansiColor('xterm') { + stage('deploy'){ + values = [:] + envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-3].trim() + module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() + jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() + currentWs = sh(returnStdout: true, script: 'pwd').trim() + ansiblePlaybook = "${currentWs}/ansible/setup-dockerswarm.yml" + ansibleExtraArgs = "--extra-vars \"hosts=${params.hosts}\"" + values.put('currentWs', currentWs) + values.put('env', envDir) + values.put('module', module) + values.put('jobName', jobName) + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + println values + ansible_playbook_run(values) + } + } + } + catch (err) { + throw err + } +} From 828867cfbed69fe956c11f05bd14c9b1b7d64619 Mon Sep 17 00:00:00 2001 From: "kaliraja.ramasamy" Date: Thu, 31 Jan 2019 17:41:14 +0530 Subject: [PATCH 0853/1345] Issue #0000 fix: DO-470 updated the bootstarp file --- pipelines/provision/cassandra/Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pipelines/provision/cassandra/Jenkinsfile b/pipelines/provision/cassandra/Jenkinsfile index fca2309813..abf57ccc67 100644 --- a/pipelines/provision/cassandra/Jenkinsfile +++ b/pipelines/provision/cassandra/Jenkinsfile @@ -28,7 +28,7 @@ node() { values.put('ansiblePlaybook', ansiblePlaybook) values.put('ansibleExtraArgs', ansibleExtraArgs) println values -// ansible_playbook_run(values) + ansible_playbook_run(values) } } } From cc7a3dfff6e7b5e26d154c2ba25898ba5ec9b2bc Mon Sep 17 00:00:00 2001 From: "kaliraja.ramasamy" Date: Thu, 31 Jan 2019 17:48:23 +0530 Subject: [PATCH 0854/1345] Issue #0000 fix: DO-470 updated the bootstarp file --- ansible/inventory/env/group_vars/env.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/ansible/inventory/env/group_vars/env.yml b/ansible/inventory/env/group_vars/env.yml index 83eb0ea650..8d9aff29c0 100644 --- a/ansible/inventory/env/group_vars/env.yml +++ b/ansible/inventory/env/group_vars/env.yml @@ -372,7 +372,6 @@ sunbird_lock_expiry_time: 1800 sunbird_lock_expiry_time: 3600 app_es_heap_size: 1500m log_es_heap_size: 1500m -es_heap_size: 1500m sunbird_otp_expiration: 1800 sunbird_otp_length: 6 sunbird_help_link_visibility: FALSE From 5ea7473360698f81f93326528b80e080f9b24e39 Mon Sep 17 00:00:00 2001 From: harshavardhnc Date: Thu, 31 Jan 2019 17:50:32 +0530 Subject: [PATCH 0855/1345] ansible role fix --- ansible/.setup-dockerswarm.yml.swp | Bin 0 -> 12288 bytes ansible/setup-dockerswarm.yml | 4 ++-- 2 files changed, 2 insertions(+), 2 deletions(-) create mode 100644 ansible/.setup-dockerswarm.yml.swp diff --git a/ansible/.setup-dockerswarm.yml.swp b/ansible/.setup-dockerswarm.yml.swp new file mode 100644 index 0000000000000000000000000000000000000000..5ea3b068e1cff00763607a3b51b9e6270ab1fae0 GIT binary patch literal 12288 zcmeI2&5ImG7{)7#AJN1}f>(K+6=xUeo!un5Ffa$n8dxPFih``eSTkKaUD=-QPF2ke z>+U2cJt&etK@vgq=1FfJ<4sQz@Dvn3Korc)n@@H1Y-(+et$M4M zt@gs}D`#kF{v^ZmC}W4df91^|?|qM5L`KAwj<_w@{Yf(;&F)q5((|sv+H%_I_e5fJ zO{{ApvYPHEZK=W_6oWL=HJ)hMjzvui)6ar1?W_x>hg|jMH+u0N#_?6W0$zcg6gbRI z9A8|pB{P*L=-AQMcB41&)G);QB$vz5`!^8Su-4 zjQtEQgZIG*NbnXQ@EG{*0meQDmp~hw2G4^T@CWqy0el0l0ISz0z&~CAuYgy;D{z+; zAUpx7G#0u}?KCyoD4woaJ{bUc z@q~AUs_&E?-MPr;Gc!rTk>ZFA3$A+XPy)Ls%geVJ0 zMIgzz(RZ&6_kUO1EN>bWPM~Eavsxbnto`)znn|+ zs=WtDXPnnG$u+2HNJAsqSDZXuq8RQRworHb=HOD1dSyf$IlH}h*U31_Q$-*s}c zsLoNNLBV3BEJ4xMtsOd>!dF3H(shy0=BD-809PhgC&e!oNw8RLt}Zm2^F=yuH5%=` zUGC!^x9eausvkeGv}8>qthn*wC{2tgFY81+>58!BoOznZS|ESgqgDxI@0X)qu(C}0 zsk}q>U4I@9gfdc#fQO;FLqTufk8Wk%T{r%FPMnH$B_F=tt-$fq}r}z+`B3wrlbf{v4hLD14eXVM3nbfik6QxOo twzg=NXZR*4I&t|y56bs=Ou>dd@SLVd0hYi literal 0 HcmV?d00001 diff --git a/ansible/setup-dockerswarm.yml b/ansible/setup-dockerswarm.yml index 34c7a9577b..836942d0a5 100644 --- a/ansible/setup-dockerswarm.yml +++ b/ansible/setup-dockerswarm.yml @@ -69,5 +69,5 @@ hosts: swarm-manager:swarm-manager:swarm-worker become: yes gather_facts: yes - tasks: - - roles: bootstrap_swarm + roles: + - bootstrap_swarm From 7d007a5284eec91a91f35fa4502191d36473c62a Mon Sep 17 00:00:00 2001 From: "kaliraja.ramasamy" Date: Thu, 31 Jan 2019 17:56:05 +0530 Subject: [PATCH 0856/1345] Issue #0000 fix: DO-470 updated the bootstarp file --- ansible/inventory/env/group_vars/env.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ansible/inventory/env/group_vars/env.yml b/ansible/inventory/env/group_vars/env.yml index 8d9aff29c0..9dc2d136d8 100644 --- a/ansible/inventory/env/group_vars/env.yml +++ b/ansible/inventory/env/group_vars/env.yml @@ -34,6 +34,8 @@ postgres_address_space: "{{groups['postgresql-master'][0].split(\".\")[0]}}.0.0. cassandra_server_private_ip: "{{groups['cassandra'][0]}}" #Private IP of cassandra server keystore_password: "{{core_vault_keystore_password}}" #Password to use for encrypting cassandra keystore. Use a strong password. truststore_password: "{{core_vault_truststore_password}}" #Password to use for encrypting cassandra truststore. Use a strong password. +cassandra_repo: 'deb http://www.apache.org/dist/cassandra/debian 39x main' +cassandra_repo_key: 'https://www.apache.org/dist/cassandra/KEYS' # APPLICATION CONFIGURATION kong_host: api-manager_kong From 4f68dd5fa394350422fafc2f7acb36d4359cf782 Mon Sep 17 00:00:00 2001 From: "kaliraja.ramasamy" Date: Thu, 31 Jan 2019 18:00:54 +0530 Subject: [PATCH 0857/1345] Issue #0000 fix: DO-470 updated the bootstarp file --- ansible/inventory/env/group_vars/env.yml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/ansible/inventory/env/group_vars/env.yml b/ansible/inventory/env/group_vars/env.yml index 9dc2d136d8..af3577a067 100644 --- a/ansible/inventory/env/group_vars/env.yml +++ b/ansible/inventory/env/group_vars/env.yml @@ -34,8 +34,6 @@ postgres_address_space: "{{groups['postgresql-master'][0].split(\".\")[0]}}.0.0. cassandra_server_private_ip: "{{groups['cassandra'][0]}}" #Private IP of cassandra server keystore_password: "{{core_vault_keystore_password}}" #Password to use for encrypting cassandra keystore. Use a strong password. truststore_password: "{{core_vault_truststore_password}}" #Password to use for encrypting cassandra truststore. Use a strong password. -cassandra_repo: 'deb http://www.apache.org/dist/cassandra/debian 39x main' -cassandra_repo_key: 'https://www.apache.org/dist/cassandra/KEYS' # APPLICATION CONFIGURATION kong_host: api-manager_kong @@ -143,7 +141,7 @@ sunbird_data_service_api_key: "{{ core_vault_sunbird_ekstep_api_key }}" ## Cassandra download URI cassandra_repo: 'deb http://www.apache.org/dist/cassandra/debian 39x main' -cassandra_repo_key: '{{proto}}://www.apache.org/dist/cassandra/KEYS' +cassandra_repo_key: 'https://www.apache.org/dist/cassandra/KEYS' #API Manager kong_postgres_port: 5432 From 4c522a351805bbf78bf317430b74ceb418a81be8 Mon Sep 17 00:00:00 2001 From: harshavardhnc Date: Thu, 31 Jan 2019 18:01:17 +0530 Subject: [PATCH 0858/1345] ansible role fix --- ansible/setup-dockerswarm.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/setup-dockerswarm.yml b/ansible/setup-dockerswarm.yml index 836942d0a5..88dadd0ea5 100644 --- a/ansible/setup-dockerswarm.yml +++ b/ansible/setup-dockerswarm.yml @@ -66,7 +66,7 @@ when: result is skipped - name: Create network on manager - hosts: swarm-manager:swarm-manager:swarm-worker + hosts: swarm-nodes:swarm-manager:swarm-worker become: yes gather_facts: yes roles: From e909cc92e3a6aa71e696194b495cb65fb6f38c19 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Thu, 31 Jan 2019 18:03:17 +0530 Subject: [PATCH 0859/1345] Issue #000: Updated Keycloak provision jenkinsfile --- pipelines/provision/keycloak/Jenkinsfile | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/pipelines/provision/keycloak/Jenkinsfile b/pipelines/provision/keycloak/Jenkinsfile index 943b6f001b..e706a388f6 100644 --- a/pipelines/provision/keycloak/Jenkinsfile +++ b/pipelines/provision/keycloak/Jenkinsfile @@ -1,3 +1,4 @@ +package Deploy @Library('deploy-conf') _ node() { try { @@ -7,10 +8,6 @@ node() { String ANSI_RED = "\u001B[31m" String ANSI_YELLOW = "\u001B[33m" - triggers { - cron('H 0 * * *') - } - stage('checkout public repo') { cleanWs() checkout scm @@ -35,12 +32,6 @@ node() { // ansible_playbook_run(values) } } - - post { - failure { - slackSend channel: '#devops-team', color: 'danger', message: "Build Failed - ${env.JOB_NAME} ${env.BUILD_NUMBER} (<${env.BUILD_URL}|Open>)" - } - } } catch (err) { throw err From ffc8f06e3f9bc8ceed1cdfc98ccaeb325f16d6f7 Mon Sep 17 00:00:00 2001 From: "kaliraja.ramasamy" Date: Thu, 31 Jan 2019 18:16:26 +0530 Subject: [PATCH 0860/1345] Issue #0000 fix: DO-470 added the postgres provision jenk --- pipelines/provision/postgres/Jenkinsfile | 38 ++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 pipelines/provision/postgres/Jenkinsfile diff --git a/pipelines/provision/postgres/Jenkinsfile b/pipelines/provision/postgres/Jenkinsfile new file mode 100644 index 0000000000..591b34f829 --- /dev/null +++ b/pipelines/provision/postgres/Jenkinsfile @@ -0,0 +1,38 @@ +@Library('deploy-conf') _ +node() { + try { + String ANSI_GREEN = "\u001B[32m" + String ANSI_NORMAL = "\u001B[0m" + String ANSI_BOLD = "\u001B[1m" + String ANSI_RED = "\u001B[31m" + String ANSI_YELLOW = "\u001B[33m" + + stage('checkout public repo') { + cleanWs() + checkout scm + } + + ansiColor('xterm') { + stage('deploy'){ + values = [:] + currentWs = sh(returnStdout: true, script: 'pwd').trim() + envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-3].trim() + module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() + jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() + ansiblePlaybook = "${currentWs}/ansible/provision.yml" + ansibleExtraArgs = "--tags postgresql-master --vault-password-file /run/secrets/vault-pass -v" + values.put('currentWs', currentWs) + values.put('env', envDir) + values.put('module', module) + values.put('jobName', jobName) + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + println values + ansible_playbook_run(values) + } + } + } + catch (err) { + throw err + } +} From 0d75f07e05cd629a117ae684c61783e8d1024965 Mon Sep 17 00:00:00 2001 From: Kartish Date: Thu, 31 Jan 2019 18:19:37 +0530 Subject: [PATCH 0861/1345] Update Jenkinsfile --- pipelines/provision/keycloak/Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pipelines/provision/keycloak/Jenkinsfile b/pipelines/provision/keycloak/Jenkinsfile index e706a388f6..f1debcea1d 100644 --- a/pipelines/provision/keycloak/Jenkinsfile +++ b/pipelines/provision/keycloak/Jenkinsfile @@ -1,4 +1,4 @@ -package Deploy +//package Deploy @Library('deploy-conf') _ node() { try { From 518ab8a14a49d0691b5a9e5f77459d0bd65d1491 Mon Sep 17 00:00:00 2001 From: harshavardhnc Date: Thu, 31 Jan 2019 18:21:42 +0530 Subject: [PATCH 0862/1345] ansible role fix --- ...arm.yml.swp => .setup-dockerswarm.yml.swo} | Bin 12288 -> 12288 bytes ansible/setup-dockerswarm.yml | 2 +- pipelines/bootstrap_swarm/.Jenkinsfile.swp | Bin 12288 -> 0 bytes 3 files changed, 1 insertion(+), 1 deletion(-) rename ansible/{.setup-dockerswarm.yml.swp => .setup-dockerswarm.yml.swo} (97%) delete mode 100644 pipelines/bootstrap_swarm/.Jenkinsfile.swp diff --git a/ansible/.setup-dockerswarm.yml.swp b/ansible/.setup-dockerswarm.yml.swo similarity index 97% rename from ansible/.setup-dockerswarm.yml.swp rename to ansible/.setup-dockerswarm.yml.swo index 5ea3b068e1cff00763607a3b51b9e6270ab1fae0..92fb639d3cbbd1b63a65c5a4e1c548a3101d4364 100644 GIT binary patch delta 119 zcmZojXh@JsG6?hZRWR2xVE_UF28M;Nf?}Stb}=N{Zj^c@&sxaJz_4*Mr-D4A*k?8d zhNnP$5r~fi@kSutz_yu@rI=M-0SI&zlJfIQic5+T3*w8*6N_>g6cmc`b5e_~6ebI5 P8BN}=uen)U{VE3lYMLQL delta 112 zcmZojXh@JsG6?hZRWR2xVE_UF1_qu-K`~F6yBPXSHcGvcXU$|~U|6}CQ$e0l>?0ck z!($*m55&iScqI_8VB5^dlFcfk00g=UMfo|Y#a0SQ`S~TqB}It^@x|qdMY)sXHJmoH ItN-Kx09P6x2mk;8 diff --git a/ansible/setup-dockerswarm.yml b/ansible/setup-dockerswarm.yml index 88dadd0ea5..09868911cb 100644 --- a/ansible/setup-dockerswarm.yml +++ b/ansible/setup-dockerswarm.yml @@ -66,7 +66,7 @@ when: result is skipped - name: Create network on manager - hosts: swarm-nodes:swarm-manager:swarm-worker + hosts: swarm-nodes:swarm-manager become: yes gather_facts: yes roles: diff --git a/pipelines/bootstrap_swarm/.Jenkinsfile.swp b/pipelines/bootstrap_swarm/.Jenkinsfile.swp deleted file mode 100644 index e4cb9ba345e096d5bb33ce1593b82bf7ed95ee38..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12288 zcmeI2O=uHA6vszTepN+5@Z`D{Hv#j}Mi2zS)&^11L{hcb55i_MZPxDY3^TKBL#d+T zK|Of(phpES;=!|55k$eW;6<;Vym<0Wcav<5i9%1x8~A7E<3Dd^esA|sI`#b33zNpF z>`4M;KOxiat8*Xjo8Bi?sDq60hPHrV@fJv^O{_-g`c}fgC#eR3$921Vm-7V0VI$lFhmNYBYE9( z%sgrwJa8pBh;<}@1dsp{Kmter2_OL^fCT_dp(~0{S*Y$U{&T^kokrPe4`B5zzPDguDSg0?mL9gMPps z-hp0&UV&bK9)li$?t=6lZ-cNP0VIF~kN^@u0!RP}{L=*1i2)`0)iu==Y{j5L5Z!WY zDE13#V(=i^se7hO;f->kZSH0Rdz)C8!ETFr^wSRHqFk zLVCiGj&M1&EWXmP(pe>3Kh=A-82_KcnAB-9WB6iayjC8YESl-8;?JI*-;__wWg8kBpiWu>DpTYqOdh3A;ZM9NxK zRQQ(u>^oC8f8$P*I!ll=$d=!+=pc?q?O<9aG8V7bnZd)l=Q@U`8e`?D z3$<&-QmHZxyEo^;e12qnwovf9Z&T7)ElwnDBYkY+l~U5z&sMHfC&x;OfcZZ0&R2`Y ka>7>_jg3mQ09(KsG^P2SExC1Ji&h(W#$mw%oV!MT0v`a#WdHyG From 42904f21615012b2b3964f8f880f573bcbf4bb80 Mon Sep 17 00:00:00 2001 From: Kartish Date: Thu, 31 Jan 2019 18:23:25 +0530 Subject: [PATCH 0863/1345] Update Jenkinsfile --- pipelines/provision/keycloak/Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pipelines/provision/keycloak/Jenkinsfile b/pipelines/provision/keycloak/Jenkinsfile index f1debcea1d..e706a388f6 100644 --- a/pipelines/provision/keycloak/Jenkinsfile +++ b/pipelines/provision/keycloak/Jenkinsfile @@ -1,4 +1,4 @@ -//package Deploy +package Deploy @Library('deploy-conf') _ node() { try { From 5c8ddcbcffc3e9443cfe4eb978809d79028da688 Mon Sep 17 00:00:00 2001 From: harshavardhnc Date: Thu, 31 Jan 2019 18:23:52 +0530 Subject: [PATCH 0864/1345] ansible role fix --- pipelines/bootstrap_swarm/Jenkinsfile | 2 -- 1 file changed, 2 deletions(-) diff --git a/pipelines/bootstrap_swarm/Jenkinsfile b/pipelines/bootstrap_swarm/Jenkinsfile index f3357efea6..1b071c396b 100644 --- a/pipelines/bootstrap_swarm/Jenkinsfile +++ b/pipelines/bootstrap_swarm/Jenkinsfile @@ -20,13 +20,11 @@ node() { jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() currentWs = sh(returnStdout: true, script: 'pwd').trim() ansiblePlaybook = "${currentWs}/ansible/setup-dockerswarm.yml" - ansibleExtraArgs = "--extra-vars \"hosts=${params.hosts}\"" values.put('currentWs', currentWs) values.put('env', envDir) values.put('module', module) values.put('jobName', jobName) values.put('ansiblePlaybook', ansiblePlaybook) - values.put('ansibleExtraArgs', ansibleExtraArgs) println values ansible_playbook_run(values) } From fab0b17ad1d68f50fad50e990dcb42e248f910fd Mon Sep 17 00:00:00 2001 From: Kartish Date: Thu, 31 Jan 2019 18:26:04 +0530 Subject: [PATCH 0865/1345] Update Jenkinsfile --- pipelines/provision/keycloak/Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pipelines/provision/keycloak/Jenkinsfile b/pipelines/provision/keycloak/Jenkinsfile index e706a388f6..f1debcea1d 100644 --- a/pipelines/provision/keycloak/Jenkinsfile +++ b/pipelines/provision/keycloak/Jenkinsfile @@ -1,4 +1,4 @@ -package Deploy +//package Deploy @Library('deploy-conf') _ node() { try { From 2ad4661f97d805ed068626f3bee2e7dfb902b910 Mon Sep 17 00:00:00 2001 From: "kaliraja.ramasamy" Date: Thu, 31 Jan 2019 18:30:42 +0530 Subject: [PATCH 0866/1345] Issue #0000 fix: DO-470 added the postgres provision jenk --- pipelines/provision/keycloak/Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pipelines/provision/keycloak/Jenkinsfile b/pipelines/provision/keycloak/Jenkinsfile index f1debcea1d..d764d3fb30 100644 --- a/pipelines/provision/keycloak/Jenkinsfile +++ b/pipelines/provision/keycloak/Jenkinsfile @@ -29,7 +29,7 @@ node() { values.put('ansiblePlaybook', ansiblePlaybook) values.put('ansibleExtraArgs', ansibleExtraArgs) println values -// ansible_playbook_run(values) + ansible_playbook_run(values) } } } From 1826af2d9ebeb65c4aafb1e80865d5712c96a326 Mon Sep 17 00:00:00 2001 From: harshavardhnc Date: Thu, 31 Jan 2019 18:33:05 +0530 Subject: [PATCH 0867/1345] ansible role fix --- ansible/.setup-dockerswarm.yml.swo | Bin 12288 -> 0 bytes pipelines/bootstrap_swarm/Jenkinsfile | 2 ++ 2 files changed, 2 insertions(+) delete mode 100644 ansible/.setup-dockerswarm.yml.swo diff --git a/ansible/.setup-dockerswarm.yml.swo b/ansible/.setup-dockerswarm.yml.swo deleted file mode 100644 index 92fb639d3cbbd1b63a65c5a4e1c548a3101d4364..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12288 zcmeI2&ug4T7{{kV)vC2p@hXoSaTDatCT%saum@=@M5&0PAaz-1_nqvHdG~$a%*<|x zN!pVh6!A}xR1mz?i{3oio8UnTo_f)WqKEe6&F{Q3o4&iIF)6X2%nKjhcYZ(feP*87 zkZI4oxpbZuX3sD@k1@9W>uYb{IQk*u4aRz0=^nQQdp}ujq}jVlQF_sJSX<0GgT6?O zu89?GL|)T_v@KN}#bTJ{y2ev2+li=YVFq~=XPp(H^cq+F+4X+1k8whkpg>SyHwBKf z)2HU=Y{^vRDSG_m8@p8sc|n1oKu{nk5EKXs1OvsD<}{Y2nqxRf&xK-pg>R{C=e6~3Iqj$0zrZQpaMK*Z1pH(U)~Sn@&EtP-~ZQ7 zFm?r82A_Zr!1Lfa@Fe)-QO2%=Yv3yQ7JLpq2A9APG{IR=1wS8W><)226op z9%SqWxC}l5TR?($0D&jK?+-Bc71#!Ca1Oi(rob)e^Aq?UTm@FIDv1kYMeq;*n44-!LClU|W|E@G5L zqg2AnksXl+d2D-&B0l6Y;cb~nvre(%GNq@dt%Y{fnWAeYx)K-V)TsL+)Arj{ z*&x>!s$1HC*uIV)z^F=*39ef_ZdMGZ3V#0jG^@^^eqXYV7 zB<@K5#X_3b?L9y`@BE}mE<;U28d5n~moqhT3-L52@59oRD$WZnnJ#Cu+Qiww%r46` zo~{;s*U8PIIzx>HMe~)i1ir0XIrMG@UqzA0Rzyl08`ft-T$#KuF20{fG+%9Am}@p? zeY$A1wYC3tg^&B(u7je5BWishG>z0#AxW{;EE&pn!FqcdO$#!8;Z_ry+s zvGLG_m&l*5QO5>3_j>>zdkj#VeET{2mr`wblF(vt7kxCG;%jwkbKRq;Llq-5gcMX8 zXjN;=w3e@%UY1s9bCafdj^6~n6PF+Lp?sew6s_As{tm%6wSoCCXYhi%TTiblp~R|Y Fe*yPrcHRI0 diff --git a/pipelines/bootstrap_swarm/Jenkinsfile b/pipelines/bootstrap_swarm/Jenkinsfile index 1b071c396b..f3357efea6 100644 --- a/pipelines/bootstrap_swarm/Jenkinsfile +++ b/pipelines/bootstrap_swarm/Jenkinsfile @@ -20,11 +20,13 @@ node() { jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() currentWs = sh(returnStdout: true, script: 'pwd').trim() ansiblePlaybook = "${currentWs}/ansible/setup-dockerswarm.yml" + ansibleExtraArgs = "--extra-vars \"hosts=${params.hosts}\"" values.put('currentWs', currentWs) values.put('env', envDir) values.put('module', module) values.put('jobName', jobName) values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) println values ansible_playbook_run(values) } From 8e1b11bf44d8252c99bcb0348154c3f59b6d7ddb Mon Sep 17 00:00:00 2001 From: "kaliraja.ramasamy" Date: Thu, 31 Jan 2019 19:13:04 +0530 Subject: [PATCH 0868/1345] Issue #0000 fix: DO-470 added the postgres provision jenk --- pipelines/provision/log-es/Jenkinsfile | 38 ++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 pipelines/provision/log-es/Jenkinsfile diff --git a/pipelines/provision/log-es/Jenkinsfile b/pipelines/provision/log-es/Jenkinsfile new file mode 100644 index 0000000000..dcc0e0819f --- /dev/null +++ b/pipelines/provision/log-es/Jenkinsfile @@ -0,0 +1,38 @@ +@Library('deploy-conf') _ +node() { + try { + String ANSI_GREEN = "\u001B[32m" + String ANSI_NORMAL = "\u001B[0m" + String ANSI_BOLD = "\u001B[1m" + String ANSI_RED = "\u001B[31m" + String ANSI_YELLOW = "\u001B[33m" + + stage('checkout public repo') { + cleanWs() + checkout scm + } + + ansiColor('xterm') { + stage('deploy'){ + values = [:] + envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-3].trim() + module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() + jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() + currentWs = sh(returnStdout: true, script: 'pwd').trim() + ansiblePlaybook = "${currentWs}/ansible/provision.yml" + ansibleExtraArgs = "--tags log-es --vault-password-file /run/secrets/vault-pass" + values.put('currentWs', currentWs) + values.put('env', envDir) + values.put('module', module) + values.put('jobName', jobName) + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + println values + ansible_playbook_run(values) + } + } + } + catch (err) { + throw err + } +} From ac29881edbc8038a763b73189b3a29dab168553d Mon Sep 17 00:00:00 2001 From: msknext Date: Fri, 1 Feb 2019 11:14:45 +0530 Subject: [PATCH 0869/1345] feat: DO-498 warn message change --- pipelines/backup/cassandra-backup/Jenkinsfile | 2 +- pipelines/backup/logger-es-backup/Jenkinsfile | 2 +- pipelines/backup/logger-es-restore/Jenkinsfile | 2 +- pipelines/deploy/am-onboard-apis/Jenkinsfile | 2 +- pipelines/deploy/am-onboard-consumers/Jenkinsfile | 2 +- pipelines/deploy/cassandra-deploy/Jenkinsfile | 4 ++-- pipelines/deploy/es-backup/Jenkinsfile | 2 +- pipelines/deploy/es-restore/Jenkinsfile | 2 +- pipelines/deploy/logger-elasticsearch/Jenkinsfile | 2 +- pipelines/deploy/logger/Jenkinsfile | 2 +- pipelines/deploy/monitor/Jenkinsfile | 2 +- pipelines/deploy/telemetry-logstash-datapipeline/Jenkinsfile | 2 +- pipelines/deploy/telemetry-logstash/Jenkinsfile | 2 +- pipelines/provision/kafka/Jenkinsfile | 2 +- pipelines/provision/registry/Jenkinsfile | 2 +- pipelines/provision/secor/Jenkinsfile | 2 +- 16 files changed, 17 insertions(+), 17 deletions(-) diff --git a/pipelines/backup/cassandra-backup/Jenkinsfile b/pipelines/backup/cassandra-backup/Jenkinsfile index 80e6e53a83..024db38b4b 100644 --- a/pipelines/backup/cassandra-backup/Jenkinsfile +++ b/pipelines/backup/cassandra-backup/Jenkinsfile @@ -32,7 +32,7 @@ node() { values.put('ansiblePlaybook', ansiblePlaybook) values.put('ansibleExtraArgs', ansibleExtraArgs) println values -// ansible_playbook_run(values) + ansible_playbook_run(values) } } diff --git a/pipelines/backup/logger-es-backup/Jenkinsfile b/pipelines/backup/logger-es-backup/Jenkinsfile index ec24ce7e07..9b8fe5eac0 100644 --- a/pipelines/backup/logger-es-backup/Jenkinsfile +++ b/pipelines/backup/logger-es-backup/Jenkinsfile @@ -32,7 +32,7 @@ node() { values.put('ansiblePlaybook', ansiblePlaybook) values.put('ansibleExtraArgs', ansibleExtraArgs) println values -// ansible_playbook_run(values) + ansible_playbook_run(values) } } diff --git a/pipelines/backup/logger-es-restore/Jenkinsfile b/pipelines/backup/logger-es-restore/Jenkinsfile index 3bc2a53914..cdf46dc490 100644 --- a/pipelines/backup/logger-es-restore/Jenkinsfile +++ b/pipelines/backup/logger-es-restore/Jenkinsfile @@ -32,7 +32,7 @@ node() { values.put('ansiblePlaybook', ansiblePlaybook) values.put('ansibleExtraArgs', ansibleExtraArgs) println values -// ansible_playbook_run(values) + ansible_playbook_run(values) } } } diff --git a/pipelines/deploy/am-onboard-apis/Jenkinsfile b/pipelines/deploy/am-onboard-apis/Jenkinsfile index 4d85a1d943..71d34b6c3a 100644 --- a/pipelines/deploy/am-onboard-apis/Jenkinsfile +++ b/pipelines/deploy/am-onboard-apis/Jenkinsfile @@ -28,7 +28,7 @@ node() { values.put('ansiblePlaybook', ansiblePlaybook) values.put('ansibleExtraArgs', ansibleExtraArgs) println values -// ansible_playbook_run(values) + ansible_playbook_run(values) } } } diff --git a/pipelines/deploy/am-onboard-consumers/Jenkinsfile b/pipelines/deploy/am-onboard-consumers/Jenkinsfile index 56b40ea679..f3f1c6d6fb 100644 --- a/pipelines/deploy/am-onboard-consumers/Jenkinsfile +++ b/pipelines/deploy/am-onboard-consumers/Jenkinsfile @@ -28,7 +28,7 @@ node() { values.put('ansiblePlaybook', ansiblePlaybook) values.put('ansibleExtraArgs', ansibleExtraArgs) println values -// ansible_playbook_run(values) + ansible_playbook_run(values) } } } diff --git a/pipelines/deploy/cassandra-deploy/Jenkinsfile b/pipelines/deploy/cassandra-deploy/Jenkinsfile index a4e2ab8804..b59bae9bee 100644 --- a/pipelines/deploy/cassandra-deploy/Jenkinsfile +++ b/pipelines/deploy/cassandra-deploy/Jenkinsfile @@ -32,7 +32,7 @@ node() { ansible_playbook_run(values) } else { println(ANSI_BOLD + ANSI_YELLOW + '''\ - Option chosen is Local, using the artifacts copied + Option chosen is JenkinsJob, using the artifacts copied '''.stripIndent().replace("\n", " ") + ANSI_NORMAL) } } @@ -45,7 +45,7 @@ node() { values.put('ansiblePlaybook', ansiblePlaybook) values.put('ansibleExtraArgs', ansibleExtraArgs) println values -// ansible_playbook_run(values) + ansible_playbook_run(values) archiveArtifacts artifacts: "${artifact}", fingerprint: true, onlyIfSuccessful: true archiveArtifacts artifacts: 'metadata.json', onlyIfSuccessful: true diff --git a/pipelines/deploy/es-backup/Jenkinsfile b/pipelines/deploy/es-backup/Jenkinsfile index 4016a3e29d..fdecb147bd 100644 --- a/pipelines/deploy/es-backup/Jenkinsfile +++ b/pipelines/deploy/es-backup/Jenkinsfile @@ -32,7 +32,7 @@ node() { values.put('ansiblePlaybook', ansiblePlaybook) values.put('ansibleExtraArgs', ansibleExtraArgs) println values -// ansible_playbook_run(values) + ansible_playbook_run(values) } } diff --git a/pipelines/deploy/es-restore/Jenkinsfile b/pipelines/deploy/es-restore/Jenkinsfile index 001ab7de82..06a5b31f1a 100644 --- a/pipelines/deploy/es-restore/Jenkinsfile +++ b/pipelines/deploy/es-restore/Jenkinsfile @@ -32,7 +32,7 @@ node() { values.put('ansiblePlaybook', ansiblePlaybook) values.put('ansibleExtraArgs', ansibleExtraArgs) println values -// ansible_playbook_run(values) + ansible_playbook_run(values) } } } diff --git a/pipelines/deploy/logger-elasticsearch/Jenkinsfile b/pipelines/deploy/logger-elasticsearch/Jenkinsfile index b6131cbe78..c8d5113b85 100644 --- a/pipelines/deploy/logger-elasticsearch/Jenkinsfile +++ b/pipelines/deploy/logger-elasticsearch/Jenkinsfile @@ -28,7 +28,7 @@ node() { values.put('ansiblePlaybook', ansiblePlaybook) values.put('ansibleExtraArgs', ansibleExtraArgs) println values -// ansible_playbook_run(values) + ansible_playbook_run(values) } } } diff --git a/pipelines/deploy/logger/Jenkinsfile b/pipelines/deploy/logger/Jenkinsfile index 3c8bf1f1fb..f6cb00e913 100644 --- a/pipelines/deploy/logger/Jenkinsfile +++ b/pipelines/deploy/logger/Jenkinsfile @@ -29,7 +29,7 @@ node() { values.put('ansiblePlaybook', ansiblePlaybook) values.put('ansibleExtraArgs', ansibleExtraArgs) println values -// ansible_playbook_run(values) + ansible_playbook_run(values) } } } diff --git a/pipelines/deploy/monitor/Jenkinsfile b/pipelines/deploy/monitor/Jenkinsfile index 0bded197b1..5da4a4b0ea 100644 --- a/pipelines/deploy/monitor/Jenkinsfile +++ b/pipelines/deploy/monitor/Jenkinsfile @@ -28,7 +28,7 @@ node() { values.put('ansiblePlaybook', ansiblePlaybook) values.put('ansibleExtraArgs', ansibleExtraArgs) println values -// ansible_playbook_run(values) + ansible_playbook_run(values) } } } diff --git a/pipelines/deploy/telemetry-logstash-datapipeline/Jenkinsfile b/pipelines/deploy/telemetry-logstash-datapipeline/Jenkinsfile index 4af1a48e0c..31776d4911 100644 --- a/pipelines/deploy/telemetry-logstash-datapipeline/Jenkinsfile +++ b/pipelines/deploy/telemetry-logstash-datapipeline/Jenkinsfile @@ -28,7 +28,7 @@ node() { values.put('ansiblePlaybook', ansiblePlaybook) values.put('ansibleExtraArgs', ansibleExtraArgs) println values -// ansible_playbook_run(values) + ansible_playbook_run(values) } } } diff --git a/pipelines/deploy/telemetry-logstash/Jenkinsfile b/pipelines/deploy/telemetry-logstash/Jenkinsfile index f4933aebae..f2a5479f24 100644 --- a/pipelines/deploy/telemetry-logstash/Jenkinsfile +++ b/pipelines/deploy/telemetry-logstash/Jenkinsfile @@ -28,7 +28,7 @@ node() { values.put('ansiblePlaybook', ansiblePlaybook) values.put('ansibleExtraArgs', ansibleExtraArgs) println values -// ansible_playbook_run(values) + ansible_playbook_run(values) } } } diff --git a/pipelines/provision/kafka/Jenkinsfile b/pipelines/provision/kafka/Jenkinsfile index 866b9d72c4..8f0235a761 100644 --- a/pipelines/provision/kafka/Jenkinsfile +++ b/pipelines/provision/kafka/Jenkinsfile @@ -28,7 +28,7 @@ node() { values.put('ansiblePlaybook', ansiblePlaybook) values.put('ansibleExtraArgs', ansibleExtraArgs) println values -// ansible_playbook_run(values) + ansible_playbook_run(values) } } } diff --git a/pipelines/provision/registry/Jenkinsfile b/pipelines/provision/registry/Jenkinsfile index 55a87f6ce7..314089e5d9 100644 --- a/pipelines/provision/registry/Jenkinsfile +++ b/pipelines/provision/registry/Jenkinsfile @@ -40,7 +40,7 @@ node() { values.put('ansiblePlaybook', ansiblePlaybook) values.put('ansibleExtraArgs', ansibleExtraArgs) println values -// ansible_playbook_run(values) + ansible_playbook_run(values) } } } diff --git a/pipelines/provision/secor/Jenkinsfile b/pipelines/provision/secor/Jenkinsfile index 08c0719e10..13ec99a31b 100644 --- a/pipelines/provision/secor/Jenkinsfile +++ b/pipelines/provision/secor/Jenkinsfile @@ -28,7 +28,7 @@ node() { values.put('ansiblePlaybook', ansiblePlaybook) values.put('ansibleExtraArgs', ansibleExtraArgs) println values -// ansible_playbook_run(values) + ansible_playbook_run(values) } } } From b72c2a6068707f0fac64e5a98d934be574ea8928 Mon Sep 17 00:00:00 2001 From: msknext Date: Fri, 1 Feb 2019 12:08:59 +0530 Subject: [PATCH 0870/1345] feat: DO-498 Adding keycloak build --- pipelines/build/keycloak/Jenkinsfile | 82 ++++++++++++++++++++++++ pipelines/provision/keycloak/Jenkinsfile | 1 - 2 files changed, 82 insertions(+), 1 deletion(-) create mode 100644 pipelines/build/keycloak/Jenkinsfile diff --git a/pipelines/build/keycloak/Jenkinsfile b/pipelines/build/keycloak/Jenkinsfile new file mode 100644 index 0000000000..92e96c75a3 --- /dev/null +++ b/pipelines/build/keycloak/Jenkinsfile @@ -0,0 +1,82 @@ +node('build-slave') { + try { + String ANSI_GREEN = "\u001B[32m" + String ANSI_NORMAL = "\u001B[0m" + String ANSI_BOLD = "\u001B[1m" + String ANSI_RED = "\u001B[31m" + String ANSI_YELLOW = "\u001B[33m" + + ansiColor('xterm') { + stage('Checkout') { + cleanWs() + def scmVars = checkout scm + if (params.tag == "") { + checkout scm + commit_hash = sh(script: 'git rev-parse --short HEAD', returnStdout: true).trim() + branch_name = sh(script: 'git name-rev --name-only HEAD | rev | cut -d "/" -f1| rev', returnStdout: true).trim() + artifact_version = branch_name + "_" + commit_hash + println(ANSI_BOLD + ANSI_YELLOW + "github_release_tag not specified, using the latest commit hash: " + commit_hash + ANSI_NORMAL) + } + else { + checkout scm: [$class: 'GitSCM', branches: [[name: "refs/tags/$params.tag"]], userRemoteConfigs: [[url: scmVars.GIT_URL]]] + artifact_version = params.tag + println(ANSI_BOLD + ANSI_YELLOW + "github_release_tag specified, building from: " + params.tag + ANSI_NORMAL) + } + echo "artifact_version: "+ artifact_version + } + + + stage('Build') { + sh('git clone https://github.com/ahghatol/sunbird-devops-1.git project-sunbird-devops') + sh('wget https://www.dropbox.com/s/98kl792ukt3dgsu/keycloak-3.2.0.Final.tar.gz') + sh('wget https://jdbc.postgresql.org/download/postgresql-9.4.1212.jar') + + sh('mkdir -p keycloak_build'); + // Login and Email theme build + sh('cd ansible/artifacts/sunbird && tar -zcvf login.tar.gz *') + sh('cd ansible/artifacts/email && rm -rf email.tar.gz && tar -zcvf email.tar.gz *') + + // Sms plugin build + sh('cd sunbird-auth/keycloak/sms-provider && mvn package') + sh('cp keycloak-3.2.0.Final.tar.gz keycloak_build') + sh('cp postgresql-9.4.1212.jar keycloak_build') + + // Copy file to keycloak_build directory + sh('cp sunbird-auth/keycloak/sms-provider/target/keycloak-email-phone-autthenticator-1.0-SNAPSHOT.jar keycloak_build') + + // Create zip and Copy file to keycloak_build directory + sh('cd sunbird-auth/keycloak/sms-provider/templates && tar -zcvf templates.tar.gz *') + sh('cp sunbird-auth/keycloak/sms-provider/templates/templates.tar.gz keycloak_build') + + // Copy ansible template for Provider config and keycloak configuration + sh('mkdir -p keycloak_build/ansible-templates'); + + sh('cp project-sunbird-devops/ansible/roles/keycloak/templates/* keycloak_build/ansible-templates') + + // COPY email and Login theme to Build + sh('cp ansible/artifacts/sunbird/login.tar.gz keycloak_build') + + sh('cp ansible/artifacts/email/email.tar.gz keycloak_build') + sh('tar -zcvf keycloak_build.tar.gz keycloak_build') + } + + stage('ArchiveArtifacts') { + sh """ + mkdir keycloak_artifacts + cp keycloak_build/login.tar.gz keycloak_build.tar.gz keycloak_artifacts + zip -j keycloak_artifacts.zip:${artifact_version} keycloak_artifacts/* + """ + archiveArtifacts artifacts: "keycloak_artifacts.zip:${artifact_version}", fingerprint: true, onlyIfSuccessful: true + sh """echo {\\"artifact_name\\" : \\"keycloak_artifacts.zip\\", \\"artifact_version\\" : \\"${artifact_version}\\", \\"node_name\\" : \\"${env.NODE_NAME}\\"} > metadata.json""" + archiveArtifacts "metadata.json" + currentBuild.description = "${build_tag}" + } + } + + } + catch (err) { + currentBuild.result = "FAILURE" + throw err + } + +} diff --git a/pipelines/provision/keycloak/Jenkinsfile b/pipelines/provision/keycloak/Jenkinsfile index d764d3fb30..7cc16a8a43 100644 --- a/pipelines/provision/keycloak/Jenkinsfile +++ b/pipelines/provision/keycloak/Jenkinsfile @@ -1,4 +1,3 @@ -//package Deploy @Library('deploy-conf') _ node() { try { From b2a0c02d529ffd0ba26185e262215cd18625df9b Mon Sep 17 00:00:00 2001 From: msknext Date: Fri, 1 Feb 2019 12:14:00 +0530 Subject: [PATCH 0871/1345] feat: DO-498 Adding keycloak build --- pipelines/build/keycloak/Jenkinsfile | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pipelines/build/keycloak/Jenkinsfile b/pipelines/build/keycloak/Jenkinsfile index 92e96c75a3..54206fdbe6 100644 --- a/pipelines/build/keycloak/Jenkinsfile +++ b/pipelines/build/keycloak/Jenkinsfile @@ -10,7 +10,7 @@ node('build-slave') { stage('Checkout') { cleanWs() def scmVars = checkout scm - if (params.tag == "") { + if (params.github_release_tag == "") { checkout scm commit_hash = sh(script: 'git rev-parse --short HEAD', returnStdout: true).trim() branch_name = sh(script: 'git name-rev --name-only HEAD | rev | cut -d "/" -f1| rev', returnStdout: true).trim() @@ -18,9 +18,9 @@ node('build-slave') { println(ANSI_BOLD + ANSI_YELLOW + "github_release_tag not specified, using the latest commit hash: " + commit_hash + ANSI_NORMAL) } else { - checkout scm: [$class: 'GitSCM', branches: [[name: "refs/tags/$params.tag"]], userRemoteConfigs: [[url: scmVars.GIT_URL]]] - artifact_version = params.tag - println(ANSI_BOLD + ANSI_YELLOW + "github_release_tag specified, building from: " + params.tag + ANSI_NORMAL) + checkout scm: [$class: 'GitSCM', branches: [[name: "refs/tags/${params.github_release_tag}"]], userRemoteConfigs: [[url: scmVars.GIT_URL]]] + artifact_version = params.github_release_tag + println(ANSI_BOLD + ANSI_YELLOW + "github_release_tag specified, building from: " + params.github_release_tag + ANSI_NORMAL) } echo "artifact_version: "+ artifact_version } From cd9107b40bc61d6c1de761c424ebefd250bb838b Mon Sep 17 00:00:00 2001 From: msknext Date: Fri, 1 Feb 2019 12:26:40 +0530 Subject: [PATCH 0872/1345] Issue #000: Dependecy in priv repo --- pipelines/build/keycloak/Jenkinsfile | 82 ---------------------------- 1 file changed, 82 deletions(-) delete mode 100644 pipelines/build/keycloak/Jenkinsfile diff --git a/pipelines/build/keycloak/Jenkinsfile b/pipelines/build/keycloak/Jenkinsfile deleted file mode 100644 index 54206fdbe6..0000000000 --- a/pipelines/build/keycloak/Jenkinsfile +++ /dev/null @@ -1,82 +0,0 @@ -node('build-slave') { - try { - String ANSI_GREEN = "\u001B[32m" - String ANSI_NORMAL = "\u001B[0m" - String ANSI_BOLD = "\u001B[1m" - String ANSI_RED = "\u001B[31m" - String ANSI_YELLOW = "\u001B[33m" - - ansiColor('xterm') { - stage('Checkout') { - cleanWs() - def scmVars = checkout scm - if (params.github_release_tag == "") { - checkout scm - commit_hash = sh(script: 'git rev-parse --short HEAD', returnStdout: true).trim() - branch_name = sh(script: 'git name-rev --name-only HEAD | rev | cut -d "/" -f1| rev', returnStdout: true).trim() - artifact_version = branch_name + "_" + commit_hash - println(ANSI_BOLD + ANSI_YELLOW + "github_release_tag not specified, using the latest commit hash: " + commit_hash + ANSI_NORMAL) - } - else { - checkout scm: [$class: 'GitSCM', branches: [[name: "refs/tags/${params.github_release_tag}"]], userRemoteConfigs: [[url: scmVars.GIT_URL]]] - artifact_version = params.github_release_tag - println(ANSI_BOLD + ANSI_YELLOW + "github_release_tag specified, building from: " + params.github_release_tag + ANSI_NORMAL) - } - echo "artifact_version: "+ artifact_version - } - - - stage('Build') { - sh('git clone https://github.com/ahghatol/sunbird-devops-1.git project-sunbird-devops') - sh('wget https://www.dropbox.com/s/98kl792ukt3dgsu/keycloak-3.2.0.Final.tar.gz') - sh('wget https://jdbc.postgresql.org/download/postgresql-9.4.1212.jar') - - sh('mkdir -p keycloak_build'); - // Login and Email theme build - sh('cd ansible/artifacts/sunbird && tar -zcvf login.tar.gz *') - sh('cd ansible/artifacts/email && rm -rf email.tar.gz && tar -zcvf email.tar.gz *') - - // Sms plugin build - sh('cd sunbird-auth/keycloak/sms-provider && mvn package') - sh('cp keycloak-3.2.0.Final.tar.gz keycloak_build') - sh('cp postgresql-9.4.1212.jar keycloak_build') - - // Copy file to keycloak_build directory - sh('cp sunbird-auth/keycloak/sms-provider/target/keycloak-email-phone-autthenticator-1.0-SNAPSHOT.jar keycloak_build') - - // Create zip and Copy file to keycloak_build directory - sh('cd sunbird-auth/keycloak/sms-provider/templates && tar -zcvf templates.tar.gz *') - sh('cp sunbird-auth/keycloak/sms-provider/templates/templates.tar.gz keycloak_build') - - // Copy ansible template for Provider config and keycloak configuration - sh('mkdir -p keycloak_build/ansible-templates'); - - sh('cp project-sunbird-devops/ansible/roles/keycloak/templates/* keycloak_build/ansible-templates') - - // COPY email and Login theme to Build - sh('cp ansible/artifacts/sunbird/login.tar.gz keycloak_build') - - sh('cp ansible/artifacts/email/email.tar.gz keycloak_build') - sh('tar -zcvf keycloak_build.tar.gz keycloak_build') - } - - stage('ArchiveArtifacts') { - sh """ - mkdir keycloak_artifacts - cp keycloak_build/login.tar.gz keycloak_build.tar.gz keycloak_artifacts - zip -j keycloak_artifacts.zip:${artifact_version} keycloak_artifacts/* - """ - archiveArtifacts artifacts: "keycloak_artifacts.zip:${artifact_version}", fingerprint: true, onlyIfSuccessful: true - sh """echo {\\"artifact_name\\" : \\"keycloak_artifacts.zip\\", \\"artifact_version\\" : \\"${artifact_version}\\", \\"node_name\\" : \\"${env.NODE_NAME}\\"} > metadata.json""" - archiveArtifacts "metadata.json" - currentBuild.description = "${build_tag}" - } - } - - } - catch (err) { - currentBuild.result = "FAILURE" - throw err - } - -} From 0a74ecb4872ed5ebcef80baed9c2a5c51c1b58b7 Mon Sep 17 00:00:00 2001 From: S M Y Date: Fri, 1 Feb 2019 13:39:15 +0530 Subject: [PATCH 0873/1345] Issue #000 vars: vars update --- pipelines/summary/Jenkinsfile | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pipelines/summary/Jenkinsfile b/pipelines/summary/Jenkinsfile index ea9132c7ac..fda50d3658 100644 --- a/pipelines/summary/Jenkinsfile +++ b/pipelines/summary/Jenkinsfile @@ -51,10 +51,10 @@ node(){ """ } - stage('Archive artifacts'){ - archiveArtifacts artifacts: "$JENKINS_HOME/summary/${envDir}/summary.txt", fingerprint: true, onlyIfSuccessful: true - - } +# stage('Archive artifacts'){ +# archiveArtifacts artifacts: "$JENKINS_HOME/summary/${envDir}/summary.txt", fingerprint: true, onlyIfSuccessful: true +# +# } } From bbb37115c6b6ec2d4f6b49143a41dd5fbdc2783d Mon Sep 17 00:00:00 2001 From: S M Y Date: Fri, 1 Feb 2019 13:40:57 +0530 Subject: [PATCH 0874/1345] Issue #000 vars: vars update --- pipelines/summary/Jenkinsfile | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pipelines/summary/Jenkinsfile b/pipelines/summary/Jenkinsfile index fda50d3658..96193ae1ab 100644 --- a/pipelines/summary/Jenkinsfile +++ b/pipelines/summary/Jenkinsfile @@ -51,10 +51,10 @@ node(){ """ } -# stage('Archive artifacts'){ -# archiveArtifacts artifacts: "$JENKINS_HOME/summary/${envDir}/summary.txt", fingerprint: true, onlyIfSuccessful: true -# -# } +/* stage('Archive artifacts'){ + archiveArtifacts artifacts: "$JENKINS_HOME/summary/${envDir}/summary.txt", fingerprint: true, onlyIfSuccessful: true + + }*/ } From cc1b39a1b5f65896457dfa2c4692dca93ef7e215 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Fri, 1 Feb 2019 14:26:25 +0530 Subject: [PATCH 0875/1345] Issue #000: Set Artifact value irrespective of job parameter --- pipelines/upload/artifacts/Jenkinsfile | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/pipelines/upload/artifacts/Jenkinsfile b/pipelines/upload/artifacts/Jenkinsfile index 0ee396a547..4cf03fb147 100644 --- a/pipelines/upload/artifacts/Jenkinsfile +++ b/pipelines/upload/artifacts/Jenkinsfile @@ -7,12 +7,10 @@ node() { } stage('Artifact Upload') { def values = lp_dp_params() + currentWs = sh(returnStdout: true, script: 'pwd').trim() + artifact = values.artifact_name + ":" + values.artifact_version if(params.artifact_source == "ArtifactRepo") { - artifact_version = sh(returnStdout: true, script: 'jq -r .artifact_version metadata.json').trim() - values.put('artifact_version', artifact_version) - currentWs = sh(returnStdout: true, script: 'pwd').trim() - artifact = values.artifact_name + ":" + values.artifact_version ansiblePlaybook = "${currentWs}/ansible/artifacts-upload.yml" ansibleExtraArgs = "--extra-vars \"artifact=${artifact} artifact_path=${currentWs}/${artifact}\" --vault-password-file /home/ops/vault" values.put('currentWs', currentWs) From a4968a62893049806ad2c5e4c23300de70451522 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Fri, 1 Feb 2019 14:29:18 +0530 Subject: [PATCH 0876/1345] Issue #000: Artifact version variable --- pipelines/upload/artifacts/Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pipelines/upload/artifacts/Jenkinsfile b/pipelines/upload/artifacts/Jenkinsfile index 4cf03fb147..5fa1c533c1 100644 --- a/pipelines/upload/artifacts/Jenkinsfile +++ b/pipelines/upload/artifacts/Jenkinsfile @@ -20,7 +20,7 @@ node() { } archiveArtifacts artifacts: "${artifact}", fingerprint: true, onlyIfSuccessful: true archiveArtifacts artifacts: 'metadata.json', onlyIfSuccessful: true - currentBuild.description = "${artifact_version}" + currentBuild.description = "${values.artifact_version}" } } catch (err) { From fdedac18f7c781571a7f85968f8f1782c66f0b58 Mon Sep 17 00:00:00 2001 From: "kaliraja.ramasamy" Date: Fri, 1 Feb 2019 14:33:19 +0530 Subject: [PATCH 0877/1345] Issue #0000 fix: DO-470 updated the variables --- ansible/inventory/env/group_vars/env.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/ansible/inventory/env/group_vars/env.yml b/ansible/inventory/env/group_vars/env.yml index af3577a067..99b0167d4b 100644 --- a/ansible/inventory/env/group_vars/env.yml +++ b/ansible/inventory/env/group_vars/env.yml @@ -25,6 +25,7 @@ jenkins_admin_password: "{{core_vault_jenkins_admin_password}}" bootstrap_user: "{{core_vault_bootstrap_user}}" bootstrap_key_path: "{{core_vault_bootstrap_key_path}}" + ## Postgres configuration swarm_address_space: "{{groups['swarm-manager'][0].split(\".\")[0]}}.0.0.0/8" #Application server address space (e.g. 10.3.0.0/24), also the agentpublicSubnet if using Azure scripts provided keycloak_address_space: "{{groups['keycloak'][0].split(\".\")[0]}}.0.0.0/8" @@ -287,6 +288,7 @@ kong_version: 1.5.0-gold # Data pipeline vars learning_analytics_service_url: 'http://{{learningservice_ip}}:9000' +ep_es_host: "{{ groups['telemetry-search-cluster'][0] }}" #For kibana pipeline-dashboard #encryption Service @@ -452,3 +454,6 @@ badger_replicas: 2 badger_reservation_memory: 500MB badger_limit_memory: 500MB + +# not required +sunbird_image_storage_url: "" From 158eb9d3c7b99bd8d0a1f60f50500dc4d96dd730 Mon Sep 17 00:00:00 2001 From: msknext Date: Fri, 1 Feb 2019 14:35:00 +0530 Subject: [PATCH 0878/1345] feat: DO-498 Updating azure upload and download plays --- ansible/artifacts-download.yml | 8 ++++---- ansible/artifacts-upload.yml | 8 ++++---- ansible/roles/artifacts-download-azure/meta/main.yml | 2 +- ansible/roles/artifacts-upload-azure/meta/main.yml | 2 +- ansible/roles/artifacts-upload-azure/tasks/main.yml | 10 +--------- 5 files changed, 11 insertions(+), 19 deletions(-) diff --git a/ansible/artifacts-download.yml b/ansible/artifacts-download.yml index 90ab74a0f7..93c4af4539 100644 --- a/ansible/artifacts-download.yml +++ b/ansible/artifacts-download.yml @@ -1,10 +1,10 @@ --- -- hosts: localhost +- hosts: local become: yes vars_files: - - ['{{inventory_dir}}/secrets.yml', 'secrets/{{env}}.yml'] + - "{{inventory_dir}}/secrets.yml" environment: - AZURE_STORAGE_ACCOUNT: "{{ artifacts_storage_account }}" - AZURE_STORAGE_KEY: "{{ artifact_storage_key }}" + AZURE_STORAGE_ACCOUNT: "{{ azure_account_name }}" + AZURE_STORAGE_KEY: "{{ azure_account_key }}" roles: - artifacts-download-azure diff --git a/ansible/artifacts-upload.yml b/ansible/artifacts-upload.yml index 67cd113bbe..ee7661a89b 100644 --- a/ansible/artifacts-upload.yml +++ b/ansible/artifacts-upload.yml @@ -1,10 +1,10 @@ --- -- hosts: localhost +- hosts: local become: yes vars_files: - - ['{{inventory_dir}}/secrets.yml', 'secrets/{{env}}.yml'] + - "{{inventory_dir}}/secrets.yml" environment: - AZURE_STORAGE_ACCOUNT: "{{ artifacts_storage_account }}" - AZURE_STORAGE_KEY: "{{ artifact_storage_key }}" + AZURE_STORAGE_ACCOUNT: "{{ azure_account_name }}" + AZURE_STORAGE_KEY: "{{ azure_account_key }}" roles: - artifacts-upload-azure diff --git a/ansible/roles/artifacts-download-azure/meta/main.yml b/ansible/roles/artifacts-download-azure/meta/main.yml index 23b18a800a..a124d4f7cb 100644 --- a/ansible/roles/artifacts-download-azure/meta/main.yml +++ b/ansible/roles/artifacts-download-azure/meta/main.yml @@ -1,2 +1,2 @@ dependencies: - - azure-cli \ No newline at end of file + - azure-cli diff --git a/ansible/roles/artifacts-upload-azure/meta/main.yml b/ansible/roles/artifacts-upload-azure/meta/main.yml index 23b18a800a..a124d4f7cb 100644 --- a/ansible/roles/artifacts-upload-azure/meta/main.yml +++ b/ansible/roles/artifacts-upload-azure/meta/main.yml @@ -1,2 +1,2 @@ dependencies: - - azure-cli \ No newline at end of file + - azure-cli diff --git a/ansible/roles/artifacts-upload-azure/tasks/main.yml b/ansible/roles/artifacts-upload-azure/tasks/main.yml index 62c424f87a..07977a6ed0 100644 --- a/ansible/roles/artifacts-upload-azure/tasks/main.yml +++ b/ansible/roles/artifacts-upload-azure/tasks/main.yml @@ -1,16 +1,8 @@ --- - name: Ensure azure blob storage container exists command: az storage container create --name {{ artifacts_container }} - ignore_errors: true - environment: - AZURE_STORAGE_ACCOUNT: "{{ artifacts_storage_account }}" - AZURE_STORAGE_KEY: "{{ artifact_storage_key }}" - - name: Upload to azure blob storage - command: az storage blob upload-batch -d {{ artifacts_container }} -s {{ artifacts }} - environment: - AZURE_STORAGE_ACCOUNT: "{{ artifacts_storage_account }}" - AZURE_STORAGE_KEY: "{{ artifacts_storage_key }}" + command: az storage blob upload -c {{ artifacts_container }} --name {{ artifact }} -f {{ artifact_path }} async: 100 poll: 10 From 8f4d6d9936e537c3baf607c7e4c5f27a43943e05 Mon Sep 17 00:00:00 2001 From: S M Y Date: Fri, 1 Feb 2019 15:34:26 +0530 Subject: [PATCH 0879/1345] Issue #000 vars: postgres provision role updation --- pipelines/provision/postgres-lpa/Jenkinsfile | 38 ++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 pipelines/provision/postgres-lpa/Jenkinsfile diff --git a/pipelines/provision/postgres-lpa/Jenkinsfile b/pipelines/provision/postgres-lpa/Jenkinsfile new file mode 100644 index 0000000000..e1d5a052f0 --- /dev/null +++ b/pipelines/provision/postgres-lpa/Jenkinsfile @@ -0,0 +1,38 @@ +@Library('deploy-conf') _ +node() { + try { + String ANSI_GREEN = "\u001B[32m" + String ANSI_NORMAL = "\u001B[0m" + String ANSI_BOLD = "\u001B[1m" + String ANSI_RED = "\u001B[31m" + String ANSI_YELLOW = "\u001B[33m" + + stage('checkout public repo') { + cleanWs() + checkout scm + } + + ansiColor('xterm') { + stage('deploy'){ + values = [:] + currentWs = sh(returnStdout: true, script: 'pwd').trim() + envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-3].trim() + module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() + jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() + ansiblePlaybook = "${currentWs}/ansible/postgres-provision.yml" + ansibleExtraArgs = "--vault-password-file /run/secrets/vault-pass -v" + values.put('currentWs', currentWs) + values.put('env', envDir) + values.put('module', module) + values.put('jobName', jobName) + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + println values + ansible_playbook_run(values) + } + } + } + catch (err) { + throw err + } +} From 094db35bddee99a33996b0773d4faa648605c90e Mon Sep 17 00:00:00 2001 From: S M Y Date: Fri, 1 Feb 2019 15:43:35 +0530 Subject: [PATCH 0880/1345] Issue #000 vars: postgres provision role updation --- pipelines/provision/postgres-lpa/Jenkinsfile | 38 -------------------- 1 file changed, 38 deletions(-) delete mode 100644 pipelines/provision/postgres-lpa/Jenkinsfile diff --git a/pipelines/provision/postgres-lpa/Jenkinsfile b/pipelines/provision/postgres-lpa/Jenkinsfile deleted file mode 100644 index e1d5a052f0..0000000000 --- a/pipelines/provision/postgres-lpa/Jenkinsfile +++ /dev/null @@ -1,38 +0,0 @@ -@Library('deploy-conf') _ -node() { - try { - String ANSI_GREEN = "\u001B[32m" - String ANSI_NORMAL = "\u001B[0m" - String ANSI_BOLD = "\u001B[1m" - String ANSI_RED = "\u001B[31m" - String ANSI_YELLOW = "\u001B[33m" - - stage('checkout public repo') { - cleanWs() - checkout scm - } - - ansiColor('xterm') { - stage('deploy'){ - values = [:] - currentWs = sh(returnStdout: true, script: 'pwd').trim() - envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-3].trim() - module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() - jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() - ansiblePlaybook = "${currentWs}/ansible/postgres-provision.yml" - ansibleExtraArgs = "--vault-password-file /run/secrets/vault-pass -v" - values.put('currentWs', currentWs) - values.put('env', envDir) - values.put('module', module) - values.put('jobName', jobName) - values.put('ansiblePlaybook', ansiblePlaybook) - values.put('ansibleExtraArgs', ansibleExtraArgs) - println values - ansible_playbook_run(values) - } - } - } - catch (err) { - throw err - } -} From f9517222b842d6d6ed547fb7339251bd372bad58 Mon Sep 17 00:00:00 2001 From: msknext Date: Fri, 1 Feb 2019 16:30:43 +0530 Subject: [PATCH 0881/1345] feat: DO-498 Adding keycloak deploy script --- pipelines/deploy/keycloak/Jenkinsfile | 63 +++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 pipelines/deploy/keycloak/Jenkinsfile diff --git a/pipelines/deploy/keycloak/Jenkinsfile b/pipelines/deploy/keycloak/Jenkinsfile new file mode 100644 index 0000000000..aebe9aa5de --- /dev/null +++ b/pipelines/deploy/keycloak/Jenkinsfile @@ -0,0 +1,63 @@ +@Library('deploy-conf') _ +node() { + try { + String ANSI_GREEN = "\u001B[32m" + String ANSI_NORMAL = "\u001B[0m" + String ANSI_BOLD = "\u001B[1m" + String ANSI_RED = "\u001B[31m" + String ANSI_YELLOW = "\u001B[33m" + + stage('checkout public repo') { + cleanWs() + checkout scm + } + + ansiColor('xterm') { + stage('get artifact') { + def values = lp_dp_params() + currentWs = sh(returnStdout: true, script: 'pwd').trim() + artifact = values.artifact_name + ":" + values.artifact_version + values.put('currentWs', currentWs) + if (params.artifact_source == "Remote") { + println(ANSI_BOLD + ANSI_YELLOW + '''\ + Option chosen is Remote, ignoring any previously copied artifacts and new artifacts will be downloaded from remote source + '''.stripIndent().replace("\n", " ") + ANSI_NORMAL) + ansiblePlaybook = "${currentWs}/devops/artifacts-download.yml" + ansibleExtraArgs = """\ + --extra-vars "artifact=${artifact} + artifact_path=${currentWs}/${artifact}" + --vault-password-file /home/ops/vault + """.stripIndent().replace("\n", " ") + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + ansible_playbook_run(values) + } else { + println(ANSI_BOLD + ANSI_YELLOW + '''\ + Option chosen is Local, using the artifacts copied + '''.stripIndent().replace("\n", " ") + ANSI_NORMAL) + } + } + stage('deploy artifact') { + sh """ + unzip ${artifact} + tar zxvf keycloak_build.tar.gz ansible + """ + ansiblePlaybook = "${currentWs}/devops/keycloak.yml" + ansibleExtraArgs = "--tags deploy --vault-password-file /run/secrets/vault-pass" + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + println values + ansible_playbook_run(values) + + archiveArtifacts artifacts: "${artifact}", fingerprint: true, onlyIfSuccessful: true + archiveArtifacts artifacts: 'metadata.json', onlyIfSuccessful: true + currentBuild.description = "${values.artifact_version}" + } + } + } + catch (err) { + currentBuild.result = "FAILURE" + throw err + } +} + From 26f9a6c2bc9ce51a2b28f383f48a9b822de49ece Mon Sep 17 00:00:00 2001 From: msknext Date: Fri, 1 Feb 2019 16:44:59 +0530 Subject: [PATCH 0882/1345] DO-498 Adding jenkins slave jenkinsfile --- pipelines/provision/jenkins-slave/Jenkinsfile | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 pipelines/provision/jenkins-slave/Jenkinsfile diff --git a/pipelines/provision/jenkins-slave/Jenkinsfile b/pipelines/provision/jenkins-slave/Jenkinsfile new file mode 100644 index 0000000000..59bcf55422 --- /dev/null +++ b/pipelines/provision/jenkins-slave/Jenkinsfile @@ -0,0 +1,39 @@ +@Library('deploy-conf') _ +node() { + try { + String ANSI_GREEN = "\u001B[32m" + String ANSI_NORMAL = "\u001B[0m" + String ANSI_BOLD = "\u001B[1m" + String ANSI_RED = "\u001B[31m" + String ANSI_YELLOW = "\u001B[33m" + + stage('checkout public repo') { + cleanWs() + checkout scm + } + + ansiColor('xterm') { + stage('deploy'){ + values = [:] + currentWs = sh(returnStdout: true, script: 'pwd').trim() + envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-3].trim() + module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() + jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() + currentWs = sh(returnStdout: true, script: 'pwd').trim() + ansiblePlaybook = "${currentWs}/devops/jenkins-slave.yml" + ansibleExtraArgs = "--tags jenkins-slave --extra-vars \"jenkins_host=${params.jenkins_host}\" --vault-password-file /home/ops/vault" + values.put('currentWs', currentWs) + values.put('env', envDir) + values.put('module', module) + values.put('jobName', jobName) + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + println values + ansible_playbook_run(values) + } + } + } + catch (err) { + throw err + } +} From dbc82bf77f568e0265b2a2628f9b8ee7db8a96b6 Mon Sep 17 00:00:00 2001 From: msknext Date: Fri, 1 Feb 2019 16:53:47 +0530 Subject: [PATCH 0883/1345] DO-498 Adding api manager jenkinsfile --- pipelines/deploy/api-manager/Jenkinsfile | 25 ++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 pipelines/deploy/api-manager/Jenkinsfile diff --git a/pipelines/deploy/api-manager/Jenkinsfile b/pipelines/deploy/api-manager/Jenkinsfile new file mode 100644 index 0000000000..b07fad2336 --- /dev/null +++ b/pipelines/deploy/api-manager/Jenkinsfile @@ -0,0 +1,25 @@ +@Library('deploy-conf') _ +node() { + try { + stage('checkout public repo') { + cleanWs() + checkout scm + } + stage('deploy') { + def values = docker_params() + currentWs = sh(returnStdout: true, script: 'pwd').trim() + ansiblePlaybook = "$currentWs/ansible/deploy.yml" + ansibleExtraArgs = "--tags \"stack-api-manager\" --extra-vars \"hub_org=${hub_org} echo_server_image_name=${values.image_name} echo_server_image_tag=${values.image_tag}\" --vault-password-file /home/ops/vault" + values.put('currentWs', currentWs) + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + ansible_playbook_run(values) + archiveArtifacts 'metadata.json' + currentBuild.description = "${values.image_tag}" + } + } + catch (err) { + currentBuild.result = "FAILURE" + throw err + } +} From 59c9a7c915d913b714efbc7c04ea53ae14fcd813 Mon Sep 17 00:00:00 2001 From: Kartish Date: Fri, 1 Feb 2019 17:05:16 +0530 Subject: [PATCH 0884/1345] Issue #0000 fix: postgres password variable update --- ansible/inventory/env/group_vars/env.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/ansible/inventory/env/group_vars/env.yml b/ansible/inventory/env/group_vars/env.yml index 99b0167d4b..66e893e27a 100644 --- a/ansible/inventory/env/group_vars/env.yml +++ b/ansible/inventory/env/group_vars/env.yml @@ -7,6 +7,7 @@ sunbird_pg_user: "{{core_vault_postgres_username}}" application_postgres_user: "{{core_vault_postgres_username}}" keycloak_postgres_user: "{{core_vault_postgres_username}}" kong_postgres_user: "{{core_vault_postgres_username}}" +kong_postgres_password: "{{core_vault_postgres_password}}" enc_postgres_user: "{{core_vault_postgres_username}}" analytics_postgres_user: "{{core_vault_postgres_username}}" badger_postgres_user: "{{core_vault_postgres_username}}" From 74c5ebe4d16587e43e356cc535d83ed709fb6046 Mon Sep 17 00:00:00 2001 From: Rajesh Rajendran Date: Sat, 2 Feb 2019 13:35:32 +0530 Subject: [PATCH 0885/1345] updated localhost from 127.0.0.1 --- deploy/cassandra_restore.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deploy/cassandra_restore.py b/deploy/cassandra_restore.py index cbc40b0079..7912c20f37 100755 --- a/deploy/cassandra_restore.py +++ b/deploy/cassandra_restore.py @@ -27,7 +27,7 @@ parser = ArgumentParser(description="Restore cassandra snapshot") parser.add_argument("--host", default="localhost", help="ip address of cassandra instance. \ - Default: 127.0.0.1") + Default: localhost") parser.add_argument("snapshotdir", metavar="snapshotdirectory", help="snapshot directory name or path") args = parser.parse_args() From d4759e8f9826acaf05b70ea5bedaca7aceb81b17 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Sat, 2 Feb 2019 14:16:25 +0530 Subject: [PATCH 0886/1345] Issue #000 chore: fix and improvements 1. `python cassandra_restore.py` will work without any args 2. by default script will use hostname for better restoration compatibility 3. fix: directories ending with '/' break restoration 4. udpated documentation --- deploy/cassandra_restore.py | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/deploy/cassandra_restore.py b/deploy/cassandra_restore.py index 7912c20f37..7cf1a47f49 100755 --- a/deploy/cassandra_restore.py +++ b/deploy/cassandra_restore.py @@ -17,22 +17,23 @@ cqlsh -e "source 'backup_dir/db_schema.cql';" 3. Restore the data - usage: ./cassandra_restore.py --host snapshot_directory_name + usage: python cassandra_restore.py """ from os import walk, sep from subprocess import STDOUT, call from argparse import ArgumentParser - +import socket parser = ArgumentParser(description="Restore cassandra snapshot") -parser.add_argument("--host", default="localhost", help="ip address of cassandra instance. \ - Default: localhost") -parser.add_argument("snapshotdir", metavar="snapshotdirectory", help="snapshot directory name or path") +parser.add_argument("--host", default=socket.getfqdn(), metavar="< Default: "+socket.getfqdn()+" >", help="ip address of cassandra instance") +parser.add_argument("--snapshotdir", default="cassandra_backup", metavar="< Default: cassandra_backup >", help="snapshot directory name or path") args = parser.parse_args() -root_levels = args.snapshotdir.count(sep) -for root, dirs, files in walk(args.snapshotdir): +# Unix autocompletion for directory will append '/', which will break restore process +snap_dir = args.snapshotdir.rstrip('/') +root_levels = snap_dir.count(sep) +for root, dirs, files in walk(snap_dir): if root.count(sep) == root_levels + 2: print(root) call(["sstableloader", "-v", "-d", args.host, root], stderr=STDOUT) From fb16bf4d3b86094eabdaacedb0f0f3e93f097cb5 Mon Sep 17 00:00:00 2001 From: "kaliraja.ramasamy" Date: Sun, 3 Feb 2019 16:02:15 +0530 Subject: [PATCH 0887/1345] Issue #0000 fix: DO-470 created the Jenkinsfile to list the summary --- pipelines/summary/Jenkinsfile.list | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 pipelines/summary/Jenkinsfile.list diff --git a/pipelines/summary/Jenkinsfile.list b/pipelines/summary/Jenkinsfile.list new file mode 100644 index 0000000000..de3f1c3634 --- /dev/null +++ b/pipelines/summary/Jenkinsfile.list @@ -0,0 +1,6 @@ +node(){ + stage('list-summary') + { + sh '$JENKINS_HOME/summary/dev/summary.txt + } +} From b173de15e41b949ce10664b7c5b6336f0eff0fdb Mon Sep 17 00:00:00 2001 From: "kaliraja.ramasamy" Date: Sun, 3 Feb 2019 16:19:57 +0530 Subject: [PATCH 0888/1345] Issue #0000 fix: DO-470 created the Jenkinsfile to list the summary --- pipelines/summary/Jenkinsfile.list | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/pipelines/summary/Jenkinsfile.list b/pipelines/summary/Jenkinsfile.list index de3f1c3634..7802a90f41 100644 --- a/pipelines/summary/Jenkinsfile.list +++ b/pipelines/summary/Jenkinsfile.list @@ -1,6 +1,15 @@ node(){ + + stage('get-env-name){ + + jobpath = "$JOB_NAME" + println jobpath + def envDir = jobpath.split('/')[-3].toString().trim() + println envDir + } + stage('list-summary') { - sh '$JENKINS_HOME/summary/dev/summary.txt + sh '$JENKINS_HOME/summary/${envDir}/summary.txt | column -t' } } From 16accb3c70a5911a3eb87dbae1c17f9284448dfc Mon Sep 17 00:00:00 2001 From: "kaliraja.ramasamy" Date: Sun, 3 Feb 2019 16:26:11 +0530 Subject: [PATCH 0889/1345] Issue #0000 fix: DO-470 created the Jenkinsfile to list the summary --- pipelines/summary/Jenkinsfile.list | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pipelines/summary/Jenkinsfile.list b/pipelines/summary/Jenkinsfile.list index 7802a90f41..af0aac687a 100644 --- a/pipelines/summary/Jenkinsfile.list +++ b/pipelines/summary/Jenkinsfile.list @@ -1,6 +1,6 @@ node(){ - stage('get-env-name){ + stage('get-env-name'){ jobpath = "$JOB_NAME" println jobpath From 75e29bdc8acf44c89d35aef68630b3e43b4202e7 Mon Sep 17 00:00:00 2001 From: "kaliraja.ramasamy" Date: Sun, 3 Feb 2019 17:12:46 +0530 Subject: [PATCH 0890/1345] Issue #0000 fix: DO-470 created the Jenkinsfile to list the summary --- pipelines/summary/Jenkinsfile.list | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/pipelines/summary/Jenkinsfile.list b/pipelines/summary/Jenkinsfile.list index af0aac687a..242e38eebd 100644 --- a/pipelines/summary/Jenkinsfile.list +++ b/pipelines/summary/Jenkinsfile.list @@ -6,10 +6,7 @@ node(){ println jobpath def envDir = jobpath.split('/')[-3].toString().trim() println envDir + sh '$JENKINS_HOME/summary/${envDir}/summary.txt | column -t' } - stage('list-summary') - { - sh '$JENKINS_HOME/summary/${envDir}/summary.txt | column -t' - } } From b598ede567dead4875409711335ff1a58043975f Mon Sep 17 00:00:00 2001 From: "kaliraja.ramasamy" Date: Mon, 4 Feb 2019 09:44:14 +0530 Subject: [PATCH 0891/1345] Issue #0000 fix: DO-470 updated the tar command --- pipelines/deploy/keycloak/Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pipelines/deploy/keycloak/Jenkinsfile b/pipelines/deploy/keycloak/Jenkinsfile index aebe9aa5de..6e17973810 100644 --- a/pipelines/deploy/keycloak/Jenkinsfile +++ b/pipelines/deploy/keycloak/Jenkinsfile @@ -40,7 +40,7 @@ node() { stage('deploy artifact') { sh """ unzip ${artifact} - tar zxvf keycloak_build.tar.gz ansible + tar zxvf keycloak_build.tar.gz -C ansible """ ansiblePlaybook = "${currentWs}/devops/keycloak.yml" ansibleExtraArgs = "--tags deploy --vault-password-file /run/secrets/vault-pass" From f48c56c07c16236bfcd63b91488a1d0c7592c074 Mon Sep 17 00:00:00 2001 From: "kaliraja.ramasamy" Date: Mon, 4 Feb 2019 09:54:21 +0530 Subject: [PATCH 0892/1345] Issue #0000 fix: DO-470 updated the ansible playbook path --- pipelines/deploy/keycloak/Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pipelines/deploy/keycloak/Jenkinsfile b/pipelines/deploy/keycloak/Jenkinsfile index 6e17973810..f0bedd0ef7 100644 --- a/pipelines/deploy/keycloak/Jenkinsfile +++ b/pipelines/deploy/keycloak/Jenkinsfile @@ -42,7 +42,7 @@ node() { unzip ${artifact} tar zxvf keycloak_build.tar.gz -C ansible """ - ansiblePlaybook = "${currentWs}/devops/keycloak.yml" + ansiblePlaybook = "${currentWs}/ansible/keycloak.yml" ansibleExtraArgs = "--tags deploy --vault-password-file /run/secrets/vault-pass" values.put('ansiblePlaybook', ansiblePlaybook) values.put('ansibleExtraArgs', ansibleExtraArgs) From f1f26777becdcb3689b536e6d4b3bbb456fb8b56 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Mon, 4 Feb 2019 10:07:48 +0530 Subject: [PATCH 0893/1345] Issue #000: Scope of variable --- pipelines/deploy/keycloak/Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pipelines/deploy/keycloak/Jenkinsfile b/pipelines/deploy/keycloak/Jenkinsfile index f0bedd0ef7..f64ec6ce23 100644 --- a/pipelines/deploy/keycloak/Jenkinsfile +++ b/pipelines/deploy/keycloak/Jenkinsfile @@ -13,8 +13,8 @@ node() { } ansiColor('xterm') { + def values = lp_dp_params() stage('get artifact') { - def values = lp_dp_params() currentWs = sh(returnStdout: true, script: 'pwd').trim() artifact = values.artifact_name + ":" + values.artifact_version values.put('currentWs', currentWs) From 8735b291029df0d24e72c8529ff5b131af3e31d5 Mon Sep 17 00:00:00 2001 From: "kaliraja.ramasamy" Date: Mon, 4 Feb 2019 10:22:57 +0530 Subject: [PATCH 0894/1345] Issue #0000 fix: DO-470 added the variable --- ansible/inventory/env/group_vars/env.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/ansible/inventory/env/group_vars/env.yml b/ansible/inventory/env/group_vars/env.yml index 66e893e27a..26fbb1d38f 100644 --- a/ansible/inventory/env/group_vars/env.yml +++ b/ansible/inventory/env/group_vars/env.yml @@ -6,6 +6,7 @@ proxy_site_crt: "{{ core_vault_proxy_site_crt }}" #SSL certificate's site.crt f sunbird_pg_user: "{{core_vault_postgres_username}}" application_postgres_user: "{{core_vault_postgres_username}}" keycloak_postgres_user: "{{core_vault_postgres_username}}" +keycloak_postgres_password: "{{core_vault_postgres_password}}" kong_postgres_user: "{{core_vault_postgres_username}}" kong_postgres_password: "{{core_vault_postgres_password}}" enc_postgres_user: "{{core_vault_postgres_username}}" From beb9405f1ca41e7721bcd73c98276a7fb4d49ada Mon Sep 17 00:00:00 2001 From: Kartish Date: Mon, 4 Feb 2019 11:00:51 +0530 Subject: [PATCH 0895/1345] Issue #0000 fix: keycloak realm jenkinfile update --- pipelines/deploy/keycloak_realm/Jenkinsfile | 63 +++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 pipelines/deploy/keycloak_realm/Jenkinsfile diff --git a/pipelines/deploy/keycloak_realm/Jenkinsfile b/pipelines/deploy/keycloak_realm/Jenkinsfile new file mode 100644 index 0000000000..d83350c8a0 --- /dev/null +++ b/pipelines/deploy/keycloak_realm/Jenkinsfile @@ -0,0 +1,63 @@ +@Library('deploy-conf') _ +node() { + try { + String ANSI_GREEN = "\u001B[32m" + String ANSI_NORMAL = "\u001B[0m" + String ANSI_BOLD = "\u001B[1m" + String ANSI_RED = "\u001B[31m" + String ANSI_YELLOW = "\u001B[33m" + + stage('checkout public repo') { + cleanWs() + checkout scm + } + + ansiColor('xterm') { + def values = lp_dp_params() + stage('get artifact') { + currentWs = sh(returnStdout: true, script: 'pwd').trim() + artifact = values.artifact_name + ":" + values.artifact_version + values.put('currentWs', currentWs) + if (params.artifact_source == "Remote") { + println(ANSI_BOLD + ANSI_YELLOW + '''\ + Option chosen is Remote, ignoring any previously copied artifacts and new artifacts will be downloaded from remote source + '''.stripIndent().replace("\n", " ") + ANSI_NORMAL) + ansiblePlaybook = "${currentWs}/devops/artifacts-download.yml" + ansibleExtraArgs = """\ + --extra-vars "artifact=${artifact} + artifact_path=${currentWs}/${artifact}" + --vault-password-file /home/ops/vault + """.stripIndent().replace("\n", " ") + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + ansible_playbook_run(values) + } else { + println(ANSI_BOLD + ANSI_YELLOW + '''\ + Option chosen is Local, using the artifacts copied + '''.stripIndent().replace("\n", " ") + ANSI_NORMAL) + } + } + stage('deploy artifact') { + sh """ + unzip ${artifact} + tar zxvf keycloak_build.tar.gz -C ansible + """ + ansiblePlaybook = "${currentWs}/ansible/keycloak.yml" + ansibleExtraArgs = "--tags keycloak-bootstrap --vault-password-file /run/secrets/vault-pass" + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + println values + ansible_playbook_run(values) + + archiveArtifacts artifacts: "${artifact}", fingerprint: true, onlyIfSuccessful: true + archiveArtifacts artifacts: 'metadata.json', onlyIfSuccessful: true + currentBuild.description = "${values.artifact_version}" + } + } + } + catch (err) { + currentBuild.result = "FAILURE" + throw err + } +} + From 2d42dc796d9d8b4fd9a7a4fa579e5b981f76eaa2 Mon Sep 17 00:00:00 2001 From: "kaliraja.ramasamy" Date: Mon, 4 Feb 2019 11:10:01 +0530 Subject: [PATCH 0896/1345] Issue #0000 fix: DO-470 added the variable --- ansible/inventory/env/group_vars/env.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/ansible/inventory/env/group_vars/env.yml b/ansible/inventory/env/group_vars/env.yml index 26fbb1d38f..a20dae558d 100644 --- a/ansible/inventory/env/group_vars/env.yml +++ b/ansible/inventory/env/group_vars/env.yml @@ -7,6 +7,7 @@ sunbird_pg_user: "{{core_vault_postgres_username}}" application_postgres_user: "{{core_vault_postgres_username}}" keycloak_postgres_user: "{{core_vault_postgres_username}}" keycloak_postgres_password: "{{core_vault_postgres_password}}" +badger_postgres_password: "{{core_vault_postgres_password}}" kong_postgres_user: "{{core_vault_postgres_username}}" kong_postgres_password: "{{core_vault_postgres_password}}" enc_postgres_user: "{{core_vault_postgres_username}}" From f750c49376a78d42a159fb251b3799d46d1f7ce2 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Mon, 4 Feb 2019 11:20:26 +0530 Subject: [PATCH 0897/1345] Rename pipelines/deploy/keycloak_realm/Jenkinsfile to pipelines/deploy/keycloak-realm/Jenkinsfile --- pipelines/deploy/{keycloak_realm => keycloak-realm}/Jenkinsfile | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename pipelines/deploy/{keycloak_realm => keycloak-realm}/Jenkinsfile (100%) diff --git a/pipelines/deploy/keycloak_realm/Jenkinsfile b/pipelines/deploy/keycloak-realm/Jenkinsfile similarity index 100% rename from pipelines/deploy/keycloak_realm/Jenkinsfile rename to pipelines/deploy/keycloak-realm/Jenkinsfile From bb6b091974c4406df4c6a25f820bb5a87955b9b8 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Mon, 4 Feb 2019 11:43:12 +0530 Subject: [PATCH 0898/1345] Rename pipelines/bootstrap_swarm/Jenkinsfile to pipelines/bootstrap-swarm/Jenkinsfile --- pipelines/{bootstrap_swarm => bootstrap-swarm}/Jenkinsfile | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename pipelines/{bootstrap_swarm => bootstrap-swarm}/Jenkinsfile (100%) diff --git a/pipelines/bootstrap_swarm/Jenkinsfile b/pipelines/bootstrap-swarm/Jenkinsfile similarity index 100% rename from pipelines/bootstrap_swarm/Jenkinsfile rename to pipelines/bootstrap-swarm/Jenkinsfile From e02628460dc1a3f0e03970d6cdaf20a0b7eb7966 Mon Sep 17 00:00:00 2001 From: harshavardhnc Date: Mon, 4 Feb 2019 11:45:24 +0530 Subject: [PATCH 0899/1345] Issue #0000: image name fix --- ansible/roles/stack-proxy/tasks/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/stack-proxy/tasks/main.yml b/ansible/roles/stack-proxy/tasks/main.yml index 82ac27d507..17624d52c8 100644 --- a/ansible/roles/stack-proxy/tasks/main.yml +++ b/ansible/roles/stack-proxy/tasks/main.yml @@ -73,7 +73,7 @@ - name: Save proxy-default.conf as docker config shell: "docker config create proxy-default.conf /home/deployer/config/proxy-default.conf" -- debug: msg="Image details= {{hub_org}}:{{image_name}}:{{image_tag}}" +- debug: msg="Image details= {{hub_org}}/{{image_name}}:{{image_tag}}" - debug: msg="server name= {{proxy_server_name}}" From 26045786d4109307fa241274e2960543d4d08493 Mon Sep 17 00:00:00 2001 From: harshavardhnc Date: Mon, 4 Feb 2019 12:41:25 +0530 Subject: [PATCH 0900/1345] Issue #DO-470 feat: Updated stack sunbird --- ansible/roles/stack-proxy/tasks/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/stack-proxy/tasks/main.yml b/ansible/roles/stack-proxy/tasks/main.yml index 17624d52c8..8f8ac81c52 100644 --- a/ansible/roles/stack-proxy/tasks/main.yml +++ b/ansible/roles/stack-proxy/tasks/main.yml @@ -78,6 +78,6 @@ - debug: msg="server name= {{proxy_server_name}}" - name: Deploy stack - shell: "docker stack deploy -c proxy.yml proxy" + shell: "docker stack deploy -c proxy.yml proxy --with-auth" args: chdir: /home/deployer/stack From d64a11c72f766558b9ec3af080738b725e5277fb Mon Sep 17 00:00:00 2001 From: harshavardhnc Date: Mon, 4 Feb 2019 12:43:40 +0530 Subject: [PATCH 0901/1345] Adding with-registry-auth --- ansible/roles/stack-proxy/tasks/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/stack-proxy/tasks/main.yml b/ansible/roles/stack-proxy/tasks/main.yml index 8f8ac81c52..8d3b71e45b 100644 --- a/ansible/roles/stack-proxy/tasks/main.yml +++ b/ansible/roles/stack-proxy/tasks/main.yml @@ -78,6 +78,6 @@ - debug: msg="server name= {{proxy_server_name}}" - name: Deploy stack - shell: "docker stack deploy -c proxy.yml proxy --with-auth" + shell: "docker stack deploy -c proxy.yml proxy --with-registry-auth" args: chdir: /home/deployer/stack From 6e24b93b25f572fdbd43c10790dd145df4013884 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Mon, 4 Feb 2019 12:43:55 +0530 Subject: [PATCH 0902/1345] feat: DO-509 Adding prom backup file --- .../backup/prometheus-backup/Jenkinsfile | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 pipelines/backup/prometheus-backup/Jenkinsfile diff --git a/pipelines/backup/prometheus-backup/Jenkinsfile b/pipelines/backup/prometheus-backup/Jenkinsfile new file mode 100644 index 0000000000..5226d4a466 --- /dev/null +++ b/pipelines/backup/prometheus-backup/Jenkinsfile @@ -0,0 +1,38 @@ +@Library('deploy-conf') _ +node() { + try { + String ANSI_GREEN = "\u001B[32m" + String ANSI_NORMAL = "\u001B[0m" + String ANSI_BOLD = "\u001B[1m" + String ANSI_RED = "\u001B[31m" + String ANSI_YELLOW = "\u001B[33m" + + stage('checkout public repo') { + cleanWs() + checkout scm + } + + ansiColor('xterm') { + stage('deploy'){ + values = [:] + envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-3].trim() + module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() + jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() + currentWs = sh(returnStdout: true, script: 'pwd').trim() + ansiblePlaybook = "${currentWs}/devops/prometheus-backup.yml" + ansibleExtraArgs = "--vault-password-file /home/ops/vault" + values.put('currentWs', currentWs) + values.put('env', envDir) + values.put('module', module) + values.put('jobName', jobName) + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + println values + ansible_playbook_run(values) + } + } + } + catch (err) { + throw err + } +} From 6780c30cd5e8a96e8544f8b0bd90e17c60bcc4c8 Mon Sep 17 00:00:00 2001 From: harshavardhnc Date: Mon, 4 Feb 2019 12:52:01 +0530 Subject: [PATCH 0903/1345] Issue #DO-470 feat: Added docker login --- ansible/roles/stack-proxy/tasks/main.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/ansible/roles/stack-proxy/tasks/main.yml b/ansible/roles/stack-proxy/tasks/main.yml index 8d3b71e45b..be3f9b020f 100644 --- a/ansible/roles/stack-proxy/tasks/main.yml +++ b/ansible/roles/stack-proxy/tasks/main.yml @@ -73,6 +73,11 @@ - name: Save proxy-default.conf as docker config shell: "docker config create proxy-default.conf /home/deployer/config/proxy-default.conf" +- name: Login to docker + shell: "docker login {{ vault_docker_registery_url }} -u {{ vault_docker_registery_user }} -p {{ vault_docker_registery_password }}" + no_log: True + ignore_errors: yes + - debug: msg="Image details= {{hub_org}}/{{image_name}}:{{image_tag}}" - debug: msg="server name= {{proxy_server_name}}" From 1083a248c49fead5e237aebbf82b1ff747c95efb Mon Sep 17 00:00:00 2001 From: Kartish Date: Mon, 4 Feb 2019 13:04:29 +0530 Subject: [PATCH 0904/1345] Issue #0000 fix: keycloak bootstrap --- ansible/roles/keycloak/tasks/keycloak_bootstrap.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/ansible/roles/keycloak/tasks/keycloak_bootstrap.yml b/ansible/roles/keycloak/tasks/keycloak_bootstrap.yml index 27ea05bc68..b1af0b3c92 100644 --- a/ansible/roles/keycloak/tasks/keycloak_bootstrap.yml +++ b/ansible/roles/keycloak/tasks/keycloak_bootstrap.yml @@ -1,5 +1,6 @@ - name: Waiting Until Keycloak is fully functional wait_for: + host: {{ inventory_hostname }} port: 8080 delay: 5 From f3c32ca0be8927b82ae3879eec1761fd27308824 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Mon, 4 Feb 2019 13:04:29 +0530 Subject: [PATCH 0905/1345] Issue #000 feat: Added login and deploy together --- ansible/roles/stack-proxy/tasks/main.yml | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/ansible/roles/stack-proxy/tasks/main.yml b/ansible/roles/stack-proxy/tasks/main.yml index be3f9b020f..5e37ac677c 100644 --- a/ansible/roles/stack-proxy/tasks/main.yml +++ b/ansible/roles/stack-proxy/tasks/main.yml @@ -73,16 +73,9 @@ - name: Save proxy-default.conf as docker config shell: "docker config create proxy-default.conf /home/deployer/config/proxy-default.conf" -- name: Login to docker - shell: "docker login {{ vault_docker_registery_url }} -u {{ vault_docker_registery_user }} -p {{ vault_docker_registery_password }}" - no_log: True - ignore_errors: yes - -- debug: msg="Image details= {{hub_org}}/{{image_name}}:{{image_tag}}" - -- debug: msg="server name= {{proxy_server_name}}" - - name: Deploy stack - shell: "docker stack deploy -c proxy.yml proxy --with-registry-auth" + shell: | + docker login {{ vault_docker_registery_url }} -u {{ vault_docker_registery_user }} -p {{ vault_docker_registery_password }} + docker stack deploy -c proxy.yml proxy --with-registry-auth" args: chdir: /home/deployer/stack From ace31216e92eb2632e94f1ed41e646956c53d870 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Mon, 4 Feb 2019 13:07:11 +0530 Subject: [PATCH 0906/1345] Issue #000 feat: Updated registry variable name --- ansible/roles/stack-proxy/tasks/main.yml | 2 +- ansible/roles/stack-sunbird/tasks/common.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ansible/roles/stack-proxy/tasks/main.yml b/ansible/roles/stack-proxy/tasks/main.yml index 5e37ac677c..4055ce1126 100644 --- a/ansible/roles/stack-proxy/tasks/main.yml +++ b/ansible/roles/stack-proxy/tasks/main.yml @@ -75,7 +75,7 @@ - name: Deploy stack shell: | - docker login {{ vault_docker_registery_url }} -u {{ vault_docker_registery_user }} -p {{ vault_docker_registery_password }} + docker login {{ vault_docker_registry_url }} -u {{ vault_docker_registry_user }} -p {{ vault_docker_registry_password }} docker stack deploy -c proxy.yml proxy --with-registry-auth" args: chdir: /home/deployer/stack diff --git a/ansible/roles/stack-sunbird/tasks/common.yml b/ansible/roles/stack-sunbird/tasks/common.yml index 616262fe71..45a1ceafe0 100644 --- a/ansible/roles/stack-sunbird/tasks/common.yml +++ b/ansible/roles/stack-sunbird/tasks/common.yml @@ -1,6 +1,6 @@ --- - name: Login to docker - shell: "docker login {{ vault_docker_registery_url }} -u {{ vault_docker_registery_user }} -p {{ vault_docker_registery_password }}" + shell: "docker login {{ vault_docker_registry_url }} -u {{ vault_docker_registry_user }} -p {{ vault_docker_registry_password }}" no_log: True ignore_errors: yes From ac0aaa7c93e38ae5339f19296ab5a195ffa47829 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Mon, 4 Feb 2019 13:11:19 +0530 Subject: [PATCH 0907/1345] Issue #000 feat: Updated variable name for proxy --- ansible/roles/stack-proxy/tasks/main.yml | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/ansible/roles/stack-proxy/tasks/main.yml b/ansible/roles/stack-proxy/tasks/main.yml index 4055ce1126..71bdeac681 100644 --- a/ansible/roles/stack-proxy/tasks/main.yml +++ b/ansible/roles/stack-proxy/tasks/main.yml @@ -73,9 +73,16 @@ - name: Save proxy-default.conf as docker config shell: "docker config create proxy-default.conf /home/deployer/config/proxy-default.conf" +- name: Login to docker + shell: "docker login {{ vault_docker_registry_url }} -u {{ vault_docker_registry_user }} -p {{ vault_docker_registry_password }}" + no_log: True + ignore_errors: yes + +- debug: msg="Image details= {{hub_org}}/{{image_name}}:{{image_tag}}" + +- debug: msg="server name= {{proxy_server_name}}" + - name: Deploy stack - shell: | - docker login {{ vault_docker_registry_url }} -u {{ vault_docker_registry_user }} -p {{ vault_docker_registry_password }} - docker stack deploy -c proxy.yml proxy --with-registry-auth" + shell: "docker stack deploy -c proxy.yml proxy --with-registry-auth" args: chdir: /home/deployer/stack From 89cc14cbb4c190040e6a5e29839eedd71151786f Mon Sep 17 00:00:00 2001 From: Kartish Date: Mon, 4 Feb 2019 13:11:45 +0530 Subject: [PATCH 0908/1345] Issue #0000 fix: keycloak bootstrap --- ansible/roles/keycloak/tasks/keycloak_bootstrap.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/keycloak/tasks/keycloak_bootstrap.yml b/ansible/roles/keycloak/tasks/keycloak_bootstrap.yml index b1af0b3c92..81f6067ca9 100644 --- a/ansible/roles/keycloak/tasks/keycloak_bootstrap.yml +++ b/ansible/roles/keycloak/tasks/keycloak_bootstrap.yml @@ -1,6 +1,6 @@ - name: Waiting Until Keycloak is fully functional wait_for: - host: {{ inventory_hostname }} + host: "{{ inventory_hostname }}" port: 8080 delay: 5 From ae83d2dabf098d3fd2b97d5b0819716b0f8f2b8e Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Mon, 4 Feb 2019 13:30:47 +0530 Subject: [PATCH 0909/1345] feat: DO-509 Updated code for summary job --- pipelines/summary/Jenkinsfile | 88 ++++++++++++++++------------------- 1 file changed, 39 insertions(+), 49 deletions(-) diff --git a/pipelines/summary/Jenkinsfile b/pipelines/summary/Jenkinsfile index 96193ae1ab..502dd7934b 100644 --- a/pipelines/summary/Jenkinsfile +++ b/pipelines/summary/Jenkinsfile @@ -1,66 +1,56 @@ node(){ - cleanWs() - stage('check upstream') + cleanWs() + stage('check upstream') { + values = [:] + def upstream = currentBuild.rawBuild.getCause(hudson.model.Cause$UpstreamCause) + triggerCause = upstream?.shortDescription + if (triggerCause != null) + triggerCause = triggerCause.split()[4].replaceAll('"', '') + values.put('absolute_job_path', triggerCause) + } + + stage('Write data') { - pipelineParams = [:] - def upstream = currentBuild.rawBuild.getCause(hudson.model.Cause$UpstreamCause) - triggerCause = upstream?.shortDescription - println triggerCause - } - - stage('Do stuff') - { - if (triggerCause != null) + if (values.absolute_job_path != null) { - triggerCause = triggerCause.split()[4].replaceAll('"', '') - pipelineParams.put('copy_metadata_from', triggerCause) - println triggerCause - println pipelineParams - def envDir = triggerCause.split('/')[-3].toString().trim() - def module = triggerCause.split('/')[-2].toString().trim() - def jobName = triggerCause.split('/')[-1].toString().trim() + def envDir = values.absolute_job_path.split('/')[-3].toString().trim() + def module = values.absolute_job_path.split('/')[-2].toString().trim() + def jobName = values.absolute_job_path.split('/')[-1].toString().trim() println envDir + " " + module + " " + jobName - copyArtifacts projectName: pipelineParams.copy_metadata_from, fingerprintArtifacts: true, flatten: true, filter: 'metadata.json' + copyArtifacts projectName: values.absolute_job_path, fingerprintArtifacts: true, flatten: true, filter: 'metadata.json' + + sh """ + mkdir - p ${JENKINS_HOME}/summary/${envDir} + touch - a ${JENKINS_HOME}/summary/${envDir}/summary.txt + sed - i "s/${jobName}.*//g" ${JENKINS_HOME}/summary/${envDir}/summary.txt + sed - i "/^\\\$/d" ${JENKINS_HOME}/summary/$envDir}/summary.txt + """ - if (module.equals("Core")){ + if (module == "Core"){ image_name = sh(returnStdout: true, script: 'jq -r .image_name metadata.json').trim() image_tag = sh(returnStdout: true, script: 'jq -r .image_tag metadata.json').trim() println image_name + " " + image_tag - } - else - artifact_version = sh(returnStdout: true, script: 'jq -r .artifact_version metadata.json').trim() - - if (pipelineParams.image_tag == null){ - sh """ - mkdir -p $JENKINS_HOME/summary/${envDir} - touch -a $JENKINS_HOME/summary/${envDir}/summary.txt - sed -i "s/${jobName}.*//g" $JENKINS_HOME/summary/${envDir}/summary.txt - sed -i "/^\$/d" $JENKINS_HOME/summary/${envDir}/summary.txt - echo "${jobName} : ${artifact_version}" >> $JENKINS_HOME/summary/${envDir}/summary.txt + sh """ + echo "${image_name} : ${image_tag}" >> $JENKINS_HOME/summary/${envDir}/summary.txt """ } - - if (pipelineParams.image_tag != null){ - sh """ - mkdir -p $JENKINS_HOME/summary/${envDir} - touch -a $JENKINS_HOME/summary/${envDir}/summary.txt - sed -i "s/${image_name}.*//g" $JENKINS_HOME/summary/${envDir}/summary.txt - sed -i "/^\$/d" $JENKINS_HOME/summary/${envDir}/summary.txt - echo "${image_name} : ${image_tag}" >> $JENKINS_HOME/summary/${envDir}/summary.txt + else { + artifact_version = sh(returnStdout: true, script: 'jq -r .artifact_version metadata.json').trim() + println artifact_version + sh """ + echo "${jobName} : ${artifact_version}" >> $JENKINS_HOME/summary/${envDir}/summary.txt """ } -/* stage('Archive artifacts'){ - archiveArtifacts artifacts: "$JENKINS_HOME/summary/${envDir}/summary.txt", fingerprint: true, onlyIfSuccessful: true - - }*/ - - - } + stage('Archive artifacts'){ + sh "cp ${JENKINS_HOME}/summary/${envDir}/summary.txt ." + archiveArtifacts artifacts: 'summary.txt', fingerprint: true, onlyIfSuccessful: true + } + } else - println "This job can be only triggered from an upstream project" + println "This job can be only triggered from an upstream project" + + } - } - } From 7eb9b628327166da1a7fc1189f49b333418838de Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Mon, 4 Feb 2019 13:36:42 +0530 Subject: [PATCH 0910/1345] Issue#000: Update variable name --- ansible/roles/stack-badger/tasks/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/stack-badger/tasks/main.yml b/ansible/roles/stack-badger/tasks/main.yml index a178102283..bff06bdd1c 100644 --- a/ansible/roles/stack-badger/tasks/main.yml +++ b/ansible/roles/stack-badger/tasks/main.yml @@ -1,6 +1,6 @@ --- - name: Login to docker - shell: "docker login {{ vault_docker_registery_url }} -u {{ vault_docker_registery_user }} -p {{ vault_docker_registory }}" + shell: "docker login {{ vault_docker_registry_url }} -u {{ vault_docker_registry_user }} -p {{ vault_docker_registry }}" become: yes no_log: True ignore_errors: yes From 196dcb97756490b14594e9d124de694d20f039e2 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Mon, 4 Feb 2019 13:38:54 +0530 Subject: [PATCH 0911/1345] Issue #000: Updating variable name --- ansible/roles/stack-badger/tasks/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/stack-badger/tasks/main.yml b/ansible/roles/stack-badger/tasks/main.yml index bff06bdd1c..7f6098f20b 100644 --- a/ansible/roles/stack-badger/tasks/main.yml +++ b/ansible/roles/stack-badger/tasks/main.yml @@ -1,6 +1,6 @@ --- - name: Login to docker - shell: "docker login {{ vault_docker_registry_url }} -u {{ vault_docker_registry_user }} -p {{ vault_docker_registry }}" + shell: "docker login {{ vault_docker_registry_url }} -u {{ vault_docker_registry_user }} -p {{ vault_docker_registry_password }}" become: yes no_log: True ignore_errors: yes From 1f54d472d3a617e72dae5f6a7e036ae48b6948e5 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Mon, 4 Feb 2019 13:45:41 +0530 Subject: [PATCH 0912/1345] Issue# 000: Type in mkdir and touch --- pipelines/summary/Jenkinsfile | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/pipelines/summary/Jenkinsfile b/pipelines/summary/Jenkinsfile index 502dd7934b..978f2ce609 100644 --- a/pipelines/summary/Jenkinsfile +++ b/pipelines/summary/Jenkinsfile @@ -21,8 +21,8 @@ node(){ copyArtifacts projectName: values.absolute_job_path, fingerprintArtifacts: true, flatten: true, filter: 'metadata.json' sh """ - mkdir - p ${JENKINS_HOME}/summary/${envDir} - touch - a ${JENKINS_HOME}/summary/${envDir}/summary.txt + mkdir -p ${JENKINS_HOME}/summary/${envDir} + touch -a ${JENKINS_HOME}/summary/${envDir}/summary.txt sed - i "s/${jobName}.*//g" ${JENKINS_HOME}/summary/${envDir}/summary.txt sed - i "/^\\\$/d" ${JENKINS_HOME}/summary/$envDir}/summary.txt """ @@ -52,5 +52,4 @@ node(){ println "This job can be only triggered from an upstream project" } - } From ac01d63f56109cc827b194a0854fef695b02f4e1 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Mon, 4 Feb 2019 13:46:57 +0530 Subject: [PATCH 0913/1345] Issue #000: Typo in sed --- pipelines/summary/Jenkinsfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pipelines/summary/Jenkinsfile b/pipelines/summary/Jenkinsfile index 978f2ce609..0283d8c4cd 100644 --- a/pipelines/summary/Jenkinsfile +++ b/pipelines/summary/Jenkinsfile @@ -23,8 +23,8 @@ node(){ sh """ mkdir -p ${JENKINS_HOME}/summary/${envDir} touch -a ${JENKINS_HOME}/summary/${envDir}/summary.txt - sed - i "s/${jobName}.*//g" ${JENKINS_HOME}/summary/${envDir}/summary.txt - sed - i "/^\\\$/d" ${JENKINS_HOME}/summary/$envDir}/summary.txt + sed -i "s/${jobName}.*//g" ${JENKINS_HOME}/summary/${envDir}/summary.txt + sed -i "/^\\\$/d" ${JENKINS_HOME}/summary/$envDir}/summary.txt """ if (module == "Core"){ From 70ceb6222c53e4a75f625cbdd248e7ed47506a5d Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Mon, 4 Feb 2019 13:48:03 +0530 Subject: [PATCH 0914/1345] Issue #000: Typo braces --- pipelines/summary/Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pipelines/summary/Jenkinsfile b/pipelines/summary/Jenkinsfile index 0283d8c4cd..e7602249b1 100644 --- a/pipelines/summary/Jenkinsfile +++ b/pipelines/summary/Jenkinsfile @@ -24,7 +24,7 @@ node(){ mkdir -p ${JENKINS_HOME}/summary/${envDir} touch -a ${JENKINS_HOME}/summary/${envDir}/summary.txt sed -i "s/${jobName}.*//g" ${JENKINS_HOME}/summary/${envDir}/summary.txt - sed -i "/^\\\$/d" ${JENKINS_HOME}/summary/$envDir}/summary.txt + sed -i "/^\\\$/d" ${JENKINS_HOME}/summary/${envDir}/summary.txt """ if (module == "Core"){ From 512d749719cd244a520844acfa256e505c2247b6 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Mon, 4 Feb 2019 13:51:05 +0530 Subject: [PATCH 0915/1345] feat: DO-509 Always archive --- pipelines/summary/Jenkinsfile | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/pipelines/summary/Jenkinsfile b/pipelines/summary/Jenkinsfile index e7602249b1..b36dff64c9 100644 --- a/pipelines/summary/Jenkinsfile +++ b/pipelines/summary/Jenkinsfile @@ -23,8 +23,8 @@ node(){ sh """ mkdir -p ${JENKINS_HOME}/summary/${envDir} touch -a ${JENKINS_HOME}/summary/${envDir}/summary.txt - sed -i "s/${jobName}.*//g" ${JENKINS_HOME}/summary/${envDir}/summary.txt - sed -i "/^\\\$/d" ${JENKINS_HOME}/summary/${envDir}/summary.txt + sed - i "s/${jobName}.*//g" ${JENKINS_HOME}/summary/${envDir}/summary.txt + sed - i "/^\\\$/d" ${JENKINS_HOME}/summary/$envDir}/summary.txt """ if (module == "Core"){ @@ -42,14 +42,15 @@ node(){ echo "${jobName} : ${artifact_version}" >> $JENKINS_HOME/summary/${envDir}/summary.txt """ } - - stage('Archive artifacts'){ - sh "cp ${JENKINS_HOME}/summary/${envDir}/summary.txt ." - archiveArtifacts artifacts: 'summary.txt', fingerprint: true, onlyIfSuccessful: true - } } else println "This job can be only triggered from an upstream project" } + + stage('Archive artifacts'){ + sh "cp ${JENKINS_HOME}/summary/${envDir}/summary.txt ." + archiveArtifacts artifacts: 'summary.txt', fingerprint: true, onlyIfSuccessful: true + } + } From a6799039906ecaab7f8e17114c5b1a4c352d5820 Mon Sep 17 00:00:00 2001 From: harshavardhnc Date: Mon, 4 Feb 2019 13:59:05 +0530 Subject: [PATCH 0916/1345] Issue #0000 fix: updated player cache config var --- ansible/inventory/env/group_vars/env.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/inventory/env/group_vars/env.yml b/ansible/inventory/env/group_vars/env.yml index a20dae558d..760f19e201 100644 --- a/ansible/inventory/env/group_vars/env.yml +++ b/ansible/inventory/env/group_vars/env.yml @@ -109,7 +109,7 @@ sunbird_session_store_type: cassandra sunbird_keycloak_client_id: 'portal' sunbird_keycloak_public: true sunbird_cache_store: "memory" -sunbird_cache_ttl: 1800 +sunbird_cache_ttl: {{config_cache_ttl}} sunbird_portal_title_name: portal sunbird_web_url: "{{proto}}://{{ proxy_server_name }}" sunbird_sso_publickey: "{{core_vault_sunbird_sso_publickey}}" From a9dca5059cce1497f29150dece803fa88b14bf12 Mon Sep 17 00:00:00 2001 From: harshavardhnc Date: Mon, 4 Feb 2019 14:02:34 +0530 Subject: [PATCH 0917/1345] Issue #0000 fix: updated player cache config var --- ansible/inventory/env/group_vars/env.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/inventory/env/group_vars/env.yml b/ansible/inventory/env/group_vars/env.yml index 760f19e201..074e6fa3b6 100644 --- a/ansible/inventory/env/group_vars/env.yml +++ b/ansible/inventory/env/group_vars/env.yml @@ -109,7 +109,7 @@ sunbird_session_store_type: cassandra sunbird_keycloak_client_id: 'portal' sunbird_keycloak_public: true sunbird_cache_store: "memory" -sunbird_cache_ttl: {{config_cache_ttl}} +sunbird_cache_ttl: "{{config_cache_ttl}}" sunbird_portal_title_name: portal sunbird_web_url: "{{proto}}://{{ proxy_server_name }}" sunbird_sso_publickey: "{{core_vault_sunbird_sso_publickey}}" From 324e4b3030479ff3fd6c073c67eec48828a85da7 Mon Sep 17 00:00:00 2001 From: "kaliraja.ramasamy" Date: Mon, 4 Feb 2019 14:25:21 +0530 Subject: [PATCH 0918/1345] Issue #0000 fix: DO-470 added the jenkinsfile --- .../provision/postgres/Jenkinsfile.db.update | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 pipelines/provision/postgres/Jenkinsfile.db.update diff --git a/pipelines/provision/postgres/Jenkinsfile.db.update b/pipelines/provision/postgres/Jenkinsfile.db.update new file mode 100644 index 0000000000..fe1989e511 --- /dev/null +++ b/pipelines/provision/postgres/Jenkinsfile.db.update @@ -0,0 +1,38 @@ +@Library('deploy-conf') _ +node() { + try { + String ANSI_GREEN = "\u001B[32m" + String ANSI_NORMAL = "\u001B[0m" + String ANSI_BOLD = "\u001B[1m" + String ANSI_RED = "\u001B[31m" + String ANSI_YELLOW = "\u001B[33m" + + stage('checkout public repo') { + cleanWs() + checkout scm + } + + ansiColor('xterm') { + stage('deploy'){ + values = [:] + currentWs = sh(returnStdout: true, script: 'pwd').trim() + envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-3].trim() + module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() + jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() + ansiblePlaybook = "${currentWs}/ansible/postgresql-data-update.yml" + ansibleExtraArgs = "--vault-password-file /run/secrets/vault-pass -v" + values.put('currentWs', currentWs) + values.put('env', envDir) + values.put('module', module) + values.put('jobName', jobName) + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + println values + ansible_playbook_run(values) + } + } + } + catch (err) { + throw err + } +} From 252e3f4fd281282c99c2298bd470b6efd7c9cf26 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Mon, 4 Feb 2019 14:45:40 +0530 Subject: [PATCH 0919/1345] Issue#000: Always archive, get dir of summary job --- pipelines/summary/Jenkinsfile | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/pipelines/summary/Jenkinsfile b/pipelines/summary/Jenkinsfile index b36dff64c9..07996cd641 100644 --- a/pipelines/summary/Jenkinsfile +++ b/pipelines/summary/Jenkinsfile @@ -11,11 +11,11 @@ node(){ stage('Write data') { + envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-3].trim() if (values.absolute_job_path != null) { - def envDir = values.absolute_job_path.split('/')[-3].toString().trim() - def module = values.absolute_job_path.split('/')[-2].toString().trim() - def jobName = values.absolute_job_path.split('/')[-1].toString().trim() + module = values.absolute_job_path.split('/')[-2].toString().trim() + jobName = values.absolute_job_path.split('/')[-1].toString().trim() println envDir + " " + module + " " + jobName copyArtifacts projectName: values.absolute_job_path, fingerprintArtifacts: true, flatten: true, filter: 'metadata.json' @@ -39,12 +39,12 @@ node(){ artifact_version = sh(returnStdout: true, script: 'jq -r .artifact_version metadata.json').trim() println artifact_version sh """ - echo "${jobName} : ${artifact_version}" >> $JENKINS_HOME/summary/${envDir}/summary.txt + echo "${module}-${jobName} : ${artifact_version}" >> $JENKINS_HOME/summary/${envDir}/summary.txt """ } } else - println "This job can be only triggered from an upstream project" + println "This job can be only triggered from an upstream project." } From 2083b2e75d050ce45136ca74411012253791f96f Mon Sep 17 00:00:00 2001 From: Kartish Date: Mon, 4 Feb 2019 14:53:23 +0530 Subject: [PATCH 0920/1345] Issue #0000 fix: keycloak bootstrap --- ansible/inventory/env/group_vars/env.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/ansible/inventory/env/group_vars/env.yml b/ansible/inventory/env/group_vars/env.yml index 074e6fa3b6..6deb53fdef 100644 --- a/ansible/inventory/env/group_vars/env.yml +++ b/ansible/inventory/env/group_vars/env.yml @@ -460,3 +460,7 @@ badger_limit_memory: 500MB # not required sunbird_image_storage_url: "" + +## +config_refresh_interval: 10 +config_service_enabled: false From 02b8595e63bfe8b6bf14095355cc38db975bc82e Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Mon, 4 Feb 2019 14:57:11 +0530 Subject: [PATCH 0921/1345] Issue #000: Sed typo --- pipelines/summary/Jenkinsfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pipelines/summary/Jenkinsfile b/pipelines/summary/Jenkinsfile index 07996cd641..8279640cd0 100644 --- a/pipelines/summary/Jenkinsfile +++ b/pipelines/summary/Jenkinsfile @@ -23,8 +23,8 @@ node(){ sh """ mkdir -p ${JENKINS_HOME}/summary/${envDir} touch -a ${JENKINS_HOME}/summary/${envDir}/summary.txt - sed - i "s/${jobName}.*//g" ${JENKINS_HOME}/summary/${envDir}/summary.txt - sed - i "/^\\\$/d" ${JENKINS_HOME}/summary/$envDir}/summary.txt + sed -i "s/${jobName}.*//g" ${JENKINS_HOME}/summary/${envDir}/summary.txt + sed -i "/^\\\$/d" ${JENKINS_HOME}/summary/$envDir}/summary.txt """ if (module == "Core"){ From 339a17e33c54afff131e5c46cde8578cee32a1af Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Mon, 4 Feb 2019 14:57:24 +0530 Subject: [PATCH 0922/1345] Delete Jenkinsfile.list --- pipelines/summary/Jenkinsfile.list | 12 ------------ 1 file changed, 12 deletions(-) delete mode 100644 pipelines/summary/Jenkinsfile.list diff --git a/pipelines/summary/Jenkinsfile.list b/pipelines/summary/Jenkinsfile.list deleted file mode 100644 index 242e38eebd..0000000000 --- a/pipelines/summary/Jenkinsfile.list +++ /dev/null @@ -1,12 +0,0 @@ -node(){ - - stage('get-env-name'){ - - jobpath = "$JOB_NAME" - println jobpath - def envDir = jobpath.split('/')[-3].toString().trim() - println envDir - sh '$JENKINS_HOME/summary/${envDir}/summary.txt | column -t' - } - -} From 6cf3b8af5c1b57f40f34bd48df88ff84369f22f1 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Mon, 4 Feb 2019 15:00:52 +0530 Subject: [PATCH 0923/1345] Issue #000: Updating cassandra values map --- pipelines/deploy/cassandra-deploy/Jenkinsfile | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/pipelines/deploy/cassandra-deploy/Jenkinsfile b/pipelines/deploy/cassandra-deploy/Jenkinsfile index b59bae9bee..b30046bbf1 100644 --- a/pipelines/deploy/cassandra-deploy/Jenkinsfile +++ b/pipelines/deploy/cassandra-deploy/Jenkinsfile @@ -13,7 +13,7 @@ node() { } ansiColor('xterm') { stage('get artifact') { - def values = lp_dp_params() + values = lp_dp_params() currentWs = sh(returnStdout: true, script: 'pwd').trim() artifact = values.artifact_name + ":" + values.artifact_version values.put('currentWs', currentWs) @@ -41,12 +41,11 @@ node() { unzip ${artifact} """ ansiblePlaybook = "${currentWs}/devops/cassandra-deploy.yml" - ansibleExtraArgs = "--vault-password-file /run/secrets/vault-pass" + ansibleExtraArgs = "--vault-password-file /home/ops/vault" values.put('ansiblePlaybook', ansiblePlaybook) values.put('ansibleExtraArgs', ansibleExtraArgs) println values - ansible_playbook_run(values) - + ansible_playbook_run(values) archiveArtifacts artifacts: "${artifact}", fingerprint: true, onlyIfSuccessful: true archiveArtifacts artifacts: 'metadata.json', onlyIfSuccessful: true currentBuild.description = "${values.artifact_version}" From d831592e91040dd3bebc52fca88c5edf863444be Mon Sep 17 00:00:00 2001 From: msknext Date: Mon, 4 Feb 2019 15:06:06 +0530 Subject: [PATCH 0924/1345] feat: DO-509 varible scope --- pipelines/deploy/adminutils/Jenkinsfile | 2 +- pipelines/deploy/api-manager/Jenkinsfile | 2 +- pipelines/deploy/badger/Jenkinsfile | 2 +- pipelines/deploy/cassandra-deploy/Jenkinsfile | 2 +- pipelines/deploy/config-service/Jenkinsfile | 2 +- pipelines/deploy/content/Jenkinsfile | 2 +- pipelines/deploy/keycloak-realm/Jenkinsfile | 2 +- pipelines/deploy/keycloak/Jenkinsfile | 2 +- pipelines/deploy/learner/Jenkinsfile | 2 +- pipelines/deploy/player/Jenkinsfile | 2 +- pipelines/deploy/proxy/Jenkinsfile | 2 +- pipelines/deploy/telemetry/Jenkinsfile | 2 +- pipelines/upload/artifacts/Jenkinsfile | 2 +- pipelines/upload/docker/Jenkinsfile | 2 +- 14 files changed, 14 insertions(+), 14 deletions(-) diff --git a/pipelines/deploy/adminutils/Jenkinsfile b/pipelines/deploy/adminutils/Jenkinsfile index c6aa578cd7..9a89709dc7 100644 --- a/pipelines/deploy/adminutils/Jenkinsfile +++ b/pipelines/deploy/adminutils/Jenkinsfile @@ -6,7 +6,7 @@ node() { checkout scm } stage('deploy') { - def values = docker_params() + values = docker_params() currentWs = sh(returnStdout: true, script: 'pwd').trim() ansiblePlaybook = "$currentWs/ansible/deploy.yml" ansibleExtraArgs = "--tags \"stack-adminutil\" --extra-vars \"hub_org=$hub_org image_name=$values.image_name image_tag=$values.image_tag\" --vault-password-file /home/ops/vault" diff --git a/pipelines/deploy/api-manager/Jenkinsfile b/pipelines/deploy/api-manager/Jenkinsfile index b07fad2336..a88d73628b 100644 --- a/pipelines/deploy/api-manager/Jenkinsfile +++ b/pipelines/deploy/api-manager/Jenkinsfile @@ -6,7 +6,7 @@ node() { checkout scm } stage('deploy') { - def values = docker_params() + values = docker_params() currentWs = sh(returnStdout: true, script: 'pwd').trim() ansiblePlaybook = "$currentWs/ansible/deploy.yml" ansibleExtraArgs = "--tags \"stack-api-manager\" --extra-vars \"hub_org=${hub_org} echo_server_image_name=${values.image_name} echo_server_image_tag=${values.image_tag}\" --vault-password-file /home/ops/vault" diff --git a/pipelines/deploy/badger/Jenkinsfile b/pipelines/deploy/badger/Jenkinsfile index b323f5b662..cd5f592c64 100644 --- a/pipelines/deploy/badger/Jenkinsfile +++ b/pipelines/deploy/badger/Jenkinsfile @@ -7,7 +7,7 @@ node() { } stage('deploy') { - def values = docker_params() + values = docker_params() currentWs = sh(returnStdout: true, script: 'pwd').trim() ansiblePlaybook = "$currentWs/ansible/deploy-badger.yml" ansibleExtraArgs = "--extra-vars \"hub_org=$hub_org image_name=$values.image_name image_tag=$values.image_tag service_name=badger-service\" --vault-password-file /home/ops/vault" diff --git a/pipelines/deploy/cassandra-deploy/Jenkinsfile b/pipelines/deploy/cassandra-deploy/Jenkinsfile index b30046bbf1..634f5d96ce 100644 --- a/pipelines/deploy/cassandra-deploy/Jenkinsfile +++ b/pipelines/deploy/cassandra-deploy/Jenkinsfile @@ -40,7 +40,7 @@ node() { sh """ unzip ${artifact} """ - ansiblePlaybook = "${currentWs}/devops/cassandra-deploy.yml" + ansiblePlaybook = "${currentWs}/ansible/cassandra-deploy.yml" ansibleExtraArgs = "--vault-password-file /home/ops/vault" values.put('ansiblePlaybook', ansiblePlaybook) values.put('ansibleExtraArgs', ansibleExtraArgs) diff --git a/pipelines/deploy/config-service/Jenkinsfile b/pipelines/deploy/config-service/Jenkinsfile index 113906d55b..b16456d098 100644 --- a/pipelines/deploy/config-service/Jenkinsfile +++ b/pipelines/deploy/config-service/Jenkinsfile @@ -7,7 +7,7 @@ node() { } stage('deploy') { - def values = docker_params() + values = docker_params() currentWs = sh(returnStdout: true, script: 'pwd').trim() ansiblePlaybook = "$currentWs/ansible/deploy.yml" ansibleExtraArgs = "--tags \"stack-sunbird\" --extra-vars \"hub_org=$hub_org image_name=$values.image_name image_tag=$values.image_tag service_name=config-service deploy_config=True\" --vault-password-file /home/ops/vault" diff --git a/pipelines/deploy/content/Jenkinsfile b/pipelines/deploy/content/Jenkinsfile index 1d4bc3aa82..788d3e5768 100644 --- a/pipelines/deploy/content/Jenkinsfile +++ b/pipelines/deploy/content/Jenkinsfile @@ -7,7 +7,7 @@ node() { } stage('deploy') { - def values = docker_params() + values = docker_params() currentWs = sh(returnStdout: true, script: 'pwd').trim() ansiblePlaybook = "$currentWs/ansible/deploy.yml" ansibleExtraArgs = "--tags \"stack-sunbird\" --extra-vars \"hub_org=$hub_org image_name=$values.image_name image_tag=$values.image_tag service_name=content-service deploy_content=True\" --vault-password-file /home/ops/vault" diff --git a/pipelines/deploy/keycloak-realm/Jenkinsfile b/pipelines/deploy/keycloak-realm/Jenkinsfile index d83350c8a0..2798e1e955 100644 --- a/pipelines/deploy/keycloak-realm/Jenkinsfile +++ b/pipelines/deploy/keycloak-realm/Jenkinsfile @@ -13,7 +13,7 @@ node() { } ansiColor('xterm') { - def values = lp_dp_params() + values = lp_dp_params() stage('get artifact') { currentWs = sh(returnStdout: true, script: 'pwd').trim() artifact = values.artifact_name + ":" + values.artifact_version diff --git a/pipelines/deploy/keycloak/Jenkinsfile b/pipelines/deploy/keycloak/Jenkinsfile index f64ec6ce23..44e223ce8e 100644 --- a/pipelines/deploy/keycloak/Jenkinsfile +++ b/pipelines/deploy/keycloak/Jenkinsfile @@ -13,7 +13,7 @@ node() { } ansiColor('xterm') { - def values = lp_dp_params() + values = lp_dp_params() stage('get artifact') { currentWs = sh(returnStdout: true, script: 'pwd').trim() artifact = values.artifact_name + ":" + values.artifact_version diff --git a/pipelines/deploy/learner/Jenkinsfile b/pipelines/deploy/learner/Jenkinsfile index 227ac20fbd..63053907f9 100644 --- a/pipelines/deploy/learner/Jenkinsfile +++ b/pipelines/deploy/learner/Jenkinsfile @@ -7,7 +7,7 @@ node() { } stage('deploy') { - def values = docker_params() + values = docker_params() currentWs = sh(returnStdout: true, script: 'pwd').trim() ansiblePlaybook = "$currentWs/ansible/deploy.yml" ansibleExtraArgs = "--tags \"stack-sunbird\" --extra-vars \"hub_org=$hub_org image_name=$values.image_name image_tag=$values.image_tag service_name=learner-service deploy_learner=True\" --vault-password-file /home/ops/vault" diff --git a/pipelines/deploy/player/Jenkinsfile b/pipelines/deploy/player/Jenkinsfile index 2e96ab1a6d..fd7587eace 100644 --- a/pipelines/deploy/player/Jenkinsfile +++ b/pipelines/deploy/player/Jenkinsfile @@ -6,7 +6,7 @@ node() { checkout scm } stage('deploy') { - def values = docker_params() + values = docker_params() currentWs = sh(returnStdout: true, script: 'pwd').trim() ansiblePlaybook = "$currentWs/ansible/deploy.yml" ansibleExtraArgs = "--tags \"stack-sunbird\" --extra-vars \"hub_org=$hub_org image_name=$values.image_name image_tag=$values.image_tag service_name=player deploy_stack=True\" --vault-password-file /home/ops/vault" diff --git a/pipelines/deploy/proxy/Jenkinsfile b/pipelines/deploy/proxy/Jenkinsfile index 2b67d739e2..a31566fa2a 100644 --- a/pipelines/deploy/proxy/Jenkinsfile +++ b/pipelines/deploy/proxy/Jenkinsfile @@ -7,7 +7,7 @@ node() { } stage('deploy') { - def values = docker_params() + values = docker_params() currentWs = sh(returnStdout: true, script: 'pwd').trim() ansiblePlaybook = "$currentWs/ansible/deploy.yml" ansibleExtraArgs = "--tags \"stack-proxy\" --extra-vars \"hub_org=$hub_org image_name=$values.image_name image_tag=$values.image_tag\" --vault-password-file /home/ops/vault" diff --git a/pipelines/deploy/telemetry/Jenkinsfile b/pipelines/deploy/telemetry/Jenkinsfile index 13bf11d802..fae6e7a795 100644 --- a/pipelines/deploy/telemetry/Jenkinsfile +++ b/pipelines/deploy/telemetry/Jenkinsfile @@ -7,7 +7,7 @@ node() { } stage('deploy') { - def values = docker_params() + values = docker_params() currentWs = sh(returnStdout: true, script: 'pwd').trim() ansiblePlaybook = "$currentWs/ansible/deploy.yml" ansibleExtraArgs = "--tags \"stack-sunbird\" --extra-vars \"hub_org=$hub_org image_name=$values.image_name image_tag=$values.image_tag service_name=telemetry-service deploy_telemetry=True\" --vault-password-file /home/ops/vault" diff --git a/pipelines/upload/artifacts/Jenkinsfile b/pipelines/upload/artifacts/Jenkinsfile index 5fa1c533c1..39f3f97e4a 100644 --- a/pipelines/upload/artifacts/Jenkinsfile +++ b/pipelines/upload/artifacts/Jenkinsfile @@ -6,7 +6,7 @@ node() { checkout scm } stage('Artifact Upload') { - def values = lp_dp_params() + values = lp_dp_params() currentWs = sh(returnStdout: true, script: 'pwd').trim() artifact = values.artifact_name + ":" + values.artifact_version if(params.artifact_source == "ArtifactRepo") diff --git a/pipelines/upload/docker/Jenkinsfile b/pipelines/upload/docker/Jenkinsfile index a8f7b2fbde..88804698d5 100644 --- a/pipelines/upload/docker/Jenkinsfile +++ b/pipelines/upload/docker/Jenkinsfile @@ -7,7 +7,7 @@ node(){ } stage('Artifact Upload') { - def values = docker_params() + values = docker_params() if(params.artifact_source == "ArtifactRepo") { currentWs = sh(returnStdout: true, script: 'pwd').trim() ansiblePlaybook = "$currentWs/ansible/docker_image_push.yml" From 8c907ed1a1046909d522e3f32bbaeb1066e2119a Mon Sep 17 00:00:00 2001 From: Amol Ghatol Date: Mon, 4 Feb 2019 15:07:36 +0530 Subject: [PATCH 0925/1345] Issue #SB-7680 fix: Keycloak deployment script fixes (#284) * Isssue #267 chore:Role to install maven for creating sms-provider plugin jar file * Issue #263 chore: Removed maven role * Issue #257 chore:Added SMS-provider configuration * Issue #257 chore: Unarchive keycloak artifact * Issue #257 chore: Updated folder name * Issue #257 chore: Revered Keycloak artifact code * Issue #257 chore:Grantted excute permission to Providers folder * Issue #257 chore:Keycloak added template deployment script * Issue #257 chore:Keycloak added template deployment script * Issue #257 chore:Keycloak added template deployment script * Issue #257 chore:Keycloak added template deployment script * Issue #257 chore:Keycloak added template deployment script * Issue #257 chore:Copied templates build * Issue #257 chore:Keycloak added template deployment script * Issue #257 chore:Keycloak added template deployment script * Issue #257 chore:Revised file and folder permission * Issue #257 chore:Revised permissions for Jar and Credentials * Issue #257 chore:Revised permissions for Jar and Credentials * Issue #257 chore:Revised permissions for Jar and Credentials * Issue #257 chore:Revised permissions for Jar and Credentials * Issue #257 chore:Deployment script changes * Issue #257 chore:Deployment script changes * Issue #257 chore:Deployment script changes * Issue #257 chore: Add build for login folder * Issue #257 fix: updated folder permission * Issue #257 fix: Keycloak build and deploy script changes * Issue #257 fix: Keycloak build and deploy script changes * Issue #257 fix: Keycloak build and deploy script changes * Issue #24 chore:Sunbird auth package build * Issue #24 chore:Sunbird auth package build * Issue #24 chore:Sunbird auth package build * Issue #24 chore:Sunbird auth package build * Issue #24 chore:Sunbird auth package build * Issue #24 chore:Sunbird auth package build * Issue #24 chore:Sunbird auth package build * Issue #24 chore:NTP staging deployment for OTP and login with Phone number * Issue #24 chore:NTP staging deployment for OTP and login with Phone number * Issue #24 chore:NTP staging deployment for OTP and login with Phone number * Issue #24 chore:NTP staging deployment for OTP and login with Phone number * Issue #24 chore:NTP staging deployment for OTP and login with Phone number * Issue #24 chore:NTP staging deployment for OTP and login * Issue #24 chore:NTP staging deployment for OTP and login * Issue #24 chore:NTP staging deployment for OTP and login * Issue #24 chore:NTP staging deployment for OTP and login * Issue #24 chore:NTP staging deployment for OTP and login * Issue #24 chore:NTP staging deployment for OTP and login * Issue #24 chore:NTP staging deployment for OTP and login * Issue #24 chore:NTP staging deployment for OTP and login * Issue #24 chore:NTP staging deployment for OTP and login * Issue #24 chore:NTP staging deployment for OTP and login * Issue #24 chore:Lable changes for username field * Issue #81 fix: keycloak deployment script * Issue #67 chore:Keycloak Deployment script fix * Issue #SB-1412 fix: Message displayed on reset password screen shoult be enhanced * Issue #81 chore: Keycloak deployment script * Issue #SB-7680 fix: Keycloak deployment script fixes * Issue #SB7310 chore:Onboard Consumer API * Circle CI Script Updates (#264) * feat: SB-7716 - Travis CI Nightly builds for Sunbird installation * fix: Removing extra travis file * fix: SB-7885 - Do not delete VM if build fails and build only tags * fix: SB-7885 - Remove master branch checkout code as we will not build master's tip anymore * fix: Updating tags, root org json response retrieval fix * feat: Adding circle ci scripts * fix: remove extra file * fix: remove extra file * style: Remove echos, cleaner output messages, yaml anchors * chore: removing all travis releated scripts * fix: temporary run to disable other branch builds * feat: SB-7983, SB-7984 - Scheduling cron back * Revert "feat: SB-7983, SB-7984 - Scheduling cron back" This reverts commit 6164a41dd65742680888f5c951b7bef9e61ecfc0. * Revert "fix: temporary run to disable other branch builds" This reverts commit 7651af690e8c78baab64d73e178208ec4b169148. * feat: SB-7983, SB-7984 - Scheduling cron back * fix: SB-8102 - Updated code to use new config file, new logic to checkout tags and branch, code refactor" * fix: SB-8102 - Changed channel name * #000 Issue: updated cron time for builds * #000 Issue: updated cron time for builds * #000 Issue: removed playbook check * Send emails directly from server (#266) * feat: adding support for custom emails * Issue #000 git checkout definition change * Upgrade, backup and restore, other updates (#267) * feat: Upgrade, backup, restore, updates to installer as per new docs * Ansible syntax check hook (#268) feat: adding ansible pre-commit hook script * Install wrapper, specific tag builds, build flow changes (#271) * feat: SB-9240 build flow changes, specific tags, install wrapper * Issue #000 systeminit: cassandra migration version * Issue #SB-8343 fix: Keycloak package - Update script --- .../sunbird/login/resources/img/favicon.ico | Bin 0 -> 203870 bytes .../resources/messages/messages_en.properties | 4 +- ansible/roles/keycloak/tasks/deploy.yml | 133 +++++++++++--- deploy/config.yml.sample | 167 ++++++++++++++++++ scripts/syntax-check-hook.sh | 22 +++ test.sh | 8 - 6 files changed, 301 insertions(+), 33 deletions(-) create mode 100644 ansible/artifacts/sunbird/login/resources/img/favicon.ico mode change 100644 => 100755 ansible/roles/keycloak/tasks/deploy.yml create mode 100755 deploy/config.yml.sample create mode 100755 scripts/syntax-check-hook.sh delete mode 100755 test.sh diff --git a/ansible/artifacts/sunbird/login/resources/img/favicon.ico b/ansible/artifacts/sunbird/login/resources/img/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..4b2d8aa6de5db3be532e3eff383f7149da6a7e66 GIT binary patch literal 203870 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�FQUj01XYk9{8imj$=XuYq+JT2(j? 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 realm settings -> keys -> public keys (click on public keys) and paste the value + # Referral: http://www.sunbird.org/developer-docs/configuring_sunbird/ + +#----------------------------------------------------------------------# + +# INFO +# Now you've to create the root organization and channel +# Referral: http://www.sunbird.org/developer-docs/installation/install_sbbackend/ +# go to the bottom section of the page + +#----------------------------------------------------------------------# +# PART 3 +# Please fill the value below and run sunbird_install.sh -s core + +sunbird_default_channel: testorg # Paste the channel name with which you created the organization + +#----------------------------------------------------------------------# + + + + + +## Advanced config + +# !! If you don't need all customizations, like only multiple db instances but all applications are in same instance, +# !! please fill `application_host`, as this ip will be taken for all default configurations + +# DB IPs, Default will be database_host +elasticsearch_host: +cassandra_host: +postgres_master_host: +postgres_slave_host: +swarm_manager_host: +swarm_node_host: +keycloak_host: +log_es_host: + +# Variables for monitoring +prometheus_host: +grafana_host: +alertmanager_host: + +# Unique DB passwords, Default will be database_password +# If you have dbs pre installed, you have to fill the passwords, it's mandatory. +postgres_keycloak_password: +postgres_app_password: +postgres_kong_password: +postgres_badger_password: +cassandra_password: + + +sunbird_telemetry_pdata_id: #some telemetry id which should available in ekstep +sunbird_installation_email: # + +#Logging (mandatory fields if logging is required) +vault_google_client_id: # Google oauth client id +vault_google_client_secret: # Google oauth client secret +vault_cookie_secret: # Google oauth cookie secret +kibana_oauth_authenticated_email_domains: # Kibana access for all the users with this domain +kibana_oauth_authenticated_email_ids: # Kibana access for the mentioned users + + + +#Monitoring (mandatory fields if monitoring is required) +proxy_prometheus: false # Please set this variable to true if you want to use monitoring and fill the below details under monitoring Section +mail_server_host: #mail server host ex: smtp.sendgrid.net +mail_server_port: #mail server host ex: 587 +mail_server_username: #username +mail_server_password: #password +vault_postgres_exporter_password: #password for the postgres exporter password +grafana_admin_password: #grafana admin password +monitor_alerts_slack_url: #slack webhook url +monitor_alerts_slack_channel: #slack channel for alerts +alerts_mailing_list: #list of user mail id's who need alerts. +kong__test_jwt: #kong test jwt token +vault_proxy_prometheus_admin_creds: + + + +#es config +es_etc_node_datagroups['es']: +es_api_host: "{{ inventory_hostname }}" +es_heap_size: 1500m +es_etc_discovery_zen_minimum_master_nodes: 1 +es_snapshot_host: "{{ groups['es'][0] }}" +es_restore_host: "{{ groups['es'][0] }}" +snapshot_base_path: application + + +#----------------------------------------------------------------# +# System generated values. Please don't edit diff --git a/scripts/syntax-check-hook.sh b/scripts/syntax-check-hook.sh new file mode 100755 index 0000000000..9626864c24 --- /dev/null +++ b/scripts/syntax-check-hook.sh @@ -0,0 +1,22 @@ +#!/bin/bash + +checkSyntax(){ +filenames=$(git diff --cached --name-only --diff-filter=ACM) +flag=0 +for i in $filenames +do + if [[ "$i" =~ (.yaml|.yml) ]]; then + ansible-playbook -i ./ansible/inventories/sample --syntax-check $i + if [[ $? -ne 0 ]]; then + flag=1 + fi + fi +done + +if [[ $flag -eq 1 ]]; then + echo -e "\e[1;36m\nAnsible syntax error found. Please correct these and then commit.\e[0;37m" + exit 1 +fi +} + +checkSyntax diff --git a/test.sh b/test.sh deleted file mode 100755 index 35ab205a2e..0000000000 --- a/test.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/sh - -set -e - -SCRIPT_BASE_DIR=$(dirname $0) -SUNBIRD_DEVOPS_FOLDER=$SCRIPT_BASE_DIR - -bash $SUNBIRD_DEVOPS_FOLDER/ansible-syntax-check.sh $SUNBIRD_DEVOPS_FOLDER/ansible/inventories/sample From d54317800c161a8d438dd709e3d2153839e76da9 Mon Sep 17 00:00:00 2001 From: S M Y Date: Mon, 4 Feb 2019 15:38:28 +0530 Subject: [PATCH 0926/1345] Issue #000 jar: cassandra jar issue --- ansible/roles/cassandra-deploy/defaults/main.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ansible/roles/cassandra-deploy/defaults/main.yml b/ansible/roles/cassandra-deploy/defaults/main.yml index 42aa229991..c38c2c9d3a 100644 --- a/ansible/roles/cassandra-deploy/defaults/main.yml +++ b/ansible/roles/cassandra-deploy/defaults/main.yml @@ -1,2 +1,2 @@ -cassandra_jar_path: ../../cassandra-migration/target -cassandra_deploy_path: /home/deployer \ No newline at end of file +cassandra_jar_path: ../ +cassandra_deploy_path: /home/deployer From 581cbc185ed5457a143c57b39fa8e620b097dda1 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Mon, 4 Feb 2019 15:50:15 +0530 Subject: [PATCH 0927/1345] feat: DO-509 Updating ansible play path --- pipelines/backup/prometheus-backup/Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pipelines/backup/prometheus-backup/Jenkinsfile b/pipelines/backup/prometheus-backup/Jenkinsfile index 5226d4a466..04bad6c10a 100644 --- a/pipelines/backup/prometheus-backup/Jenkinsfile +++ b/pipelines/backup/prometheus-backup/Jenkinsfile @@ -19,7 +19,7 @@ node() { module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() currentWs = sh(returnStdout: true, script: 'pwd').trim() - ansiblePlaybook = "${currentWs}/devops/prometheus-backup.yml" + ansiblePlaybook = "${currentWs}/ansible/prometheus-backup.yml" ansibleExtraArgs = "--vault-password-file /home/ops/vault" values.put('currentWs', currentWs) values.put('env', envDir) From 4eaae029acc63db9f8bd97c7590081133d379573 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Mon, 4 Feb 2019 15:52:06 +0530 Subject: [PATCH 0928/1345] feat: DO-509 Adding postgres backup Jenkinsfile --- .../backup/postgresql-backup/Jenkinsfile | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 pipelines/backup/postgresql-backup/Jenkinsfile diff --git a/pipelines/backup/postgresql-backup/Jenkinsfile b/pipelines/backup/postgresql-backup/Jenkinsfile new file mode 100644 index 0000000000..33d8465c19 --- /dev/null +++ b/pipelines/backup/postgresql-backup/Jenkinsfile @@ -0,0 +1,38 @@ +@Library('deploy-conf') _ +node() { + try { + String ANSI_GREEN = "\u001B[32m" + String ANSI_NORMAL = "\u001B[0m" + String ANSI_BOLD = "\u001B[1m" + String ANSI_RED = "\u001B[31m" + String ANSI_YELLOW = "\u001B[33m" + + stage('checkout public repo') { + cleanWs() + checkout scm + } + + ansiColor('xterm') { + stage('deploy'){ + values = [:] + envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-3].trim() + module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() + jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() + currentWs = sh(returnStdout: true, script: 'pwd').trim() + ansiblePlaybook = "${currentWs}/ansible/postgresql-backup.yml" + ansibleExtraArgs = "--vault-password-file /home/ops/vault" + values.put('currentWs', currentWs) + values.put('env', envDir) + values.put('module', module) + values.put('jobName', jobName) + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + println values + ansible_playbook_run(values) + } + } + } + catch (err) { + throw err + } +} From 8dfc4fbe65f02321aea12aef3570906b88935b91 Mon Sep 17 00:00:00 2001 From: "kaliraja.ramasamy" Date: Mon, 4 Feb 2019 15:52:00 +0530 Subject: [PATCH 0929/1345] Issue #0000 fix: DO-470 updated the api stack file --- ansible/roles/stack-api-manager/templates/stack-api-manager.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/stack-api-manager/templates/stack-api-manager.yml b/ansible/roles/stack-api-manager/templates/stack-api-manager.yml index 388f2cbc87..fd587767e6 100644 --- a/ansible/roles/stack-api-manager/templates/stack-api-manager.yml +++ b/ansible/roles/stack-api-manager/templates/stack-api-manager.yml @@ -2,7 +2,7 @@ version: '3' services: kong: - image: sunbird/kong:{{kong_version}} + image: "{{hub_org}}/{{image_name}}:{{image_tag}}" env_file: /home/deployer/env/api-manager.env ports: From 7e536b66db979e524a776060bf4eb29dd1db2e6b Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Mon, 4 Feb 2019 15:52:49 +0530 Subject: [PATCH 0930/1345] feat: DO-509 Adding postgres restore jenkinsfile --- .../backup/postgresql-restore/Jenkinsfile | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 pipelines/backup/postgresql-restore/Jenkinsfile diff --git a/pipelines/backup/postgresql-restore/Jenkinsfile b/pipelines/backup/postgresql-restore/Jenkinsfile new file mode 100644 index 0000000000..48fd1d9723 --- /dev/null +++ b/pipelines/backup/postgresql-restore/Jenkinsfile @@ -0,0 +1,40 @@ +package Deploy + +@Library('deploy-conf') _ +node() { + try { + String ANSI_GREEN = "\u001B[32m" + String ANSI_NORMAL = "\u001B[0m" + String ANSI_BOLD = "\u001B[1m" + String ANSI_RED = "\u001B[31m" + String ANSI_YELLOW = "\u001B[33m" + + stage('checkout public repo') { + cleanWs() + checkout scm + } + + ansiColor('xterm') { + stage('deploy'){ + values = [:] + envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-3].trim() + module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() + jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() + currentWs = sh(returnStdout: true, script: 'pwd').trim() + ansiblePlaybook = "${currentWs}/ansible/postgresql-restore.yml" + ansibleExtraArgs = "--vault-password-file /home/ops/vault" + values.put('currentWs', currentWs) + values.put('env', envDir) + values.put('module', module) + values.put('jobName', jobName) + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + println values + ansible_playbook_run(values) + } + } + } + catch (err) { + throw err + } +} From b74c84644f9bdc314546f3cc8c785b7d2b99cd32 Mon Sep 17 00:00:00 2001 From: S M Y Date: Mon, 4 Feb 2019 15:58:39 +0530 Subject: [PATCH 0931/1345] Issue #000 postgres: postgres users issue --- ansible/inventory/env/group_vars/env.yml | 19 +++++++++++++++++++ .../postgresql-data-update/tasks/main.yml | 6 +++--- 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/ansible/inventory/env/group_vars/env.yml b/ansible/inventory/env/group_vars/env.yml index 6deb53fdef..5c7d73e5bd 100644 --- a/ansible/inventory/env/group_vars/env.yml +++ b/ansible/inventory/env/group_vars/env.yml @@ -326,6 +326,25 @@ monitor_alerts_slack_url: "{{core_vault_monitor_alerts_slack_url}}" kong__test_jwt: "{{core_vault_kong__test_jwt}}" # postgresql_users should only be created in master and replicated to slave +postgresql_users: + - name: "{{kong_postgres_user}}" + password: "{{postgres_kong_password if postgres_kong_password else database_password}}" + db: "{{kong_postgres_database}}" + priv: "ALL" + - name: "{{keycloak_postgres_user}}" + password: "{{postgres_keycloak_password if postgres_keycloak_password else database_password}}" + db: "{{keycloak_postgres_database}}" + priv: "ALL" + - name: "{{application_postgres_user}}" + password: "{{postgres_app_password if postgres_app_password else database_password}}" + db: "{{application_postgres_database}}" + priv: "ALL" + - name: "{{badger_postgres_user}}" + password: "{{postgres_badger_password if postgres_badger_password else database_password}}" + db: "{{badger_postgres_database}}" + priv: "ALL" + + postgresql_databases: - name: "{{kong_postgres_database}}" - name: "{{keycloak_postgres_database}}" diff --git a/ansible/roles/postgresql-data-update/tasks/main.yml b/ansible/roles/postgresql-data-update/tasks/main.yml index 800624ff43..64218d9ba7 100644 --- a/ansible/roles/postgresql-data-update/tasks/main.yml +++ b/ansible/roles/postgresql-data-update/tasks/main.yml @@ -1,9 +1,9 @@ -- name: creating database - include: databases.yml - - name: Verifying db users are present else creating them include: users.yml +- name: creating database + include: databases.yml + - name: Copy the templates become: yes template: src={{item}} dest=/tmp/{{item}} From be54e05c1d1def2ab74dc669685be29e6d51205d Mon Sep 17 00:00:00 2001 From: S M Y Date: Mon, 4 Feb 2019 16:08:23 +0530 Subject: [PATCH 0932/1345] Issue #000 postgres: postgres users issue --- ansible/inventory/env/group_vars/env.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ansible/inventory/env/group_vars/env.yml b/ansible/inventory/env/group_vars/env.yml index 5c7d73e5bd..4024cc7917 100644 --- a/ansible/inventory/env/group_vars/env.yml +++ b/ansible/inventory/env/group_vars/env.yml @@ -328,19 +328,19 @@ kong__test_jwt: "{{core_vault_kong__test_jwt}}" # postgresql_users should only be created in master and replicated to slave postgresql_users: - name: "{{kong_postgres_user}}" - password: "{{postgres_kong_password if postgres_kong_password else database_password}}" + password: "{{postgres_password}}" db: "{{kong_postgres_database}}" priv: "ALL" - name: "{{keycloak_postgres_user}}" - password: "{{postgres_keycloak_password if postgres_keycloak_password else database_password}}" + password: "{{postgres_password}}" db: "{{keycloak_postgres_database}}" priv: "ALL" - name: "{{application_postgres_user}}" - password: "{{postgres_app_password if postgres_app_password else database_password}}" + password: "{{postgres_password}}" db: "{{application_postgres_database}}" priv: "ALL" - name: "{{badger_postgres_user}}" - password: "{{postgres_badger_password if postgres_badger_password else database_password}}" + password: "{{postgres_password}}" db: "{{badger_postgres_database}}" priv: "ALL" From 8a19b53332da9c5e0f9517830042089fb7f8c265 Mon Sep 17 00:00:00 2001 From: Kartish Date: Mon, 4 Feb 2019 16:25:19 +0530 Subject: [PATCH 0933/1345] Issue #0000 fix: postgres update --- ansible/inventory/env/group_vars/env.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/ansible/inventory/env/group_vars/env.yml b/ansible/inventory/env/group_vars/env.yml index 4024cc7917..3ce01ee851 100644 --- a/ansible/inventory/env/group_vars/env.yml +++ b/ansible/inventory/env/group_vars/env.yml @@ -5,6 +5,7 @@ proxy_site_crt: "{{ core_vault_proxy_site_crt }}" #SSL certificate's site.crt f ## Below passwords are used by DB install scripts when creating databases. Please use strong passwords. sunbird_pg_user: "{{core_vault_postgres_username}}" application_postgres_user: "{{core_vault_postgres_username}}" +application_postgres_password: "{{core_vault_postgres_password}}" keycloak_postgres_user: "{{core_vault_postgres_username}}" keycloak_postgres_password: "{{core_vault_postgres_password}}" badger_postgres_password: "{{core_vault_postgres_password}}" From 32354986b39336757611e10701c19bc62a73b30a Mon Sep 17 00:00:00 2001 From: S M Y Date: Mon, 4 Feb 2019 16:37:31 +0530 Subject: [PATCH 0934/1345] Issue #000 postgres: kong image changes --- .../roles/stack-api-manager/templates/stack-api-manager.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ansible/roles/stack-api-manager/templates/stack-api-manager.yml b/ansible/roles/stack-api-manager/templates/stack-api-manager.yml index fd587767e6..9403499408 100644 --- a/ansible/roles/stack-api-manager/templates/stack-api-manager.yml +++ b/ansible/roles/stack-api-manager/templates/stack-api-manager.yml @@ -2,7 +2,7 @@ version: '3' services: kong: - image: "{{hub_org}}/{{image_name}}:{{image_tag}}" + image: "sunbird/kong:1.5.0-gold" env_file: /home/deployer/env/api-manager.env ports: @@ -27,7 +27,7 @@ services: retries: 10 echo: - image: "{{hub_org}}/{{echo_server_image_name}}:{{echo_server_image_tag}}" + image: "sunbird/echo-server:1.5.0-bronze" networks: - application_default ports: From 2e77428fc2feef7e9df07adedc6e0763e50ae6e0 Mon Sep 17 00:00:00 2001 From: "kaliraja.ramasamy" Date: Mon, 4 Feb 2019 16:41:21 +0530 Subject: [PATCH 0935/1345] Issue #0000 fix: DO-470 updated the api stack file --- pipelines/deploy/api-manager/Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pipelines/deploy/api-manager/Jenkinsfile b/pipelines/deploy/api-manager/Jenkinsfile index a88d73628b..0d3b0d05b3 100644 --- a/pipelines/deploy/api-manager/Jenkinsfile +++ b/pipelines/deploy/api-manager/Jenkinsfile @@ -9,7 +9,7 @@ node() { values = docker_params() currentWs = sh(returnStdout: true, script: 'pwd').trim() ansiblePlaybook = "$currentWs/ansible/deploy.yml" - ansibleExtraArgs = "--tags \"stack-api-manager\" --extra-vars \"hub_org=${hub_org} echo_server_image_name=${values.image_name} echo_server_image_tag=${values.image_tag}\" --vault-password-file /home/ops/vault" + ansibleExtraArgs = "--tags \"stack-api-manager\" --vault-password-file /home/ops/vault" values.put('currentWs', currentWs) values.put('ansiblePlaybook', ansiblePlaybook) values.put('ansibleExtraArgs', ansibleExtraArgs) From 7be355823a4912940e8cedb1121a485951e532d3 Mon Sep 17 00:00:00 2001 From: Kartish Date: Mon, 4 Feb 2019 16:46:08 +0530 Subject: [PATCH 0936/1345] Issue #0000 fix: postgres update --- .../roles/stack-api-manager/templates/stack-api-manager.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ansible/roles/stack-api-manager/templates/stack-api-manager.yml b/ansible/roles/stack-api-manager/templates/stack-api-manager.yml index 9403499408..dfe7922605 100644 --- a/ansible/roles/stack-api-manager/templates/stack-api-manager.yml +++ b/ansible/roles/stack-api-manager/templates/stack-api-manager.yml @@ -2,7 +2,7 @@ version: '3' services: kong: - image: "sunbird/kong:1.5.0-gold" + image: "sunbird/kong:1.5.0-gold" env_file: /home/deployer/env/api-manager.env ports: @@ -27,7 +27,7 @@ services: retries: 10 echo: - image: "sunbird/echo-server:1.5.0-bronze" + image: "sunbird/echo-server:1.5.0-bronze" networks: - application_default ports: From 4001b873a8f056704878436d7bf9a7be55a0c23d Mon Sep 17 00:00:00 2001 From: Kartish Date: Mon, 4 Feb 2019 16:50:32 +0530 Subject: [PATCH 0937/1345] Issue #0000 fix: learner update --- ansible/inventory/env/group_vars/env.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/inventory/env/group_vars/env.yml b/ansible/inventory/env/group_vars/env.yml index 3ce01ee851..88011173d2 100644 --- a/ansible/inventory/env/group_vars/env.yml +++ b/ansible/inventory/env/group_vars/env.yml @@ -28,7 +28,7 @@ jenkins_admin_username: "{{core_vault_jenkins_admin_username}}" jenkins_admin_password: "{{core_vault_jenkins_admin_password}}" bootstrap_user: "{{core_vault_bootstrap_user}}" bootstrap_key_path: "{{core_vault_bootstrap_key_path}}" - +vault_badging_authorization_key: "{{core_vault_badging_authorization_key}}" ## Postgres configuration swarm_address_space: "{{groups['swarm-manager'][0].split(\".\")[0]}}.0.0.0/8" #Application server address space (e.g. 10.3.0.0/24), also the agentpublicSubnet if using Azure scripts provided From c943af9ba131bbeeca441c12a5904de9a5eaaae4 Mon Sep 17 00:00:00 2001 From: Kartish Date: Mon, 4 Feb 2019 16:57:13 +0530 Subject: [PATCH 0938/1345] Issue #0000 fix: learner update --- ansible/inventory/env/group_vars/env.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/inventory/env/group_vars/env.yml b/ansible/inventory/env/group_vars/env.yml index 88011173d2..53224f11c6 100644 --- a/ansible/inventory/env/group_vars/env.yml +++ b/ansible/inventory/env/group_vars/env.yml @@ -483,4 +483,4 @@ sunbird_image_storage_url: "" ## config_refresh_interval: 10 -config_service_enabled: false +config_service_enabled: 'false' From f0d5f983912b04998c9d354ecfbed96b16c83ed6 Mon Sep 17 00:00:00 2001 From: "kaliraja.ramasamy" Date: Mon, 4 Feb 2019 17:30:55 +0530 Subject: [PATCH 0939/1345] Issue #0000 fix: DO-470 added the masg91 variable --- ansible/inventory/env/group_vars/env.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/ansible/inventory/env/group_vars/env.yml b/ansible/inventory/env/group_vars/env.yml index 53224f11c6..9ecf261c40 100644 --- a/ansible/inventory/env/group_vars/env.yml +++ b/ansible/inventory/env/group_vars/env.yml @@ -480,6 +480,7 @@ badger_limit_memory: 500MB # not required sunbird_image_storage_url: "" +vault_auth_key: "{{core_vault_auth_key}}" ## config_refresh_interval: 10 From c2b0ec73b663467817b2d967ec92f7a61d2a7929 Mon Sep 17 00:00:00 2001 From: Kartish Date: Mon, 4 Feb 2019 17:39:18 +0530 Subject: [PATCH 0940/1345] Issue #0000 fix: player update --- ansible/inventory/env/group_vars/env.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ansible/inventory/env/group_vars/env.yml b/ansible/inventory/env/group_vars/env.yml index 9ecf261c40..617b36f8db 100644 --- a/ansible/inventory/env/group_vars/env.yml +++ b/ansible/inventory/env/group_vars/env.yml @@ -315,7 +315,7 @@ sunbird_azure_report_container_name: reports sunbird_azure_account_key: "{{core_vault_sunbird_azure_storage_key}}" sunbird_google_captcha_site_key: "{{core_vault_sunbird_google_captcha_site_key_portal}}" -sunbird_google_oauth_clientId: "{{core_vault_sunbird_google_oauth_clientId_portal}}" +sunbird_google_oauth_client_Id: "{{core_vault_sunbird_google_oauth_clientId_portal}}" sunbird_google_oauth_clientSecret: "{{core_vault_sunbird_google_oauth_clientSecret_portal}}" google_client_id: "{{core_vault_kibana_google_client_id}}" google_client_secret: "{{core_vault_kibana_google_client_secret}}" @@ -483,5 +483,5 @@ sunbird_image_storage_url: "" vault_auth_key: "{{core_vault_auth_key}}" ## -config_refresh_interval: 10 -config_service_enabled: 'false' +config_refresh_interval: +config_service_enabled: '' \ No newline at end of file From ff5cbaee27c61ef0b5ed1c99df783ca721bdab02 Mon Sep 17 00:00:00 2001 From: "kaliraja.ramasamy" Date: Mon, 4 Feb 2019 17:55:38 +0530 Subject: [PATCH 0941/1345] Issue #0000 fix: DO-470 added the masg91 variable~ --- ansible/inventory/env/group_vars/env.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/ansible/inventory/env/group_vars/env.yml b/ansible/inventory/env/group_vars/env.yml index 617b36f8db..b46842d9ba 100644 --- a/ansible/inventory/env/group_vars/env.yml +++ b/ansible/inventory/env/group_vars/env.yml @@ -481,6 +481,7 @@ badger_limit_memory: 500MB # not required sunbird_image_storage_url: "" vault_auth_key: "{{core_vault_auth_key}}" +vault_sender: "{{core_vault_sender}}" ## config_refresh_interval: From 0f071facff87c6c3e1df60dba2e61d7c3841a6e2 Mon Sep 17 00:00:00 2001 From: Kartish Date: Mon, 4 Feb 2019 17:56:33 +0530 Subject: [PATCH 0942/1345] Issue #0000 fix: player update --- ansible/inventory/env/group_vars/env.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/ansible/inventory/env/group_vars/env.yml b/ansible/inventory/env/group_vars/env.yml index b46842d9ba..6e384401ec 100644 --- a/ansible/inventory/env/group_vars/env.yml +++ b/ansible/inventory/env/group_vars/env.yml @@ -315,8 +315,10 @@ sunbird_azure_report_container_name: reports sunbird_azure_account_key: "{{core_vault_sunbird_azure_storage_key}}" sunbird_google_captcha_site_key: "{{core_vault_sunbird_google_captcha_site_key_portal}}" -sunbird_google_oauth_client_Id: "{{core_vault_sunbird_google_oauth_clientId_portal}}" +sunbird_google_oauth_clientId: "{{core_vault_sunbird_google_oauth_clientId_portal}}" sunbird_google_oauth_clientSecret: "{{core_vault_sunbird_google_oauth_clientSecret_portal}}" +sunbird_google_keycloak_client_id: "google-auth" +sunbird_google_keycloak_secret: "{{core_vault_sunbird_google_keycloak_secret}}" google_client_id: "{{core_vault_kibana_google_client_id}}" google_client_secret: "{{core_vault_kibana_google_client_secret}}" cookie_secret: "{{core_vault_kibana_cookie_secret}}" From 4e8a1d62d0bea20f309ae1c78febbba7b150ec43 Mon Sep 17 00:00:00 2001 From: "kaliraja.ramasamy" Date: Mon, 4 Feb 2019 18:12:44 +0530 Subject: [PATCH 0943/1345] Issue #0000 fix: DO-470 added the masg91 variable~ --- ansible/inventory/env/group_vars/env.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ansible/inventory/env/group_vars/env.yml b/ansible/inventory/env/group_vars/env.yml index 6e384401ec..88509baadb 100644 --- a/ansible/inventory/env/group_vars/env.yml +++ b/ansible/inventory/env/group_vars/env.yml @@ -484,6 +484,9 @@ badger_limit_memory: 500MB sunbird_image_storage_url: "" vault_auth_key: "{{core_vault_auth_key}}" vault_sender: "{{core_vault_sender}}" +vault_country: "{{core_vault_country}}" +vault_route: "{{core_vault_route}}" + ## config_refresh_interval: From f1d118a4402b6ebcbe10ccc34016fb7b756d924a Mon Sep 17 00:00:00 2001 From: "kaliraja.ramasamy" Date: Mon, 4 Feb 2019 18:16:13 +0530 Subject: [PATCH 0944/1345] Issue #0000 fix: DO-470 added the masg91 variable~ --- ansible/inventory/env/group_vars/env.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/ansible/inventory/env/group_vars/env.yml b/ansible/inventory/env/group_vars/env.yml index 88509baadb..b02b1d6edc 100644 --- a/ansible/inventory/env/group_vars/env.yml +++ b/ansible/inventory/env/group_vars/env.yml @@ -486,6 +486,7 @@ vault_auth_key: "{{core_vault_auth_key}}" vault_sender: "{{core_vault_sender}}" vault_country: "{{core_vault_country}}" vault_route: "{{core_vault_route}}" +vault_sms_method_type: "{{core_vault_sms_method_type}}" ## From 20a53689e50e817f2a8ec7a44ad3270113c9821a Mon Sep 17 00:00:00 2001 From: "kaliraja.ramasamy" Date: Mon, 4 Feb 2019 18:59:14 +0530 Subject: [PATCH 0945/1345] Issue #0000 fix: DO-470 added the cassandra cql update role --- ansible/provision.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/ansible/provision.yml b/ansible/provision.yml index 98c5aa551d..c30e175c9d 100644 --- a/ansible/provision.yml +++ b/ansible/provision.yml @@ -5,6 +5,7 @@ roles: - jre-1.8.0_144 - cassandra + - cassandra-cql-update tags: - cassandra From b366bcd8daa47d17f34e64bc404f5301e7bce04d Mon Sep 17 00:00:00 2001 From: S M Y Date: Mon, 4 Feb 2019 19:09:56 +0530 Subject: [PATCH 0946/1345] Issue #000 kong to deploy from vm --- ansible/roles/kong-api/tasks/main.yml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/ansible/roles/kong-api/tasks/main.yml b/ansible/roles/kong-api/tasks/main.yml index 3187857905..e8ee32bd27 100644 --- a/ansible/roles/kong-api/tasks/main.yml +++ b/ansible/roles/kong-api/tasks/main.yml @@ -12,14 +12,14 @@ - name: Copy kong api scripts copy: src=static-files/kong-api-scripts dest=/tmp mode=0755 -- name: "Ensure kong_admin_api_url is available before running the scripts" - uri: - url: "{{ kong_admin_api_url }}/status" - status_code: 200 - register: result - until: result.status == 200 - retries: 60 - delay: 5 + #- name: "Ensure kong_admin_api_url is available before running the scripts" + # uri: + # url: "{{ kong_admin_api_url }}/status" + # status_code: 200 + # register: result + # until: result.status == 200 + # retries: 60 + # delay: 5 - name: waiting for 30 seconds for api manager to be fully functional pause: From 2a2eda80b77db81237899ab7d5b62ee7a572d136 Mon Sep 17 00:00:00 2001 From: S M Y Date: Mon, 4 Feb 2019 19:15:43 +0530 Subject: [PATCH 0947/1345] Issue #000 kong to deploy from vm --- ansible/inventory/env/group_vars/env.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/inventory/env/group_vars/env.yml b/ansible/inventory/env/group_vars/env.yml index b02b1d6edc..a778426859 100644 --- a/ansible/inventory/env/group_vars/env.yml +++ b/ansible/inventory/env/group_vars/env.yml @@ -215,7 +215,7 @@ enable_scraping_docker_metrics: false postgres_exporter_postgres_port: 5432 postgres_exporter_user: postgres_exporter sunbird_cs_base_url: "{{proto}}://{{proxy_server_name}}/api" -kong_admin_api_url: http://api-manager_kong:8001 +kong_admin_api_url: http://localhost:8001 #kong_admin_api_url: manager postgresql_backup_azure_storage_account_name: "{{ core_vault_sunbird_azure_storage_account }}" From a2fb7212750a46167bebab320d7953432c70544e Mon Sep 17 00:00:00 2001 From: S M Y Date: Mon, 4 Feb 2019 19:37:08 +0530 Subject: [PATCH 0948/1345] Issue #000 kong to deploy from vm --- ansible/roles/kong-api/tasks/main.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/ansible/roles/kong-api/tasks/main.yml b/ansible/roles/kong-api/tasks/main.yml index e8ee32bd27..88f93f3aaa 100644 --- a/ansible/roles/kong-api/tasks/main.yml +++ b/ansible/roles/kong-api/tasks/main.yml @@ -21,6 +21,13 @@ # retries: 60 # delay: 5 +- name: Extracting where the host in which api manager is running + command: bash -lc "docker service ps api-manager_kong | grep Runn | head -n1 | awk '{print $4}'" + register: kong_running_host + +- set_fact: + kong_admin_api_url: "{{kong_running_host.stdout}}" + - name: waiting for 30 seconds for api manager to be fully functional pause: seconds: 30 From fd4f27b5254e70cb220a972359720b36d8cf9327 Mon Sep 17 00:00:00 2001 From: S M Y Date: Mon, 4 Feb 2019 19:53:33 +0530 Subject: [PATCH 0949/1345] Issue #000 kong to deploy from vm --- ansible/roles/kong-api/tasks/main.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/ansible/roles/kong-api/tasks/main.yml b/ansible/roles/kong-api/tasks/main.yml index 88f93f3aaa..0da2dab69d 100644 --- a/ansible/roles/kong-api/tasks/main.yml +++ b/ansible/roles/kong-api/tasks/main.yml @@ -24,6 +24,7 @@ - name: Extracting where the host in which api manager is running command: bash -lc "docker service ps api-manager_kong | grep Runn | head -n1 | awk '{print $4}'" register: kong_running_host + delegate_to: swarm-manager-1 - set_fact: kong_admin_api_url: "{{kong_running_host.stdout}}" From e37828f05261c7db429a6a3614083984ed56d389 Mon Sep 17 00:00:00 2001 From: S M Y Date: Mon, 4 Feb 2019 19:55:34 +0530 Subject: [PATCH 0950/1345] Issue #000 kong to deploy from vm --- ansible/roles/kong-api/tasks/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/kong-api/tasks/main.yml b/ansible/roles/kong-api/tasks/main.yml index 0da2dab69d..8705fed7a2 100644 --- a/ansible/roles/kong-api/tasks/main.yml +++ b/ansible/roles/kong-api/tasks/main.yml @@ -24,7 +24,7 @@ - name: Extracting where the host in which api manager is running command: bash -lc "docker service ps api-manager_kong | grep Runn | head -n1 | awk '{print $4}'" register: kong_running_host - delegate_to: swarm-manager-1 + delegate_to: "{{groups['swarm-manager-1']}}" - set_fact: kong_admin_api_url: "{{kong_running_host.stdout}}" From 84a947b07de6501e8ade22abaf6b93b5dd1eb148 Mon Sep 17 00:00:00 2001 From: S M Y Date: Mon, 4 Feb 2019 19:58:45 +0530 Subject: [PATCH 0951/1345] Issue #000 kong to deploy from vm --- ansible/roles/kong-api/tasks/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/kong-api/tasks/main.yml b/ansible/roles/kong-api/tasks/main.yml index 8705fed7a2..1f5dc84654 100644 --- a/ansible/roles/kong-api/tasks/main.yml +++ b/ansible/roles/kong-api/tasks/main.yml @@ -24,7 +24,7 @@ - name: Extracting where the host in which api manager is running command: bash -lc "docker service ps api-manager_kong | grep Runn | head -n1 | awk '{print $4}'" register: kong_running_host - delegate_to: "{{groups['swarm-manager-1']}}" + delegate_to: "{{groups['swarm-manager-1'][0]}}" - set_fact: kong_admin_api_url: "{{kong_running_host.stdout}}" From 755ee96c3ce1eefacd4602180c615ea82992f3a5 Mon Sep 17 00:00:00 2001 From: S M Y Date: Mon, 4 Feb 2019 20:02:35 +0530 Subject: [PATCH 0952/1345] Issue #000 kong to deploy from vm --- ansible/roles/kong-api/tasks/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/kong-api/tasks/main.yml b/ansible/roles/kong-api/tasks/main.yml index 1f5dc84654..712a0db5df 100644 --- a/ansible/roles/kong-api/tasks/main.yml +++ b/ansible/roles/kong-api/tasks/main.yml @@ -22,7 +22,7 @@ # delay: 5 - name: Extracting where the host in which api manager is running - command: bash -lc "docker service ps api-manager_kong | grep Runn | head -n1 | awk '{print $4}'" + command: bash -lc "sudo docker service ps api-manager_kong | grep Runn | head -n1 | awk '{print $4}'" register: kong_running_host delegate_to: "{{groups['swarm-manager-1'][0]}}" From fe093436f0e9827a8f4acf5eb8b53344a8f906c8 Mon Sep 17 00:00:00 2001 From: S M Y Date: Mon, 4 Feb 2019 20:07:25 +0530 Subject: [PATCH 0953/1345] Issue #000 kong to deploy from vm --- ansible/roles/kong-api/tasks/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/kong-api/tasks/main.yml b/ansible/roles/kong-api/tasks/main.yml index 712a0db5df..70e5fc4fe7 100644 --- a/ansible/roles/kong-api/tasks/main.yml +++ b/ansible/roles/kong-api/tasks/main.yml @@ -27,7 +27,7 @@ delegate_to: "{{groups['swarm-manager-1'][0]}}" - set_fact: - kong_admin_api_url: "{{kong_running_host.stdout}}" + kong_admin_api_url: "http://{{kong_running_host.stdout}}:8001" - name: waiting for 30 seconds for api manager to be fully functional pause: From fe239da64af6c45c12d66b47bbb44f7034da912c Mon Sep 17 00:00:00 2001 From: S M Y Date: Mon, 4 Feb 2019 20:15:54 +0530 Subject: [PATCH 0954/1345] Issue #000 kong to deploy from vm --- ansible/api-manager.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ansible/api-manager.yml b/ansible/api-manager.yml index e71115e2ad..3ca85542c7 100644 --- a/ansible/api-manager.yml +++ b/ansible/api-manager.yml @@ -1,6 +1,6 @@ --- - name: Kong API - hosts: kong-api + hosts: groups['swarm-manager-1'][0] roles: - {role: kong-api, tags: ['kong-api']} - - {role: kong-consumer, tags: ['kong-consumer']} \ No newline at end of file + - {role: kong-consumer, tags: ['kong-consumer']} From 62c19ec92da827bf9522d816d1dd2be5e6bcd675 Mon Sep 17 00:00:00 2001 From: S M Y Date: Mon, 4 Feb 2019 20:17:31 +0530 Subject: [PATCH 0955/1345] Issue #000 kong to deploy from vm --- ansible/api-manager.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/api-manager.yml b/ansible/api-manager.yml index 3ca85542c7..4328f598a3 100644 --- a/ansible/api-manager.yml +++ b/ansible/api-manager.yml @@ -1,6 +1,6 @@ --- - name: Kong API - hosts: groups['swarm-manager-1'][0] + hosts: groups['swarm-manager-1'] roles: - {role: kong-api, tags: ['kong-api']} - {role: kong-consumer, tags: ['kong-consumer']} From 87e556ac9ddcf2c6544d990922d0c617011a5ff7 Mon Sep 17 00:00:00 2001 From: S M Y Date: Mon, 4 Feb 2019 20:19:53 +0530 Subject: [PATCH 0956/1345] Issue #000 kong to deploy from vm --- ansible/api-manager.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/api-manager.yml b/ansible/api-manager.yml index 4328f598a3..25b36cac36 100644 --- a/ansible/api-manager.yml +++ b/ansible/api-manager.yml @@ -1,6 +1,6 @@ --- - name: Kong API - hosts: groups['swarm-manager-1'] + hosts: "{{groups['swarm-manager-1'][0]}}" roles: - {role: kong-api, tags: ['kong-api']} - {role: kong-consumer, tags: ['kong-consumer']} From 63a1a969e972921391f15af32802e18938c12c54 Mon Sep 17 00:00:00 2001 From: S M Y Date: Mon, 4 Feb 2019 20:26:48 +0530 Subject: [PATCH 0957/1345] Issue #000 kong to deploy from vm --- ansible/api-manager.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/ansible/api-manager.yml b/ansible/api-manager.yml index 25b36cac36..8413d24952 100644 --- a/ansible/api-manager.yml +++ b/ansible/api-manager.yml @@ -1,5 +1,6 @@ --- - name: Kong API + become: yes hosts: "{{groups['swarm-manager-1'][0]}}" roles: - {role: kong-api, tags: ['kong-api']} From 73f62a5627537773d7ae3d57688aabcabbc357ba Mon Sep 17 00:00:00 2001 From: S M Y Date: Mon, 4 Feb 2019 20:34:46 +0530 Subject: [PATCH 0958/1345] Issue #000 kong to deploy from vm --- ansible/roles/kong-consumer/tasks/main.yml | 24 ++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/ansible/roles/kong-consumer/tasks/main.yml b/ansible/roles/kong-consumer/tasks/main.yml index 11c10b1e43..155fa8ac13 100644 --- a/ansible/roles/kong-consumer/tasks/main.yml +++ b/ansible/roles/kong-consumer/tasks/main.yml @@ -15,14 +15,22 @@ - name: Copy kong api scripts copy: src=static-files/kong-api-scripts dest=/tmp mode=0755 -- name: "Ensure kong_admin_api_url is available before running the scripts" - uri: - url: "{{ kong_admin_api_url }}/status" - status_code: 200 - register: result - until: result.status == 200 - retries: 60 - delay: 5 + #- name: "Ensure kong_admin_api_url is available before running the scripts" + # uri: + # url: "{{ kong_admin_api_url }}/status" + # status_code: 200 + # register: result + # until: result.status == 200 + # retries: 60 + # delay: 5 + +- name: Extracting where the host in which api manager is running + command: bash -lc "sudo docker service ps api-manager_kong | grep Runn | head -n1 | awk '{print $4}'" + register: kong_running_host + delegate_to: "{{groups['swarm-manager-1'][0]}}" + +- set_fact: + kong_admin_api_url: "http://{{kong_running_host.stdout}}:8001" - name: Run script to save consumers shell: "python /tmp/kong-api-scripts/kong_consumers.py /tmp/kong_consumers.json --kong-admin-api-url={{ kong_admin_api_url }}" From 4c749d514ad3529a598eee161be88ab9e0d43476 Mon Sep 17 00:00:00 2001 From: Kartish Date: Mon, 4 Feb 2019 21:05:01 +0530 Subject: [PATCH 0959/1345] Issue #0000 fix: keycloak update --- ansible/roles/keycloak/tasks/keycloak_bootstrap.yml | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/ansible/roles/keycloak/tasks/keycloak_bootstrap.yml b/ansible/roles/keycloak/tasks/keycloak_bootstrap.yml index 81f6067ca9..7ae742a0a9 100644 --- a/ansible/roles/keycloak/tasks/keycloak_bootstrap.yml +++ b/ansible/roles/keycloak/tasks/keycloak_bootstrap.yml @@ -5,7 +5,10 @@ delay: 5 - name: Initialize python library to run keycloak bootstrap script - shell: cd {{ role_path }}/files/python-keycloak-0.12.0 && python setup.py install + copy: src={{ role_path }}/files/python-keycloak-0.12.0 dest=/tmp/python-keycloak-0.12.0 recursive=yes + +- name: Initialize python library to run keycloak bootstrap script + shell: cd /tmp/python-keycloak-0.12.0 && python setup.py install - name: Save keycalok vars to json template: src="keycloak-bootstrap.conf.j2" dest="/tmp/keycloak-bootstrap.conf.json" mode="0644" @@ -18,10 +21,13 @@ - name: Pausing for 100 seconds sometime for keycloak to run completely pause: - seconds: 100 + seconds: 10 + +- name: Run the keycloak bootstrap script + copy: src={{ role_path }}/files/python-keycloak-0.12.0/keycloak/ dest=/tmp/keycloak recursive=yes - name: Run the keycloak bootstrap script - shell: cd {{ role_path }}/files/python-keycloak-0.12.0/keycloak/ && python keycloak_main.py /tmp/keycloak-bootstrap.conf.json + shell: cd /tmp/keycloak/ && python keycloak_main.py /tmp/keycloak-bootstrap.conf.json register: out until: '"404" not in out.stderr' retries: 2 From f71a836662502e9eee61c138c1ed0dda4fb15677 Mon Sep 17 00:00:00 2001 From: Kartish Date: Mon, 4 Feb 2019 21:09:49 +0530 Subject: [PATCH 0960/1345] Issue #0000 fix: keycloak update --- ansible/roles/keycloak/tasks/keycloak_bootstrap.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ansible/roles/keycloak/tasks/keycloak_bootstrap.yml b/ansible/roles/keycloak/tasks/keycloak_bootstrap.yml index 7ae742a0a9..411e6c02c5 100644 --- a/ansible/roles/keycloak/tasks/keycloak_bootstrap.yml +++ b/ansible/roles/keycloak/tasks/keycloak_bootstrap.yml @@ -4,8 +4,8 @@ port: 8080 delay: 5 -- name: Initialize python library to run keycloak bootstrap script - copy: src={{ role_path }}/files/python-keycloak-0.12.0 dest=/tmp/python-keycloak-0.12.0 recursive=yes +- name: Copying python libraries + copy: src={{ role_path }}/files/python-keycloak-0.12.0 dest=/tmp/ - name: Initialize python library to run keycloak bootstrap script shell: cd /tmp/python-keycloak-0.12.0 && python setup.py install @@ -23,8 +23,8 @@ pause: seconds: 10 -- name: Run the keycloak bootstrap script - copy: src={{ role_path }}/files/python-keycloak-0.12.0/keycloak/ dest=/tmp/keycloak recursive=yes +- name: Copy the keycloak bootstrap script + copy: src={{ role_path }}/files/python-keycloak-0.12.0/keycloak dest=/tmp/ recursive=yes - name: Run the keycloak bootstrap script shell: cd /tmp/keycloak/ && python keycloak_main.py /tmp/keycloak-bootstrap.conf.json From d571ce3e4c498689c41ec6d70287133fcfa383b7 Mon Sep 17 00:00:00 2001 From: S M Y Date: Mon, 4 Feb 2019 21:26:22 +0530 Subject: [PATCH 0961/1345] Issue #000 kong to deploy from vm --- ansible/roles/keycloak/tasks/keycloak_bootstrap.yml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/ansible/roles/keycloak/tasks/keycloak_bootstrap.yml b/ansible/roles/keycloak/tasks/keycloak_bootstrap.yml index 81f6067ca9..6cc7afff09 100644 --- a/ansible/roles/keycloak/tasks/keycloak_bootstrap.yml +++ b/ansible/roles/keycloak/tasks/keycloak_bootstrap.yml @@ -4,6 +4,14 @@ port: 8080 delay: 5 +- name: Install pip + apt: + name: "{{item}}" + update_cache: yes + with_items: + - python-pip + - python-setuptools + - name: Initialize python library to run keycloak bootstrap script shell: cd {{ role_path }}/files/python-keycloak-0.12.0 && python setup.py install From f12bc0421676d73498271d67dd5000e61de94f3c Mon Sep 17 00:00:00 2001 From: S M Y Date: Mon, 4 Feb 2019 21:30:10 +0530 Subject: [PATCH 0962/1345] Issue #000 :keycloak to deploy from vm --- ansible/roles/keycloak/tasks/keycloak_bootstrap.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/keycloak/tasks/keycloak_bootstrap.yml b/ansible/roles/keycloak/tasks/keycloak_bootstrap.yml index 1a3a44d849..8d9e274972 100644 --- a/ansible/roles/keycloak/tasks/keycloak_bootstrap.yml +++ b/ansible/roles/keycloak/tasks/keycloak_bootstrap.yml @@ -4,7 +4,7 @@ port: 8080 delay: 5 -- name: Install pip +- name: Install dependencies for keycloak apt: name: "{{item}}" update_cache: yes From 65714938c9d1eb60333d3f9bf24152e7e434855f Mon Sep 17 00:00:00 2001 From: "kaliraja.ramasamy" Date: Mon, 4 Feb 2019 21:37:14 +0530 Subject: [PATCH 0963/1345] Issue #0000 fix: DO-470 added the cassandra cql update role --- .../templates/cassandra_backup.j2 | 36 +++++++++++++------ 1 file changed, 26 insertions(+), 10 deletions(-) diff --git a/ansible/roles/cassandra-backup/templates/cassandra_backup.j2 b/ansible/roles/cassandra-backup/templates/cassandra_backup.j2 index 5c6da8ca16..2978d1f2d4 100644 --- a/ansible/roles/cassandra-backup/templates/cassandra_backup.j2 +++ b/ansible/roles/cassandra-backup/templates/cassandra_backup.j2 @@ -3,30 +3,45 @@ # Author: Rajesh Rajendran ''' -Create a snapshot and create tar ball in targetdirectory name +Create cassandra snapshot with specified name, +and create tar ball in targetdirectory name + +By default + +Cassandra data directory : /var/lib/cassandra/data +Snapshot name : cassandra_backup-YYYY-MM-DD +Backup name : cassandra_backup-YYYY-MM-DD.tar.gz usage: script snapshot_name -eg: ./cassandra_backup.py my_snapshot +eg: ./cassandra_backup.py + +for help ./cassandra_backup.py -h ''' -from os import path, walk, sep, system, getcwd, makedirs -from argparse import ArgumentParser +from os import walk, sep, system, getcwd, makedirs +from argparse import ArgumentParser from shutil import rmtree, ignore_patterns, copytree from re import match, compile from sys import exit from tempfile import mkdtemp +from time import strftime parser = ArgumentParser(description="Create a snapshot and create tar ball inside tardirectory") -parser.add_argument("-d","--datadirectory", metavar="datadir", default='/data/cassandra/data', help="path to create the tarball. Default /var/lib/cassadra/data") -parser.add_argument("snapshotname", help="name in which you want to take the snapshot") -parser.add_argument("-t","--tardirectory", metavar="tardir", default=getcwd(), help="path to create the tarball. Default {}".format(getcwd())) +parser.add_argument("-d", "--datadirectory", metavar="datadir", default='/var/lib/cassandra/data', + help="Path to cassadandra keyspaces. Default /var/lib/cassadra/data") +parser.add_argument("-s", "--snapshotname", metavar="snapshotname", + default="cassandra_backup-"+strftime("%Y-%m-%d"), + help="Name with which snapshot to be taken. Default {}".format("cassandra_backup-"+strftime("%Y-%m-%d"))) +parser.add_argument("-t", "--tardirectory", metavar="tardir", + default=getcwd(), help="Path to create the tarball. Default {}".format(getcwd())) args = parser.parse_args() # Create temporary directory to copy data -tmpdir=mkdtemp() +tmpdir = mkdtemp() makedirs(tmpdir+sep+"cassandra_backup") + def copy(): ''' Copying the data sanpshots to the target directory @@ -36,7 +51,7 @@ def copy(): try: for root, dirs, files in walk(args.datadirectory): - root_target_dir=tmpdir+sep+"cassandra_backup"+sep+sep.join(root.split(sep)[root_levels+1:-2]) + root_target_dir = tmpdir+sep+"cassandra_backup"+sep+sep.join(root.split(sep)[root_levels+1:-2]) if match(ignore_list, root_target_dir): continue if root.split(sep)[-1] == args.snapshotname: @@ -44,6 +59,7 @@ def copy(): except Exception as e: print(e) + # Creating schema command = "cqlsh -e 'DESC SCHEMA' > {}/cassandra_backup/db_schema.cql".format(tmpdir) rc = system(command) @@ -65,4 +81,4 @@ if rc == 0: system(command) # Cleaning up backup directory rmtree(tmpdir) - print("Cassandra backup completed and stored in {}/{}.tar.gz".format(args.tardirectory,args.snapshotname)) \ No newline at end of file + print("Cassandra backup completed and stored in {}/{}.tar.gz".format(args.tardirectory, args.snapshotname)) From 75cad67061fafc267454952d3164080ce142b5bc Mon Sep 17 00:00:00 2001 From: S M Y Date: Mon, 4 Feb 2019 21:45:20 +0530 Subject: [PATCH 0964/1345] Issue #000 :keycloak to deploy from vm --- ansible/inventory/env/group_vars/env.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/ansible/inventory/env/group_vars/env.yml b/ansible/inventory/env/group_vars/env.yml index a778426859..5d1146f8c8 100644 --- a/ansible/inventory/env/group_vars/env.yml +++ b/ansible/inventory/env/group_vars/env.yml @@ -491,4 +491,6 @@ vault_sms_method_type: "{{core_vault_sms_method_type}}" ## config_refresh_interval: -config_service_enabled: '' \ No newline at end of file +config_service_enabled: '' + +trampoline_secret: "{{core_vault_trampoline_secret}}" From f703c6a6ded09caf16086c8c86cc9f6ccb5a7e98 Mon Sep 17 00:00:00 2001 From: Kartish Date: Mon, 4 Feb 2019 21:51:27 +0530 Subject: [PATCH 0965/1345] Issue #0000 fix: keycloak update --- ansible/roles/keycloak/tasks/keycloak_bootstrap.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/keycloak/tasks/keycloak_bootstrap.yml b/ansible/roles/keycloak/tasks/keycloak_bootstrap.yml index 8d9e274972..af76e2416d 100644 --- a/ansible/roles/keycloak/tasks/keycloak_bootstrap.yml +++ b/ansible/roles/keycloak/tasks/keycloak_bootstrap.yml @@ -32,7 +32,7 @@ seconds: 10 - name: Copy the keycloak bootstrap script - copy: src={{ role_path }}/files/python-keycloak-0.12.0/keycloak dest=/tmp/ recursive=yes + copy: src={{ role_path }}/files/python-keycloak-0.12.0/keycloak dest=/tmp - name: Run the keycloak bootstrap script shell: cd /tmp/keycloak/ && python keycloak_main.py /tmp/keycloak-bootstrap.conf.json From 38daa593f8c2d055218d1b31b32db38a89053934 Mon Sep 17 00:00:00 2001 From: Santhosh Gandham Date: Tue, 5 Feb 2019 11:04:27 +0530 Subject: [PATCH 0966/1345] Update player vars --- ansible/inventory/env/group_vars/env.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ansible/inventory/env/group_vars/env.yml b/ansible/inventory/env/group_vars/env.yml index 5d1146f8c8..51293028b3 100644 --- a/ansible/inventory/env/group_vars/env.yml +++ b/ansible/inventory/env/group_vars/env.yml @@ -269,8 +269,8 @@ telemetry_proxy_url: "{{sunbird_ekstep_api_base_url}}/data/v3/telemetry" sunbird_telemetry_request_max_count: 100 sunbird_telemetry_api: "{{sunbird_ekstep_api_base_url}}/data/v3/telemetry" -sunbird_portal_cdn_url: "{{sunbird_cdn_url}}/player/" -sunbird_tenant_cdn_url: "{{sunbird_cdn_url}}/tenants" +sunbird_portal_cdn_url: "" +sunbird_tenant_cdn_url: "" # sunbird_cdn_url player_cdn_account_key: "{{core_vault_sunbird_azure_storage_key}}" @@ -490,7 +490,7 @@ vault_sms_method_type: "{{core_vault_sms_method_type}}" ## -config_refresh_interval: -config_service_enabled: '' +config_refresh_interval: 10 +config_service_enabled: false trampoline_secret: "{{core_vault_trampoline_secret}}" From 5dd6770b97f0e55a06de63d0828349906ded4529 Mon Sep 17 00:00:00 2001 From: "kaliraja.ramasamy" Date: Tue, 5 Feb 2019 11:19:14 +0530 Subject: [PATCH 0967/1345] Issue #0000 fix: updated the badger replicas --- ansible/inventory/env/group_vars/env.yml | 2 +- ansible/roles/stack-badger/tasks/.user.yml.swp | Bin 0 -> 12288 bytes 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 ansible/roles/stack-badger/tasks/.user.yml.swp diff --git a/ansible/inventory/env/group_vars/env.yml b/ansible/inventory/env/group_vars/env.yml index 51293028b3..9adea1fbcb 100644 --- a/ansible/inventory/env/group_vars/env.yml +++ b/ansible/inventory/env/group_vars/env.yml @@ -475,7 +475,7 @@ learner_replicas: 1 learner_reservation_memory: 1000M learner_limit_memory: 1000M learner_reservation_cpu: 1 -badger_replicas: 2 +badger_replicas: 1 badger_reservation_memory: 500MB badger_limit_memory: 500MB diff --git a/ansible/roles/stack-badger/tasks/.user.yml.swp b/ansible/roles/stack-badger/tasks/.user.yml.swp new file mode 100644 index 0000000000000000000000000000000000000000..a5900099174a499850ce5d17806a36032e0bdd3a GIT binary patch literal 12288 zcmeI2F>f426vrni0fQ9^C?A(7M}+qF9Bdq|WF&+TiUcBx2}yyl=60Wb%k9mKW@ZT| zbMO&>Z$O1a2@RA`@DXTG(o@hvMZtge&USLxAR!u}x4QrCy_wya|NHHm;&d|_zH|Le z+8%5w9P3KCwL9#P$43L^ zmD}^|Y{)}vMzyap*N&RHJPs@V03+twgnHC)?rp=kH|lbdjdXRuK94#~Lf!`UgW0q> zWin|J0zzPgz?ypT>PELTFZQ0Jr!U-E>6cIl2mv7=1cZPP5CTF#2nc~knLu>s)F(*r z{4&YQ%j>z7>oSy!5D)@FKnMr{As_^VfDjM@LO=)z0U_`|B%mv$?mec|XOF`?{{KJv z{r|^PO8p3Z3%vrp0Ifskq2HfW>Nn^I=sV~u=u5~#8oC9&4E3RBp=Y39)|C1g3Xq3x zL)W2SpHS*PbPxI-`UcvCZbIA8*YNcP^f{C~ehSGU1cZPP5CTF#2nYcoAOs#60z}5{ zHTIyO=v!7qo)78}*%wr{zClA6bJHv$%I?sOw|3vA{y0Wgkjg_EN`u-n;B{2zRZoc2@e2+HsG{C=F52 z>l|Zk4k%4R-6ZP7VP(q+d*Tndq)X2)BNyl+I>7EV9XpKC9C_**9l5~wQ(xCV*zi2Hk!h;Sac$Bn=%zxI zwvj_Y8wj1obj5K2+(4KT+qcNe8jZ(%N@&Ei-!{z*XH%wRb(6BIxY08VG{koli?7qL zS5wrQSf}M>P3#64_>y*ZXmR85QatL#11m*Uo8Y*Nlb!rvP}I6lsv^d literal 0 HcmV?d00001 From 65b8f54660d870871be3ec40c3818276e79b0148 Mon Sep 17 00:00:00 2001 From: harshavardhnc Date: Tue, 5 Feb 2019 11:39:59 +0530 Subject: [PATCH 0968/1345] Issue #0000 fix: badger role updated --- ansible/roles/stack-badger/tasks/user.yml | 7 ------- 1 file changed, 7 deletions(-) diff --git a/ansible/roles/stack-badger/tasks/user.yml b/ansible/roles/stack-badger/tasks/user.yml index 19b1ebf225..ae551e8217 100644 --- a/ansible/roles/stack-badger/tasks/user.yml +++ b/ansible/roles/stack-badger/tasks/user.yml @@ -1,11 +1,4 @@ --- -- name: Waiting for the container to be in start state - become: yes - shell: "docker inspect -f '{{'{{'}}.State.Running{{'}}'}}' $(docker ps | grep badger| head -n1 | awk '{print $1}')" - register: container - until: container.rc == 0 - retries: 20 - delay: 10 - name: Pausing for conainer to be fully functional pause: From 96cb0b298646483cffb2095477a0cc78ab1d81f1 Mon Sep 17 00:00:00 2001 From: harshavardhnc Date: Tue, 5 Feb 2019 11:53:34 +0530 Subject: [PATCH 0969/1345] Issue #0000 fix: badger role updated --- ansible/roles/stack-badger/tasks/user.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ansible/roles/stack-badger/tasks/user.yml b/ansible/roles/stack-badger/tasks/user.yml index ae551e8217..6b39adc323 100644 --- a/ansible/roles/stack-badger/tasks/user.yml +++ b/ansible/roles/stack-badger/tasks/user.yml @@ -13,16 +13,16 @@ - name: Copying user creation script to docker become: yes - shell: docker cp /tmp/user.sh $(docker ps | grep badger | awk '{print $1}' | head -n1):/tmp/user.sh + shell: docker cp /tmp/user.sh $(docker service ls | grep badger | awk '{print $1}' | head -n1):/tmp/user.sh - name: Creating superuser become: yes - shell: "docker exec $(docker ps | grep badger | awk '{print $1}' | head -n1) /tmp/user.sh" + shell: "docker exec $(docker service ls | grep badger | awk '{print $1}' | head -n1) /tmp/user.sh" no_log: true - name: Cleaning up secrets become: yes - shell: docker exec $(docker ps | grep badger | awk '{print $1}' | head -n1) rm /tmp/user.sh + shell: docker exec $(docker service ls | grep badger | awk '{print $1}' | head -n1) rm /tmp/user.sh - name: Getting auth token shell: curl -X POST 'http://localhost:8004/api-auth/token' -d "username="{{badger_admin_user}}"&password={{badger_admin_password}}" From b8564412cdaaf07084f6b1051996debdcf689950 Mon Sep 17 00:00:00 2001 From: "kaliraja.ramasamy" Date: Tue, 5 Feb 2019 11:57:41 +0530 Subject: [PATCH 0970/1345] Issue #0000 fix: DO-470 added the postgres exporter password --- ansible/inventory/env/group_vars/env.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/ansible/inventory/env/group_vars/env.yml b/ansible/inventory/env/group_vars/env.yml index 9adea1fbcb..9b0154a97c 100644 --- a/ansible/inventory/env/group_vars/env.yml +++ b/ansible/inventory/env/group_vars/env.yml @@ -29,6 +29,7 @@ jenkins_admin_password: "{{core_vault_jenkins_admin_password}}" bootstrap_user: "{{core_vault_bootstrap_user}}" bootstrap_key_path: "{{core_vault_bootstrap_key_path}}" vault_badging_authorization_key: "{{core_vault_badging_authorization_key}}" +vault_postgres_exporter_password: "{{core_vault_postgres_exporter_password}}" ## Postgres configuration swarm_address_space: "{{groups['swarm-manager'][0].split(\".\")[0]}}.0.0.0/8" #Application server address space (e.g. 10.3.0.0/24), also the agentpublicSubnet if using Azure scripts provided From 90ef762771d063fdb0eafd532ad63d9c7ef49458 Mon Sep 17 00:00:00 2001 From: harshavardhnc Date: Tue, 5 Feb 2019 12:14:45 +0530 Subject: [PATCH 0971/1345] Issue #0000 fix: badger role updated --- ansible/roles/stack-badger/tasks/user.yml | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/ansible/roles/stack-badger/tasks/user.yml b/ansible/roles/stack-badger/tasks/user.yml index 6b39adc323..3334564a35 100644 --- a/ansible/roles/stack-badger/tasks/user.yml +++ b/ansible/roles/stack-badger/tasks/user.yml @@ -13,19 +13,18 @@ - name: Copying user creation script to docker become: yes - shell: docker cp /tmp/user.sh $(docker service ls | grep badger | awk '{print $1}' | head -n1):/tmp/user.sh + shell: docker cp /tmp/user.sh $(docker ps | grep badger | awk '{print $1}' | head -n1):/tmp/user.sh - name: Creating superuser become: yes - shell: "docker exec $(docker service ls | grep badger | awk '{print $1}' | head -n1) /tmp/user.sh" + shell: "docker exec $(docker ps | grep badger | awk '{print $1}' | head -n1) /tmp/user.sh" no_log: true - name: Cleaning up secrets become: yes - shell: docker exec $(docker service ls | grep badger | awk '{print $1}' | head -n1) rm /tmp/user.sh + shell: docker exec $(docker ps | grep badger | awk '{print $1}' | head -n1) rm /tmp/user.sh - name: Getting auth token shell: curl -X POST 'http://localhost:8004/api-auth/token' -d "username="{{badger_admin_user}}"&password={{badger_admin_password}}" register: curl no_log: true - From b4ee963a578d1a6cbeda14da70d0396d82ced13c Mon Sep 17 00:00:00 2001 From: harshavardhnc Date: Tue, 5 Feb 2019 12:31:16 +0530 Subject: [PATCH 0972/1345] Issue #0000 fix: badger role updated --- ansible/roles/stack-badger/tasks/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/stack-badger/tasks/main.yml b/ansible/roles/stack-badger/tasks/main.yml index 7f6098f20b..35b6447680 100644 --- a/ansible/roles/stack-badger/tasks/main.yml +++ b/ansible/roles/stack-badger/tasks/main.yml @@ -46,7 +46,7 @@ - name: Including task run_once: true - include_tasks: user.yml + include: user.yml delegate_to: "{{server.stdout}}" - name: Copy admin auth token to desktop From 48adbb73aeb792d3abab763c7e234bd372d0354e Mon Sep 17 00:00:00 2001 From: G33tha Date: Tue, 5 Feb 2019 17:33:33 +0530 Subject: [PATCH 0973/1345] Update bootstrap.yml --- ansible/bootstrap.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/bootstrap.yml b/ansible/bootstrap.yml index ae3f23945e..099f885d92 100644 --- a/ansible/bootstrap.yml +++ b/ansible/bootstrap.yml @@ -1,4 +1,4 @@ -- hosts: 'all:!localhost' +- hosts: "{{hosts}}" become: yes gather_facts: no vars_files: From 854cfb1a0892aa2845a6860ee69836281464e521 Mon Sep 17 00:00:00 2001 From: G33tha Date: Tue, 5 Feb 2019 17:39:33 +0530 Subject: [PATCH 0974/1345] Update bootstrap.yml --- ansible/bootstrap.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/bootstrap.yml b/ansible/bootstrap.yml index 099f885d92..ae3f23945e 100644 --- a/ansible/bootstrap.yml +++ b/ansible/bootstrap.yml @@ -1,4 +1,4 @@ -- hosts: "{{hosts}}" +- hosts: 'all:!localhost' become: yes gather_facts: no vars_files: From d73090e9aafd7c21951fa38c2c6e5edccaa37b09 Mon Sep 17 00:00:00 2001 From: harshavardhnc Date: Tue, 5 Feb 2019 17:59:01 +0530 Subject: [PATCH 0975/1345] Issue #0000 fix: extra vars for running tag --- pipelines/deploy/monitor/Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pipelines/deploy/monitor/Jenkinsfile b/pipelines/deploy/monitor/Jenkinsfile index 5da4a4b0ea..dc90ac567f 100644 --- a/pipelines/deploy/monitor/Jenkinsfile +++ b/pipelines/deploy/monitor/Jenkinsfile @@ -20,7 +20,7 @@ node() { module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() ansiblePlaybook = "${currentWs}/ansible/monitoring.yml" - ansibleExtraArgs = "--vault-password-file /run/secrets/vault-pass -v" + ansibleExtraArgs = "--tags metrics-exporter --vault-password-file /run/secrets/vault-pass -v" values.put('currentWs', currentWs) values.put('env', envDir) values.put('module', module) From bc09cbe5e40472e8e8c4cc95ca7cac72dae094a5 Mon Sep 17 00:00:00 2001 From: Kartish Date: Tue, 5 Feb 2019 20:23:46 +0530 Subject: [PATCH 0976/1345] Issue #0000 fix: jenkins role update --- ansible/roles/jenkins/defaults/main.yml | 333 +++++++++++++++++- ansible/roles/jenkins/meta/main.yml | 3 + ansible/roles/jenkins/tasks/plugins.yml | 70 +++- .../jenkins/templates/basic-security.groovy | 19 +- 4 files changed, 400 insertions(+), 25 deletions(-) create mode 100644 ansible/roles/jenkins/meta/main.yml diff --git a/ansible/roles/jenkins/defaults/main.yml b/ansible/roles/jenkins/defaults/main.yml index 55d708ba8a..750e2624da 100644 --- a/ansible/roles/jenkins/defaults/main.yml +++ b/ansible/roles/jenkins/defaults/main.yml @@ -1,7 +1,7 @@ --- # Optional method of pinning a specific version of Jenkins and/or overriding the # default Jenkins packaging URL. -# jenkins_version: "1.644" +jenkins_version: "2.154" # jenkins_pkg_url: "https://www.example.com" jenkins_connection_delay: 5 @@ -13,6 +13,11 @@ jenkins_jar_location: /opt/jenkins-cli.jar jenkins_plugins: [] jenkins_url_prefix: "" jenkins_java_options: "-Djenkins.install.runSetupWizard=false" +jenkins_plugins_install_dependencies: true +jenkins_plugins_state: present +jenkins_plugin_updates_expiration: 86400 +jenkins_plugin_timeout: 30 + jenkins_admin_username: admin jenkins_admin_password: admin @@ -22,4 +27,328 @@ jenkins_init_changes: - option: "JENKINS_ARGS" value: "--prefix={{ jenkins_url_prefix }}" - option: "{{ jenkins_java_options_env_var }}" - value: "{{ jenkins_java_options }}" \ No newline at end of file + value: "{{ jenkins_java_options }}" +jenkins_plugins: + ansicolor: + version: "0.5.2" + blueocean-pipeline-editor: + version: "0.2.0" + blueocean-personalization: + version: "1.1.4" + nodejs: + version: "1.2.2" + blueocean-i18n: + version: "1.1.4" + sse-gateway: + version: "1.15" + jquery: + version: "1.11.2-0" + blueocean-events: + version: "1.1.4" + role-strategy: + version: "2.5.1" + pipeline-milestone-step: + version: "1.3.1" + durable-task: + version: "1.28" + token-macro: + version: "2.5" + pipeline-stage-tags-metadata: + version: "1.3.4" + rebuild: + version: "1.29" + pipeline-input-step: + version: "2.9" + branch-api: + version: "2.1.1" + antisamy-markup-formatter: + version: "1.5" + pubsub-light: + version: "1.12" + conditional-buildstep: + version: "1.3.6" + ws-cleanup: + version: "0.36" + greenballs: + version: "1.15" + workflow-aggregator: + version: "2.6" + command-launcher: + version: "1.2" + workflow-durable-task-step: + version: "2.27" + favorite: + version: "2.3.2" + workflow-cps-global-lib: + version: "2.12" + email-ext: + version: "2.63" + cloudbees-folder: + version: "6.7" + blueocean-web: + version: "1.9.0" + pipeline-rest-api: + version: "2.10" + workflow-step-api: + version: "2.17" + plain-credentials: + version: "1.4" + trilead-api: + version: "1.0.1" + uno-choice: + version: "2.1" + scm-api: + version: "2.3.0" + credentials: + version: "2.1.18" + blueocean-pipeline-scm-api: + version: "1.9.0" + git-server: + version: "1.7" + github: + version: "1.29.3" + jacoco: + version: "3.0.4" + github-branch-source: + version: "2.4.1" + authentication-tokens: + version: "1.3" + display-url-api: + version: "2.3.0" + external-monitor-job: + version: "1.7" + docker-workflow: + version: "1.17" + junit: + version: "1.26.1" + resource-disposer: + version: "0.12" + script-security: + version: "1.49" + jobgenerator: + version: "1.22" + pipeline-model-declarative-agent: + version: "1.1.1" + pipeline-utility-steps: + version: "2.2.0" + javadoc: + version: "1.4" + pipeline-model-api: + version: "1.3.4" + thinBackup: + version: "1.9" + lockable-resources: + version: "2.3" + ssh-slaves: + version: "1.29.1" + handlebars: + version: "1.1.1" + jdk-tool: + version: "1.1" + pam-auth: + version: "1.4" + subversion: + version: "2.12.1" + blueocean-core-js: + version: "1.9.0" + maven-plugin: + version: "3.1.2" + github-api: + version: "1.95" + job-dsl: + version: "1.71" + code-coverage-api: + version: "1.0.5" + blueocean-pipeline-api-impl: + version: "1.9.0" + jackson2-api: + version: "2.9.7.1" + pipeline-build-step: + version: "2.7" + blueocean-rest: + version: "1.9.0" + s3: + version: "0.11.2" + backup: + version: "1.6.1" + ldap: + version: "1.20" + workflow-scm-step: + version: "2.7" + multiple-scms: + version: "0.6" + matrix-auth: + version: "2.3" + timestamper: + version: "1.8.10" + ssh-agent: + version: "1.17" + pipeline-model-extensions: + version: "1.3.4" + build-user-vars-plugin: + version: "1.5" + matrix-project: + version: "1.13" + pipeline-stage-step: + version: "2.3" + blueocean-jwt: + version: "1.9.0" + pipeline-graph-analysis: + version: "1.9" + workflow-support: + version: "2.24" + run-condition: + version: "1.2" + icon-shim: + version: "2.0.3" + git: + version: "3.9.1" + workflow-basic-steps: + version: "2.13" + gradle: + version: "1.29" + jenkins-design-language: + version: "1.9.0" + ant: + version: "1.9" + pipeline-stage-view: + version: "2.10" + git-client: + version: "2.7.4" + workflow-multibranch: + version: "2.20" + parameterized-trigger: + version: "2.35.2" + hudson-wsclean-plugin: + version: "1.0.5" + audit-trail: + version: "2.3" + blueocean-rest-impl: + version: "1.9.0" + pipeline-model-definition: + version: "1.3.4" + generic-webhook-trigger: + version: "1.50" + workflow-api: + version: "2.33" + ssh-credentials: + version: "1.14" + bouncycastle-api: + version: "2.17" + workflow-job: + version: "2.31" + credentials-binding: + version: "1.17" + docker-commons: + version: "1.13" + momentjs: + version: "1.1.1" + apache-httpcomponents-client-4-api: + version: "4.5.5-3.0" + blueocean-commons: + version: "1.9.0" + envinject-api: + version: "1.5" + cobertura: + version: "1.13" + aws-java-sdk: + version: "1.11.457" + ace-editor: + version: "1.1" + jsch: + version: "0.1.54.2" + config-file-provider: + version: "3.4.1" + mailer: + version: "1.22" + mapdb-api: + version: "1.0.9.0" + variant: + version: "1.1" + jquery-detached: + version: "1.2.1" + structs: + version: "1.17" + windows-slaves: + version: "1.3.1" + pipeline-github-lib: + version: "1.0" + jobConfigHistory: + version: "2.19" + build-timeout: + version: "1.19" + workflow-cps: + version: "2.61" + pipeline-maven: + version: "3.6.6" + build-pipeline-plugin: + version: "1.5.8" + copyartifact: + version: "1.41" + slack: + version: "2.3" + htmlpublisher: + version: "1.14" + metrics: + version: "3.1.2.10" + blueocean-dashboard: + version: "1.1.4" + blueocean-display-url: + version: "2.0" + blueocean-github-pipeline: + version: "1.1.4" + swarm: + version: "3.4" + blueocean-config: + version: "1.1.4" + delivery-pipeline-plugin: + version: "1.0.3" + blueocean-git-pipeline: + version: "1.1.4" + blueocean-autofavorite: + version: "1.0.0" + blueocean: + version: "1.1.4" + # - ant + # - antisamy-markup-formatter + # - artifact-promotion + # - cloudbees-credentials + # - cobertura + # - copyartifact + # - credentials + # - cvs + # - delivery-pipeline-plugin + # - discard-old-build + # - envfile + # - external-monitor-job + # - git + # - git-client + # - gradle + # - greenballs + # - jacoco + # - javadoc + # - jquery + # - junit + # - ldap + # - mailer + # - mapdb-api + # - matrix-auth + # - matrix-project + # - maven-plugin + # - next-build-number + # - pam-auth + # - parameterized-trigger + # - scm-api + # - script-security + # - slack + # - ssh + # - ssh-credentials + # - ssh-slaves + # - subversion + # - token-macro + # - thinBackup + # - translation + # - windows-slaves + # - s3 + # - publish-over-ssh + # - timestamper \ No newline at end of file diff --git a/ansible/roles/jenkins/meta/main.yml b/ansible/roles/jenkins/meta/main.yml new file mode 100644 index 0000000000..ab47bd76ed --- /dev/null +++ b/ansible/roles/jenkins/meta/main.yml @@ -0,0 +1,3 @@ +--- +dependencies: + - java8 \ No newline at end of file diff --git a/ansible/roles/jenkins/tasks/plugins.yml b/ansible/roles/jenkins/tasks/plugins.yml index 9c0788d10b..98f2469a6f 100644 --- a/ansible/roles/jenkins/tasks/plugins.yml +++ b/ansible/roles/jenkins/tasks/plugins.yml @@ -1,6 +1,20 @@ --- # Jenkins doesn't allow updates via CLI, though that is required before plugins # can be installed via CLI. See: https://gist.github.com/rowan-m/1026918 +# jenkins_plugin module doesn't support password files. +- name: Get Jenkins admin password from file. + slurp: + src: "{{ jenkins_admin_password_file }}" + register: adminpasswordfile + no_log: true + when: jenkins_admin_password_file != "" + tags: ['skip_ansible_lint'] + +- name: Set Jenkins admin password fact. + set_fact: + jenkins_admin_password: "{{ adminpasswordfile['stdout'] | default(jenkins_admin_password) }}" + no_log: true + - name: Create Jenkins updates folder. file: path: "{{ jenkins_home }}/updates" @@ -28,24 +42,44 @@ path: "{{ jenkins_admin_password_file }}" register: adminpasswordfile +# - name: Install Jenkins plugins using password. +# command: > +# java -jar {{ jenkins_jar_location }} -s http://{{ jenkins_hostname }}:{{ jenkins_http_port }}{{ jenkins_url_prefix | default('') }}/ +# install-plugin {{ item }} +# --username {{ jenkins_admin_username }} +# --password {{ jenkins_admin_password }} +# creates="{{ jenkins_home }}/plugins/{{ item }}.jpi" +# with_items: "{{ jenkins_plugins }}" +# when: jenkins_admin_password != "" +# notify: restart jenkins + +# - name: Install Jenkins plugins using password-file. +# command: > +# java -jar {{ jenkins_jar_location }} -s http://{{ jenkins_hostname }}:{{ jenkins_http_port }}{{ jenkins_url_prefix | default('') }}/ +# install-plugin {{ item }} +# --username {{ jenkins_admin_username }} +# --password-file {{ jenkins_admin_password_file }} +# creates={{ jenkins_home }}/plugins/{{ item }}.jpi +# with_items: "{{ jenkins_plugins }}" +# when: adminpasswordfile.stat.exists == True +# notify: restart jenkins + - name: Install Jenkins plugins using password. - command: > - java -jar {{ jenkins_jar_location }} -s http://{{ jenkins_hostname }}:{{ jenkins_http_port }}{{ jenkins_url_prefix | default('') }}/ - install-plugin {{ item }} - --username {{ jenkins_admin_username }} - --password {{ jenkins_admin_password }} - creates="{{ jenkins_home }}/plugins/{{ item }}.jpi" - with_items: "{{ jenkins_plugins }}" + jenkins_plugin: + name: "{{ item.key }}" + version: "{{ item.value['version'] }}" + jenkins_home: "{{ jenkins_home }}" + url_username: "{{ jenkins_admin_username }}" + url_password: "{{ jenkins_admin_password }}" + state: "{{ jenkins_plugins_state }}" + timeout: "{{ jenkins_plugin_timeout }}" + updates_expiration: "{{ jenkins_plugin_updates_expiration }}" + url: "http://{{ jenkins_hostname }}:{{ jenkins_http_port }}{{ jenkins_url_prefix }}" + with_dependencies: "{{ jenkins_plugins_install_dependencies }}" + when: > + 'version' in item.value + with_dict: "{{ jenkins_plugins }}" + #with_items: "{{ jenkins_plugins }}" when: jenkins_admin_password != "" notify: restart jenkins - -- name: Install Jenkins plugins using password-file. - command: > - java -jar {{ jenkins_jar_location }} -s http://{{ jenkins_hostname }}:{{ jenkins_http_port }}{{ jenkins_url_prefix | default('') }}/ - install-plugin {{ item }} - --username {{ jenkins_admin_username }} - --password-file {{ jenkins_admin_password_file }} - creates={{ jenkins_home }}/plugins/{{ item }}.jpi - with_items: "{{ jenkins_plugins }}" - when: adminpasswordfile.stat.exists == True - notify: restart jenkins + tags: ['skip_ansible_lint'] \ No newline at end of file diff --git a/ansible/roles/jenkins/templates/basic-security.groovy b/ansible/roles/jenkins/templates/basic-security.groovy index 847aa5a7c9..eddd0fdf07 100755 --- a/ansible/roles/jenkins/templates/basic-security.groovy +++ b/ansible/roles/jenkins/templates/basic-security.groovy @@ -3,17 +3,26 @@ import hudson.security.* import jenkins.model.* def instance = Jenkins.getInstance() +def hudsonRealm = new HudsonPrivateSecurityRealm(false) +def users = hudsonRealm.getAllUsers() +users_s = users.collect { it.toString() } -println "--> Checking if security has been set already" +// Create the admin user account if it doesn't already exist. +if ("{{ jenkins_admin_username }}" in users_s) { + println "Admin user already exists - updating password" -if (!instance.isUseSecurity()) { - println "--> creating local user 'admin'" + def user = hudson.model.User.get('{{ jenkins_admin_username }}'); + def password = hudson.security.HudsonPrivateSecurityRealm.Details.fromPlainPassword('{{ jenkins_admin_password }}') + user.addProperty(password) + user.save() +} +else { + println "--> creating local admin user" - def hudsonRealm = new HudsonPrivateSecurityRealm(false) hudsonRealm.createAccount('{{ jenkins_admin_username }}', '{{ jenkins_admin_password }}') instance.setSecurityRealm(hudsonRealm) def strategy = new FullControlOnceLoggedInAuthorizationStrategy() instance.setAuthorizationStrategy(strategy) instance.save() -} +} \ No newline at end of file From 795722991e81d300e4e2613dd489d770071df037 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Wed, 6 Feb 2019 09:44:47 +0530 Subject: [PATCH 0977/1345] Update artifacts-upload.yml --- ansible/artifacts-upload.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/artifacts-upload.yml b/ansible/artifacts-upload.yml index ee7661a89b..c09e66dd2c 100644 --- a/ansible/artifacts-upload.yml +++ b/ansible/artifacts-upload.yml @@ -1,5 +1,5 @@ --- -- hosts: local +- hosts: localhost become: yes vars_files: - "{{inventory_dir}}/secrets.yml" From a72f9fb69ada1238aa7dc888181c8319dcb62cc9 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Wed, 6 Feb 2019 09:47:08 +0530 Subject: [PATCH 0978/1345] Update main.yml --- ansible/roles/artifacts-upload-azure/tasks/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/artifacts-upload-azure/tasks/main.yml b/ansible/roles/artifacts-upload-azure/tasks/main.yml index 07977a6ed0..785dc1a455 100644 --- a/ansible/roles/artifacts-upload-azure/tasks/main.yml +++ b/ansible/roles/artifacts-upload-azure/tasks/main.yml @@ -4,5 +4,5 @@ - name: Upload to azure blob storage command: az storage blob upload -c {{ artifacts_container }} --name {{ artifact }} -f {{ artifact_path }} - async: 100 + async: 3600 poll: 10 From bc9abccfff339865429cd167c9c776edf3554ba4 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Wed, 6 Feb 2019 11:10:15 +0530 Subject: [PATCH 0979/1345] Update Jenkinsfile --- pipelines/summary/Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pipelines/summary/Jenkinsfile b/pipelines/summary/Jenkinsfile index 8279640cd0..b0fe07d6f4 100644 --- a/pipelines/summary/Jenkinsfile +++ b/pipelines/summary/Jenkinsfile @@ -2,7 +2,7 @@ node(){ cleanWs() stage('check upstream') { values = [:] - def upstream = currentBuild.rawBuild.getCause(hudson.model.Cause$UpstreamCause) + upstream = currentBuild.rawBuild.getCause(hudson.model.Cause$UpstreamCause) triggerCause = upstream?.shortDescription if (triggerCause != null) triggerCause = triggerCause.split()[4].replaceAll('"', '') From 0b58fde6171325197e8eac0b3acd8c31668de095 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Wed, 6 Feb 2019 11:18:46 +0530 Subject: [PATCH 0980/1345] Check shared lib of deployed versions --- pipelines/summary/Jenkinsfile | 55 ++--------------------------------- 1 file changed, 2 insertions(+), 53 deletions(-) diff --git a/pipelines/summary/Jenkinsfile b/pipelines/summary/Jenkinsfile index b0fe07d6f4..2fe23cebb1 100644 --- a/pipelines/summary/Jenkinsfile +++ b/pipelines/summary/Jenkinsfile @@ -1,56 +1,5 @@ +@Library('deploy-conf') _ node(){ cleanWs() - stage('check upstream') { - values = [:] - upstream = currentBuild.rawBuild.getCause(hudson.model.Cause$UpstreamCause) - triggerCause = upstream?.shortDescription - if (triggerCause != null) - triggerCause = triggerCause.split()[4].replaceAll('"', '') - values.put('absolute_job_path', triggerCause) - } - - stage('Write data') - { - envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-3].trim() - if (values.absolute_job_path != null) - { - module = values.absolute_job_path.split('/')[-2].toString().trim() - jobName = values.absolute_job_path.split('/')[-1].toString().trim() - println envDir + " " + module + " " + jobName - - copyArtifacts projectName: values.absolute_job_path, fingerprintArtifacts: true, flatten: true, filter: 'metadata.json' - - sh """ - mkdir -p ${JENKINS_HOME}/summary/${envDir} - touch -a ${JENKINS_HOME}/summary/${envDir}/summary.txt - sed -i "s/${jobName}.*//g" ${JENKINS_HOME}/summary/${envDir}/summary.txt - sed -i "/^\\\$/d" ${JENKINS_HOME}/summary/$envDir}/summary.txt - """ - - if (module == "Core"){ - image_name = sh(returnStdout: true, script: 'jq -r .image_name metadata.json').trim() - image_tag = sh(returnStdout: true, script: 'jq -r .image_tag metadata.json').trim() - println image_name + " " + image_tag - sh """ - echo "${image_name} : ${image_tag}" >> $JENKINS_HOME/summary/${envDir}/summary.txt - """ - } - else { - artifact_version = sh(returnStdout: true, script: 'jq -r .artifact_version metadata.json').trim() - println artifact_version - sh """ - echo "${module}-${jobName} : ${artifact_version}" >> $JENKINS_HOME/summary/${envDir}/summary.txt - """ - } - } - else - println "This job can be only triggered from an upstream project." - - } - - stage('Archive artifacts'){ - sh "cp ${JENKINS_HOME}/summary/${envDir}/summary.txt ." - archiveArtifacts artifacts: 'summary.txt', fingerprint: true, onlyIfSuccessful: true - } - + deployed_versions() } From 1c0c48c6ad25c37a2e143f34d65da6cd78944f8a Mon Sep 17 00:00:00 2001 From: "kaliraja.ramasamy" Date: Wed, 6 Feb 2019 13:24:56 +0530 Subject: [PATCH 0981/1345] Issue #0000 fix: DO-470 updated the config templates --- .../templates/config.j2 | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/ansible/roles/vm-agents-processexporter/templates/config.j2 b/ansible/roles/vm-agents-processexporter/templates/config.j2 index 7204c4f20a..87dec4ff39 100644 --- a/ansible/roles/vm-agents-processexporter/templates/config.j2 +++ b/ansible/roles/vm-agents-processexporter/templates/config.j2 @@ -1,54 +1,54 @@ process_names: -{% if hostvars[inventory_hostname]['ansible_default_ipv4']['address'] in groups['kafka-ps'] %} +{% if 'kafka-ps' in group_names and hostvars[inventory_hostname]['ansible_default_ipv4']['address'] in groups['kafka-ps'] %} - name: "kafka" comm: - java cmdline: - .+kafka.+ {% endif %} -{% if hostvars[inventory_hostname]['ansible_default_ipv4']['address'] in groups['secor-ps'] %} +{% if 'secor-ps' in group_names and hostvars[inventory_hostname]['ansible_default_ipv4']['address'] in groups['secor-ps'] %} - name: "secor" comm: - java cmdline: - .+secor.+ {% endif %} -{% if hostvars[inventory_hostname]['ansible_default_ipv4']['address'] in groups['kafka-ps'] %} +{% if 'kafka-ps' in group_names and hostvars[inventory_hostname]['ansible_default_ipv4']['address'] in groups['kafka-ps'] %} - name: "zookeeper" comm: - java cmdline: - .+zookeeper.+ {% endif %} -{% if hostvars[inventory_hostname]['ansible_default_ipv4']['address'] in groups['yarn-ps'] %} +{% if 'yarn-ps' in group_names and hostvars[inventory_hostname]['ansible_default_ipv4']['address'] in groups['yarn-ps'] %} - name: "yarn" comm: - java cmdline: - .+yarn.+ {% endif %} -{% if hostvars[inventory_hostname]['ansible_default_ipv4']['address'] in groups['cassandra-ps'] %} +{% if 'cassandra-ps' in group_names and hostvars[inventory_hostname]['ansible_default_ipv4']['address'] in groups['cassandra-ps'] %} - name: "cassandra" comm: - java cmdline: - .+cassandra.+ {% endif %} -{% if hostvars[inventory_hostname]['ansible_default_ipv4']['address'] in groups['es-ps'] %} +{% if 'es-ps' in group_names and hostvars[inventory_hostname]['ansible_default_ipv4']['address'] in groups['es-ps'] %} - name: "elasticsearch" comm: - java cmdline: - .+elasticsearch.+ {% endif %} -{% if hostvars[inventory_hostname]['ansible_default_ipv4']['address'] in groups['logstash-ps'] %} +{% if 'logstash-ps' in group_names and hostvars[inventory_hostname]['ansible_default_ipv4']['address'] in groups['logstash-ps'] %} - name: "logstash" comm: - java cmdline: - .+logstash.+ {% endif %} -{% if hostvars[inventory_hostname]['ansible_default_ipv4']['address'] in groups['analytics-ps'] %} +{% if 'analytics-ps' in group_names and hostvars[inventory_hostname]['ansible_default_ipv4']['address'] in groups['analytics-ps'] %} - name: "analyticsapi" comm: - java From 9626a34247a068ec1d288be0224309e615d6e57e Mon Sep 17 00:00:00 2001 From: "kaliraja.ramasamy" Date: Wed, 6 Feb 2019 13:58:46 +0530 Subject: [PATCH 0982/1345] Issue #0000 fix: DO-470 removed the unlinking task --- ansible/roles/vm-agents-processexporter/tasks/main.yml | 5 ----- 1 file changed, 5 deletions(-) diff --git a/ansible/roles/vm-agents-processexporter/tasks/main.yml b/ansible/roles/vm-agents-processexporter/tasks/main.yml index f2a486a2ba..54ebf4e564 100755 --- a/ansible/roles/vm-agents-processexporter/tasks/main.yml +++ b/ansible/roles/vm-agents-processexporter/tasks/main.yml @@ -66,8 +66,3 @@ name: process-exporter state: started enabled: yes - -- name: unlinking process exporter which is not required - shell: "sudo rm -rf /opt/prometheus/exporters/process_exporter_current" - become: yes - when: not ( inventory_hostname in groups['kafka-ps'] or inventory_hostname in groups['secor-ps'] or inventory_hostname in groups['yarn-ps'] or inventory_hostname in groups['cassandra-ps'] or inventory_hostname in groups['es-ps'] or inventory_hostname in groups['logstash-ps'] or inventory_hostname in groups['analytics-ps'] ) From 2f4d4d59986be41a70c47d1df3b7cf197c4151a0 Mon Sep 17 00:00:00 2001 From: harshavardhnc Date: Wed, 6 Feb 2019 14:29:43 +0530 Subject: [PATCH 0983/1345] Issue #00 fix: jenkinsfile for monitoring --- pipelines/deploy/monitor/Core/Jenkinsfile | 38 +++++++++++++++++++ .../deploy/monitor/DataPipeline/Jenkinsfile | 38 +++++++++++++++++++ .../monitor/KnowledgePlatform/Jenkinsfile | 38 +++++++++++++++++++ 3 files changed, 114 insertions(+) create mode 100644 pipelines/deploy/monitor/Core/Jenkinsfile create mode 100644 pipelines/deploy/monitor/DataPipeline/Jenkinsfile create mode 100644 pipelines/deploy/monitor/KnowledgePlatform/Jenkinsfile diff --git a/pipelines/deploy/monitor/Core/Jenkinsfile b/pipelines/deploy/monitor/Core/Jenkinsfile new file mode 100644 index 0000000000..5da4a4b0ea --- /dev/null +++ b/pipelines/deploy/monitor/Core/Jenkinsfile @@ -0,0 +1,38 @@ +@Library('deploy-conf') _ +node() { + try { + String ANSI_GREEN = "\u001B[32m" + String ANSI_NORMAL = "\u001B[0m" + String ANSI_BOLD = "\u001B[1m" + String ANSI_RED = "\u001B[31m" + String ANSI_YELLOW = "\u001B[33m" + + stage('checkout public repo') { + cleanWs() + checkout scm + } + + ansiColor('xterm') { + stage('deploy'){ + values = [:] + currentWs = sh(returnStdout: true, script: 'pwd').trim() + envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-3].trim() + module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() + jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() + ansiblePlaybook = "${currentWs}/ansible/monitoring.yml" + ansibleExtraArgs = "--vault-password-file /run/secrets/vault-pass -v" + values.put('currentWs', currentWs) + values.put('env', envDir) + values.put('module', module) + values.put('jobName', jobName) + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + println values + ansible_playbook_run(values) + } + } + } + catch (err) { + throw err + } +} diff --git a/pipelines/deploy/monitor/DataPipeline/Jenkinsfile b/pipelines/deploy/monitor/DataPipeline/Jenkinsfile new file mode 100644 index 0000000000..dc90ac567f --- /dev/null +++ b/pipelines/deploy/monitor/DataPipeline/Jenkinsfile @@ -0,0 +1,38 @@ +@Library('deploy-conf') _ +node() { + try { + String ANSI_GREEN = "\u001B[32m" + String ANSI_NORMAL = "\u001B[0m" + String ANSI_BOLD = "\u001B[1m" + String ANSI_RED = "\u001B[31m" + String ANSI_YELLOW = "\u001B[33m" + + stage('checkout public repo') { + cleanWs() + checkout scm + } + + ansiColor('xterm') { + stage('deploy'){ + values = [:] + currentWs = sh(returnStdout: true, script: 'pwd').trim() + envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-3].trim() + module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() + jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() + ansiblePlaybook = "${currentWs}/ansible/monitoring.yml" + ansibleExtraArgs = "--tags metrics-exporter --vault-password-file /run/secrets/vault-pass -v" + values.put('currentWs', currentWs) + values.put('env', envDir) + values.put('module', module) + values.put('jobName', jobName) + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + println values + ansible_playbook_run(values) + } + } + } + catch (err) { + throw err + } +} diff --git a/pipelines/deploy/monitor/KnowledgePlatform/Jenkinsfile b/pipelines/deploy/monitor/KnowledgePlatform/Jenkinsfile new file mode 100644 index 0000000000..dc90ac567f --- /dev/null +++ b/pipelines/deploy/monitor/KnowledgePlatform/Jenkinsfile @@ -0,0 +1,38 @@ +@Library('deploy-conf') _ +node() { + try { + String ANSI_GREEN = "\u001B[32m" + String ANSI_NORMAL = "\u001B[0m" + String ANSI_BOLD = "\u001B[1m" + String ANSI_RED = "\u001B[31m" + String ANSI_YELLOW = "\u001B[33m" + + stage('checkout public repo') { + cleanWs() + checkout scm + } + + ansiColor('xterm') { + stage('deploy'){ + values = [:] + currentWs = sh(returnStdout: true, script: 'pwd').trim() + envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-3].trim() + module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() + jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() + ansiblePlaybook = "${currentWs}/ansible/monitoring.yml" + ansibleExtraArgs = "--tags metrics-exporter --vault-password-file /run/secrets/vault-pass -v" + values.put('currentWs', currentWs) + values.put('env', envDir) + values.put('module', module) + values.put('jobName', jobName) + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + println values + ansible_playbook_run(values) + } + } + } + catch (err) { + throw err + } +} From 4ab0097c2b1dac263169418fbe32dad80fc7d3c4 Mon Sep 17 00:00:00 2001 From: G33tha Date: Wed, 6 Feb 2019 15:27:13 +0530 Subject: [PATCH 0984/1345] Update users.yml --- ansible/roles/postgresql-data-update/tasks/users.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/postgresql-data-update/tasks/users.yml b/ansible/roles/postgresql-data-update/tasks/users.yml index 33e5ebdbba..f49bb23e89 100755 --- a/ansible/roles/postgresql-data-update/tasks/users.yml +++ b/ansible/roles/postgresql-data-update/tasks/users.yml @@ -13,7 +13,7 @@ port: "{{ item.port | default(omit) }}" state: "{{ item.state | default('present') }}" with_items: "{{ postgresql_users }}" - no_log: true + #no_log: true become: yes become_user: "{{ postgresql_user }}" # See: https://github.com/ansible/ansible/issues/16048#issuecomment-229012509 From d11295ec9f4437d6727bedc382dc6e4f0963ccf5 Mon Sep 17 00:00:00 2001 From: G33tha Date: Wed, 6 Feb 2019 15:42:30 +0530 Subject: [PATCH 0985/1345] Update main.yml --- ansible/roles/postgresql-data-update/tasks/main.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ansible/roles/postgresql-data-update/tasks/main.yml b/ansible/roles/postgresql-data-update/tasks/main.yml index 64218d9ba7..615f9188cf 100644 --- a/ansible/roles/postgresql-data-update/tasks/main.yml +++ b/ansible/roles/postgresql-data-update/tasks/main.yml @@ -1,8 +1,8 @@ - name: Verifying db users are present else creating them - include: users.yml + include: databases.yml - name: creating database - include: databases.yml + include: users.yml - name: Copy the templates become: yes From 7cf4b99a60c22f1589b39bb61649f49a3ef47e82 Mon Sep 17 00:00:00 2001 From: G33tha Date: Wed, 6 Feb 2019 15:45:28 +0530 Subject: [PATCH 0986/1345] Update users.yml --- ansible/roles/postgresql-data-update/tasks/users.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/postgresql-data-update/tasks/users.yml b/ansible/roles/postgresql-data-update/tasks/users.yml index f49bb23e89..33e5ebdbba 100755 --- a/ansible/roles/postgresql-data-update/tasks/users.yml +++ b/ansible/roles/postgresql-data-update/tasks/users.yml @@ -13,7 +13,7 @@ port: "{{ item.port | default(omit) }}" state: "{{ item.state | default('present') }}" with_items: "{{ postgresql_users }}" - #no_log: true + no_log: true become: yes become_user: "{{ postgresql_user }}" # See: https://github.com/ansible/ansible/issues/16048#issuecomment-229012509 From 55711720d7463e15851f450438e3b03d27da8cf8 Mon Sep 17 00:00:00 2001 From: msknext Date: Wed, 6 Feb 2019 15:56:56 +0530 Subject: [PATCH 0987/1345] restructre pipeline script --- .../Jenkinsfile.db.update => postgres-db-update/Jenkinsfile} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename pipelines/provision/{postgres/Jenkinsfile.db.update => postgres-db-update/Jenkinsfile} (100%) diff --git a/pipelines/provision/postgres/Jenkinsfile.db.update b/pipelines/provision/postgres-db-update/Jenkinsfile similarity index 100% rename from pipelines/provision/postgres/Jenkinsfile.db.update rename to pipelines/provision/postgres-db-update/Jenkinsfile From 277bab19a708d20a38818aacf06981de190fedad Mon Sep 17 00:00:00 2001 From: msknext Date: Wed, 6 Feb 2019 16:17:52 +0530 Subject: [PATCH 0988/1345] feat: Adding jenkins setup files --- deploy/jenkins/butler | Bin 0 -> 8166370 bytes deploy/jenkins/jenkins-config-setup.sh | 26 +++ deploy/jenkins/jenkins-server-setup.sh | 59 ++++++ deploy/jenkins/jobs/ArtifactUpload/config.xml | 29 +++ .../jobs/ArtifactUpload/jobs/dev/config.xml | 29 +++ .../jobs/dev/jobs/Core/config.xml | 34 ++++ .../dev/jobs/Core/jobs/APIManager/config.xml | 98 ++++++++++ .../jobs/Core/jobs/APIManagerEcho/config.xml | 98 ++++++++++ .../dev/jobs/Core/jobs/AdminUtils/config.xml | 98 ++++++++++ .../jobs/dev/jobs/Core/jobs/Badger/config.xml | 98 ++++++++++ .../dev/jobs/Core/jobs/Cassandra/config.xml | 97 ++++++++++ .../jobs/dev/jobs/Core/jobs/Config/config.xml | 98 ++++++++++ .../dev/jobs/Core/jobs/Content/config.xml | 98 ++++++++++ .../dev/jobs/Core/jobs/Keycloak/config.xml | 99 ++++++++++ .../dev/jobs/Core/jobs/Learner/config.xml | 98 ++++++++++ .../jobs/dev/jobs/Core/jobs/Player/config.xml | 98 ++++++++++ .../jobs/dev/jobs/Core/jobs/Proxy/config.xml | 98 ++++++++++ .../dev/jobs/Core/jobs/Telemetry/config.xml | 98 ++++++++++ .../jobs/dev/jobs/DataPipeline/config.xml | 34 ++++ .../DataPipeline/jobs/Analytics/config.xml | 98 ++++++++++ .../DataPipeline/jobs/DataPipeline/config.xml | 98 ++++++++++ .../jobs/DataPipeline/jobs/Secor/config.xml | 98 ++++++++++ .../dev/jobs/KnowledgePlatform/config.xml | 34 ++++ .../jobs/KnowledgePlatform/config.xml | 98 ++++++++++ .../KnowledgePlatform/jobs/Neo4j/config.xml | 90 +++++++++ .../jobs/SyncTool/config.xml | 90 +++++++++ .../KnowledgePlatform/jobs/Yarn/config.xml | 90 +++++++++ deploy/jenkins/jobs/Build/config.xml | 29 +++ .../jenkins/jobs/Build/jobs/Core/config.xml | 29 +++ .../jobs/Core/jobs/APIManager/config.xml | 31 ++++ .../jobs/Core/jobs/APIManagerEcho/config.xml | 31 ++++ .../jobs/Core/jobs/AdminUtils/config.xml | 65 +++++++ .../Build/jobs/Core/jobs/Badger/config.xml | 75 ++++++++ .../Build/jobs/Core/jobs/Cassandra/config.xml | 76 ++++++++ .../Build/jobs/Core/jobs/Config/config.xml | 75 ++++++++ .../Build/jobs/Core/jobs/Content/config.xml | 67 +++++++ .../Build/jobs/Core/jobs/Keycloak/config.xml | 66 +++++++ .../Build/jobs/Core/jobs/Learner/config.xml | 75 ++++++++ .../Build/jobs/Core/jobs/Player/config.xml | 75 ++++++++ .../Build/jobs/Core/jobs/Proxy/config.xml | 67 +++++++ .../Build/jobs/Core/jobs/Telemetry/config.xml | 75 ++++++++ .../jobs/Build/jobs/DataPipeline/config.xml | 29 +++ .../DataPipeline/jobs/Analytics/config.xml | 76 ++++++++ .../DataPipeline/jobs/DataPipeline/config.xml | 75 ++++++++ .../jobs/DataPipeline/jobs/Secor/config.xml | 75 ++++++++ .../Build/jobs/KnowledgePlatform/config.xml | 29 +++ .../jobs/KnowledgePlatform/config.xml | 74 ++++++++ .../KnowledgePlatform/jobs/Neo4j/config.xml | 74 ++++++++ .../jobs/SyncTool/config.xml | 74 ++++++++ .../KnowledgePlatform/jobs/Yarn/config.xml | 74 ++++++++ deploy/jenkins/jobs/Deploy/config.xml | 29 +++ .../jenkins/jobs/Deploy/jobs/dev/config.xml | 29 +++ .../jobs/Deploy/jobs/dev/jobs/Core/config.xml | 29 +++ .../dev/jobs/Core/jobs/APIManager/config.xml | 78 ++++++++ .../dev/jobs/Core/jobs/AdminUtils/config.xml | 78 ++++++++ .../jobs/ApplicationElasticSearch/config.xml | 50 +++++ .../jobs/dev/jobs/Core/jobs/Badger/config.xml | 77 ++++++++ .../dev/jobs/Core/jobs/Cassandra/config.xml | 138 ++++++++++++++ .../jobs/dev/jobs/Core/jobs/Config/config.xml | 77 ++++++++ .../dev/jobs/Core/jobs/Content/config.xml | 77 ++++++++ .../dev/jobs/Core/jobs/Keycloak/config.xml | 149 +++++++++++++++ .../jobs/Core/jobs/KeycloakRealm/config.xml | 149 +++++++++++++++ .../dev/jobs/Core/jobs/Learner/config.xml | 77 ++++++++ .../Core/jobs/LoggerElasticSearch/config.xml | 66 +++++++ .../dev/jobs/Core/jobs/Logging/config.xml | 50 +++++ .../dev/jobs/Core/jobs/Monitoring/config.xml | 50 +++++ .../dev/jobs/Core/jobs/OnboardAPIs/config.xml | 57 ++++++ .../Core/jobs/OnboardConsumers/config.xml | 50 +++++ .../jobs/dev/jobs/Core/jobs/Player/config.xml | 77 ++++++++ .../jobs/dev/jobs/Core/jobs/Proxy/config.xml | 66 +++++++ .../dev/jobs/Core/jobs/Telemetry/config.xml | 77 ++++++++ .../Core/jobs/TelemetryLogstash/config.xml | 50 +++++ .../TelemetryLogstashDataPipeline/config.xml | 50 +++++ .../jobs/dev/jobs/DataPipeline/config.xml | 29 +++ .../DataPipeline/jobs/AnalyticsAPI/config.xml | 145 +++++++++++++++ .../jobs/AnalyticsFetchLogs/config.xml | 83 +++++++++ .../AnalyticsGeoLocationDBSetup/config.xml | 57 ++++++ .../config.xml | 89 +++++++++ .../jobs/AnalyticsReplayJobs/config.xml | 103 +++++++++++ .../jobs/AnalyticsStartJobManager/config.xml | 67 +++++++ .../jobs/AnalyticsSubmitJobs/config.xml | 67 +++++++ .../jobs/CassandraDbUpdate/config.xml | 57 ++++++ .../DataPipeline/jobs/DataProducts/config.xml | 145 +++++++++++++++ .../DataPipeline/jobs/KafkaIndexer/config.xml | 57 ++++++ .../DataPipeline/jobs/KafkaSetup/config.xml | 57 ++++++ .../jobs/SamzaTelemetrySchemas/config.xml | 67 +++++++ .../jobs/DataPipeline/jobs/Secor/config.xml | 145 +++++++++++++++ .../jobs/DataPipeline/jobs/Yarn/config.xml | 146 +++++++++++++++ .../dev/jobs/KnowledgePlatform/config.xml | 29 +++ .../jobs/CassandraDbUpdate/config.xml | 60 ++++++ .../jobs/ContentTool/config.xml | 160 ++++++++++++++++ .../jobs/FileSyncTool/config.xml | 151 +++++++++++++++ .../jobs/KafkaSetup/config.xml | 60 ++++++ .../jobs/Learning/config.xml | 149 +++++++++++++++ .../KnowledgePlatform/jobs/Neo4j/config.xml | 148 +++++++++++++++ .../jobs/Neo4jDefinitionUpdate/config.xml | 60 ++++++ .../Neo4jElasticSearchSyncTool/config.xml | 173 ++++++++++++++++++ .../jobs/SamzaTelemetrySchemas/config.xml | 73 ++++++++ .../KnowledgePlatform/jobs/Search/config.xml | 149 +++++++++++++++ .../jobs/StartNeo4jCluster/config.xml | 61 ++++++ .../jobs/ValidateLearning/config.xml | 60 ++++++ .../KnowledgePlatform/jobs/Yarn/config.xml | 148 +++++++++++++++ .../Deploy/jobs/dev/jobs/Summary/config.xml | 34 ++++ .../Summary/jobs/DeployedVersions/config.xml | 64 +++++++ .../jenkins/jobs/OpsAdministration/config.xml | 29 +++ .../OpsAdministration/jobs/dev/config.xml | 29 +++ .../jobs/dev/jobs/Core/config.xml | 29 +++ .../ApplicationElasticsearchBackup/config.xml | 50 +++++ .../config.xml | 50 +++++ .../dev/jobs/Core/jobs/Bootstrap/config.xml | 67 +++++++ .../jobs/Core/jobs/CassandraBackup/config.xml | 50 +++++ .../jobs/LoggerElasticSearchBackup/config.xml | 50 +++++ .../LoggerElasticSearchRestore/config.xml | 50 +++++ .../Core/jobs/PostgresqlBackup/config.xml | 51 ++++++ .../Core/jobs/PostgresqlRestore/config.xml | 51 ++++++ .../Core/jobs/PrometheusBackup/config.xml | 50 +++++ .../jobs/Core/jobs/SwarmBootstrap/config.xml | 50 +++++ .../jobs/dev/jobs/DataPipeline/config.xml | 29 +++ .../DataPipeline/jobs/Bootstrap/config.xml | 60 ++++++ .../jobs/CassandraBackup/config.xml | 74 ++++++++ .../jobs/CassandraRestore/config.xml | 74 ++++++++ .../jobs/ElasticsearchBackup/config.xml | 67 +++++++ .../jobs/ElasticsearchRestore/config.xml | 75 ++++++++ .../jobs/InfluxDBBackup/config.xml | 57 ++++++ .../jobs/PostgresqlBackup/config.xml | 51 ++++++ .../jobs/PostgresqlRestore/config.xml | 51 ++++++ .../dev/jobs/KnowledgePlatform/config.xml | 29 +++ .../jobs/Bootstrap/config.xml | 60 ++++++ .../jobs/CassandraBackup/config.xml | 67 +++++++ .../jobs/CassandraRestore/config.xml | 67 +++++++ .../jobs/ElasticsearchBackup/config.xml | 53 ++++++ .../jobs/ElasticsearchRestore/config.xml | 61 ++++++ .../jobs/Neo4jBackup/config.xml | 43 +++++ .../jobs/Neo4jRestore/config.xml | 85 +++++++++ deploy/jenkins/jobs/Provision/config.xml | 29 +++ .../jobs/Provision/jobs/dev/config.xml | 29 +++ .../Provision/jobs/dev/jobs/Core/config.xml | 29 +++ .../dev/jobs/Core/jobs/Cassandra/config.xml | 50 +++++ .../jobs/Core/jobs/JenkinsSlave/config.xml | 60 ++++++ .../jobs/dev/jobs/Core/jobs/Kafka/config.xml | 50 +++++ .../dev/jobs/Core/jobs/Keycloak/config.xml | 50 +++++ .../jobs/dev/jobs/Core/jobs/Log_ES/config.xml | 50 +++++ .../dev/jobs/Core/jobs/Postgres/config.xml | 50 +++++ .../Core/jobs/PostgresDbUpdate/config.xml | 50 +++++ .../dev/jobs/Core/jobs/Registry/config.xml | 50 +++++ .../jobs/dev/jobs/Core/jobs/Secor/config.xml | 50 +++++ .../jobs/dev/jobs/DataPipeline/config.xml | 29 +++ .../DataPipeline/jobs/AnalyticsAPI/config.xml | 57 ++++++ .../jobs/AnalyticsSecor/config.xml | 56 ++++++ .../jobs/AnalyticsSpark/config.xml | 57 ++++++ .../DataPipeline/jobs/Cassandra/config.xml | 57 ++++++ .../DataPipeline/jobs/InfluxDB/config.xml | 56 ++++++ .../jobs/DataPipeline/jobs/Kafka/config.xml | 57 ++++++ .../jobs/DataPipeline/jobs/Kibana/config.xml | 57 ++++++ .../DataPipeline/jobs/Postgres/config.xml | 56 ++++++ .../jobs/TelemetrySearch/config.xml | 57 ++++++ .../jobs/DataPipeline/jobs/Yarn/config.xml | 57 ++++++ .../DataPipeline/jobs/Zookeeper/config.xml | 57 ++++++ .../dev/jobs/KnowledgePlatform/config.xml | 29 +++ .../jobs/Cassandra/config.xml | 60 ++++++ .../jobs/CompositeSearch/config.xml | 61 ++++++ .../KnowledgePlatform/jobs/Kafka/config.xml | 61 ++++++ .../jobs/Learning/config.xml | 53 ++++++ .../KnowledgePlatform/jobs/Neo4j/config.xml | 61 ++++++ .../KnowledgePlatform/jobs/Redis/config.xml | 61 ++++++ .../KnowledgePlatform/jobs/Search/config.xml | 60 ++++++ .../KnowledgePlatform/jobs/Yarn/config.xml | 61 ++++++ .../jobs/Zookeeper/config.xml | 61 ++++++ deploy/jenkins/plugins.txt | 140 ++++++++++++++ 169 files changed, 11539 insertions(+) create mode 100755 deploy/jenkins/butler create mode 100755 deploy/jenkins/jenkins-config-setup.sh create mode 100755 deploy/jenkins/jenkins-server-setup.sh create mode 100644 deploy/jenkins/jobs/ArtifactUpload/config.xml create mode 100644 deploy/jenkins/jobs/ArtifactUpload/jobs/dev/config.xml create mode 100644 deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/config.xml create mode 100644 deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/APIManager/config.xml create mode 100644 deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/APIManagerEcho/config.xml create mode 100644 deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/AdminUtils/config.xml create mode 100644 deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Badger/config.xml create mode 100644 deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Cassandra/config.xml create mode 100644 deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Config/config.xml create mode 100644 deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Content/config.xml create mode 100644 deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Keycloak/config.xml create mode 100644 deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Learner/config.xml create mode 100644 deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Player/config.xml create mode 100644 deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Proxy/config.xml create mode 100644 deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Telemetry/config.xml create mode 100644 deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/DataPipeline/config.xml create mode 100644 deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/DataPipeline/jobs/Analytics/config.xml create mode 100644 deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/DataPipeline/jobs/DataPipeline/config.xml create mode 100644 deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/DataPipeline/jobs/Secor/config.xml create mode 100644 deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/KnowledgePlatform/config.xml create mode 100644 deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/KnowledgePlatform/jobs/KnowledgePlatform/config.xml create mode 100644 deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4j/config.xml create mode 100644 deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/KnowledgePlatform/jobs/SyncTool/config.xml create mode 100644 deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/KnowledgePlatform/jobs/Yarn/config.xml create mode 100644 deploy/jenkins/jobs/Build/config.xml create mode 100644 deploy/jenkins/jobs/Build/jobs/Core/config.xml create mode 100644 deploy/jenkins/jobs/Build/jobs/Core/jobs/APIManager/config.xml create mode 100644 deploy/jenkins/jobs/Build/jobs/Core/jobs/APIManagerEcho/config.xml create mode 100644 deploy/jenkins/jobs/Build/jobs/Core/jobs/AdminUtils/config.xml create mode 100644 deploy/jenkins/jobs/Build/jobs/Core/jobs/Badger/config.xml create mode 100644 deploy/jenkins/jobs/Build/jobs/Core/jobs/Cassandra/config.xml create mode 100644 deploy/jenkins/jobs/Build/jobs/Core/jobs/Config/config.xml create mode 100644 deploy/jenkins/jobs/Build/jobs/Core/jobs/Content/config.xml create mode 100644 deploy/jenkins/jobs/Build/jobs/Core/jobs/Keycloak/config.xml create mode 100644 deploy/jenkins/jobs/Build/jobs/Core/jobs/Learner/config.xml create mode 100644 deploy/jenkins/jobs/Build/jobs/Core/jobs/Player/config.xml create mode 100644 deploy/jenkins/jobs/Build/jobs/Core/jobs/Proxy/config.xml create mode 100644 deploy/jenkins/jobs/Build/jobs/Core/jobs/Telemetry/config.xml create mode 100644 deploy/jenkins/jobs/Build/jobs/DataPipeline/config.xml create mode 100644 deploy/jenkins/jobs/Build/jobs/DataPipeline/jobs/Analytics/config.xml create mode 100644 deploy/jenkins/jobs/Build/jobs/DataPipeline/jobs/DataPipeline/config.xml create mode 100644 deploy/jenkins/jobs/Build/jobs/DataPipeline/jobs/Secor/config.xml create mode 100644 deploy/jenkins/jobs/Build/jobs/KnowledgePlatform/config.xml create mode 100644 deploy/jenkins/jobs/Build/jobs/KnowledgePlatform/jobs/KnowledgePlatform/config.xml create mode 100644 deploy/jenkins/jobs/Build/jobs/KnowledgePlatform/jobs/Neo4j/config.xml create mode 100644 deploy/jenkins/jobs/Build/jobs/KnowledgePlatform/jobs/SyncTool/config.xml create mode 100644 deploy/jenkins/jobs/Build/jobs/KnowledgePlatform/jobs/Yarn/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/APIManager/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/AdminUtils/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/ApplicationElasticSearch/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Badger/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Cassandra/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Config/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Content/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Keycloak/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/KeycloakRealm/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Learner/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/LoggerElasticSearch/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Logging/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Monitoring/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/OnboardAPIs/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/OnboardConsumers/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Player/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Proxy/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Telemetry/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/TelemetryLogstash/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/TelemetryLogstashDataPipeline/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsAPI/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsFetchLogs/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsGeoLocationDBSetup/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsPopulatePSQLConsumerChannelMapping/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsReplayJobs/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsStartJobManager/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsSubmitJobs/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/CassandraDbUpdate/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/DataProducts/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/KafkaIndexer/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/KafkaSetup/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/SamzaTelemetrySchemas/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/Secor/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/Yarn/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/CassandraDbUpdate/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/ContentTool/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/FileSyncTool/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/KafkaSetup/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Learning/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4j/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4jDefinitionUpdate/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4jElasticSearchSyncTool/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/SamzaTelemetrySchemas/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Search/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/StartNeo4jCluster/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/ValidateLearning/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Yarn/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Summary/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Summary/jobs/DeployedVersions/config.xml create mode 100644 deploy/jenkins/jobs/OpsAdministration/config.xml create mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/dev/config.xml create mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/config.xml create mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/ApplicationElasticsearchBackup/config.xml create mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/ApplicationElasticsearchRestore/config.xml create mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/Bootstrap/config.xml create mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/CassandraBackup/config.xml create mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/LoggerElasticSearchBackup/config.xml create mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/LoggerElasticSearchRestore/config.xml create mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/PostgresqlBackup/config.xml create mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/PostgresqlRestore/config.xml create mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/PrometheusBackup/config.xml create mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/SwarmBootstrap/config.xml create mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/config.xml create mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/Bootstrap/config.xml create mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/CassandraBackup/config.xml create mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/CassandraRestore/config.xml create mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/ElasticsearchBackup/config.xml create mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/ElasticsearchRestore/config.xml create mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/InfluxDBBackup/config.xml create mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/PostgresqlBackup/config.xml create mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/PostgresqlRestore/config.xml create mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/KnowledgePlatform/config.xml create mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/KnowledgePlatform/jobs/Bootstrap/config.xml create mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/KnowledgePlatform/jobs/CassandraBackup/config.xml create mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/KnowledgePlatform/jobs/CassandraRestore/config.xml create mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/KnowledgePlatform/jobs/ElasticsearchBackup/config.xml create mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/KnowledgePlatform/jobs/ElasticsearchRestore/config.xml create mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4jBackup/config.xml create mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4jRestore/config.xml create mode 100644 deploy/jenkins/jobs/Provision/config.xml create mode 100644 deploy/jenkins/jobs/Provision/jobs/dev/config.xml create mode 100644 deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/config.xml create mode 100644 deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Cassandra/config.xml create mode 100644 deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/JenkinsSlave/config.xml create mode 100644 deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Kafka/config.xml create mode 100644 deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Keycloak/config.xml create mode 100644 deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Log_ES/config.xml create mode 100644 deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Postgres/config.xml create mode 100644 deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/PostgresDbUpdate/config.xml create mode 100644 deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Registry/config.xml create mode 100644 deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Secor/config.xml create mode 100644 deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/config.xml create mode 100644 deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/AnalyticsAPI/config.xml create mode 100644 deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/AnalyticsSecor/config.xml create mode 100644 deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/AnalyticsSpark/config.xml create mode 100644 deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/Cassandra/config.xml create mode 100644 deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/InfluxDB/config.xml create mode 100644 deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/Kafka/config.xml create mode 100644 deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/Kibana/config.xml create mode 100644 deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/Postgres/config.xml create mode 100644 deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/TelemetrySearch/config.xml create mode 100644 deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/Yarn/config.xml create mode 100644 deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/Zookeeper/config.xml create mode 100644 deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/config.xml create mode 100644 deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Cassandra/config.xml create mode 100644 deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/CompositeSearch/config.xml create mode 100644 deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Kafka/config.xml create mode 100644 deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Learning/config.xml create mode 100644 deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4j/config.xml create mode 100644 deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Redis/config.xml create mode 100644 deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Search/config.xml create mode 100644 deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Yarn/config.xml create mode 100644 deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Zookeeper/config.xml create mode 100644 deploy/jenkins/plugins.txt diff --git a/deploy/jenkins/butler b/deploy/jenkins/butler new file mode 100755 index 0000000000000000000000000000000000000000..652e1962a53004387cc1a1b9a1024d7551040f1a GIT binary patch literal 8166370 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�qJeV0h8BIN6i?XU=9kdHHfh{O$TZaA4eN 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%0AHc1Y6MBgi?x+HkEdwiNDW7g&>(M1-Tb_N3lFA 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⪙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
2*)2~~}Dpd?V3&HR{T6<*w@gz7~ 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
    bKf0e{tGF=@e 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ð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 RUjyN>o_+77fzY! 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%0DwWGFe#5mT%aaZ#oMeHm?Jd=b>M!QC# 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


    &yINQbf&zT1N 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�G7d3WEVPHlz%{8W1e& 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%0AJ?z0bu#}2pq<63!(sCw1K9Olu==ZeO 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

    1a# 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 z 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%0D;0bE~6b!Q3*dL~U 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 =jyHDqrr{nLX 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%0A&2?98F=lu)FyawQX7t3la{yHMMZIY1-NeK@>+_! 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

    fp9v6Baep2AanJ-z607W)^c36Zj0thS$U_^B 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

    X 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%0Du1?^?3D1rJP?s`X7+|MycV&OkzG9p~t`qC# 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%0Akwy|Cb3!T8xbWyFi&b2 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

    w+-#XH%w~j2t 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
  1. U9Ru|LW3V8NR|Z0cYjxK6_MnGJ8vQZyH?q*q#^j@dPQi|q%b~ng}rl+_m?p#5Tk`A=dDCxlSjErasIO>Bp zDfK7A zn?o`4mm_%_|B754pMN4jWn5==yM@hfyrBAX!n_IZO0u{EK*CJBe`jAz)97MFC$eIU)(Co5#P~j zS#BOAd|kEy8l|Wtt6}9$C@k0Q(^I2VNpK=r7Qw#oRVv_VaWg71FJ#}>ENJQ_SEax7 zlTcl}jrMt&`@T>qg$)NYS(+S!2<1?E2Zk!>w~9u zZ|j84hKH9wb%dj}8H49hFi^{{9SGpW_Aw^R!~?jTK@q`;MEmVWK^9J2<`10vYZ(Y( zX4$`QQ*Wa(H9)?4UgR?P29*!FaJDX1l$j4V3oV(s#fA&-X{`L@uDT^5BLqCdOp20l z>l=j>o{kOp3ez#ix4R~W5Nifdivr>!Z&I$Z>zmXRV*+fBNE!6Se1&3pjMSSf3d|4Q zsAOW3l8yy9=}TbR3{KdVDSc5ubp5H4>4ootBrp6pcnXK$!)XYNmd?5%9G-4lWS5r5 zrt#>|1(m5pvHycoQ9KH6e()8^`%0-no?4aTIJpYg0|2`u;6DFWmD4INKYsZ;RHx%XMJCWIXpxg^FZPKn zWLnPW0o9zK_{5(nDi)zm4c=`*iQ4REjPQMq`=Rff9nZM8i@*k~&sm1JF zi0MmNj@qlCI92wXe%Zzkl{=UVZi}VIsB>llMXsnWF@Mj5Nc$ZQ%n_D0z%2QXsZpK{ zzT35LMA0)%<(R>2+^5FY3a%0{Rc-8Og&ppq2>&rJ7}f+bs7o_+&3^u2#G)cxVZU=lvP^^_Mz^LP^&; z!&s8vKJ{-`kw92e@zk!vio?E^p++<9^y$SDV|WWskbUvPiu5!<7bCeayyZ4g$ zpHNtsih?rKbl{3OZp{n7dNwO`3hibD>YX3!06NDSgmGo~6yYr^+(m(3I7&YpD5;kz zs>D~|rcHbl_;m@MCB@eUd~YNw8wqX{%pZTUrFe3@m)ogPTVb z=wx#y4Y*GLp8u&_z*hwGFhnx9#)OF$fbdxX1$~JmFOmU)dS?oHT+j#TZIzca!Cn@a zpS;~uZm@-N`*)j^@86d!3BXOC@ql%X#OViiU!4&RuzdpVZ|}$jEA$$g9D2vG!Pr}E z96W$WrKy~9Q6TkvP9f5}re`i%u?`RA_>e$yhC-+vsZ5|Ibu#IbpFV$0Ad*@6S@H8q z!D?%2rU2(v#>-O|R#2CEkZ!x`lAk~CYXYW#x78-gLpUc&G44HAmz1djk7$iUeHh=s z4e%26`#`=nGJ-S*N6Id|A1^-#)y?v`FGsIx?YOT)FHcQP+R9|kfe9V5rtnqh)KNV& zJ!LQK`BHRyt;d(62firY0mFW^KzvCv77MnB;AMYUD`@;*2;|7eSS;8AC6XhZ%MMbw z<^Z7Xjg7@rE(4jgGB04eO4DbAHIIg@-jB0t`PB*2?9OVVUTakO@rhYc?)2AH$v*OP zi4M&L(>RNXjuzWrvDBB*b4YIJlNrJFm)}#IkTY&M1GoS7Tub`$m6l=*xMW|0t+cJ- zihb*7RLARMSU<%?A1>OrUQSu7ZMk;NkK=lM`w+9Q+92-M&o+mvdvUeCb#R6fm+D&s zj%C>571Jh%$&62#x!e3q1#k-V!F&m1+;fuUApT}Ld;b# z#^ra&7})Q0#f*`yBZiY)7W#~nKcX3!49~46+58*S*lo<{j+Re6vjKu?WFWV0-L?gR zK(Ziqcij z<3=T?*w%yri8t`P3d2d}<+r!|Kv+r(af*;-1V}~_#FrsY0AI>UzXbufaIeaWS&o+@ zHXV8k=e~nn@>R-K-61vXJutT6@|2X}A1g`bvS4_AuRz|d#ZOE!h`rPIy+i$%xIaHaL+EY1hB^Y(#{weDQ z!v$e2T(K%w=LWynV%RX`UHUdQ&-()c@gL3<$c5)jH>RjdJr^b_^J-W*?yDWcL4S4C zt}pN%l%jJ~1SZ}9YB6tMz@!hF(LO3S4-a_zAx0c9(a?%>4wh`nOhmM*?A?+q31>Uk z3x_f=$7NX!%HTr$CJAJAUP`yotL!Qc)tf& zCpkAM34g|xJ}m_6k`G>}ABKUJDFpkwx5>J;lla$RnHA{$4-|4%#v!$ye@Xv@2w27j{@;z5fyy_LeFK!b-Sn)=1J)8Hl%s2JY-+fhFrZg*{e*K|Bb3EpT zp%Vi-Zr06uH?h%_^c6L>rZsX*P{aY3)>1P`d@?iX7kZxl^Geqk$W>?JbJv(xbbfZZ zYigB@wkvL87)?$&#j;CjBh{5t-ccaX0%KJ{Xoaf^!h6|Pf}j^*NH+)Q(eGqX1TgzB z6~uULk}tvffGd47;Xr9l3f!C{1{IjA^YWr`Y9G5#StT>v5hBEj*rTxd>l>6^(t@7I zb%c54tf~e#+3_knyWJIs2v&mQNxvZfffB)UXjYf;2Dz2TS&G46-O0lPcfa_H%B3j~ zv*Q2ntve-=VCLN-iKIJEBEIrNCDmMoW7ZBC`k+qR!wp3~s^cCR%Py+Z=Ck>XY>etS z0B`noS;J^&kT;H0>j$VNGf|GeW}I_G?k4nnAFGj8YvUtFvIFazedOqu1^m|^BLYq{ zQ#p<_)f9bA@#uPs<8YQUGdVH|RZ1{)|% zRXT;fkNvXJN!swSU7FMsU4hgMEl73shmO=93#xUQc%Hk+rInKoo=a$66k6}ys5GZk zmL_;***d~vXrqMr_3KK6?XMt_Gl8AgHZE&B4(yKf9IigXkI@Y^Ni<|`!Kju{W&t7#;Cf?)SHm6#>IycOBC zFn+=_lS@Z3mTuV-6Q$k?;}W~GXfAEDCW6ISQqBQGJ1(6>5Z5)yfG|J!>m~$~f=^5H zQbq$?pO(fZwB@mVMw;6tjqQ`tM-2ReTWh0LzP-)2#$+ba*E*FHMsY6;`2ggutql+1 zJvH1>xa3*`)v_FSxoF(R0;;8b=Gv$%eybJpxGw4nAWS|(YDQP{^suTnV+yxs3j#r$ zTl~jW3EENrqTjdBs^ZpYysHgIKV2WHjaMfQht=vum1AUeC`S>kzT%0h-Fl^RBqy%s zW(mPv{*ap`@@N&l${h--iR>ufQJ$zxRENrA(dbA~b3)O+-_TK>zssXBaTYAD+Q|bu zAmGk?vVx_Dx3aDx&RJQol49wSpKt9~xtZ1a=a9`d@b0lHH48Cwq^w^c?%u8hQq*v# zdSx5ht@s|G#02UrcDcKB1_V~cVA4kJZ@xo3y}*nKrYwmEv6?u5CB?+yq%I&XIA6)@ zOf8%x8jv49afblOBJ9~5jbT$rt;nYj*r|ARC;pYn2F6?n`cyQkxEdr!2)9*W2+v%t>2m6#6+S7r`XL3?QJ8E?E%ZA9zHGEQh2;gUTo(oFJ&K*DUETcGNj6*2&?K>R3NT6b1ztXP zsqs{9?AuLY$rrDQOB0l^?AT9@UviCysNu`k7=wjlqqQ+!|7w8cW0=?}5fXOcb+Ro? zRu7L(k?*e8;tXW*FBJnUrZjD10{Zmpr)?N*_XX&@n~%D4C9E(J zl0hgrwjCac@iAzqGknNTz} zvZ6ha4UsL6*N#@UkBue$Vn(-&s5y;{+EU9q0hLvjeri`~fCpu{I07D2U2#1f_dc2| zopuz%%3@RR#dYk(F9=DEQ6-IJm9v#0DTpWik-WjkpOIl;4vA^<;s|Y|sZB(Ze&c2f zVOgLnh!0PuQ1J$Nf*q8OnC#_0$&66=Ql+#wN%si6IzpCo!V2sUz}sxR+$A*#CNEU_1w_c&Vn$o}mvQavqV}60NQQBMtvFlDcLfW-- zQf)FXSkIkQm8PJ{JK`PB^^tAZs$@fX{!aP@(SJ-UyFORpk`f`WIcQ2L)=33_aEthg zEM=k+m)aDStYB`4Atx?Dwt4LQ+VsRQ9YIKr2C6>!T%|61@)H}bAj1SQjEgnx*U(Gc zhbvBu?aXw#H=U+xQz*lQf^SP~(#Lh2Z;&s!VH*LXo053(^t6EP`}C< z#=+i#gIp4Z_Ft8&XBu9he*H?|)D>KW!U-Owg97Ur&sSlE%?0G8xE}=G<>FyWrV`;U zV&QfPSurpze6oxxzW4LBA0BSLi^BuoBe$pHqYwr&@_IH#GGkd-w{D9QSCFj=quSVw z!zqL~Pa|+Mc z`mAb=Jy`|YJMzhA_0!x{{5#ZTb(Aacc$NhI?C+^|vtEguw&9U%f&JU&rWFjVDX^0L zCPn#vMQvwWKCEojZ@rld4*f0@&8ch`YIqbH%W?A+95TIfkO}Yt9owgp1)<Nt#)~Aw1O*D zg-Ex7EVt5Zh-AyHG))PTIN9bCNZ0vx3t>-eO`rueN?OzS$ORwfmwti!PbMI4(AFiL_}x`;%?pm&i`5EJxWxAw?sj}{ z43Wj@)&=(dmnaV1Ci%WP-8F^3d=Cgua)SbS!>nMyt(UcNTs+WdoHIhJ6QtdSt3y*e z`Ah@gcIF~PtG0-ofWeRFO4u^ZeQtpv6)Umv#i38c>>k~SU{E^a2)wOevmB;vaChwjJr2F5X5ZS^84IC#2)}3q*`o(<|}o)a4H$TptM>A^2% zoB0C7+38a0eL<0hu}XPF&;rcjvC^f|!;e6zY>H#1??2ualu<Uow34*@4zvfSX&l62j4iD(0}1FPNRPne7Vx5 z@hYMo6sX@!LH~ODq9#}@=VgKL!xW^aJgx&d3oHmZc~f9^QvL>}4cID7!+pw7UqQ%> zj3qoHNbXz{vL*@ds7+2z*QfSQ)YDHHEerVP-xzpXSEQ1TpLxH`Tb4nI`QVIU>_xs7 zH;1NbI%Wmf`Zs%^zmfs!YdSJO&1Kk3&GUPgzkxbZ^E4(4Ws2s?Q5MFL;NFi;{7FDA<}*nFT~ylw?+Z`>=PZXxRIY z8vnd;qA-!5V5gYPQRKOVm@ZQ4V=R?oC@h(}g@7d`B#qb%s%@~864?{x{zQR3^S#RD zWQCL3*nQJAd0~R?PlfuBRgZ1MG$ErAS@qb+d)Y|ZMcbiIe7273c#)>F-&DgLSjf=1 zCf=9x1@sIUxjFsjRAnF$KrojD4$FpU$~f33SnlLO}Z#t>@DnRA`=e&3p^hU`b7`fPfe_H(Iioc;xISbYkYT%Mk>y zER6r=M^ylpJOzeKnJRCNpxNycbu_w$usYZY)XAV=`|zS-b;qLI62Tpda7KfCYRa!1v>ap??0Hpei`YK+5O!vTv@nl)h zfAdpH20N%hGtcxGk=3oaT=B1YOQn{cgrD{i*C7+hUaHPm77~8_b|Iw=7mK61Nxyvm zqR%M{y32OUGvkI%N?yEIyuPHB@I_jE(lCh0U=0g=f-WOc>^y`_Ij$E8n6LYCmI63C z+vnTJb0R#Qjy*0UF&a#ieUhweV!wsp^mRBvKKB(Pg62aE|K;)0^)ib#!Q=^Ce{%hj z{Iuz_p3N3%ZsG`TRzBVKRr!hKSuFInIYnL4YETi&^$WOP_*zS_9M8E0I|t2q2DrkM z@0j7Ju3OOk%s;LbZ7y#icBX|zmjM2=CIl8fw)OTl(utAVfNK+-ORKCmPLX7@A+6{fo)iGl7n;^);U9yL)*6YRx6bX zd*S5nAder&-*w3u?z2nkn2IV%^3CwkIp0#@0SZ|B;oqN?(0@f#goaS|+M)#Kb^3Q# z$%VGtsHLZ*ze(ZQF0xM4rjS_DRY(aoL|Jy=( z3NL*cc;t^~^`q~|$A#ej9jRNWxOrKGV1rgAWUw;7X4wjc?#ss8aqy-cZ2tP{#^~uYt@uR>{+|-F#>nM{c zyI=6UwH3b3tcmCHd4cuY{~|o3_#G`DtsFS8>)fr$tn|OJ<##*wU3kg9WM2CJy5)BS zZ%eW${deYmM~nw}%hLb0?;CyQ;|^b0t@p;TYF<7WzDGVSTuIU%EhT^Tz=Zy55kOhD z3_f4tm&O%$`1e;Rl&lM;Z{DjIHI$q^VS!xnN(?~5kqsrq-rB)=A)QFYsj&*K@L5)j z|1Ox*SZeYFa!yRcLW_*hx?B$4bP22rex%$?R4T(bg3dQo?uZrTp#l`5b?YS#9pXwU zO^(GXnt#$nOFL|H<^WWpreQ!RdvBo(bs}F`7#TZEA?r)rQ$OVFwfNYtkhxt-dHf<7 z8nB`~EQqZ%N852@QCJf<_i*WxuY#lB@MHtwxMT9#99{^D$K>gi3jV(7(FrD2vf^=} znU?Bkc-4A+Y4QVN-&p$*txLZ0scWJoC){7COXD-E%2_(Hm9vBEmmiOwB|yTtqtU6U`Z@GJNSh2*dg-DCq)>M7 zo0SKtDXGg3x_(Zv4^17%P=1g+s;)NNReIN3evZvC7cvu}Fs@Ztsk$9HLX@HBf*Q8P zCMNdcsgz_!e)O0JC?OOc78gY6o$Mg5f~ik1+?9_>LPW!y6CxhP)@p6?oWr%T^2Fh1 z*Cr32bNn1dy7inwn|WDmdT&P{qx+WYQ*T@F?m$3)SJ{)C6bpu73ytYhjcZ=g6uJ zof!g&0w>D$*uOaeuVfZS!UY-YV>bpAjU}Hi=#Z60g`&?8q%8;!eGfBU0?jjHF~b*V zzF{m9L7N1TMxw`2$R54VST53`3_kX8VR>qZjqW^~5<1ocjzL~nKECq=fL4c?2j2Zu z`d_4cq{YY+5#DWQO&sL^dU|Ks@!J!NMovY#L%%{V-$yPuzAdv4-3fE^M==z6 z_{LoIS}^WXZn^};75S+0xn3*AT@#d#8ct>e*^Bd$%KWX)xnpd^oT8c)6tBrgWy5mK z$XbLbbAs<1`FPhDqIjdh!Asl+JDe9EEep~gpH}3J&K#I+tv(% z-wWq<$sl0WulrPdJ+~I#^_Ql_@2tW?dnDt+vBp$+Vv64I4xVHOiciY8*K$e7y=;?^ zU8HMf)Lnxa|hJgldaJw`3@oJ zN4=`j6d~r)V!oq8G`#vvl5+z1f7_xGpd-7y1LMF_1C>b{g<)KWqrE67(zf(8e(H*fgh};k z(j^34{ToWyF}MY|1fuR{capK1M=*Wl$R!qd>E;p`X%-|Bv0GTMK<1FT@VDvk$R}_+ zR5|YB8lwq4nGu$DJ}FntVRS}c4_CIv)QJr@7Vl2y*l4zsO`QRu;?jNsnilOEt%K6wvMd}F(zfkTfla_+nXa;SzFhILD#38~=9qmPXdk zvxTU#?oKtgH#bW;U$ClVL0Emrh05}f7MNaanU=!PG;aV6SiMw%WinX$rS-BQ2@8TU z?XnLnUPNwjU4XX{crfZB9wS0F$2-&AMCF*)Qg9tYw~+q8i`1^jR@a?W+S(HfCA{%O zK$igdvI4{TQyAFNF&jedfkSvGwF6_r9(}o3>|Lmaj~5&9CwL`tK|GyvzA9|?>2yD>!{NCLmf!rQMm!Sv)i^5{T&@GUkXBbj(U<2g<&8d=8 zMT_DBLHEAPRP)U-xle?(hmm*Q76jxy*9qwMe%rITDIKVlV9D8>BX7+X$*xg19(3r>3lWXktUY{Nh@3_o+$SotZhHAV=o?%7LfOUsq#5i zK2#aA%hr4}BRz6cid&O#hhD7Gx;UpG0Ia^mUQ`SKq&*%gXff?8iLZzfR(Ov;=@)1ZIjMpSLBH(l-+4_uN6c$y930YPyahgK{7yv5zToQxf8@Rxu8d8U=_{P-v9AtQ%Uo;!0@qfXp2D#{O+5P2 zCF#j2UXmWt7%;f*g2TVaJh~f{RQCMt98%?i8{bIEI3fB(jjupx&@PRailtlch`_Q4YRQtlE#Bw z_GN3Q&4h3yq4#= z=d9hDCiU#2F`Z|u9WqVtHtxD&8uytcuL}e`^7Tqcc4C{_;)lzW?Ek48qL=H81jwX{ zdx)ukkyDLa@X#$p{D%^ge(%tfaB8Sn9ZB+r!0=`Acim~hRc(ZcYfzxR*r4ZM*WMW? z1Je^HX!W=*`x zqz@@+`6Gtv3(rBd;Y5RO`|7=@R_7vO90S2kLR3w>D8K(?M{qQmAU}HjpP76P;EV+( z1%K;reIU#VX!e)>)^~gCCoj_YSZF`+> z6^yf)HWb2wwi|paHO%>jv$ybdn>VG~_}Y|t*QU1u8+GGnZ{ei(g8K;R1ZDBIOtbKZ z%)dd*;~(}>DHA$ zhnK$5<|?1L?d)y5SaX?jiWd%jSoRpQ0Sj&bLJ2$pcdusQeritT^qE{Zp^J}J+mFi( z$Z(tWyo{d@|GA8#Vu~a_rsR$#MUq@Douft+r>UYe!;HGLmEB8*qTyOd8zzfF%!6;q z4sK{yu@oj`OhL1;jSS2m^X5_E_i3F?`!xnNljX7|4csAZbBhZzDtsC>nM&fj+`ifl zK91{)f?0_3*eSWQhr(~%!A%$^QRmL!VmwfbyUA440~xp?#p1--Tlj`j)X6Jns-n9) zR1r@A-J+IXe~+lAtqGuKvzr3waxIzz`US*i6qKEl{bLywE5M${BR7~c&zYe41^40c zQIP}Xk;BeX>Ak-}?mBmTAm~`qvqB6@ktQ=vnZ%J85$ioLD3jCcP zP*HGj9CHgzNLeuc$%?#0Q!~<@%^5aFh)KS@Z9#B9_=8HrP?ejticW3<^14%qMHj7=laO54V#nDT3^KwN_!Z zOG(olmL;uENIL5iLfU;~D)0k`aKpL?q)V{9>XRyvv9v%6!Gc}dEgeZ@ZHMOp7jg69 zlX(B&n#CpFGMN)XM{iexIVbLyA+i9`_%u|@xWxyPG+@?M5Nq_Vl(}&8;mSg2mnjPT zQRPw>(jWU-Wr5K-igmxhpJXXu0VfzU3RmqH?e&0`%1f6B8^vF)KAgHgnLx&jc12*%lao-x` z&L!|O0{{9|@O0`!oNRaO*pbW%_^+&jX62oeW_ZBgP%R0HU-;b0k~;-dI6z$; zBV65rZNYphl~GF{(`kouzCJCZ?x{sqHA3#4>7+haZg3wmR%bjw+@9olq8kj!;Fzm#-xwlN@p+2! zk^j^gYW0GhqUMJ)x&>L~p9N{5d`RQtZ|egsRWE|@jz)0*_Cbj8`mrUJ#!3gBJXq0v=tC3g|ce zTZ%Wo8O0j|*qm|uQKyk#ww8Ip{!yjkG$P;&xspYJeA9oV_{5H^u0}ZL2R5-;XH9%w z((lyKv?H5!_R+BJO*;VFHC;xC(3N2a#*SKJMwJD z*p4?|C?tanZgEX41HT)uGQd{6{mx|IH{wkOej7f>064G%uba}RQ3$&JM3#41xWDkB zhvXhI?3)4c*RL+Ut}Dz(1$w*$DX$xz9NH)p6+MZ75B?6Tj5;U)Aw9)p>fhl?%6@5^; z`gf#bQe9BKb(vnh0hnH40rn+d!=Bc@6eXY-B45$$SUBg=siPdOk)1nT4~UNc*TY2D zr_rR4$~H_%pCI`9eSt{#Czb{H{U4LI+}GqC>au1OsSikg}ohaXU8V16)})vwn}P52y>9yE2YmYL*hH zn_M&3$jrM2`c8)REmxWv3M1@O7Ou1eYGEUi)-a{pt}N*mI9;PiO^a9B9wxo}MNRj{ zCcc^8mIpacXHZ=kd`3Ja)~=FSED~5Ph&+0D)sT@lR4 z<>S-4Eapo(Ma^cW;uLf17rbA8g5nP%oM{r_bxwpEgXA$xH{BbqR#d4%8JaiMA>>9? zdI;s23QKjvD)&=0r>XJyA6;cw9ZQylk@Az3p~lpt`V}84P_y_IA1vrhfOx@X0yz-u zV@3M4c$<5p(^n}VE>|gJcJ636Fpr(@ri5JB)28u!eNq?h9<1(|u*1AAClTT_@_9UL7NSTov3qPab-Y`s}5 zb-eY%Go;eTQb0>Aer;FRs^+~D6SScy64-X3N`lJQIj= zBrIN}q@2Q-aMP&lIjxC6b{Yrj<%vY8x@4eT>hb~|PLsz(db>IcaSo9&DCnQKf30Mc zr*>VuJ3R%5>+f7XAC<-Q#cIdVnx_*ZRCOw3-v3~`BuT=gowr$MQFP&SK+NTinAK0nVtpL`8FJz-)=g4sHGdpfY9-Z-)xtj(>-pv0^I1C z6FMfJq4Wgfx*!@C+tHplUC5rQ+jmuCai%53Hab5PM&vS1GoVy7(Oh~uAx(YJd?eC| z2Gx;aq|~r?Ld;`E*#7fpD*Hce^PpV@)5e03@$lbjmz=D1n16DYABo_iL+wa#o~;yw4l5(nIZ`1sy3&parCgs$vMz*eJER1L%MV==Em5iN_`VpY{htmp_e(k?=Tt8o)mGj|+-b_Vyi7%d?an78(hwCChZ$c9KXfEAfT`CnJMz3?TD&>u zDn!7lGbOik|6?LQSW6jnT?l?vT?r3^`?JrDgS!#41$R6*4p(ZHY{8OiuG8hS;Qemj zMh(l)_5LC3vZR_gcRh1e#K0DcUtV`r{N+$xGZ(Y&ODb%^hc{eRsud;sB4pffb?Ik6 z63#Xih+@f5Kr@<_Cci_!y*4g+b99wTIJN6QdNxlW3gs(8^`VSpP9*)cX_I)Auixl# z^7WfMeA>`wZTPY_pRYkRF8J}gJC5KJ)V2q5!b z%7)TY|Gv``bHwm|zO;ajCgQ0erQygmN((7!40k$a^oO(oxA}A%H$a=_;qA~Uetfsn zGPUbT%@O*ismEB zk=X@d^20AvJ4wY~(QB+Jvo&QxT@?72y(%Nr=SHFOM0=f!W@Ybd)-{1T@O{&BZHpwm zF8uE+cU)<}H+P>uR>Nz*Hj534JkCF<@~3h0@{h_bBKMgWWt&g$$I3OT1479;uU1Xz z`qkxCPm_`G4HSKXXnsx*wmWWnHWL?{dfo97h4Fu0r{dI0FF&Osm86c3wrF1Lww2G? z(Tn?^6XeHUzZwxX1z2393(!u9kir(hc<2o+F*oNHBy*wy=@hdtT^E#3dSgq}*>svQ ztzzgDwc2meFGzpxO)ZhPk`PR2eB()Wpyg3ka#!YJ>N-aXe#I+oY3C_VbSCTHFjT;VQ+6qKvooHG|sLqwXs$Od7?}@-9prNS`(L*juGc9T8LY_?ovtMWg+IT-qE(i zPT6=Q9k-w;-zBKSqrZbCttu@vrRSPLr_-3C3&UITQe8sRnSY_QH6%TUz-&)Uyiu#% z>*lgme0c8i$OnBz$>&w_R88ES#$1(hN4KJN2~#&Jb9O75hNPWNDslBTFEGFU?w0oS z-+4t81NTkYiz1eVqxasdCc&FbZVOEgPP;{kYV;{TCpkdNV|N~4<&hTdk5~|jUUeAMj51~xV!2rFAP1Eg;gFUMpM!!WPIT7ROz~f z`MzsQeczTnem*HjmfLT}P-xJ*FX;e{$&8^{(`#ShS_60Mt?}AtY2YH~zyUWF%~=ZE zr^O`&j;weaTcSY*#9WxN+kc-Y7^T?pV492%yoX&MR}D!j zW5upXVH_nfpJ)YJt^2>n&Q}=r z88NYaF9-+kUu?;VWJnz+X5%h87TL9kpsVq|pSbf@0LEjkyOOyaODg|ct>=RorPvWKv?LrPpU!ep-w;B%Yuu>4_ti zVXfXeR5^@m7^p2#NLPPGAQr}OeJB@kVNQubM`)Hbkt=%Uubc8h#UU!iy55Yd4Vsw5 z@FvdoqgZ&A582|x*=TjD(x{hlk(-kAAtep`yV%2ne)XWQD_Nve^%fnyUb-5p zZb4D}MlLE@Y#ZvF#db3WzGa`YmTauShI*sZ>JnVL45x;QXMaL0Ne0AvTV3Q0hk2<&gPfnz1B%x8uC@b1alc(N?ukKLtOYLeLGtvBjWZgwLXAIV+OE|yH53~s%R7N%QG?dqh_<+24Gq2@d7 z2LmBh$N|cBNblEs^;@GfOnj~Of5^4^AtEE61rXr2dRUq*|4q8}fD;p&C zr0LOOxW0*=gB`h*mZ;3L%nF7-y{|9@=Q1zgZ*K$5O3tMvL*`$W1jEmL zJF7|)T{N&q|Dl9PI@s3WUsfQAH!p>bQfqqJb1^OP1TWJk@SoKh&uR8DD-*AQE zL2IJc>S$KR&c0?=u)e=F_Gk*H$=9q*mbjY*A?Q1;2|HDH(~FlL@i5UO_R%ldzb{!9 zOt1TnjEaKv>*~)fg0x4LJ#JOO2MH@zAb{)rlH8?@;5+tVI78V}y83(i zWp$Vy|CPeMzS0kO$PNgmQTnxiAW$bVN1h>C6w>~BIhRBW)s+^J8i51`CB%aE(V0Z-%&g2=KsjrsoTAw50G@6xOrY2?zB z4bdQEh~@=Sz2&iE6PhTv(YJ zt&3SEAWPWLuyW3)CshD4w+icYsjSe+Oen;x#5UmHF_{B5z_ z!(6@YtR=HT?>inMbmO*|2m<5e3s)PA!W7miy?7vxkKKInYI}7lbVxg{>(td8rlUY* zU__mtzq=EsKD622-Z@kt|>j_)9Rym@DcOZmfriB*mwnhiF?LQ`bLrxJn3DZlqq19 zks_%NXTma4^44o^fR2}sRD@n!AY8@#H7`c@*@v0&VbqKchbiyc(v3PD;tAB+5j>kj zHr-$PoD$D3!|o})K~_(Njkuqg$MvXV2KOwx&_hR?8~MhMiqDOe;mSxE&lB%R`IaRi z_q7|`SO*fd4D}`Jn|w*G=Zk(8*X`pf3W55mhpSMGDMOIbP_yeD!Yd&N#txpS^F$Rd z`79n1$IxR3jm=M=7hMwhY1l;m{G2A2Dms%TA@%1Up(G>F4R>EdVQ#NMqN>5t(?1ht z&H{f(0}da$m~<5eHIKWY^aD*C>2%YbW&>bz9eCt|Ofu;f%73IBoaWgL31f~iIBp~F zEC=wDM+S-Qf0UXMrQJWUC?k<4(6uG2G4PsDhAj1<;QGAcjGheAYHt_9D6}{^FOuV# ziY^Ne!~Wt4o3)k%_v1==7UPyJ4J1pe#}OgxlE!W0c-x8FIEDBVv8%{ZaTLm~Og^=8 z!cWQ)9+C-m*&I?FMg&St8)B0sf^q^8+UYq^!L8}RQS}RB7jIPtkCw+UeaYPln7yu9yc7^@wtOm3fw7dT)7vmfy;pCHF1X6<};2WBs85KpU! zvA$^P%DJI6Feek|vYXk6IcdJvH3#OTW9Hh@bNVGzXXd2+I(J1%WKKH${VB|xv}4Az zX;pcVF3fu`)Tx3)15A20ca%wR@*&m^27_WAGK0(GQfCy#qf?V^V687b=(Azay4eFx zhRtD9ucQbD#2TLc1hooV5rQ8RwB23q2{}ZBz$;_na@GyvJ#&a7p-IN4p*0Mrr3 zTa#j~gF?@-Co5gfDDQSAkTOc>*+}+A2}N5wsm81rinb0mJZRV&R9RxAULM*dh6fef zubh2(VWsQ~5^J_EsI)(7Igm-}NBf@mxnh={0W%=%aXBLxsgBVTiukQt09jO&V;La3 zIvk8+XKlQUC%a}u^auJy1^l|1>P^ioUL55#>45DzUPpw3SI`B@f4R4&lk6IH| zT*!!pH%&FmXvMHhHH(kMpj01Q9H~~uhS@fp;#fH}q`FG~`*RWx$?Y&sxx6#eV_65M zT)2RSm|ZZG8R7K0J*tYyGF1l{wDK5cnVq$1)U7;ix`rJ!My_)`EQu!q7fnk%5Gy+! zdL2f@7VuYxlUc!A+}i@bEkqQh1J|>8bZV-;b%?X9cm;4`pjI2()QikaNW4;0(j|~* z4Fhe<-}DWUo~$F>(g#DL%HlOU8+JiE^|V>7Gxbxk)`B3XP=td5U<<@3a~JAq{%?yA5B zeq9*)$VJAO@G;PW4;6T7nqY^r!G6)Kbz*D>AaClW|A+gc1G?IP8WK(VCb(uC%@DJ8 zgx`<_?H#$OQW+-B1oW2=Drdvfd~Nxg-DNMVv=EV;_-3Bgjv&rX&xsOIU;D-o?qQXM z{_fI_SIfVVy5!4cO?FwZ}YE zA#1R_JT#^yMQ&UP-)>Y*Wf*N+BWh{F$oglf%2Ok|SE%);_Q7u2cmRp@WGt^LgoR?8V~qZFrEVaLYiGL$ERylZ^gja z`VJTy8ml!bdxys`8Q@;}A$mHsktlPOXDgFOk1Dk;u1(=~GGq@CqCV^pI2T+Ocuy-U zTCdIFVa^Mdtw11atd#%e&{Y4a+Twpuq8-Q-_eijcUkHu zYUIfx=`^8a=958TVo8}{aeVr_g7`j|PlD&IO^j3zPfu330JvVm7L-!(`l^a`iWft$ zHyw4zhlW{^q81pOS^ zHkQl_DZld^A&KwVGdxZEW|UN873EB$j3y{#&({65=?NT;s^U41$zJMKTNF6A*FC(;{zXJB6t;#}Z&ap-Yawgq;VuchzqrD~J)VIZ z=bbE_n8fjHb9t&V&;r4N0Dd`6q(wozuWbY&zqVWBc~ASCfShi4(D(aZS|+V&cc3|* z_poOK<|UYCBiRG(z?Nul1flx-Elp9IEK)BQ(5n&IyMn)6Q9qUT=Z}W6H%LyI_ zOlmN)-tZ?G6wog;6qM)q?$zl5+f~w*TFg>_6X&N<_v*c2{j55cdSc*fw zsh2mM!}6{!SpQYAGvph@23LVooj6KsM2yTNxhhb9Kl!_^6&%(fW$_$ENtgWUPp(#L zBbHprxJ*J;BPTAs$5aaO^P;*%Ax*R#oUB8wPpDIy7j&DiRna3Ua2WXyRs z{xLn`*XI?1cv%C_SnaUX!wLM#^OZefPC+^$Gnp4vjSZ?aEmb z02pvJY7-g~`<1~67w(+A)=bfm#I=Ivj0z)GAmEk?XyrI3EK2R$h*e_gxZuku!eq8b zy{dT87JJ*N(ZJ4t4esJe>@p?YBE!*_sx0YMBi$JVjVL_Op;2&MXY<3Ce)q1}y3QUMpCTKFpokM4rE^a%I2r^zUc=O3u6|cJBbw|4n8E(sx&ZsCE2qfU*T} zuF-%d%L3-Lf24}%#{sbXGa{ihH?PWw2~&?E(S=Emms#7cnf)a*Hz!m)!sSi?q!IknaUA_JBK?4)17^~`z0F|e$q^`+Ne>*LR^ zlHF{M+o8emL(O#Dppjvi!HQavN_l8hT9ZCO`|Q`Le08${U|mrOwMr&sF#1z!6>smB zyktqnz=(wMx7}l&gHy4&nSjiU$%d@-Cxb%bE8eK2HhRN|dWy-X(CCF&NhJHCjMA1Z z=0)GEFFo`JX{uV(4y9(G6jfvyb3)LY-{e(jF^^eB>ybMEgBKqhjBQ>({cQ^5b0W2} zrq409IFbx%vM6Bs->jnJiDI;55Hq7F#2qA~QyojpmOhI@6eUVTR9mTF9RbIQWqpl0qkEgKznJzp{Svo1W<)5Kp6=qi!#&P7K$MT~Z&$I+2-5 zx&-5+{!B1a`7R02`R3+U)$b0_6MBz2xV)6#jyy7}5dPZ57uH=hDo*~S} znkbAg8;5n%TV%u7!b zY^09{CQ+weojQ>W3e2OO!;Yrt<&w+@q+{<sk^Ry@wbgzykh z|1AXJzQaJn`L`-9BOFm8ynFYx7E%_DQoM(NT%(nOStixctr=9*8T`PEfZF&WGxYSRzprLZ zHL5;A{L0%@?3~khW(z@@v{{}eY?kj?B`1p3b7{22{Ra+)u@hu5CnT)@NDEnHZ7t<>O71Umj{OlVNT$oQrx}*|XHdxa>(47Wx$}xSwieS% zsGwVIg8Arwm|l2-S*iFXWx@N)A>)m!h60%n{*sWJp2(zP#de|0wC`tAWGd0(0<%`R zDlVvMan^!0j6+~$A2#5D8s3Er$%bwrboW~lB(X^IX zZMzwl9LHyp%bvZaG%cbljE--UzxQeOVY(^>Fpy#YmP%k_ zql|<4Y^T(PYM57iOiqw*#BE%tE9dPebYY+6En7l{qOehR8|f!ETwD6Q9-&I_NkNnx zoLK~Kru3`-8AegqQU*KNQPIN@#Sv_9tUKwFtCHNyaRN;2)FduKyP$?6JSe42 zeiTT&>&Hs!P__56a)au~NG`iAtyw_F{)!eZUXW_1uj$Aa{bEn)-Ey+Hz?i6Qp!BY{ zh*AKB5C@Y$mpjm;U2GNTij_S$yq7wxzd~_bWbraoFzG?eWLfxo+k3wCIe#L0{h`q#x+{E(Yd)&3|F#phwOF8Ub$2s1 zXHjoW<^<);|4`I+Gp5@ss5I{sI8dxfN%d<{kHWjAAaILxBId7WOenInY2|Aa9AY1w z444rppDeBnEoaj5#O>Xw1qVuo z5J`;7C^kts;evqrtbwHBzk@%q5WKZ6n?aJdN6~JwB*4DA3eX%uc_LXB zaR0hyu=Q#kZ$u;NFX$fnz+AM5+=8#o8KH%&usO_ctrx=N@UY%^avp^Rarw+nA~j9XWv! z!3ZXM10IEc^DikojSAnVd}bF1o!Ga4^xWOeTu`y{!xnZ}w%I)6S%(Edc+R5~amqfM zYym4#S=_aMRH2N^vv@;nI~{`T6HJ#rMn&qcFmWezXe4o%3eMeK6r(jcABE-^$fT|} zaVt6oBGoBzHCJFD%|$B>T~xCPJAYsTzqme?3<~GH z8&v`XO(Sw-9W)NWElPZi5Ylog?RfA6YjBi;>KKkEPtcC+gtcRlf)*qtbfHpUWD?RN zDWPBTp&D~c&5Eyqa+blb#n@Z+jFdPS2Pe^2Dxh&f;Wr&s@%tjoX12p1x)GndQCIFg3keH*f%Y!-- z2cJE)RcF#C^e_I3^5HGtRb_cwjwYTGo0+RS4cow?cC2yv$5NJHs7S$*jPCnG|~;j7Evu+6%hgh+w2#M*$(~19j;@j zVc##MoAv9veKWiD<*TAw$5|iFTHg!)#HI@y%?jtQF75qVo)u=5ds^K>R5M*yJ0&%1 zbE4^I?N*Ib#XBkDPF%Y8_mWn}yLHrr#JpyxGYL1znrm;fSMb;oEB{~a-UPhPtGFM2 z4Z6iF0nwIXNK3^vO=SZ@b`mg@7CDZM15P5mfD5HamaZ(tvUIsu@{+`kpg>b7paKO$ z15ry0DQ!W7%|Khk^3jwA5On#Q(1OC&lqINPGy69)=QnfaUG5?|{QLFG^MD?od+%?S zGiT16Idjh0OGnPg?sc9R0QJL9R-;en^UOmuP8@gwlM|YP=A=XwpnqKq-keui?p-z_ z3GjIU9KK9-H9;pEsG5(>))mjBcyA6r!sq7p4AlmwhDI-u7ZQ>x(C_(FrJ_&k#p<>W zSN-eaE?52QCZ7~L$l3k26kDcJ{w=OU4FJdH290f!qRv4P3Es{MI zIzd35ncqYl8?V%8cMW(Sdz#8lhvUt|&_0qyW6}<{LiM^;9 z;&aDs#VPR~FSqE%Mjk$&cOOl`8nh>uTw0uN$ux7gBijxgExUGF`}3WUocJRuXOG8A zTItrfxDz>Zwe^38e4uXrdiR0x1?|rI&-8BQQ&-2knWwmM{U({#=3G0iB&xwQIB!~G z&ThK8T-7U`c?)*ebTVT>hhV}vE?TU00XBT174bif_B`odQ0Xbm27bsM?RUclxbI}JAAt=nU=3Ee;5gk5a;Xtv1i>^;{t$a&Ri4wgFguCbLM9D+Vb!N zuntc?N{#L)~~qM z(ZRa;XZq+r-A7Zk@i-ctzmj$xjjlax&g-})r)!=MpWrwCSS6d49CRVtw3fDC@LWfy zZN(;BvyjI4pn4hg>a=>7TjFn`Q_;A6pPIN-Kz*e@Pw58}Rm&O(w~Lum7xl$vVUcN4 zbJN>%QmH+*>tL{U-jPkc`X|ueu|xg1?`Oc`*i1f+)&jgEEEXD{fGRPNq`*22NmFly+pQRA2k7Qdc~Esb zUvi<_QnTRi)yKi7+(~i#eo%x(FFG4H53ec{yv?Q~cn+Aa|3lRQr9<~^WfOYOHE|e( zS(sZ-yCqF%4P_Y%>2_G{ExuK4bI~U^A1?V1=@L8zyTi3p-#)cs zR}C$@Pi#NgugEN4LGXSV7K4TPYjeTECaE-{#aE0Xbh!A1m)%H9*nZtrW!5nk7u|XZ ztm6~E?y`W)uevO!Lhx?cmGQKB_fNSsjyyu|2d}Ej2QK#r5ho1*zq+?@0jK!8EnuL) zS!(@y{rO3`w>5o8|ns$${Bu+gjYdvov*6I^nffV%*A-mBAc3^bA> zOQ|$CK^r>!040m>ima`YzCD38=1e-l$-7=-90~NUvfVV4>R2bLEbKyBL0q~P8UShe zlq!#t`ZK?j_ULgCIz-r9nA&(jwHu)^ZR(9z1}ErpK1F@u87&IHF_l9f$p$$!|H}zGZ`i@jgH+CEs-p)j zEbg%nRZAqfeHgE#An9GJewPxl)~bEL{LaKRcY4FbwFf=Vp3Lg`)X4^Vj_HlY>(?T4 zs@5ilD)qWX3iD9@N8YNPfZZPoDRqM-wfjSHWlBgD-ba-|7>Xx#NTyAMO4Y?bx;j%V zUsfi{D7l1jDhxzT@*+fd*ZWnJF%gry;B(i;sD~E*8fMVsYhgAgEvI9U?>^yc3lV@X zyJil!7@Ja`2Ey2w?Qe3{5H2M;5g)t&F?{v3`zqAGa3ZRo>EoMzn2(Z+2y1GxdcCh4 z71DFDW;&z$Fnz3zT_c^*X;sc-SF6}xYhq~@1uURnh8DDc5Sy?PXW_RxSLg%kP7;}Pbu=~2H^^axQy3C?kg(B6z~_}h6An?Cf6>3Gt`gMh^6N{G=K6xyjnw-&Z;})|HTd1X$ z7e2qyNRV_G2V=)()I8+)*MC-d!U$_+CA#gjS}Oq;7G*7g{)7H4&4(N5Y2OQLwL4Z; zX|3QReYF61_{9G)USufk&kiM*wkc#zPmP?Tl4x$=E5XSd9!?g))ADDOH+B}`Lt5RC z<8j+!5-(}!`A&L=5O+a#v>6xO=OMOYXz2?4s=LYu29(3se$I2M%LE^|s=EuzglzDt zaa~dH8kPyy`|y=jK+&r`$#{Y6gUr)5stS`@OqJ~1!Z-DESW>e@T9YV44ol2I=Koq! z*|YN&Ib#x+rm|K8&2Fb@!@zwXNKQJ~h1gHB3|?k$2Tz&xdcF91E(tD)Pj^uY^%ryA z%!7JP=uX9v#HfCum^v;04-aNbUj}R8hOTwx8=n-8W#(O+r*uR}b%Mn6?ru^v321?9 zpfn2#_x+*@m8x)AwM>pskO=rwcNZOr*Qmqy&?UWmTRC0xNLQ850R9PIQgP^kgEcoS z;&D7Wc|yG&vj!TV$1C(*?+67l6!HYNVVS;Wx(`%-*Qm)g(NB43+UK}eJ+UBYR$h0I zvX2}+S17wJQS<=N@BbB*>EP8Q(CzpZ{vyNxZeT@0>c9iASS*GYxJL~(xp z>+Rt2lPY?Hzw{{f_L46A{EWeH4!o#zLDSw&+>q($;g#7Eet+pVlpQ`>uItVct+Uw- z+fLj9nS!aLABgX~Talkk$O}Mx#GP&OZ1ZTr#t}HalwMu#1>Q`XxOt6+F4o_FqZsFC z(5PL!Yuptq6~WyQpHEDdfw%R)A$P}-BjL$OiZo8ALjKJf^Dm^Db?KL>JHh(EuNrK9 z;1>-{4p|pkHpG3Q!kQCXCD78r(qp5tsYL4rv#^x8nLE;tor-CaAQv7+c_`MWn1aK* zeyHQSsusD|_|JYBzD8V!D;Sp?Mf-kLT=*WUfM-W8XUOgf+J6B4t`Vp5K_zD*=o;FI zKyEq(x92FmhS3R}mwZdDnH`MbjRk8_w9-}l?@n8xH$mS;In87isE_{kYS49JjaA8x z9&EGDx*4YJNV(Lap7es!JI+QcRl7Ttwno_9oNG0^yU8`ieM&NCGdnXdvSu|fxj0;n zr{taqp-VeEP@#M12u$LUzXB5(m4@!JDm^cxnBAV~1GM}}79iNvk5oWHR0(O#pk38* zG!~MQh{_^2>q>%zv}Vzx)C18HK{@F-B)4|aXgh7pdjFjDB~IdXQQ~Id3e{syPS67h zPwKF*H`cVsa{2K^Fi94T$f6*KDL(QsKjb zWA&|jwq15vQpHc-U=Zvcm8?P(J`y=G8FSck`1ywn#-?2zuhHHLCSqWPsCp3~Uvyx- z#8uYgs3M!f3E0W)S1dP_MeHi6xhkxGp=7W+W$FO_NTBlheuidAP}A1o44r=9@Bc;B868!*NF$dS7jQ{CqO;pb4a5&Um&}~@vz-b_1 z6CLbV8Fm84F>=7Mj-ODasS?Qb<9aH8lVPk(tG8&7Yc!>YCEx&5{8?3Xnm{&evjI`) z^3&Mlj*cBqmH_;$2Nl}PDhV9rn&)Hym?P`ePHNM&F|`vP!=uAbpNz-0rjD`+ESxOY z9~Po(T>TX6!tQ<&MDzohhW10p0r@%Egq{P-o>9n3HqGaxf=;NvqC=(Nf2yXJ?{Qal zS@2Ziqx(B1>De~9N>oamy30S@781L9kROo zLKi0mO*{F-x@joTrc?e4at9zSAT<)~nC7q2c}Q$v~iNegH?YVm$P zT2LtE+0f3gHU|J`Gu@3bqWvb9=4h*2G^*XdBN6m7VTf?zI%`vf$_)GLwf z0?3sfuiZ@NLb>FLWR7-A`n9%sK^8iZwFZ z2`0a;%$|deQslJiKedyw3@Wd9qV@<^JDy)gHs#zlGO`rIifay}zF$nzLZpKElZz&h zno52%F#ORcX`jZ#4Gj+)ky4!OVjLPH_8Dcw-E&qn&)FyTD@U+$S4B3OczPcwB zhxziJ7>5xr?yw8Nun5!`kGiByE#%fB`#PJp3Y%oo5V`sw&(n6QT)HbChMsvVZWb?= z9(<|wSTn_t=F;hmROA!i>^Epf(1IdM; z6aqbL3FpL9B2h12PWc+T8BOd&ySUx>l!cSwkn};a&VERk?nyG)KtW>%r4ZezvrVr| zSZJW4=u3Aq6_#TM9pgw8_@}$Iqee!}DG!uid9&W8M8nMT4NZjm&G*GL z4>p?>xEZH_%CRcFxy?Iwd{aGfwI^_PGybkgE81+dAntIel<}nbi8eZu1>oFoZ&Al( zIwe#Bb0Q`z{X6laiPVp^u9^B+6EXiMsG$KIT|*{U@F!K^ykwteCXc5vj9O8lL*Qvf z>razeAU^FmK&Gu_en+u?v^GdZ=_o&@abn|cd~Cwn$@^M6ZAn)-rXjzpjHR*QmzSeo z?hq`rpLOkF2ZzyU`KUV$^avxqdi`~AaGT$vFVDucrqn`d_(jPIb!cK0x^R|dj|_0L zS>y#fO$Jisg*-$X)CZ{|>DpAz8EOV=0P1{=s#WN!UP=~tyF-2!c)MWSvXl+1R_!jV zhvz`-{a0yU4sl{o4rkM8tF7bIwZq4`2A4JapRP3BpPQotVAiL(b9259JskLU-)6HW z;JFj!e|l{QYCFP0l}gfWq3Vya&Aa+@-;cg7-6kMHrsDKeKbk(X>(%B<{lO`E)nMon zdY67f&sd$e(HEexPpRgl&iEhy*_;%{YhgEdING|}TO)6@1fXve0=nToQgk=pGJZuj z79lH~TJ|=%n~&V#gw%}mVBfY1h}#T`ukn4`^RZ25o=E2(#~NvVvKC^}P+YSFjGq`5 z&zUb;??X~|u3Dn_ZZjqgQVN&+lpm*auYnj!c@jF##{az#f7g@_Fu6ZZk@F?&JWAW# za;9@`QgK5GM;SV`WENCzqjO&T-x|6aN4C-5<4V9~nD7GsM4*WI4ahW8E2(JE6?&)txX=F4vYL$!N;xFDL*xu5_%4>OSthwdEKp8 zUQ4U^4ssOcY2+pc{wn#3^X;An2Jnu-I}E|`-obf|k{8UGboa)r7*56BS0;;);tS7% zG%3gx>Pl=(_fY}3;}29#6ed|t!%wu*j{LBnXf5!inb!0tUyd_uKK6CfYg&|*`Od8V zL^QF-ehBpGSrv?qhF9g_95Jd9bVurPDVH1$ALxutGrW5GbRyeN@o@n~cH`!FnftZ! zm{Kf; znXxs?X>UTe(L?5x`%r&K7G<9i6$}-!8XGE11UDz(OED3jOc!F=L-YR=%ia$62bf&znbrLN0}(8|@Hwqb%o6%OaN`f~#E(owl~@I&Cxm$ZZ5+0abXC zkm5dCY$M{E2lHp&0U;y`@7>_z%T)$^N{8JuF85B}8K^A1`);RJuT=I`=>j(LO_xqi z9~iG}+r4W?qJ-Z29_^!QrE*9TiKH-RWIRpD^hM1sSmWr|TryTTg;hOXSn|ZuwF@Bn z+V?AQcfAjJG_w#RPR8K8S!z8^Mq*x$kCj>%HS=zf*>y#d=Rg ztpzhev}2kO)Q*wn)gyEzOY^Elry{{%c)=y~gNc9pfHEVCmwt0RF{GeAahK<^wlqEJ zE(B~_Da=H$M=Y_xz$+HONa+Bl{U7|OyI~ASW_w#I%AEt53qPdfhM1f#2Fcx`2EsXD z8Qz5pm=U^^v_87EetcqxZ!zL{AV}2*_^uBt8F>cOXOd1NkcnME z+tQMb!4=Rqh&<#e`7za4r zm7oKh-uHpR+$}{kdxb4o%1zxzU%jFkZAdRkuyP2n0En5GOrktx$X#CV0%~&L^j;VD z+KKXoFGMknl|!F$zxFPZ*0kyx&1bCNB#}9-Y*QcUTE{PH)t{{2Byo;g(sm3TW@gAW z-tWSJ|zrc6^0yDRRh@m?6idp@g1L6#*Q znx4M6)j}kdxK!o5lj^a6TaujPhG?bAZDHt>w%f`<;=59#p*l4=L|3sbfWwoYS5A-E ztt+%!q&$&1X&;<+t#lRdQbNc?l)WB)1_C_v3n~a3r3L)7pJf9^tbquq8`?yz;BcxgR^^xp*QFrK$gF1Ww+ve|kzs zancXKJ>Ss|AES$dZ1~a)WWzUnfJm37A^U*UM%F>|%K!5MOhQ~)$4d*k`=6G6^dZeG z_rW;o7{}wbG^;HB9)1wOG4Iiwa`UF3wGQ5)Wz#!Z{;ii3jl%-bFx9ouR1xg-8bqUxal9nS*}%bpA1fy!W?k1A zlo-ou|N4_r`}i`nIeRi{lcqRQ=Bbl0T+q&#I~h9zLef0crjXVNy#`$39^ErWE|2YU zOZooaXg;}wEQ9t&QibIA`Uy0Ub`nN#tr2Xb*EFy`n+4bp++zfLDbN{qlf8oR2@IbM zF{^q~uo*tS4AqmO&5&24=oN@b+j`{0=@i#cg@@b%1ba>g1WfBs0vQ*G>3*Hgb&Zu- z9jCC>QyKt;|D?OiWLs)wlr)Bl38hA~`OS}H8C0ILRyz)rjbvnQ(Tlo9YIIB9l*`N? z198uP#L|}1Al?<~F6*Q~9Lsk57XJW;gwMq}zpTgE#=d$0{6F+TDhDkbWN^}3pX$RY z`r~L@_X!r`bD#J`W5YA<6I)l%mFc#w5Fbo;rE6T&5opmZ=|-zML>Fw4bD;att&PVp zvm34;rwh`}4|=}*{pi}h{_%|EZ%5}(lwZ0a-NFKGU%yE<0_cu(`-pp7bV4_yziJC6 z1b_Yby!$e@E55%JJ%oA!LwBOby9mN!g)SMl=|5#3?Svs%wr(+niD{7Bln-t-^{{MW z30<&&4_u^{Fg0H1iIWxhy`wP=%;%?E$>G_f(GgYcGOw9qvDNOzzTP#;h2OKsa!;<@ zbj-GvVx|84v1mfXmGDbkojw+y)lshC@fME7?wbns?7qw!JJFooSLFlky)*6uk_^a8 zu9dDxXYJf^EM|hO@@Dy1T#S=#2@hwF#g11CWq=tsZnPaY-d|t%(H61l!jHt@PZfQ% zIfO@rABoN1l=(;%K~DtRSg>KTS+>Sb7k(sOXrb_6cabBVMb$MSmbGDP0M zpV}cOV=U@t%0Bs<)MvEdpoxPK$?upa;$N9fkn>6X#6~pv9{&No&Wt@maz6U}vTY`k z+tDnvw5`8Tq$jUq%@>3Vr%qjCukdtG)A|cV;JH+*EL(4CB6kYvPnWBS-_Aa0o%Y6!Wq?sjT(yFBd^Pmz8q z-PMYcuUXLi@RQV%50N~o4;md(%+_lmS4u-}cwkp<5imb@iNd8*dFL`RGD*j=`Xx2F zqM#GBu5UooatVbdmy#hwD3#%47Fc_>70Y3mg~3G%lXt;sP!A^q!1|P8cF6ELXmLd* z?P)Yx^Gz2|>w1k+OSI5i0*$rXi}~kpa;qd8*V=lJRtscZUF8@2O<3JG?&@^Tt`juQ z+fhu5=CF_uX|1avuBhHdPT;bUJyT=j<1AFt3EW?OGVnWu(b2NyQd2h8nC-)ZRok`L z&ek~>-S3h{uzCz!R~g- zY;w$Q9ignXQU-0;-U8)ie6m%Qd9S_m?fvLI!A}NIxBv4yPhH$%`y@9ZaPWtTy zuWx*g^3400c;V)y$7~dI433XcwIWT^FLRAJAbJV?gnNuXK6R}8juMhqw$z&QaWYku z?4%-l?cz%+TtLhFeF{OL_MhGp5W1~Hk+$xE*rp7Vqfp!89#bm^6TW?NL?dmxWRj)i z-!C33-;MyGL+qSPklQKb)PX^V1BKGnjuYZ_ly2DTN$tUn-rH0Z7;pU#;&p#IKR~buW*9&c$LGn z+0*prDG5@hS>xLc_SWdBy#ajrnyb}J$OO_)@x92scT{LY z*I#4P3Rw#oAn84%f@ZIY3u>#2ro~jOi>4tK%4k@v;&NzJ<({{r%OTkfT~mH9oDS`9 zla7n#gediXOA zgWDB*$+gppk6*msMsF-I)E(E9bwG2ao{n_-gx+H^A|ZIu-<*xVNspj7E9x*cXXVcO z5NGU3+L;Is57uZVl1Oj{mhcs|h&1WOMkVt`vW%a->6+qE3#Quf=mMyd1>k;s?aEV9nox&Sq*>p1tlvkev zn(&v*0pZ;lq=Kn*gk+N;UF+dL$pU`zLH((d!F_k%#5jL@5#Rb$!MAA;O;q9w_DlH6 zl`qnc=jYhh+@M)NHKetc7j%?EHe}cCeH(hn3ncx(c=PqZ;@8H*s>ODuX*-Qu`fZP| zBn61auphxrRH8b~?Kx_66TsMTKVQl>4+39QLNt!s%ugL0pFGghGcr9fv?W=_&oBK0 zl|9&r9_Dhi>3Pp#`PHVRAK%{cVwG|X%gTY6hP?nyqviknRPMxY*j(i3VVi6)0=N%= zyI!KeC}JXoILC$>rj%Esd0k3%Mva3M@0=*kklWltl7P@llwivrCA0YIx7z*5g-P;< zL7eMfs#?ZV_QX_>pZZSc{L=6w+QbTUVOI)K5w&$%P*l2r8;7q9%kgz(JG@z+nyj)b z;NXgW(Pd$S6R&$?xL1Bd&!v-4|19|Ho>ldS>sT}=>l3x^;2nouF7t}txIxAj~sADyj)D=p6n0!kJCTR<*I##Jc z0lg4>>eZ?My4QuodzpI$ZHU6OgOmrO=9jzXSQbjPla}qIR&4X1a;Y#Vyu|8)Jxt)2=nvk1n2wTUG>%t~ldbt*CR!RcP`k)}1i-%+=Tsj`$Nj zS_OVadn4?Goha)ScO4hd*=bo7QkjAddI>;dt*+}1xj&y~ciMWHu2m@E7s{c~6*K69 zho91}2-VAdR=ph48e|bMDV)ou+CjI{nN@b; zhu>9z4k{&=QScVLoKvcgUCnD$eJWCiK|DF)Xy8u&Kw<+ekp_pUY;REh4VIJF1y--V zQI&sK3YQj6+S_H!1K9%=hAI;s!#H}kc(VM}59uhT=bv|14o;5`%Gd9p%lbZ!L$Nf# z`Ke^RRc4uxHepqD!PtaMbxh&x$+9Yn9$Z7E7kQ$gd*KqP(Gikd|Fsf1HzzZY?|CX` zsS%j;a(((REq_SWURSgD?T_YER~OJR6Yig#<@=oij~sD-cm~NZD_1WJe}$5N^23t7 z+Btt32-V)G1bNgEy?&ee`1KoVX!@ED+sl)`fKdRJR`wFbP}3K}bsU4s$NV|C%{>1s zV}W>GYrS0JHHE~;V&$FoV0FH40|(n^WOE45*{lsc>6Z$141)SueA@; z2+@`#zwSt9FSs(XuD$aYLC)WMv-Zw#Wt<*eBTN3$$@pFxJ(d$}+g|ousfn1w+|Wb& zh?kJg!rty4em(=t%z}xVZ&GGxq7~=X7t<}lR^lVK9jt%L!aENt?dn-$IF{E|Yt}X= z3t(yOUxGCUBSV0xd5PrJ49L}qA3a@vELTz&yq)2$xsiMmem{WUz1@Bvvbt+-xEZG@ zN_o3<48~jg0Js34FT6z+P3Ms9pg>=oxuuz>dGQZ6p-VF|2vOtY#(B}!t9N)=dbhxF zWLVmqEQ6Jc{~9cv1KNd2A5ebtZ_XX{1{=7<#4 z_JLe4$ZS$_?fi@vIeqxS7xagvPzOh6zjV!sJyhF@oWh<@H{PqVj@5Y+oI3F7aSuGZ-A$kF zkGtI=(KTR2Y#kNecc$-*TD~GPRCQg`V0oXCJhQ0^8|VYSSG-^O4n{`780|vZZWFOa zE&f;oEg#)Z3>|K;d`-j5svM{42cc{31i_R!g(SoVc`<7S-?-wN_-3hRYIKalLOb2f z(}oNY&6k#FnM7A_QCqAqFC;)wYSItjhb{jM2t1hxbOHFzl@PF{hsspQKR=_j4A{5) zcl-Pof=O7J%me1+T@B$@atluPM(s?2$D2Mg0N?+uwu!9#sU5$f-+R1DX97_cHvp;+ z`F56i*VC}Af&6rXT`7sgcZ?4ntZ(SqIY?*90rc@4;5G$35-jwAC)2Cl!iQAAIJsPY z!qwPb1p4*g$+CSwskFg17G{@SYPhq&d&+mSxWBgoT%MPyx|1#-C%$9VKtDj&elH9D zrWJr!>y_!@$zVw-_)ft7a}NHKD}W!KuF`v$v_R}{L}v;3Z#+4v!u=ob&?fYX&*U%RPHWW)Q_Z>KIFdl7)0PdTUwh*_UFl zQT-3iTaAj2{H=}MbUNuVJiNnokQG+m^%L_klV{CNSPdm*P^651f~l=pDcpeC^+d%T;$2W z>n>PTVEk1fR-x7#-7g||^T7F9A)Xy9j~sDKB)?q7FCO{R0_CLdWr)9)0GY?8E36f? zUZ5OW5t_dVAgBjF|A4{-bBfXN6wR(Zlwz!p_SC0p(?e5T*L3aZnjV{&qU6nQblI4q zLJ~SQ*~NQBUHZin?(^DI{I2D9DSY)`sXVu9qXF&?+m~G@k_GTKm>k6MNZ$GF_%t%P zC<*-G$3m8!B4%+Kon>uF?h%BjJokT0geq9yu%=K1NoKDtn@A=?;c_QDpr#cwK>V5^ zYYhFD>ZNp2jWm}C#Ask2K-$kMHhw+?(N?z;a+x> zLfDt|0{*QjGNoTOX+2bFIp#5<`cb{xed6pTr!5OYBFx_$08Mz`q(0yRVPv)Us;lxY-j~0{HNKRTn8D7@0=2U}QG*k^QwXsdb=dNd^xm zRS@{c6ruk*cWKgO76IRVKQE7wfjsu_0(q=M;Av9$8+tCQKeJMsOnQO;4Wpx@-C<+m zkC8+}T_JstECX)hJkS2OzJ1Q#SP4`C{Mupy(2o&pLq9+^KR5^E!TYNSsu_n0&FIo8 z?+y%=*4txrcne@(dq8W@!k|Y+SC}X2Y45rW$QN}2dIjF~4d2bWxV1$tE=OG5>nvzK z;(;rtz2$pZ+RfZ+T68$VUXcAWC2#)K3)bAfdSJ~2&I7OO=d-=#nQrA^J#xy!D(t2l zyt19QCoVcl1BQQH!Ueo!5C`Sj$vz++&LMyM2T|KWA;&+JyAnwHIZFwBohDQTfu$Uw zSNt$dsJmQ12(BqhN+X8)_K9IC8dUJ_<%r~^i9X8wUo&YyA^C;S!58E28Z)507zGp> zib3{S89W@M=mYjMax~6C3Qu4Fz<-=0aBf0S3R~xnWDeNx$^_$p`%}mzx;ZK`0zGDYcFA|5HxGi>L}+x_puLJxuf(72=u#)oOCl|q>6;352W9v zESRl(0h>F^oOp1=3&7m`OIe5MnP=>HkyAT9&WELd-kT$#>^s2Xq3_TJfO35fO&Kl@ za)-ip2I+y`Go>pPl34(p|6rAzz}Li6X}by8!-%6p@S1QIZsiIY2+^d@qNQfE@Pk0y%67MD-Wn{fV3?KS3vZDoHQk z_Zk`PZae&Fc{tr=aYKyiEc8ZB;ofiufOm5a_vKnH2;6n$0^A~&pD{Kys%$R+_Om&7 zV>@47WZUL??@=>BJhdfI>HlTz3ssT{18Pwi&5w3lg|VYnB%YMO>%(wL>0pkc$#-`= z4wvh`6cbet|7ea06Wf?@&p_Lw7DcJy!uTo6#)h7K^pfz_gZu>DB8Y!G$AoFZ476Y& zmW6i6$*+Xo9Kqih_L+EQq6NrBeW(vRRss3?9CV)P2j(Al%rULFbHM9-SVKcJmJ4tj zvz#d6Z|0DV{V_5lTCj?8NbvrQKV6pGB6sR1gKl zCX1l_g&YSay;NDPwSzluFlT|eG6}fLz}xk!4f{)Q*A?Lw_15mnNQKTQC;b4N$^je0 zD;gDwI|ID0ZKxW8AJrfF~l*Bu8q)fP#6iDSn3se?>{)C5TRcHbUm38IpV`L5X=CX7) zgxl_DHlXY1`aoqkN9}HuDUhmy#8-2q?l!^VL+#5T^2l;lizXM{*>LwfXrEPZPh_JP z%&bl)j&@E3DZ)!2_{{a$ z&RCrm9N{9N<&kl^bN_HM0D>>b5jKgbb6zS9+yZH0Ay(^0cXzZKKCqAG7IG4?m`MkDj3Crq(YGtl4p~XGlS#fNfp>%PSNzoDgM7jX}u3{pP#fTQj;-XSf z)5N6I%*sJymPKkxdoHIts4k@dJXrvtPa8qaW$f4V6&sPzFlfVii1DgqoTv0KaU&tfJ4HyNV)-Wk65#D(@*0P>_*q zLqUeE>Zty)sDeek(`JVYLOE|PFG&9P&y|)B{ zQ=1{s3J5Re2shi_Gt#zgGXt7;DQ(-=^CC6h*E3YDfJiP3f>iN0`dH6ys|`JaO_e_= z=JRsc%5dIup`0dD`Z5cI3ocr@+W$MJ_QKK^?5bwyW81SAbpK50o9aD!L)8~!yIsn8 z;C`?nzSER=iWHw}os0PS@Wm@v)3}yy(So(f=5qmY=%@;!OG?~y$(M ze@YZ^-(w+_)E8g%opTP-B8dS&-%(5guFy!f;R+4geAY6sU-Y<@caEdn(q|cEwTf8~ ze8iTO6JAm+n^ml9Qj%b#&1dz3=AS8TGYT(K!+|5#W~l13<^k6Acr^%}RXn>48rSS@ z{9rU1Y|3XT=B6CBGMq=+H*siU^5{gmTCWcP|E54Im?_q*pjyup*B)O2&8a7>yvMK3 z(QYSZ*yrWomF?nE z5i!zdj7hgXmO$vL~NJgH8QxVD%S+?SDV!+qswm>Zh` zjbHlBmD`r%pqU%P04?AFQ%x6Wze0I11M?Ib8dzg|Hzm&j`|S;BI7d)y0y-QQ0I~PC zR<5$sYA@!1JBu7}0|ub40T5nP225Wbp7rHlO>I0iqh3DPxq?3NN#4$XbnYt^tw{`I z`T+mQVluFCBin|Jr|`|b7lA+0xAM+%)Z4J{41EowK=%tu-}=gEa(KnZ#P7uJPQ_g1vMdIZuiJKUIqa8Z3SMz)cHqy<6-#_#uf%F z1;nBMw9y!1uHP9M#ou5boZympG>4<1joHfO_#Z?N**` z?(>jyDZCR|GIaWY|JTKIFbs`u8^bV7z{cS`2<*6Y<>SziZ(|&08Gs@5gYbux0UL-O zzSTg?g1eEp2;kcr5^y82pf7Z|EaUet*uHX2y;KdPjp-#ViUwt~pqlJZ!&86av9oha zHYlSkHs2#O$oGecL7N>Y?yD7l1gRz^>ul_?b9J8S3y z_NIn3veuBpQ-kOO#J?!i3RJf3`&pG0hW}!Yc?O`bB@pi4nbntvXMHu;LJeMYx;{!Z zBZtT8A)+>uP}r|1{0ih7&&gMq4Ju?n^}7tZFSu;w1MUItcutcvi%z^b6+pwYAbpRg zWHsysY-o|i;sLu8m@_$S&-}`J&l$Ty|51*FvY%RNJ?o;!J-a?tts=6Oz zPDbr6QArNHTcd!LY$Z4sgoG21MmDhS;3ib6t=$p{z7 zWcV0$849SBOFBW|K36Iso#_m`8b+KRge%FTfv!fn5^hoS`;N{qp0)Ye#)^oFByZ9Q ziZ4*g9Ysd}oz>{JAOal)&57nryuwacv>MHNMv+ZB2l=IAc)fm_!p+gJY?TFi{pvR0{mBZds&PKWU+r2$YNar zqj%`Kd)Ec<|286O@D4b)d)Khr<6}QbvL~?pD*O$5v!DE>bJmfgF$e7WUaumf0TtQ5 z+fb3KG786@E}@H&amCIIs2td*)Kpi$r9Hn2=aB8B1{{R@cB&w~@#zg&u=RLhF{1b! za#1wTTB!itzT^uBdV&3=9F4;&roVzmPvK}Kf7`VKG}|}1Myl?vfD)$tO<$?YqUuB8 zwkeWo(qALRSB!OyP0E8}l^We2wG4qO&rs#D6T0mDRaoTzb>6Gs`N8`Od55K&EX^%F z#93hy$IKU;b<(BqzpZ4{#9ym@FYha?wfCgM{O8UMQ8(}m>1#rZ+(pK5cY@%xMwt8N zu3uS2-`If4keC7Vlb)%vrAR=9MzTPKMRM@%z`HB;>G7$g55Tvl2)s`fw~{#3WN`4y zfPKxgJpTp{{_Wq*`EP2#^@+i1eROh)FK{DAQIA7t4zwTiJD!KDAHIriS|tZvp!}I) z4xk0&sJRwQ%~aql??B^l%M!p}^=vQZ`FeBys(La*Vh+&%_`8K9Acv7`E{EyT+}&@m z=aV^uJ>MdTJn=c6*k@K_nXO3mfy7UXNkJ|nT_D%NNxC?+1sTl9$v}|j_4peTxkg|W zGje+jgb8^LlpiptnpKBs9H6Fdtvk;~6j}%vp26${>N|7j=dH((6ZyLAUXI|7x5T9~ zyW?yPa~tG?bPJ&Sr~_H)j6S6E?%qaK_ePnM!=OT!^#bZkImnKudy(7~g>9^`97&$` z<@Lm2P+SJ3PY-2h)P)VBNUnY%#zi#a9^DH9emYCWyXL-HMsbQ}A`L5>%uD(S1Amx1}aBUu4&h}fIL zin##002xJ>0|2}=2mJmWFcYg)jle|{G*`6K1pT4+T%0TdZ2LjwmLq_VD5tA(>khsj zu>VpF57%ep3S6J#-~2<-C9BmzOwHummq2abs26JE_PcvZ_B01T>r2HnA*u0DAgLR$ z?(Kq9NSZ7I{nKMAnflf*YL~6TyE`2l6K+Yl1Y-NHQle}l_7?7{Y{bD20QNh@@X(x* zYp%IQ57=(#!DY-zawte~BmTw-^4`y|VbmMOXWWo9z0l#c2Jh_>340`W4&YB3SCwf$ zoih<}Wc28J0RCnh1fnx=Qp8tsH-sm3mx1)6!&#Oe3%#T~p#MFd*`38NFQ9}q{}(kI z5uB+#Ytu!V-tNUO-mJeY%=GQk{#l8|IV$r&AD9Gx&8fifjB0`5d1*FpQfUc{yK6b$awFiQ@nM5tRlL{b>2oe}eZJ50H0zjmnc<+hdCLhd=U^`2CYvP&liU zN-126FXHRUd7M3A_a`|Tn7tT(*EE2N13eFQS^W~y#12wQ(g&CwE#RW}103CK?o`>2 zpZ}x5jB)6&a>Yeh*4rZB9)AoyR7$}%)?0*u+WLU-$`(jDwGq-|FLIL30pKCWJxkwQ zm81qNZ{z^*4~l`C%4$H6b`}_4Z-JGQmM^S#!Yg zoo;>O`K+Gw0djRO5%kwDxtWVX`yVUl$Dn7yE>hwCbeKI~)w_lvew&VLtu6>M? zNc4ua0gSD`n49SBYHI>Dytz)VS6_?{=n!gXpSjLnXfN?p%R}<*_e?+Iu(mw^JE8BA zdtf?d;VGt(z~;*7sp>R6x&{qgubL>assH^wfJKkd@V96$f^tcCCn68`^s)Nb)K)qt zJ`0phFVK!jp^ZouiVh(^yAfl8l=R`}x33n4o*FzfT}_tp`)9wfkR82AtH^oX4sGUz z<)Cl?fMx!$pT{JJF~Cv=^1Qa`5>J)CbyK!a7~iy1Jz%9u~MgH zMbZ12+)M{82D$&-1CnF(xG*;jly$s`5mCPz>&9A2H}b1>?lv7^ZQsOmrzfW>`|5)S zD@iYS`tD0j<*XS8U7(0*`6+SaON9lyd*cqZSt`|@n8NE#^(1*&z#qWhH7RYQ*U~@H zuf9QllJDE$%E%zOfgs8pzIWcNs+k;1k(#+VujV3#oH$poU`Z#iAE`7_zlwF?>L2nf zZ>=3ndhzSy#VAq)v(|h}++@!9N6#I@&H(P^#jxgPn=)5VX7Tg4w}4svoZi2k?Rs8_ zJbkd1ECAusKQiO;&I*aF*L)n07pbMi!y56y%PzCxl38E3ZOG=;%q%4Rpu4Q}JA~wD z*+{0`oziz>$i`J1MUlRHnhh5(^cr%Wqsur5r}{DQGX08XI@xd*4qbUF)`|9H`~(EuO5$N1#6s%7dpe z!^nuPKrwj^qI07;@j?!Xwpd)9SIiDwC(=j)Ki^Zn3P;kvv^SFa9=MW`1TK=~wLv9s z#9tdsMs)?M$+J*oGm4y7&84=StR?ec=;GHkvzkx5wJk66?r*PTI4K)RA86mMJm`Qj zvMW$do`)jkC~{soGL*o`H|Erk57!UsYV#(y{<9F1*AgeoZ$>P`CpSWjN$m@+onf#j zq(!TJoyQX|M`*cfF?~v83q;nIk9K4RaE!v^V2wj1FW|`F*!W1Y4AHv&Ohu%^g`#ko zn_Gm-r4hO&ZxHKF8@IBKSy#UCNiZGc@ckvnSw9lIu(EVWSxXJqyg=2#TD@}RL?x-> z2k&~D%0y3mg+&-C_XF2j5ZNL6)DB&^)`IO0jxDtP7S|qrfUY}pZS15WUVkF8q3!E8^|B$&7Jek}1)qu^rSuwC zFS;)fS01shHrr!zX=t(lg@0+j(1{Gz4o>s?KFGxB%0cmcAx$CvaIy^GpA-|YwT-e4 zBjE>Vdp0G>+XGt%@OKS99-2IScyMBP*VqJ>!&Q9Y&6zJ=Q8~IJENqi`e01y0YGWf| zac)T%2~XGDVB>(gX0o=E=#2A8ADXo~%P-L}j4`pUtiR4%_hlqQvIuHB-chJvjfmaS zB}a9gQ3Z{Iqs@rVZ1TwObBy*79Ki}6-0o`JoKIahL zHpVX=`F{JQ+cuWpuj&_U|6U33F6Y(H(TrfjpNrWh9|*tNwNUiyQc=3HM2|2W z9UGn!eYhHHW>K5n(W5F|jEG^?ZC<=Yt@IkR6lM38*WHSsgw-Z4XiM3aBPVN*WhoweK+2{mTD+>M4Qu3j| z@zD<#a?Whxl6PC%)63T5($*Q(OSgLO9XueajERv}Jg}FoCo`bjdkZ+|P%!F+w_O)! zXmXY|5zk*|v^%ci?xM7{njYE?Aq<6>SVo_KX;io z=0Vz=?A*4Azvpa|e#$M;ESu;8p_0mf^q*7@#&wkCe}uuoYPB*koXmi+A1Z@sX4q7M zw$vt@$UH6g2R%cEZ*pr8_-ptZY8|u}nt%{f+v~JVQ%RQb(?9)qkrn44=vnsR@k;;T z#Mn?WkDn}kLVrs0BssL(G-))6WRuR`Ike~?cZ}09=0uTtKdFe`LB^mehENTi!H57V z(4C(GAZ;a4Y)kevP`+Rg+j}V*EP@zr8#KhbC(FP-aGTN?CI8AJ>kV!Q4vliljn|n6 z4TEpa4L)UUX9L!9zOb#cqiJtR!B?1*k}B9e|Ff!V%pi2GQeQ>)(}x?je){kuH%=dM z^!n+89zn`YAHC`6gH*qz@$4bdMHd*JQO3!vj#n!^J@N!`#vs_^Ci>0K=r3eqznAv^ zN}`1#_$9z@`FGVMmwXyL;s*P7!?=M8BFE`!u*b*}jMg@l!+L>6ACN!vIirG!M#H95pJ<}^*KwXzEukurL z1APQayQe3Tc@P=?V!Omz2qCMHk)#T|qhBh-ElwlULeN%}NqEjsIu30h*l=xdY$BNf z(Oq9IB3>*2SzpqR??3-P@w*PGp&2Nf;bm8RV-whgciT4Ol@aN8myD{79UPUmm|CSi zy9n{9q8Bq}1EWUWH4DxT-?1Xe_VSpj;x{*bRi&enqQko?69+>GK3e_<9bcKjCQ;DZ za`QeA8TUrSIgmN;YsxAYLu5_1(})&J&&qV5od7#=j-bbO5$>gx@v+0n44^iDL)9`k zLhB>GjGkVCqH%VPdLhHwM%f2`C$0}9Ubw6(S&gCza5vjiV1E`^U;S@opL=yrb#O=` ziGvnrmsUyZvWfcGaAoTd-)xjDgUW^9S8Af7OU)6lmP%l_53si?{A%GY8zy~^jf_zb zE&^-wk0Z+z?A&yn@!WBAvNo(q3%>%9cFsYN74%!SVYNK%7^{pACw*Y!<;u=#;V64O zHh5sXlFS0>f}fnDRSAPv)(p58fDcMW!zq9c(ZqgJT$*)?bHcQw(;d0E&D_%2!gH91 z8=Tr(sZm%rI7N5tcY*2!Yf{w58&EGu3>JkMJQ_J)&dOYrncGBOi^2kA+MMmuI%Nt0smjJ z2&~T<<`iLm7GV#uiB8j&V$AN1yQub&kvH_v<%*SL32@&uSe^#XuV8g)us>=MUqx6g z^#ox3zS@TeP`%b)zTYWq1QpZL7@)NX+a{~WnQ}4%DqlWNsc|NT+&C>!Rm&X`VfB?& zl#U5nrqEiK#>h?^3e>1uT+yS4FmHd^)G|)>pG8{IFSN&bvJ7r7xxXJd3KIKtdZc-9 z%i&w-Qz*Y5fDe9v0<*EamzfEP3<$oTwmChq9>zx0U%mcFbp{gDX8rqPyK_ht`Qik8G z8LkYCYdl1oHKs^yr+feC7rug8K0#%*FQnG?d_DCMhB$Ry*)%?d;jDsEWdMDH`cZY! zAz;`NqVAkg)mM2dw5TiemyPT+t+Pb+^nBGy=EEr3<4ja1=*WzhBmaQv6O@rW-?+m4J8GZB>Q>@TZq!7C3$uUuu*q#uo1 z$Ciq9(Mrv{s-lE%O3zhrd-KDTYx4+xv`gV_%)S?ncG}9e`NP#{bFn!Vc8d-kq z#T1d=)4n(ddbDPzih(7NIa^GwZL`XXBbJqvL%%-&f7hh7XW%MLySftN>I7(My&BgT zufSyzp|QR{&LLP?4OpLagm2~-Eu2Nxj$1*jME%A|Lf@@^oz zBWE_k5VyIc9+t9QHeWSTkCIKfr9P0Z{906x>c(wdid%}imZTXeIU-J+r#V8*>!cag z(#q4M*%E`Of|=`-sZuetYN|bn#T;e;`Q%?$l@~*|as-!7BJPzXQa{k1X{damo~fMBhTobSc1*6cHw;yK19(ST;I`@w!wtOww3oL) zZPgow8hQh0J2$k^8>*UIZxrjTRd4K7M;G#n{a|5kqYk-q@pAXChHh*$=7na;#VOsR zk5u|x)~Yz|J1U19Iu3X*Z-LvY;~Z}2I^aFy(arg7)eV$Q9GeK5*g8C%3;^!XV-%Jn z!#knQ(um}MWx8o)zYZ89qYBJhdke8`244ZPsCW^0pKpQNO2v+2QSlP+KDW6!zpYfv zN4!$DwgkY3T&TcYCGq*^W?fG!MMPlHLl@v4(*m}Y9wMx$p%-vx6}E%!hLt7IGc4)Y zQRKxXc|K59xpID^Sm;*TG{1rTa&l2n;-j7fWp+&S!kbp{dSInvf*Yv3^8GbvxP@!s zbaEzsnhKi(U1hg9a3O!EJEHQAD7E;qaYlL!)f)KPgYJ!i^OQ;Sg8Q8+h0I3AaNA?U zLyJ-L1MoR5fLj@b2Nts!0N^k5sop2#6!vIT2u}=o5n6R{@D?fUbb-berB&j+*e6b{ zbijCM(M}%#uWSL_N;@7{w9^m3H*Zz#uqkL#%CF@ya{6NYGf7*~1<^H96a8hCyF(zc z@QBOST*gB1^6Qgg6}IXfDsD@4%{&DBs0v!DP}gjlUTN1DuJp?y&_3S+wN<|uYH;X4 zJ9UY6N|D<_@Tnr?+*YxCE%i2DNAg#q&pEL07G*`$_WhjNTCD{t28&5{9)KTh0o-bC ziNK*l0QdP8uq`{p_zgV*xVLP}^hkdk4qCaFT7+Y6QH2$Dl71M2w^p5WNo{aqXf$o# z;OvigfJ3P+{nsNawQmnC8l3~++gbp((x?X(oz4UB_NRKC(hPXorOnCk*UKRrI`d`u zP;Qi+g;oi6?vnLV{^Qf@(kd5^_|*Eznl#aTeCN@iG+N+Yy#8@KC({{-mmG7ATQE`o z>TxtmQk^a(Q6+Rt;n>ji={6B%*0o8NmMBn$UbE;O+_rv`fEz>O0_-s92i^A+s zre1fv=I3g?~f`K-O;ZG^1?CLs5MIt zPm$Xnr@IFy4#Jy?a0?LXc~`DdI5W+=RXE#%@sQICHsEEFSvHDtDOD_UFghKpbZRpO5UO$h)q& zL4l$ITRDuql9CbWW+2s_`+T3Mnj)mO6e}*Axm*UuTb`ks;=bYQj>JVg9NYf6IXqje zTCgnR^2$(0NKn~=Rr|nIt@0s4DZHR_RIfqV0!brN)S0BLyik*P`K82N3}3vM3rgdv z?<*!JLK)yZ1ikT@D)2bZBy%UN5LX_|qo$iqmbK8Fo5Ji%TiMpgh3c3TwJn|gpPD=r z%xkUvsJJh>HwI3*mfSd<1BZY9?EepOO2;UYc`$VC@2dS}ts(Rzb$h4pNQn!(ZO}AV z#dbdL%8w}WdVdC#mIqZ82k5?dTK2N~eVD_>%WbI;gco-_5UHKQ5IxwL?kZeTrlYVl zJ~70H^E^#{h;>OC=>@CLA1&-6Q*HDcCC5T^nav5- zDnpa>ra>|bDmPuF3aa!_&J3r)bUbuatoFcFcczS#Ob2DSdeW^q17V7p2ib*5B~SI5 zY=V8}a?^&RbBQ~Lo|;Qs7s$Z?n@i%5EU_cNEVd=i9ECHC`V5+4bjB?4AR%|r_7p=0 zz!H^j__;-$TCAzd>e~-jr;f9yNUHeVEp%ieT#U{+I`c@_dF!;iZZV=wC48MlvIwk~ zzDRY?SrwA(jw5ktDO%C=*Yc6LpB_Fy>D5{H0rSFM_NXluDDNB;&QA8IX`JE)YB+V& zG^>S^)H-+6e6dzeQtM5wmF1g@DHMRzpJ29?5X2V^gg0SM8&$h}E`b@S}*3dJ@GYF4onQqFo(mIn`7qhJ* z*V$~VNH%wM#GMNAyA};rmNRYZH%okV>YDgt{_6V8;Y53`Sp>VoH4n>47vgpHT7xJ} zt>653GF}}|ZI~)u^2moA`5?$FjP(y+tVT=2G1N;D8QLp|E=zBfp?1nd#P*3{`#yyN zsdl|1#f1WLUkiJr22)vc_E}w$OPB?}H@{T**1_iTI2bx4g{3G^OPrAb#l+O=BuG0- zUCOUDtdg8?BuP5U>NuJ+&%XA`8cyIWfbp)`i~y9Wu|yPCs}NI^deNHT4x6tU=r1lw z+GA=k90*c2p7rVsJM$+ZJF;9Oeomi=ev2n&YFaoED+M*@bjyjjLK9!Icp^F%-pQfg zojGBKEJIvI!i)?2gS_-jzeJG6^)kX&v`ENAp3S?9#Sn=Hpp(COb4E93kLGnVb1dpc z>ugz2@?}7hN=pE`2rgDq(ozmS~ z`81!FKk+xbcQq^VzBO10r59Nb&WldTpz?k-xNzrGJEk_R-z;A{9X)M_40zUnYg1oO zS37Aq-4UF+$VJ0Po74Wp#h5Pk(p1zs>&@miIy71tI@GU*Iu8TwdW#yW+=xv{UNyZm z4@zyVQS+g1Tro7~K~9oyqs3Z{Zg5r7o8F-;z%S2S8^;R#GU+?|WnMVSF%Q!3DR-q7 z>pTR@^ue6}z`lM{s#WKldDj{unQOh}%iOx)nqbPlZ#feo*5f;u8^e`du5UwlB7uPS zXlfkZp^0&X0peU*x?={%$0v_&r@Z-PxR^$dcop{#*FLV_BzgBP({f3ZYu&N;wZnU3 zhwHqy#rmRT340zliM2Pkg0T@bfj)HokKXA`K-M5Ou_K zMh&DWj#kescgBQ(fMQT`PtJxgF0E!f?(I!B0_B!Eo$aNWHad%Uwcz_ah zhgA4w2z}K@vckK7(bE1bzY7{oes?G-wKBdw_W^>US@!{MUO08q?G?n8F=d%Giycw#pr3b@WIM>!DX#e3)fpt#)T^xr%g)~nHDaF&bao_ZJ91w zPa#oU&#g3|rxlWHEonzp(LoRVhfGJ^;SADu6j`sCpLP@(ueCw#WV^bvV(KKzwe4hq z%%_5}fFa#GOFgF{De=c%-B6?3K$9+rdhsnPa?vSkI~v$11!tYpDm7S=oIHs{vt`T8 zIkM0VJsM8;fx|05shlEQq6CwUoc5?NTm5CQ)m|9Tx6ZMmd#Q`+HQbGE5XCb98BbW zUsY3)dR$WZH?Oh8ZKw_8oo8xaz9xDxn9JE~qPg%?EvlVygO3|Uv)5-DMX{s-voV<6PDev{~Q;o7ntN03%Am|L!m zr?NQdq&sqpZb>A;H8FJN+UT;aK$6<2w`^2Qgu5}QmAsG^vW9fRvU5xE02qDqtouC~ zSCO*`*3#13hzr7M+<6>XWiu?zvyHtFWn9GzwU-Q|%iVU+#(20K0%r9`UxRt2jaFQ~ zK&!{6iCXr!THoHqTM!$1s*_bpXVjB95co_3LO}pEr{->yuI41nWC>88_=XM*ITzn= zxuCQxJQhS0wdF9OQB%wTkaV(B*VSSTCAa4-g6{pk3Hpt=?w_o0i1%@H;_El-&r146 z?_04m5Q8CQwGlE`)^LR>y#dVIZwr7tu&lkQ(4WddyINEFY3j;9L>cb(yrc@m2mZGr z^L+vzzB+7WlvaN4UjdCSV1K5V#&bjO8BKIm>+LJ{&h%IrPOSp`-FK-Vsv-xBNnLHe zk@h)9A8MO|_5t~g9JD5YV#hk|lk3VK8i>$jJYf@K8L$ugR+jTTytA9wxzD=r*+u*E zte&I`pr;hP@Qvc{s}-%JznhVr1G(3K8!`p5@s=RD)WFEX1nl2!n}B9iU2n~SDeI^XxloC@?lp zAbP1@;65{lpBJGye)q=I@qQU913-Og4qXH3c87|?4!WNOg^ojYsI9^G+Z>A%}cW@0fs{Q);}$eOVFPDZLNC6FCBT)|=}k!bi1Nf%>`}dY*lU z9%r+nsZ7r@CUZdjzM*rtqGuD&Ib1P1$=T4Y`|)>;%vVMS^OgO(?fFUxAg&t#{7a3D z1}zR6K}++#R$%x_;Jq)0`^S2C5;oM;(uNe-S-(gFh?nPw4Y^QKJ@$9 zft6>yIX2Bt@l>=7+Ad&Tp2OB0N4ta8kl`l*cy$i=v_B3^%RS1mHSfq2*A^qr0Qjvr z0(s7xYbA1S;PU{zEeBq}eRK5gjdoFl!7l;!{y)g}sHOy>)|;aPI~q$TAfJ$fet6~v zh;^3fXcYAG-bk2Ijq^UhPUPTq=b~NC6+E(D1?KB=*l)|6N{gGK4O!RIoMPp3K>T

    8UW@?bJ+LS%NE+ywIRcU1Mq!0;D5*fw_a%&w0Ggay)%cO zXS}&m3_aTRGC&{tqwI*!Gv6G%d!s)X8JsvkFVBJJ&(^hawI1B;r60g2+aS=K`v@O8 zbq0uU$svCfhbq;dY-urs9J28}57gV*KyS`>_eMQ*7-C%jp7-NycjnLhHP?864a(>Q z+7oi9Kg40uc9jv?HC^-pbRq|yXSum9z_KA%f%v){a-Qwx$dPTNu;u{y;T&|H=~gK$ z?LaA6Uj*P++W^*0=0s@XTZkCHpB#SWp<{wigtUgf1yS;H5@LmlO`X zttCZ-#*_ra_vMg((O=;~K`xz-XzmBnm#3H|Edcq>9ECjZ&BvDG-O!hT`p`An1*(|> z{+q*hZ**su!>k0*%X8pbK@|rl*vN-^{} ze&+#tTMj(Wd~@)W#x>;+)O+3|+o5^ZTlq_49ygYE0&`;<*v@4(_dJ1b4j<{J{=oA` z44?gh?xdcx=W&!4L1FQps-+YqcpjtNw&#f?;CYn5kByLyF9+V1=ZVl^3?#IB!2fN; z-?%uqcV_9)DsJlD7_r?T=mqfa<_P3jZ*Hd%K8}I`puRYVo@d{oH@77#8DeXi1@b1k ziGlwM=_)O7I%jK2(dq+@2mV|kE!dOMZrh$b5m;0gNL+5D)S?`GTNdTP;a7oqbq@Qr zy7`HfTWg#0=+3HU0R7e+i9GwR-wV=Yo>aZT>|8J_tH*Q z&FfK~cBeB14qER7-V<`T1Gw{Eaa%8I71?RL53mzC_&nRqHKO2A+f`t`E{C0Gy*V~L z>1daOgp3U!Kc0iuf@Rf8tBj2T2W>9`?*}>DS7xr|Xl>()?6jS%4aU)fztJt{*>0{8 z1&`Y91?Dqz*m>5QV|#4}@0<((^!IY$dB$4>4$3;>hFL(qr448oHx!I{trQ4dIS;(s za=4$)yrR--;25q2#!JAw&%LvQJ&)~l-F$w!%-+6|c&8KCFEkn)h1kW~E2%q}Do|F2 z+AOF%?mj9}iW=r9qu%x$l_rB(st-gC8!`2jjzC+p6lDZbT61Hq3h+0yLB#b@OH~Ey zngi;`a_GA=_gc5wb4&{m$MYhPf6xYn2K>`o;q*Y$6xBo>rdRQjgF9`vLX1^I(G%qY*@(l~$(tZB~(& zTy>s=b(yS5&+z0lJ-yansSU}yejxNq_gAB@(^V!#j~zDfX+7JIRfe|nZ7MzT|4A2+ zju>Kv@c#0;w2I?}Jz4&&!{}7@WNjpw0nUehUR6RNmR%>{PFP6wJ<4AF$qW8Eit?$V zJ63p7*}S%2AKTLkUfsPZ(M;s&^q`kT@PEZGn5IcDW_l!TC~3>SkBr*59{R#=+_=#X zh@B5omC%QF=SE+Yk(>3!kNA)jUq8XFt-&oD#Jz@&8>Dxqrz+Zz^n>K19;{OEsk2*j z03C%8_R_Ih=sG(kP*R4v%Xi&@NAGdf$(BYpE)}tq^n!((+GIuPuJd%Iz_Yt8y7b2H z5UC=W2fZuLSMAfgw$qiKk@3NUT%5afviy&S!r1EwpG?sW!t?>1K6x+(B|d;z((#k8 zeGIB-uFe7(s59Ac+LJ-9L8uICchbWo5aPKHQ(^otqBBA22~%ff>@nVtSXgng`T!Lr*Xchl781~CsyN0R%(t1T(eGgtiG2o@}7g7 zrHzocM4}O2rph2bLB$I1(&Ql~`4BsAki|}QsHDh}PT+rJlj`*dy|`yOoOL7SQ02I_ zpK|TtShussv2bvK%Hz#ME93OEw+_R3_hX@ko*~{~;QDr7xeQzu90dcnz0pP(G2`kd75$Bpx! z#BltCI|!|b`c4UNyNVo&P+s0-? zjZ92VZMEYS$!`Qrd>VfBPuQ{|S7SA5h4K&KqLidH_hZ8qW`BZ$b$V@j8GL_zC-_fy z(~y3TSXgVPbBNp~W-7YOhTX!tvJ!-38B|{IltOCx@i3xKVRV(P@Iia8yPWAg8fsL( zWgZnrNoluBo0@WIl~>6uxV!oCHn|*<<9O0bR`2yQ;?h@*CktTkkNeg5WW)r=OziA; z!&^ork8f%pC>pKQKHBzRrDarjS6YO&()XW{&|*N+Kgk?K{pCF>vMk$1ZE8x}Z{DKl zF1^YaU#2IVt7S+e!%bW41X76x3Jnl4s#}us;^z=FiiFg*loVLs*=TAsMC2Ic?3(th z&sz_iWns| z!Oa3Ca{;V~Xl6QOuWxh6ZljBIk_8ytUr(vw9f=)(ZM39Xr9M4wPm|EeS{ud_(}ypU z1H^Q&);I1LJ4P3b5{q=O*4iaDr&G1oK%?r2rfBF?ZMt3G+I8(mG{&1d5xeY&#@aWX zaNXt1h)(jGxp*@=?c2@h=(@J}Z8JH#u+3Vb4H(JdiSjSp93BJbw?mB^I=t)K_i{#C zZ*f|3X!INTOpW`F_*qNynwDGJx}y70U*;wP9tD^O%>Ia`xDm3eys@p!sD=h7E~&7y znuiS?n}#iwczCV3;V$GjV%ViOHZ}B&6bFovI^>XQG6TH&3A0i4Yb;i3eV`wND-aqj z5NJ(iRz+6{2zH)V7ga0_?zD6MX~jaGwPjP{1YJZy0PCVN#hy!CVl-7NHtv=n$}ha)XD5Eb?o~5QkmP~Q2a_+XEXY?TPX9J#kO{-$xRsRY%VH=RS5l} zw_y@jIgDDVg2mcjs8&)$>?RN;+t4*v>A~=+r%MuT23Y_8W)**odw}JX*oI~si_XF) z8cn&?W4d>wFXE*-^f0tcA&s~aW(H|PG%&OTMt1#`G9+Pv)7dTXqmMm z`^bJkOoZz6E zvTP*g7?h%-j@qz^y~3fOU&4QRA{<3oVSX`Rc- z4%gi9X>EcBS!-X)lA%`+91X>O`)M#8k`KE5L(4SVMc}29Ek|9&fQ?~Za{HC1I#p_? zN&;IV2o9DGzLa2O!aUaXZfBI5)m_cT=F;ReZ;+ZM=*l!w&Dyf+p+M@O)CCBdyiWyo zbZJdwp3>2!C6P9Ru97LWqI+<1a+nDxO7Gt9SL@(uXeA3khLUVaCm??NZ&d_YBK%JI zUT`cO;vNRf(S%!>ipo(Mc}m)c5Vqw)s{zpYwZB)^W!3EPWS5Ne-)Wm<>Ve#RiSmTT zvt_kbp(`0HypHPyseK<*l1F5!bMrAW1KjO22gGHx1PyU*LyYM5Nu!z&l9fWS0g!tA z$5gBGuEj01Mfv&QuhTwNYtHn?JM<|fphj3M3`J=>`lokXd1?Crqg#V zo#wn|2e+#?Jr%uLM>=UYcQPjDxcEsEb2qtPSWy(QH1FDnhllt2WZvn5&y<4&_nGJr zlF*pbhQR%6v!0%GtE35 zQuF>yGc05v2HN~St`)!@;NNtXkAJFoKAluJ#(iJ!KEn*#(S^KTuYOc$$CDb>(%pBJQkl1C2I| z@9Se%%cg0pXb&NO?1R!u)Tg{adA;D|FMg;TowM?;s$W*$L+>h%Q6bhmVDC`)5|_%W zY~)BK5?tFbb)nqWl4T%_|7g|Suy6OSr%hLC$3th-k}9CSzIsUPMb(pKV7%-ns>kfQ zOd^4mSk2|rRH`})yl*J3T*|BEiSjHW8G3v>G=|dpovdy9T6K93a>v*>#sAA7a7S`g zINRDW6o$}Woj~>^Rir#ZKjM`k>hG+s20hx9TO2m7ww9~;!32npuT>_(o%}Q;XsWVU zTe1o`w?Gq?wJTGaxuC_6eI^w^H(h6Zbxeiefx-&aR7be%Ka4+30(4OA5NWtCeoLs^ zEN9;{;`pfF+*{D({<3PaV+i-&4_Fhu&qsH4yJG>0me;R%wv>J^WCk1SH`n1$9-lmr zRH5Q$-A7g3w7;u^QcO^#`3Y8nKv6{^~x0Jc7oo~2P$2zc(ykt z`pQ@Jp`0c)*o?j^z8SUum%TTSkMpYT#vj=uMUYJ`Zcx)?J^RgN1dW_j;a!#E!9DesYB>=UOIfYUOi(Cwz?R>*m*4z^ zR+*!ANNw0XJ%hR--ypAtp=QY1n0j(9a8M{6GJx8?dIR6-NVMp8kYJKt!ZP_XCjeb(PXT$i7O>TV+ttBT zjrxR_k#)+`xSAf8!e)=-y^>18YSggJ;TQY;-5_B%V@Z2)Gd^3r z5Z)c7(*DVEqzGTBh~wTf#bjD?W^Ccnv;hAf7b|yUcU+8ye2KkE73Sn%AvUzboE(hA z+Ie(i$?r#KXzg^UJE5!^(!H_Q%k+jLHe0Qh5bEQEOt&!d*-Mn6Qi0Dr_`#WwBPJGB zmYM`V5>8EBH6t%LP1VGNF9(?Ed>kLA>LuIQ5X}i?XFgRa)Dy?S%C$-a?CsHmW|<28 zJ!prEunR;x2tl5brf~YkZ+|3BjGw#c5~SbWEXb2ztzD13=5@SjJulz<-sSSGU9P|3 z^)k$DWUG6q1CIBurv*-Kt1^Db7n@o7RnOBK4qn3Ggq>_PxjpSJ`x_YRTu#ty=L*V# z@$VILJ8gvRR4x{MA%VwmQXs$k3YAq1!%d``&K|=kekk_rMLjOmZAUW#dw5%j!_0Q^ zTo{J3K>on?R1Cs}VNBy9yo4Zj{C9Jyd^nmB!1oyfRd)bXR^xSU%;;5Wdl}-KKzh=Z zO0q(Hr7juCw;)l>{^4|;G6MSB() zRd#Ve)Gc(p%IG1ZFQ59b@+hVS^wm3*VRXJl?BcZcO}U;cq|_etx;_l1p-{L z<@9_~06%tj62XUB(zAeMqPqpwTlO@gXv4DzMH?f~^l`y9c}-nT8enKf(^~9SjHU$7 z?KSwU-mM8$J9sR%83FX9=Oh_0fQ!(zE0}Z2?i0u_sKM~fmXxh9ne0IU_MN@WXxk7q z&_!}kkl89)u4|kZbRT(cQd-TTXhz*uZdiXO!^=AF7JNTfyf!H{i=!Ex3r_au z(F+`h>*Zg6J)YHlHlcKd$inLrQ187VsdWR{Q0t?(9c6MKz2SS|B#Pt@k#w37=(h|i7NWE5*f~Gajn8x#$j5Ffm!m29+4qLxKOg+}g@2A$mda(k=a-v6 zrej`y{K%33p$jiIj}P0n%e|Af+_Nr8P0girNqX|+WY4NMxX>yCmdB}fhT`7?J>UI> z>~nIS;=x1K(4GbBP13##r~SHw;?m7Zd37vTp!*zf*uve{@zq;xUonFmJX3IM&)rMp zrlBIGP_*3X{vd_I9a^`9N+N1JMm(6Tvc=v78m4YuNKv=l>_4wn)O650{akB4;2@H;xAi>!*D?s{ zW80(slDR2|_Aq_C*FLVp(J$p!4P>PpIdwr`!pGgOP2mU6ZyVtOKMy9F#oni1Xetgp zY+a)>WxV2-ttewF>YQ;vMd5!y>&3) zqRX76y05T$I~||+EkDBD`KObD@yJodJcL+4y+(V3P)p;*@cdKr=&?u?tglSRF2eMy z_j-0w%N)m&(*pK+f4msxnn#A6Q=JwD1=YL$L{O@S5Wyd&*$zeS>Ji&x;zk0M96US1 zSpL+_IdG3_{lrEoD+=tEG~wjq0y?~|H|ZW{gx+GfAc3Ob--L8_*2 zjscAYg0Dwt=L5Py>6?8{ZL2q2Le0m6=Fol+Oqrd8_Je53+KFGmi277*W@FLVk=7-$ zBsuy<+oEO$pqVtrCq<^hHP7>MtpYfTivR?%PZ*Mmegr5*@0SnhudU!T^=I zTLs^H#Lwf6eqE3E*y2ZPj- z%umw?Y<|*khG>bUlxlKHF=eDoWU@cq#6+h0k(gyGxrS&!D4$af;xnh$e&dCaYBu0f3fi&n*-S3U({nu zP%^27q}9R_)%4;d<7n#_n*QEslYG&bg=`I_wHO-6=*aWnB!FOE`#qHo8HM_uq;vGC zlvqR%6Hy{d*@UG!iFlg&gqAzM|6fNF%J%3Y(ODtk>q<&o9X2ji0!?ts0nWU@>-^uT zgTmnIMp8$H30i+DElGV;<1pIQDX9zft#@Pr) zur*)7sh8sd`ito(L>As3ElBg8Ebio+6G(^uR;3#w+8{QXr`6iKr5^}G8L2K)KZ(Ffb(BFQ9V}CW4idsW zcV4W&3GWjKeQxYN0pzq1m2>QKq~}jFvYDmWC9J#OU!5t~rDHyb_Y}KyJrMkcu}eGd zc~RG%f&3^uJK_b%GbijsLmZCWV-i)1Y`iIjoz1IoyJ~(5??lasX#Yh;%z1~lV{g15 zdG7M%Z+2_Vdb;yKrSR;efPDUsRC}Cc^hYW)SOmLx0IUSX!Q4zSHJbN&1#>fr3(bQT zP`8gmE=n7uzyVuhrv)icTGLYrL-MWbTvClF9cayHYZtVXWMFaD)*H=kN>!{ zl6vx4yWS9LX$9(b3+_G$Q80eI6- zRI?-;$kL_Cpr2q}u3fy{imu=`e`pl!HcC*qO#p9R(UhRw^ixGYM0aY_3Mohvj03vS z@ZNIV;qD;O9!Uccy^k$6z~7h;aZ5 zA=%Oe7m6@RZ+mZ}0pNC4b{B9Lj$0?q2*NM_n;>o<0pt&fr)jrEkskrzPE^v!Z1j0t zMTeAOaWt9}Ow+$e#b^Pba#wFiB%oi*mnkXGnFhcc#Xkw)6b~xMa~@onZgp4n=nhms zvw1Ia1ck#{*h+6_rZx}g8TNe2L^dD+y?k1j;W5&7S0SHwm z?JzOuej@W`kR+wj8T^EdvA;)cC?jxW-tc~aEo}h~+0ei=?yPQXX{hd1GlQs33U_ON zrCj1TB9RqbAVzk6{-20^nIrmOadsYHcShbPh)*g3%&ehn!N@&mNEXk_D8#N`hh|s{ zxv$d57kJ2I-U_eS0B$4mR;Yn(mj&dPW1ye+)|PF%7PdF+IRXC8C3wsc|Fx;ziDlm( zrp}$2!nRPxq@tr($WF3`+ZKWS;upvd+w4Flv;Z5e8t|o;1SUKqeEgrK%8!}w59IPT zwyD9loi-Ep_?;0)8HajS{%wmRY|V%bxHDsgIo|;GwmV%ET+iL%k<;RY!6rjih`-Y= zf~!My6NW5s15@r7pl^u*fB*5tm~sttZ_LL9{DDWP^5f39t}&}MEYg@4V59|Oru*Up znN0~3-%(~*A>a6z^H02xYHn(a!}Zdd7r=8}Dy`~7C0K8U+o@!UB; z`FWu6L@cFf#85Sw5(IaguX>SgjVZ#7Chd})oNyhXT^2zM{gD#~@3C1d?^hD8T~`=B z#>f5|Ja!PcOCYN)^<+6&ylJvDk-LT$q_e`!@54wNJ{jR^wZi zEIzsQR&>8}V?uDY~tyIdip9Kya!OB0jz6h57oFVY*jf{a1 z=?B+Yjc9R5uoNj5a836ZPDHyWs}{r5K?+uj2e##rdK?s1{%MukDm%j1L&O-rZuz6q zYF>VXimv2gTqgy`IlrN}=ysZcEH3*D7(4}RBN!EK_UjT9vmO<2*yf9@u)_E1(zl&J z43<>+5tkQKXy00|`Y+~k!_|R6C2)Q3y4m(HaLs(eEw!%>m zCPmSc9WRf$@V}TR3zQbYlQV7(^=Y1rx`mnk4gbYV*;;%tOi@aS*-*+`6 zb_yL^8y#D3d4|}7u0F)(L&poZPKy|sCW16uO;%bm++DUP&*!5H-mac@^5<5d^xw9>MaAN^UQ6EBHE z978%I$gbGjvdSAFbqX*{1A<}g<%)?p3d3t;aM%s%`qrCrBV56_=CjS0UJ~^Qp4S_` zrj5COS)=@ELY#{8xZrx`7Ul7@;dIheME!zb^;SjHf-qZQFNXt#`Jt#!@O;JaHO*L~ zTw9Pt@*dY}mJ)3JSriiUtI3?o{E&RV1jQvVgr}K*?`fNsTvT zYL%pD2LxT|*{2?KB$w_|WTYa?q|2fwb|YE(dLaO<>ggAl*PJTsKs~Zn z8x)XVHqcG0M%Rf=&q9K7PEg&tTP1bcP&ywfc%}sYrF#@l3vRR#a}Gz1C+!zp4;oIg zf*{k;>_APzS5t_tam-vG|GG`mMIfj#1?DB{7P!AK_)ROPagj@6s0KVn(Y21R-+YcL z>!H9)mrfy0?-nF4ZXMYjUvF{QBPgc@)o<->nZHITozV-PK7s$}=PI5SjJ^@3z-9cMLOJRd z1n+&mB8ss?)sk48`e!KWdD_d}UIxJ8K$W|wXGTDd=LB>nNXI`g;frjgSzfdcI*4b> z&_9^gfh)j~U!Mw2mAT*O>A18GoPDD$lbS9~J55@hFK=k_CH|}Ve)QR(YpA)~kKB_G zz!zTNfqU8MO^8MZNk~s}JdJf#7C~OQ-wV`TGCFCMz$i84Dq?$u^MOgfyQ6)23lVN} zvYj73Viz2`YfqdKP=47ObZVkhg}zMRsA7${@iz!DLj%Id9m-HV_aphu#>PjWugz7e zluw!!SW63O23^m5-9yX*qDy|dVZ0R(qAjw0KAGDuzkc0fpwKNqGLRV9aRIWbXe7lC zaipqeL2gL{oADA24xV%i)JIOJVI8C)f+~`mZ;-kJq~<66W7H@nF~e~^YEoe_3GU?O z?JpFP=+(X%y~`coaRy&6bLYAfz48D@@eO!bp@y^g);@&01BgVF1=)S*?lD<=ZE7M1 zKa||>$WCP4Mu+BS+J{&KbT2)1^!5C*ZQ)sgErqSOOQiKOm6|*&+ad+^lr%J!8``f{ zJuNt%H>nyLDNW+;HIV!q+Z?GgdKw*4Vnoc*pg>=L;32{idb2)3@^eKNC!goL8fQZc zH%{?0M+sjO9dtZ>Q2tG9ub8iCN?NY&UWX&SL5FWf}L)CxaI3 zR_z|cIZ-~JH5;7tvZL)dU$2R;OdfZ=_{e20=(*ALh@J;~K0WB%jsC<8Ks#_tQm|RT zkI$!-7^&jxc@sJl*ekCkL`R%3-Yx&u8w!nPbPw~QXhvXNck9Ad(+H-&zEFrA6o5~g zQVnKD@L&~c`>hNv*b=usErkm<#A73ANbbyG52Jxt`x=RNyL$dwDvs;P)6*H=izqbr z3#~W2hM z7WJ6lqE3IRveC#5R=j+XfDkY%h8fc6lU3-o7yy+`)H)oTgx5buV>k=$?JS5ooeX3aj{eeFghUyIpnjH8p zNPmwf-DHpV9cJXGFMYFWPTzC6Oeb5O{`{py?GmYKNKBcc<`!>tsKDKcg8bsQ)Fr}# z5JlS(t9(&Mzd)ZnX6o0QaQ60Cw9_j4EzuF&_&Ft1%>7ASo-G*TFvl`;8oQx&rN8)# zv_PqsX0G+5%S+br#W0Hf&)%A(;$`nt&*P#jl{?hUCr$iPrM?6l9(O;?j9?glTU|`1 zV`a4wWWFY*EC6pf-WYJ>T_i`c-WD?`FgxGg7=J-K`%?j&$*L^|73XS; zrVG7HCK!$GG8zBEn;(vi7i8iT*7>VZqjxxZ{!{+-FEd!|-GY`3K3$L+{h0%O?w==R zX`tmonINRMRa*9 zVE~?h5_F~8>!LNT{FyXFx4GV4+$KKOn_i&cZq1I$0`+eUIz7YnKJ`hhy#2Kxo_T@) zw)ZF(F+4Xp-)DGbs_U}E>;fK&um8ry6z=@-aX~QoUPYuv5CE5Tws(IG#ij9HG$n8+ z->2}2k^g!61m-abhR1#&6_bd}Ft;EwMX^rqk?0l--!n`qGlMSchE7|G*H=gax~)l~ zc>({)8D*$38b1p*c1#|z*utzJdesN(BDA67Z6V!`*RJ>AwTxq0;2yX`;AePYh^3+( zlc?da1%&?Y9KCsHN)YY%P?DklR0B+b-_W?}iXdbI>D562{CPt_)@?T%ow_^lsOAL4 zo)0T8F;rsShC0Q(8}gM{BS(XR>Y9&)C~e_;>fF^J6hy!NXevVC(FjQ4v7Rv|FzHB+ z?sSMgE&uwk!jQBulGBm+0X-{Nj@_l~skzt3*2;jc!S5QP3{;?B z`vt*b25Ob=HQc744Ggq8QJEZ?=zd}M*6zuCaRLj!r+24QHBzTtL$`XrgKE3ik5C;r zt+{sRChC2Njf3ueNd0yni3XLwFRCHN#@avVEN3wp*Zhbj5r(OniCwK`%)?{;mmNSaF&ijF90Nl)UnJ7j@NxzajEqi z{1zOG7ns2JPUW~Dxb42?5w+q}Le%d6qiI2v`$}DuDI>cX*_ksD$k+a*U~tX^n|5|4 zqeh%5C<8;Rp0YFXf~e;uYTOCA3+3ReDl2jq4=%>O|EpN&64L)Todp>-#!||#3G{H? zMb{(eh$ZK7fwp2!Rm}S!W0nYPCqX^w&lllW4M(@Yo@)+=aAG(Y=A?Ob40W$hH-0%% zQO}+zt=J7TxV8tDq)cr2T4+fxJh2D?J=~-Z2+4n+PP)k5SV@t4u82#6A%_cxst0;` zZ|$f zXY-Yxojrf>X;)Q7x7kv1va9DmzO08v>cP+QlZsKl0R9_~fNIt2Vkq#oURRHOAbhX1 zmLyBaP194!(Y#=I$^ANZMtZ4+7yDB`yVZW}9fhDBtRB&LHo^O( zTb$>$>xUc(m38`Vb2KeP6o00~RPo5OkaO<~Jvr3O4@%wlLK7;kSC%j5f-kwz9Z>jY zO*22*b$_gxq5e$_Y97V)5XXF?kq;yMUC?+Vef7W#&Ff?s)=A&MHJs3v= zW9c+wylFB=uT==HxqojCCmtvpt>6MOeqzz5{}HIj-gh(1(lbhtV(k2-nxmQ6dtYS6 z*g)u~g`9F>vKn;>8IwxR!-2Vi8ro<|FlM5HyW}>Gx#H|>_;w+$>D6!!IKi9#oY@7qqk#qS7%-T{X7QnT?v5UR(TxY+V!}) zu$qInDo<9&aM7<5#Y-|O5{fZ8-rI0+>u|3fY6^cmdw5?C^Eqk?qGk%&0;y$)I4B_Y}Q}#2Y1i2c5qn*nt0B}+537yi4)NF>a}=_W;hxU`P_1W z$f-RZ^{`n5^&J-T`1+E1J_METG`yz-^4C|WCY*%pYTx``y`kWZ74vnjQp6jR(Y!#f zK3cIrwN@}OAKXyR?NToREn6W4w@bMMH2q_-J+X(yQ#(}1Ws92-SWF3NKYL87sOy{b zP^nPJmaBNu@qf5qerL5Z=|qVGZYnE~>%0*Tw}ow7jfI14VH+Q5z2CRRjhf`)hGAZZ zp|kVuo?u+Eqh4!Z>oYNu9h$&8c3w#T?S5qet1BCte{-`Rnt5yeZqN!(rsXm7!QG_* zqQx{1B$`Fl;p@-*fFzCb2g7f%e5AH1AIxSDY%5sYh-#)n&0292G}9Od0Nj6SUvj*R zBMrWRPUPYvTy`3^v3hXTskLDtW*p(N(|Eh!o(6h`4->l;TV#PdAH{{8!=AqZ=iI$gYRI`3Dplmfs(JsylL}j7m*;fP< zK~9O8k*%lh%m{D9*LwzJR&tYYWnj&RVvR|as6>U>UNW3`cg%djx zWBThdchi`J0Sb+ySwZ=u>lHPeBBb(*Bjyz|<}>ihnQ8+RA+;h`QBDQZj<&lHRO z9w5^}kB1N#EZG(i`A zoS0`eurCNEnoPieV4e?v2m?A=gPt`k>j!V`vCzMDy+YG$lHp@=^+Fh4u1M^4QZ)XV zLD77|OE@2)1yb!20tNw}gn+?AizG<;*;*g$mG)D^#-O5aLD~j#6+U2r*Ug2j+s4!| ztJ#BFY0n4>dEbi+AYb6m2ZrDOBC~#PvawrI^P@%jb$GIvlB{f6pfWgCj2UTSvSK~k zyxlvS!`J?;fY|l@!KL@H)uqH9CQp@>fBlXh^JD4N3w84@$ldIS+es7rw1}seS1oci zsz1mB^N_Vh;|Q0{0|f{X(u|xm_`r<{bwOU(QwNrzyafvZX9s56Wy>Ak<53iX&+zc?0AIcUkL$+u}aI7yVt{9&dxz|$&o~Ikl zZN~BD&F}ztRYAZE(5=MyudRI;10tZkT4BfTXOH@{Ru5*&A*l-Udli8V56m;>Hk%aC z!m3^%&wx+d1m>p_YPy65>6ihEdjgX}lLoXaKRPyn*(Fzu=7rcL2NFd4FhGg+1l7S_ zPX`J0ZmDAI=Atgac;&5%nb)fWeo8Hl<+#Z|U=c@LGhj(ZEA97KS2|}G7&*4K=%es4 zzXiP=TMd~{G$3R?VM;A0W{62z4&vF2oU=J5%6k>UzqXdhVEIi%(gaw4MV*i+`DDf= zqU{qJfBoX7Xl0SC?6FKECHz@P*20nmN%#6xK>cySW0+juu;V{^iKF5jFI7c{F1H7EXiuNds|R zQ^f5K!(uSqg7ky0Q-N6=hr_ZK-&JL@#0HXY%iW}57*5Jsvk4qTp$fXD9qt7^;X4vO zaPv>3WhP{9{@~j{@iYJ=VgQD2_t2zo5Y8Uxaq(2+lu`Aj3#adksWWV_e0` z_tN0!ecpOgY_%mbVDojBJ1Yv9d7CO?jCY@2b*qhEAIF5@vZ^Kwk}E}bI|`{Fh>(Y9 zUQ(T%sOgY}H^OIAnyDrh1_Qc;uZV>c(Qz0EV=m$F8sV?5(i%uyyl5+75NDvA3{`gD zJFX+CLXPu2B^xTTp{6QLjuba6H9bBrVD5Rlfde%CZM&pAE%dN;*JCX5^wGHfDjnml zY!NRO&k3Fj-;s*1z%Q8xa}Epy=J*)1k7lt^rad?8aP|qV|M+t?J2?ujY`H585~+9P z29L@T38#T3ao_KBRD4bTZNm;M;0JXel=wI7q5=C`(zkwqrc2xL?=a2_rVqYL`F|)d z?#zuMjVp81tf2ZoClsYqn#Yb|0z*qIWx_<@YG^Llxd&vsak4#36%@ZR~kW1^nm9im zk5LR6-jom=&#!~amI69m)FGS?;SLIruh#+Afbb+}z5w8wJzF|=MmJP_V^((HO|}}$ zCk3!&ygYIEYFraqoB#vSfPh)^5e0{Zey~UCN+&X&eDRf?J?rjqD3b`*t{tFkN+*GR0=Nw?`pn^4MZ*PA?$}rU|b|-CH0j^R=2MADod!G6iAnU zObvzXPWgrRX2Ny$_cE@(+)rQ_z=eGS0{n@eP`SEmtpXR=9M*cCg9c%W6C1&f02v*Fg70_lR)$kXM~r1tUA+Om?_ks~&_1D1 z+xJ0NW_DTJEaBAUPqN1iYIt(IOrtoO6$mRnqx6-BbRiI~>3BykT+QJ#3H7mJvrwPI z0whz-Y+`gJswb0UaPs1dqHdw%W~GPk=Sz-kKY)@jh%r(?G$jBo`I0I;MvBZTN@o(x z+V#75I|wyPH%(>>QNKXB<0~pA@ds*$2>OEr9v7(j^j+h@a6NfUI6&$bmE5(Ii z8Vj}`1`EDINp5ov+T5}brJXuPGh=zTy@H(sYhw-J$#Eqdj*K@Q!$rN6MTYvvwm4Z- zkVQnx>W$PE$)m?2xOB~FL{+QyT!X6ZS{PQ=N@?lN83rE zY301|pMc4jNg|!WeXDVg=ArJ+V@kyfwo$i0yZ`4ZRkvyRj$8evrCXb0bp2US9>tB= zXh!opYnpj8A2|}Oe{?%bE_ro(O*4y3M!yIBwzGMOUKx-|MuL0|rS9}|WIGQlCgiTUzfsHzCP1uc%6YWoq6Fwv`FZS`Y zbH?3%O!6xiR9s!Qn73cP>^WC{(XI!LZqoIZp{_TLuU&72tOmDF;C-hC?rRr-8yuX8 zj|oN)%?q#{T}mwFzO3H1m9vOx;0FZkxyw?)-{gj^p=%<5aw|=_8m&vfp8F^TucH32 zilo5`QF99mh1VWsG3pXbpRJG4l&gcT)?ySQuW{!D)aTDzEECa^K+D%{*l>N-70}EH z#4FAh$TcYmmcKyEm1XeW@xplqBnd7NOMX_sz zii&32Z+!M_9-8ercPV?2$UwCv$CbY7RFx5f&ZXUh0<>>cD)5?xB;7HNS;vE>8^Wo@ z?_vkY#s|5*}gS=2dBfPQN zRYq<(hby)wA^~5;VmOL;LDsgOJ2g)*4ynCfR`7_ycMKm;{D&+&3VY#Sl?%S&kDa!c!KiH^@qHA1vSsH{6dDQ+uLK*#YmUI?MZbi z@d{9r2ntNpB$^_=jAhVOPIFP8&^onFX&x6*nKtrlZxLt<9=HXXN1CSbtuG< zoCJ~WCeto2Q*led7@)5P+{g&V0q4bnZGQSn$KR98DAMGR9UhLlh5cV`QZbao8-;lQ zSLz$ACmYEiZs$pMohS0=DajMX9d5h$`|cin-H|RL=l$D_##8%*1jeXeP-Vb@aj1&= z0c}cSy;RJVsY)lh%&}eEuI%gJ`Nge!HS#xI)4_rZ1eWv!W-NJ zTDb1clV?X8BHy#so5zg$)P|HxIjrj)E^#6-Dhsp2R|?ZEpuYc8XS?wvi``FrQT}Gv zy|U-<*UobNtgE1kgo+M9J+zQa6JpZv$hREI4NW2mS{Agq0hM_*e=|q^SRmL0Na-i>0jkEl=A6lM5zw9%TOfX#IFj>CZ*+z6yB=W`UR5DHu zvwo?rlj8iyFc}A*u^9_m&%8uIYIf@K}GG1`-lZc z8TDoJM+_skT|F_DW3Pz<6LoUjLC1$cA>v_eZWjtI0+X#CAA%Wim`ii~;3f7)i&3|b z^+Y9)_e=id19pa$x1{`xnhJ($H|6(-)8X(S^ibR_-NB43Ccd`T9eQ$k#W*GKzpyAg zM*Vnpe@=~KPC$*0sD{+Jo(u~1MW<}Tx)Bf-^t=3VU{A3h$d=thNrODw47MNz{^Y;f*H zVW8zAYFSxxCNdyzhpa^v?jsF8C)E{}(IX0oy5zfSiYj^3`OAccSjD_9f;CR@swu&P z*7iw6*YCSrqKT;A)}u6_1eh9v?FOCo_xf4i@JX6_(5I=B0vkuIqm!7Xa#6M9R^~wS zC>x@X{otKtWN;eavy*?_rS+|ijPN`=Z+Hach)>=lX z?6hF`ZdvUkroVQ^+i7?W%2jxtPi<^oetUgIsYMZR$-e^?lv275jh%cz)sD2(f<|eG zZ<;J2;2RWF&#Eff=`|W^<@R&W{m#kp-IM#E+-N|6++e`sGO*#Q7MKFffpWVNg97Kp zjo>ABI$#C)BDCV%$hux$RZa_(=S(Q8wC(%ncc=q&>m0w{_XAq@?)-pGVIYQZC|lf2 z&l^gxI4CGb(ovgSQeyNNSlk${;io|QemX=qQaf$vdR`i#aL>J+6tFLuOqEp)cv&O{ zc{=lb4Min&GSh-;;(!{z^QVc*gl6=WthrEgxa{ym4lh2iHB1SbYYv7Se)hClgWyXV zgJ2v<$K22u1ZrRl0_dO90oEwXCaQY2AQ;3H1nOH3r3$JB`XWq0S|~V zio#jLaRGaKli(L&4T=y+B`%|mZTfNMqg z2DqT!)7E(UQA(KMF^eS#0eyn_=`VWN2ymGBf#!a}x^t>^?63H+Ev0$Y;m^CJuuoER zf{z9S*W+ID1{;xGi9^=<4~_7M~RCBzrfj|wbB{@(neK9T#6Ut#iRsDJ^HsR<_rTP?v# zNw=ZZXmz8tEJ%o+tvM-l{OXkrY*5)VAuJj-+kW&ahp*?=t>gXaM@{%_`)e0sxttx2 z`UJ@{{xBUGKce0lriFQJ@3%ZsM42rVcyJ)~*e_r|^;!Xs{CMs_ICMf|rWp*{4p-)E zYrZxtSeR>%EZKt%K~8-In}M=Zzt^laqrbHZG94vJ>!LMsFw-SB8TcG|Fbalqh5P|z z5b>*xJ?rmux=4}GR>Tm|tjOfL*Q;#&2p#PCSe+5-C^D0?$wgc0VB20C#_8cfLG{)* zq-#4lbrnjyakrqhi5HnOjtkiCH@3i0-HBL7d>xJ)PRExbeBPVV`AXstzE+xD*TLZ; zFp-_We)G|E9La#CSsYmBvpGh`1@I@|qSCA6?4)ZrJ5aMs1>yXl70Y3*Ywi}xHobLm6srBU3x&aE zq)~{;G1zfq3UN4l0Sb{_BIykXO{;JBw&Jh12_p))q> z+J|U7?bK+~X~HF#bbv%ixWMiL7F>GD(;k;-9f)iH_jhi0Wb0_5)Vf+3&(xqG%R|6@#c}1n{aLo&j&JU;KO3p9FR|8yFQ$}3^ z^B+Fq)mWW$dzu*V>a81icaC<_wh;CAb!-Y0I2KO|`U7_+$iNuc+wL z)6#@YH2jzq0^az^1R;%$w2{0Y|`Iz>@yO|a*q#Xnq2NR zKg45YLHfMBh-JkWMLg|mFx9smvxnr@NI4I*)oE1*nXs5B9wWmBb+m4k#@Od(}gK?#xVP1kIu z1f?G$n&U$2^*>OWSwVOZn^b!DksvbT0=wBGJ}|3naOa^u7q+>hN3j-n4(h(JjjEwE z77i;(DE#9N_XxvOP*dW%#At6z>u{%|rh_gHt&fHcQUZ!%6b%IFycDyBdX%t@k9wgT zC2Zru#k+zwN0bZzRF-{u@N5?yS;y)PE;0`KZX(g5JoM?Zos(H(CJ=&=PY zdqagR8>d#xw7Xcf_UgJ|j`JBkH{I%J5LJ)=P)7r;5ZaFET1QrGK<8KGnz-{z0~-l` z*WKfbC9nl;S^9kx!OTYh?)vC$d=v7InA zAmG3KGnMrkEd40thQP;qR=wq1SEkH<55u5w5YJP-K%W<=XZ~9%^fNS8YaV)Rtab_5 zm;53X{4akccWJZ=K4f89V1MGlR2++8LE=Y|(X0Tz{67>ywU8gOTu7J`a~+aM4pPi~ zGfm(l+;`$6_WDFwOto*&P_PB*gpscrkdQt4OC>*sWij%JMUaA~EZ{HrPel`xQkV_$ zQgUIJO;L7oyLr*6Z^_u9cJFghA03R8{KqA-Zb6(eMnj|P7A~I}6?yoz#c?$jDj%5Y zmtWtlP=Z;BX5igqXLM+^7|qHjLv4c4j_1Be`Lfamm1jL@sQE1mn5QqP3yzaiofbd1 zy5F>Nq?#~o?fQUtF8%EnG@VNqi!OFp)Rj{9-dNffbqT~jG{|(C?JX*kRt|>-P^Sgj zm(roi2_M5EEB4fAMrw(-qeNYp9q zxo9(XnG1i|Bq_TnU3pTFcVv>vF(N9p_*>(d5Yc9Km*7~xI9w@~9h0w{e4;*qzPmma zNqYG$xikaI6>;n}8WbqsHE3jF!+PXn5hmu~&I`Opw5!}>aK*?BPl~{U^V4FyT-)f9 zf>D>i{a_5f6=5xc?hyK{KppJ}sW<3Cz5Tr~_0^O|N`<3Ju6w=w?=HT-=IPzmQ!dCW zk=BMC68~^ySxC#A5t8`9#rTGYhQKZ%?BCM~6d4-9ryxU<6yDQ}I-NKspXQ5v z#V2Af`NgWUmABXnZ#WHzm0f4gnV*yaDa?gse+v^Sn4)e$@QFHz9G=hr#yM^U*)pEB z>*?fmej;BguIr^4{yBWz!>pkD*}2LeWrB`9TF}V$lLay|6Z^=rksxDe-Hh)LM_mr# z3mzqiGw!Bi?;C=KgOuM2vTpo*q>-P@db>l<(3n3W*AfGJV3c@V z4d+IL>f`4t^$s+M2~&IamQK3;EUuqd>V|9Ja=} zjSa0MXo=0O`9fg_PRm9E!s4q|3abw{6}#v#Z!|6F?_2fokl}s9oM7yJv|^6=K8wnI zpue!I+g{x?zAryIS(>amAE1DL)Bu5Bv@VPw^e-m`=8oS`;$tVf%o8;4%JS7McoK3` zHJ>d;0|NEx#|rdJ6_?Ixf_cCe;y7$d?^ik7he-$3i2Q?^)U*9SdV*X3P+FG7McHXb zE}Iq5_K*c3{l?!^0Z~q(?O3z0I4M$=AOB0Y0Ew;4uG{bwy(j9Vd@%Yr6{iO>h=*n`wGqcjWGk5SgbbDqcQmjYT zDt6BM?(KPovgLjPMh~~0t@HQ>a?)M)P0Ux-LAiE4M<tR9112Np;^@CRNjcF>2fQ=MKxXttA<) zGO)FTqn&s)NeC}I`TuJSY{tu3h|{97Q2q<$ATB8goIiv8blTo2T~9-;d*~twwyed9 zans~PX=|y1fZSOGuB7R8l3XVLw#Dhm;s=D%6Vs~Z2qlFXOnkRs+3-+d+m#zBln!1# zS;2ddiaF{RY|nnEux>6D-0U|f7%J(QY=-h_-B!g3R9EGT4%?Jq`B6GHJa#)d&Xo@y zUAvJ`XOe8>p5RPC0^sh(l}42;Jw$s_&}T19b5-qCTz|zDlp4AQB>A zj+_RR9@&f_xhEZ2mIQHX>^bxF80Q4j?_Q*H#sNa$=difP^K+Ho$qho(Cgh9gVF#ww zs9z9%P!Y!w6?rKaCcs-m<1B|U%?gIErDLKw+Q~FE5Nv`a3_(UTF9?3}P$43peHA}# zm@5=8J6$ZZll*(yXQ#_b6^gdH1^(uAJp0^Nr!)^bOn9z9P`sous;7R&h0ZO_5u3_o zs1a~6g|Q9;=Iz~7+A8E2MuS4sMcb6P!!#5h2(HiK3+2N5v<`3qVDJUbf9hBbOCIT&WWc)3OFbiH zxX8b%A~N_fpH_8w&U5Z@K8Kn)U5RES{q!}Cn50@a4zam@VfJ0uD${)11FR>h` zp{;!~ERF|X=;?J=?%m=WSRA*74X$EzI%olu+Nn{&jw9H99gQK?hSeZ4b0!tlcs?OZZQq0Vpeb9LuMy~9wUexEcEu^Ej?PI zoDuBOGj+t^wX9LjQ}nVCZUYBA8zp+FjSgEu!}Ji#sA}$OMOCJ_j8p>ww$S;fSpr&JZ5|&3rKOJkd-TxrE35oURiI%U7V9SgV$cQUeaU=Y?DLv&m{~J1UY67-;EeUy`%s}k7R6=2NfsBWdQ&7b+h`}~;5K=-!Z~gY>e0j}8*q+$aZwa)!d#w5(xggx)#G9-120vZ zsbmkT6z76)hnhuh_Xo{1`EWR|znM?%lwSscYz8F_yF99s!Ox^ee)C|w=c?=>H!Z=o z!YK%*WbNUxE4HWbuoW>P9t-1L6Yua?%7~2Ke%~hqNrzvS#U}-r5NXe6CU7rQ;aNF8 zHxz6}!@o(R_is?@#q`^?rsigR0Y5F^($bOY@8y3WdPM&4ChUA@@(>tgcST#8!%!*< zf@uMK$IBFf+aqfQ9G!#Oox5o=SHuDISpjt9KOPjkFL|{JkZnDXN8CPPjirjrw(Xy9J|?sf$#U2Z|Fqz}<24T-ezy>E z_-6(0_g?$Z;=kN2W1V-I7i9U@nbPZAv#JwkGZwWcKY{J+vcSCZ4GNoYR5;Z^Jb;OK zKtO)~k5pEp*)o@Qz(9kw1X{@t1p#%;rfE)Ri`G%^_eIj2nSRxb2tcJP@;E6Ze&dZQ zg@=&@7RkI|{_L9`ZVG6_&$+*7PLMBqi)!p3vZ)s1hf|#E5O)|(bp^_^sUtn=mu9?_ ztm}91*YdX>S=%*RmAhA4$xR1I;8c%$? zN~O53vR_#Y`uAZzE z!uZL3w6pe#o5^afqBq|J1%~u+4e5zw?yC%0=0JpNkNjKb%pLOYg~PSHO$$#uPb7GQ zeZJ}E=Wyjr23LT)7gYcmquEyB)Xo=!qaB+O*1jeo4A|%yUvL3I`@_uk6**DpHM@31 z1H$BUZ&zl+QnEo?F}Vse85coWShKXJgkh`$tO2UID|5yDc)Gx;A{rD@{`5Uc(i$-r z=yj}TwTkV~IIei1+uwr&-7*ALnoWrzuU#L*v91?F2<>@BaGmj9!Pzb-+m0DN+Z|CW z7T6}ws7rpm{)0+6s^@vX3QM#jay=O?KI3EYSeUK+j*OJhny@T0s|l?Mi!y5;D&%Pg z9ySL5oBOMWY53SUmG$scTXIA}6yh>=4^{HyIAUI-Pvr9aJ5(!L#eI(`X= zxcA0c3eI5&q#uM3=|j-?oA-(vHyUTZs4G2BV+zz=c=fAN#oe8S!_i3r{O(z^A;aDa zS^1DMNX=9epGbgpJou!dI6N~ka3`AiR^ZMw^R1W`!T{A>Y^p>aOHGd3b*jWDvGz6D zLV;MmdSrXCn5%5HPyvHLg^dT2&?P?Fxxx3Utw7lgRihpze8a>mi`7pgL^Gm~7k^Rp z0xicR2#z$m!!yy+ClU+CJ|@bvfzM$rM!mrxiRg!5INmOB!=T%6isUieP4a}ZcC2Fp za+4C`mZSqg$YKs8oRkoynSR1a31N)2Gv$O1L#y96%Up%VZ8lY9)~J%uyw|i^chu{M zs;f2>GC^O_w5aK=_v*+;q=?IL$&m$XdS^E&f#ul5M0vBDTR~WN&)sTMmMl~&tMwSq z$xn=-lEj&7H99UN{Kj7>DavvaE@Nn{RI28pZu#wNzO2><7&7ZCAtW%VWRX-3yz~-Ra}8EXoTHr(#Q}>9%5*RS5WO_Fg;FO=_tJS z)*huWlRiwHW|~qv9&IMs9*RV|BmuMoQFVBJbPHZQW&>{-m1oniMI;9n7W<@ zvC9Zi4o`N`TuOi(ge|c-1n$iHA|qP-U$_=CM@6~|ek7g>t#E4=Rg>!4j;S%Xhqk!U z;>31ad*avO9kS#&(1aUg6E=qcV{>J4d|y-+Nq_qLD)C^dfDCK~czC_Jcia757Got2 zc{G}f2_uLSO&IJ%?Q1&#sQC$uNZxC!9g*9|ZA8wBTn_)8$_EV+=ao@XiE=gK=kLM8_f)4aqP7W@ll59~BsQIw~?kfQ+tS=(TfVrkTlB z#2>ejPy>Nf&7#0susl}0%E1imt}hADtXxAm;} zk}Qi(b(ERcc&S3H>owdwuHqjMv47z)D*m!lj80^zE->c`kzzXt)^+lT9fr&3_hRJ_ z9_hLG%Z{rIYM1zPghe(wq`12Yi#WvH+k%3v6C(nKLIS&WS+XPEM!n5J zNp(CCbfh32GRbq&A!R`?*PBg?3NBfrt|Jjbi0jyBk!hpFgaGarfdAMkU|!jd;PQYC z(MkF3*VmbyV1Sa(R*Qh6uu3TTi4|%oQA3i zFCNh}ta~oO%F%F;d9YKl-;C#~)$C}FoF3h5M7{o1fK1S<4k>uxoUWJ{dr)$wqKnS7 z`GduNQ8X{2>U^?_EFNLM>_w(X&!^lr02ggyi3<}x+Ioyp`BkU_7i6fILluaaA^Eyu z4n1}tX1KXf0ft`W9H=0Wq{=yX@+s(5IR{!0$_4166>xFXC4%4BrwWKI@&2Fub?T3g zg3~1bOQL>}`x7o!`P*<#G1y?<39Z$POn!0-4nt!jup5}FA^5NK7Eg)#L`WB0`u~K* zn>h7d>!ne*2GfC-XMs5D57D@a%jLh@(ApSvi>S_chKP)>#IdOyPlArqJ4MiG&CU*2IdsYI zKBT{oT^GVZ(lw9)1w#W;O5pd1qgnaY%buy&>CTWVHOz12F1$vlrUk{$-%UkzlVj0P z%iel;k!Nt-BO}|5LJn;EW6=_DG$7zF?hnySE}ElMB>e(>&t<7dgcn2F1TU9mtN9_E zz8ynxog*}!TsDCDlpo3G zhJPn|P?vLm_PffAh|u0&@};$K>_oY8sK1-RgG0_TK!Z{YB=Z&e4s2)JZ* z^dDbx`HBvF$xH1et2?a?Cz8jaC9Avi1(lA85gOo2R-fN-pZv^SRS*MbR0VN1mx)IQq|M>*UUj5&mx(T@=rGgv6nh#U8zuwW z_%dnmrW6M^FZ3HW-iqp6)v@m|iXsS&nyiPwpD3pDuDf2X45JXS!Em&4#kZA=EWbzv zC||nr9Ntdqpi~A-N|&J>v>k_WsDDRBh(ZG`j1WLxqO-2saD8$}bS`^@j*d2%VyW6o>zQba zP`Ug9ZGn`jm$zsjoP)-OexN^LApF@YLLl7Iy{cn`1Qn?^Rdb!X;n#u6hKNa`rM zhLuJx{w8be)&?d`0Vq^hJc$`YI`H^v=Q>)F1lHO)c$*xW=zd|h4xe0+_S1&hKjC6^ zaosq})P3E>4x?`^=5Vec`RUMTDe+^TtHyKee=ofRmypBF3mOuHI;jpiFtucL+w0{} zL5Bm6ri^_8;P|`U{ua<^>%2pL7M-Ppnzvi(?Qf}@wlBQ|v-X)6a4Zt5FOT|HbqrKW zVV?>x^L-%tZd`TA3W^a7KkU!@C}!*nmZlkw#x0^z^lYtmiU<^u8-dVPHl3gn;m z{GK6ddlK$7uROn}=jq*B=%ES^ECj=pg$)AX#_WM?@8m?j&^uHrqGq*%+VkGcrSjpc zi+sSIpX#IiFd*nY(k;KjN0q~|mf9V(P2hxg@hh-z$dxLPXqx?NQa zXD(^NZ5}Gt-mTmc5DZxz$fNG*h9{?Wkv1Gbq#pk>l`zyFz3!W$Ca;SB|B0K}ui=Wg zpZ=dU-2eBqC{`fZHBoK;m`xikU3t`NVH!p zXQeuP?hMT0aB%%6m;nQEQ;4OC1q+w&9-UvE^H(4l!I@o?WDZo^6 zdCnaypnDH67g@VfjmAD})TApK`?WDz-iQw6Q3c{9856}@MWh`j3e7n-DT-9MgQp?{ z3SV~8>9$Y^4$Wl}v6>t@wiM}f`*6H_AR(qy8kO^9>x;RG3#qENS2B)Ma&l<-1<4+m z>z+y$t5?*;g1o5hubn}5Y#z%E?cbF{9D$-x^mM&ad#=nz0Q1;P4RKb+k!n<;d0g*Ii%JxUL)JQAi-3cZSwcov~h6J>#$C7>_K#YJR&QKox4B zGNB{7M9z!_I@7KP+g5d4<(4hskfdXNP*m^#62)M?!%fLhl^PF)D!9usdm~tZwlrXr z=6sQx`>ferh=4CQzVo{Rl8SiH(7!^M?m!isv<+OLZFm7>0zttJK4Ocn_x?b8*wjXH z6}E8-l9#L=)Ed!_%>^ojU$Xj;g=^cW3U%q~sWxMPF3dp7bekTY>c9(Pboz{1kNVcD z@ZwJ%M-H{?c-v#=)m$rhu>vNyboGfg<7-!L9G7`-8pir_>FODePb7ZLuI*@__3e9h z>_)>}+xGu0P&a3B??wS__qXkk^M4(?P?1+Ef~Tdc=i9Uts$*#45E>q6`?sIEpN1Ci zOwd&Ctb%sINwr%ckxr?)#WVA8PfDFnp`m&x>u<(S-h|VlP;f> zgSxE&m&i!lHfw{hhjP!J%;6O@sMd6aPqlH-e~TN}_zK}AtIOKx_*L?iseo0G$*ZlW z2%Q1H+J$A&q-@}U2+y^a2E_Q*M(iRH`$};@hk{j%UFM`@2)ygcWt<4OK$%dZ#atxI zy_GAp&rdvh0Zzk-=iGb=m+WVUc?eXZ3GWT#9Xjls?^@TrHrD+l=cU%cO}$-4T+%z$ z{fQ3VW$R-gqdox?o$EYcK$>g#xO}i|ef;l;*27pgwRd)~I7#8xW(#n!QC(>+TR)Du zJu6N zx`tw47Na@3BVjb{-*+P(Mzg@rR<0P7@4O+s{*H5-OGMR5(9`o$0b46a{|y!lBsONnwUTnXSKFR{64McKDHK}s&uUJNd%(SG>DC`e7^Z@Nl#~*9QHO2kK(!nBr7xdrjf5;^xa5$JRFtR49n0&C=2g*Bayl$^< z-h`I#`xacRM{yJ)V&bL4B<ITn94)wf0zHdk zu$YcMBtM`GObVRytQBqvp80$o_~w~ctZLFTdjteZ@t$c2=pHKG9uG8fVR?W4P%lq@ zwCvqXmo)RzBQhJgx-yCrT{ma>l_L1&)Q)Tca~4G_eb&8$UOK}tLgO}T#6*1{Pj@JW zOViyGm0WH@j2%6P{O4GH;&yjrY+!ZMZPuRfp(p&(5n;u6smKh$W%_mad$%e498Cp4)|4X$WlIV#eT zV6jF>A-3pBod`5!U#ZtOrtp*wO$j~^7hRUrzH*eu;kZtkC z=Q)4_8)fblf{h3z4hF|mGXX1CbSpv=yaH$_c*iBfA&2F1rha{28X2kbD&Driwo89g=ZXGbJK@W~`iGWu=%4>2Y{!Xo-0HxIl z+Od3u&3^gntf9feSxnviJf-97-7?9tH4Q1m{tNfhT95HmFc()7+gCG3e3r33O< zaD8SAO+)qiX4hv7T8k0X27IpLL(7^Rg=atG$#@%~Xj|MzqHh*l#^q5ZS;N}qE?&4_ zg>nna>)E>Y&GKa|%Pwi#X-cgkp)g5dl6OL`iKl!xTbpHgg^v#(f^54c;Sl}AGwTE9 zui0J1GwXXT7}3mnS^Z4MHJCidaW^_*dK$4eSqI=CKSL|hLqT#JYkkSY>;6ZF%Yffz z8Sq#dTLh@WJ$H!cK18(y{BM}xOm=Bn999yl%Ta*h71_VSNkYjT|Ut*6bU(*Aso z_OXI=rrCz?)h(_w+23D2iMItQTZEM6S&izwe=XZX{l1oDNp!)2)#;e|Y&s|jTV27u0X*~+{M<;(Q{4`r~aHqjp?fWb9jbFOX6u-;Ug|=MF5^ zF`!7WwEDcOZG(cL3VdpsYkT0Af^0Wk+k@r-+=xkgV6+)z2LF7b)qy*KirdpXerf-UAHAF^m?|b)}tnOPP%1=D%*<6Tx?_Lk*|7?Yks0yUba3R zhdQ9wiZv{+GbHu9IT$=HqJ(KhdXEU4up2>$?Y{d9(P?!I?|Y#`?QOL8AX4ew=Ev0*E=3GX zf_ycNUmIM(0D618Rq0u}`cHiaWz{L!%4x3?ZLj{7C_6ww17NmoV~uaQx9z#=0o1q5 zwSCN*)VJL4eT#63#OYQli~!sR+E%E0NjRR9Z7fgbv!CPAN@PBsG$ z!kGoWQsn2Qe zXS{O7WfGqIbDSF5cl5ogiufBDZf_V9~Mr;Hbu(6cAQyt zjRxFW<`UFrxH1i@aFIzu%I?;o*w>0Ud&x+I?l)0 z)>=~*iy-{WZ)0%Xjm7v_N4-+xNmOOhwfP9LbZ&;U(l`)7N9U3 zeW5rIQS@)p7RZO{xoe!TO3N=Eb$g&YtE^m}8_`CKEdyo@*SXA}`!ulrpjAPh$!)xr zGvOgA7c$I;;x5>lU{!}d9bFQ0QtRpRYw0!|EU9-KUHn?4^TJ%l|85B%NJ+r$^ZiTF zzu^))zJ@bpd`NQQKIfd~+x(~J(5Dw|)Pq0r#Z>Uc6j6Ce%>k@#4np%L0GtI$>`#`(n;`4d1mkAp3Uq5aAB+z4{JHD8Yo@yFxYO3e>O zhspq7NkuX`R2@SF;eKq)4eiH{K@u7Isb?QT8SEA}`~V!)LO|wh2vySrr&`;KRdRV^ zEQcpb3d6O%sYK_C2dIz$r+$+^sNxZxnzkX_Y)~AnkysT18y-f8ov)#pyHZgf+=p_f z;nG2e1m~?TU)2#;BRoiCn^>wtG-j;PDG*J5vn$XZ+Rw62L)D?9E9i*p4V~wQopGh1 z*B@<+s}#he*Pn769SYTjuI?CEuPbytKImd;p>3_Tc`c#&N!Cm%LPMW#5dEO>lAzI) zgZ7Q_cE$A!YgV=3+kS2I2TjMvayWx}VrW$d#v37zE<8)78XA3Q=o||h3Ya!%v3gtA zoHp;9tR6 zKA0=hQukip&Lj^IK-8VkkI_B%xc+5AB(u)a!z$PRsu;G<2kli%%?0`XfyeDoF#GZo zh#>%aYKk-`w|5^MXt*_WSZD#Qf`*}_O3Kf>j? z0Ox)>y)XF*syL|%R6n@C<^wia5I^*6u|Vsa`aqP2N?_>Sb!r`adZ^f z^zmW0HSr`xRw^LY{=R~sM%||Fv+s+!LT;QQ%#GH>n%qowf#!Z2g4}#reu6&UW;>0e zLo{Ja^MEy*6TzVY8{EVB130OHpFiJ9X7^#&;HqquT-pn)(GkG!v!g7>n(5LEKJ|)^ z_u1wrs&|CcAsYY?0+;3vzgd~5)55S~IvpMsv zC|m^g7qhXz_RKETo%_2SMsYP#alc$iVz)W)VA;*`ie1Mc1Vr}oyF zc?Nvci>qYhE-@UI%cz4<~nrhK(;!IO6I0)ggLbjbaS|TrQyI zR-E`fGDyHEMfN|EJ81MvWj^pxe09m=g;wuZ#KawqCa)l)&#?0ImH2q z_3v5UgwH}rh>r82@+2xa`1H#AYbXgiXQw`g3EQ0+QE7G@%yMaI=dUhMy~$kV2S1*n zAL5zP4}F|>BrW-=TJC3Ad&zPEQz(r_?W<2r{eIi4S4dM)+dk(D_9sfCqjXFC>KPEH zYXw}5R2+u;Me~QzY}RtnzP>BgJcdgaXp^{o^(WD8tc?^Vt7ESHQ(=3qgpC)v@nrSg zL9^FPATpJw`P3rLS}qvO@dqkQ=&mW^7yG}thDeRKVjnxu9xvZ?EJMNN_qybxf2{Gkt?|l;F|YtA}|b#{Pz_m-b_C4-u|! zqeU0j(RTYbUW8$xZY{JrHUxd~W`|{CyfKeMBf#T>TZW*XbzA)7AebA7_msE{nYh?% z9jv+P4GL>8+2QCJvu0iv*yrU$yZic(Z{=WDKBrJJ*+V~|NYdK(O%ClRPjiFonf5)S zL(+ECx0R5{sz~#3-%Kv~hEZB~pYV;eJaUaQzOkIe>~w=uIj05gO7?Nj|q%+U?! z_Dzm*^rDQ*M@Ghb|h%L6zi5+v66nx!yDTXX|Vu3z#o zVUY%zzm#cSq;YRBpQeR`r-FlO>fI76vgu36!wBq_?lTRfUxru%Y#f6E)adq!Lk2sz^WUW4p zh#QXC0rnZQWkJ00jfPm8`t74490p#=q&a%Y>dUPeGt*75JfdaWd-UhjNZDaD4#XNo z&U-C-7{yA16N`f;hEcMB-IRvK&&OsJCO7XaX-C;Qirj;54;j?zjNIj#&dwSbafCNQ7eZT za1Cvb)qo2Mz~LPEdM<#$?ehKqrS9Fsd@E_y-4zr$o za-~cRLnh}&YvTieyH4!zb%48Kd;s>c5(P%|FiXka>c3W@UsS886x^QgbjbQ0pS zP(6yUV(1AIfS&5K*oAs&l5#c;0D895re2`y0KGp2WhOi4pvekD9&iYlqc+RH2OUVG z6OzX~*y6v;DC}UzfuTzOMS=i5)mVnMLGGR1X*jlf{wjApKQAY)bKND+D9K#Qe&$&HS|O`Tz;-Z_04IwAst-1*~10z(0eP>{cv#`W&lP(T^SNO!CZPxF@#z&tMscRHa=HtP$A@`}z!W?Lr*eilV&@ z;tfiQEzwD=99%L1He}cUnhCc8cfLx+0#bjV&cQ#_-=r7UX3-^z#C?al&=lstFQg|J zuEOXXykLP5;M0*f#LqJwCJ^X^L&E&5gIEmT@B4Dll*97-xPw`|sTyKzA>xxPG9Z}ci3Wn#5MmBf@NX1NMxP08U> z`REuR-*hQkE*>2&O@>vR62Db=TFi=ucHSlS1oUd8l_R|W<{Md=d-3MzSae>7vYl=osa0;W1pp6^JJ&#Qa~VE-l<5SlY@kSPj{L+KT{Ch z^GxUN8-!QGhCn=Ww$oV$+bg}hO*$}%^`re#8>%t%T7oTpYYc-xL}w!yc^y%;CAI=W zLx6qUVZ?kS+G#&Jx5Ty-_H%$)1q`(0W7-Voy(I@~s(jv)-SSR17AXDp61{CtHZxk~NHOwQ+0P{xD{NsM?dg@+61kvtTg^t2Yd4#BHjjG|MX)dJf!aR6=C zD0q9$Mgfb44l7uZIqU9pX-wGVOm1YY&PxFD?)XqcUDm%IZUEDeKbkYmN2mbseD2Q_ zv6}K`ZW|^tmj0s@xKwo6XB**Ug=8EeUs=MNBn=YY1wI|kx~+Na;$-;E+aS}s?bxec zrrbPD0eGuz9L8t^H0!?86B<|Ps#^S7cCLf~U5jq^-;Q74P0C+!*lteWZjkh67 zcTDly%t*o6CxrWh19c=gVjG|D)Zlj5Az7h~w3Zy%cQD|7P9cC@Wco2Bd`^Yn=t_Y$ zqdx6Q@SvhuJpC+TT$UOI5j5u(e_G)IjoLaP2z|YWqS*iBM7A*HopQ3FH1<(BwPZwO zhL3G#_%O>iW$#?|#x;Al=!SRh85sxo{_1=d=#{O-2jZ^Ra`v zyN*?^mOg&h$kV|&8UDriZPLgI(e_j{8zCe?5pQh|fzWT2rnu8LF%%Bh`Q8`l(b}R* z-Zb9koxZghPUUnYslzvNeDD4teyqeLvVh?l91n&QDF~DnmoRLcO8!)6bTvA_hoJZZ zq3gYMczP6O`813{fA2b3{c?xdZHF}IgXH3qHvoB*0N_`>qlLqBNWaU*9ZY~8%yM%5 zAn*Z$)27NB$)GYYZ}xI_*kTRQ;bZs5g|KJ<$TnyF40ox~Vu&7dm?D?pM~$BANc)uQYA9RCh+GCMTcX#5;q}dG3}0aUOCjTxt_5yxMK2uwcF+zM3DYVM!4e-vdS~MtBsoiKK z7^F|GGAT4!*fx19PGd;sb%<}mPOWmX3tn<-$eDF|)u`h%(d+-$lpz z2Ugkek$=#lm7iH<4nnruI78ARh+N2I8T^J!YiV+^^|Ae40mb9vAJ z$mh$DDT9;||DjLqRSjBTtJd)i5H+R3||T4|Tj(2cEvC z4Vmhn?-+lc%m+Q?rQj2t?^SS><_C6@&c_WhJvWItLQ+Y^yRzC+(u1(vl$tA%qQGeda}X)zMv(J2Fa7E^4OfGS#0q4|3A|6ARd61N=v8W$ugUDJemX%g))BBXUOT~RV}Bsy6WZ!o#$*52 z&=qgSKU7h}(ZVVbNWR=QG2!}A$mx4(hXfGo!;gAm^)pl?Y2GDUA-OIO3~Y8}%!JB< zC!X(m!nc=_e`W{;Kx%b8H@`m86etv6-TKWe7+eduFRF1L$188lR{363<$F{G`i7oQ zb$zDwjV3_>6q)6IWEss3(FJhx(jg3SUSJA6d|OH8Gg8pDh{^`C)C0~t7i-P);sBRc zg0}k*HgjAfGl0i2r29Z+w;e4PYkejoCcTHjzcBmIVSQ>2R-vQi%xi~qFf4K!9caRt zvWW^jgj$p-x?yZ-4L*GEdKjj=&;}K5k)cJ#ZiV%f+JQi^}+ymXT@u!nc5Rn^&x|8Gy?TnBrNKTxlgKjz!5; zR-%ZAUr}(isV2&+0J{C#`4r$jJzU{t23|g3Isn}qN?QiAG@!9Dbfy?;4%+9;o2cbp z-olrF?KX3V1_lioM7a*t?o0uR$pAcPz`#=gP3eI=xWj>80Ia_17STQeH`J5GD^K3H z_>;R+Q1A%gr|w&9rll;0p!oECiyza^ggF4c|Gvd0H~|IZ9O{Y5!EZ1!e4Lz~Z^k4T zEzsO$6E(x;>FytCAE3veyss)`_%@kEue~;9mn+zzpG{*V^0hxLRo&=2rNWNYUbc<6 zTZ|2t-Zi*xvq$|oWmNuK(jWpCd@GpWlCfOydKYwYa*(jVli%EyNe`m4MkzR@j)L;u z3{q{H;3-fRzZ$%d@q`RaqQ&GNWJ1y3qHHaQHN13h;b;*E^6@j@m{DQt|x>NPOl z5#+aF#>sjirDm$gsdxP7bX4q%jeL)z0$*^%j=bOmqc6HtdqJkv_wlR0;1pknfm$jb zk~n;OLMc0>p;!zoyRF!%z8x>sO4|QhD#2gKYKbHMe#+R2w(qop1Ne1NjfR;a zNK;JCK{k?w zIgUomDpbI^^~Q|y!XEJrb=l>& z0gB54y8JYKgq-HRFXWk4tnHw;b68GiG~V(q3OC$NP7?dkE6%OsAD4H)oY)M$ZFsmD zm}1|X!byc|RuDX7o0RBC?x3DgE+i+42dt?UP9M<+O$*2Pl4L)0(BmzJD%9W>iBnP& zi@Ov13YKpCbb>4*Agi&L@Bj)jctC%y?nN{b&s?lz2EmJ09OsIbRNY#kP1SzzG0j_~ z9o)(q^=P`~YAEh|m4A=e25f5=*Cx4*;Hg#>qS|VVwmy55TrL_CG$Hz?DSVbw0*v78 zqU^}c-ioPg3T#@t$+3uI+V%}+aWI(o(rgLFv^vl*MFd^f6uQ1Cl=ej_z+qq>hIo=k z*aO^MMb%w*R3SNpD&4x<ihIIb9Vbd{E$dJ+y!X4+>sp+Yt*LKn@xt2poW> zY_ARRH&B`v6?LmfXJkt2u+4}c$b^(P}bQ23~aR77$E1?M}K-!90)x(4h-=lc|O=f5_py2myMy z(|Dd&AV80%LF)lJp9Zl`3J+U@`oSWIY&;~;*=R2N&lj|0U?Z$pEN%ioKj;|UW#?4( zMZl_8KoebNA<|mPW4dK+XkDECx~_S#=ys9uSw%Ta&q|A5Re!x*$1t)9My`z2M4ehr zL_zuYMTuTGK@r=2n-NStUT!HNZ}V^&?Dh@Pn;7PHlJeLjW5u^_@4$r^0-_b}J}sWm zFa)WZSBop7PU4$o+}QA|dmv>~8l6Po+$--0qx$AWuA9Qd*-$TsW2U4#vb-h%LKom2 z=IV_HdGWhbEz5jOFFBg*ty8D6fsBjeaq=UL%&G;-B;~3CUDvfPEzH#@gMRA@ zV2;2x9a{E#F=^RJ!DR${an1@JpMXpQ;E@||TtARGww(Vz5p&=N2)t|EO`GwbUpY{w z05}wWLMg?euz8L1QseP&-{Bnh-+z2b)N8?Y$xE}nmV$xcrj0R66dUI{-ux4m7TT+0J&@nRh8lgb(?d-ped!t5Pk!*2Y zU3Y~p`h@t09}=>o^D2yyScp;39 z3n@0~`Ot7AoefNmABG#~d6_Uf9%GEvvZI8{JtU5j%6II9Rz6DmETUY+4~E}o2gIXW z)5DSKvPmW~<<=;gg2D(Bds;~zSL-t5I6{^kZMfnr9 zx{TIp*t#iVh*rACEo75Pdw29R#SU{tLjt6fwKMX}=S&*GxtyOfY~b+p9w?~^%+%yW zq!9h8^wZ{;!on&uxAF5f*lEpE*tFO}1wm!>4lM+)IsrNI`19{8ZkW^4InIc7p1Jtc zJasP}vNo)Tu*X%ocF)>H)P0oFRxTAAFq=ba19~nYR?QyeB5&2kk3u|@e+J^7b0Dxr zoP!5fn2p=${|~fahO8ChK^raWElrax%&4n?8*k(UE(_UA(AXc=1Z$dJw)aGe;P}|& zixGUE?>($e8|EhQE0v4&Ku~1vBVq0Zh?2!y<{(#{L!8^>Dn@k$_ry~g=U5?4HB1eA4(Bn20LX(k%7BZWT zzMihsH#VoID+8#J!wvw>bUFY=1iJ^Pt?7U`-8fPPQS$V$VUZ%@$Ea%mNHdW?#EJWBms6u5VT5(Z%2c$V*|{&_-19otu$Hf&!5lfuomeZA}6 zHn%T7Cj>=R)ot<)W8REXensy09putY51HsjL|0->T+{Ns<_BxEJ^a}=eOIHMx_*3S ztTKIol5^*KpE{N8?gMXVv%97wMhLOFsaK=z*eE`rUV^s5X_;bTG(;+rr%s*HW(^@v zNFDFQ1=8V<8h!$gyCnkF(3m5S5uA{olUTrVr_+~`oRS4s>$LFGEyJN^cOI@H>9 zP&UX5;%41VCJ{t6dAI0Br=s<|oMoFf5{>1w5Ew-nkenOLQX9V!f_#~^;snJs_9J!@ ziV}__a(~);kIZx!dcWG$4>;KY*4w8J$@1vYl7Q;Nr2q$;OB3Ppc0ds0ES!cz8`Xqx z>b{P))nikSWoi^~{S)alkahvv$SR=(wgqe?fUGbp*93*;ZWVBkfhApauK`A<`B1${ zF$FJlpz5=U3lq8e9a;r6j#NgbN_3{V;lmAsk?!;|?Qo2(58ibC4LxlEq65CQ>8?p2n-wWN#*Vtp;RzK^sH!E9DYF$h+3tUev~Q?NO6wSU)6A*4X8VY1*f+F^-#_L z-L8p{^#qU$@H?=_1Btn&Bt5B?mApU?j{%+8RjsoFSdMgM;90D@fZz#VDBZzJTR5Kh zv-M~tcRyE-F5eMW{g`zA^7It&uQ0-}4E0pP04_~LaxLwY0d6wkIx~r)j#fi7d$^B+ zdVI5Bj+R41oinfx@*QnI{5}!PN^|yJ`3}c-JX>8L8|jp;l;$+0+gp)BIE4n_PYApg zyA{0j@@AxidWXB*8n3=SZ7D}_&-=qw)4?ZIh0A(UxRugn0ZROFTa^s2!5Zh1BHQm9 z`g8^GZgN9k!wk{#B*Wc8)58|LpT3c2N$0RfBSey)%TiGg@22$FNSaLEb`lJ5gO)>p zZ4`TmaqqTqXJNhz$+`hu{rSVPjAwa!8_*_m`mDg7mbq+}gXLm|g{DbzL z39?ZIWtk<=yI2|ya}+|325*37&d1d2S=qd61n$lqMB4OCg$j zNE^q2iPZuRw`It1(6G8po7z{TU7-6%@|}oSMm#OB&{l@7e)+8p241XI27vr=NYPeZxZ)*8ROr)Z z97Pxp=<-T>q87B-Fx;f+lqaw6TV1L5??QAfy|N5RNl)05WYqJ?(nUwYEJTl*@&aA( z`{}vx(G?N$Soe#;|4ZsFU(*bV(d7iy@tLXW*1e^X)I2sb-M^3G+@RLL4TqoFv2#{# zuQ0Vmk45s!zI?WHwox(gjeshX!pqN658s^83O+9wqOCji!FQxQ+O|{WpdG(eaa-+Zh(rmMoFRtkYOkRgB(Fv+umGedz_xD(fGoG>M^JwoWoD_1a$M9yl15Ni@- zuuBMpg_Q2x3AW|IFX{OrMYOl6L@jG9-^GZr?PEnZmU5T!y^rcZ**0K9ccE>7=Q?mR z?XZD5^tNY3lfuDka{D2Du&AGPTqbfq;%}i? ze^Gz$g(G?y=PAm&hAxptGa%m)>QwTQENw& z47EU_1d$(iUdNqH(=jS4i_#aZJpsDi>6*4h<MCOcC;8!=9{z)HNuJO~+Fg9ak(D zXV*^6&Q|;Bf9vri?{=&{{q$Eh$)|f?8TzB2E^GQ(vUKq!O_1(Fddwmp{bbgEZ=<07 z9}AtSG3moR!J#7Hq$P#X`p=7X&lJ!g6Uow^w8IQ){m{IWu3nP6+lTTyKqFM3vLf`T=3zdeO&L%aOJIH9BDWiQ!nelxCnVI~5q|IiW z5r4R&Up~}9R4!h=rhw=#c(wJjBR2AOC;hLMg}bbw2rC`N(HtQgsE64sb zxo3xV64&?89Vf=M(5`dsF&s`)U`Oua>8x%7 zXndqrs^XNMz=CmGdHOiJSB)bcj>Gc(2%4Uf)R#Y!4v_kut|qi6zc3%hGjjZdH%0Th zFfuU{Cps=U*cNC5)J-SpY5t)$5;5OUtuk9FRHh-&kZWM^eKM=wa=HS9GS?htQH(Zi zXNuZPf1)^7;5F#+N^R|AWg05Wfl6(1?Xk7QRBMlx#%HJcN8mM6r?=#>=+O+RAczbO z^dvnO@$nt<(G@Mffdwcu)lV++^eRc*c(ix?gcy`;AH{NITV?z>C!DmY5!ee}BQu{` z*2G?H?9#>Xx;3&GeoyK*E(ZH1Y_`@=v3%q-QK zt5rKldYXNxXtP*%A{!)5AmqU-UN6a?D`LsA*<}FnJny!yVtupsPu@%l*~S&WQrpmJ zt?*mYY7g%Qz6-%!k-~GgW4P~TaUTtdetUYg@Zg5mg;7_EBY_g(Nrt6b#BgyjJ$N*V z7d*fmPy73DDC1?{{cArj3|Ame))(?~%K7L0q5^~D-TnA42>?0vgIyTmJ$t?^h{i~H zJopE{Ep^7oJTz5)xBM*gEdfAPa|^2#53>dO*w?fY*8z+|bjt71)+y5`15b4P`z5+!E=O)Y$2cA1hvl@2ym-5_oea zY7&vpTj_S_Y{%u_kUo>U;|RN_Qe@4w9}wzb%b|!GGv?q$vYp59R4;CW5b;y3l;P@+ z8V`9SkfbxE@S49=XIVtQ6^h7~1~O6kycdksDu?*t^?AFe!UYQA2guv@K8MZB(PcqU z>*&%4r6)R9eJ~Ii$wl!GD$V^LkjI~mCbgiRv$@TFz=jx*?P0u#4F_*}qaX#l zbImPQ6A<1nQEm5A)an_y3G94YKiq+!NKixjC2AhLS$Ut}08BmQP0|7ZM)nQ^R-IND zes7;HLHq#21fG1i$m`GLAe2L^all97QOO?YG5xlmqo?62dJA zEj$w`BAH%6~B|uDUc7%-~Y%s--G(<+efK>B`;}X$j_YhRxNc`)}XBH?p5= zYfD#()QHaJOkUf#R2;!2nmA3GO8WmXbVm|3W8(R+h}A>?-atXq(6RMj5Q>lcQCg0O zTrTp)t^LYUOD_>wl_mQpXh-EH9o?CN%y~V)9+7e4T_+8aF1FJnqu>5$)sYKhQ}GV9 zu6DdSTUiU8hX^BS{!tkoXtE7uk3+?Rg_ylQE_t(vHWHS!h}SD%d$BfKn&2!fbOOl# ztQOD}#z-Y9M(M!+{8hnoOK~<`H292Pi;BXIdzA$|D;%Cs|0S^t_=Aes7Z*VD-Po+nLr-zR;EO3FIDjh?eH8PU!yNicUfx|^j&Oqfx@@bYLVeUX(^MVOix;i@!wz-(mJUgs?ed7n!yP};j@?=+ zgK*iR&v&S~oVGHDf5+k5=P+)8cwBaHuO9DsvG!`mahw=Sc(AQdsg2`47Arg=`lRc9 z`-|n`WCd9r(tqU>zxyr#tQP5GF~?*&bwrkiGM4r|q3kB#XyT z{o|caEDIuNu+*WWeYrfN1rMn(Y# z>Wb1!<5?`MeqLQyEiK6!vKwPB)OELfjl)!jC#Tq$plJEzd;eC~rQK94)&+N=o28U& zh>#wQ&b;x|+)9f875YzCR|%ev}s+de#m<5qa5X0_VQa>H;{ERILGXdLRZ zc+iFx;}*lZw>U~ZI(LpgB6~(^{3FV=vsZ-S=#R*G?pMRNSL@`(g-R&z$3e2MZF+)D&B?Qz%NW zrRH^U#M)XY6e-Cu&d03ExbV%4F7bI@*Fc(Wn!X zt_e!5ZO@?taG(lad*r@{A;u^R_A_eXoq^}%TfK0~_SEPcN|FPcy8<-oUyT=?qPlWL#mgJ9T(lS%RmLpD$RNKvg|gQMy&0| zn_X~6{KS(pTbnx2q@)JRJW_%AMin=AvfD-yF{MvNYEZm{8BMC9DxGm_DMe7^I9*kw z1s3H`Ez&4KRQ-i2a3-n_yzz>J{>#RlB`slnHk4!5n<0s zespbSNBm@SKNdzFASN2zxv&uD)-cmXm>%klh*@h}u>-j0%83+ta7; zCL1XZ06yDJb)YO*Ot+{+LgiB$?oZ#+qizU=0B}BM^UL7{GAyTZW=MtyDP&?@3Ql{$Xkiv6`R(Wv@SMq6 z0L$zQJ$L)QTvO4-day1?IAu{d4X>L;?+CqxHn(W2OP> zKBXXN?jV^~+`yA$P{k)Z)zTH*5d2}OZnU|?U~NYIx2Y|@!i9e-MY|Fy>iOWLm@|aN z+`6y$6pr*ntOovT;JdwbE0l(AaZ}o_WlR{de;nT~9i-QyqOEXhbb5lvmkvx^S%sBf zfWw}P=DTb~fUDUk0~OCCK#&Zm=J{c;A>sGHL1n&>FJ{X-_4kOsMpF2zLndlzDDtu$~#JvILZsNb{Ml_k;EmZtR%Hj+KA}l zid78sX&0^n*)kMOe>9+R4edHbgK`XqWdw^{6}#Zz9(^Cu7XPDkCbj*9BIsrko7p;U zND>?M>By!!m~H`DKnU4)E#NZuKe`OWHQ(Iz20X67u7-XM^iG+)=)N;kW9XWk-~S~a z{Vfq*jrV_Dwwn>NvI>g@F{QWVO)mAoi6*7D!o+cO_sGZ)c;`BU!i*R$%4o$%fW|6Y zn6vbP*=oPpmuA_z2d*~bUO@|LJBnl|+Hz8eif)!Nz1DF_t3fT)A?)VOFCcUSbgf9o zsO1HOHlhEKHN7tUHwA()6Xu3IM6b>OerUE5BDN2+; zrCW@^uNUVFrCY#T5KPNbGqJ`)KRo7)6i9Q)}%w3x_Rmnsj$hb z)E=DKwo>$DzSahqqUSuzvL?SO`I~8>p(1EAL?5NQfc;@2k~I~n{5BaHpMg|8CYHzl zlJ|P2tn#B3W&>^-9}XX(dB(MV)c<2RSjq`2L}R*cKJ5*W~C{PmW`+f1ixzEx2n7u&xg) zY-o-hX$0Q=i*l8nLtQ=*==ntiME)I%92s7X!gtL3=zX6R?btVrs|8N+xB7j*EA;_n z_b069L+=+DwF+B`Rv!G~@1+amgDor13LIPDZauf@SG%pPwnPi! zPWy`D!_z%E=wl5&K5JEQx$J!aS)u`CxtEN`b4KFR98_J;g+dmn=0&L zSIejhnhSlPvuz8nIc5rT6Glkv48K44fW-puj?ua}UwI}Q0?=I%hBmKGM@>g5>Pe#A zXxVM$B<=TQ!a1$`o&G|(uUW_An&g+to=aHPszEfRKJ}4Ovk>{jhf4jY+o9e+&}Gts zc&$iIK3nm&A&dE2bp>IspsBEZc01CuBTocpj##Z*SF0`>YNZ&qJ@8ono*`-o7QIv2 zj9K*Z&u!PD7a_uqyN9&T4F75V-Db#kg)p${vJ4zg3>Qk7qf9YydG1ClB zWHVPRu1e}?rdF>~U|*`V3h1LljEFlN1J0(n24rnV-c|LHDXb?I)LEXT7a&o_x z`bdkfqZ|8LvhD+6Z|PZK*Z4Kc7`L7HvMPlf!`Ahy@+;|ys_OTbJ?B~MXJ$pouT2Qm z>J<=LkYq_DEPt8=v=6>a_QVS&pk<0ut!hWoJkuY}eY8!fB9q|{tD*kB#0&j&Rz+8E zD4{-)%?%@`dq8dn%rrQ7)5g%H0}(=}S(ZR=xbZ{MlO4z%gq6YR<2}EGn)-GWr$@;; zHE5{KnHA7228G5_nT9b2z}fpu;&`?TiRN9Ll3?$HDuAk{jAKU^=2@MWq)=pg- zVI2~lCel1CN5Sjn77lz($y~3cAH(3VF%wjT1w_$_iAEz1x&h*H3i@ow{Pl43>=V}* z$YAscLk+o$-iE(~a1LmoiVDBe5l*U+jeH7WbQ)?Fy$4QN3>qR=qg;|yp6ziOS(FlC zG0~Ro3`cQm%MqCrif>Fu zt3_dQ6vewCT^eOjqpWB*I<>S%@a~Xkgit0P_{PntXyJzW5w!k&??=KCvh9H@7;cE-i^Ls1J=TDB0xs@i zYNoU#Sh1|l_DAr)l8=ZF;PheXy$5_GXwKK&&7$#M(mBSz8Ft`^LpfO5tKbZV%a^`y zg?iDQAlKVK4I%1VZTB0!smoG#hNy;2if6A0d&3Ilw#Otu15`DvnsX6zUrKam9|pU^ z8@mGKgG37&QJhgmz%KfHLw1or7&UNNvSP9{J2f}fU#QH$H+TZ~X=`!$(!UMqU1)(O zL)YZwrrTNN_WI}~iFkJ@-&sCFDU~7LwTn4Q3Nl1*wBrnDz}+PnRmkeIMI|J*j5-dL z!O;*x-1GQcfUswOG_YXU)-VRNm8nHbwlaqPKq@X@(;VZ@V@O!UtKzml3@CeA42svp z`YGZwme^QC+H4M|k{IWwZZn1C_b=S&FuS`;H%mVf1-+dyjlO)w#~17zy(0yW zNI2Nnw$IgPD>Il!wRZZkL-}Uu4?6<3Rt(gL?oDmCzhKL4G?-leN77Y3bG2Am*xo3Z zfEMP|<6%f;VP5EiLttiWjT^%YXfx zz^a;($;D&aGwz*+0i>_FmnC%#mM#2%N!yJ z;nhTg3A>mHt~!HA%n-%yhd*6Gsu~1&!3kd_HYNGwv9|%yVb}e!{0@rct;orgb&o$U&2cF@l}cnsrBRN{(41s# zYsdd~QI-6cqU!^2^y@ z_*3EP!viQ>efgj3PrA;%bBF${QU*T~fYZ7PW+05SdH0!AVN72u5xR~L&4?5Puo%~oORdfvraj9+4QELHrNR#? zQv1VK$~E3mIDXa0!Smh9K-Sgqi(TLW70ia2&eA&WdMry&sIAQ!U(8NXWPY+(ILx?0 z;JDr>$<|_GJ~*6qDGykeGpMwQSoWH{p_gP-P{?=rUZvS%U|)H$V-l?>oGxJPBsNfW zz$lGs>6+8oj+Y*WRxs$%D~&-`sIJZw3R$EWKPKUwvQTrQvpa7a0a0ci$OT?B>630k z(C9knxGbnF0*)+hHO~SGPh!mux_5C+9J?6 zNA->eL=c5wU`4>W(;E;bm*(XtuQ}>pBcJm+5z@GAtd!47nRCV3KWa1d1T&ICh6yc) zV93O>zt7Ba>fObf_&rzRm(jbP_bHKRv;6x~{Y~?eLaOw6B6e)0lAPTL2=V1j?EpiE zCgp_hmHH)IjFH$>!Qh&P>BNJnk9Gc>n-CLWp=h>~lrmLbtI*6ZZ6urWk! zLIh~9Tm+1^Edtt-fI6_aF2Q9Cq905I21vVX@xsr>eQyVAvg1k_h&Rc%Uy^@~0gNci z4rb#~D;%NirAq-m?f#MC&ER7ZgEI{u8})k(@MJ@V=~|J*S)FsE`U{qIxpm4P{+#e& zNUBKsFf5o~5@?npZdSYK><`uO#c*qZQTVADAw_7dac<%GCE85%Y2i7{5&9`-&1*9L`7lgpqI-`!eDbXx^wb&5J+YL%V;&4ke(XXX0h)4UInD^%yft|*C|&qo zAtk;Qp=*r|H?cQ)qP%q`y1#om%G38|yZy@K3B=|bjJK4t?vE}-dQoNFx=;lZu1s@- zBUy$ToA?efGig5%7PxRnOi_ESqC<_&p+wV~)DteesqG)q;T?|qjftM<+88^7Kr zg9E3gA>NLMd63@(H%R&3fBiysLEhG`ePu->zN;^k$r)Y+yr8;9{wB2RiJYA(rRh>_ zVBGHcqHE+u{^@w4=%QXu;3bWr(GvMjJtU3!ux+^LP8vGA;k~Pds{^b#oxI!#`5biW zPbbViQVKBjctnI0n`rLmBPPQ$B5_!1Gd6f?x9s{Vfs`xgX1m!3TAsPu-Y~GS2}^92 zu{yWb7tmSeYS1lttgTy@{cV`Vhoc_cNvq^WNQV|lufG(@wEs9y}FjYmC-V_B9)(=Ha6l+m+ z1Fnu^Vxy|>imI`bOWN9;toYvV{W<*RX4WIC4WBJHC9vAmPiMjRPx>4@TN#o{4Vz^)3Im_Vm0Ab;3dT;p4*7pFGUkZIuIUpOjV7rekQ6)uR7AM z&;sk3sOpo5fXr%%u>M;lho4GVGu$1~`q~I<5307FgH=AW?8Y;Y5!VsYH%04UhDgm| zjYy5pHLHl!%+ijqz9k~{8dP22MTJPuB-b72nXN|k7b2vjZ*FW|^)=C`J`+`2cPeT= z3{_^TqE3A&;_M=j-k4#4XsGUwM)ldK+In#(K2-@SX1WxijOLUz-}Ep=6(dQ_(z11j ze%9M22fa+&QO~dRiqv*Ssznte0ZdYDb8D3Ej|TH@RJ|#~_fdx)j^zJtRLu-~)O;jV z`M{IG8P$x>Mt#6Z9%J!hj+*~a#CGI7mfa~LtbY+zrJaHf4KdcJ>OmjUZq#hOKsR|s zK8LktrDI-`PpRp)qaHmhH z*-fo^;QJ8)&nK({t=H-!(YQ{at_|zjx!H-q{!vaY6;8)r{c<>jL|)rV52iFM{SXzA*9tnkGqB+2?Lj-j{xYNH^5vufbv8C zJJg}H5$P5l`j=1=t^?_;Jc!E#{x=!9T+Y7wBC}d=gA*!M!llIxef9?cH;@(9|F>x) zLfNexj?&@1JiUTiYJcdBzxlNKAL{D6RNo}eCdxAW_D6~arlu(&I#SL1BrUT5xQA=?~pM3A@|6k!Avo#lgsm*A&R1%9A>lwkBN@WpO*iDJ=!K!Z4 zLCUM(+~cNH_zMM)8PId3BUuliLlm3b_v)`mCnh*zs!r8d{@g*k+G?bg2*PHeDE%azSdG;7*F2p_*RXrEJ_TFv zpGl{DKm62N+ms%0N}>kL*xje71&9dU&~sJ^&}f^FSj1{5fl3~qdr|^2+U41XBRifp z7O6OFwb6vfoZ4{bF}ipTQ6b+x9~_t?69=oB*

    xDZQW^LnMPnHLu*^9ogb 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 z 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%0DR1{9)A0mej{Y}V{RYb4q|RCMhVs1R3%#j6 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 %lPr{SBAVFOQjOk-;7fqhDV6 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

    ((ocwgKQ@>0euwRM^`x93wB3Z7%>smi0D<`= zLqO8N%SJis77+M1bUiI?7g~hYCY^`)cX-En@k_TFAGa6-V_VC3GIrM(`QYB*=?_dr z-!eQ3G;Fsu6kHx`(7Y4puig4vzn%=qd_Ou)KJw|LnJO>N@ZhI4?P4|dWZ>L7VAwzz zVV7;O)o647Xkee#));Tw=IZ(4G&h(&dXs1oF@n?XP^KdMe8Y~j?m|L0R|P8GLfGSI z@qLF&kl3#bWD#Jn%os!AM?^P*XaoLcZ(VJntFN04w$8CALK$aUBGxZ(30{!ve;Yg! zbu#YntfJGq6zqQ+FljJ<-FCZ+B|V+`ukQNuICxoS!~Pc8ZGIb7$tNQ)`6PMChD?Kl zN)CuYjJ!bv;bpLv=|5z@f6RXWl>PoW`~9cv_y1<67DF#kNm1Ldvsjd-K!Tjt%c)<{nKCrsJIn)dZM2K0vL1;ZB-pz1?(*{N zWa!aWWD+ELBq5GFvsNngak$}!e?;wKbi*qdPB* Plugin manager -> Update center -> Check restart jenkins after installation${normal}" + diff --git a/deploy/jenkins/jenkins-server-setup.sh b/deploy/jenkins/jenkins-server-setup.sh new file mode 100755 index 0000000000..01ec8fd68d --- /dev/null +++ b/deploy/jenkins/jenkins-server-setup.sh @@ -0,0 +1,59 @@ +#!/bin/bash +bold=$(tput bold) +normal=$(tput sgr0) +echo -e "\e[0;32m${bold}Installating JDK8${normal}\n" +apt-get install -y openjdk-8-jdk-headless + +echo -e "\e[0;32m${bold}Installating Jenkins${normal}" +wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add - +echo "deb https://pkg.jenkins.io/debian binary/" >> /etc/apt/sources.list +apt-get update +apt-get install -y jenkins + +echo -e "\e[0;32m${bold}Starting Jenkins service${normal}" +service jenkins start + +echo -e "\e[0;32m${bold}Installating PIP${normal}" +apt-get install -y python-pip + +echo -e "\e[0;32m${bold}Installating Maven${normal}" +apt-get install -y maven + +echo -e "\e[0;32m${bold}Installating Git ${normal}" +apt-get install -y git + +echo -e "\e[0;32m${bold}Installating zip unzip${normal}" +apt-get install -y unzip zip + +echo -e "\e[0;32m${bold}Installating JQ${normal}" +apt-get install -y jq + +echo -e "\e[0;32m${bold}Installating Simplejson${normal}" +apt-get install -y python-simplejson + +echo -e "\e[0;32m${bold}Installating Docker${normal}" +apt-get install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common +curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - +add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" +apt-get update +apt-get install -y docker-ce docker-ce-cli containerd.io + +echo -e "\e[0;32m${bold}Installating Ansible${normal}" +pip install ansible==2.5.0 + +echo -e "\e[0;32m${bold}Installating Docker-py${normal}" +pip install docker-py + +echo -e "\e[0;32m${bold}Adding jenkins user to docker group${normal}" +usermod -G docker jenkins + +echo -e "\e[0;32m${bold}Creating bashrc for jenkins user ${normal}" +cp /etc/skel/.bashrc /var/lib/jenkins + +echo -e "\e[0;32m${bold}Getting jenkins config script for next steps${normal}" +wget https://sunbirdpublic.blob.core.windows.net/installation/jenkins-config-setup.sh +mv jenkins-config-setup.sh /var/lib/jenkins +chown jenkins:jenkins /var/lib/jenkins/jenkins-config-setup.sh +chmod 755 /var/lib/jenkins/jenkins-config-setup.sh + +echo -e "\e[0;32m${bold}Installation complete. Please go to your jenkins URL and continue setup${normal}" diff --git a/deploy/jenkins/jobs/ArtifactUpload/config.xml b/deploy/jenkins/jobs/ArtifactUpload/config.xml new file mode 100644 index 0000000000..6fe3ca0b64 --- /dev/null +++ b/deploy/jenkins/jobs/ArtifactUpload/config.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + All + false + false + + + + + + + + false + + + + \ No newline at end of file diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/config.xml new file mode 100644 index 0000000000..6fe3ca0b64 --- /dev/null +++ b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/config.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + All + false + false + + + + + + + + false + + + + \ No newline at end of file diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/config.xml new file mode 100644 index 0000000000..8ea23c96f5 --- /dev/null +++ b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/config.xml @@ -0,0 +1,34 @@ + + + + + + + + + false + + + + + + + + + + + All + false + false + + + + + + + + false + + + + \ No newline at end of file diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/APIManager/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/APIManager/config.xml new file mode 100644 index 0000000000..8a4ed8e27b --- /dev/null +++ b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/APIManager/config.xml @@ -0,0 +1,98 @@ + + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + absolute_job_path + <font color=teal size=2>The metadata.json file of the last successful build will be copied from this job. Please specify the absolute path to the job.</font> + Build/Core/APIManager + false + + + image_tag + <font color=teal size=2>Specify only tag. If the value is blank, version will be picked from the metadata.json file.</font> + + false + + + artifact_source + <font color=teal size=2>Choose the artifact source</font> + + + ArtifactRepo + JenkinsJob + + + + + + + + + + Build/Core/APIManager + + SUCCESS + 0 + BLUE + true + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/upload/docker/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/APIManagerEcho/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/APIManagerEcho/config.xml new file mode 100644 index 0000000000..0b22326240 --- /dev/null +++ b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/APIManagerEcho/config.xml @@ -0,0 +1,98 @@ + + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + absolute_job_path + <font color=teal size=2>The metadata.json file of the last successful build will be copied from this job. Please specify the absolute path to the job.</font> + Build/Core/APIManagerEcho + false + + + image_tag + <font color=teal size=2>Specify only tag. If the value is blank, version will be picked from the metadata.json file.</font> + + false + + + artifact_source + <font color=teal size=2>Choose the artifact source</font> + + + ArtifactRepo + JenkinsJob + + + + + + + + + + Build/Core/APIManagerEcho + + SUCCESS + 0 + BLUE + true + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/upload/docker/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/AdminUtils/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/AdminUtils/config.xml new file mode 100644 index 0000000000..989be17a46 --- /dev/null +++ b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/AdminUtils/config.xml @@ -0,0 +1,98 @@ + + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + absolute_job_path + <font color=teal size=2>The metadata.json file of the last successful build will be copied from this job. Please specify the absolute path to the job.</font> + Build/Core/AdminUtils + false + + + image_tag + <font color=teal size=2>Specify only tag. If the value is blank, version will be picked from the metadata.json file.</font> + + false + + + artifact_source + <font color=teal size=2>Choose the artifact source</font> + + + ArtifactRepo + JenkinsJob + + + + + + + + + + /Build/Core/AdminUtils + + SUCCESS + 0 + BLUE + true + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/upload/docker/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Badger/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Badger/config.xml new file mode 100644 index 0000000000..86030e26f8 --- /dev/null +++ b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Badger/config.xml @@ -0,0 +1,98 @@ + + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + absolute_job_path + <font color=teal size=2>The metadata.json file of the last successful build will be copied from this job. Please specify the absolute path to the job.</font> + Build/Core/Badger + false + + + image_tag + <font color=teal size=2>Specify only tag. If the value is blank, version will be picked from the metadata.json file.</font> + + false + + + artifact_source + <font color=teal size=2>Choose the artifact source</font> + + + ArtifactRepo + JenkinsJob + + + + + + + + + + /Build/Core/Badger + + SUCCESS + 0 + BLUE + true + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/upload/docker/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Cassandra/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Cassandra/config.xml new file mode 100644 index 0000000000..df58db0c39 --- /dev/null +++ b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Cassandra/config.xml @@ -0,0 +1,97 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + absolute_job_path + <font color=teal size=2>The metadata.json file of the last successful build will be copied from this job. Please specify the absolute path to the job.</font> + Build/Core/Cassandra + false + + + build_number + <font color=teal size=2>Specify the build number to copy the artifact from. Default is last successful build of the job</font> + lastSuccessfulBuild + false + + + artifact_source + <font color=teal size=2>Choose the artifact source</font> + + + JenkinsJob + ArtifactRepo + + + + + + + + + + /Build/Core/Cassandra + + SUCCESS + 0 + BLUE + true + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/upload/artifacts/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Config/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Config/config.xml new file mode 100644 index 0000000000..7d7a1f1a2f --- /dev/null +++ b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Config/config.xml @@ -0,0 +1,98 @@ + + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + absolute_job_path + <font color=teal size=2>The metadata.json file of the last successful build will be copied from this job. Please specify the absolute path to the job.</font> + Build/Core/Config + false + + + image_tag + <font color=teal size=2>Specify only tag. If the value is blank, version will be picked from the metadata.json file.</font> + + false + + + artifact_source + <font color=teal size=2>Choose the artifact source</font> + + + ArtifactRepo + JenkinsJob + + + + + + + + + + /Build/Core/Config + + SUCCESS + 0 + BLUE + true + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/upload/docker/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Content/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Content/config.xml new file mode 100644 index 0000000000..ce9b4b12fd --- /dev/null +++ b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Content/config.xml @@ -0,0 +1,98 @@ + + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + absolute_job_path + <font color=teal size=2>The metadata.json file of the last successful build will be copied from this job. Please specify the absolute path to the job.</font> + Build/Core/Content + false + + + image_tag + <font color=teal size=2>Specify only tag. If the value is blank, version will be picked from the metadata.json file.</font> + + false + + + artifact_source + <font color=teal size=2>Choose the artifact source</font> + + + ArtifactRepo + JenkinsJob + + + + + + + + + + /Build/Core/Content + + SUCCESS + 0 + BLUE + true + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/upload/docker/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Keycloak/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Keycloak/config.xml new file mode 100644 index 0000000000..d51ff37f98 --- /dev/null +++ b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Keycloak/config.xml @@ -0,0 +1,99 @@ + + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + absolute_job_path + <font color=teal size=2>The metadata.json file of the last successful build will be copied from this job. Please specify the absolute path to the job.</font> + Build/Core/Keycloak + false + + + build_number + <font color=teal size=2>Specify the build number to copy the artifact from. Default is last successful build of the job</font> + lastSuccessfulBuild + false + + + artifact_source + <font color=teal size=2>Choose the artifact source</font> + + + ArtifactRepo + JenkinsJob + + + + + + + + + + /Build/Core/Keycloak + + SUCCESS + 0 + BLUE + true + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/upload/artifacts/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Learner/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Learner/config.xml new file mode 100644 index 0000000000..fd14769369 --- /dev/null +++ b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Learner/config.xml @@ -0,0 +1,98 @@ + + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + absolute_job_path + <font color=teal size=2>The metadata.json file of the last successful build will be copied from this job. Please specify the absolute path to the job.</font> + Build/Core/Learner + false + + + image_tag + <font color=teal size=2>Specify only tag. If the value is blank, version will be picked from the metadata.json file.</font> + + false + + + artifact_source + <font color=teal size=2>Choose the artifact source</font> + + + ArtifactRepo + JenkinsJob + + + + + + + + + + /Build/Core/Learner + + SUCCESS + 0 + BLUE + true + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/upload/docker/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Player/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Player/config.xml new file mode 100644 index 0000000000..784b605082 --- /dev/null +++ b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Player/config.xml @@ -0,0 +1,98 @@ + + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + absolute_job_path + <font color=teal size=2>The metadata.json file of the last successful build will be copied from this job. Please specify the absolute path to the job.</font> + Build/Core/Player + false + + + image_tag + <font color=teal size=2>Specify only tag. If the value is blank, version will be picked from the metadata.json file.</font> + + false + + + artifact_source + <font color=teal size=2>Choose the artifact source</font> + + + ArtifactRepo + JenkinsJob + + + + + + + + + + /Build/Core/Player + + SUCCESS + 0 + BLUE + true + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/upload/docker/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Proxy/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Proxy/config.xml new file mode 100644 index 0000000000..ac1fc02ed4 --- /dev/null +++ b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Proxy/config.xml @@ -0,0 +1,98 @@ + + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + absolute_job_path + <font color=teal size=2>The metadata.json file of the last successful build will be copied from this job. Please specify the absolute path to the job.</font> + Build/Core/Proxy + false + + + image_tag + <font color=teal size=2>Specify only tag. If the value is blank, version will be picked from the metadata.json file.</font> + + false + + + artifact_source + <font color=teal size=2>Choose the artifact source</font> + + + ArtifactRepo + JenkinsJob + + + + + + + + + + /Build/Core/Proxy + + SUCCESS + 0 + BLUE + true + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/upload/docker/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Telemetry/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Telemetry/config.xml new file mode 100644 index 0000000000..8a1cab5917 --- /dev/null +++ b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Telemetry/config.xml @@ -0,0 +1,98 @@ + + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + absolute_job_path + <font color=teal size=2>The metadata.json file of the last successful build will be copied from this job. Please specify the absolute path to the job.</font> + Build/Core/Telemetry + false + + + image_tag + <font color=teal size=2>Specify only tag. If the value is blank, version will be picked from the metadata.json file.</font> + + false + + + artifact_source + <font color=teal size=2>Choose the artifact source</font> + + + ArtifactRepo + JenkinsJob + + + + + + + + + + /Build/Core/Telemetry + + SUCCESS + 0 + BLUE + true + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/upload/docker/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/DataPipeline/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/DataPipeline/config.xml new file mode 100644 index 0000000000..8ea23c96f5 --- /dev/null +++ b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/DataPipeline/config.xml @@ -0,0 +1,34 @@ + + + + + + + + + false + + + + + + + + + + + All + false + false + + + + + + + + false + + + + \ No newline at end of file diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/DataPipeline/jobs/Analytics/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/DataPipeline/jobs/Analytics/config.xml new file mode 100644 index 0000000000..241a5e1eec --- /dev/null +++ b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/DataPipeline/jobs/Analytics/config.xml @@ -0,0 +1,98 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + absolute_job_path + <font color=teal size=2>The metadata.json file of the last successful build will be copied from this job. Please specify the absolute path to the job.</font> + Build/DataPipeline/Analytics + false + + + build_number + <font color=teal size=2>Specify the build number to copy the artifact from. Default is last successful build of the job</font> + lastSuccessfulBuild + false + + + artifact_source + <font color=teal size=2>Choose the artifact source</font> + + + ArtifactRepo + JenkinsJob + + + + + + + + + + /Build/DataPipeline/Analytics + + SUCCESS + 0 + BLUE + true + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline.git + f37ad21f-744a-4817-9f5e-02f8ec620b39 + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/upload/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/DataPipeline/jobs/DataPipeline/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/DataPipeline/jobs/DataPipeline/config.xml new file mode 100644 index 0000000000..744ff44f85 --- /dev/null +++ b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/DataPipeline/jobs/DataPipeline/config.xml @@ -0,0 +1,98 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + absolute_job_path + <font color=teal size=2>The metadata.json file of the last successful build will be copied from this job. Please specify the absolute path to the job.</font> + Build/DataPipeline/DataPipeline + false + + + build_number + <font color=teal size=2>Specify the build number to copy the artifact from. Default is last successful build of the job</font> + lastSuccessfulBuild + false + + + artifact_source + <font color=teal size=2>Choose the artifact source</font> + + + ArtifactRepo + JenkinsJob + + + + + + + + + + /Build/DataPipeline/DataPipeline + + SUCCESS + 0 + BLUE + true + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline.git + f37ad21f-744a-4817-9f5e-02f8ec620b39 + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/upload/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/DataPipeline/jobs/Secor/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/DataPipeline/jobs/Secor/config.xml new file mode 100644 index 0000000000..192af77cad --- /dev/null +++ b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/DataPipeline/jobs/Secor/config.xml @@ -0,0 +1,98 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + absolute_job_path + <font color=teal size=2>The metadata.json file of the last successful build will be copied from this job. Please specify the absolute path to the job.</font> + Build/DataPipeline/Secor + false + + + build_number + <font color=teal size=2>Specify the build number to copy the artifact from. Default is last successful build of the job</font> + lastSuccessfulBuild + false + + + artifact_source + <font color=teal size=2>Choose the artifact source</font> + + + ArtifactRepo + JenkinsJob + + + + + + + + + + /Build/DataPipeline/Secor + + SUCCESS + 0 + BLUE + true + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline.git + f37ad21f-744a-4817-9f5e-02f8ec620b39 + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/upload/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/KnowledgePlatform/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/KnowledgePlatform/config.xml new file mode 100644 index 0000000000..8ea23c96f5 --- /dev/null +++ b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/KnowledgePlatform/config.xml @@ -0,0 +1,34 @@ + + + + + + + + + false + + + + + + + + + + + All + false + false + + + + + + + + false + + + + \ No newline at end of file diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/KnowledgePlatform/jobs/KnowledgePlatform/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/KnowledgePlatform/jobs/KnowledgePlatform/config.xml new file mode 100644 index 0000000000..a920818449 --- /dev/null +++ b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/KnowledgePlatform/jobs/KnowledgePlatform/config.xml @@ -0,0 +1,98 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + absolute_job_path + <font color=teal size=2>The metadata.json file of the last successful build will be copied from this job. Please specify the absolute path to the job.</font> + Build/KnowledgePlatform/KnowledgePlatform + false + + + build_number + <font color=teal size=2>Specify the build number to copy the artifact from. Default is last successful build of the job</font> + lastSuccessfulBuild + false + + + artifact_source + <font color=teal size=2>Choose the artifact source</font> + + + ArtifactRepo + JenkinsJob + + + + + + + + + + /Build/KnowledgePlatform/KnowledgePlatform + + SUCCESS + 0 + BLUE + true + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-learning-platform.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/upload/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4j/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4j/config.xml new file mode 100644 index 0000000000..86132d58de --- /dev/null +++ b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4j/config.xml @@ -0,0 +1,90 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + absolute_job_path + <font color=teal size=2>The metadata.json file of the last successful build will be copied from this job. Please specify the absolute path to the job.</font> + Build/KnowledgePlatform/Neo4j + false + + + build_number + <font color=teal size=2>Specify the build number to copy the artifact from. Default is last successful build of the job</font> + lastSuccessfulBuild + false + + + artifact_source + <font color=teal size=2>Choose the artifact source</font> + + + ArtifactRepo + JenkinsJob + + + + + + + + + + /Build/KnowledgePlatform/Neo4j + + SUCCESS + 0 + BLUE + true + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-learning-platform.git + + + + + ${public_repo_branch} + + + false + + + + pipelines/upload/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/KnowledgePlatform/jobs/SyncTool/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/KnowledgePlatform/jobs/SyncTool/config.xml new file mode 100644 index 0000000000..1727cdc833 --- /dev/null +++ b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/KnowledgePlatform/jobs/SyncTool/config.xml @@ -0,0 +1,90 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + absolute_job_path + <font color=teal size=2>The metadata.json file of the last successful build will be copied from this job. Please specify the absolute path to the job.</font> + Build/KnowledgePlatform/SyncTool + false + + + build_number + <font color=teal size=2>Specify the build number to copy the artifact from. Default is last successful build of the job</font> + lastSuccessfulBuild + false + + + artifact_source + <font color=teal size=2>Choose the artifact source</font> + + + ArtifactRepo + JenkinsJob + + + + + + + + + + /Build/KnowledgePlatform/SyncTool + + SUCCESS + 0 + BLUE + true + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-learning-platform.git + + + + + ${public_repo_branch} + + + false + + + + pipelines/upload/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/KnowledgePlatform/jobs/Yarn/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/KnowledgePlatform/jobs/Yarn/config.xml new file mode 100644 index 0000000000..bd1f9dc6a9 --- /dev/null +++ b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/KnowledgePlatform/jobs/Yarn/config.xml @@ -0,0 +1,90 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + absolute_job_path + <font color=teal size=2>The metadata.json file of the last successful build will be copied from this job. Please specify the absolute path to the job.</font> + Build/KnowledgePlatform/Yarn + false + + + build_number + <font color=teal size=2>Specify the build number to copy the artifact from. Default is last successful build of the job</font> + lastSuccessfulBuild + false + + + artifact_source + <font color=teal size=2>Choose the artifact source</font> + + + ArtifactRepo + JenkinsJob + + + + + + + + + + /Build/KnowledgePlatform/Yarn + + SUCCESS + 0 + BLUE + true + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-learning-platform.git + + + + + ${public_repo_branch} + + + false + + + + pipelines/upload/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Build/config.xml b/deploy/jenkins/jobs/Build/config.xml new file mode 100644 index 0000000000..6fe3ca0b64 --- /dev/null +++ b/deploy/jenkins/jobs/Build/config.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + All + false + false + + + + + + + + false + + + + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Build/jobs/Core/config.xml b/deploy/jenkins/jobs/Build/jobs/Core/config.xml new file mode 100644 index 0000000000..6fe3ca0b64 --- /dev/null +++ b/deploy/jenkins/jobs/Build/jobs/Core/config.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + All + false + false + + + + + + + + false + + + + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Build/jobs/Core/jobs/APIManager/config.xml b/deploy/jenkins/jobs/Build/jobs/Core/jobs/APIManager/config.xml new file mode 100644 index 0000000000..6ebbbdf13c --- /dev/null +++ b/deploy/jenkins/jobs/Build/jobs/Core/jobs/APIManager/config.xml @@ -0,0 +1,31 @@ + + + + + false + + + false + false + + + + + true + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Build/jobs/Core/jobs/APIManagerEcho/config.xml b/deploy/jenkins/jobs/Build/jobs/Core/jobs/APIManagerEcho/config.xml new file mode 100644 index 0000000000..d89b4b7bf9 --- /dev/null +++ b/deploy/jenkins/jobs/Build/jobs/Core/jobs/APIManagerEcho/config.xml @@ -0,0 +1,31 @@ + + + + + false + + + false + false + + + + + true + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Build/jobs/Core/jobs/AdminUtils/config.xml b/deploy/jenkins/jobs/Build/jobs/Core/jobs/AdminUtils/config.xml new file mode 100644 index 0000000000..79f0c9b9e5 --- /dev/null +++ b/deploy/jenkins/jobs/Build/jobs/Core/jobs/AdminUtils/config.xml @@ -0,0 +1,65 @@ + + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 10 + + + + + false + false + + + + + github_release_tag + <font color=teal size=2>If you want to build from a tag, specify the tag name. If this parameter is blank, latest commit hash will be used to build</font> + + false + + + + + + + + + + + + + + true + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Build/jobs/Core/jobs/Badger/config.xml b/deploy/jenkins/jobs/Build/jobs/Core/jobs/Badger/config.xml new file mode 100644 index 0000000000..c304a85633 --- /dev/null +++ b/deploy/jenkins/jobs/Build/jobs/Core/jobs/Badger/config.xml @@ -0,0 +1,75 @@ + + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 10 + + + + + false + false + + + + + github_release_tag + <font color=teal size=2>If you want to build from a tag, specify the tag name. If this parameter is blank, latest commit hash will be used to build</font> + + false + + + + + + + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + images/openbadger/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Build/jobs/Core/jobs/Cassandra/config.xml b/deploy/jenkins/jobs/Build/jobs/Core/jobs/Cassandra/config.xml new file mode 100644 index 0000000000..6bd3d66a8a --- /dev/null +++ b/deploy/jenkins/jobs/Build/jobs/Core/jobs/Cassandra/config.xml @@ -0,0 +1,76 @@ + + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 10 + + + + + false + false + + + + + github_release_tag + <font color=teal size=2>If you want to build from a tag, specify the tag name. If this parameter is blank, latest commit hash will be used to build</font> + + false + + + + + + + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-utils.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Build/jobs/Core/jobs/Config/config.xml b/deploy/jenkins/jobs/Build/jobs/Core/jobs/Config/config.xml new file mode 100644 index 0000000000..49e4105641 --- /dev/null +++ b/deploy/jenkins/jobs/Build/jobs/Core/jobs/Config/config.xml @@ -0,0 +1,75 @@ + + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 10 + + + + + false + false + + + + + github_release_tag + <font color=teal size=2>If you want to build from a tag, specify the tag name. If this parameter is blank, latest commit hash will be used to build</font> + + false + + + + + + + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-config.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Build/jobs/Core/jobs/Content/config.xml b/deploy/jenkins/jobs/Build/jobs/Core/jobs/Content/config.xml new file mode 100644 index 0000000000..022bd122ff --- /dev/null +++ b/deploy/jenkins/jobs/Build/jobs/Core/jobs/Content/config.xml @@ -0,0 +1,67 @@ + + + + + false + + + + -1 + -1 + -1 + 10 + + + + + false + false + + + + + github_release_tag + <font color=teal size=2>If you want to build from a tag, specify the tag name. If this parameter is blank, latest commit hash will be used to build</font> + + false + + + + + + + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-content-service.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Build/jobs/Core/jobs/Keycloak/config.xml b/deploy/jenkins/jobs/Build/jobs/Core/jobs/Keycloak/config.xml new file mode 100644 index 0000000000..3adc54eb1d --- /dev/null +++ b/deploy/jenkins/jobs/Build/jobs/Core/jobs/Keycloak/config.xml @@ -0,0 +1,66 @@ + + + + + false + + + + -1 + -1 + -1 + 1 + + + + + false + false + + + + + github_release_tag + <font color=teal size=2>If you want to build from a tag, specify the tag name. If this parameter is blank, latest commit hash will be used to build</font> + + false + + + + + + + + + + + + + + 2 + + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/keycloak-build/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Build/jobs/Core/jobs/Learner/config.xml b/deploy/jenkins/jobs/Build/jobs/Core/jobs/Learner/config.xml new file mode 100644 index 0000000000..04c56ddc2b --- /dev/null +++ b/deploy/jenkins/jobs/Build/jobs/Core/jobs/Learner/config.xml @@ -0,0 +1,75 @@ + + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 10 + + + + + false + false + + + + + github_release_tag + <font color=teal size=2>If you want to build from a tag, specify the tag name. If this parameter is blank, latest commit hash will be used to build</font> + + false + + + + + + + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-lms-service.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Build/jobs/Core/jobs/Player/config.xml b/deploy/jenkins/jobs/Build/jobs/Core/jobs/Player/config.xml new file mode 100644 index 0000000000..f16755de15 --- /dev/null +++ b/deploy/jenkins/jobs/Build/jobs/Core/jobs/Player/config.xml @@ -0,0 +1,75 @@ + + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 10 + + + + + false + false + + + + + github_release_tag + <font color=teal size=2>If you want to build from a tag, specify the tag name. If this parameter is blank, latest commit hash will be used to build</font> + + false + + + + + + + + + + + + + + 2 + + + https://github.com/Sunbird-Ed/SunbirdEd-portal.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Build/jobs/Core/jobs/Proxy/config.xml b/deploy/jenkins/jobs/Build/jobs/Core/jobs/Proxy/config.xml new file mode 100644 index 0000000000..665ffaf84a --- /dev/null +++ b/deploy/jenkins/jobs/Build/jobs/Core/jobs/Proxy/config.xml @@ -0,0 +1,67 @@ + + + + + false + + + + -1 + -1 + -1 + 10 + + + + + false + false + + + + + github_release_tag + <font color=teal size=2>If you want to build from a tag, specify the tag name. If this parameter is blank, latest commit hash will be used to build</font> + + false + + + + + + + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + images/proxy/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Build/jobs/Core/jobs/Telemetry/config.xml b/deploy/jenkins/jobs/Build/jobs/Core/jobs/Telemetry/config.xml new file mode 100644 index 0000000000..e1fa432c1d --- /dev/null +++ b/deploy/jenkins/jobs/Build/jobs/Core/jobs/Telemetry/config.xml @@ -0,0 +1,75 @@ + + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 10 + + + + + false + false + + + + + github_release_tag + <font color=teal size=2>If you want to build from a tag, specify the tag name. If this parameter is blank, latest commit hash will be used to build</font> + + false + + + + + + + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-telemetry-service.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Build/jobs/DataPipeline/config.xml b/deploy/jenkins/jobs/Build/jobs/DataPipeline/config.xml new file mode 100644 index 0000000000..68477b8ac7 --- /dev/null +++ b/deploy/jenkins/jobs/Build/jobs/DataPipeline/config.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + All + false + false + + + + + + + + false + + + + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Build/jobs/DataPipeline/jobs/Analytics/config.xml b/deploy/jenkins/jobs/Build/jobs/DataPipeline/jobs/Analytics/config.xml new file mode 100644 index 0000000000..67f758f2fa --- /dev/null +++ b/deploy/jenkins/jobs/Build/jobs/DataPipeline/jobs/Analytics/config.xml @@ -0,0 +1,76 @@ + + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 1 + + + + + false + false + + + + + github_release_tag + <font color=teal size=2>If you want to build from a tag, specify the tag name. If this parameter is blank, latest commit hash will be used to build</font> + + false + + + + + + + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-analytics.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Build/jobs/DataPipeline/jobs/DataPipeline/config.xml b/deploy/jenkins/jobs/Build/jobs/DataPipeline/jobs/DataPipeline/config.xml new file mode 100644 index 0000000000..28b05ba307 --- /dev/null +++ b/deploy/jenkins/jobs/Build/jobs/DataPipeline/jobs/DataPipeline/config.xml @@ -0,0 +1,75 @@ + + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 1 + + + + + false + false + + + + + github_release_tag + <font color=teal size=2>If you want to build from a tag, specify the tag name. If this parameter is blank, latest commit hash will be used to build</font> + + false + + + + + + + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/build/data-pipeline/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Build/jobs/DataPipeline/jobs/Secor/config.xml b/deploy/jenkins/jobs/Build/jobs/DataPipeline/jobs/Secor/config.xml new file mode 100644 index 0000000000..11f2ba28ac --- /dev/null +++ b/deploy/jenkins/jobs/Build/jobs/DataPipeline/jobs/Secor/config.xml @@ -0,0 +1,75 @@ + + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 1 + + + + + false + false + + + + + github_release_tag + <font color=teal size=2>If you want to build from a tag, specify the tag name. If this parameter is blank, latest commit hash will be used to build</font> + + false + + + + + + + + + + + + + + 2 + + + https://github.com/project-sunbird/secor.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Build/jobs/KnowledgePlatform/config.xml b/deploy/jenkins/jobs/Build/jobs/KnowledgePlatform/config.xml new file mode 100644 index 0000000000..6fe3ca0b64 --- /dev/null +++ b/deploy/jenkins/jobs/Build/jobs/KnowledgePlatform/config.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + All + false + false + + + + + + + + false + + + + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Build/jobs/KnowledgePlatform/jobs/KnowledgePlatform/config.xml b/deploy/jenkins/jobs/Build/jobs/KnowledgePlatform/jobs/KnowledgePlatform/config.xml new file mode 100644 index 0000000000..e8038d8ce8 --- /dev/null +++ b/deploy/jenkins/jobs/Build/jobs/KnowledgePlatform/jobs/KnowledgePlatform/config.xml @@ -0,0 +1,74 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 1 + + + + + false + false + + + + + github_release_tag + <font color=teal size=2>If you want to build from a tag, specify the tag name. If this parameter is blank, latest commit hash will be used to build</font> + + false + + + + + + + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-learning-platform.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/build/learning/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Build/jobs/KnowledgePlatform/jobs/Neo4j/config.xml b/deploy/jenkins/jobs/Build/jobs/KnowledgePlatform/jobs/Neo4j/config.xml new file mode 100644 index 0000000000..cad5a3b334 --- /dev/null +++ b/deploy/jenkins/jobs/Build/jobs/KnowledgePlatform/jobs/Neo4j/config.xml @@ -0,0 +1,74 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 1 + + + + + false + false + + + + + github_release_tag + <font color=teal size=2>If you want to build from a tag, specify the tag name. If this parameter is blank, latest commit hash will be used to build</font> + + false + + + + + + + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-learning-platform.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/build/neo4j/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Build/jobs/KnowledgePlatform/jobs/SyncTool/config.xml b/deploy/jenkins/jobs/Build/jobs/KnowledgePlatform/jobs/SyncTool/config.xml new file mode 100644 index 0000000000..750fafdc38 --- /dev/null +++ b/deploy/jenkins/jobs/Build/jobs/KnowledgePlatform/jobs/SyncTool/config.xml @@ -0,0 +1,74 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 1 + + + + + false + false + + + + + github_release_tag + <font color=teal size=2>If you want to build from a tag, specify the tag name. If this parameter is blank, latest commit hash will be used to build</font> + + false + + + + + + + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-learning-platform.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/build/synctool/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Build/jobs/KnowledgePlatform/jobs/Yarn/config.xml b/deploy/jenkins/jobs/Build/jobs/KnowledgePlatform/jobs/Yarn/config.xml new file mode 100644 index 0000000000..6e2e6d2ad8 --- /dev/null +++ b/deploy/jenkins/jobs/Build/jobs/KnowledgePlatform/jobs/Yarn/config.xml @@ -0,0 +1,74 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 1 + + + + + false + false + + + + + github_release_tag + <font color=teal size=2>If you want to build from a tag, specify the tag name. If this parameter is blank, latest commit hash will be used to build</font> + + false + + + + + + + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-learning-platform.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/build/yarn/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/config.xml b/deploy/jenkins/jobs/Deploy/config.xml new file mode 100644 index 0000000000..68477b8ac7 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/config.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + All + false + false + + + + + + + + false + + + + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/config.xml new file mode 100644 index 0000000000..6fe3ca0b64 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/config.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + All + false + false + + + + + + + + false + + + + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/config.xml new file mode 100644 index 0000000000..68477b8ac7 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/config.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + All + false + false + + + + + + + + false + + + + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/APIManager/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/APIManager/config.xml new file mode 100644 index 0000000000..cff90b9a42 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/APIManager/config.xml @@ -0,0 +1,78 @@ + + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + absolute_job_path + <font color=teal size=2>The metadata.json file of the last successful build will be copied from this job. Please specify the absolute path to the job.</font> + ArtifactUpload/dev/Core/APIManager + false + + + image_tag + <font color=teal size=2>Specify only tag. If the value is blank, tag will be picked from the metadata.json file.</font> + + false + + + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/deploy/api-manager/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/AdminUtils/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/AdminUtils/config.xml new file mode 100644 index 0000000000..8d649a5eb3 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/AdminUtils/config.xml @@ -0,0 +1,78 @@ + + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + absolute_job_path + <font color=teal size=2>The metadata.json file of the last successful build will be copied from this job. Please specify the absolute path to the job.</font> + ArtifactUpload/dev/Core/AdminUtils + false + + + image_tag + <font color=teal size=2>Specify only tag. If the value is blank, tag will be picked from the metadata.json file.</font> + + false + + + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/deploy/adminutils/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/ApplicationElasticSearch/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/ApplicationElasticSearch/config.xml new file mode 100644 index 0000000000..84bb3adf71 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/ApplicationElasticSearch/config.xml @@ -0,0 +1,50 @@ + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/deploy/application-elasticsearch/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Badger/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Badger/config.xml new file mode 100644 index 0000000000..1afb16eebf --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Badger/config.xml @@ -0,0 +1,77 @@ + + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + absolute_job_path + <font color=teal size=2>The metadata.json file of the last successful build will be copied from this job. Please specify the absolute path to the job.</font> + ArtifactUpload/dev/Core/Badger + false + + + image_tag + <font color=teal size=2>Specify only tag. If the value is blank, tag will be picked from the metadata.json file.</font> + + false + + + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/deploy/badger/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Cassandra/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Cassandra/config.xml new file mode 100644 index 0000000000..256d54e8e9 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Cassandra/config.xml @@ -0,0 +1,138 @@ + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + absolute_job_path + <font color=teal size=2>Please specify the absolute path to the job from which the metadata.json will be copied.</font> + ArtifactUpload/dev/Core/Cassandra + false + + + artifact_source + <font color=teal size=2>Choose the artifact source.</font> + choice-parameter-9600649228560 + 1 + + false + + + + false + + + Cassandra + + + PT_SINGLE_SELECT + false + 1 + + + build_number + + choice-parameter-9600651313765 + 1 + + false + + + + false + + + Cassandra + + artifact_source + ET_FORMATTED_HTML + true + + + artifact_version + + choice-parameter-9600653373369 + 1 + + false + + + + false + + + Cassandra + + artifact_source + ET_FORMATTED_HTML + true + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/deploy/cassandra-deploy/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Config/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Config/config.xml new file mode 100644 index 0000000000..aadc4120dc --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Config/config.xml @@ -0,0 +1,77 @@ + + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + absolute_job_path + <font color=teal size=2>The metadata.json file of the last successful build will be copied from this job. Please specify the absolute path to the job.</font> + ArtifactUpload/dev/Core/Config + false + + + image_tag + <font color=teal size=2>Specify only tag. If the value is blank, tag will be picked from the metadata.json file.</font> + + false + + + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/deploy/config-service/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Content/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Content/config.xml new file mode 100644 index 0000000000..417ad6883e --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Content/config.xml @@ -0,0 +1,77 @@ + + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + absolute_job_path + <font color=teal size=2>The metadata.json file of the last successful build will be copied from this job. Please specify the absolute path to the job.</font> + ArtifactUpload/dev/Core/Content + false + + + image_tag + <font color=teal size=2>Specify only tag. If the value is blank, tag will be picked from the metadata.json file.</font> + + false + + + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/deploy/content/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Keycloak/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Keycloak/config.xml new file mode 100644 index 0000000000..b931027db5 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Keycloak/config.xml @@ -0,0 +1,149 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + absolute_job_path + <font color=teal size=2>Please specify the absolute path to the job from which the metadata.json will be copied.</font> + ArtifactUpload/dev/Core/Keycloak + false + + + artifact_source + <font color=teal size=2>Choose the artifact source.</font> + choice-parameter-12566219493457 + 1 + + false + + + + false + + + Keycloak + + + PT_SINGLE_SELECT + false + 1 + + + build_number + + choice-parameter-12566221440336 + 1 + + false + + + + false + + + Keycloak + + artifact_source + ET_FORMATTED_HTML + true + + + artifact_version + + choice-parameter-12566223395914 + 1 + + false + + + + false + + + Keycloak + + artifact_source + ET_FORMATTED_HTML + true + + + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/deploy/keycloak/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/KeycloakRealm/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/KeycloakRealm/config.xml new file mode 100644 index 0000000000..72e3e6a1fc --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/KeycloakRealm/config.xml @@ -0,0 +1,149 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + absolute_job_path + <font color=teal size=2>Please specify the absolute path to the job from which the metadata.json will be copied.</font> + ArtifactUpload/dev/Core/Keycloak + false + + + artifact_source + <font color=teal size=2>Choose the artifact source.</font> + choice-parameter-12566219493457 + 1 + + false + + + + false + + + KeycloakRealm + + + PT_SINGLE_SELECT + false + 1 + + + build_number + + choice-parameter-12566221440336 + 1 + + false + + + + false + + + KeycloakRealm + + artifact_source + ET_FORMATTED_HTML + true + + + artifact_version + + choice-parameter-12566223395914 + 1 + + false + + + + false + + + KeycloakRealm + + artifact_source + ET_FORMATTED_HTML + true + + + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/deploy/keycloak-realm/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Learner/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Learner/config.xml new file mode 100644 index 0000000000..a6c27e73c2 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Learner/config.xml @@ -0,0 +1,77 @@ + + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + absolute_job_path + <font color=teal size=2>The metadata.json file of the last successful build will be copied from this job. Please specify the absolute path to the job.</font> + ArtifactUpload/dev/Core/Learner + false + + + image_tag + <font color=teal size=2>Specify only tag. If the value is blank, tag will be picked from the metadata.json file.</font> + + false + + + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/deploy/learner/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/LoggerElasticSearch/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/LoggerElasticSearch/config.xml new file mode 100644 index 0000000000..3b54301630 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/LoggerElasticSearch/config.xml @@ -0,0 +1,66 @@ + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + copy_metadata_from + <font color=teal size=2>The metadata.json file of the last successful build will be copied from this job. Please specify the absolute path to the job.</font> + + false + + + image_tag + <font color=teal size=2>Specify only tag. If the value is blank, tag will be picked from the metadata.json file.</font> + + false + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/deploy/logger-elasticsearch/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Logging/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Logging/config.xml new file mode 100644 index 0000000000..2a50e6241e --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Logging/config.xml @@ -0,0 +1,50 @@ + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/deploy/logger/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Monitoring/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Monitoring/config.xml new file mode 100644 index 0000000000..ad7760ec4a --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Monitoring/config.xml @@ -0,0 +1,50 @@ + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/deploy/monitor/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/OnboardAPIs/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/OnboardAPIs/config.xml new file mode 100644 index 0000000000..091230caec --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/OnboardAPIs/config.xml @@ -0,0 +1,57 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/deploy/am-onboard-apis/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/OnboardConsumers/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/OnboardConsumers/config.xml new file mode 100644 index 0000000000..92db3de757 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/OnboardConsumers/config.xml @@ -0,0 +1,50 @@ + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/deploy/am-onboard-consumers/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Player/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Player/config.xml new file mode 100644 index 0000000000..158e642b1e --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Player/config.xml @@ -0,0 +1,77 @@ + + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + absolute_job_path + <font color=teal size=2>The metadata.json file of the last successful build will be copied from this job. Please specify the absolute path to the job.</font> + ArtifactUpload/dev/Core/Player + false + + + image_tag + <font color=teal size=2>Specify only tag. If the value is blank, tag will be picked from the metadata.json file.</font> + + false + + + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/deploy/player/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Proxy/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Proxy/config.xml new file mode 100644 index 0000000000..67a3639c92 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Proxy/config.xml @@ -0,0 +1,66 @@ + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + absolute_job_path + <font color=teal size=2>The metadata.json file of the last successful build will be copied from this job. Please specify the absolute path to the job.</font> + ArtifactUpload/dev/Core/Proxy + false + + + image_tag + <font color=teal size=2>Specify only version/tag, image name will be picked from the metadata.json file. If the value is blank, version will be picked from the metadata.json file.</font> + + false + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/deploy/proxy/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Telemetry/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Telemetry/config.xml new file mode 100644 index 0000000000..a971d6fe38 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Telemetry/config.xml @@ -0,0 +1,77 @@ + + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + absolute_job_path + <font color=teal size=2>The metadata.json file of the last successful build will be copied from this job. Please specify the absolute path to the job.</font> + ArtifactUpload/dev/Core/Telemetry + false + + + image_tag + <font color=teal size=2>Specify only version/tag, image name will be picked from the metadata.json file. If the value is blank, version will be picked from the metadata.json file.</font> + + false + + + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/deploy/telemetry/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/TelemetryLogstash/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/TelemetryLogstash/config.xml new file mode 100644 index 0000000000..b7f5cf21ff --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/TelemetryLogstash/config.xml @@ -0,0 +1,50 @@ + + + + Deploys Telemetry Logstash Service + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/deploy/telemetry-logstash/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/TelemetryLogstashDataPipeline/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/TelemetryLogstashDataPipeline/config.xml new file mode 100644 index 0000000000..b153f9737e --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/TelemetryLogstashDataPipeline/config.xml @@ -0,0 +1,50 @@ + + + + Deploys Telemetry Logstash Datapipeline Service + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/deploy/telemetry-logstash-datapipeline/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/config.xml new file mode 100644 index 0000000000..6fe3ca0b64 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/config.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + All + false + false + + + + + + + + false + + + + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsAPI/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsAPI/config.xml new file mode 100644 index 0000000000..b02755eef1 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsAPI/config.xml @@ -0,0 +1,145 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + absolute_job_path + <font color=teal size=2>Please specify the absolute path to the job from which the metadata.json will be copied.</font> + ArtifactUpload/dev/DataPipeline/Analytics + false + + + artifact_source + <font color=teal size=2>Choose the artifact source.</font> + choice-parameter-9061667106947 + 1 + + false + + + + false + + + AnalyticsAPI + + + PT_SINGLE_SELECT + false + 1 + + + build_number + + choice-parameter-9061670571657 + 1 + + false + + + + false + + + AnalyticsAPI + + artifact_source + ET_FORMATTED_HTML + true + + + artifact_version + + choice-parameter-9061673103864 + 1 + + false + + + + false + + + AnalyticsAPI + + artifact_source + ET_FORMATTED_HTML + true + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/deploy/analytics-api/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsFetchLogs/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsFetchLogs/config.xml new file mode 100644 index 0000000000..5dc3792b3b --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsFetchLogs/config.xml @@ -0,0 +1,83 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + instance_name + <font color=teal size=2>Choose the instance to fetch logs.</font> + + + spark + analytics-api + secor + cassandra + + + + + action + <font color=teal size=2>Choose one of the option - Fetch logs or set cronjob.</font> + + + fetch-logs + cronjobs + + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/deploy/fetch-logs/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsGeoLocationDBSetup/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsGeoLocationDBSetup/config.xml new file mode 100644 index 0000000000..8392da8e62 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsGeoLocationDBSetup/config.xml @@ -0,0 +1,57 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/deploy/geolocation-db-setup/Jenkinsfile + false + + + true + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsPopulatePSQLConsumerChannelMapping/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsPopulatePSQLConsumerChannelMapping/config.xml new file mode 100644 index 0000000000..188b020ba6 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsPopulatePSQLConsumerChannelMapping/config.xml @@ -0,0 +1,89 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + Consumer_id + <font color=teal size=2>mention the consumer ID.</font> + id + false + + + Channel_id + <font color=teal size=2>Channel ID to map with the Consumer ID.</font> + channel_id + false + + + status + <font color=teal size=2> 1 - to activate 0 - to make it inactive</font> + + + 1 + 0 + + + + + Created_by + <font color=teal size=2>created by.</font> + analytics-team + false + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/deploy/PopulatePSQL-ConsumerChannelMapping/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsReplayJobs/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsReplayJobs/config.xml new file mode 100644 index 0000000000..c9407b99ba --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsReplayJobs/config.xml @@ -0,0 +1,103 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + cql_query + <font color=teal size=2>Specify cql_query if any tables needs to be truncated.</font> + 0 + false + + + job_type + <font color=teal size=2>Specify the job type - Replay or Run.</font> + + + replay-job + run-job + generate-metrics + submit-job + + + + + job_id + <font color=teal size=2>Specify the job id.</font> + + false + + + start_date + <font color=teal size=2>Specify the start date. The default value is just a placeholder which can be changed as per need.</font> + 2017-05-01 + false + + + end_date + <font color=teal size=2>Specify the end date. The default value is just a placeholder which can be changed as per need.</font> + 2017-07-11 + false + + + pause_min + <font color=teal size=2>Specify the # of minutes to pause. The default value is just a placeholder which can be changed as per need.</font> + 30 + false + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/deploy/replay-jobs/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsStartJobManager/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsStartJobManager/config.xml new file mode 100644 index 0000000000..42c0944caf --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsStartJobManager/config.xml @@ -0,0 +1,67 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + pause_min + <font color=teal size=2>Pause for # of minutes.</font> + 5 + false + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/deploy/start-jobmanager/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsSubmitJobs/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsSubmitJobs/config.xml new file mode 100644 index 0000000000..e4945714cd --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsSubmitJobs/config.xml @@ -0,0 +1,67 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + pause_min + <font color=teal size=2>Pause for # of minutes.</font> + 5 + false + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/deploy/submit-jobs/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/CassandraDbUpdate/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/CassandraDbUpdate/config.xml new file mode 100644 index 0000000000..f9900d4fab --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/CassandraDbUpdate/config.xml @@ -0,0 +1,57 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/deploy/cassandra/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/DataProducts/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/DataProducts/config.xml new file mode 100644 index 0000000000..90adaf52a4 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/DataProducts/config.xml @@ -0,0 +1,145 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + absolute_job_path + <font color=teal size=2>Please specify the absolute path to the job from which the metadata.json will be copied.</font> + ArtifactUpload/dev/DataPipeline/Analytics + false + + + artifact_source + <font color=teal size=2>Choose the artifact source.</font> + choice-parameter-9061667106947 + 1 + + false + + + + false + + + DataProducts + + + PT_SINGLE_SELECT + false + 1 + + + build_number + + choice-parameter-9061670571657 + 1 + + false + + + + false + + + DataProducts + + artifact_source + ET_FORMATTED_HTML + true + + + artifact_version + + choice-parameter-9061673103864 + 1 + + false + + + + false + + + DataProducts + + artifact_source + ET_FORMATTED_HTML + true + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/deploy/data-products/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/KafkaIndexer/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/KafkaIndexer/config.xml new file mode 100644 index 0000000000..1070ed9aa6 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/KafkaIndexer/config.xml @@ -0,0 +1,57 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/deploy/kafka-indexer/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/KafkaSetup/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/KafkaSetup/config.xml new file mode 100644 index 0000000000..d3e598d501 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/KafkaSetup/config.xml @@ -0,0 +1,57 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/deploy/kafka/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/SamzaTelemetrySchemas/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/SamzaTelemetrySchemas/config.xml new file mode 100644 index 0000000000..f5a11c1dfd --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/SamzaTelemetrySchemas/config.xml @@ -0,0 +1,67 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + schema_repo_version + + ${public_repo_branch} + false + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/deploy/samza-telemetry-schemas/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/Secor/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/Secor/config.xml new file mode 100644 index 0000000000..d40915a8ca --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/Secor/config.xml @@ -0,0 +1,145 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + absolute_job_path + <font color=teal size=2>Please specify the absolute path to the job from which the metadata.json will be copied.</font> + ArtifactUpload/dev/DataPipeline/Secor + false + + + artifact_source + <font color=teal size=2>Choose the artifact source.</font> + choice-parameter-9061667106947 + 1 + + false + + + + false + + + Secor + + + PT_SINGLE_SELECT + false + 1 + + + build_number + + choice-parameter-9061670571657 + 1 + + false + + + + false + + + Secor + + artifact_source + ET_FORMATTED_HTML + true + + + artifact_version + + choice-parameter-9061673103864 + 1 + + false + + + + false + + + Secor + + artifact_source + ET_FORMATTED_HTML + true + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/deploy/secor/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/Yarn/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/Yarn/config.xml new file mode 100644 index 0000000000..5c79c95bc7 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/Yarn/config.xml @@ -0,0 +1,146 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + absolute_job_path + <font color=teal size=2>Please specify the absolute path to the job from which the metadata.json will be copied.</font> + ArtifactUpload/dev/DataPipeline/DataPipeline + false + + + artifact_source + <font color=teal size=2>Choose the artifact source.</font> + choice-parameter-9061667106947 + 1 + + false + + + + false + + + Yarn + + + PT_SINGLE_SELECT + false + 1 + + + build_number + + choice-parameter-9061670571657 + 1 + + false + + + + false + + + Yarn + + artifact_source + ET_FORMATTED_HTML + true + + + artifact_version + + choice-parameter-9061673103864 + 1 + + false + + + + false + + + Yarn + + artifact_source + ET_FORMATTED_HTML + true + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/deploy/yarn/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/config.xml new file mode 100644 index 0000000000..68477b8ac7 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/config.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + All + false + false + + + + + + + + false + + + + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/CassandraDbUpdate/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/CassandraDbUpdate/config.xml new file mode 100644 index 0000000000..24ab56cd58 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/CassandraDbUpdate/config.xml @@ -0,0 +1,60 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-learning-platform.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/deploy/cassandra/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/ContentTool/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/ContentTool/config.xml new file mode 100644 index 0000000000..c2197a8f59 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/ContentTool/config.xml @@ -0,0 +1,160 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + absolute_job_path + <font color=teal size=2>Please specify the absolute path to the job from which the metadata.json will be copied.</font> + ArtifactUpload/dev/KnowledgePlatform/KnowledgePlatform + false + + + artifact_source + <font color=teal size=2>Choose the artifact source.</font> + choice-parameter-11231260290779 + 1 + + false + + + + false + + + ContentTool + + + PT_SINGLE_SELECT + false + 1 + + + build_number + + choice-parameter-11231262182182 + 1 + + false + + + + false + + + ContentTool + + artifact_source + ET_FORMATTED_HTML + false + + + artifact_version + + choice-parameter-11231264192585 + 1 + + false + + + + false + + + ContentTool + + artifact_source + ET_FORMATTED_HTML + false + + + command + <font color=teal size=2>enter the command</font> + sync + false + + + parameters + <font color=teal size=2>enter the do id </font> + + false + + + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-learning-platform.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/deploy/content-tool/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/FileSyncTool/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/FileSyncTool/config.xml new file mode 100644 index 0000000000..573e764485 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/FileSyncTool/config.xml @@ -0,0 +1,151 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + absolute_job_path + <font color=teal size=2>Please specify the absolute path to the job from which the metadata.json will be copied.</font> + ArtifactUpload/dev/KnowledgePlatform/Synctool + false + + + artifact_source + <font color=teal size=2>Choose the artifact source.</font> + choice-parameter-12064212918348 + 1 + + false + + + + false + + + FileSyncTool + + + PT_SINGLE_SELECT + false + 1 + + + build_number + + choice-parameter-12064215048751 + 1 + + false + + + + false + + + FileSyncTool + + artifact_source + ET_FORMATTED_HTML + false + + + artifact_version + + choice-parameter-12064217003054 + 1 + + false + + + + false + + + FileSyncTool + + artifact_source + ET_FORMATTED_HTML + false + + + filename + <font color=teal size=2>enter valid filename with extention</font> + + false + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-learning-platform.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/deploy/file-sync-tool/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/KafkaSetup/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/KafkaSetup/config.xml new file mode 100644 index 0000000000..d0adb321dd --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/KafkaSetup/config.xml @@ -0,0 +1,60 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-learning-platform.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/deploy/kafka-setup/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Learning/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Learning/config.xml new file mode 100644 index 0000000000..93413e7686 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Learning/config.xml @@ -0,0 +1,149 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + absolute_job_path + <font color=teal size=2>Please specify the absolute path to the job from which the metadata.json will be copied.</font> + ArtifactUpload/dev/KnowledgePlatform/KnowledgePlatform + false + + + artifact_source + <font color=teal size=2>Choose the artifact source.</font> + choice-parameter-12566219493457 + 1 + + false + + + + false + + + Learning + + + PT_SINGLE_SELECT + false + 1 + + + build_number + + choice-parameter-12566221440336 + 1 + + false + + + + false + + + Learning + + artifact_source + ET_FORMATTED_HTML + true + + + artifact_version + + choice-parameter-12566223395914 + 1 + + false + + + + false + + + Learning + + artifact_source + ET_FORMATTED_HTML + true + + + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-learning-platform.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/deploy/learning/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4j/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4j/config.xml new file mode 100644 index 0000000000..b13f7a1eb4 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4j/config.xml @@ -0,0 +1,148 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + absolute_job_path + <font color=teal size=2>Please specify the absolute path to the job from which the metadata.json will be copied.</font> + ArtifactUpload/dev/KnowledgePlatform/Neo4j + false + + + artifact_source + <font color=teal size=2>Choose the artifact source.</font> + choice-parameter-13436883643465 + 1 + + false + + + + false + + + Neo4j + + + PT_SINGLE_SELECT + false + 1 + + + build_number + + choice-parameter-13436885688258 + 1 + + false + + + + false + + + Neo4j + + artifact_source + ET_FORMATTED_HTML + false + + + artifact_version + + choice-parameter-13436888536349 + 1 + + false + + + + false + + + Neo4j + + artifact_source + ET_FORMATTED_HTML + true + + + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-learning-platform.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/deploy/neo4j/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4jDefinitionUpdate/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4jDefinitionUpdate/config.xml new file mode 100644 index 0000000000..b5224eace1 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4jDefinitionUpdate/config.xml @@ -0,0 +1,60 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-learning-platform.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/deploy/neo4j-definition-update/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4jElasticSearchSyncTool/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4jElasticSearchSyncTool/config.xml new file mode 100644 index 0000000000..c3fa08b16d --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4jElasticSearchSyncTool/config.xml @@ -0,0 +1,173 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + absolute_job_path + <font color=teal size=2>Please specify the absolute path to the job from which the metadata.json will be copied.</font> + ArtifactUpload/dev/KnowledgePlatform/SyncTool + false + + + artifact_source + <font color=teal size=2>Choose the artifact source.</font> + choice-parameter-14175006770414 + 1 + + false + + + + false + + + Neo4jElasticSearchSyncTool + + + PT_SINGLE_SELECT + false + 1 + + + build_number + + choice-parameter-14175008677110 + 1 + + false + + + + false + + + Neo4jElasticSearchSyncTool + + artifact_source + ET_FORMATTED_HTML + true + + + artifact_version + + choice-parameter-14175010584707 + 1 + + false + + + + false + + + Neo4jElasticSearchSyncTool + + artifact_source + ET_FORMATTED_HTML + true + + + command + <font color=teal size=2>Select a command</font> + + + syncbyobjecttype + syncbyids + syncbydaterange + sync + + + + + parameters + <font color=teal size=2>It is parameter to pass with command.<br> + ex:<br> + --objectType Content<br> + --ids do_10101010,do_20202020<br> + --startDate 2018-03-01 --endDate 2018-03-31<br> + --objectType Content --startDate 2018-03-01 --endDate 2018-03-31<br> + --graphId en --objectType Word<br> + --graph domain --objectType Channel<br></font> + --objectType + false + + + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-learning-platform.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/deploy/neo4j-es-synctool/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/SamzaTelemetrySchemas/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/SamzaTelemetrySchemas/config.xml new file mode 100644 index 0000000000..36e1f7903c --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/SamzaTelemetrySchemas/config.xml @@ -0,0 +1,73 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + host + <font color=teal size=2>Please specify host to deploy. The default value is just a placeholder which can be changed as per inventory.</font> + dp-yarn + false + + + version + <font color=teal size=2>Please specify version to deploy. The default value is just a placeholder which can be changed as per need.</font> + release-1.9 + false + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-learning-platform.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/deploy/samza-telemetry-schemas/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Search/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Search/config.xml new file mode 100644 index 0000000000..1ac06db89c --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Search/config.xml @@ -0,0 +1,149 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + absolute_job_path + <font color=teal size=2>Please specify the absolute path to the job from which the metadata.json will be copied.</font> + ArtifactUpload/dev/KnowledgePlatform/KnowledgePlatform + false + + + artifact_source + <font color=teal size=2>Choose the artifact source.</font> + choice-parameter-14760318274338 + 1 + + false + + + + false + + + Search + + + PT_SINGLE_SELECT + false + 1 + + + build_number + + choice-parameter-14760320375443 + 1 + + false + + + + false + + + Search + + artifact_source + ET_FORMATTED_HTML + true + + + artifact_version + + choice-parameter-14760322347747 + 1 + + false + + + + false + + + Search + + artifact_source + ET_FORMATTED_HTML + true + + + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-learning-platform.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/deploy/search/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/StartNeo4jCluster/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/StartNeo4jCluster/config.xml new file mode 100644 index 0000000000..6161296a04 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/StartNeo4jCluster/config.xml @@ -0,0 +1,61 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-learning-platform.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/deploy/neo4j-start-cluster/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/ValidateLearning/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/ValidateLearning/config.xml new file mode 100644 index 0000000000..0af53c22f8 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/ValidateLearning/config.xml @@ -0,0 +1,60 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-learning-platform.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/deploy/validate-learning/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Yarn/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Yarn/config.xml new file mode 100644 index 0000000000..a10ff4f57d --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Yarn/config.xml @@ -0,0 +1,148 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + absolute_job_path + <font color=teal size=2>Please specify the absolute path to the job from which the metadata.json will be copied.</font> + ArtifactUpload/dev/KnowledgePlatform/Yarn + false + + + artifact_source + <font color=teal size=2>Choose the artifact source.</font> + choice-parameter-2874232768088857 + 1 + + false + + + + false + + + Yarn + + + PT_SINGLE_SELECT + false + 1 + + + build_number + + choice-parameter-2874449088885218 + 1 + + false + + + + false + + + Yarn + + artifact_source + ET_FORMATTED_HTML + true + + + artifact_version + + choice-parameter-2877900313772031 + 1 + + false + + + + false + + + Yarn + + artifact_source + ET_FORMATTED_HTML + true + + + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-learning-platform.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/deploy/yarn/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Summary/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Summary/config.xml new file mode 100644 index 0000000000..8ea23c96f5 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Summary/config.xml @@ -0,0 +1,34 @@ + + + + + + + + + false + + + + + + + + + + + All + false + false + + + + + + + + false + + + + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Summary/jobs/DeployedVersions/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Summary/jobs/DeployedVersions/config.xml new file mode 100644 index 0000000000..0c93db6c24 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Summary/jobs/DeployedVersions/config.xml @@ -0,0 +1,64 @@ + + + + + false + + + + -1 + -1 + -1 + 10 + + + + + false + false + + + + + + Deploy/dev/Core/Content,Deploy/dev/Core/Player,Deploy/dev/Core/Learner,Deploy/dev/Core/Telemetry,Deploy/dev/Core/Proxy,Deploy/dev/KnowledgePlatform/Search,Deploy/dev/KnowledgePlatform/Learning,Deploy/dev/DataPipeline/Secor,Deploy/dev/DataPipeline/Yarn,Deploy/dev/KnowledgePlatform/Yarn,Deploy/dev/DataPipeline/AnalyticsAPI + + SUCCESS + 0 + BLUE + true + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/summary/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/config.xml b/deploy/jenkins/jobs/OpsAdministration/config.xml new file mode 100644 index 0000000000..6fe3ca0b64 --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/config.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + All + false + false + + + + + + + + false + + + + \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/config.xml new file mode 100644 index 0000000000..6fe3ca0b64 --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/config.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + All + false + false + + + + + + + + false + + + + \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/config.xml new file mode 100644 index 0000000000..6fe3ca0b64 --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/config.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + All + false + false + + + + + + + + false + + + + \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/ApplicationElasticsearchBackup/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/ApplicationElasticsearchBackup/config.xml new file mode 100644 index 0000000000..cd5cc3c94a --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/ApplicationElasticsearchBackup/config.xml @@ -0,0 +1,50 @@ + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/deploy/es-backup/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/ApplicationElasticsearchRestore/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/ApplicationElasticsearchRestore/config.xml new file mode 100644 index 0000000000..5470ca69d8 --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/ApplicationElasticsearchRestore/config.xml @@ -0,0 +1,50 @@ + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/deploy/es-restore/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/Bootstrap/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/Bootstrap/config.xml new file mode 100644 index 0000000000..3982ea310d --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/Bootstrap/config.xml @@ -0,0 +1,67 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + hosts + <font color=teal size=2>enter the host name to be bootstrapped.</font> + core + false + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/bootstrap/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/CassandraBackup/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/CassandraBackup/config.xml new file mode 100644 index 0000000000..7bbf214a5a --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/CassandraBackup/config.xml @@ -0,0 +1,50 @@ + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/backup/cassandra-backup/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/LoggerElasticSearchBackup/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/LoggerElasticSearchBackup/config.xml new file mode 100644 index 0000000000..1b26809438 --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/LoggerElasticSearchBackup/config.xml @@ -0,0 +1,50 @@ + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/backup/logger-es-backup/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/LoggerElasticSearchRestore/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/LoggerElasticSearchRestore/config.xml new file mode 100644 index 0000000000..155b4a90aa --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/LoggerElasticSearchRestore/config.xml @@ -0,0 +1,50 @@ + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/backup/logger-es-restore/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/PostgresqlBackup/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/PostgresqlBackup/config.xml new file mode 100644 index 0000000000..faa94b00f2 --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/PostgresqlBackup/config.xml @@ -0,0 +1,51 @@ + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/backup/postgresql-backup/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/PostgresqlRestore/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/PostgresqlRestore/config.xml new file mode 100644 index 0000000000..9ad72ff266 --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/PostgresqlRestore/config.xml @@ -0,0 +1,51 @@ + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/backup/postgresql-restore/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/PrometheusBackup/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/PrometheusBackup/config.xml new file mode 100644 index 0000000000..8e757f82b7 --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/PrometheusBackup/config.xml @@ -0,0 +1,50 @@ + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/backup/prometheus-backup/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/SwarmBootstrap/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/SwarmBootstrap/config.xml new file mode 100644 index 0000000000..cec50282af --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/SwarmBootstrap/config.xml @@ -0,0 +1,50 @@ + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/bootstrap-swarm/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/config.xml new file mode 100644 index 0000000000..68477b8ac7 --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/config.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + All + false + false + + + + + + + + false + + + + \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/Bootstrap/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/Bootstrap/config.xml new file mode 100644 index 0000000000..df91bff4cc --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/Bootstrap/config.xml @@ -0,0 +1,60 @@ + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + hosts + <font color=teal size=2>enter the host name to be bootstrapped.</font> + dp + false + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/bootstrap/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/CassandraBackup/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/CassandraBackup/config.xml new file mode 100644 index 0000000000..c861a2c2ad --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/CassandraBackup/config.xml @@ -0,0 +1,74 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + remote + <font color=teal size=2>enter the host name.</font> + cassandra + false + + + data_dir + <font color=teal size=2>enter cassandra data directory.</font> + /data/cassandra/data + false + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/backup/cassandra-backup/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/CassandraRestore/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/CassandraRestore/config.xml new file mode 100644 index 0000000000..b4c7ea72a1 --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/CassandraRestore/config.xml @@ -0,0 +1,74 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + remote + <font color=teal size=2>enter the host name.</font> + cassandra + false + + + artifact_version + <font color=teal size=2>Specify the artifact version to restore</font> + + false + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/backup/cassandra-restore/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/ElasticsearchBackup/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/ElasticsearchBackup/config.xml new file mode 100644 index 0000000000..ec3ce736a9 --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/ElasticsearchBackup/config.xml @@ -0,0 +1,67 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + remote + <font color=teal size=2>enter any one host name or ip if it is a cluster</font> + + false + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/backup/elasticsearch-backup/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/ElasticsearchRestore/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/ElasticsearchRestore/config.xml new file mode 100644 index 0000000000..311d76650a --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/ElasticsearchRestore/config.xml @@ -0,0 +1,75 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + host + <font color=teal size=2>enter any one host name or ip if it is a cluster</font> + + false + + + SNAPSHOT_NUMBER + <font color=teal size=2>Enter Snapshot number to restore. +curl command to get snapshot number: +curl http://localhost:9200/_snapshot/azurebackup/_all, Parse the json and get the valid snapshot number to restore</font> + + false + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/backup/elasticsearch-restore/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/InfluxDBBackup/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/InfluxDBBackup/config.xml new file mode 100644 index 0000000000..db7d1a4a84 --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/InfluxDBBackup/config.xml @@ -0,0 +1,57 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/backup/influxdb-backup/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/PostgresqlBackup/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/PostgresqlBackup/config.xml new file mode 100644 index 0000000000..018f24c55b --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/PostgresqlBackup/config.xml @@ -0,0 +1,51 @@ + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/backup/postgresql-backup/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/PostgresqlRestore/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/PostgresqlRestore/config.xml new file mode 100644 index 0000000000..6516c5daf1 --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/PostgresqlRestore/config.xml @@ -0,0 +1,51 @@ + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/backup/postgresql-restore/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/KnowledgePlatform/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/KnowledgePlatform/config.xml new file mode 100644 index 0000000000..6fe3ca0b64 --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/KnowledgePlatform/config.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + All + false + false + + + + + + + + false + + + + \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/KnowledgePlatform/jobs/Bootstrap/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/KnowledgePlatform/jobs/Bootstrap/config.xml new file mode 100644 index 0000000000..0e32e6c07a --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/KnowledgePlatform/jobs/Bootstrap/config.xml @@ -0,0 +1,60 @@ + + + + + false + + + + -1 + -1 + -1 + 5 + + + + false + false + + + + + hosts + <font color=teal size=2>enter the host name to be bootstrapped.</font> + lp + false + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-learning-platform.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/bootstrap/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/KnowledgePlatform/jobs/CassandraBackup/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/KnowledgePlatform/jobs/CassandraBackup/config.xml new file mode 100644 index 0000000000..f55022a82f --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/KnowledgePlatform/jobs/CassandraBackup/config.xml @@ -0,0 +1,67 @@ + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + remote + <font color=teal size=2>enter the host name.</font> + cassandra + false + + + data_dir + <font color=teal size=2>enter cassandra data directory.</font> + /data/cassandra/data + false + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-learning-platform.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/backup/cassandra-backup/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/KnowledgePlatform/jobs/CassandraRestore/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/KnowledgePlatform/jobs/CassandraRestore/config.xml new file mode 100644 index 0000000000..2e1f614b7d --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/KnowledgePlatform/jobs/CassandraRestore/config.xml @@ -0,0 +1,67 @@ + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + remote + <font color=teal size=2>enter the host name.</font> + cassandra + false + + + artifact_version + <font color=teal size=2>Specify the artifact version to restore</font> + + false + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-learning-platform.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/backup/cassandra-restore/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/KnowledgePlatform/jobs/ElasticsearchBackup/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/KnowledgePlatform/jobs/ElasticsearchBackup/config.xml new file mode 100644 index 0000000000..6a596bd083 --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/KnowledgePlatform/jobs/ElasticsearchBackup/config.xml @@ -0,0 +1,53 @@ + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + remote + <font color=teal size=2>enter any one host name or ip if it is a cluster</font> + + false + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-learning-platform.git + + + + + ${public_repo_branch} + + + false + + + + pipelines/backup/elasticsearch/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/KnowledgePlatform/jobs/ElasticsearchRestore/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/KnowledgePlatform/jobs/ElasticsearchRestore/config.xml new file mode 100644 index 0000000000..76be767bbb --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/KnowledgePlatform/jobs/ElasticsearchRestore/config.xml @@ -0,0 +1,61 @@ + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + host + <font color=teal size=2>enter any one host name or ip if it is a cluster</font> + + false + + + SNAPSHOT_NUMBER + <font color=teal size=2>Enter Snapshot number to restore. +curl command to get snapshot number: +curl http://localhost:9200/_snapshot/azurebackup/_all, Parse the json and get the valid snapshot number to restore</font> + + false + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-learning-platform.git + + + + + ${public_repo_branch} + + + false + + + + pipelines/backup/elasticsearch-restore/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4jBackup/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4jBackup/config.xml new file mode 100644 index 0000000000..08d200a985 --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4jBackup/config.xml @@ -0,0 +1,43 @@ + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + 2 + + + https://github.com/project-sunbird/sunbird-learning-platform.git + + + + + ${public_repo_branch} + + + false + + + + pipelines/backup/neo4j/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4jRestore/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4jRestore/config.xml new file mode 100644 index 0000000000..79b8319556 --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4jRestore/config.xml @@ -0,0 +1,85 @@ + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + neo4j_restore_gzip_file_name + + + false + + + neo4j_restore_azure_storage_account_name + + + false + + + neo4j_restore_azure_storage_access_key + + + false + + + neo4j_restore_azure_container_name + + neo4j-backup + false + + + hosts + + learning-neo4j-node1 + false + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-learning-platform.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/backup/neo4j-restore/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/config.xml b/deploy/jenkins/jobs/Provision/config.xml new file mode 100644 index 0000000000..6fe3ca0b64 --- /dev/null +++ b/deploy/jenkins/jobs/Provision/config.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + All + false + false + + + + + + + + false + + + + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/config.xml new file mode 100644 index 0000000000..6fe3ca0b64 --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/dev/config.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + All + false + false + + + + + + + + false + + + + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/config.xml new file mode 100644 index 0000000000..6fe3ca0b64 --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/config.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + All + false + false + + + + + + + + false + + + + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Cassandra/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Cassandra/config.xml new file mode 100644 index 0000000000..ca3d7874c7 --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Cassandra/config.xml @@ -0,0 +1,50 @@ + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/provision/cassandra/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/JenkinsSlave/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/JenkinsSlave/config.xml new file mode 100644 index 0000000000..a57333f87e --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/JenkinsSlave/config.xml @@ -0,0 +1,60 @@ + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + jenkins_host + <font color=teal size=2>Provide the IP of Jenkins host</font> + + false + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/provision/jenkins-slave/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Kafka/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Kafka/config.xml new file mode 100644 index 0000000000..8233536e76 --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Kafka/config.xml @@ -0,0 +1,50 @@ + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + {public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/provision/kafka/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Keycloak/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Keycloak/config.xml new file mode 100644 index 0000000000..ab4f8b91e0 --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Keycloak/config.xml @@ -0,0 +1,50 @@ + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/provision/keycloak/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Log_ES/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Log_ES/config.xml new file mode 100644 index 0000000000..31388c0319 --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Log_ES/config.xml @@ -0,0 +1,50 @@ + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/provision/log-es/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Postgres/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Postgres/config.xml new file mode 100644 index 0000000000..3b3747b527 --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Postgres/config.xml @@ -0,0 +1,50 @@ + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/provision/postgres/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/PostgresDbUpdate/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/PostgresDbUpdate/config.xml new file mode 100644 index 0000000000..48928e45f2 --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/PostgresDbUpdate/config.xml @@ -0,0 +1,50 @@ + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/provision/postgres-db-update/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Registry/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Registry/config.xml new file mode 100644 index 0000000000..9cd23bf2c8 --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Registry/config.xml @@ -0,0 +1,50 @@ + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/provision/registry/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Secor/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Secor/config.xml new file mode 100644 index 0000000000..23f7a7aab5 --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Secor/config.xml @@ -0,0 +1,50 @@ + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/provision/secor/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/config.xml new file mode 100644 index 0000000000..6fe3ca0b64 --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/config.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + All + false + false + + + + + + + + false + + + + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/AnalyticsAPI/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/AnalyticsAPI/config.xml new file mode 100644 index 0000000000..daeb780bbd --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/AnalyticsAPI/config.xml @@ -0,0 +1,57 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/provision/analytics-api/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/AnalyticsSecor/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/AnalyticsSecor/config.xml new file mode 100644 index 0000000000..a0de40ab90 --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/AnalyticsSecor/config.xml @@ -0,0 +1,56 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + false + false + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/provision/secor/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/AnalyticsSpark/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/AnalyticsSpark/config.xml new file mode 100644 index 0000000000..9aea1868e4 --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/AnalyticsSpark/config.xml @@ -0,0 +1,57 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/provision/spark/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/Cassandra/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/Cassandra/config.xml new file mode 100644 index 0000000000..b71487d9a9 --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/Cassandra/config.xml @@ -0,0 +1,57 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/provision/cassandra/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/InfluxDB/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/InfluxDB/config.xml new file mode 100644 index 0000000000..d3dcbb10b8 --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/InfluxDB/config.xml @@ -0,0 +1,56 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + false + false + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/provision/influxdb/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/Kafka/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/Kafka/config.xml new file mode 100644 index 0000000000..410e68cb69 --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/Kafka/config.xml @@ -0,0 +1,57 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/provision/kafka/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/Kibana/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/Kibana/config.xml new file mode 100644 index 0000000000..38316772f0 --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/Kibana/config.xml @@ -0,0 +1,57 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/provision/kibana/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/Postgres/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/Postgres/config.xml new file mode 100644 index 0000000000..33e61fb3d7 --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/Postgres/config.xml @@ -0,0 +1,56 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + false + false + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/provision/postgres-lpa/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/TelemetrySearch/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/TelemetrySearch/config.xml new file mode 100644 index 0000000000..9177aaa04b --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/TelemetrySearch/config.xml @@ -0,0 +1,57 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/provision/telemetry-elasticsearch/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/Yarn/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/Yarn/config.xml new file mode 100644 index 0000000000..9bf7797e3c --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/Yarn/config.xml @@ -0,0 +1,57 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/provision/yarn/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/Zookeeper/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/Zookeeper/config.xml new file mode 100644 index 0000000000..b7f1d5683a --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/Zookeeper/config.xml @@ -0,0 +1,57 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/provision/zookeeper/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/config.xml new file mode 100644 index 0000000000..6fe3ca0b64 --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/config.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + All + false + false + + + + + + + + false + + + + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Cassandra/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Cassandra/config.xml new file mode 100644 index 0000000000..fc508c35b7 --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Cassandra/config.xml @@ -0,0 +1,60 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-learning-platform.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/provision/cassandra/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/CompositeSearch/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/CompositeSearch/config.xml new file mode 100644 index 0000000000..feb5022a94 --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/CompositeSearch/config.xml @@ -0,0 +1,61 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-learning-platform.git + + + + + ${public_repo_branch} + + + false + + + + true + true + + 0 + false + + + + pipelines/provision/composite-search/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Kafka/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Kafka/config.xml new file mode 100644 index 0000000000..d5fb2cad06 --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Kafka/config.xml @@ -0,0 +1,61 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-learning-platform.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/provision/kafka/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Learning/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Learning/config.xml new file mode 100644 index 0000000000..c7ceb39a5b --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Learning/config.xml @@ -0,0 +1,53 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-learning-platform.git + + + + + ${public_repo_branch} + + + false + + + + pipelines/provision/learning/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4j/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4j/config.xml new file mode 100644 index 0000000000..68a62ccf6d --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4j/config.xml @@ -0,0 +1,61 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-learning-platform.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/provision/neo4j/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Redis/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Redis/config.xml new file mode 100644 index 0000000000..cf7e9a532d --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Redis/config.xml @@ -0,0 +1,61 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-learning-platform.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/provision/redis/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Search/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Search/config.xml new file mode 100644 index 0000000000..064d2fb01a --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Search/config.xml @@ -0,0 +1,60 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-learning-platform.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/provision/search/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Yarn/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Yarn/config.xml new file mode 100644 index 0000000000..9fea61c153 --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Yarn/config.xml @@ -0,0 +1,61 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + This job is being provisioned from datapipeline directory. +This can be enabled and used for provisioning, if datapipeline jobs are not used. + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-learning-platform.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/provision/yarn/Jenkinsfile + false + + + true + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Zookeeper/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Zookeeper/config.xml new file mode 100644 index 0000000000..05d16c8bef --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Zookeeper/config.xml @@ -0,0 +1,61 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-learning-platform.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/provision/zookeeper/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/plugins.txt b/deploy/jenkins/plugins.txt new file mode 100644 index 0000000000..268a72a488 --- /dev/null +++ b/deploy/jenkins/plugins.txt @@ -0,0 +1,140 @@ +pipeline-milestone-step@1.3.1 +durable-task@1.28 +token-macro@2.5 +pipeline-stage-tags-metadata@1.3.4 +rebuild@1.29 +pipeline-input-step@2.9 +branch-api@2.1.1 +antisamy-markup-formatter@1.5 +pubsub-light@1.12 +conditional-buildstep@1.3.6 +ws-cleanup@0.36 +greenballs@1.15 +workflow-aggregator@2.6 +command-launcher@1.2 +workflow-durable-task-step@2.27 +favorite@2.3.2 +workflow-cps-global-lib@2.12 +email-ext@2.63 +cloudbees-folder@6.7 +blueocean-web@1.9.0 +pipeline-rest-api@2.10 +workflow-step-api@2.17 +plain-credentials@1.4 +trilead-api@1.0.1 +uno-choice@2.1 +scm-api@2.3.0 +credentials@2.1.18 +blueocean-pipeline-scm-api@1.9.0 +git-server@1.7 +github@1.29.3 +jacoco@3.0.4 +github-branch-source@2.4.1 +authentication-tokens@1.3 +display-url-api@2.3.0 +external-monitor-job@1.7 +docker-workflow@1.17 +junit@1.26.1 +resource-disposer@0.12 +script-security@1.49 +jobgenerator@1.22 +pipeline-model-declarative-agent@1.1.1 +pipeline-utility-steps@2.2.0 +javadoc@1.4 +pipeline-model-api@1.3.4 +thinBackup@1.9 +lockable-resources@2.3 +ssh-slaves@1.29.1 +handlebars@1.1.1 +jdk-tool@1.1 +pam-auth@1.4 +subversion@2.12.1 +blueocean-core-js@1.9.0 +maven-plugin@3.1.2 +github-api@1.95 +job-dsl@1.71 +code-coverage-api@1.0.5 +blueocean-pipeline-api-impl@1.9.0 +jackson2-api@2.9.7.1 +pipeline-build-step@2.7 +blueocean-rest@1.9.0 +s3@0.11.2 +backup@1.6.1 +ldap@1.20 +workflow-scm-step@2.7 +multiple-scms@0.6 +matrix-auth@2.3 +timestamper@1.8.10 +ssh-agent@1.17 +pipeline-model-extensions@1.3.4 +build-user-vars-plugin@1.5 +matrix-project@1.13 +pipeline-stage-step@2.3 +blueocean-jwt@1.9.0 +pipeline-graph-analysis@1.9 +workflow-support@2.24 +run-condition@1.2 +icon-shim@2.0.3 +git@3.9.1 +workflow-basic-steps@2.13 +gradle@1.29 +jenkins-design-language@1.9.0 +ant@1.9 +pipeline-stage-view@2.10 +git-client@2.7.4 +workflow-multibranch@2.20 +parameterized-trigger@2.35.2 +hudson-wsclean-plugin@1.0.5 +audit-trail@2.3 +blueocean-rest-impl@1.9.0 +pipeline-model-definition@1.3.4 +generic-webhook-trigger@1.50 +workflow-api@2.33 +ssh-credentials@1.14 +bouncycastle-api@2.17 +workflow-job@2.31 +credentials-binding@1.17 +docker-commons@1.13 +momentjs@1.1.1 +apache-httpcomponents-client-4-api@4.5.5-3.0 +blueocean-commons@1.9.0 +envinject-api@1.5 +cobertura@1.13 +aws-java-sdk@1.11.457 +ace-editor@1.1 +jsch@0.1.54.2 +config-file-provider@3.4.1 +mailer@1.22 +mapdb-api@1.0.9.0 +variant@1.1 +jquery-detached@1.2.1 +structs@1.17 +windows-slaves@1.3.1 +pipeline-github-lib@1.0 +jobConfigHistory@2.19 +build-timeout@1.19 +workflow-cps@2.61 +pipeline-maven@3.6.6 +build-pipeline-plugin@1.5.8 +copyartifact@1.41 +slack@2.3 +htmlpublisher@1.14 +metrics@3.1.2.10 +blueocean-dashboard@1.1.4 +blueocean-display-url@2.0 +blueocean-github-pipeline@1.1.4 +swarm@3.4 +blueocean-config@1.1.4 +delivery-pipeline-plugin@1.0.3 +blueocean-git-pipeline@1.1.4 +blueocean-autofavorite@1.0.0 +blueocean@1.1.4 +role-strategy@2.5.1 +blueocean-events@1.1.4 +jquery@1.11.2-0 +sse-gateway@1.15 +blueocean-i18n@1.1.4 +nodejs@1.2.2 +blueocean-personalization@1.1.4 +blueocean-pipeline-editor@0.2.0 +ansicolor@0.5.2 From 3237b6f64b68951835f5a6015fe5e08fbd85b11f Mon Sep 17 00:00:00 2001 From: msknext Date: Wed, 6 Feb 2019 16:29:08 +0530 Subject: [PATCH 0989/1345] feat: Adding jenkins setup files --- deploy/jenkins/jenkins-config-setup.sh | 11 +---------- deploy/jenkins/jenkins-server-setup.sh | 1 - .../jobs/ApplicationElasticsearchBackup/config.xml | 4 ++-- .../jobs/ApplicationElasticsearchRestore/config.xml | 4 ++-- pipelines/{deploy => backup}/es-backup/Jenkinsfile | 0 pipelines/{deploy => backup}/es-restore/Jenkinsfile | 0 6 files changed, 5 insertions(+), 15 deletions(-) rename pipelines/{deploy => backup}/es-backup/Jenkinsfile (100%) rename pipelines/{deploy => backup}/es-restore/Jenkinsfile (100%) diff --git a/deploy/jenkins/jenkins-config-setup.sh b/deploy/jenkins/jenkins-config-setup.sh index 3882a8355d..aa50795b3a 100755 --- a/deploy/jenkins/jenkins-config-setup.sh +++ b/deploy/jenkins/jenkins-config-setup.sh @@ -6,21 +6,12 @@ echo -e "\e[0;32m${bold}Jenkins configuration setup...${normal}" read -p 'Jenkins URL without http://: ' server read -p 'Jenkins admin username: ' username read -sp 'Jenkins admin Password: ' password -mkdir jenkins_config -cd jenkins_config - -echo -e "\e[0;32m${bold}Getting config files... ${normal}" -wget https://sunbirdpublic.blob.core.windows.net/installation/jenkins_config.zip -mkdir config_files -unzip -o jenkins_config.zip -d config_files -cd config_files - echo -e "\e[0;32m${bold}Copying config files to Jenkins ${normal}" cp -r jobs /var/lib/jenkins echo -e "\e[0;32m${bold}Installating plugins... ${normal}" -butler plugins i -s $server -u $username -p $password +./butler plugins i -s $server -u $username -p $password echo -e "\e[0;32m${bold}Go to manage jenkins -> Plugin manager -> Update center -> Check restart jenkins after installation${normal}" diff --git a/deploy/jenkins/jenkins-server-setup.sh b/deploy/jenkins/jenkins-server-setup.sh index 01ec8fd68d..1013501240 100755 --- a/deploy/jenkins/jenkins-server-setup.sh +++ b/deploy/jenkins/jenkins-server-setup.sh @@ -51,7 +51,6 @@ echo -e "\e[0;32m${bold}Creating bashrc for jenkins user ${normal}" cp /etc/skel/.bashrc /var/lib/jenkins echo -e "\e[0;32m${bold}Getting jenkins config script for next steps${normal}" -wget https://sunbirdpublic.blob.core.windows.net/installation/jenkins-config-setup.sh mv jenkins-config-setup.sh /var/lib/jenkins chown jenkins:jenkins /var/lib/jenkins/jenkins-config-setup.sh chmod 755 /var/lib/jenkins/jenkins-config-setup.sh diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/ApplicationElasticsearchBackup/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/ApplicationElasticsearchBackup/config.xml index cd5cc3c94a..ff31ba71a6 100644 --- a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/ApplicationElasticsearchBackup/config.xml +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/ApplicationElasticsearchBackup/config.xml @@ -42,9 +42,9 @@ - pipelines/deploy/es-backup/Jenkinsfile + pipelines/backup/es-backup/Jenkinsfile false false - \ No newline at end of file + diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/ApplicationElasticsearchRestore/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/ApplicationElasticsearchRestore/config.xml index 5470ca69d8..71f6ef2c8c 100644 --- a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/ApplicationElasticsearchRestore/config.xml +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/ApplicationElasticsearchRestore/config.xml @@ -42,9 +42,9 @@ - pipelines/deploy/es-restore/Jenkinsfile + pipelines/backup/es-restore/Jenkinsfile false false - \ No newline at end of file + diff --git a/pipelines/deploy/es-backup/Jenkinsfile b/pipelines/backup/es-backup/Jenkinsfile similarity index 100% rename from pipelines/deploy/es-backup/Jenkinsfile rename to pipelines/backup/es-backup/Jenkinsfile diff --git a/pipelines/deploy/es-restore/Jenkinsfile b/pipelines/backup/es-restore/Jenkinsfile similarity index 100% rename from pipelines/deploy/es-restore/Jenkinsfile rename to pipelines/backup/es-restore/Jenkinsfile From 97eda8c26d2386490e6afc0db2be924a7c1982dc Mon Sep 17 00:00:00 2001 From: harshavardhnc Date: Wed, 6 Feb 2019 16:37:01 +0530 Subject: [PATCH 0990/1345] Issue #00 fix: removing swarm manager draining --- ansible/setup-dockerswarm.yml | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/ansible/setup-dockerswarm.yml b/ansible/setup-dockerswarm.yml index 09868911cb..5f005bf43d 100644 --- a/ansible/setup-dockerswarm.yml +++ b/ansible/setup-dockerswarm.yml @@ -52,19 +52,6 @@ - shell: "docker swarm join --token {{hostvars[groups['swarm-manager-1'][0]].managertoken}} {{hostvars[groups['swarm-manager-1'][0]].swarmmaster}}:2377" when: "docker_info.stdout.find('Swarm: active') == -1" -- name: Drain Swarm Managers if not same node for manager and worker - hosts: swarm-manager - become: yes - gather_facts: yes - tasks: - - shell: docker node update --availability active $(hostname) - when: - - groups['swarm-nodes']|length==1 - - groups['swarm-manager']==groups['swarm-nodes'] - register: result - - shell: docker node update --availability drain $(hostname) - when: result is skipped - - name: Create network on manager hosts: swarm-nodes:swarm-manager become: yes From 2f99a7d36baf540fa9ab09ac1781d660d829a617 Mon Sep 17 00:00:00 2001 From: msknext Date: Wed, 6 Feb 2019 16:41:03 +0530 Subject: [PATCH 0991/1345] feat: Adding jenkins setup files --- deploy/jenkins/jenkins-config-setup.sh | 10 ++++---- deploy/jenkins/jenkins-server-setup.sh | 32 +++++++++++++------------- 2 files changed, 21 insertions(+), 21 deletions(-) diff --git a/deploy/jenkins/jenkins-config-setup.sh b/deploy/jenkins/jenkins-config-setup.sh index aa50795b3a..c07213911f 100755 --- a/deploy/jenkins/jenkins-config-setup.sh +++ b/deploy/jenkins/jenkins-config-setup.sh @@ -7,11 +7,11 @@ read -p 'Jenkins URL without http://: ' server read -p 'Jenkins admin username: ' username read -sp 'Jenkins admin Password: ' password -echo -e "\e[0;32m${bold}Copying config files to Jenkins ${normal}" -cp -r jobs /var/lib/jenkins +echo -e "\n\e[0;32m${bold}Copying config files to Jenkins ${normal}" +rsync -r jobs /var/lib/jenkins/jobs +chown -R jenkins:jenkins /var/lib/jenkins/jobs -echo -e "\e[0;32m${bold}Installating plugins... ${normal}" +echo -e "\n\e[0;32m${bold}Installating plugins... ${normal}" ./butler plugins i -s $server -u $username -p $password -echo -e "\e[0;32m${bold}Go to manage jenkins -> Plugin manager -> Update center -> Check restart jenkins after installation${normal}" - +echo -e "\n\e[0;32m${bold}Go to manage jenkins -> Plugin manager -> Update center -> Check restart jenkins after installation${normal}" diff --git a/deploy/jenkins/jenkins-server-setup.sh b/deploy/jenkins/jenkins-server-setup.sh index 1013501240..608b124a60 100755 --- a/deploy/jenkins/jenkins-server-setup.sh +++ b/deploy/jenkins/jenkins-server-setup.sh @@ -1,58 +1,58 @@ #!/bin/bash bold=$(tput bold) normal=$(tput sgr0) -echo -e "\e[0;32m${bold}Installating JDK8${normal}\n" +echo -e "\n\e[0;32m${bold}Installating JDK8${normal}\n" apt-get install -y openjdk-8-jdk-headless -echo -e "\e[0;32m${bold}Installating Jenkins${normal}" +echo -e "\n\e[0;32m${bold}Installating Jenkins${normal}" wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add - echo "deb https://pkg.jenkins.io/debian binary/" >> /etc/apt/sources.list apt-get update apt-get install -y jenkins -echo -e "\e[0;32m${bold}Starting Jenkins service${normal}" +echo -e "\n\e[0;32m${bold}Starting Jenkins service${normal}" service jenkins start -echo -e "\e[0;32m${bold}Installating PIP${normal}" +echo -e "\n\e[0;32m${bold}Installating PIP${normal}" apt-get install -y python-pip -echo -e "\e[0;32m${bold}Installating Maven${normal}" +echo -e "\n\e[0;32m${bold}Installating Maven${normal}" apt-get install -y maven -echo -e "\e[0;32m${bold}Installating Git ${normal}" +echo -e "\n\e[0;32m${bold}Installating Git ${normal}" apt-get install -y git -echo -e "\e[0;32m${bold}Installating zip unzip${normal}" +echo -e "\n\e[0;32m${bold}Installating zip unzip${normal}" apt-get install -y unzip zip -echo -e "\e[0;32m${bold}Installating JQ${normal}" +echo -e "\n\e[0;32m${bold}Installating JQ${normal}" apt-get install -y jq -echo -e "\e[0;32m${bold}Installating Simplejson${normal}" +echo -e "\n\e[0;32m${bold}Installating Simplejson${normal}" apt-get install -y python-simplejson -echo -e "\e[0;32m${bold}Installating Docker${normal}" +echo -e "\n\e[0;32m${bold}Installating Docker${normal}" apt-get install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" apt-get update apt-get install -y docker-ce docker-ce-cli containerd.io -echo -e "\e[0;32m${bold}Installating Ansible${normal}" +echo -e "\n\e[0;32m${bold}Installating Ansible${normal}" pip install ansible==2.5.0 -echo -e "\e[0;32m${bold}Installating Docker-py${normal}" +echo -e "\n\e[0;32m${bold}Installating Docker-py${normal}" pip install docker-py -echo -e "\e[0;32m${bold}Adding jenkins user to docker group${normal}" +echo -e "\n\e[0;32m${bold}Adding jenkins user to docker group${normal}" usermod -G docker jenkins -echo -e "\e[0;32m${bold}Creating bashrc for jenkins user ${normal}" +echo -e "\n\e[0;32m${bold}Creating bashrc for jenkins user ${normal}" cp /etc/skel/.bashrc /var/lib/jenkins -echo -e "\e[0;32m${bold}Getting jenkins config script for next steps${normal}" +echo -e "\n\e[0;32m${bold}Getting jenkins config script for next steps${normal}" mv jenkins-config-setup.sh /var/lib/jenkins chown jenkins:jenkins /var/lib/jenkins/jenkins-config-setup.sh chmod 755 /var/lib/jenkins/jenkins-config-setup.sh -echo -e "\e[0;32m${bold}Installation complete. Please go to your jenkins URL and continue setup${normal}" +echo -e "\n\e[0;32m${bold}Installation complete. Please go to your jenkins URL and continue setup${normal}" From 53c0554a302b68949a2dd2ccd5749e7f64c41c6f Mon Sep 17 00:00:00 2001 From: "kaliraja.ramasamy" Date: Thu, 7 Feb 2019 11:13:59 +0530 Subject: [PATCH 0992/1345] Issue #0000 fix: DO-470 added the apt-update --- deploy/jenkins/jenkins-server-setup.sh | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/deploy/jenkins/jenkins-server-setup.sh b/deploy/jenkins/jenkins-server-setup.sh index 608b124a60..d4d8bc9d52 100755 --- a/deploy/jenkins/jenkins-server-setup.sh +++ b/deploy/jenkins/jenkins-server-setup.sh @@ -1,6 +1,10 @@ #!/bin/bash bold=$(tput bold) normal=$(tput sgr0) + +echo -e "\n\e[0;32m${bold}Updating the apt repo${normal}\n" +apt-get update + echo -e "\n\e[0;32m${bold}Installating JDK8${normal}\n" apt-get install -y openjdk-8-jdk-headless From 9998853cba14d68ec82aaac0ac3fe8008a6fe335 Mon Sep 17 00:00:00 2001 From: G33tha Date: Thu, 7 Feb 2019 14:29:04 +0530 Subject: [PATCH 0993/1345] Update jenkins-config-setup.sh --- deploy/jenkins/jenkins-config-setup.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deploy/jenkins/jenkins-config-setup.sh b/deploy/jenkins/jenkins-config-setup.sh index c07213911f..bb9b6ff002 100755 --- a/deploy/jenkins/jenkins-config-setup.sh +++ b/deploy/jenkins/jenkins-config-setup.sh @@ -8,7 +8,7 @@ read -p 'Jenkins admin username: ' username read -sp 'Jenkins admin Password: ' password echo -e "\n\e[0;32m${bold}Copying config files to Jenkins ${normal}" -rsync -r jobs /var/lib/jenkins/jobs +rsync -r jobs /var/lib/jenkins/ chown -R jenkins:jenkins /var/lib/jenkins/jobs echo -e "\n\e[0;32m${bold}Installating plugins... ${normal}" From 18d002735153300b05c557f92c8bef069491f121 Mon Sep 17 00:00:00 2001 From: harshavardhnc Date: Thu, 7 Feb 2019 17:36:05 +0530 Subject: [PATCH 0994/1345] Issue #00 feat: monitoring for lp/dp --- ansible/monitoring.yml | 9 +++++++++ .../roles/prometheus_config/tasks/main.yml | 19 +++++++++++++++++++ 2 files changed, 28 insertions(+) create mode 100644 ansible/roles/prometheus_config/tasks/main.yml diff --git a/ansible/monitoring.yml b/ansible/monitoring.yml index f9641507e0..013d245820 100644 --- a/ansible/monitoring.yml +++ b/ansible/monitoring.yml @@ -72,3 +72,12 @@ - vm-agents-processexporter tags: - metrics-exporter + +- hosts: swarm-bootstrap-manager + become: yes + vars_files: + - ['{{inventory_dir}}/secrets.yml','secrets/{{env}}.yml'] + roles + - prometheus_config + tags: + - lp_dp_monitoring diff --git a/ansible/roles/prometheus_config/tasks/main.yml b/ansible/roles/prometheus_config/tasks/main.yml new file mode 100644 index 0000000000..f34a43f03e --- /dev/null +++ b/ansible/roles/prometheus_config/tasks/main.yml @@ -0,0 +1,19 @@ +--- + +- name: Update node exporter ip + replace: + path: /opt/docker/stacks/monitor/config/prometheus.yml + regexp: ':9091]$' + replace: ":9091{% for ip in groups['all'] %}','{{ ip }}:9091{% endfor %}']" + + +- name: Update process exporter ip + replace: + path: /opt/docker/stacks/monitor/config/prometheus.yml + regexp: ':1111]$' + replace: ":1111{% for ip in groups['process-exporter'] %}','{{ ip }}:1111{% endfor %}']" + + +- name: Restart prometheus stack + shell: "docker service update monitor_prometheus" + From f04fb6241bc2fc572239a826b2716b5f7bd5ddf3 Mon Sep 17 00:00:00 2001 From: harshavardhnc Date: Thu, 7 Feb 2019 18:02:59 +0530 Subject: [PATCH 0995/1345] Issue #00 feat: monitoring for lp/dp --- ansible/roles/prometheus_config/tasks/main.yml | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/ansible/roles/prometheus_config/tasks/main.yml b/ansible/roles/prometheus_config/tasks/main.yml index f34a43f03e..7b153f22d7 100644 --- a/ansible/roles/prometheus_config/tasks/main.yml +++ b/ansible/roles/prometheus_config/tasks/main.yml @@ -14,6 +14,11 @@ replace: ":1111{% for ip in groups['process-exporter'] %}','{{ ip }}:1111{% endfor %}']" -- name: Restart prometheus stack - shell: "docker service update monitor_prometheus" +- name: Remove docker config + shell: "docker config rm prometheus.yml" +- name: Create docker config + shell: "docker config create /opt/docker/stacks/monitor/config/prometheus.yml prometheus.yml" + +- name: Deploy monitoring + shell: "docker stack deploy -c /opt/docker/stacks/monitor/stack/monitor.yml monitor" From ad52cbbd80fe162ceb6453a34e26fc35ef321feb Mon Sep 17 00:00:00 2001 From: harshavardhnc Date: Thu, 7 Feb 2019 18:09:20 +0530 Subject: [PATCH 0996/1345] Issue #00 feat: monitoring for lp/dp --- pipelines/deploy/monitor/KnowledgePlatform/Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pipelines/deploy/monitor/KnowledgePlatform/Jenkinsfile b/pipelines/deploy/monitor/KnowledgePlatform/Jenkinsfile index dc90ac567f..e406ae1ebf 100644 --- a/pipelines/deploy/monitor/KnowledgePlatform/Jenkinsfile +++ b/pipelines/deploy/monitor/KnowledgePlatform/Jenkinsfile @@ -20,7 +20,7 @@ node() { module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() ansiblePlaybook = "${currentWs}/ansible/monitoring.yml" - ansibleExtraArgs = "--tags metrics-exporter --vault-password-file /run/secrets/vault-pass -v" + ansibleExtraArgs = "--tags metrics-exporter, lp_dp_monitoring --vault-password-file /run/secrets/vault-pass -v" values.put('currentWs', currentWs) values.put('env', envDir) values.put('module', module) From aaafbd242ac656205bdfc586c381ef33dde1ed96 Mon Sep 17 00:00:00 2001 From: harshavardhnc Date: Thu, 7 Feb 2019 18:14:41 +0530 Subject: [PATCH 0997/1345] Issue #00 feat: monitoring for lp/dp --- .../roles/{prometheus_config => lp_dp_monitoring}/tasks/main.yml | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename ansible/roles/{prometheus_config => lp_dp_monitoring}/tasks/main.yml (100%) diff --git a/ansible/roles/prometheus_config/tasks/main.yml b/ansible/roles/lp_dp_monitoring/tasks/main.yml similarity index 100% rename from ansible/roles/prometheus_config/tasks/main.yml rename to ansible/roles/lp_dp_monitoring/tasks/main.yml From 0718a52b9380dea7d208b062f955b9d92611333c Mon Sep 17 00:00:00 2001 From: harshavardhnc Date: Thu, 7 Feb 2019 18:19:07 +0530 Subject: [PATCH 0998/1345] Issue #00 feat: monitoring for lp/dp --- ansible/monitoring.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/monitoring.yml b/ansible/monitoring.yml index 013d245820..df3e9d8372 100644 --- a/ansible/monitoring.yml +++ b/ansible/monitoring.yml @@ -78,6 +78,6 @@ vars_files: - ['{{inventory_dir}}/secrets.yml','secrets/{{env}}.yml'] roles - - prometheus_config + - lp_dp_monitoring tags: - lp_dp_monitoring From e01f14b676ca69ad42b2010f923499e1e18257b7 Mon Sep 17 00:00:00 2001 From: harshavardhnc Date: Thu, 7 Feb 2019 18:24:21 +0530 Subject: [PATCH 0999/1345] Issue #00 feat: monitoring for lp/dp --- pipelines/deploy/monitor/KnowledgePlatform/Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pipelines/deploy/monitor/KnowledgePlatform/Jenkinsfile b/pipelines/deploy/monitor/KnowledgePlatform/Jenkinsfile index e406ae1ebf..d0e8af6bfa 100644 --- a/pipelines/deploy/monitor/KnowledgePlatform/Jenkinsfile +++ b/pipelines/deploy/monitor/KnowledgePlatform/Jenkinsfile @@ -20,7 +20,7 @@ node() { module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() ansiblePlaybook = "${currentWs}/ansible/monitoring.yml" - ansibleExtraArgs = "--tags metrics-exporter, lp_dp_monitoring --vault-password-file /run/secrets/vault-pass -v" + ansibleExtraArgs = "--tags lp_dp_monitoring --vault-password-file /run/secrets/vault-pass -v" values.put('currentWs', currentWs) values.put('env', envDir) values.put('module', module) From 25d00482f74d4f29c706867831d3fb3f77300019 Mon Sep 17 00:00:00 2001 From: harshavardhnc Date: Thu, 7 Feb 2019 18:26:52 +0530 Subject: [PATCH 1000/1345] Issue #00 feat: monitoring for lp/dp --- ansible/monitoring.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/monitoring.yml b/ansible/monitoring.yml index df3e9d8372..43117ccce9 100644 --- a/ansible/monitoring.yml +++ b/ansible/monitoring.yml @@ -77,7 +77,7 @@ become: yes vars_files: - ['{{inventory_dir}}/secrets.yml','secrets/{{env}}.yml'] - roles + roles: - lp_dp_monitoring tags: - lp_dp_monitoring From 8ff9f2a53894af24343aac1cf3c80296ac284098 Mon Sep 17 00:00:00 2001 From: harshavardhnc Date: Thu, 7 Feb 2019 19:09:05 +0530 Subject: [PATCH 1001/1345] Issue #00 feat: monitoring for lp/dp --- ansible/roles/lp_dp_monitoring/tasks/main.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ansible/roles/lp_dp_monitoring/tasks/main.yml b/ansible/roles/lp_dp_monitoring/tasks/main.yml index 7b153f22d7..ad5f8c4363 100644 --- a/ansible/roles/lp_dp_monitoring/tasks/main.yml +++ b/ansible/roles/lp_dp_monitoring/tasks/main.yml @@ -3,14 +3,14 @@ - name: Update node exporter ip replace: path: /opt/docker/stacks/monitor/config/prometheus.yml - regexp: ':9091]$' - replace: ":9091{% for ip in groups['all'] %}','{{ ip }}:9091{% endfor %}']" + regexp: ":9101']$" + replace: ":9101{% for ip in groups['all'] %}','{{ ip }}:9101{% endfor %}']" - name: Update process exporter ip replace: path: /opt/docker/stacks/monitor/config/prometheus.yml - regexp: ':1111]$' + regexp: ":1111']$" replace: ":1111{% for ip in groups['process-exporter'] %}','{{ ip }}:1111{% endfor %}']" From c0a46b3f4ef98d5c27cb1583d7b32228db149692 Mon Sep 17 00:00:00 2001 From: Manzarul Date: Thu, 7 Feb 2019 22:11:00 +0530 Subject: [PATCH 1002/1345] Issues #SB-00 fix:onboarding badge content link and unlink api --- ansible/roles/kong-api/defaults/main.yml | 28 ++++++++---------------- 1 file changed, 9 insertions(+), 19 deletions(-) diff --git a/ansible/roles/kong-api/defaults/main.yml b/ansible/roles/kong-api/defaults/main.yml index 6285ef35f5..d2c16c2b27 100644 --- a/ansible/roles/kong-api/defaults/main.yml +++ b/ansible/roles/kong-api/defaults/main.yml @@ -3665,36 +3665,26 @@ kong_apis: config.limit_by: credential - name: request-size-limiting config.allowed_payload_size: "{{ small_request_size_limit }}" - - name: "updateUserPrivate" - request_path: "{{ user_service_prefix }}/private/v1/update" - upstream_url: "{{ learning_service_url }}/private/user/v1/update" + - name: "contentBadgeLink" + request_path: "{{ badge_service_prefix }}/v1/content/link" + upstream_url: "{{ learning_service_url }}/badging/v1/content/link" strip_request_path: true plugins: - {name: 'jwt'} - {name: 'cors'} - "{{ statsd_pulgin }}" - {name: 'acl', config.whitelist: 'publicUser'} - - {name: 'rate-limiting', config.policy: "local", config.hour: "{{ large_rate_limit_per_hour }}"} + - {name: 'rate-limiting', config.policy: "local", config.hour: "{{ medium_rate_limit_per_hour }}"} - {name: 'request-size-limiting', config.allowed_payload_size: "{{ small_request_size_limit }}" } - - name: "getUserByExternalId" - request_path: "{{ user_service_prefix }}/private/v1/read/" - upstream_url: "{{ learning_service_url }}/private/user/v1/read/" + - name: "contentBadgeUnLink" + request_path: "{{ badge_service_prefix }}/v1/content/unlink" + upstream_url: "{{ learning_service_url }}/badging/v1/content/unlink" strip_request_path: true plugins: - {name: 'jwt'} - {name: 'cors'} - "{{ statsd_pulgin }}" - {name: 'acl', config.whitelist: 'publicUser'} - - {name: 'rate-limiting', config.policy: "local", config.hour: "{{ large_rate_limit_per_hour }}"} + - {name: 'rate-limiting', config.policy: "local", config.hour: "{{ medium_rate_limit_per_hour }}"} - {name: 'request-size-limiting', config.allowed_payload_size: "{{ small_request_size_limit }}" } - - name: "assignprivateRole" - request_path: "{{ user_service_prefix }}/private/v1/assign/role" - upstream_url: "{{ learning_service_url }}/private/user/v1/assign/role" - strip_request_path: true - plugins: - - {name: 'jwt'} - - {name: 'cors'} - - "{{ statsd_pulgin }}" - - {name: 'acl', config.whitelist: 'publicUser'} - - {name: 'rate-limiting', config.policy: "local", config.hour: "{{ large_rate_limit_per_hour }}"} - - {name: 'request-size-limiting', config.allowed_payload_size: "{{ small_request_size_limit }}" } \ No newline at end of file + \ No newline at end of file From 4de9bc92cd1f2aa67b5304143d704fdb02ce4ac4 Mon Sep 17 00:00:00 2001 From: harshavardhnc Date: Thu, 7 Feb 2019 22:31:32 +0530 Subject: [PATCH 1003/1345] Issue #00 feat: monitoring for lp/dp --- ansible/roles/lp_dp_monitoring/tasks/main.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ansible/roles/lp_dp_monitoring/tasks/main.yml b/ansible/roles/lp_dp_monitoring/tasks/main.yml index ad5f8c4363..b47aa55a06 100644 --- a/ansible/roles/lp_dp_monitoring/tasks/main.yml +++ b/ansible/roles/lp_dp_monitoring/tasks/main.yml @@ -14,6 +14,9 @@ replace: ":1111{% for ip in groups['process-exporter'] %}','{{ ip }}:1111{% endfor %}']" +- name: Remove monitoring stack + shell: "docker stack rm monitor" + - name: Remove docker config shell: "docker config rm prometheus.yml" From 112c2bf28f50db3b655ac8f17029bc4e9f371d71 Mon Sep 17 00:00:00 2001 From: msknext Date: Fri, 8 Feb 2019 09:56:10 +0530 Subject: [PATCH 1004/1345] Issue #000: Removed slack notification --- pipelines/backup/cassandra-backup/Jenkinsfile | 7 ------- pipelines/backup/es-backup/Jenkinsfile | 6 ------ pipelines/backup/logger-es-backup/Jenkinsfile | 6 ------ 3 files changed, 19 deletions(-) diff --git a/pipelines/backup/cassandra-backup/Jenkinsfile b/pipelines/backup/cassandra-backup/Jenkinsfile index 024db38b4b..1ac28af413 100644 --- a/pipelines/backup/cassandra-backup/Jenkinsfile +++ b/pipelines/backup/cassandra-backup/Jenkinsfile @@ -35,15 +35,8 @@ node() { ansible_playbook_run(values) } } - - post { - failure { - slackSend channel: '#devops-team', color: 'danger', message: "Build Failed - ${env.JOB_NAME} ${env.BUILD_NUMBER} (<${env.BUILD_URL}|Open>)" - } - } } catch (err) { throw err } } - diff --git a/pipelines/backup/es-backup/Jenkinsfile b/pipelines/backup/es-backup/Jenkinsfile index fdecb147bd..dab0df34a1 100644 --- a/pipelines/backup/es-backup/Jenkinsfile +++ b/pipelines/backup/es-backup/Jenkinsfile @@ -35,12 +35,6 @@ node() { ansible_playbook_run(values) } } - - post { - failure { - slackSend channel: '#devops-team', color: 'danger', message: "Build Failed - ${env.JOB_NAME} ${env.BUILD_NUMBER} (<${env.BUILD_URL}|Open>)" - } - } } catch (err) { throw err diff --git a/pipelines/backup/logger-es-backup/Jenkinsfile b/pipelines/backup/logger-es-backup/Jenkinsfile index 9b8fe5eac0..a73ccb9e49 100644 --- a/pipelines/backup/logger-es-backup/Jenkinsfile +++ b/pipelines/backup/logger-es-backup/Jenkinsfile @@ -35,12 +35,6 @@ node() { ansible_playbook_run(values) } } - - post { - failure { - slackSend channel: '#devops-team', color: 'danger', message: "Build Failed - ${env.JOB_NAME} ${env.BUILD_NUMBER} (<${env.BUILD_URL}|Open>)" - } - } } catch (err) { throw err From 4906a6080a2f841d6e923b2d937629975f65de03 Mon Sep 17 00:00:00 2001 From: msknext Date: Fri, 8 Feb 2019 10:04:11 +0530 Subject: [PATCH 1005/1345] Issue #000: Changing valut file location --- pipelines/backup/postgresql-backup/Jenkinsfile | 2 +- pipelines/backup/postgresql-restore/Jenkinsfile | 2 +- pipelines/backup/prometheus-backup/Jenkinsfile | 2 +- pipelines/deploy/adminutils/Jenkinsfile | 2 +- pipelines/deploy/api-manager/Jenkinsfile | 2 +- pipelines/deploy/badger/Jenkinsfile | 2 +- pipelines/deploy/cassandra-deploy/Jenkinsfile | 4 ++-- pipelines/deploy/config-service/Jenkinsfile | 2 +- pipelines/deploy/content/Jenkinsfile | 2 +- pipelines/deploy/keycloak-realm/Jenkinsfile | 2 +- pipelines/deploy/keycloak/Jenkinsfile | 2 +- pipelines/deploy/learner/Jenkinsfile | 2 +- pipelines/deploy/player/Jenkinsfile | 2 +- pipelines/deploy/proxy/Jenkinsfile | 2 +- pipelines/deploy/telemetry/Jenkinsfile | 2 +- pipelines/provision/jenkins-slave/Jenkinsfile | 2 +- pipelines/provision/registry/Jenkinsfile | 2 +- pipelines/upload/artifacts/Jenkinsfile | 2 +- pipelines/upload/docker/Jenkinsfile | 2 +- 19 files changed, 20 insertions(+), 20 deletions(-) diff --git a/pipelines/backup/postgresql-backup/Jenkinsfile b/pipelines/backup/postgresql-backup/Jenkinsfile index 33d8465c19..12689dbfb4 100644 --- a/pipelines/backup/postgresql-backup/Jenkinsfile +++ b/pipelines/backup/postgresql-backup/Jenkinsfile @@ -20,7 +20,7 @@ node() { jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() currentWs = sh(returnStdout: true, script: 'pwd').trim() ansiblePlaybook = "${currentWs}/ansible/postgresql-backup.yml" - ansibleExtraArgs = "--vault-password-file /home/ops/vault" + ansibleExtraArgs = "--vault-password-file /run/secrets/vault-pass" values.put('currentWs', currentWs) values.put('env', envDir) values.put('module', module) diff --git a/pipelines/backup/postgresql-restore/Jenkinsfile b/pipelines/backup/postgresql-restore/Jenkinsfile index 48fd1d9723..1c4d40a1d2 100644 --- a/pipelines/backup/postgresql-restore/Jenkinsfile +++ b/pipelines/backup/postgresql-restore/Jenkinsfile @@ -22,7 +22,7 @@ node() { jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() currentWs = sh(returnStdout: true, script: 'pwd').trim() ansiblePlaybook = "${currentWs}/ansible/postgresql-restore.yml" - ansibleExtraArgs = "--vault-password-file /home/ops/vault" + ansibleExtraArgs = "--vault-password-file /run/secrets/vault-pass" values.put('currentWs', currentWs) values.put('env', envDir) values.put('module', module) diff --git a/pipelines/backup/prometheus-backup/Jenkinsfile b/pipelines/backup/prometheus-backup/Jenkinsfile index 04bad6c10a..15db16848b 100644 --- a/pipelines/backup/prometheus-backup/Jenkinsfile +++ b/pipelines/backup/prometheus-backup/Jenkinsfile @@ -20,7 +20,7 @@ node() { jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() currentWs = sh(returnStdout: true, script: 'pwd').trim() ansiblePlaybook = "${currentWs}/ansible/prometheus-backup.yml" - ansibleExtraArgs = "--vault-password-file /home/ops/vault" + ansibleExtraArgs = "--vault-password-file /run/secrets/vault-pass" values.put('currentWs', currentWs) values.put('env', envDir) values.put('module', module) diff --git a/pipelines/deploy/adminutils/Jenkinsfile b/pipelines/deploy/adminutils/Jenkinsfile index 9a89709dc7..617ab56449 100644 --- a/pipelines/deploy/adminutils/Jenkinsfile +++ b/pipelines/deploy/adminutils/Jenkinsfile @@ -9,7 +9,7 @@ node() { values = docker_params() currentWs = sh(returnStdout: true, script: 'pwd').trim() ansiblePlaybook = "$currentWs/ansible/deploy.yml" - ansibleExtraArgs = "--tags \"stack-adminutil\" --extra-vars \"hub_org=$hub_org image_name=$values.image_name image_tag=$values.image_tag\" --vault-password-file /home/ops/vault" + ansibleExtraArgs = "--tags \"stack-adminutil\" --extra-vars \"hub_org=$hub_org image_name=$values.image_name image_tag=$values.image_tag\" --vault-password-file /run/secrets/vault-pass" values.put('currentWs', currentWs) values.put('ansiblePlaybook', ansiblePlaybook) values.put('ansibleExtraArgs', ansibleExtraArgs) diff --git a/pipelines/deploy/api-manager/Jenkinsfile b/pipelines/deploy/api-manager/Jenkinsfile index 0d3b0d05b3..0d6e95d653 100644 --- a/pipelines/deploy/api-manager/Jenkinsfile +++ b/pipelines/deploy/api-manager/Jenkinsfile @@ -9,7 +9,7 @@ node() { values = docker_params() currentWs = sh(returnStdout: true, script: 'pwd').trim() ansiblePlaybook = "$currentWs/ansible/deploy.yml" - ansibleExtraArgs = "--tags \"stack-api-manager\" --vault-password-file /home/ops/vault" + ansibleExtraArgs = "--tags \"stack-api-manager\" --vault-password-file /run/secrets/vault-pass" values.put('currentWs', currentWs) values.put('ansiblePlaybook', ansiblePlaybook) values.put('ansibleExtraArgs', ansibleExtraArgs) diff --git a/pipelines/deploy/badger/Jenkinsfile b/pipelines/deploy/badger/Jenkinsfile index cd5f592c64..05d57ad13b 100644 --- a/pipelines/deploy/badger/Jenkinsfile +++ b/pipelines/deploy/badger/Jenkinsfile @@ -10,7 +10,7 @@ node() { values = docker_params() currentWs = sh(returnStdout: true, script: 'pwd').trim() ansiblePlaybook = "$currentWs/ansible/deploy-badger.yml" - ansibleExtraArgs = "--extra-vars \"hub_org=$hub_org image_name=$values.image_name image_tag=$values.image_tag service_name=badger-service\" --vault-password-file /home/ops/vault" + ansibleExtraArgs = "--extra-vars \"hub_org=$hub_org image_name=$values.image_name image_tag=$values.image_tag service_name=badger-service\" --vault-password-file /run/secrets/vault-pass" values.put('currentWs', currentWs) values.put('ansiblePlaybook', ansiblePlaybook) values.put('ansibleExtraArgs', ansibleExtraArgs) diff --git a/pipelines/deploy/cassandra-deploy/Jenkinsfile b/pipelines/deploy/cassandra-deploy/Jenkinsfile index 634f5d96ce..d978e909d0 100644 --- a/pipelines/deploy/cassandra-deploy/Jenkinsfile +++ b/pipelines/deploy/cassandra-deploy/Jenkinsfile @@ -25,7 +25,7 @@ node() { ansibleExtraArgs = """\ --extra-vars "artifact=${artifact} artifact_path=${currentWs}/${artifact}" - --vault-password-file /home/ops/vault + --vault-password-file /run/secrets/vault-pass """.stripIndent().replace("\n", " ") values.put('ansiblePlaybook', ansiblePlaybook) values.put('ansibleExtraArgs', ansibleExtraArgs) @@ -41,7 +41,7 @@ node() { unzip ${artifact} """ ansiblePlaybook = "${currentWs}/ansible/cassandra-deploy.yml" - ansibleExtraArgs = "--vault-password-file /home/ops/vault" + ansibleExtraArgs = "--vault-password-file /run/secrets/vault-pass" values.put('ansiblePlaybook', ansiblePlaybook) values.put('ansibleExtraArgs', ansibleExtraArgs) println values diff --git a/pipelines/deploy/config-service/Jenkinsfile b/pipelines/deploy/config-service/Jenkinsfile index b16456d098..9606d57fd9 100644 --- a/pipelines/deploy/config-service/Jenkinsfile +++ b/pipelines/deploy/config-service/Jenkinsfile @@ -10,7 +10,7 @@ node() { values = docker_params() currentWs = sh(returnStdout: true, script: 'pwd').trim() ansiblePlaybook = "$currentWs/ansible/deploy.yml" - ansibleExtraArgs = "--tags \"stack-sunbird\" --extra-vars \"hub_org=$hub_org image_name=$values.image_name image_tag=$values.image_tag service_name=config-service deploy_config=True\" --vault-password-file /home/ops/vault" + ansibleExtraArgs = "--tags \"stack-sunbird\" --extra-vars \"hub_org=$hub_org image_name=$values.image_name image_tag=$values.image_tag service_name=config-service deploy_config=True\" --vault-password-file /run/secrets/vault-pass" values.put('currentWs', currentWs) values.put('ansiblePlaybook', ansiblePlaybook) values.put('ansibleExtraArgs', ansibleExtraArgs) diff --git a/pipelines/deploy/content/Jenkinsfile b/pipelines/deploy/content/Jenkinsfile index 788d3e5768..c6cd5da040 100644 --- a/pipelines/deploy/content/Jenkinsfile +++ b/pipelines/deploy/content/Jenkinsfile @@ -10,7 +10,7 @@ node() { values = docker_params() currentWs = sh(returnStdout: true, script: 'pwd').trim() ansiblePlaybook = "$currentWs/ansible/deploy.yml" - ansibleExtraArgs = "--tags \"stack-sunbird\" --extra-vars \"hub_org=$hub_org image_name=$values.image_name image_tag=$values.image_tag service_name=content-service deploy_content=True\" --vault-password-file /home/ops/vault" + ansibleExtraArgs = "--tags \"stack-sunbird\" --extra-vars \"hub_org=$hub_org image_name=$values.image_name image_tag=$values.image_tag service_name=content-service deploy_content=True\" --vault-password-file /run/secrets/vault-pass" values.put('currentWs', currentWs) values.put('ansiblePlaybook', ansiblePlaybook) values.put('ansibleExtraArgs', ansibleExtraArgs) diff --git a/pipelines/deploy/keycloak-realm/Jenkinsfile b/pipelines/deploy/keycloak-realm/Jenkinsfile index 2798e1e955..9f19d7234b 100644 --- a/pipelines/deploy/keycloak-realm/Jenkinsfile +++ b/pipelines/deploy/keycloak-realm/Jenkinsfile @@ -26,7 +26,7 @@ node() { ansibleExtraArgs = """\ --extra-vars "artifact=${artifact} artifact_path=${currentWs}/${artifact}" - --vault-password-file /home/ops/vault + --vault-password-file /run/secrets/vault-pass """.stripIndent().replace("\n", " ") values.put('ansiblePlaybook', ansiblePlaybook) values.put('ansibleExtraArgs', ansibleExtraArgs) diff --git a/pipelines/deploy/keycloak/Jenkinsfile b/pipelines/deploy/keycloak/Jenkinsfile index 44e223ce8e..ca4529d369 100644 --- a/pipelines/deploy/keycloak/Jenkinsfile +++ b/pipelines/deploy/keycloak/Jenkinsfile @@ -26,7 +26,7 @@ node() { ansibleExtraArgs = """\ --extra-vars "artifact=${artifact} artifact_path=${currentWs}/${artifact}" - --vault-password-file /home/ops/vault + --vault-password-file /run/secrets/vault-pass """.stripIndent().replace("\n", " ") values.put('ansiblePlaybook', ansiblePlaybook) values.put('ansibleExtraArgs', ansibleExtraArgs) diff --git a/pipelines/deploy/learner/Jenkinsfile b/pipelines/deploy/learner/Jenkinsfile index 63053907f9..0dfd0027ef 100644 --- a/pipelines/deploy/learner/Jenkinsfile +++ b/pipelines/deploy/learner/Jenkinsfile @@ -10,7 +10,7 @@ node() { values = docker_params() currentWs = sh(returnStdout: true, script: 'pwd').trim() ansiblePlaybook = "$currentWs/ansible/deploy.yml" - ansibleExtraArgs = "--tags \"stack-sunbird\" --extra-vars \"hub_org=$hub_org image_name=$values.image_name image_tag=$values.image_tag service_name=learner-service deploy_learner=True\" --vault-password-file /home/ops/vault" + ansibleExtraArgs = "--tags \"stack-sunbird\" --extra-vars \"hub_org=$hub_org image_name=$values.image_name image_tag=$values.image_tag service_name=learner-service deploy_learner=True\" --vault-password-file /run/secrets/vault-pass" values.put('currentWs', currentWs) values.put('ansiblePlaybook', ansiblePlaybook) values.put('ansibleExtraArgs', ansibleExtraArgs) diff --git a/pipelines/deploy/player/Jenkinsfile b/pipelines/deploy/player/Jenkinsfile index fd7587eace..33d4060bec 100644 --- a/pipelines/deploy/player/Jenkinsfile +++ b/pipelines/deploy/player/Jenkinsfile @@ -9,7 +9,7 @@ node() { values = docker_params() currentWs = sh(returnStdout: true, script: 'pwd').trim() ansiblePlaybook = "$currentWs/ansible/deploy.yml" - ansibleExtraArgs = "--tags \"stack-sunbird\" --extra-vars \"hub_org=$hub_org image_name=$values.image_name image_tag=$values.image_tag service_name=player deploy_stack=True\" --vault-password-file /home/ops/vault" + ansibleExtraArgs = "--tags \"stack-sunbird\" --extra-vars \"hub_org=$hub_org image_name=$values.image_name image_tag=$values.image_tag service_name=player deploy_stack=True\" --vault-password-file /run/secrets/vault-pass" values.put('currentWs', currentWs) values.put('ansiblePlaybook', ansiblePlaybook) values.put('ansibleExtraArgs', ansibleExtraArgs) diff --git a/pipelines/deploy/proxy/Jenkinsfile b/pipelines/deploy/proxy/Jenkinsfile index a31566fa2a..5abe753697 100644 --- a/pipelines/deploy/proxy/Jenkinsfile +++ b/pipelines/deploy/proxy/Jenkinsfile @@ -10,7 +10,7 @@ node() { values = docker_params() currentWs = sh(returnStdout: true, script: 'pwd').trim() ansiblePlaybook = "$currentWs/ansible/deploy.yml" - ansibleExtraArgs = "--tags \"stack-proxy\" --extra-vars \"hub_org=$hub_org image_name=$values.image_name image_tag=$values.image_tag\" --vault-password-file /home/ops/vault" + ansibleExtraArgs = "--tags \"stack-proxy\" --extra-vars \"hub_org=$hub_org image_name=$values.image_name image_tag=$values.image_tag\" --vault-password-file /run/secrets/vault-pass" values.put('currentWs', currentWs) values.put('ansiblePlaybook', ansiblePlaybook) values.put('ansibleExtraArgs', ansibleExtraArgs) diff --git a/pipelines/deploy/telemetry/Jenkinsfile b/pipelines/deploy/telemetry/Jenkinsfile index fae6e7a795..3a09211fbb 100644 --- a/pipelines/deploy/telemetry/Jenkinsfile +++ b/pipelines/deploy/telemetry/Jenkinsfile @@ -10,7 +10,7 @@ node() { values = docker_params() currentWs = sh(returnStdout: true, script: 'pwd').trim() ansiblePlaybook = "$currentWs/ansible/deploy.yml" - ansibleExtraArgs = "--tags \"stack-sunbird\" --extra-vars \"hub_org=$hub_org image_name=$values.image_name image_tag=$values.image_tag service_name=telemetry-service deploy_telemetry=True\" --vault-password-file /home/ops/vault" + ansibleExtraArgs = "--tags \"stack-sunbird\" --extra-vars \"hub_org=$hub_org image_name=$values.image_name image_tag=$values.image_tag service_name=telemetry-service deploy_telemetry=True\" --vault-password-file /run/secrets/vault-pass" values.put('currentWs', currentWs) values.put('ansiblePlaybook', ansiblePlaybook) values.put('ansibleExtraArgs', ansibleExtraArgs) diff --git a/pipelines/provision/jenkins-slave/Jenkinsfile b/pipelines/provision/jenkins-slave/Jenkinsfile index 59bcf55422..3c30a8f050 100644 --- a/pipelines/provision/jenkins-slave/Jenkinsfile +++ b/pipelines/provision/jenkins-slave/Jenkinsfile @@ -21,7 +21,7 @@ node() { jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() currentWs = sh(returnStdout: true, script: 'pwd').trim() ansiblePlaybook = "${currentWs}/devops/jenkins-slave.yml" - ansibleExtraArgs = "--tags jenkins-slave --extra-vars \"jenkins_host=${params.jenkins_host}\" --vault-password-file /home/ops/vault" + ansibleExtraArgs = "--tags jenkins-slave --extra-vars \"jenkins_host=${params.jenkins_host}\" --vault-password-file /run/secrets/vault-pass" values.put('currentWs', currentWs) values.put('env', envDir) values.put('module', module) diff --git a/pipelines/provision/registry/Jenkinsfile b/pipelines/provision/registry/Jenkinsfile index 314089e5d9..47f00ab2f0 100644 --- a/pipelines/provision/registry/Jenkinsfile +++ b/pipelines/provision/registry/Jenkinsfile @@ -32,7 +32,7 @@ node() { module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() ansiblePlaybook = "${currentWs}/ansible/registry.yml" - ansibleExtraArgs = "--vault-password-file /home/ops/vault" + ansibleExtraArgs = "--vault-password-file /run/secrets/vault-pass" values.put('currentWs', currentWs) values.put('env', envDir) values.put('module', module) diff --git a/pipelines/upload/artifacts/Jenkinsfile b/pipelines/upload/artifacts/Jenkinsfile index 39f3f97e4a..2e1048c230 100644 --- a/pipelines/upload/artifacts/Jenkinsfile +++ b/pipelines/upload/artifacts/Jenkinsfile @@ -12,7 +12,7 @@ node() { if(params.artifact_source == "ArtifactRepo") { ansiblePlaybook = "${currentWs}/ansible/artifacts-upload.yml" - ansibleExtraArgs = "--extra-vars \"artifact=${artifact} artifact_path=${currentWs}/${artifact}\" --vault-password-file /home/ops/vault" + ansibleExtraArgs = "--extra-vars \"artifact=${artifact} artifact_path=${currentWs}/${artifact}\" --vault-password-file /run/secrets/vault-pass" values.put('currentWs', currentWs) values.put('ansiblePlaybook', ansiblePlaybook) values.put('ansibleExtraArgs', ansibleExtraArgs) diff --git a/pipelines/upload/docker/Jenkinsfile b/pipelines/upload/docker/Jenkinsfile index 88804698d5..b32326373b 100644 --- a/pipelines/upload/docker/Jenkinsfile +++ b/pipelines/upload/docker/Jenkinsfile @@ -11,7 +11,7 @@ node(){ if(params.artifact_source == "ArtifactRepo") { currentWs = sh(returnStdout: true, script: 'pwd').trim() ansiblePlaybook = "$currentWs/ansible/docker_image_push.yml" - ansibleExtraArgs = "--extra-vars \"hub_org=${hub_org} image_name=${values.image_name} image_tag=${values.image_tag}\" --vault-password-file /home/ops/vault" + ansibleExtraArgs = "--extra-vars \"hub_org=${hub_org} image_name=${values.image_name} image_tag=${values.image_tag}\" --vault-password-file /run/secrets/vault-pass" values.put('currentWs', currentWs) values.put('ansiblePlaybook', ansiblePlaybook) values.put('ansibleExtraArgs', ansibleExtraArgs) From 5b1fc82f1d574b0590a7076790a798f5d6479071 Mon Sep 17 00:00:00 2001 From: harshavardhnc Date: Fri, 8 Feb 2019 10:11:05 +0530 Subject: [PATCH 1006/1345] Issue #00 feat: monitoring for lp/dp --- ansible/monitoring.yml | 2 +- .../{lp_dp_monitoring => prometheus_config}/tasks/main.yml | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename ansible/roles/{lp_dp_monitoring => prometheus_config}/tasks/main.yml (100%) diff --git a/ansible/monitoring.yml b/ansible/monitoring.yml index 43117ccce9..74b04dd86d 100644 --- a/ansible/monitoring.yml +++ b/ansible/monitoring.yml @@ -78,6 +78,6 @@ vars_files: - ['{{inventory_dir}}/secrets.yml','secrets/{{env}}.yml'] roles: - - lp_dp_monitoring + - prometheus_config tags: - lp_dp_monitoring diff --git a/ansible/roles/lp_dp_monitoring/tasks/main.yml b/ansible/roles/prometheus_config/tasks/main.yml similarity index 100% rename from ansible/roles/lp_dp_monitoring/tasks/main.yml rename to ansible/roles/prometheus_config/tasks/main.yml From eb3ddae282a4d77cba3938c4d256be7fe6ad58d7 Mon Sep 17 00:00:00 2001 From: harshavardhnc Date: Fri, 8 Feb 2019 10:16:24 +0530 Subject: [PATCH 1007/1345] Issue #00 feat: monitoring for lp/dp --- .../monitor/DataPipeline/.Jenkinsfile.swp | Bin 0 -> 12288 bytes .../deploy/monitor/DataPipeline/Jenkinsfile | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 pipelines/deploy/monitor/DataPipeline/.Jenkinsfile.swp diff --git a/pipelines/deploy/monitor/DataPipeline/.Jenkinsfile.swp b/pipelines/deploy/monitor/DataPipeline/.Jenkinsfile.swp new file mode 100644 index 0000000000000000000000000000000000000000..830845a7c17305dd7e6874e7fb05653e77bd66d7 GIT binary patch literal 12288 zcmeI2&uP#;j5Y|( zT9CkzCJ>n|`{L;vrMY4u=I}%2dpa|H<47aH!y^GCfCP{L5AYCgUT+Nq1gGCTpc}%eRek=T%Evv-EJ+X#7tESWfpf znBVJ}JpGnvRNaulw6rzZ9*SlZ#O|aq+01wcobbEos~nk{8s4@SDFqjH*Wv^B+oRzQ zv!Iu0#y(ln6NwmWVV7+bnp?+Cc=8(-a}4y4A>%u@{R0}l+;?qo(%k;d<_io;*H z)8EgolaBZ93;Vp4?}ou>oD?3+*X=AU94WqPnj$ins8JD{rP@=zgr^Mi+JauVUR$VF z=aX5J`2%#MOcczW+Hx5Md z5G1iIs91!LS?PnhN;kszyAKzgCD-vX5KcW4e}NC zEpZSpU@l+NLzzj}>(7u;Bk(<{m=p(BScR1G7M-uIUaS9Bu2gDku=~trR45b|HcF*% z@HP!QSIUdSw&EDuLaj3F8)vK5R+i=~Ljen8;$2-Sm#ag*(p+jZstee-XtHd~?@GmQ RC|7lRz->?PEjV|b{0A3W)aC#H literal 0 HcmV?d00001 diff --git a/pipelines/deploy/monitor/DataPipeline/Jenkinsfile b/pipelines/deploy/monitor/DataPipeline/Jenkinsfile index dc90ac567f..d0e8af6bfa 100644 --- a/pipelines/deploy/monitor/DataPipeline/Jenkinsfile +++ b/pipelines/deploy/monitor/DataPipeline/Jenkinsfile @@ -20,7 +20,7 @@ node() { module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() ansiblePlaybook = "${currentWs}/ansible/monitoring.yml" - ansibleExtraArgs = "--tags metrics-exporter --vault-password-file /run/secrets/vault-pass -v" + ansibleExtraArgs = "--tags lp_dp_monitoring --vault-password-file /run/secrets/vault-pass -v" values.put('currentWs', currentWs) values.put('env', envDir) values.put('module', module) From 3943038efe27423717db00af4b83f404e6d3e5c6 Mon Sep 17 00:00:00 2001 From: harshavardhnc Date: Fri, 8 Feb 2019 10:38:44 +0530 Subject: [PATCH 1008/1345] Issue #00 feat: monitoring for lp/dp --- ansible/roles/prometheus_config/tasks/main.yml | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/ansible/roles/prometheus_config/tasks/main.yml b/ansible/roles/prometheus_config/tasks/main.yml index b47aa55a06..c84f2f1f9f 100644 --- a/ansible/roles/prometheus_config/tasks/main.yml +++ b/ansible/roles/prometheus_config/tasks/main.yml @@ -21,7 +21,11 @@ shell: "docker config rm prometheus.yml" - name: Create docker config - shell: "docker config create /opt/docker/stacks/monitor/config/prometheus.yml prometheus.yml" - + command: "docker config create prometheus.yml prometheus.yml" + args: + chdir: /opt/docker/stacks/monitor/config/ + - name: Deploy monitoring - shell: "docker stack deploy -c /opt/docker/stacks/monitor/stack/monitor.yml monitor" + command: "docker stack deploy -c monitor.yml monitor" + args: + chdir: /opt/docker/stacks/monitor/stack/ From b215170769bbcf558e84165f579f3e5f2a31a756 Mon Sep 17 00:00:00 2001 From: harshavardhnc Date: Fri, 8 Feb 2019 10:44:57 +0530 Subject: [PATCH 1009/1345] Issue #00 feat: monitoring for lp/dp --- ansible/roles/prometheus_config/tasks/main.yml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/ansible/roles/prometheus_config/tasks/main.yml b/ansible/roles/prometheus_config/tasks/main.yml index c84f2f1f9f..0cbcb22925 100644 --- a/ansible/roles/prometheus_config/tasks/main.yml +++ b/ansible/roles/prometheus_config/tasks/main.yml @@ -21,9 +21,7 @@ shell: "docker config rm prometheus.yml" - name: Create docker config - command: "docker config create prometheus.yml prometheus.yml" - args: - chdir: /opt/docker/stacks/monitor/config/ + shell: "cd /opt/docker/stacks/monitor/config/ && docker config create prometheus.yml prometheus.yml" - name: Deploy monitoring command: "docker stack deploy -c monitor.yml monitor" From f2e4bad0d1986625b5819a91dac3c3b932f7585e Mon Sep 17 00:00:00 2001 From: harshavardhnc Date: Fri, 8 Feb 2019 10:48:38 +0530 Subject: [PATCH 1010/1345] Issue #00 fix: monitoring for lp/dp --- ansible/roles/prometheus_config/tasks/main.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/ansible/roles/prometheus_config/tasks/main.yml b/ansible/roles/prometheus_config/tasks/main.yml index 0cbcb22925..21d6784b5a 100644 --- a/ansible/roles/prometheus_config/tasks/main.yml +++ b/ansible/roles/prometheus_config/tasks/main.yml @@ -19,9 +19,12 @@ - name: Remove docker config shell: "docker config rm prometheus.yml" + ignore_errors: yes - name: Create docker config - shell: "cd /opt/docker/stacks/monitor/config/ && docker config create prometheus.yml prometheus.yml" + command: "docker config create prometheus.yml prometheus.yml" + args: + chdir: /opt/docker/stacks/monitor/config/ - name: Deploy monitoring command: "docker stack deploy -c monitor.yml monitor" From 6a9bc15332ba97d49e20e21b55d83c9b37f4ce61 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Thu, 7 Feb 2019 10:08:21 +0530 Subject: [PATCH 1011/1345] Issue #000 feat: Deleting trailing whitespaces jenkins-pipeline --- ansible/inventory/env/group_vars/env.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/ansible/inventory/env/group_vars/env.yml b/ansible/inventory/env/group_vars/env.yml index 9b0154a97c..e4541df8af 100644 --- a/ansible/inventory/env/group_vars/env.yml +++ b/ansible/inventory/env/group_vars/env.yml @@ -134,8 +134,8 @@ keyclaok_deployer_sudo_pass: "{{core_vault_keyclaok_deployer_sudo_pass}}" keycloak_password: "{{core_vault_keycloak_password}}" #Content Service Vars sunbird_content_repo_api_base_url: "http://{{learningservice_ip}}:8080/learning-service" -sunbird_content_repo_api_key: "{{ core_vault_sunbird_ekstep_api_key }}" -sunbird_search_service_api_key: "{{ core_vault_sunbird_ekstep_api_key }}" +sunbird_content_repo_api_key: "{{ core_vault_sunbird_ekstep_api_key }}" +sunbird_search_service_api_key: "{{ core_vault_sunbird_ekstep_api_key }}" sunbird_dial_repo_api_base_url: "{{sunbird_ekstep_api_base_url}}" sunbird_dial_repo_api_key: "{{ core_vault_sunbird_ekstep_api_key }}" sunbird_plugin_repo_api_base_url: "{{sunbird_ekstep_api_base_url}}" @@ -300,7 +300,7 @@ ep_es_host: "{{ groups['telemetry-search-cluster'][0] }}" #For kibana pipeli encryption_service_user: encryption encryption_db_name: encryption encryption_db_dialect: postgres -sunbird_allowed_login: +sunbird_allowed_login: sunbird_course_batch_notification_enabled: 'true' sunbird_device_register_api: "{{api_proxy_name}}/v3/device/register/" sunbird_course_batch_notification_signature: sunbird @@ -358,7 +358,7 @@ postgresql_databases: - name: "{{analytics_postgres_database}}" #######App ES - + app_es_etc_cluster_name: "{{env}}" app_es_etc_discovery_zen_minimum_master_nodes: "{{groups['es']| length | int}}" app_es_snapshot_host: "{{ groups['es'][0] }}" @@ -490,7 +490,7 @@ vault_route: "{{core_vault_route}}" vault_sms_method_type: "{{core_vault_sms_method_type}}" -## +## config_refresh_interval: 10 config_service_enabled: false From 182ca01234512875ce3f04f1284c31c22368e9b9 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Thu, 7 Feb 2019 10:09:46 +0530 Subject: [PATCH 1012/1345] Issue #000 feat: Adding es_port and mail_server_port --- ansible/inventory/env/group_vars/env.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ansible/inventory/env/group_vars/env.yml b/ansible/inventory/env/group_vars/env.yml index e4541df8af..c79f804078 100644 --- a/ansible/inventory/env/group_vars/env.yml +++ b/ansible/inventory/env/group_vars/env.yml @@ -480,6 +480,8 @@ badger_replicas: 1 badger_reservation_memory: 500MB badger_limit_memory: 500MB +sunbird_es_port: 9300 +mail_server_port: 587 # not required sunbird_image_storage_url: "" From ec32a4c50b503e7b1f9192e62d9e32bf6a9f83cf Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Thu, 7 Feb 2019 10:29:53 +0530 Subject: [PATCH 1013/1345] Issue #000 feat: Adding banner jenkins-pipeline --- ansible/inventory/env/group_vars/env.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ansible/inventory/env/group_vars/env.yml b/ansible/inventory/env/group_vars/env.yml index c79f804078..3d5ea30fef 100644 --- a/ansible/inventory/env/group_vars/env.yml +++ b/ansible/inventory/env/group_vars/env.yml @@ -1,3 +1,5 @@ +###################### Core ############################ + # ENVIRONMENT CONFIGURATION proxy_site_key: "{{ core_vault_proxy_site_key }}" #SSL certificate's site.key file contents. More details in this wiki: {{proto}}://github.com/project-sunbird/sunbird-commons/wiki/Updating-SSL-certificates-in-Sunbird-Proxy-service proxy_site_crt: "{{ core_vault_proxy_site_crt }}" #SSL certificate's site.crt file contents. More details in this wiki: {{proto}}://github.com/project-sunbird/sunbird-commons/wiki/Updating-SSL-certificates-in-Sunbird-Proxy-service From a7789c6a2441399b893e7bd88197a458457e546e Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Fri, 8 Feb 2019 11:05:14 +0530 Subject: [PATCH 1014/1345] Issue #000 feat: Changing keycloak account details jenkins-pipeline --- ansible/inventory/env/group_vars/env.yml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/ansible/inventory/env/group_vars/env.yml b/ansible/inventory/env/group_vars/env.yml index 3d5ea30fef..6b33c3060a 100644 --- a/ansible/inventory/env/group_vars/env.yml +++ b/ansible/inventory/env/group_vars/env.yml @@ -65,6 +65,14 @@ sunbird_mail_server_password: "{{ mail_server_password }}" #SMTP server pasword sunbird_sso_username: "{{ core_vault_sunbird_sso_username }}" sunbird_sso_password: "{{ core_vault_sunbird_sso_password }}" keycloak_admin_initial_password: "{{ core_vault_keyclaok_deployer_sudo_pass }}" +keycloak_build_src: "keycloak_build" +keycloak_ver: "keycloak-3.2.0.Final" +keycloak_sms_provider_build: "keycloak-email-phone-autthenticator-1.0-SNAPSHOT.jar" +keycloak_sms_provider_templates_src: "templates.tar.gz" +keycloak_sms_provider_templates_dest: "/opt/keycloak/themes/sunbird/login" +keycloak_ekstep_sunbird_login_theme_file: "login.tar.gz" +keycloak_ekstep_sunbird_login_theme_dest: "/opt/keycloak/themes/sunbird/login" +keycloak_postgresql: "postgresql-9.4.1212.jar" ## Content Repo configuration From d6b03d27b70da0dd1293ba441dbd30951ef44a2d Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Fri, 8 Feb 2019 11:14:17 +0530 Subject: [PATCH 1015/1345] Issue #000: Updated keycloak deployment Jenkinsfile --- pipelines/deploy/keycloak/Jenkinsfile | 60 ++++++++------------------- 1 file changed, 18 insertions(+), 42 deletions(-) diff --git a/pipelines/deploy/keycloak/Jenkinsfile b/pipelines/deploy/keycloak/Jenkinsfile index ca4529d369..0ea38cf0ef 100644 --- a/pipelines/deploy/keycloak/Jenkinsfile +++ b/pipelines/deploy/keycloak/Jenkinsfile @@ -12,51 +12,27 @@ node() { checkout scm } - ansiColor('xterm') { - values = lp_dp_params() - stage('get artifact') { - currentWs = sh(returnStdout: true, script: 'pwd').trim() - artifact = values.artifact_name + ":" + values.artifact_version - values.put('currentWs', currentWs) - if (params.artifact_source == "Remote") { - println(ANSI_BOLD + ANSI_YELLOW + '''\ - Option chosen is Remote, ignoring any previously copied artifacts and new artifacts will be downloaded from remote source - '''.stripIndent().replace("\n", " ") + ANSI_NORMAL) - ansiblePlaybook = "${currentWs}/devops/artifacts-download.yml" - ansibleExtraArgs = """\ - --extra-vars "artifact=${artifact} - artifact_path=${currentWs}/${artifact}" - --vault-password-file /run/secrets/vault-pass - """.stripIndent().replace("\n", " ") - values.put('ansiblePlaybook', ansiblePlaybook) - values.put('ansibleExtraArgs', ansibleExtraArgs) - ansible_playbook_run(values) - } else { - println(ANSI_BOLD + ANSI_YELLOW + '''\ - Option chosen is Local, using the artifacts copied - '''.stripIndent().replace("\n", " ") + ANSI_NORMAL) - } - } - stage('deploy artifact') { - sh """ - unzip ${artifact} - tar zxvf keycloak_build.tar.gz -C ansible - """ - ansiblePlaybook = "${currentWs}/ansible/keycloak.yml" - ansibleExtraArgs = "--tags deploy --vault-password-file /run/secrets/vault-pass" - values.put('ansiblePlaybook', ansiblePlaybook) - values.put('ansibleExtraArgs', ansibleExtraArgs) - println values - ansible_playbook_run(values) - - archiveArtifacts artifacts: "${artifact}", fingerprint: true, onlyIfSuccessful: true - archiveArtifacts artifacts: 'metadata.json', onlyIfSuccessful: true - currentBuild.description = "${values.artifact_version}" - } + ansiColor('xterm') { + stage('deploy') { + values = [:] + currentWs = sh(returnStdout: true, script: 'pwd').trim() + envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-3].trim() + module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() + jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() + ansiblePlaybook = "${currentWs}/ansible/keycloak.yml" + ansibleExtraArgs = "--tags deploy --vault-password-file /run/secrets/vault-pass" + values.put('currentWs', currentWs) + values.put('env', envDir) + values.put('module', module) + values.put('jobName', jobName) + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + println values + ansible_playbook_run(values) } + } } catch (err) { - currentBuild.result = "FAILURE" throw err } } From fa7f8fab48a67bf25de2afa8953ae0a109d8081f Mon Sep 17 00:00:00 2001 From: S M Y Date: Fri, 8 Feb 2019 11:36:57 +0530 Subject: [PATCH 1016/1345] Issue #000 : remove swap file --- .../monitor/DataPipeline/.Jenkinsfile.swp | Bin 12288 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 pipelines/deploy/monitor/DataPipeline/.Jenkinsfile.swp diff --git a/pipelines/deploy/monitor/DataPipeline/.Jenkinsfile.swp b/pipelines/deploy/monitor/DataPipeline/.Jenkinsfile.swp deleted file mode 100644 index 830845a7c17305dd7e6874e7fb05653e77bd66d7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12288 zcmeI2&uP#;j5Y|( zT9CkzCJ>n|`{L;vrMY4u=I}%2dpa|H<47aH!y^GCfCP{L5AYCgUT+Nq1gGCTpc}%eRek=T%Evv-EJ+X#7tESWfpf znBVJ}JpGnvRNaulw6rzZ9*SlZ#O|aq+01wcobbEos~nk{8s4@SDFqjH*Wv^B+oRzQ zv!Iu0#y(ln6NwmWVV7+bnp?+Cc=8(-a}4y4A>%u@{R0}l+;?qo(%k;d<_io;*H z)8EgolaBZ93;Vp4?}ou>oD?3+*X=AU94WqPnj$ins8JD{rP@=zgr^Mi+JauVUR$VF z=aX5J`2%#MOcczW+Hx5Md z5G1iIs91!LS?PnhN;kszyAKzgCD-vX5KcW4e}NC zEpZSpU@l+NLzzj}>(7u;Bk(<{m=p(BScR1G7M-uIUaS9Bu2gDku=~trR45b|HcF*% z@HP!QSIUdSw&EDuLaj3F8)vK5R+i=~Ljen8;$2-Sm#ag*(p+jZstee-XtHd~?@GmQ RC|7lRz->?PEjV|b{0A3W)aC#H From eb274d555f1a0130ad7ead6a8e06eb54b51c289b Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Fri, 8 Feb 2019 11:31:00 +0530 Subject: [PATCH 1017/1345] Issue #000 feat: Refactored variables --- ansible/inventory/env/group_vars/env.yml | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/ansible/inventory/env/group_vars/env.yml b/ansible/inventory/env/group_vars/env.yml index 6b33c3060a..9223ff2824 100644 --- a/ansible/inventory/env/group_vars/env.yml +++ b/ansible/inventory/env/group_vars/env.yml @@ -3,6 +3,20 @@ # ENVIRONMENT CONFIGURATION proxy_site_key: "{{ core_vault_proxy_site_key }}" #SSL certificate's site.key file contents. More details in this wiki: {{proto}}://github.com/project-sunbird/sunbird-commons/wiki/Updating-SSL-certificates-in-Sunbird-Proxy-service proxy_site_crt: "{{ core_vault_proxy_site_crt }}" #SSL certificate's site.crt file contents. More details in this wiki: {{proto}}://github.com/project-sunbird/sunbird-commons/wiki/Updating-SSL-certificates-in-Sunbird-Proxy-service +sunbird_environment: "{{env}}" # +content-service learner +sunbird_installation: "{{env}}" # +keycloak +sunbird_msg_sender: "{{env}}" +sunbird_instance: "{{env}}" +env_short_name: "{{env}}" + +# bootstrap.yml +core_vault_bootstrap_user: ops +core_vault_bootstrap_key_path: /var/run/secrets/ops_ssh_key + +## Learner service +sunbird_url_shortner_access_token: "" +sunbird_url_shortner_enable: 'false' +sunbird_keycloak_required_action_link_expiration_seconds: 2592000 ## Below passwords are used by DB install scripts when creating databases. Please use strong passwords. sunbird_pg_user: "{{core_vault_postgres_username}}" @@ -73,6 +87,8 @@ keycloak_sms_provider_templates_dest: "/opt/keycloak/themes/sunbird/login" keycloak_ekstep_sunbird_login_theme_file: "login.tar.gz" keycloak_ekstep_sunbird_login_theme_dest: "/opt/keycloak/themes/sunbird/login" keycloak_postgresql: "postgresql-9.4.1212.jar" +keycloak_api_management_username: admin +sunbird_auth_version: 1.0v ## Content Repo configuration @@ -142,6 +158,8 @@ application_postgres_database: quartz keycloak_postgres_database: keycloak keyclaok_deployer_sudo_pass: "{{core_vault_keyclaok_deployer_sudo_pass}}" keycloak_password: "{{core_vault_keycloak_password}}" +config_cache_ttl: 600 + #Content Service Vars sunbird_content_repo_api_base_url: "http://{{learningservice_ip}}:8080/learning-service" sunbird_content_repo_api_key: "{{ core_vault_sunbird_ekstep_api_key }}" From d98cd76bce89dc0ebe73f3c5951975765213a113 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Fri, 8 Feb 2019 11:40:47 +0530 Subject: [PATCH 1018/1345] Issue #000 feat: Removed bootstrap user --- ansible/inventory/env/group_vars/env.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ansible/inventory/env/group_vars/env.yml b/ansible/inventory/env/group_vars/env.yml index 9223ff2824..955b1c22bd 100644 --- a/ansible/inventory/env/group_vars/env.yml +++ b/ansible/inventory/env/group_vars/env.yml @@ -10,8 +10,8 @@ sunbird_instance: "{{env}}" env_short_name: "{{env}}" # bootstrap.yml -core_vault_bootstrap_user: ops -core_vault_bootstrap_key_path: /var/run/secrets/ops_ssh_key +bootstrap_user: ops +bootstrap_key_path: /run/secrets/ops_ssh_key ## Learner service sunbird_url_shortner_access_token: "" From 54c2f27fb04bd36a59bf1e13c665004140927919 Mon Sep 17 00:00:00 2001 From: msknext Date: Fri, 8 Feb 2019 06:37:12 +0000 Subject: [PATCH 1019/1345] Issue #000: Updating Jenkins config files --- .../jobs/dev/jobs/Core/config.xml | 4 +- .../jobs/dev/jobs/Core/jobs/Config/config.xml | 4 +- .../dev/jobs/Core/jobs/Keycloak/config.xml | 99 ------------------- .../DataPipeline/jobs/DataPipeline/config.xml | 1 - .../jenkins/jobs/Build/jobs/Core/config.xml | 2 +- .../Build/jobs/Core/jobs/Config/config.xml | 4 +- .../Build/jobs/Core/jobs/Keycloak/config.xml | 66 ------------- .../jobs/dev/jobs/Core/jobs/Config/config.xml | 4 +- .../dev/jobs/Core/jobs/Keycloak/config.xml | 88 ----------------- .../Neo4jElasticSearchSyncTool/config.xml | 4 +- .../jobs/SamzaTelemetrySchemas/config.xml | 4 +- .../Provision/jobs/dev/jobs/Core/config.xml | 2 +- .../jobs/Core/jobs/JenkinsSlave/config.xml | 4 +- .../{Log_ES => LogElasticSearch}/config.xml | 0 .../dev/jobs/Core/jobs/Registry/config.xml | 4 +- .../jobs/dev/jobs/Core/jobs/Secor/config.xml | 4 +- .../jobs/TelemetrySearch/config.xml | 2 +- .../jobs/Cassandra/config.xml | 4 +- .../jobs/CompositeSearch/config.xml | 4 +- .../KnowledgePlatform/jobs/Kafka/config.xml | 8 +- .../KnowledgePlatform/jobs/Yarn/config.xml | 3 +- .../jobs/Zookeeper/config.xml | 4 +- 22 files changed, 32 insertions(+), 287 deletions(-) delete mode 100644 deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Keycloak/config.xml delete mode 100644 deploy/jenkins/jobs/Build/jobs/Core/jobs/Keycloak/config.xml rename deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/{Log_ES => LogElasticSearch}/config.xml (100%) diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/config.xml index 8ea23c96f5..907032cec5 100644 --- a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/config.xml +++ b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/config.xml @@ -3,12 +3,12 @@ - + false - + diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Config/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Config/config.xml index 7d7a1f1a2f..ecc4488a08 100644 --- a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Config/config.xml +++ b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Config/config.xml @@ -9,7 +9,7 @@ - + <font color=red size=2><b>This jobs is currently disabled as it's not being used.</b></font> false @@ -94,5 +94,5 @@ false - false + true \ No newline at end of file diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Keycloak/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Keycloak/config.xml deleted file mode 100644 index d51ff37f98..0000000000 --- a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Keycloak/config.xml +++ /dev/null @@ -1,99 +0,0 @@ - - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - absolute_job_path - <font color=teal size=2>The metadata.json file of the last successful build will be copied from this job. Please specify the absolute path to the job.</font> - Build/Core/Keycloak - false - - - build_number - <font color=teal size=2>Specify the build number to copy the artifact from. Default is last successful build of the job</font> - lastSuccessfulBuild - false - - - artifact_source - <font color=teal size=2>Choose the artifact source</font> - - - ArtifactRepo - JenkinsJob - - - - - - - - - - /Build/Core/Keycloak - - SUCCESS - 0 - BLUE - true - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - pipelines/upload/artifacts/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/DataPipeline/jobs/DataPipeline/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/DataPipeline/jobs/DataPipeline/config.xml index 744ff44f85..6ac65314c8 100644 --- a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/DataPipeline/jobs/DataPipeline/config.xml +++ b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/DataPipeline/jobs/DataPipeline/config.xml @@ -71,7 +71,6 @@ https://github.com/project-sunbird/sunbird-data-pipeline.git - f37ad21f-744a-4817-9f5e-02f8ec620b39 diff --git a/deploy/jenkins/jobs/Build/jobs/Core/config.xml b/deploy/jenkins/jobs/Build/jobs/Core/config.xml index 6fe3ca0b64..68477b8ac7 100644 --- a/deploy/jenkins/jobs/Build/jobs/Core/config.xml +++ b/deploy/jenkins/jobs/Build/jobs/Core/config.xml @@ -3,7 +3,7 @@ - + diff --git a/deploy/jenkins/jobs/Build/jobs/Core/jobs/Config/config.xml b/deploy/jenkins/jobs/Build/jobs/Core/jobs/Config/config.xml index 49e4105641..6818350b2d 100644 --- a/deploy/jenkins/jobs/Build/jobs/Core/jobs/Config/config.xml +++ b/deploy/jenkins/jobs/Build/jobs/Core/jobs/Config/config.xml @@ -9,7 +9,7 @@ - + <font color=red size=2><b>This jobs is currently disabled as it's not being used.</b></font> false @@ -71,5 +71,5 @@ false - false + true \ No newline at end of file diff --git a/deploy/jenkins/jobs/Build/jobs/Core/jobs/Keycloak/config.xml b/deploy/jenkins/jobs/Build/jobs/Core/jobs/Keycloak/config.xml deleted file mode 100644 index 3adc54eb1d..0000000000 --- a/deploy/jenkins/jobs/Build/jobs/Core/jobs/Keycloak/config.xml +++ /dev/null @@ -1,66 +0,0 @@ - - - - - false - - - - -1 - -1 - -1 - 1 - - - - - false - false - - - - - github_release_tag - <font color=teal size=2>If you want to build from a tag, specify the tag name. If this parameter is blank, latest commit hash will be used to build</font> - - false - - - - - - - - - - - - - - 2 - - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - pipelines/keycloak-build/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Config/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Config/config.xml index aadc4120dc..a921b66e31 100644 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Config/config.xml +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Config/config.xml @@ -9,7 +9,7 @@ - + <font color=red size=2><b>This jobs is currently disabled as it's not being used.</b></font> false @@ -73,5 +73,5 @@ false - false + true \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Keycloak/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Keycloak/config.xml index b931027db5..036bda58f7 100644 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Keycloak/config.xml +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Keycloak/config.xml @@ -24,94 +24,6 @@ false false - - - - absolute_job_path - <font color=teal size=2>Please specify the absolute path to the job from which the metadata.json will be copied.</font> - ArtifactUpload/dev/Core/Keycloak - false - - - artifact_source - <font color=teal size=2>Choose the artifact source.</font> - choice-parameter-12566219493457 - 1 - - false - - - - false - - - Keycloak - - - PT_SINGLE_SELECT - false - 1 - - - build_number - - choice-parameter-12566221440336 - 1 - - false - - - - false - - - Keycloak - - artifact_source - ET_FORMATTED_HTML - true - - - artifact_version - - choice-parameter-12566223395914 - 1 - - false - - - - false - - - Keycloak - - artifact_source - ET_FORMATTED_HTML - true - - - diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4jElasticSearchSyncTool/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4jElasticSearchSyncTool/config.xml index c3fa08b16d..7d6513d238 100644 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4jElasticSearchSyncTool/config.xml +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4jElasticSearchSyncTool/config.xml @@ -115,10 +115,10 @@ return "<b>Not Applicable</b>" <font color=teal size=2>Select a command</font> + sync syncbyobjecttype syncbyids syncbydaterange - sync @@ -132,7 +132,7 @@ return "<b>Not Applicable</b>" --objectType Content --startDate 2018-03-01 --endDate 2018-03-31<br> --graphId en --objectType Word<br> --graph domain --objectType Channel<br></font> - --objectType + --graph domain false diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/SamzaTelemetrySchemas/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/SamzaTelemetrySchemas/config.xml index 36e1f7903c..f493dd4771 100644 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/SamzaTelemetrySchemas/config.xml +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/SamzaTelemetrySchemas/config.xml @@ -8,7 +8,7 @@ - + This job is being provisioned from datapipeline directory. This can be enabled and used for provisioning, if datapipeline jobs are not used. false @@ -69,5 +69,5 @@ false - false + true \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/config.xml index 6fe3ca0b64..68477b8ac7 100644 --- a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/config.xml +++ b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/config.xml @@ -3,7 +3,7 @@ - + diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/JenkinsSlave/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/JenkinsSlave/config.xml index a57333f87e..894e53322e 100644 --- a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/JenkinsSlave/config.xml +++ b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/JenkinsSlave/config.xml @@ -1,7 +1,7 @@ - + <font color=red size=2><b>This jobs is currently disabled as it's not being used.</b></font> false @@ -56,5 +56,5 @@ false - false + true \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Log_ES/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/LogElasticSearch/config.xml similarity index 100% rename from deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Log_ES/config.xml rename to deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/LogElasticSearch/config.xml diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Registry/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Registry/config.xml index 9cd23bf2c8..4a38eb29df 100644 --- a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Registry/config.xml +++ b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Registry/config.xml @@ -1,7 +1,7 @@ - + <font color=red size=2><b>This jobs is currently disabled as it's not being used.</b></font> false @@ -46,5 +46,5 @@ false - false + true \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Secor/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Secor/config.xml index 23f7a7aab5..959c1019a7 100644 --- a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Secor/config.xml +++ b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Secor/config.xml @@ -1,7 +1,7 @@ - + <font color=red size=2><b>This jobs is currently disabled as it's not being used.</b></font> false @@ -46,5 +46,5 @@ false - false + true \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/TelemetrySearch/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/TelemetrySearch/config.xml index 9177aaa04b..567aeca747 100644 --- a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/TelemetrySearch/config.xml +++ b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/TelemetrySearch/config.xml @@ -53,5 +53,5 @@ false - false + true \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Cassandra/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Cassandra/config.xml index fc508c35b7..cebf06c05d 100644 --- a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Cassandra/config.xml +++ b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Cassandra/config.xml @@ -8,7 +8,7 @@ - + <font color=red size=2><b>This job is being provisioned from datapipeline directory. This can be enabled and used for provisioning, if datapipeline jobs are not used.</b></font> false @@ -56,5 +56,5 @@ false - false + true \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/CompositeSearch/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/CompositeSearch/config.xml index feb5022a94..831a83e6bd 100644 --- a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/CompositeSearch/config.xml +++ b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/CompositeSearch/config.xml @@ -8,7 +8,7 @@ - + <font color=red size=2><b>This job is being provisioned from datapipeline directory (TelemetrySearch). This can be enabled and used for provisioning, if datapipeline jobs are not used.</b></font> false @@ -57,5 +57,5 @@ false - false + true \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Kafka/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Kafka/config.xml index d5fb2cad06..7b49eede4f 100644 --- a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Kafka/config.xml +++ b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Kafka/config.xml @@ -8,7 +8,7 @@ - + <font color=red size=2><b>This job is being provisioned from datapipeline directory. This can be enabled and used for provisioning, if datapipeline jobs are not used.</b></font> false @@ -28,8 +28,8 @@ - - + + 2 @@ -57,5 +57,5 @@ false - false + true \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Yarn/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Yarn/config.xml index 9fea61c153..245f67d161 100644 --- a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Yarn/config.xml +++ b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Yarn/config.xml @@ -8,8 +8,7 @@ - This job is being provisioned from datapipeline directory. -This can be enabled and used for provisioning, if datapipeline jobs are not used. + <font color=red size=2><b>This job is being provisioned from datapipeline directory. This can be enabled and used for provisioning, if datapipeline jobs are not used.</b></font> false diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Zookeeper/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Zookeeper/config.xml index 05d16c8bef..6b5ae4058c 100644 --- a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Zookeeper/config.xml +++ b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Zookeeper/config.xml @@ -8,7 +8,7 @@ - + <font color=red size=2><b>This job is being provisioned from datapipeline directory. This can be enabled and used for provisioning, if datapipeline jobs are not used.</b></font> false @@ -57,5 +57,5 @@ false - false + true \ No newline at end of file From 0a6d809e454c7f08297c6302e81b28aad921e167 Mon Sep 17 00:00:00 2001 From: S M Y Date: Fri, 8 Feb 2019 12:09:34 +0530 Subject: [PATCH 1020/1345] Issue #000 : change default channel --- ansible/inventory/env/group_vars/env.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/inventory/env/group_vars/env.yml b/ansible/inventory/env/group_vars/env.yml index 6b33c3060a..cee281aae9 100644 --- a/ansible/inventory/env/group_vars/env.yml +++ b/ansible/inventory/env/group_vars/env.yml @@ -17,7 +17,7 @@ enc_postgres_user: "{{core_vault_postgres_username}}" analytics_postgres_user: "{{core_vault_postgres_username}}" badger_postgres_user: "{{core_vault_postgres_username}}" postgres_password: "{{ core_vault_postgres_password }}" #Password for Kong (API Manager) database. -sunbird_default_channel: sunbird +sunbird_default_channel: masterchannel backup_storage_account: "{{core_vault_sunbird_azure_storage_account}}" backup_storage_key: "{{core_vault_sunbird_azure_storage_key}}" sunbird_account_name: "{{core_vault_sunbird_azure_storage_account}}" From acf394d3262560a54e0bf175b2149dd0886ec8d7 Mon Sep 17 00:00:00 2001 From: harshavardhnc Date: Fri, 8 Feb 2019 12:15:03 +0530 Subject: [PATCH 1021/1345] Issue #00 fix: monitoring for lp/dp --- pipelines/deploy/monitor/Core/Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pipelines/deploy/monitor/Core/Jenkinsfile b/pipelines/deploy/monitor/Core/Jenkinsfile index 5da4a4b0ea..d5be81ddd7 100644 --- a/pipelines/deploy/monitor/Core/Jenkinsfile +++ b/pipelines/deploy/monitor/Core/Jenkinsfile @@ -20,7 +20,7 @@ node() { module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() ansiblePlaybook = "${currentWs}/ansible/monitoring.yml" - ansibleExtraArgs = "--vault-password-file /run/secrets/vault-pass -v" + ansibleExtraArgs = "--skip-tags lp_dp_monitoring --vault-password-file /run/secrets/vault-pass -v" values.put('currentWs', currentWs) values.put('env', envDir) values.put('module', module) From f71af76d7a036ffea1110baa3792c4b3b7bd8a54 Mon Sep 17 00:00:00 2001 From: S M Y Date: Fri, 8 Feb 2019 13:02:51 +0530 Subject: [PATCH 1022/1345] Issue #000 : update vars --- ansible/inventory/env/group_vars/env.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/ansible/inventory/env/group_vars/env.yml b/ansible/inventory/env/group_vars/env.yml index 0d4f6aac6d..0adcd3e3f3 100644 --- a/ansible/inventory/env/group_vars/env.yml +++ b/ansible/inventory/env/group_vars/env.yml @@ -31,7 +31,6 @@ enc_postgres_user: "{{core_vault_postgres_username}}" analytics_postgres_user: "{{core_vault_postgres_username}}" badger_postgres_user: "{{core_vault_postgres_username}}" postgres_password: "{{ core_vault_postgres_password }}" #Password for Kong (API Manager) database. -sunbird_default_channel: masterchannel backup_storage_account: "{{core_vault_sunbird_azure_storage_account}}" backup_storage_key: "{{core_vault_sunbird_azure_storage_key}}" sunbird_account_name: "{{core_vault_sunbird_azure_storage_account}}" From 37b0ee7812b1483403cc7de819568f53033c84cb Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Fri, 8 Feb 2019 13:25:11 +0530 Subject: [PATCH 1023/1345] Issues #SB-00 fix:onboarding badge content link and unlink api (#286) --- ansible/roles/kong-api/defaults/main.yml | 28 ++++++++---------------- 1 file changed, 9 insertions(+), 19 deletions(-) diff --git a/ansible/roles/kong-api/defaults/main.yml b/ansible/roles/kong-api/defaults/main.yml index 6285ef35f5..d2c16c2b27 100644 --- a/ansible/roles/kong-api/defaults/main.yml +++ b/ansible/roles/kong-api/defaults/main.yml @@ -3665,36 +3665,26 @@ kong_apis: config.limit_by: credential - name: request-size-limiting config.allowed_payload_size: "{{ small_request_size_limit }}" - - name: "updateUserPrivate" - request_path: "{{ user_service_prefix }}/private/v1/update" - upstream_url: "{{ learning_service_url }}/private/user/v1/update" + - name: "contentBadgeLink" + request_path: "{{ badge_service_prefix }}/v1/content/link" + upstream_url: "{{ learning_service_url }}/badging/v1/content/link" strip_request_path: true plugins: - {name: 'jwt'} - {name: 'cors'} - "{{ statsd_pulgin }}" - {name: 'acl', config.whitelist: 'publicUser'} - - {name: 'rate-limiting', config.policy: "local", config.hour: "{{ large_rate_limit_per_hour }}"} + - {name: 'rate-limiting', config.policy: "local", config.hour: "{{ medium_rate_limit_per_hour }}"} - {name: 'request-size-limiting', config.allowed_payload_size: "{{ small_request_size_limit }}" } - - name: "getUserByExternalId" - request_path: "{{ user_service_prefix }}/private/v1/read/" - upstream_url: "{{ learning_service_url }}/private/user/v1/read/" + - name: "contentBadgeUnLink" + request_path: "{{ badge_service_prefix }}/v1/content/unlink" + upstream_url: "{{ learning_service_url }}/badging/v1/content/unlink" strip_request_path: true plugins: - {name: 'jwt'} - {name: 'cors'} - "{{ statsd_pulgin }}" - {name: 'acl', config.whitelist: 'publicUser'} - - {name: 'rate-limiting', config.policy: "local", config.hour: "{{ large_rate_limit_per_hour }}"} + - {name: 'rate-limiting', config.policy: "local", config.hour: "{{ medium_rate_limit_per_hour }}"} - {name: 'request-size-limiting', config.allowed_payload_size: "{{ small_request_size_limit }}" } - - name: "assignprivateRole" - request_path: "{{ user_service_prefix }}/private/v1/assign/role" - upstream_url: "{{ learning_service_url }}/private/user/v1/assign/role" - strip_request_path: true - plugins: - - {name: 'jwt'} - - {name: 'cors'} - - "{{ statsd_pulgin }}" - - {name: 'acl', config.whitelist: 'publicUser'} - - {name: 'rate-limiting', config.policy: "local", config.hour: "{{ large_rate_limit_per_hour }}"} - - {name: 'request-size-limiting', config.allowed_payload_size: "{{ small_request_size_limit }}" } \ No newline at end of file + \ No newline at end of file From d3344b015a4f8fd3f69e7da9f20d935889d63a55 Mon Sep 17 00:00:00 2001 From: Vinaya Kumar B Date: Fri, 8 Feb 2019 15:02:09 +0530 Subject: [PATCH 1024/1345] Issue #SB-9852 fix: Fix badge association URL paths --- ansible/roles/kong-api/defaults/main.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ansible/roles/kong-api/defaults/main.yml b/ansible/roles/kong-api/defaults/main.yml index d2c16c2b27..e33d36f7e1 100644 --- a/ansible/roles/kong-api/defaults/main.yml +++ b/ansible/roles/kong-api/defaults/main.yml @@ -3667,7 +3667,7 @@ kong_apis: config.allowed_payload_size: "{{ small_request_size_limit }}" - name: "contentBadgeLink" request_path: "{{ badge_service_prefix }}/v1/content/link" - upstream_url: "{{ learning_service_url }}/badging/v1/content/link" + upstream_url: "{{ learning_service_url }}/v1/content/link" strip_request_path: true plugins: - {name: 'jwt'} @@ -3676,9 +3676,9 @@ kong_apis: - {name: 'acl', config.whitelist: 'publicUser'} - {name: 'rate-limiting', config.policy: "local", config.hour: "{{ medium_rate_limit_per_hour }}"} - {name: 'request-size-limiting', config.allowed_payload_size: "{{ small_request_size_limit }}" } - - name: "contentBadgeUnLink" + - name: "contentBadgeUnlink" request_path: "{{ badge_service_prefix }}/v1/content/unlink" - upstream_url: "{{ learning_service_url }}/badging/v1/content/unlink" + upstream_url: "{{ learning_service_url }}/v1/content/unlink" strip_request_path: true plugins: - {name: 'jwt'} @@ -3687,4 +3687,4 @@ kong_apis: - {name: 'acl', config.whitelist: 'publicUser'} - {name: 'rate-limiting', config.policy: "local", config.hour: "{{ medium_rate_limit_per_hour }}"} - {name: 'request-size-limiting', config.allowed_payload_size: "{{ small_request_size_limit }}" } - \ No newline at end of file + From 92c66bcf0bdde981c804bbd0c3669d6fe856cafa Mon Sep 17 00:00:00 2001 From: Vinaya Kumar B Date: Fri, 8 Feb 2019 15:04:48 +0530 Subject: [PATCH 1025/1345] Issue #SB-9852 fix: Fix badge association URL paths --- ansible/roles/kong-api/defaults/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/kong-api/defaults/main.yml b/ansible/roles/kong-api/defaults/main.yml index e33d36f7e1..237ec40866 100644 --- a/ansible/roles/kong-api/defaults/main.yml +++ b/ansible/roles/kong-api/defaults/main.yml @@ -3676,7 +3676,7 @@ kong_apis: - {name: 'acl', config.whitelist: 'publicUser'} - {name: 'rate-limiting', config.policy: "local", config.hour: "{{ medium_rate_limit_per_hour }}"} - {name: 'request-size-limiting', config.allowed_payload_size: "{{ small_request_size_limit }}" } - - name: "contentBadgeUnlink" + - name: "contentBadgeUnLink" request_path: "{{ badge_service_prefix }}/v1/content/unlink" upstream_url: "{{ learning_service_url }}/v1/content/unlink" strip_request_path: true From 2901861b58120b27a7eab224e3bcb407f6e01ad1 Mon Sep 17 00:00:00 2001 From: msknext Date: Fri, 8 Feb 2019 15:59:03 +0530 Subject: [PATCH 1026/1345] feat: Download m2 repo from blob --- deploy/jenkins/jenkins-config-setup.sh | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/deploy/jenkins/jenkins-config-setup.sh b/deploy/jenkins/jenkins-config-setup.sh index bb9b6ff002..dd278b8f10 100755 --- a/deploy/jenkins/jenkins-config-setup.sh +++ b/deploy/jenkins/jenkins-config-setup.sh @@ -11,6 +11,12 @@ echo -e "\n\e[0;32m${bold}Copying config files to Jenkins ${normal}" rsync -r jobs /var/lib/jenkins/ chown -R jenkins:jenkins /var/lib/jenkins/jobs +echo -e "\n\e[0;32m${bold}Downloading and copying m2 directory to Jenkins ${normal}" +wget https://sunbirdpublic.blob.core.windows.net/installation/m2.zip +unzip m2.zip +mv .m2 /var/lib/jenkins +chown -R jenkins:jenkins /var/lib/jenkins/.m2 + echo -e "\n\e[0;32m${bold}Installating plugins... ${normal}" ./butler plugins i -s $server -u $username -p $password From eb782ab1f4a7a3522e8efff49236eb1b5a7959c0 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Fri, 8 Feb 2019 17:22:16 +0530 Subject: [PATCH 1027/1345] Jenkins pipeline (#288) * Issue #000 : update host entry * Issue #0000 fix: updated the syntax error * Issue #000 : update hosts entry * Issue #000 : update hosts entry * Issue #000 : update cache * Issue #000 : cqlsh changes * Issue #000 : es update cache * Issue #000 : pip update cache * Issue #000 : es curl data * Issue #0000 fix: updated the syntax error * Issue #00 fix: tags fix * Issue #00 fix: tags fix * Issue #000 : badger issue * Updated cloud url --- ansible/inventory/env/group_vars/env.yml | 2 +- ansible/provision.yml | 1 + ansible/roles/cassandra/tasks/main.yml | 10 ++++++++++ .../roles/elasticsearch/tasks/elasticsearch-Debian.yml | 6 +++--- ansible/roles/kong-api/tasks/main.yml | 2 +- ansible/roles/postgresql/tasks/setup-Debian.yml | 1 + ansible/roles/stack-badger/tasks/main.yml | 2 +- pipelines/deploy/monitor/DataPipeline/Jenkinsfile | 2 +- pipelines/deploy/monitor/KnowledgePlatform/Jenkinsfile | 2 +- 9 files changed, 20 insertions(+), 8 deletions(-) diff --git a/ansible/inventory/env/group_vars/env.yml b/ansible/inventory/env/group_vars/env.yml index 0adcd3e3f3..ad539f8000 100644 --- a/ansible/inventory/env/group_vars/env.yml +++ b/ansible/inventory/env/group_vars/env.yml @@ -418,7 +418,7 @@ content_service_blacklisted_mimetype: '' prometheus_storage_retention_time: 72h0m0s kafka_jvm_opts: "-Xmx1G -Xms1G" kafka_log_retention_hours: 2400 -sunbird_cloud_storage_urls: 'https://s3.ap-south-1.amazonaws.com/ekstep-public-dev/,https://ekstep-public-dev.s3-ap-south-1.amazonaws.com/,https://sunbirddev.blob.core.windows.net/sunbird-content-dev/' +sunbird_cloud_storage_urls: 'https://s3.ap-south-1.amazonaws.com/ekstep-public-dev/,https://ekstep-public-dev.s3-ap-south-1.amazonaws.com/,https://{{azure_account_name}}.blob.core.windows.net/content' sunbird_email_max_recipients_limit: 100 sunbird_cassandra_consistency_level: one sunbird_cassandra_replication_strategy: '{"class":"SimpleStrategy","replication_factor":"1"}' diff --git a/ansible/provision.yml b/ansible/provision.yml index c30e175c9d..5459418164 100644 --- a/ansible/provision.yml +++ b/ansible/provision.yml @@ -16,6 +16,7 @@ roles: - openjdk - application_elasticsearch + - curl_es_command tags: - es diff --git a/ansible/roles/cassandra/tasks/main.yml b/ansible/roles/cassandra/tasks/main.yml index 0ca53a2177..fbddd2d29c 100755 --- a/ansible/roles/cassandra/tasks/main.yml +++ b/ansible/roles/cassandra/tasks/main.yml @@ -5,6 +5,16 @@ tags: - provision +- name: getting the server hostname + command: hostname + register: hostnameOfCql + +- name: add entry in hosts file + become: yes + lineinfile: + line: "127.0.0.1 {{hostnameOfCql.stdout}}" + path: /etc/hosts + - name: debian | Adding Cassandra Debian Repo Key apt_key: url: "{{ cassandra_repo_key }}" diff --git a/ansible/roles/elasticsearch/tasks/elasticsearch-Debian.yml b/ansible/roles/elasticsearch/tasks/elasticsearch-Debian.yml index 83748b04e0..7f565ca63d 100755 --- a/ansible/roles/elasticsearch/tasks/elasticsearch-Debian.yml +++ b/ansible/roles/elasticsearch/tasks/elasticsearch-Debian.yml @@ -6,7 +6,7 @@ when: es_allow_downgrades - name: Debian - Install apt-transport-https to support https APT downloads - apt: name=apt-transport-https state=present + apt: name=apt-transport-https state=present update_cache=yes when: es_use_repository - name: Debian - Add Elasticsearch repository key @@ -14,7 +14,7 @@ when: es_use_repository and es_apt_key - name: Debian - Add elasticsearch repository - apt_repository: repo={{ item.repo }} state={{ item.state}} + apt_repository: repo={{ item.repo }} state={{ item.state}} with_items: - { repo: "{{ es_apt_url_old }}", state: "absent" } - { repo: "{{ es_apt_url }}", state: "present" } @@ -25,7 +25,7 @@ when: es_version_lock - name: Debian - Ensure elasticsearch is installed - apt: name=elasticsearch{% if es_version is defined and es_version != "" %}={{ es_version }}{% endif %} state=present force={{force_install}} allow_unauthenticated={{ 'no' if es_apt_key else 'yes' }} cache_valid_time=86400 + apt: name=elasticsearch{% if es_version is defined and es_version != "" %}={{ es_version }}{% endif %} state=present force={{force_install}} allow_unauthenticated={{ 'no' if es_apt_key else 'yes' }} update_cache=yes when: es_use_repository register: debian_elasticsearch_install_from_repo diff --git a/ansible/roles/kong-api/tasks/main.yml b/ansible/roles/kong-api/tasks/main.yml index 70e5fc4fe7..e38ef68762 100644 --- a/ansible/roles/kong-api/tasks/main.yml +++ b/ansible/roles/kong-api/tasks/main.yml @@ -1,6 +1,6 @@ --- - name: Ensure pip is installed - apt: name=python-pip + apt: name=python-pip update_cache=yes when: ansible_os_family == 'Debian' - name: Ensure retry is installed diff --git a/ansible/roles/postgresql/tasks/setup-Debian.yml b/ansible/roles/postgresql/tasks/setup-Debian.yml index fdfcc44f0c..8a9b683769 100755 --- a/ansible/roles/postgresql/tasks/setup-Debian.yml +++ b/ansible/roles/postgresql/tasks/setup-Debian.yml @@ -7,6 +7,7 @@ - name: Ensure PostgreSQL packages are installed. apt: name: "{{ item }}" + update_cache: yes state: installed with_items: "{{ postgresql_packages }}" diff --git a/ansible/roles/stack-badger/tasks/main.yml b/ansible/roles/stack-badger/tasks/main.yml index 35b6447680..8050187369 100644 --- a/ansible/roles/stack-badger/tasks/main.yml +++ b/ansible/roles/stack-badger/tasks/main.yml @@ -2,7 +2,7 @@ - name: Login to docker shell: "docker login {{ vault_docker_registry_url }} -u {{ vault_docker_registry_user }} -p {{ vault_docker_registry_password }}" become: yes - no_log: True + # no_log: True ignore_errors: yes - name: Remove badger service diff --git a/pipelines/deploy/monitor/DataPipeline/Jenkinsfile b/pipelines/deploy/monitor/DataPipeline/Jenkinsfile index d0e8af6bfa..d4db2bd27d 100644 --- a/pipelines/deploy/monitor/DataPipeline/Jenkinsfile +++ b/pipelines/deploy/monitor/DataPipeline/Jenkinsfile @@ -20,7 +20,7 @@ node() { module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() ansiblePlaybook = "${currentWs}/ansible/monitoring.yml" - ansibleExtraArgs = "--tags lp_dp_monitoring --vault-password-file /run/secrets/vault-pass -v" + ansibleExtraArgs = "--tags metrics-exporter,lp_dp_monitoring --vault-password-file /run/secrets/vault-pass -v" values.put('currentWs', currentWs) values.put('env', envDir) values.put('module', module) diff --git a/pipelines/deploy/monitor/KnowledgePlatform/Jenkinsfile b/pipelines/deploy/monitor/KnowledgePlatform/Jenkinsfile index d0e8af6bfa..d4db2bd27d 100644 --- a/pipelines/deploy/monitor/KnowledgePlatform/Jenkinsfile +++ b/pipelines/deploy/monitor/KnowledgePlatform/Jenkinsfile @@ -20,7 +20,7 @@ node() { module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() ansiblePlaybook = "${currentWs}/ansible/monitoring.yml" - ansibleExtraArgs = "--tags lp_dp_monitoring --vault-password-file /run/secrets/vault-pass -v" + ansibleExtraArgs = "--tags metrics-exporter,lp_dp_monitoring --vault-password-file /run/secrets/vault-pass -v" values.put('currentWs', currentWs) values.put('env', envDir) values.put('module', module) From 2a3a5f16e0519f4130a20896496e1e5661765467 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Fri, 8 Feb 2019 17:46:15 +0530 Subject: [PATCH 1028/1345] Issue #000: Do not mv the script --- deploy/jenkins/jenkins-server-setup.sh | 5 ----- 1 file changed, 5 deletions(-) diff --git a/deploy/jenkins/jenkins-server-setup.sh b/deploy/jenkins/jenkins-server-setup.sh index d4d8bc9d52..3996203657 100755 --- a/deploy/jenkins/jenkins-server-setup.sh +++ b/deploy/jenkins/jenkins-server-setup.sh @@ -54,9 +54,4 @@ usermod -G docker jenkins echo -e "\n\e[0;32m${bold}Creating bashrc for jenkins user ${normal}" cp /etc/skel/.bashrc /var/lib/jenkins -echo -e "\n\e[0;32m${bold}Getting jenkins config script for next steps${normal}" -mv jenkins-config-setup.sh /var/lib/jenkins -chown jenkins:jenkins /var/lib/jenkins/jenkins-config-setup.sh -chmod 755 /var/lib/jenkins/jenkins-config-setup.sh - echo -e "\n\e[0;32m${bold}Installation complete. Please go to your jenkins URL and continue setup${normal}" From b06c16f262a47493f7d5dd653ac73bf1d2d43634 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Fri, 8 Feb 2019 17:54:02 +0530 Subject: [PATCH 1029/1345] added private sunbird variables and hosts template --- .../ansible/inventory/dev/Core/common.yml | 93 ++++++++++ .../ansible/inventory/dev/Core/hosts | 161 ++++++++++++++++++ .../ansible/inventory/dev/Core/secrets.yml | 45 +++++ .../inventory/dev/DataPipeline/common.yml | 28 +++ .../ansible/inventory/dev/DataPipeline/hosts | 145 ++++++++++++++++ .../inventory/dev/DataPipeline/secrets.yml | 9 + .../dev/KnowledgePlatform/common.yml | 46 +++++ .../inventory/dev/KnowledgePlatform/hosts | 103 +++++++++++ .../dev/KnowledgePlatform/secrets.yml | 6 + 9 files changed, 636 insertions(+) create mode 100644 ansible/private_repo/ansible/inventory/dev/Core/common.yml create mode 100644 ansible/private_repo/ansible/inventory/dev/Core/hosts create mode 100644 ansible/private_repo/ansible/inventory/dev/Core/secrets.yml create mode 100644 ansible/private_repo/ansible/inventory/dev/DataPipeline/common.yml create mode 100644 ansible/private_repo/ansible/inventory/dev/DataPipeline/hosts create mode 100644 ansible/private_repo/ansible/inventory/dev/DataPipeline/secrets.yml create mode 100644 ansible/private_repo/ansible/inventory/dev/KnowledgePlatform/common.yml create mode 100644 ansible/private_repo/ansible/inventory/dev/KnowledgePlatform/hosts create mode 100644 ansible/private_repo/ansible/inventory/dev/KnowledgePlatform/secrets.yml diff --git a/ansible/private_repo/ansible/inventory/dev/Core/common.yml b/ansible/private_repo/ansible/inventory/dev/Core/common.yml new file mode 100644 index 0000000000..0abe5da93d --- /dev/null +++ b/ansible/private_repo/ansible/inventory/dev/Core/common.yml @@ -0,0 +1,93 @@ +###################### Private ############################ + +#Common vars +env: #Name of the environment, e.g. dev, staging or production. +proxy_server_name: .sunbird.cf #Domain on which the portal will be accessed. e.g. staging.{implementation-name}.org +0WdEj +proto: # Protocol +ekstep_s3_env: +sunbird_app_name: +api_proxy_name: # Domain name on which device register and other api's will be accessed +ssh_public_key_deployer: + +# Proxy +keycloak_url: #Keycloak Load balancer IP + +# Stack_keycloak +keycloak_admin_username: #Keycloak Admin username +keycloak_api_management_user_email: +keycloak_api_management_user_first_name: +keycloak_api_management_user_last_name: +keycloak_api_management_user_password: "{{core_vault_keycloak_api_management_user_password}}" + +# Player env +sunbird_android_app_url: "" +sunbird_external_content_whitelisted_domains: "" +azure_account_name: # +content-service +azure_account_key: "{{core_vault_azure_storage_secret}}" # +content-service + +# actor learner +mail_server_host: # + monit stack-monitor +sunbird_mail_server_from_email: #Email ID that should be as from address in mails +sunbird_installation_email: + +# Learner +sunbird_user_profile_field_default_visibility: +sunbird_content_azure_storage_container: +analyticsapi_ip: # + kong monitor # Analytics Service Load Balancer IP + +# Content-service +learningservice_ip: # Load balancer IP for learning server +searchservice_ip: # + monitoring # search service Load balancer IP + +# Badger +badger_url: +badger_admin_email: +badger_file_storage: + +# logger +kibana_oauth_authenticated_email_domains: + - ekstep.org + - test.com +kibana_oauth_authenticated_email_ids: + - santhosh.g@optit.in + +# Jenkins +jenkins_url: + +# keycloak sms provider +content_service_whitelisted_channels: "" +content_service_blacklisted_channels: "" +sunbird_installation_display_name: "" +sunbird_blob_env: +# Plugins +upstream_url: "sunbird{{sunbird_blob_env}}.blob.core.windows.net/sunbird-content-{{sunbird_blob_env}}" +sunbird_portal_user_upload_ref_link: http://www.sunbird.org/features-documentation/register_user + +# Artifacts-upload and download +artifacts_container: + +# Monitoring +app_alerts_mailing_list: "mailer@sunbird.co" +devops_alerts_mailing_list: "mailer@sunbird.co" +site_alerts_mailing_list: "mailer@sunbird.co" +keycloak_alerts_mailing_list: "mailer@sunbird.co" +api_manager_alerts_mailing_list: "mailer@sunbird.co" +alerts_mailing_list : "mailer@sunbird.co" # +monit +monitor_alerts_mail_from_email: "mailer@sunbird.co" # +monit +mail_server_username: "mailer" +monitor_alerts_slack_channel: refactor-alert + +# Filebeat +swarm_agent_load_balancer: + +# Depricated +sunbird_ekstep_api_base_url: https://qa.ekstep.in/api #API base URL of the Ekstep environment. Use `https://qa.ekstep.in/api` for non-prod deployments, and use `https://api.ekstep.in/` for prod deployment. +sunbird_ekstep_proxy_base_url: https://qa.ekstep.in #Base URL of the Ekstep environment. Use `https://qa.ekstep.in/` for non-prod deployments, and `https://community.ekstep.in/` for prod deployment. +sunbird_env: qa #Ekstep environment to connect to. Use `qa` for non-prod deployments, and `prod` for prod deployment. + + +# Not using +project: +sunbird_cdn_url: "" +sunbird_config_service_url: '' diff --git a/ansible/private_repo/ansible/inventory/dev/Core/hosts b/ansible/private_repo/ansible/inventory/dev/Core/hosts new file mode 100644 index 0000000000..c1cc895b34 --- /dev/null +++ b/ansible/private_repo/ansible/inventory/dev/Core/hosts @@ -0,0 +1,161 @@ +[kafka-1] +kafka_id=1 + +[processing-cluster-kafka] + + +[telemetry-search-cluster] + + +[swarm-bootstrap-manager] + + +[kafka:children] +kafka-1 + +#[jenkins-master] +#10.20.0.12 + +[es-1] +es_instance_name=es-1 es_etc_node_master=true es_etc_node_data=true + +[es-backup:children] +es-1 + +[log-es-backup:children] +log-es-1 + +[es:children] +es-1 + +[cassandra-1] + + +[cassandra:children] +cassandra-1 + +[postgresql-master-1] + + +[postgresql-master:children] +postgresql-master-1 + +[postgresql-slave-1] + + +[postgresql-slave:children] +postgresql-slave-1 + +[postgres:children] +postgresql-slave +postgresql-master + +[swarm-manager-1] +swarm_master=true + +[swarm-manager:children] +swarm-manager-1 + +[swarm-worker-1] + + +[swarm-worker-2] + + +[swarm-worker:children] +swarm-worker-1 +swarm-worker-2 + +[keycloak-1] +#15.0.0.7 + + +[keycloak:children] +keycloak-1 + +[log-es-1] +node_name=refactor-log-es-1 es_etc_node_master=true es_etc_node_data=true + +[log-es:children] +log-es-1 + +[swarm-agent-for-prometheus-1] + + +[swarm-agent-for-prometheus:children] +swarm-agent-for-prometheus-1 + +[swarm-agent-for-grafana-1] + + +[swarm-agent-for-grafana:children] +swarm-agent-for-grafana-1 + +[swarm-agent-for-alertmanager-1] + +[local] +localhost + +[swarm-agent-for-alertmanager:children] +swarm-agent-for-alertmanager-1 + +[kong-api] +localhost ansible_connection=local + +[swarm-bootstrap-manager:children] +swarm-manager + +[non-swarm-nodes:children] +postgresql-master +postgresql-slave +es +cassandra +kong-api +keycloak +log-es + +[swarm-nodes:children] +swarm-manager +swarm-worker +swarm-bootstrap-manager +swarm-agent-for-prometheus +swarm-agent-for-grafana +swarm-agent-for-alertmanager + +[node-exporter:children] +non-swarm-nodes +swarm-manager + +[process-exporter:children] +es-ps +cassandra-ps + +[log-forwarder:children] +swarm-manager + +[env:children] +es +local +log-es +cassandra +postgresql-master +postgresql-slave +swarm-nodes +swarm-manager +kafka +keycloak +swarm-bootstrap-manager + +[log-forwarder:children] +swarm-manager + +[cassandra-ps:children] +cassandra + +[es-ps:children] +es +log-es + +[all:vars] +ansible_ssh_user=deployer +ansible_ssh_private_key_file=/run/secrets/deployer_ssh_key diff --git a/ansible/private_repo/ansible/inventory/dev/Core/secrets.yml b/ansible/private_repo/ansible/inventory/dev/Core/secrets.yml new file mode 100644 index 0000000000..407cb6c26c --- /dev/null +++ b/ansible/private_repo/ansible/inventory/dev/Core/secrets.yml @@ -0,0 +1,45 @@ +############# Core ####################### +####### Secrets ####### +core_vault_google_keycloak_secret: +core_vault_sunbird_google_oauth_clientSecret: +core_vault_postgres_username: +core_vault_ansible_vault_password: +core_vault_ssh_public_key_deployer: +core_vault_sudo_crypt_deployer: "" +core_vault_postgres_password: +core_vault_badging_authorization_key: +core_vault_badger_admin_password: +core_vault_msg91_auth_key: +core_vault_sunbird_fcm_account_key: "" +core_vault_jenkins_admin_username: "" #### if it is not required will remove +core_vault_jenkins_admin_password: "" #### if it is not required will remove +core_vault_sunbird_azure_storage_account: +core_vault_sunbird_azure_storage_key: +core_vault_docker_registry_url: "https://inded.docker.io/v1" # for docker hub +core_vault_docker_registry_user: +core_vault_google_captcha_site_key: +core_vault_docker_registry_password: +core_vault_proxy_site_key: |+ + -----BEGIN PRIVATE KEY----- + -----END PRIVATE KEY----- +core_vault_proxy_site_crt: |+ + -----BEGIN CERTIFICATE----- + -----END RSA PRIVATE KEY----- +core_vault_proxy_prometheus_admin_creds: + +#MSG91 +core_vault_sender: +core_vault_country: 91 +core_vault_route: 4 +core_vault_sms_method_type: POST +core_vault_auth_key: +core_vault_google_captcha_site_key: +core_vault_sunbird_google_oauth_clientId_portal: +core_vault_sunbird_google_oauth_clientSecret_portal: +core_vault_sunbird_google_captcha_site_key_portal: +core_vault_azure_storage_secret: +core_vault_kibana_google_client_id: +core_vault_kibana_google_client_secret: +core_vault_sunbird_google_keycloak_secret: +core_vault_keycloak_api_management_user_password: +core_vault_trampoline_secret: diff --git a/ansible/private_repo/ansible/inventory/dev/DataPipeline/common.yml b/ansible/private_repo/ansible/inventory/dev/DataPipeline/common.yml new file mode 100644 index 0000000000..1525cc338a --- /dev/null +++ b/ansible/private_repo/ansible/inventory/dev/DataPipeline/common.yml @@ -0,0 +1,28 @@ +############## Common ###################### + +# Common vars for env +env: +proto: +domain_name: +ssh_public_key_deployer: + +#################### DP ########################## + +secor_azure_container_name: +dp_azure_account_name: # azure storage account name + +# Data products monitoring web hooks +data_exhaust_webhook_url: "" +data_exhaust_Channel: "" +data_exhaust_name: +bucket: +stream_base_url: "" + +# Media content +media_service_azure_tenant: "" # value have to be defined +media_service_azure_tenant: "" +media_service_azure_subscription_id: "" +media_service_azure_account_name: "" +media_service_azure_resource_group_name: "" +media_service_azure_token_client_key: "" +media_service_azure_token_client_secret: "" diff --git a/ansible/private_repo/ansible/inventory/dev/DataPipeline/hosts b/ansible/private_repo/ansible/inventory/dev/DataPipeline/hosts new file mode 100644 index 0000000000..665f79d0bd --- /dev/null +++ b/ansible/private_repo/ansible/inventory/dev/DataPipeline/hosts @@ -0,0 +1,145 @@ +[swarm-bootstrap-manager] +15.0.1.4 + +################# LP ########################## +[search] +15.0.3.5 + +[learning] +15.0.3.11 + +[composite-search-cluster] +15.0.2.6 + +[lp-cassandra] +15.0.2.7 + +[dp-cassandra] +15.0.2.7 + +[lp-redis] +15.0.3.11 + +################# LPA ######################### +[analytics-api] +15.0.3.6 + +[secor] +15.0.3.15 + +[spark] +15.0.3.12 + +[cassandra] +15.0.2.7 + +[postgres] +15.0.3.17 + +[lpa:children] +spark +secor +analytics-api +cassandra +########################### DP ############################# + +[kafka-indexer] +15.0.3.8 + +[influxdb] +#15.0.3.8 +15.0.3.6 + +[processing-cluster-kafka] +15.0.3.8 +15.0.3.7 + +[processing-cluster-zookeepers] +15.0.3.8 +15.0.3.7 + +[telemetry-search-cluster1] +15.0.2.6 + + +[telemetry-search-cluster:children] +telemetry-search-cluster1 + +[zookeeper:children] +processing-cluster-zookeepers + +[telemetry-search-cluster-kibana-node:children] +telemetry-search-cluster1 + +[yarn-master] +15.0.3.10 + +[yarn-slave] +15.0.3.13 + +[yarn:children] +yarn-master +yarn-slave + +[local] +localhost + +[dp:children] +local +processing-cluster-kafka +processing-cluster-zookeepers +zookeeper +postgres +telemetry-search-cluster +telemetry-search-cluster-kibana-node +yarn +kafka-indexer +influxdb +lpa + +[env:children] +swarm-bootstrap-manager +dp + +[env:vars] +ansible_ssh_user=deployer +ansible_ssh_private_key_file=/run/secrets/deployer_ssh_key + + +########################### Monitoring ########################## +[yarn-ps] +15.0.3.10 +15.0.3.13 + +[logstash-ps] +15.0.3.8 + +[es-ps] +15.0.2.6 + +[process-exporter:children] +yarn-ps +logstash-ps +es-ps +secor-ps +analytics-ps +kafka-ps + +[secor-ps] +15.0.3.15 + +[analytics-ps] +15.0.3.6 + +[kafka-ps] +15.0.3.8 +15.0.3.7 + +[process-exporter:vars] +ansible_ssh_user="deployer" +ansible_ssh_private_key_file=/run/secrets/deployer_ssh_key +ansible_sudo_pass=d3pl0y3r + +[all:vars] +ansible_ssh_user=deployer +ansible_ssh_private_key_file=/run/secrets/deployer_ssh_key diff --git a/ansible/private_repo/ansible/inventory/dev/DataPipeline/secrets.yml b/ansible/private_repo/ansible/inventory/dev/DataPipeline/secrets.yml new file mode 100644 index 0000000000..6b644f6c10 --- /dev/null +++ b/ansible/private_repo/ansible/inventory/dev/DataPipeline/secrets.yml @@ -0,0 +1,9 @@ +############## Admin ###################### + +############## DP ###################### +dp_vault_artifacts_container: +dp_vault_azure_backup_storage_secret: +dp_search_service_authorization_token: +dp_vault_pgdb_password: +dp_vault_data_exhaust_token: +dp_vault_azure_account_key: diff --git a/ansible/private_repo/ansible/inventory/dev/KnowledgePlatform/common.yml b/ansible/private_repo/ansible/inventory/dev/KnowledgePlatform/common.yml new file mode 100644 index 0000000000..46c6091b28 --- /dev/null +++ b/ansible/private_repo/ansible/inventory/dev/KnowledgePlatform/common.yml @@ -0,0 +1,46 @@ +############## Common ###################### + +# Common vars for env +proto: +domain_name: + +#bootstrap +ssh_public_key_deployer: + +###################### LP ############################ + +## Common vars for LP and DP +env: +azure_public_container: +azure_influxdb_backup_container: +azure_backup_account_name: + +########### jenkinspipeline upload artifact ############ +artifacts_container: + + +## Common variables for LP +instance: +azure_account_name: +azure_account_key: "{{lp_vault_azure_storage_secret}}" +# these variables can be defined as {{instance}}_* +content_keyspace_name: +hierarchy_keyspace_name: +orchestrator_keyspace_name: + +neo4j_home: "{{learner_user_home}}/{{neo4j_dir}}/neo4j-enterprise-3.3.0" +neo4j_zip: neo4j-enterprise-3.3.0-unix.tar.gz # neo4j enterprise version.zip +neo4j_enterprise: "true" +environment_id: 10000000 + +## learning service variables +content_media_base_url: +plugin_media_base_url: https://dev.ekstep.in +dial_service_search_url: https://dev.ekstep.in/api/dialcode/v3/search +learning_content_h5p_library_path: https://s3.ap-south-1.amazonaws.com/ekstep-public-dev/content/templates/h5p-library-latest.zip + + +# Unknown vars +content_to_vec_url: # content_to_vec_url +orchestrator_url: +s3_public_bucket: "" diff --git a/ansible/private_repo/ansible/inventory/dev/KnowledgePlatform/hosts b/ansible/private_repo/ansible/inventory/dev/KnowledgePlatform/hosts new file mode 100644 index 0000000000..8117161129 --- /dev/null +++ b/ansible/private_repo/ansible/inventory/dev/KnowledgePlatform/hosts @@ -0,0 +1,103 @@ +######################## LP ######################## + +[learning1] +15.0.3.11 + +[swarm-bootstrap-manager] +15.0.1.4 + +[learningall:children] +learning1 + +[search1] +15.0.3.5 + +[searchall:children] +search1 + +[redis1] +15.0.3.11 + +[redisall:children] +redis1 + +[learning-neo4j-node1] +15.0.2.9 + +# Enable following host, if you're have neo4j cluster and an arbiter for election +# [arbiter] +# dbms_mode=ARBITER + +[learning-neo4j-cluster:children] +learning-neo4j-node1 + +[cassandra] +15.0.2.7 + +[dp-cassandra] +15.0.2.7 + +[core-cassandra] +15.0.2.5 + +[composite-search-cluster] +15.0.2.6 + +[yarn-master] +15.0.3.10 + +[yarn-slave] +15.0.3.13 + +[yarn:children] +yarn-master +yarn-slave + +[processing-cluster-kafka] +15.0.3.14 +#15.0.3.7 + +[processing-cluster-zookeepers] +15.0.3.14 +#15.0.3.7 + +[local] +localhost + +[env:children] +learningall +searchall +learning-neo4j-cluster +cassandra +redisall +yarn +composite-search-cluster +processing-cluster-kafka +processing-cluster-zookeepers +local +swarm-bootstrap-manager + +[env:vars] +ansible_ssh_user="deployer" +ansible_ssh_private_key_file=/run/secrets/deployer_ssh_key +ansible_sudo_pass=d3pl0y3r + +####################### Monitoring ######################## +[logstash-ps] +15.0.3.11 + +[process-exporter:children] +logstash-ps +cassandra-ps + +[cassandra-ps] +15.0.2.7 + +[process-exporter:vars] +ansible_ssh_user="deployer" +ansible_ssh_private_key_file=/run/secrets/deployer_ssh_key +ansible_sudo_pass=d3pl0y3r + +[all:vars] +ansible_ssh_user=deployer +ansible_ssh_private_key_file=/run/secrets/deployer_ssh_key diff --git a/ansible/private_repo/ansible/inventory/dev/KnowledgePlatform/secrets.yml b/ansible/private_repo/ansible/inventory/dev/KnowledgePlatform/secrets.yml new file mode 100644 index 0000000000..02bf98f042 --- /dev/null +++ b/ansible/private_repo/ansible/inventory/dev/KnowledgePlatform/secrets.yml @@ -0,0 +1,6 @@ +############## Admin ###################### +############## LP ###################### +lp_vault_azure_storage_secret: +lp_vault_graph_passport_key: +lp_vault_youtube_api_key: +lp_vault_dial_service_authorization: From b6382c8fdd98843b8c20e0fe8b897773b91ebb41 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Fri, 8 Feb 2019 17:57:27 +0530 Subject: [PATCH 1030/1345] added private sunbird variables and hosts template --- .../ansible/inventory/dev/Core/common.yml | 0 .../ansible/inventory/dev/Core/hosts | 0 .../ansible/inventory/dev/Core/secrets.yml | 0 .../ansible/inventory/dev/DataPipeline/common.yml | 0 .../ansible/inventory/dev/DataPipeline/hosts | 0 .../ansible/inventory/dev/DataPipeline/secrets.yml | 0 .../ansible/inventory/dev/KnowledgePlatform/common.yml | 0 .../ansible/inventory/dev/KnowledgePlatform/hosts | 0 .../ansible/inventory/dev/KnowledgePlatform/secrets.yml | 0 9 files changed, 0 insertions(+), 0 deletions(-) rename {ansible/private_repo => private_repo}/ansible/inventory/dev/Core/common.yml (100%) rename {ansible/private_repo => private_repo}/ansible/inventory/dev/Core/hosts (100%) rename {ansible/private_repo => private_repo}/ansible/inventory/dev/Core/secrets.yml (100%) rename {ansible/private_repo => private_repo}/ansible/inventory/dev/DataPipeline/common.yml (100%) rename {ansible/private_repo => private_repo}/ansible/inventory/dev/DataPipeline/hosts (100%) rename {ansible/private_repo => private_repo}/ansible/inventory/dev/DataPipeline/secrets.yml (100%) rename {ansible/private_repo => private_repo}/ansible/inventory/dev/KnowledgePlatform/common.yml (100%) rename {ansible/private_repo => private_repo}/ansible/inventory/dev/KnowledgePlatform/hosts (100%) rename {ansible/private_repo => private_repo}/ansible/inventory/dev/KnowledgePlatform/secrets.yml (100%) diff --git a/ansible/private_repo/ansible/inventory/dev/Core/common.yml b/private_repo/ansible/inventory/dev/Core/common.yml similarity index 100% rename from ansible/private_repo/ansible/inventory/dev/Core/common.yml rename to private_repo/ansible/inventory/dev/Core/common.yml diff --git a/ansible/private_repo/ansible/inventory/dev/Core/hosts b/private_repo/ansible/inventory/dev/Core/hosts similarity index 100% rename from ansible/private_repo/ansible/inventory/dev/Core/hosts rename to private_repo/ansible/inventory/dev/Core/hosts diff --git a/ansible/private_repo/ansible/inventory/dev/Core/secrets.yml b/private_repo/ansible/inventory/dev/Core/secrets.yml similarity index 100% rename from ansible/private_repo/ansible/inventory/dev/Core/secrets.yml rename to private_repo/ansible/inventory/dev/Core/secrets.yml diff --git a/ansible/private_repo/ansible/inventory/dev/DataPipeline/common.yml b/private_repo/ansible/inventory/dev/DataPipeline/common.yml similarity index 100% rename from ansible/private_repo/ansible/inventory/dev/DataPipeline/common.yml rename to private_repo/ansible/inventory/dev/DataPipeline/common.yml diff --git a/ansible/private_repo/ansible/inventory/dev/DataPipeline/hosts b/private_repo/ansible/inventory/dev/DataPipeline/hosts similarity index 100% rename from ansible/private_repo/ansible/inventory/dev/DataPipeline/hosts rename to private_repo/ansible/inventory/dev/DataPipeline/hosts diff --git a/ansible/private_repo/ansible/inventory/dev/DataPipeline/secrets.yml b/private_repo/ansible/inventory/dev/DataPipeline/secrets.yml similarity index 100% rename from ansible/private_repo/ansible/inventory/dev/DataPipeline/secrets.yml rename to private_repo/ansible/inventory/dev/DataPipeline/secrets.yml diff --git a/ansible/private_repo/ansible/inventory/dev/KnowledgePlatform/common.yml b/private_repo/ansible/inventory/dev/KnowledgePlatform/common.yml similarity index 100% rename from ansible/private_repo/ansible/inventory/dev/KnowledgePlatform/common.yml rename to private_repo/ansible/inventory/dev/KnowledgePlatform/common.yml diff --git a/ansible/private_repo/ansible/inventory/dev/KnowledgePlatform/hosts b/private_repo/ansible/inventory/dev/KnowledgePlatform/hosts similarity index 100% rename from ansible/private_repo/ansible/inventory/dev/KnowledgePlatform/hosts rename to private_repo/ansible/inventory/dev/KnowledgePlatform/hosts diff --git a/ansible/private_repo/ansible/inventory/dev/KnowledgePlatform/secrets.yml b/private_repo/ansible/inventory/dev/KnowledgePlatform/secrets.yml similarity index 100% rename from ansible/private_repo/ansible/inventory/dev/KnowledgePlatform/secrets.yml rename to private_repo/ansible/inventory/dev/KnowledgePlatform/secrets.yml From bd88e7d8556438828bbd8ed4fa24174fd61d66da Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Fri, 8 Feb 2019 18:46:44 +0530 Subject: [PATCH 1031/1345] Add jenkins user to docker group --- deploy/jenkins/jenkins-server-setup.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deploy/jenkins/jenkins-server-setup.sh b/deploy/jenkins/jenkins-server-setup.sh index 3996203657..f937f92423 100755 --- a/deploy/jenkins/jenkins-server-setup.sh +++ b/deploy/jenkins/jenkins-server-setup.sh @@ -49,7 +49,7 @@ echo -e "\n\e[0;32m${bold}Installating Docker-py${normal}" pip install docker-py echo -e "\n\e[0;32m${bold}Adding jenkins user to docker group${normal}" -usermod -G docker jenkins +usermod -aG docker jenkins echo -e "\n\e[0;32m${bold}Creating bashrc for jenkins user ${normal}" cp /etc/skel/.bashrc /var/lib/jenkins From 54601d28ec3c2c4eee1f7914dcf69e5b56e91cd2 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Fri, 8 Feb 2019 19:03:10 +0530 Subject: [PATCH 1032/1345] Issue #000 feat: Updated variable for upstream_url sunbird-bootcamp --- private_repo/ansible/inventory/dev/Core/common.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/private_repo/ansible/inventory/dev/Core/common.yml b/private_repo/ansible/inventory/dev/Core/common.yml index 0abe5da93d..bc84ec41e2 100644 --- a/private_repo/ansible/inventory/dev/Core/common.yml +++ b/private_repo/ansible/inventory/dev/Core/common.yml @@ -61,7 +61,7 @@ content_service_blacklisted_channels: "" sunbird_installation_display_name: "" sunbird_blob_env: # Plugins -upstream_url: "sunbird{{sunbird_blob_env}}.blob.core.windows.net/sunbird-content-{{sunbird_blob_env}}" +upstream_url: "{{azure_account_name}}.blob.core.windows.net/{{sunbird_content_azure_storage_container}}" sunbird_portal_user_upload_ref_link: http://www.sunbird.org/features-documentation/register_user # Artifacts-upload and download From c483491c02c41cd8a5732ab7835b1fd02a1beb9f Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Fri, 8 Feb 2019 19:10:24 +0530 Subject: [PATCH 1033/1345] Issue #000: Updating artifact source order --- .../jobs/dev/jobs/Core/jobs/Cassandra/config.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Cassandra/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Cassandra/config.xml index df58db0c39..7ef0977c7c 100644 --- a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Cassandra/config.xml +++ b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Cassandra/config.xml @@ -43,8 +43,8 @@ <font color=teal size=2>Choose the artifact source</font> - JenkinsJob ArtifactRepo + JenkinsJob @@ -94,4 +94,4 @@ false - \ No newline at end of file + From c4a6a0f7fdd118899adeec7715335bc7fa47a7f6 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Fri, 8 Feb 2019 19:24:09 +0530 Subject: [PATCH 1034/1345] Issue #000 feat: Updated Core inventory sunbird-bootcamp --- private_repo/ansible/inventory/dev/Core/hosts | 33 +++++++++---------- 1 file changed, 16 insertions(+), 17 deletions(-) diff --git a/private_repo/ansible/inventory/dev/Core/hosts b/private_repo/ansible/inventory/dev/Core/hosts index c1cc895b34..fc16d0ffba 100644 --- a/private_repo/ansible/inventory/dev/Core/hosts +++ b/private_repo/ansible/inventory/dev/Core/hosts @@ -1,14 +1,14 @@ [kafka-1] -kafka_id=1 +18.0.0.13 kafka_id=1 [processing-cluster-kafka] - +18.0.0.13 [telemetry-search-cluster] - +18.0.0.13 [swarm-bootstrap-manager] - +18.0.0.15 [kafka:children] kafka-1 @@ -17,31 +17,31 @@ kafka-1 #10.20.0.12 [es-1] -es_instance_name=es-1 es_etc_node_master=true es_etc_node_data=true +18.0.0.9 es_instance_name=es-1 es_etc_node_master=true es_etc_node_data=true [es-backup:children] -es-1 +18.0.0.9 es-1 [log-es-backup:children] log-es-1 [es:children] -es-1 +18.0.0.9 es-1 [cassandra-1] - +18.0.0.9 [cassandra:children] cassandra-1 [postgresql-master-1] - +18.0.0.9 [postgresql-master:children] postgresql-master-1 [postgresql-slave-1] - +18.0.0.9 [postgresql-slave:children] postgresql-slave-1 @@ -57,9 +57,7 @@ swarm_master=true swarm-manager-1 [swarm-worker-1] - - -[swarm-worker-2] +18.0.0.15 [swarm-worker:children] @@ -67,31 +65,32 @@ swarm-worker-1 swarm-worker-2 [keycloak-1] -#15.0.0.7 +18.0.0.9 [keycloak:children] keycloak-1 [log-es-1] -node_name=refactor-log-es-1 es_etc_node_master=true es_etc_node_data=true +18.0.0.9 node_name=refactor-log-es-1 es_etc_node_master=true es_etc_node_data=true [log-es:children] log-es-1 [swarm-agent-for-prometheus-1] - +18.0.0.15 [swarm-agent-for-prometheus:children] swarm-agent-for-prometheus-1 [swarm-agent-for-grafana-1] - +18.0.0.15 [swarm-agent-for-grafana:children] swarm-agent-for-grafana-1 [swarm-agent-for-alertmanager-1] +18.0.0.15 [local] localhost From f721333e5ca8814f87a88223dd4f4f96a3c38ca9 Mon Sep 17 00:00:00 2001 From: harshavardhnc Date: Fri, 8 Feb 2019 19:39:59 +0530 Subject: [PATCH 1035/1345] Issue #00 fix: variablizing the roles --- ansible/roles/prometheus_config/defaults/main.yml | 2 ++ ansible/roles/prometheus_config/tasks/main.yml | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) create mode 100644 ansible/roles/prometheus_config/defaults/main.yml diff --git a/ansible/roles/prometheus_config/defaults/main.yml b/ansible/roles/prometheus_config/defaults/main.yml new file mode 100644 index 0000000000..7b16927069 --- /dev/null +++ b/ansible/roles/prometheus_config/defaults/main.yml @@ -0,0 +1,2 @@ +prometheus_file_path: "/opt/docker/stacks/monitor/config/prometheus.yml" + diff --git a/ansible/roles/prometheus_config/tasks/main.yml b/ansible/roles/prometheus_config/tasks/main.yml index 21d6784b5a..84a6485fe4 100644 --- a/ansible/roles/prometheus_config/tasks/main.yml +++ b/ansible/roles/prometheus_config/tasks/main.yml @@ -2,14 +2,14 @@ - name: Update node exporter ip replace: - path: /opt/docker/stacks/monitor/config/prometheus.yml + path: "{{ prometheus_file_path }}" regexp: ":9101']$" replace: ":9101{% for ip in groups['all'] %}','{{ ip }}:9101{% endfor %}']" - name: Update process exporter ip replace: - path: /opt/docker/stacks/monitor/config/prometheus.yml + path: "{{ prometheus_file_path }}" regexp: ":1111']$" replace: ":1111{% for ip in groups['process-exporter'] %}','{{ ip }}:1111{% endfor %}']" From c2a95f5a02f34117d3fe9583851a8ee338e852b5 Mon Sep 17 00:00:00 2001 From: Kartish Date: Fri, 8 Feb 2019 20:16:03 +0530 Subject: [PATCH 1036/1345] Issue #0000 fix: variables update --- ansible/inventory/env/group_vars/env.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ansible/inventory/env/group_vars/env.yml b/ansible/inventory/env/group_vars/env.yml index ad539f8000..40e3c01710 100644 --- a/ansible/inventory/env/group_vars/env.yml +++ b/ansible/inventory/env/group_vars/env.yml @@ -19,6 +19,7 @@ sunbird_url_shortner_enable: 'false' sunbird_keycloak_required_action_link_expiration_seconds: 2592000 ## Below passwords are used by DB install scripts when creating databases. Please use strong passwords. +core_vault_postgres_username: postgres sunbird_pg_user: "{{core_vault_postgres_username}}" application_postgres_user: "{{core_vault_postgres_username}}" application_postgres_password: "{{core_vault_postgres_password}}" @@ -47,6 +48,7 @@ vault_badging_authorization_key: "{{core_vault_badging_authorization_key}}" vault_postgres_exporter_password: "{{core_vault_postgres_exporter_password}}" ## Postgres configuration +keycloak_admin_username: admin swarm_address_space: "{{groups['swarm-manager'][0].split(\".\")[0]}}.0.0.0/8" #Application server address space (e.g. 10.3.0.0/24), also the agentpublicSubnet if using Azure scripts provided keycloak_address_space: "{{groups['keycloak'][0].split(\".\")[0]}}.0.0.0/8" postgres_address_space: "{{groups['postgresql-master'][0].split(\".\")[0]}}.0.0.0/8" From a1cc2fa43c27f64ff84305ea0d6e320767c1c1f3 Mon Sep 17 00:00:00 2001 From: Santhosh Gandham Date: Fri, 8 Feb 2019 20:17:56 +0530 Subject: [PATCH 1037/1345] Updated keycloak and postgres vars --- private_repo/ansible/inventory/dev/Core/common.yml | 1 - private_repo/ansible/inventory/dev/Core/secrets.yml | 1 - 2 files changed, 2 deletions(-) diff --git a/private_repo/ansible/inventory/dev/Core/common.yml b/private_repo/ansible/inventory/dev/Core/common.yml index bc84ec41e2..4aef81fd6c 100644 --- a/private_repo/ansible/inventory/dev/Core/common.yml +++ b/private_repo/ansible/inventory/dev/Core/common.yml @@ -14,7 +14,6 @@ ssh_public_key_deployer: keycloak_url: #Keycloak Load balancer IP # Stack_keycloak -keycloak_admin_username: #Keycloak Admin username keycloak_api_management_user_email: keycloak_api_management_user_first_name: keycloak_api_management_user_last_name: diff --git a/private_repo/ansible/inventory/dev/Core/secrets.yml b/private_repo/ansible/inventory/dev/Core/secrets.yml index 407cb6c26c..555c24c1c5 100644 --- a/private_repo/ansible/inventory/dev/Core/secrets.yml +++ b/private_repo/ansible/inventory/dev/Core/secrets.yml @@ -2,7 +2,6 @@ ####### Secrets ####### core_vault_google_keycloak_secret: core_vault_sunbird_google_oauth_clientSecret: -core_vault_postgres_username: core_vault_ansible_vault_password: core_vault_ssh_public_key_deployer: core_vault_sudo_crypt_deployer: "" From 77eeb07114bc827da3276d82719bb861a6491c80 Mon Sep 17 00:00:00 2001 From: Santhosh Gandham Date: Fri, 8 Feb 2019 20:42:10 +0530 Subject: [PATCH 1038/1345] Updated keycloak and postgres vars --- private_repo/ansible/inventory/dev/Core/hosts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/private_repo/ansible/inventory/dev/Core/hosts b/private_repo/ansible/inventory/dev/Core/hosts index fc16d0ffba..94ef5905d6 100644 --- a/private_repo/ansible/inventory/dev/Core/hosts +++ b/private_repo/ansible/inventory/dev/Core/hosts @@ -99,7 +99,7 @@ localhost swarm-agent-for-alertmanager-1 [kong-api] -localhost ansible_connection=local +localhost [swarm-bootstrap-manager:children] swarm-manager From 55e565e2e527ff1fa34af0fb2654ea9d4a07df8c Mon Sep 17 00:00:00 2001 From: Santhosh Gandham Date: Fri, 8 Feb 2019 20:44:34 +0530 Subject: [PATCH 1039/1345] Updated keycloak and postgres vars --- private_repo/ansible/inventory/dev/Core/common.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/private_repo/ansible/inventory/dev/Core/common.yml b/private_repo/ansible/inventory/dev/Core/common.yml index 4aef81fd6c..451d0cff26 100644 --- a/private_repo/ansible/inventory/dev/Core/common.yml +++ b/private_repo/ansible/inventory/dev/Core/common.yml @@ -9,6 +9,7 @@ ekstep_s3_env: sunbird_app_name: api_proxy_name: # Domain name on which device register and other api's will be accessed ssh_public_key_deployer: +bootstrap_user: # Proxy keycloak_url: #Keycloak Load balancer IP From 07673e4954d3307e549689b42c475b29538614b9 Mon Sep 17 00:00:00 2001 From: S M Y Date: Fri, 8 Feb 2019 20:56:52 +0530 Subject: [PATCH 1040/1345] Issue #000 : vars update --- ansible/inventory/env/group_vars/env.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/ansible/inventory/env/group_vars/env.yml b/ansible/inventory/env/group_vars/env.yml index 40e3c01710..b0ac531e6f 100644 --- a/ansible/inventory/env/group_vars/env.yml +++ b/ansible/inventory/env/group_vars/env.yml @@ -19,6 +19,7 @@ sunbird_url_shortner_enable: 'false' sunbird_keycloak_required_action_link_expiration_seconds: 2592000 ## Below passwords are used by DB install scripts when creating databases. Please use strong passwords. +ssh_public_key_deployer: "{{core_vault_ssh_public_key_deployer}}" core_vault_postgres_username: postgres sunbird_pg_user: "{{core_vault_postgres_username}}" application_postgres_user: "{{core_vault_postgres_username}}" From 00965e0f80f474ca33cd48a6ad7b4dc3863e0110 Mon Sep 17 00:00:00 2001 From: Kartish Date: Fri, 8 Feb 2019 21:03:59 +0530 Subject: [PATCH 1041/1345] Issue #0000 fix: variable name --- ansible/inventory/env/group_vars/env.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/inventory/env/group_vars/env.yml b/ansible/inventory/env/group_vars/env.yml index b0ac531e6f..618ae8f7c2 100644 --- a/ansible/inventory/env/group_vars/env.yml +++ b/ansible/inventory/env/group_vars/env.yml @@ -210,7 +210,7 @@ docker_hub_password: "{{ core_vault_docker_hub_password }}" jenkins_slave_jenkins_username: "{{ core_vault_jenkins_slave_jenkins_username }}" jenkins_slave_jenkins_password: "{{ core_vault_jenkins_slave_jenkins_password }}" ops_private_key: "{{ core_vault_ops_private_key }}" -deployer_ssh_key: "{{ core_vault_deployer_ssh_key }}" +ssh_public_key_deployer: "{{ core_vault_deployer_ssh_key }}" proxy_prometheus_admin_creds: "{{ core_vault_proxy_prometheus_admin_creds }}" vault_docker_registry_url: "{{core_vault_docker_registry_url}}" vault_docker_registry_user: "{{core_vault_docker_registry_user}}" From e18fe73e78833566c945a73b3b8ccd2d082095f8 Mon Sep 17 00:00:00 2001 From: S M Y Date: Fri, 8 Feb 2019 21:09:44 +0530 Subject: [PATCH 1042/1345] Issue #000 : vars update --- ansible/inventory/env/group_vars/env.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/ansible/inventory/env/group_vars/env.yml b/ansible/inventory/env/group_vars/env.yml index b0ac531e6f..40e3c01710 100644 --- a/ansible/inventory/env/group_vars/env.yml +++ b/ansible/inventory/env/group_vars/env.yml @@ -19,7 +19,6 @@ sunbird_url_shortner_enable: 'false' sunbird_keycloak_required_action_link_expiration_seconds: 2592000 ## Below passwords are used by DB install scripts when creating databases. Please use strong passwords. -ssh_public_key_deployer: "{{core_vault_ssh_public_key_deployer}}" core_vault_postgres_username: postgres sunbird_pg_user: "{{core_vault_postgres_username}}" application_postgres_user: "{{core_vault_postgres_username}}" From 966c2003f531aea66b0cd2fae42e96a49987f109 Mon Sep 17 00:00:00 2001 From: msknext Date: Fri, 8 Feb 2019 21:23:46 +0530 Subject: [PATCH 1043/1345] Reverting env of jenkins-pipeline --- ansible/inventory/env/group_vars/env.yml | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/ansible/inventory/env/group_vars/env.yml b/ansible/inventory/env/group_vars/env.yml index 3a89698e93..34c676f6f6 100644 --- a/ansible/inventory/env/group_vars/env.yml +++ b/ansible/inventory/env/group_vars/env.yml @@ -19,7 +19,6 @@ sunbird_url_shortner_enable: 'false' sunbird_keycloak_required_action_link_expiration_seconds: 2592000 ## Below passwords are used by DB install scripts when creating databases. Please use strong passwords. -core_vault_postgres_username: postgres sunbird_pg_user: "{{core_vault_postgres_username}}" application_postgres_user: "{{core_vault_postgres_username}}" application_postgres_password: "{{core_vault_postgres_password}}" @@ -48,7 +47,6 @@ vault_badging_authorization_key: "{{core_vault_badging_authorization_key}}" vault_postgres_exporter_password: "{{core_vault_postgres_exporter_password}}" ## Postgres configuration -keycloak_admin_username: admin swarm_address_space: "{{groups['swarm-manager'][0].split(\".\")[0]}}.0.0.0/8" #Application server address space (e.g. 10.3.0.0/24), also the agentpublicSubnet if using Azure scripts provided keycloak_address_space: "{{groups['keycloak'][0].split(\".\")[0]}}.0.0.0/8" postgres_address_space: "{{groups['postgresql-master'][0].split(\".\")[0]}}.0.0.0/8" @@ -209,7 +207,7 @@ docker_hub_password: "{{ core_vault_docker_hub_password }}" jenkins_slave_jenkins_username: "{{ core_vault_jenkins_slave_jenkins_username }}" jenkins_slave_jenkins_password: "{{ core_vault_jenkins_slave_jenkins_password }}" ops_private_key: "{{ core_vault_ops_private_key }}" -ssh_public_key_deployer: "{{ core_vault_deployer_ssh_key }}" +deployer_ssh_key: "{{ core_vault_deployer_ssh_key }}" proxy_prometheus_admin_creds: "{{ core_vault_proxy_prometheus_admin_creds }}" vault_docker_registry_url: "{{core_vault_docker_registry_url}}" vault_docker_registry_user: "{{core_vault_docker_registry_user}}" @@ -420,7 +418,7 @@ content_service_blacklisted_mimetype: '' prometheus_storage_retention_time: 72h0m0s kafka_jvm_opts: "-Xmx1G -Xms1G" kafka_log_retention_hours: 2400 -sunbird_cloud_storage_urls: 'https://s3.ap-south-1.amazonaws.com/ekstep-public-dev/,https://ekstep-public-dev.s3-ap-south-1.amazonaws.com/,https://{{azure_account_name}}.blob.core.windows.net/content' +sunbird_cloud_storage_urls: 'https://s3.ap-south-1.amazonaws.com/ekstep-public-dev/,https://ekstep-public-dev.s3-ap-south-1.amazonaws.com/,https://{{azure_account_name}}.blob.core.windows.net/{{sunbird_content_azure_storage_container}}' sunbird_email_max_recipients_limit: 100 sunbird_cassandra_consistency_level: one sunbird_cassandra_replication_strategy: '{"class":"SimpleStrategy","replication_factor":"1"}' From 25c89bae3ec5983b98dc1b3265e5becc5e318d4a Mon Sep 17 00:00:00 2001 From: S M Y Date: Sat, 9 Feb 2019 09:58:17 +0530 Subject: [PATCH 1044/1345] Issue #000 vars: vars update --- ansible/inventory/env/group_vars/env.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/ansible/inventory/env/group_vars/env.yml b/ansible/inventory/env/group_vars/env.yml index 34c676f6f6..88f9703586 100644 --- a/ansible/inventory/env/group_vars/env.yml +++ b/ansible/inventory/env/group_vars/env.yml @@ -524,3 +524,4 @@ config_refresh_interval: 10 config_service_enabled: false trampoline_secret: "{{core_vault_trampoline_secret}}" +es_api_host: "{{inventory_hostname}}" \ No newline at end of file From fbaf1b0afc622bac3abf37a4ce645b4e87eb0915 Mon Sep 17 00:00:00 2001 From: S M Y Date: Sat, 9 Feb 2019 10:38:51 +0530 Subject: [PATCH 1045/1345] Issue #000 vars: no log for data --- ansible/roles/curl_es_command/tasks/main.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/ansible/roles/curl_es_command/tasks/main.yml b/ansible/roles/curl_es_command/tasks/main.yml index 5ca8800891..f539b182c5 100644 --- a/ansible/roles/curl_es_command/tasks/main.yml +++ b/ansible/roles/curl_es_command/tasks/main.yml @@ -9,3 +9,4 @@ args: chdir: /tmp/ run_once: true + no_log: false From 9a474a810b5470ce1dc1c5c26c9e4f8c0bec9a01 Mon Sep 17 00:00:00 2001 From: S M Y Date: Sat, 9 Feb 2019 10:52:25 +0530 Subject: [PATCH 1046/1345] Issue #000 vars: pause for 30 seconds for cassandra to be up --- ansible/roles/cassandra/tasks/main.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ansible/roles/cassandra/tasks/main.yml b/ansible/roles/cassandra/tasks/main.yml index fbddd2d29c..20ee6afa72 100755 --- a/ansible/roles/cassandra/tasks/main.yml +++ b/ansible/roles/cassandra/tasks/main.yml @@ -47,3 +47,6 @@ group: "root" mode: 0644 notify: "restart cassandra" + +- pause: + seconds: 30 From fb76c4432104b842e7bb1d8b9ac04c66ff75d873 Mon Sep 17 00:00:00 2001 From: S M Y Date: Sat, 9 Feb 2019 10:55:37 +0530 Subject: [PATCH 1047/1345] Issue #000 vars: wait for cassandra to be up and running --- ansible/roles/cassandra/tasks/main.yml | 4 ++-- ansible/roles/elasticsearch/tasks/.main.yml.swp | Bin 0 -> 12288 bytes 2 files changed, 2 insertions(+), 2 deletions(-) create mode 100644 ansible/roles/elasticsearch/tasks/.main.yml.swp diff --git a/ansible/roles/cassandra/tasks/main.yml b/ansible/roles/cassandra/tasks/main.yml index 20ee6afa72..a9f540a412 100755 --- a/ansible/roles/cassandra/tasks/main.yml +++ b/ansible/roles/cassandra/tasks/main.yml @@ -48,5 +48,5 @@ mode: 0644 notify: "restart cassandra" -- pause: - seconds: 30 +- name: wait for cassandra to be up and running + wait_for: host={{inventory_hostname}} port=9042 delay=30 diff --git a/ansible/roles/elasticsearch/tasks/.main.yml.swp b/ansible/roles/elasticsearch/tasks/.main.yml.swp new file mode 100644 index 0000000000000000000000000000000000000000..5da4936ea5181d44edfa250dd5ab5a84327c403b GIT binary patch literal 12288 zcmeI2O^X~w7{_ZoX*4k?M2}Bqk-kmnvdh-a<=Z!I z(e=?~h3mXh_g{YJ{q4bp!Ozbrm1fSkvi%WPHO{-KF}j$t_r|rCu2kuchkaBH^m)%Z z&U{-WJ0_ocQ(mN*^>t#+PQ-qmMr?hKv~?!5tn+a0J8k!@A8V70mT`1EtvrhXF>opa zXVr^WwySS*V|bCCedg^`MadvBAO^&M7!U(uKn#chF(3y19|l}DP#>d|$C`4kH}}D@ zd-EtaF(3xSfEW-1Vn7Ut0Wly3#DEwO17hGmXh2Vu`r-+tK0AZSb;Az`Nir@H%)6jKBqO4h(<-56>y}EBFaK0N;VH!B^l*V8CtgCU_N0!1Lgb zvr7E}9)SDca}a{}z%6hSya3LF$H8AuDfK7#9sCA<03p}`H^3Qi?@6V81RsJ|Kw0aj zWxaBV0Wly3#DEwO17bi7{Cft7_UD|8=@Q$36OE&w!QD)Ud!&;oZ4NDmMQ+@3NG2f+ zsrrH$YggoKH@B)`m&)M6a&F03n)1vfJgs`#_ECaUstfLPZ&8|8FRc!qb~@U)s(nq| zmhv!{Fv5}7F^&9cLVi2V{sC66ZT9NdSEpDvGR|jd9#h*%I&>yYEX_G*O45Dmoq{c= zW}VI*<5%|9);d`$JCO-FvE5?ZnreG(|HTPyZX)GrtEr;Ba<&WDOzT6r9wj=4iKdyo zCVMqkZCrp_$23o^n;aZqiaIkv`E+(bP^2l+VMcT1dL{9J8G4Ay?#0-x* zI}6=g5^pu6K9^i3Ez?$lRGYFBU2l?pj;gJSC)&8fq@#Vkw8VF@;~m$zNL$)xiuIBb z#+F8nImanBa{C1w)s#iWu1VHb)O2+>d8y9^O-GP3BAt#Rm|N|J{&bt6{eo?no6N0! zXWMmR!e&4}Ay$26cGoHF&!!&Nk8Mj>Oiz zCmGZ^z7&UzSjD&7Ih=F2ho2PA%T@!9R`sOh!9wSDOv8hN<^X+=+F+(*6DK|H;ED!(y literal 0 HcmV?d00001 From 21e0e4eda277f2da6b094a6cbf669862c180a07a Mon Sep 17 00:00:00 2001 From: S M Y Date: Sat, 9 Feb 2019 10:55:51 +0530 Subject: [PATCH 1048/1345] Issue #000 vars: wait for cassandra to be up and running --- ansible/roles/elasticsearch/tasks/.main.yml.swp | Bin 12288 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 ansible/roles/elasticsearch/tasks/.main.yml.swp diff --git a/ansible/roles/elasticsearch/tasks/.main.yml.swp b/ansible/roles/elasticsearch/tasks/.main.yml.swp deleted file mode 100644 index 5da4936ea5181d44edfa250dd5ab5a84327c403b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12288 zcmeI2O^X~w7{_ZoX*4k?M2}Bqk-kmnvdh-a<=Z!I z(e=?~h3mXh_g{YJ{q4bp!Ozbrm1fSkvi%WPHO{-KF}j$t_r|rCu2kuchkaBH^m)%Z z&U{-WJ0_ocQ(mN*^>t#+PQ-qmMr?hKv~?!5tn+a0J8k!@A8V70mT`1EtvrhXF>opa zXVr^WwySS*V|bCCedg^`MadvBAO^&M7!U(uKn#chF(3y19|l}DP#>d|$C`4kH}}D@ zd-EtaF(3xSfEW-1Vn7Ut0Wly3#DEwO17hGmXh2Vu`r-+tK0AZSb;Az`Nir@H%)6jKBqO4h(<-56>y}EBFaK0N;VH!B^l*V8CtgCU_N0!1Lgb zvr7E}9)SDca}a{}z%6hSya3LF$H8AuDfK7#9sCA<03p}`H^3Qi?@6V81RsJ|Kw0aj zWxaBV0Wly3#DEwO17bi7{Cft7_UD|8=@Q$36OE&w!QD)Ud!&;oZ4NDmMQ+@3NG2f+ zsrrH$YggoKH@B)`m&)M6a&F03n)1vfJgs`#_ECaUstfLPZ&8|8FRc!qb~@U)s(nq| zmhv!{Fv5}7F^&9cLVi2V{sC66ZT9NdSEpDvGR|jd9#h*%I&>yYEX_G*O45Dmoq{c= zW}VI*<5%|9);d`$JCO-FvE5?ZnreG(|HTPyZX)GrtEr;Ba<&WDOzT6r9wj=4iKdyo zCVMqkZCrp_$23o^n;aZqiaIkv`E+(bP^2l+VMcT1dL{9J8G4Ay?#0-x* zI}6=g5^pu6K9^i3Ez?$lRGYFBU2l?pj;gJSC)&8fq@#Vkw8VF@;~m$zNL$)xiuIBb z#+F8nImanBa{C1w)s#iWu1VHb)O2+>d8y9^O-GP3BAt#Rm|N|J{&bt6{eo?no6N0! zXWMmR!e&4}Ay$26cGoHF&!!&Nk8Mj>Oiz zCmGZ^z7&UzSjD&7Ih=F2ho2PA%T@!9R`sOh!9wSDOv8hN<^X+=+F+(*6DK|H;ED!(y From 7298e77606a1a9d5ed5ca3291cc6c595b0fa3430 Mon Sep 17 00:00:00 2001 From: msknext Date: Sat, 9 Feb 2019 11:38:05 +0530 Subject: [PATCH 1049/1345] Issue #0000: Udpated keyclock bootstrap --- pipelines/deploy/keycloak-realm/Jenkinsfile | 61 ++++++--------------- 1 file changed, 18 insertions(+), 43 deletions(-) diff --git a/pipelines/deploy/keycloak-realm/Jenkinsfile b/pipelines/deploy/keycloak-realm/Jenkinsfile index 9f19d7234b..636fb28de2 100644 --- a/pipelines/deploy/keycloak-realm/Jenkinsfile +++ b/pipelines/deploy/keycloak-realm/Jenkinsfile @@ -12,52 +12,27 @@ node() { checkout scm } - ansiColor('xterm') { - values = lp_dp_params() - stage('get artifact') { - currentWs = sh(returnStdout: true, script: 'pwd').trim() - artifact = values.artifact_name + ":" + values.artifact_version - values.put('currentWs', currentWs) - if (params.artifact_source == "Remote") { - println(ANSI_BOLD + ANSI_YELLOW + '''\ - Option chosen is Remote, ignoring any previously copied artifacts and new artifacts will be downloaded from remote source - '''.stripIndent().replace("\n", " ") + ANSI_NORMAL) - ansiblePlaybook = "${currentWs}/devops/artifacts-download.yml" - ansibleExtraArgs = """\ - --extra-vars "artifact=${artifact} - artifact_path=${currentWs}/${artifact}" - --vault-password-file /run/secrets/vault-pass - """.stripIndent().replace("\n", " ") - values.put('ansiblePlaybook', ansiblePlaybook) - values.put('ansibleExtraArgs', ansibleExtraArgs) - ansible_playbook_run(values) - } else { - println(ANSI_BOLD + ANSI_YELLOW + '''\ - Option chosen is Local, using the artifacts copied - '''.stripIndent().replace("\n", " ") + ANSI_NORMAL) - } - } - stage('deploy artifact') { - sh """ - unzip ${artifact} - tar zxvf keycloak_build.tar.gz -C ansible - """ - ansiblePlaybook = "${currentWs}/ansible/keycloak.yml" - ansibleExtraArgs = "--tags keycloak-bootstrap --vault-password-file /run/secrets/vault-pass" - values.put('ansiblePlaybook', ansiblePlaybook) - values.put('ansibleExtraArgs', ansibleExtraArgs) - println values - ansible_playbook_run(values) - - archiveArtifacts artifacts: "${artifact}", fingerprint: true, onlyIfSuccessful: true - archiveArtifacts artifacts: 'metadata.json', onlyIfSuccessful: true - currentBuild.description = "${values.artifact_version}" - } + ansiColor('xterm') { + stage('deploy') { + values = [:] + currentWs = sh(returnStdout: true, script: 'pwd').trim() + envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-3].trim() + module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() + jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() + ansiblePlaybook = "${currentWs}/ansible/keycloak.yml" + ansibleExtraArgs = "--tags keycloak-bootstrap --vault-password-file /run/secrets/vault-pass" + values.put('currentWs', currentWs) + values.put('env', envDir) + values.put('module', module) + values.put('jobName', jobName) + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + println values + ansible_playbook_run(values) } + } } catch (err) { - currentBuild.result = "FAILURE" throw err } } - From 566faf0de0c4aed17b0c98507177cdeb6c43bf82 Mon Sep 17 00:00:00 2001 From: S M Y Date: Sat, 9 Feb 2019 12:19:15 +0530 Subject: [PATCH 1050/1345] Issue #000 vars: vars update --- ansible/inventory/env/group_vars/env.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/inventory/env/group_vars/env.yml b/ansible/inventory/env/group_vars/env.yml index 88f9703586..096f15eb38 100644 --- a/ansible/inventory/env/group_vars/env.yml +++ b/ansible/inventory/env/group_vars/env.yml @@ -166,7 +166,7 @@ sunbird_search_service_api_key: "{{ core_vault_sunbird_ekstep_api_key }}" sunbird_dial_repo_api_base_url: "{{sunbird_ekstep_api_base_url}}" sunbird_dial_repo_api_key: "{{ core_vault_sunbird_ekstep_api_key }}" sunbird_plugin_repo_api_base_url: "{{sunbird_ekstep_api_base_url}}" -sunbird_plugin_repo_api_key: "{{ core_vault_sunbird_ekstep_api_key }}" +sunbird_plugin_repo_api_key: "{{ ekstep_api_key }}" sunbird_data_service_api_base_url: "{{sunbird_ekstep_api_base_url}}" sunbird_data_service_api_key: "{{ core_vault_sunbird_ekstep_api_key }}" From 830f7c69b2246761101fed09195cc154f92e3512 Mon Sep 17 00:00:00 2001 From: msknext Date: Sat, 9 Feb 2019 09:39:29 +0000 Subject: [PATCH 1051/1345] Issue #000: Updated config and setup files --- deploy/jenkins/jenkins-config-setup.sh | 4 +- .../dev/jobs/Core/jobs/Cassandra/config.xml | 5 +- .../jobs/dev/jobs/Core/jobs/Proxy/config.xml | 3 +- .../jobs/ApplicationElasticSearch/config.xml | 5 +- .../dev/jobs/Core/jobs/Keycloak/config.xml | 2 +- .../jobs/Core/jobs/KeycloakRealm/config.xml | 90 +------------------ .../jobs/ContentTool/config.xml | 7 +- .../KnowledgePlatform/jobs/Neo4j/config.xml | 5 +- .../jobs/SamzaTelemetrySchemas/config.xml | 73 --------------- .../jobs/DataPipeline/jobs/Kafka/config.xml | 7 +- .../jobs/TelemetrySearch/config.xml | 5 +- .../DataPipeline/jobs/Zookeeper/config.xml | 7 +- .../jobs/Cassandra/config.xml | 5 +- .../jobs/CompositeSearch/config.xml | 6 +- .../KnowledgePlatform/jobs/Kafka/config.xml | 6 +- .../jobs/Zookeeper/config.xml | 6 +- 16 files changed, 42 insertions(+), 194 deletions(-) delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/SamzaTelemetrySchemas/config.xml diff --git a/deploy/jenkins/jenkins-config-setup.sh b/deploy/jenkins/jenkins-config-setup.sh index dd278b8f10..70a7a8ef3a 100755 --- a/deploy/jenkins/jenkins-config-setup.sh +++ b/deploy/jenkins/jenkins-config-setup.sh @@ -12,8 +12,8 @@ rsync -r jobs /var/lib/jenkins/ chown -R jenkins:jenkins /var/lib/jenkins/jobs echo -e "\n\e[0;32m${bold}Downloading and copying m2 directory to Jenkins ${normal}" -wget https://sunbirdpublic.blob.core.windows.net/installation/m2.zip -unzip m2.zip +wget https://sunbirdpublic.blob.core.windows.net/installation/m2_new.zip +unzip m2_new.zip mv .m2 /var/lib/jenkins chown -R jenkins:jenkins /var/lib/jenkins/.m2 diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Cassandra/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Cassandra/config.xml index 7ef0977c7c..bcbd442194 100644 --- a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Cassandra/config.xml +++ b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Cassandra/config.xml @@ -66,7 +66,7 @@ - + 2 @@ -85,6 +85,7 @@ true false + 0 false @@ -94,4 +95,4 @@ false - + \ No newline at end of file diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Proxy/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Proxy/config.xml index ac1fc02ed4..ad52ffcde3 100644 --- a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Proxy/config.xml +++ b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Proxy/config.xml @@ -67,7 +67,7 @@ - + 2 @@ -86,6 +86,7 @@ true false + 0 false diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/ApplicationElasticSearch/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/ApplicationElasticSearch/config.xml index 84bb3adf71..3a52e3efd3 100644 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/ApplicationElasticSearch/config.xml +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/ApplicationElasticSearch/config.xml @@ -19,7 +19,7 @@ - + 2 @@ -28,7 +28,7 @@ - ${public_repo_branch} + */jenkins-pipeline false @@ -38,6 +38,7 @@ true false + 0 false diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Keycloak/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Keycloak/config.xml index 036bda58f7..83a3195c65 100644 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Keycloak/config.xml +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Keycloak/config.xml @@ -29,7 +29,7 @@ - + 2 diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/KeycloakRealm/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/KeycloakRealm/config.xml index 72e3e6a1fc..c48250a276 100644 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/KeycloakRealm/config.xml +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/KeycloakRealm/config.xml @@ -24,100 +24,12 @@ false false - - - - absolute_job_path - <font color=teal size=2>Please specify the absolute path to the job from which the metadata.json will be copied.</font> - ArtifactUpload/dev/Core/Keycloak - false - - - artifact_source - <font color=teal size=2>Choose the artifact source.</font> - choice-parameter-12566219493457 - 1 - - false - - - - false - - - KeycloakRealm - - - PT_SINGLE_SELECT - false - 1 - - - build_number - - choice-parameter-12566221440336 - 1 - - false - - - - false - - - KeycloakRealm - - artifact_source - ET_FORMATTED_HTML - true - - - artifact_version - - choice-parameter-12566223395914 - 1 - - false - - - - false - - - KeycloakRealm - - artifact_source - ET_FORMATTED_HTML - true - - - - + 2 diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/ContentTool/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/ContentTool/config.xml index c2197a8f59..300543e71a 100644 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/ContentTool/config.xml +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/ContentTool/config.xml @@ -8,7 +8,7 @@ - + <font color=red size=2><b>This jobs is currently disabled as it's not being used.</b></font> false @@ -129,7 +129,7 @@ return "<b>Not Applicable</b>" - + 2 @@ -148,6 +148,7 @@ return "<b>Not Applicable</b>" true false + 0 false @@ -156,5 +157,5 @@ return "<b>Not Applicable</b>" false - false + true \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4j/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4j/config.xml index b13f7a1eb4..e5a4a29452 100644 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4j/config.xml +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4j/config.xml @@ -82,7 +82,7 @@ return "<b>Not Applicable</b>" artifact_source ET_FORMATTED_HTML - false + true artifact_version @@ -117,7 +117,7 @@ return "<b>Not Applicable</b>" - + 2 @@ -136,6 +136,7 @@ return "<b>Not Applicable</b>" true false + 0 false diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/SamzaTelemetrySchemas/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/SamzaTelemetrySchemas/config.xml deleted file mode 100644 index f493dd4771..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/SamzaTelemetrySchemas/config.xml +++ /dev/null @@ -1,73 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - This job is being provisioned from datapipeline directory. This can be enabled and used for provisioning, if datapipeline jobs are not used. - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - host - <font color=teal size=2>Please specify host to deploy. The default value is just a placeholder which can be changed as per inventory.</font> - dp-yarn - false - - - version - <font color=teal size=2>Please specify version to deploy. The default value is just a placeholder which can be changed as per need.</font> - release-1.9 - false - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-learning-platform.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - false - - - - pipelines/deploy/samza-telemetry-schemas/Jenkinsfile - false - - - true - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/Kafka/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/Kafka/config.xml index 410e68cb69..f0f0b2698e 100644 --- a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/Kafka/config.xml +++ b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/Kafka/config.xml @@ -8,7 +8,7 @@ - + <font color=red size=2><b>This job is being provisioned from KnowlwdgePlatform directory. This can be enabled and used for provisioning, if KnowledgePlatform jobs are not used.</b></font> false @@ -26,7 +26,7 @@ - + 2 @@ -45,6 +45,7 @@ true false + 0 false @@ -53,5 +54,5 @@ false - false + true \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/TelemetrySearch/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/TelemetrySearch/config.xml index 567aeca747..188ae28244 100644 --- a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/TelemetrySearch/config.xml +++ b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/TelemetrySearch/config.xml @@ -8,7 +8,7 @@ - + <font color=red size=2><b>This job is being provisioned from KnowledgePlatform directory (CompositeSearch). This can be enabled and used for provisioning, if KnowledgePlatform jobs are not used.</b></font> false @@ -26,7 +26,7 @@ - + 2 @@ -45,6 +45,7 @@ true false + 0 false diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/Zookeeper/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/Zookeeper/config.xml index b7f1d5683a..e3a68da32c 100644 --- a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/Zookeeper/config.xml +++ b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/Zookeeper/config.xml @@ -8,7 +8,7 @@ - + <font color=red size=2><b>This job is being provisioned from KnowlwdgePlatform directory. This can be enabled and used for provisioning, if KnowledgePlatform jobs are not used.</b></font> false @@ -26,7 +26,7 @@ - + 2 @@ -45,6 +45,7 @@ true false + 0 false @@ -53,5 +54,5 @@ false - false + true \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Cassandra/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Cassandra/config.xml index cebf06c05d..3e97f1ffac 100644 --- a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Cassandra/config.xml +++ b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Cassandra/config.xml @@ -29,7 +29,7 @@ - + 2 @@ -48,6 +48,7 @@ true false + 0 false @@ -56,5 +57,5 @@ false - true + false \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/CompositeSearch/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/CompositeSearch/config.xml index 831a83e6bd..360f4f174a 100644 --- a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/CompositeSearch/config.xml +++ b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/CompositeSearch/config.xml @@ -8,7 +8,7 @@ - <font color=red size=2><b>This job is being provisioned from datapipeline directory (TelemetrySearch). This can be enabled and used for provisioning, if datapipeline jobs are not used.</b></font> + false @@ -29,7 +29,7 @@ - + 2 @@ -57,5 +57,5 @@ false - true + false \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Kafka/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Kafka/config.xml index 7b49eede4f..93354ef4c3 100644 --- a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Kafka/config.xml +++ b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Kafka/config.xml @@ -8,7 +8,7 @@ - <font color=red size=2><b>This job is being provisioned from datapipeline directory. This can be enabled and used for provisioning, if datapipeline jobs are not used.</b></font> + false @@ -29,7 +29,7 @@ - + 2 @@ -57,5 +57,5 @@ false - true + false \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Zookeeper/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Zookeeper/config.xml index 6b5ae4058c..7c89cde9d5 100644 --- a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Zookeeper/config.xml +++ b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Zookeeper/config.xml @@ -8,7 +8,7 @@ - <font color=red size=2><b>This job is being provisioned from datapipeline directory. This can be enabled and used for provisioning, if datapipeline jobs are not used.</b></font> + false @@ -29,7 +29,7 @@ - + 2 @@ -57,5 +57,5 @@ false - true + false \ No newline at end of file From 1222a005297cbb5c282be792533b397fa1661721 Mon Sep 17 00:00:00 2001 From: Santhosh Gandham Date: Sat, 9 Feb 2019 15:35:36 +0530 Subject: [PATCH 1052/1345] template for Core --- .../ansible/inventory/dev/Core/common.yml | 147 +++++++++--------- private_repo/ansible/inventory/dev/Core/hosts | 126 ++++++--------- .../ansible/inventory/dev/Core/secrets.yml | 101 +++++++----- 3 files changed, 187 insertions(+), 187 deletions(-) diff --git a/private_repo/ansible/inventory/dev/Core/common.yml b/private_repo/ansible/inventory/dev/Core/common.yml index 451d0cff26..049ada26ba 100644 --- a/private_repo/ansible/inventory/dev/Core/common.yml +++ b/private_repo/ansible/inventory/dev/Core/common.yml @@ -1,93 +1,98 @@ -###################### Private ############################ - #Common vars -env: #Name of the environment, e.g. dev, staging or production. -proxy_server_name: .sunbird.cf #Domain on which the portal will be accessed. e.g. staging.{implementation-name}.org -0WdEj -proto: # Protocol +env: #Name of the environment, e.g. dev, staging or production. +proxy_server_name: #Domain on which the portal will be accessed. e.g. staging.{implementation-name}.org +proto: # Protocol +api_proxy_name: # Domain name on which device register and other api's will be accessed +sunbird_app_name: +bootstrap_user: +bootstrap_key_path: +ssh_public_key_deployer: "" +learningservice_ip: # Load balancer IP for learning server +searchservice_ip: # search service Load balancer IP +analyticsapi_ip: # Analytics Service Load Balancer IP +sunbird_ekstep_api_base_url: #API base URL of the Ekstep environment. Use `https://qa.ekstep.in/api` for non-prod deployments, and use `https://api.ekstep.in/` for prod deployment. +sunbird_ekstep_proxy_base_url: #Base URL of the Ekstep environment. Use `https://qa.ekstep.in/` for non-prod deployments, and `https://community.ekstep.in/` for prod deployment. +sunbird_mail_server_from_email: #Email ID that should be as from address in mails +sunbird_env: #Ekstep environment to connect to. Use `qa` for non-prod deployments, and `prod` for prod deployment. + +keycloak_url: "" #Keycloak Load balancer IP +swarm_agent_load_balancer: +sunbird_installation: +sunbird_msg_sender: +sunbird_environment: +sunbird_instance: +sunbird_android_app_url: "" +sunbird_es_port: 9300 +sunbird_installation_email: +project: +mail_server_host: +mail_server_port: +mail_server_username: "" +monitor_alerts_slack_channel: +sunbird_external_content_whitelisted_domains: "" +core_vault_bootstrap_user: +core_vault_bootstrap_key_path: +sunbird_blob_env: ekstep_s3_env: sunbird_app_name: -api_proxy_name: # Domain name on which device register and other api's will be accessed -ssh_public_key_deployer: -bootstrap_user: - -# Proxy -keycloak_url: #Keycloak Load balancer IP - -# Stack_keycloak +sunbird_default_channel: +sunbird_content_azure_storage_container: +azure_account_name: +azure_account_key: "{{core_vault_azure_storage_secret}}" +artifacts_container: '' keycloak_api_management_user_email: keycloak_api_management_user_first_name: keycloak_api_management_user_last_name: keycloak_api_management_user_password: "{{core_vault_keycloak_api_management_user_password}}" +ekstep_api_key: "" -# Player env -sunbird_android_app_url: "" -sunbird_external_content_whitelisted_domains: "" -azure_account_name: # +content-service -azure_account_key: "{{core_vault_azure_storage_secret}}" # +content-service +############# -# actor learner -mail_server_host: # + monit stack-monitor -sunbird_mail_server_from_email: #Email ID that should be as from address in mails -sunbird_installation_email: -# Learner -sunbird_user_profile_field_default_visibility: -sunbird_content_azure_storage_container: -analyticsapi_ip: # + kong monitor # Analytics Service Load Balancer IP - -# Content-service -learningservice_ip: # Load balancer IP for learning server -searchservice_ip: # + monitoring # search service Load balancer IP - -# Badger -badger_url: -badger_admin_email: -badger_file_storage: -# logger +app_alerts_mailing_list: "" +devops_alerts_mailing_list: "" +site_alerts_mailing_list: "" +keycloak_alerts_mailing_list: "" +api_manager_alerts_mailing_list: "" +alerts_mailing_list : "" kibana_oauth_authenticated_email_domains: - - ekstep.org - - test.com + - domain1 + - domain2 kibana_oauth_authenticated_email_ids: - - santhosh.g@optit.in - -# Jenkins -jenkins_url: + - email1 + - email2 +monitor_alerts_mail_from_email: +env_short_name: +sunbird_config_service_url: '' +config_cache_ttl: 600 # keycloak sms provider +keycloak_build_src: "" +keycloak_ver: "keycloak-3.2.0.Final" +keycloak_sms_provider_build: "keycloak-email-phone-autthenticator-1.0-SNAPSHOT.jar" +keycloak_sms_provider_templates_src: "templates.tar.gz" +keycloak_sms_provider_templates_dest: "/opt/keycloak/themes/sunbird/login" +keycloak_ekstep_sunbird_login_theme_file: "login.tar.gz" +keycloak_ekstep_sunbird_login_theme_dest: "/opt/keycloak/themes/sunbird/login" +keycloak_postgresql: "postgresql-9.4.1212.jar" +sunbird_auth_version: 1.0v +badger_admin_email: +badger_file_storage: content_service_whitelisted_channels: "" content_service_blacklisted_channels: "" sunbird_installation_display_name: "" -sunbird_blob_env: -# Plugins upstream_url: "{{azure_account_name}}.blob.core.windows.net/{{sunbird_content_azure_storage_container}}" -sunbird_portal_user_upload_ref_link: http://www.sunbird.org/features-documentation/register_user - -# Artifacts-upload and download -artifacts_container: - -# Monitoring -app_alerts_mailing_list: "mailer@sunbird.co" -devops_alerts_mailing_list: "mailer@sunbird.co" -site_alerts_mailing_list: "mailer@sunbird.co" -keycloak_alerts_mailing_list: "mailer@sunbird.co" -api_manager_alerts_mailing_list: "mailer@sunbird.co" -alerts_mailing_list : "mailer@sunbird.co" # +monit -monitor_alerts_mail_from_email: "mailer@sunbird.co" # +monit -mail_server_username: "mailer" -monitor_alerts_slack_channel: refactor-alert +sunbird_portal_user_upload_ref_link: http://www.sunbird.org/features-documentation/register_user +sunbird_user_profile_field_default_visibility: private +sunbird_keycloak_required_action_link_expiration_seconds: 2592000 -# Filebeat -swarm_agent_load_balancer: +# check and delete the variable -# Depricated -sunbird_ekstep_api_base_url: https://qa.ekstep.in/api #API base URL of the Ekstep environment. Use `https://qa.ekstep.in/api` for non-prod deployments, and use `https://api.ekstep.in/` for prod deployment. -sunbird_ekstep_proxy_base_url: https://qa.ekstep.in #Base URL of the Ekstep environment. Use `https://qa.ekstep.in/` for non-prod deployments, and `https://community.ekstep.in/` for prod deployment. -sunbird_env: qa #Ekstep environment to connect to. Use `qa` for non-prod deployments, and `prod` for prod deployment. - - -# Not using -project: +badger_url: http://azureaccountname.blob.core.windows.net/ sunbird_cdn_url: "" -sunbird_config_service_url: '' +sunbird_url_shortner_access_token: "" +sunbird_url_shortner_enable: "" +keycloak_api_management_username: admin +keycloak_admin_username: admin #Keycloak Admin username . Dont change this value +jenkins_url: "http://10.20.0.12:8080/jenkins" \ No newline at end of file diff --git a/private_repo/ansible/inventory/dev/Core/hosts b/private_repo/ansible/inventory/dev/Core/hosts index 94ef5905d6..5adff87bb9 100644 --- a/private_repo/ansible/inventory/dev/Core/hosts +++ b/private_repo/ansible/inventory/dev/Core/hosts @@ -1,32 +1,48 @@ -[kafka-1] -18.0.0.13 kafka_id=1 +[swarm-manager-1] +18.0.0.15 swarm_master=true -[processing-cluster-kafka] -18.0.0.13 +[swarm-manager:children] +swarm-manager-1 -[telemetry-search-cluster] -18.0.0.13 +[keycloak-1] +18.0.0.9 + +[keycloak:children] +keycloak-1 + +[log-es-1] +18.0.0.15 node_name=refactor-log-es-1 es_etc_node_master=true es_etc_node_data=true + +[log-es:children] +log-es-1 + +[swarm-agent-for-prometheus-1] +18.0.0.15 + +[swarm-agent-for-prometheus:children] +swarm-agent-for-prometheus-1 -[swarm-bootstrap-manager] +[swarm-agent-for-grafana-1] 18.0.0.15 -[kafka:children] -kafka-1 +[swarm-agent-for-grafana:children] +swarm-agent-for-grafana-1 + +[swarm-agent-for-alertmanager-1] +18.0.0.15 -#[jenkins-master] -#10.20.0.12 [es-1] 18.0.0.9 es_instance_name=es-1 es_etc_node_master=true es_etc_node_data=true [es-backup:children] -18.0.0.9 es-1 +es-1 [log-es-backup:children] log-es-1 [es:children] -18.0.0.9 es-1 +es-1 [cassandra-1] 18.0.0.9 @@ -35,13 +51,13 @@ log-es-1 cassandra-1 [postgresql-master-1] -18.0.0.9 +18.0.0.9 [postgresql-master:children] postgresql-master-1 [postgresql-slave-1] -18.0.0.9 +18.0.0.9 [postgresql-slave:children] postgresql-slave-1 @@ -50,47 +66,17 @@ postgresql-slave-1 postgresql-slave postgresql-master -[swarm-manager-1] -swarm_master=true - -[swarm-manager:children] -swarm-manager-1 - -[swarm-worker-1] -18.0.0.15 - - -[swarm-worker:children] -swarm-worker-1 -swarm-worker-2 - -[keycloak-1] -18.0.0.9 - - -[keycloak:children] -keycloak-1 - -[log-es-1] -18.0.0.9 node_name=refactor-log-es-1 es_etc_node_master=true es_etc_node_data=true - -[log-es:children] -log-es-1 - -[swarm-agent-for-prometheus-1] -18.0.0.15 - -[swarm-agent-for-prometheus:children] -swarm-agent-for-prometheus-1 +[kafka-1] +18.0.0.13 kafka_id=1 -[swarm-agent-for-grafana-1] -18.0.0.15 +[processing-cluster-kafka] +18.0.0.13 -[swarm-agent-for-grafana:children] -swarm-agent-for-grafana-1 +[telemetry-search-cluster] +18.0.0.13 -[swarm-agent-for-alertmanager-1] -18.0.0.15 +[kafka:children] +kafka-1 [local] localhost @@ -99,42 +85,26 @@ localhost swarm-agent-for-alertmanager-1 [kong-api] -localhost +localhost [swarm-bootstrap-manager:children] swarm-manager -[non-swarm-nodes:children] -postgresql-master -postgresql-slave -es -cassandra -kong-api -keycloak -log-es - [swarm-nodes:children] swarm-manager -swarm-worker swarm-bootstrap-manager swarm-agent-for-prometheus swarm-agent-for-grafana swarm-agent-for-alertmanager [node-exporter:children] -non-swarm-nodes swarm-manager -[process-exporter:children] -es-ps -cassandra-ps - [log-forwarder:children] swarm-manager -[env:children] +[core:children] es -local log-es cassandra postgresql-master @@ -143,18 +113,14 @@ swarm-nodes swarm-manager kafka keycloak -swarm-bootstrap-manager + +[env:children] +core +local [log-forwarder:children] swarm-manager -[cassandra-ps:children] -cassandra - -[es-ps:children] -es -log-es - [all:vars] ansible_ssh_user=deployer -ansible_ssh_private_key_file=/run/secrets/deployer_ssh_key +ansible_ssh_private_key_file=/run/secrets/deployer_ssh_key \ No newline at end of file diff --git a/private_repo/ansible/inventory/dev/Core/secrets.yml b/private_repo/ansible/inventory/dev/Core/secrets.yml index 555c24c1c5..5f2d4688f6 100644 --- a/private_repo/ansible/inventory/dev/Core/secrets.yml +++ b/private_repo/ansible/inventory/dev/Core/secrets.yml @@ -1,44 +1,73 @@ ############# Core ####################### ####### Secrets ####### -core_vault_google_keycloak_secret: -core_vault_sunbird_google_oauth_clientSecret: +core_vault_postgres_password: +core_vault_badging_authorization_key: +core_vault_badger_admin_password: +core_vault_sunbird_azure_storage_account: +core_vault_sunbird_azure_storage_key: +core_vault_docker_registry_url: "" +core_vault_docker_registry_user: +core_vault_docker_registry_password: +core_vault_proxy_site_key: |+ +core_vault_proxy_site_crt: |+ +core_vault_sunbird_sso_publickey: +core_vault_keystore_password: ## cassandra keystore password +core_vault_truststore_password: +core_vault_mail_server_password: '' +core_vault_sunbird_sso_username: +core_vault_sunbird_sso_password: +core_vault_sunbird_api_auth_token: +core_vault_sunbird_ekstep_api_key: +core_vault_keycloak_password: +core_vault_grafana_admin_password: +core_vault_sunbird_trampoline_secret: deep-secret ## any 8 character value +core_vault_sunbird_account_key: "{{core_vault_sunbird_azure_storage_key}}" +core_vault_sunbird_encryption_key: +core_vault_postgres_replication_user_password: "{{core_vault_postgres_password}}" +core_vault_postgres_exporter_password: "{{core_vault_postgres_password}}" + +#NOT REQUIRED ############################## +core_vault_jenkins_slave_jenkins_username: "" #### if it is not required will remove +core_vault_jenkins_slave_jenkins_password: "" #### if it is not required will remove +core_vault_deployer_ssh_key: |+ +core_vault_ops_private_key: |+ +core_vault_keycloak_api_management_user_password: +core_vault_trampoline_secret: "{{core_vault_sunbird_trampoline_secret}}" ## dont +core_vault_azure_storage_secret: # Artifact upload core_vault_ansible_vault_password: -core_vault_ssh_public_key_deployer: + +################################################### + +#MSG91 +core_vault_sender: +core_vault_country: +core_vault_route: +core_vault_sms_method_type: POST +core_vault_auth_key: +core_vault_google_captcha_site_key: +core_vault_sunbird_google_oauth_clientId_portal: +core_vault_sunbird_google_oauth_clientSecret_portal: +core_vault_sunbird_google_captcha_site_key_portal: +core_vault_kibana_google_client_id: +core_vault_kibana_google_client_secret: +core_vault_sunbird_google_keycloak_secret: + + +### +core_vault_proxy_prometheus_admin_creds: +core_vault_google_keycloak_secret: +core_vault_sunbird_google_oauth_clientSecret: +core_vault_postgres_username: postgres # dont change this value core_vault_sudo_crypt_deployer: "" -core_vault_postgres_password: -core_vault_badging_authorization_key: -core_vault_badger_admin_password: core_vault_msg91_auth_key: core_vault_sunbird_fcm_account_key: "" core_vault_jenkins_admin_username: "" #### if it is not required will remove core_vault_jenkins_admin_password: "" #### if it is not required will remove -core_vault_sunbird_azure_storage_account: -core_vault_sunbird_azure_storage_key: -core_vault_docker_registry_url: "https://inded.docker.io/v1" # for docker hub -core_vault_docker_registry_user: -core_vault_google_captcha_site_key: -core_vault_docker_registry_password: -core_vault_proxy_site_key: |+ - -----BEGIN PRIVATE KEY----- - -----END PRIVATE KEY----- -core_vault_proxy_site_crt: |+ - -----BEGIN CERTIFICATE----- - -----END RSA PRIVATE KEY----- -core_vault_proxy_prometheus_admin_creds: - -#MSG91 -core_vault_sender: -core_vault_country: 91 -core_vault_route: 4 -core_vault_sms_method_type: POST -core_vault_auth_key: -core_vault_google_captcha_site_key: -core_vault_sunbird_google_oauth_clientId_portal: -core_vault_sunbird_google_oauth_clientSecret_portal: -core_vault_sunbird_google_captcha_site_key_portal: -core_vault_azure_storage_secret: -core_vault_kibana_google_client_id: -core_vault_kibana_google_client_secret: -core_vault_sunbird_google_keycloak_secret: -core_vault_keycloak_api_management_user_password: -core_vault_trampoline_secret: +core_vault_google_captcha_site_key: '' +core_vault_kibana_google_client_id: +core_vault_kibana_google_client_secret: +core_vault_kibana_cookie_secret: +core_vault_grafana_editor_password: "" +core_vault_grafana_dashboards_git_repo_url_with_credentails: "https://github.com/project-sunbird/grafana-dashboards.git" +core_vault_monitor_alerts_slack_url: "" +core_vault_kong__test_jwt: From 12c052c9481f5c7d4d1a256f736b8c6a1bdd7077 Mon Sep 17 00:00:00 2001 From: msknext Date: Sat, 9 Feb 2019 10:39:45 +0000 Subject: [PATCH 1053/1345] Specific jenkins download --- deploy/jenkins/jenkins-server-setup.sh | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/deploy/jenkins/jenkins-server-setup.sh b/deploy/jenkins/jenkins-server-setup.sh index f937f92423..ff3024b196 100755 --- a/deploy/jenkins/jenkins-server-setup.sh +++ b/deploy/jenkins/jenkins-server-setup.sh @@ -9,10 +9,8 @@ echo -e "\n\e[0;32m${bold}Installating JDK8${normal}\n" apt-get install -y openjdk-8-jdk-headless echo -e "\n\e[0;32m${bold}Installating Jenkins${normal}" -wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add - -echo "deb https://pkg.jenkins.io/debian binary/" >> /etc/apt/sources.list -apt-get update -apt-get install -y jenkins +wget http://pkg.jenkins.io/debian/binary/jenkins_2.154_all.deb +dpkg -i jenkins_2.154_all.deb echo -e "\n\e[0;32m${bold}Starting Jenkins service${normal}" service jenkins start From 3c5118401044aa57924af31f249da350167d1afb Mon Sep 17 00:00:00 2001 From: msknext Date: Sat, 9 Feb 2019 16:23:54 +0530 Subject: [PATCH 1054/1345] Install daemon before jenkins --- deploy/jenkins/jenkins-server-setup.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/deploy/jenkins/jenkins-server-setup.sh b/deploy/jenkins/jenkins-server-setup.sh index ff3024b196..b91b450ba4 100755 --- a/deploy/jenkins/jenkins-server-setup.sh +++ b/deploy/jenkins/jenkins-server-setup.sh @@ -9,6 +9,8 @@ echo -e "\n\e[0;32m${bold}Installating JDK8${normal}\n" apt-get install -y openjdk-8-jdk-headless echo -e "\n\e[0;32m${bold}Installating Jenkins${normal}" +apt install -y -f +rm -rf jenkins_2.154_all.deb wget http://pkg.jenkins.io/debian/binary/jenkins_2.154_all.deb dpkg -i jenkins_2.154_all.deb From 2c155a67c41ce267bf80482d5c625e4951bec80d Mon Sep 17 00:00:00 2001 From: msknext Date: Sat, 9 Feb 2019 16:41:54 +0530 Subject: [PATCH 1055/1345] Restart jenkins --- deploy/jenkins/jenkins-server-setup.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deploy/jenkins/jenkins-server-setup.sh b/deploy/jenkins/jenkins-server-setup.sh index b91b450ba4..c24b32d06c 100755 --- a/deploy/jenkins/jenkins-server-setup.sh +++ b/deploy/jenkins/jenkins-server-setup.sh @@ -15,7 +15,7 @@ wget http://pkg.jenkins.io/debian/binary/jenkins_2.154_all.deb dpkg -i jenkins_2.154_all.deb echo -e "\n\e[0;32m${bold}Starting Jenkins service${normal}" -service jenkins start +service jenkins restart echo -e "\n\e[0;32m${bold}Installating PIP${normal}" apt-get install -y python-pip From c643ef007d173e57161f81167954050f505ec90c Mon Sep 17 00:00:00 2001 From: msknext Date: Sat, 9 Feb 2019 16:42:59 +0530 Subject: [PATCH 1056/1345] Restart jenkins --- deploy/jenkins/jenkins-server-setup.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deploy/jenkins/jenkins-server-setup.sh b/deploy/jenkins/jenkins-server-setup.sh index c24b32d06c..400126a2ee 100755 --- a/deploy/jenkins/jenkins-server-setup.sh +++ b/deploy/jenkins/jenkins-server-setup.sh @@ -11,7 +11,7 @@ apt-get install -y openjdk-8-jdk-headless echo -e "\n\e[0;32m${bold}Installating Jenkins${normal}" apt install -y -f rm -rf jenkins_2.154_all.deb -wget http://pkg.jenkins.io/debian/binary/jenkins_2.154_all.deb +wget https://pkg.jenkins.io/debian/binary/jenkins_2.154_all.deb dpkg -i jenkins_2.154_all.deb echo -e "\n\e[0;32m${bold}Starting Jenkins service${normal}" From 3f4b9e569943dcb61ccbc930bcc84eff3b999316 Mon Sep 17 00:00:00 2001 From: G33tha Date: Sat, 9 Feb 2019 16:54:38 +0530 Subject: [PATCH 1057/1345] Update hosts --- .../ansible/inventory/dev/KnowledgePlatform/hosts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/private_repo/ansible/inventory/dev/KnowledgePlatform/hosts b/private_repo/ansible/inventory/dev/KnowledgePlatform/hosts index 8117161129..81106b0395 100644 --- a/private_repo/ansible/inventory/dev/KnowledgePlatform/hosts +++ b/private_repo/ansible/inventory/dev/KnowledgePlatform/hosts @@ -47,6 +47,7 @@ learning-neo4j-node1 15.0.3.10 [yarn-slave] +15.0.3.10 #yarn master 15.0.3.13 [yarn:children] @@ -55,16 +56,14 @@ yarn-slave [processing-cluster-kafka] 15.0.3.14 -#15.0.3.7 [processing-cluster-zookeepers] 15.0.3.14 -#15.0.3.7 [local] localhost -[env:children] +[lp:children] learningall searchall learning-neo4j-cluster @@ -75,12 +74,14 @@ composite-search-cluster processing-cluster-kafka processing-cluster-zookeepers local + +[env:children] +lp swarm-bootstrap-manager [env:vars] ansible_ssh_user="deployer" ansible_ssh_private_key_file=/run/secrets/deployer_ssh_key -ansible_sudo_pass=d3pl0y3r ####################### Monitoring ######################## [logstash-ps] @@ -96,7 +97,6 @@ cassandra-ps [process-exporter:vars] ansible_ssh_user="deployer" ansible_ssh_private_key_file=/run/secrets/deployer_ssh_key -ansible_sudo_pass=d3pl0y3r [all:vars] ansible_ssh_user=deployer From 504ccf9af3409bb869135d0083c8efaa8fa8955e Mon Sep 17 00:00:00 2001 From: G33tha Date: Sat, 9 Feb 2019 16:58:16 +0530 Subject: [PATCH 1058/1345] Update common.yml --- .../inventory/dev/KnowledgePlatform/common.yml | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/private_repo/ansible/inventory/dev/KnowledgePlatform/common.yml b/private_repo/ansible/inventory/dev/KnowledgePlatform/common.yml index 46c6091b28..76983103ab 100644 --- a/private_repo/ansible/inventory/dev/KnowledgePlatform/common.yml +++ b/private_repo/ansible/inventory/dev/KnowledgePlatform/common.yml @@ -12,21 +12,19 @@ ssh_public_key_deployer: ## Common vars for LP and DP env: azure_public_container: -azure_influxdb_backup_container: -azure_backup_account_name: +azure_account_name: +azure_account_key: "{{lp_vault_azure_storage_secret}}" + ########### jenkinspipeline upload artifact ############ artifacts_container: - ## Common variables for LP -instance: -azure_account_name: -azure_account_key: "{{lp_vault_azure_storage_secret}}" +instance: "{{env}}" # these variables can be defined as {{instance}}_* -content_keyspace_name: -hierarchy_keyspace_name: -orchestrator_keyspace_name: +content_keyspace_name: "{{instance}}_content_store" +hierarchy_keyspace_name: "{{instance}}_hierarchy_store" +orchestrator_keyspace_name: "{{instance}}_script_store" neo4j_home: "{{learner_user_home}}/{{neo4j_dir}}/neo4j-enterprise-3.3.0" neo4j_zip: neo4j-enterprise-3.3.0-unix.tar.gz # neo4j enterprise version.zip @@ -34,7 +32,7 @@ neo4j_enterprise: "true" environment_id: 10000000 ## learning service variables -content_media_base_url: +content_media_base_url: #portal domain name plugin_media_base_url: https://dev.ekstep.in dial_service_search_url: https://dev.ekstep.in/api/dialcode/v3/search learning_content_h5p_library_path: https://s3.ap-south-1.amazonaws.com/ekstep-public-dev/content/templates/h5p-library-latest.zip From 02f0fe73c0baceb7179c829355cc950ef948a850 Mon Sep 17 00:00:00 2001 From: Kartish Date: Sat, 9 Feb 2019 18:01:21 +0530 Subject: [PATCH 1059/1345] Issue #000 fix: python package update --- ansible/bootstrap.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ansible/bootstrap.yml b/ansible/bootstrap.yml index ae3f23945e..5457dd849e 100644 --- a/ansible/bootstrap.yml +++ b/ansible/bootstrap.yml @@ -1,6 +1,9 @@ - hosts: 'all:!localhost' become: yes gather_facts: no + pre_tasks: + - name: Python predependency + raw: sudo apt update && sudo apt install -y python python-pkg-resources python-pip vars_files: - "{{inventory_dir}}/secrets.yml" vars: From f318b1fc53cfbb6821130035110f267afda43713 Mon Sep 17 00:00:00 2001 From: G33tha Date: Sat, 9 Feb 2019 18:03:37 +0530 Subject: [PATCH 1060/1345] Update env.yml --- ansible/inventory/env/group_vars/env.yml | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/ansible/inventory/env/group_vars/env.yml b/ansible/inventory/env/group_vars/env.yml index 096f15eb38..1f5e8c9759 100644 --- a/ansible/inventory/env/group_vars/env.yml +++ b/ansible/inventory/env/group_vars/env.yml @@ -9,10 +9,6 @@ sunbird_msg_sender: "{{env}}" sunbird_instance: "{{env}}" env_short_name: "{{env}}" -# bootstrap.yml -bootstrap_user: ops -bootstrap_key_path: /run/secrets/ops_ssh_key - ## Learner service sunbird_url_shortner_access_token: "" sunbird_url_shortner_enable: 'false' @@ -524,4 +520,4 @@ config_refresh_interval: 10 config_service_enabled: false trampoline_secret: "{{core_vault_trampoline_secret}}" -es_api_host: "{{inventory_hostname}}" \ No newline at end of file +es_api_host: "{{inventory_hostname}}" From eafd2ec62d1362fd4bd8fc3d845c2eab3b0244d2 Mon Sep 17 00:00:00 2001 From: G33tha Date: Sat, 9 Feb 2019 18:05:11 +0530 Subject: [PATCH 1061/1345] Update common.yml --- .../ansible/inventory/dev/KnowledgePlatform/common.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/private_repo/ansible/inventory/dev/KnowledgePlatform/common.yml b/private_repo/ansible/inventory/dev/KnowledgePlatform/common.yml index 76983103ab..f1f7a08aca 100644 --- a/private_repo/ansible/inventory/dev/KnowledgePlatform/common.yml +++ b/private_repo/ansible/inventory/dev/KnowledgePlatform/common.yml @@ -6,7 +6,9 @@ domain_name: #bootstrap ssh_public_key_deployer: - +bootstrap_user: +bootstrap_key_path: +ansible_ssh_private_key_file: ###################### LP ############################ ## Common vars for LP and DP From 30003937bda2a292b6fd2fd3603277589697af6d Mon Sep 17 00:00:00 2001 From: G33tha Date: Sat, 9 Feb 2019 18:08:57 +0530 Subject: [PATCH 1062/1345] Update common.yml --- private_repo/ansible/inventory/dev/DataPipeline/common.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/private_repo/ansible/inventory/dev/DataPipeline/common.yml b/private_repo/ansible/inventory/dev/DataPipeline/common.yml index 1525cc338a..6592b8a5c3 100644 --- a/private_repo/ansible/inventory/dev/DataPipeline/common.yml +++ b/private_repo/ansible/inventory/dev/DataPipeline/common.yml @@ -5,6 +5,9 @@ env: proto: domain_name: ssh_public_key_deployer: +bootstrap_user: +bootstrap_key_path: +ansible_ssh_private_key_file: #################### DP ########################## From 8bcb2916c821620f665d014a6997bc591b78c215 Mon Sep 17 00:00:00 2001 From: G33tha Date: Sat, 9 Feb 2019 18:10:11 +0530 Subject: [PATCH 1063/1345] Update common.yml --- private_repo/ansible/inventory/dev/Core/common.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/private_repo/ansible/inventory/dev/Core/common.yml b/private_repo/ansible/inventory/dev/Core/common.yml index 049ada26ba..03d07c4162 100644 --- a/private_repo/ansible/inventory/dev/Core/common.yml +++ b/private_repo/ansible/inventory/dev/Core/common.yml @@ -7,6 +7,7 @@ sunbird_app_name: bootstrap_user: bootstrap_key_path: ssh_public_key_deployer: "" +ansible_ssh_private_key_file: learningservice_ip: # Load balancer IP for learning server searchservice_ip: # search service Load balancer IP analyticsapi_ip: # Analytics Service Load Balancer IP @@ -95,4 +96,4 @@ sunbird_url_shortner_access_token: "" sunbird_url_shortner_enable: "" keycloak_api_management_username: admin keycloak_admin_username: admin #Keycloak Admin username . Dont change this value -jenkins_url: "http://10.20.0.12:8080/jenkins" \ No newline at end of file +jenkins_url: "http://10.20.0.12:8080/jenkins" From a7b2395436a8d47fca62e488eebd8f99f38aee3d Mon Sep 17 00:00:00 2001 From: G33tha Date: Sat, 9 Feb 2019 19:07:13 +0530 Subject: [PATCH 1064/1345] Update hosts --- private_repo/ansible/inventory/dev/KnowledgePlatform/hosts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/private_repo/ansible/inventory/dev/KnowledgePlatform/hosts b/private_repo/ansible/inventory/dev/KnowledgePlatform/hosts index 81106b0395..cb141a673e 100644 --- a/private_repo/ansible/inventory/dev/KnowledgePlatform/hosts +++ b/private_repo/ansible/inventory/dev/KnowledgePlatform/hosts @@ -60,6 +60,9 @@ yarn-slave [processing-cluster-zookeepers] 15.0.3.14 +[zookeeper:children] +processing-cluster-zookeepers + [local] localhost @@ -72,7 +75,7 @@ redisall yarn composite-search-cluster processing-cluster-kafka -processing-cluster-zookeepers +zookeeper local [env:children] From fb0220a169e041f4291ecfdda7cba43a266a9687 Mon Sep 17 00:00:00 2001 From: harshavardhnc Date: Mon, 11 Feb 2019 09:44:55 +0530 Subject: [PATCH 1065/1345] Issue #00 fix: monit issue --- ansible/roles/monit/tasks/main.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/ansible/roles/monit/tasks/main.yml b/ansible/roles/monit/tasks/main.yml index df229660e0..418f8c4f4a 100755 --- a/ansible/roles/monit/tasks/main.yml +++ b/ansible/roles/monit/tasks/main.yml @@ -19,6 +19,7 @@ state: present force: yes notify: restart monit + ignore_errors: yes - name: Create monit folder file: path={{ item }} state=directory From b8680e93c406a1507b8748549cd7b59ee99b4ad2 Mon Sep 17 00:00:00 2001 From: msknext Date: Mon, 11 Feb 2019 04:37:30 +0000 Subject: [PATCH 1066/1345] feat: Updated config files --- .../jobs/dev/jobs/Core/jobs/Badger/config.xml | 98 ----------- .../jobs/dev/jobs/Core/jobs/Config/config.xml | 98 ----------- .../Build/jobs/Core/jobs/Badger/config.xml | 75 -------- .../Build/jobs/Core/jobs/Config/config.xml | 75 -------- .../jobs/KnowledgePlatform/config.xml | 5 +- .../KnowledgePlatform/jobs/Yarn/config.xml | 5 +- .../jobs/ApplicationElasticSearch/config.xml | 2 +- .../jobs/dev/jobs/Core/jobs/Badger/config.xml | 77 --------- .../jobs/dev/jobs/Core/jobs/Config/config.xml | 77 --------- .../dev/jobs/Core/jobs/Keycloak/config.xml | 2 +- .../jobs/Core/jobs/KeycloakRealm/config.xml | 2 +- .../dev/jobs/Core/jobs/Monitoring/config.xml | 5 +- .../jobs/dev/jobs/DataPipeline/config.xml | 2 +- .../jobs/AnalyticsFetchLogs/config.xml | 83 --------- .../AnalyticsGeoLocationDBSetup/config.xml | 57 ------- .../config.xml | 89 ---------- .../jobs/AnalyticsReplayJobs/config.xml | 103 ----------- .../jobs/AnalyticsStartJobManager/config.xml | 67 -------- .../jobs/AnalyticsSubmitJobs/config.xml | 67 -------- .../DataPipeline/jobs/Monitoring}/config.xml | 21 ++- .../jobs/DataPipeline/jobs/Yarn/config.xml | 16 +- .../jobs/ContentTool/config.xml | 161 ------------------ .../jobs/FileSyncTool/config.xml | 151 ---------------- .../jobs/Monitoring}/config.xml | 23 ++- .../dev/jobs/Core/jobs/Registry/config.xml | 50 ------ .../jobs/dev/jobs/DataPipeline/config.xml | 2 +- .../DataPipeline/jobs/Cassandra/config.xml | 57 ------- .../jobs/DataPipeline/jobs/Kafka/config.xml | 58 ------- .../jobs/TelemetrySearch/config.xml | 58 ------- .../DataPipeline/jobs/Zookeeper/config.xml | 58 ------- .../dev/jobs/KnowledgePlatform/config.xml | 2 +- .../jobs/Cassandra/config.xml | 2 +- .../KnowledgePlatform/jobs/Yarn/config.xml | 60 ------- 33 files changed, 61 insertions(+), 1647 deletions(-) delete mode 100644 deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Badger/config.xml delete mode 100644 deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Config/config.xml delete mode 100644 deploy/jenkins/jobs/Build/jobs/Core/jobs/Badger/config.xml delete mode 100644 deploy/jenkins/jobs/Build/jobs/Core/jobs/Config/config.xml delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Badger/config.xml delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Config/config.xml delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsFetchLogs/config.xml delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsGeoLocationDBSetup/config.xml delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsPopulatePSQLConsumerChannelMapping/config.xml delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsReplayJobs/config.xml delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsStartJobManager/config.xml delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsSubmitJobs/config.xml rename deploy/jenkins/jobs/{Provision/jobs/dev/jobs/Core/jobs/Kafka => Deploy/jobs/dev/jobs/DataPipeline/jobs/Monitoring}/config.xml (70%) delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/ContentTool/config.xml delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/FileSyncTool/config.xml rename deploy/jenkins/jobs/{Provision/jobs/dev/jobs/Core/jobs/Secor => Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Monitoring}/config.xml (69%) delete mode 100644 deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Registry/config.xml delete mode 100644 deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/Cassandra/config.xml delete mode 100644 deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/Kafka/config.xml delete mode 100644 deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/TelemetrySearch/config.xml delete mode 100644 deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/Zookeeper/config.xml delete mode 100644 deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Yarn/config.xml diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Badger/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Badger/config.xml deleted file mode 100644 index 86030e26f8..0000000000 --- a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Badger/config.xml +++ /dev/null @@ -1,98 +0,0 @@ - - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - absolute_job_path - <font color=teal size=2>The metadata.json file of the last successful build will be copied from this job. Please specify the absolute path to the job.</font> - Build/Core/Badger - false - - - image_tag - <font color=teal size=2>Specify only tag. If the value is blank, version will be picked from the metadata.json file.</font> - - false - - - artifact_source - <font color=teal size=2>Choose the artifact source</font> - - - ArtifactRepo - JenkinsJob - - - - - - - - - - /Build/Core/Badger - - SUCCESS - 0 - BLUE - true - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - false - - - - pipelines/upload/docker/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Config/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Config/config.xml deleted file mode 100644 index ecc4488a08..0000000000 --- a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Config/config.xml +++ /dev/null @@ -1,98 +0,0 @@ - - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - <font color=red size=2><b>This jobs is currently disabled as it's not being used.</b></font> - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - absolute_job_path - <font color=teal size=2>The metadata.json file of the last successful build will be copied from this job. Please specify the absolute path to the job.</font> - Build/Core/Config - false - - - image_tag - <font color=teal size=2>Specify only tag. If the value is blank, version will be picked from the metadata.json file.</font> - - false - - - artifact_source - <font color=teal size=2>Choose the artifact source</font> - - - ArtifactRepo - JenkinsJob - - - - - - - - - - /Build/Core/Config - - SUCCESS - 0 - BLUE - true - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - false - - - - pipelines/upload/docker/Jenkinsfile - false - - - true - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Build/jobs/Core/jobs/Badger/config.xml b/deploy/jenkins/jobs/Build/jobs/Core/jobs/Badger/config.xml deleted file mode 100644 index c304a85633..0000000000 --- a/deploy/jenkins/jobs/Build/jobs/Core/jobs/Badger/config.xml +++ /dev/null @@ -1,75 +0,0 @@ - - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 10 - - - - - false - false - - - - - github_release_tag - <font color=teal size=2>If you want to build from a tag, specify the tag name. If this parameter is blank, latest commit hash will be used to build</font> - - false - - - - - - - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - false - - - - images/openbadger/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Build/jobs/Core/jobs/Config/config.xml b/deploy/jenkins/jobs/Build/jobs/Core/jobs/Config/config.xml deleted file mode 100644 index 6818350b2d..0000000000 --- a/deploy/jenkins/jobs/Build/jobs/Core/jobs/Config/config.xml +++ /dev/null @@ -1,75 +0,0 @@ - - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - <font color=red size=2><b>This jobs is currently disabled as it's not being used.</b></font> - false - - - - -1 - -1 - -1 - 10 - - - - - false - false - - - - - github_release_tag - <font color=teal size=2>If you want to build from a tag, specify the tag name. If this parameter is blank, latest commit hash will be used to build</font> - - false - - - - - - - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-config.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - false - - - - Jenkinsfile - false - - - true - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Build/jobs/KnowledgePlatform/jobs/KnowledgePlatform/config.xml b/deploy/jenkins/jobs/Build/jobs/KnowledgePlatform/jobs/KnowledgePlatform/config.xml index e8038d8ce8..d45d20c701 100644 --- a/deploy/jenkins/jobs/Build/jobs/KnowledgePlatform/jobs/KnowledgePlatform/config.xml +++ b/deploy/jenkins/jobs/Build/jobs/KnowledgePlatform/jobs/KnowledgePlatform/config.xml @@ -43,7 +43,7 @@ - + 2 @@ -52,7 +52,7 @@ - ${public_repo_branch} + jenkins-pipeline false @@ -62,6 +62,7 @@ true false + 0 false diff --git a/deploy/jenkins/jobs/Build/jobs/KnowledgePlatform/jobs/Yarn/config.xml b/deploy/jenkins/jobs/Build/jobs/KnowledgePlatform/jobs/Yarn/config.xml index 6e2e6d2ad8..6b24bb4cd3 100644 --- a/deploy/jenkins/jobs/Build/jobs/KnowledgePlatform/jobs/Yarn/config.xml +++ b/deploy/jenkins/jobs/Build/jobs/KnowledgePlatform/jobs/Yarn/config.xml @@ -43,7 +43,7 @@ - + 2 @@ -52,7 +52,7 @@ - ${public_repo_branch} + jenkins-pipeline false @@ -62,6 +62,7 @@ true false + 0 false diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/ApplicationElasticSearch/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/ApplicationElasticSearch/config.xml index 3a52e3efd3..b13a27d9cc 100644 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/ApplicationElasticSearch/config.xml +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/ApplicationElasticSearch/config.xml @@ -28,7 +28,7 @@ - */jenkins-pipeline + ${public_repo_branch} false diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Badger/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Badger/config.xml deleted file mode 100644 index 1afb16eebf..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Badger/config.xml +++ /dev/null @@ -1,77 +0,0 @@ - - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - absolute_job_path - <font color=teal size=2>The metadata.json file of the last successful build will be copied from this job. Please specify the absolute path to the job.</font> - ArtifactUpload/dev/Core/Badger - false - - - image_tag - <font color=teal size=2>Specify only tag. If the value is blank, tag will be picked from the metadata.json file.</font> - - false - - - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - false - - - - pipelines/deploy/badger/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Config/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Config/config.xml deleted file mode 100644 index a921b66e31..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Config/config.xml +++ /dev/null @@ -1,77 +0,0 @@ - - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - <font color=red size=2><b>This jobs is currently disabled as it's not being used.</b></font> - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - absolute_job_path - <font color=teal size=2>The metadata.json file of the last successful build will be copied from this job. Please specify the absolute path to the job.</font> - ArtifactUpload/dev/Core/Config - false - - - image_tag - <font color=teal size=2>Specify only tag. If the value is blank, tag will be picked from the metadata.json file.</font> - - false - - - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - false - - - - pipelines/deploy/config-service/Jenkinsfile - false - - - true - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Keycloak/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Keycloak/config.xml index 83a3195c65..fd9473f14f 100644 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Keycloak/config.xml +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Keycloak/config.xml @@ -38,7 +38,7 @@ - ${public_repo_branch} + keycloak-deployment false diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/KeycloakRealm/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/KeycloakRealm/config.xml index c48250a276..13e8a39637 100644 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/KeycloakRealm/config.xml +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/KeycloakRealm/config.xml @@ -38,7 +38,7 @@ - ${public_repo_branch} + keycloak-deployment false diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Monitoring/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Monitoring/config.xml index ad7760ec4a..a5c2aaddc2 100644 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Monitoring/config.xml +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Monitoring/config.xml @@ -19,7 +19,7 @@ - + 2 @@ -38,11 +38,12 @@ true false + 0 false - pipelines/deploy/monitor/Jenkinsfile + pipelines/deploy/monitor/Core/Jenkinsfile false diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/config.xml index 6fe3ca0b64..68477b8ac7 100644 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/config.xml +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/config.xml @@ -3,7 +3,7 @@ - + diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsFetchLogs/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsFetchLogs/config.xml deleted file mode 100644 index 5dc3792b3b..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsFetchLogs/config.xml +++ /dev/null @@ -1,83 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - instance_name - <font color=teal size=2>Choose the instance to fetch logs.</font> - - - spark - analytics-api - secor - cassandra - - - - - action - <font color=teal size=2>Choose one of the option - Fetch logs or set cronjob.</font> - - - fetch-logs - cronjobs - - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-data-pipeline.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - false - - - - pipelines/deploy/fetch-logs/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsGeoLocationDBSetup/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsGeoLocationDBSetup/config.xml deleted file mode 100644 index 8392da8e62..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsGeoLocationDBSetup/config.xml +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - 2 - - - https://github.com/project-sunbird/sunbird-data-pipeline.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - false - - - - pipelines/deploy/geolocation-db-setup/Jenkinsfile - false - - - true - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsPopulatePSQLConsumerChannelMapping/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsPopulatePSQLConsumerChannelMapping/config.xml deleted file mode 100644 index 188b020ba6..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsPopulatePSQLConsumerChannelMapping/config.xml +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - Consumer_id - <font color=teal size=2>mention the consumer ID.</font> - id - false - - - Channel_id - <font color=teal size=2>Channel ID to map with the Consumer ID.</font> - channel_id - false - - - status - <font color=teal size=2> 1 - to activate 0 - to make it inactive</font> - - - 1 - 0 - - - - - Created_by - <font color=teal size=2>created by.</font> - analytics-team - false - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-data-pipeline.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - false - - - - pipelines/deploy/PopulatePSQL-ConsumerChannelMapping/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsReplayJobs/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsReplayJobs/config.xml deleted file mode 100644 index c9407b99ba..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsReplayJobs/config.xml +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - cql_query - <font color=teal size=2>Specify cql_query if any tables needs to be truncated.</font> - 0 - false - - - job_type - <font color=teal size=2>Specify the job type - Replay or Run.</font> - - - replay-job - run-job - generate-metrics - submit-job - - - - - job_id - <font color=teal size=2>Specify the job id.</font> - - false - - - start_date - <font color=teal size=2>Specify the start date. The default value is just a placeholder which can be changed as per need.</font> - 2017-05-01 - false - - - end_date - <font color=teal size=2>Specify the end date. The default value is just a placeholder which can be changed as per need.</font> - 2017-07-11 - false - - - pause_min - <font color=teal size=2>Specify the # of minutes to pause. The default value is just a placeholder which can be changed as per need.</font> - 30 - false - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-data-pipeline.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - false - - - - pipelines/deploy/replay-jobs/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsStartJobManager/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsStartJobManager/config.xml deleted file mode 100644 index 42c0944caf..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsStartJobManager/config.xml +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - pause_min - <font color=teal size=2>Pause for # of minutes.</font> - 5 - false - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-data-pipeline.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - false - - - - pipelines/deploy/start-jobmanager/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsSubmitJobs/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsSubmitJobs/config.xml deleted file mode 100644 index e4945714cd..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsSubmitJobs/config.xml +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - pause_min - <font color=teal size=2>Pause for # of minutes.</font> - 5 - false - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-data-pipeline.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - false - - - - pipelines/deploy/submit-jobs/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Kafka/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/Monitoring/config.xml similarity index 70% rename from deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Kafka/config.xml rename to deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/Monitoring/config.xml index 8233536e76..fc12975261 100644 --- a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Kafka/config.xml +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/Monitoring/config.xml @@ -17,9 +17,23 @@ false false + + + + + ../Core/Monitoring, + + FAILURE + 2 + RED + true + + + + - + 2 @@ -28,7 +42,7 @@ - {public_repo_branch} + ${public_repo_branch} false @@ -38,11 +52,12 @@ true false + 0 false - pipelines/provision/kafka/Jenkinsfile + pipelines/deploy/monitor/DataPipeline/Jenkinsfile false diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/Yarn/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/Yarn/config.xml index 5c79c95bc7..fbb8f2b620 100644 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/Yarn/config.xml +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/Yarn/config.xml @@ -38,14 +38,14 @@ choice-parameter-9061667106947 1 false - + false @@ -63,7 +63,7 @@ choice-parameter-9061670571657 1 false - + false @@ -90,7 +90,7 @@ return "<b>Not Applicable</b>" choice-parameter-9061673103864 1 false - + false @@ -113,8 +113,8 @@ return "<b>Not Applicable</b>" - - + + 2 diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/ContentTool/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/ContentTool/config.xml deleted file mode 100644 index 300543e71a..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/ContentTool/config.xml +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - <font color=red size=2><b>This jobs is currently disabled as it's not being used.</b></font> - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - absolute_job_path - <font color=teal size=2>Please specify the absolute path to the job from which the metadata.json will be copied.</font> - ArtifactUpload/dev/KnowledgePlatform/KnowledgePlatform - false - - - artifact_source - <font color=teal size=2>Choose the artifact source.</font> - choice-parameter-11231260290779 - 1 - - false - - - - false - - - ContentTool - - - PT_SINGLE_SELECT - false - 1 - - - build_number - - choice-parameter-11231262182182 - 1 - - false - - - - false - - - ContentTool - - artifact_source - ET_FORMATTED_HTML - false - - - artifact_version - - choice-parameter-11231264192585 - 1 - - false - - - - false - - - ContentTool - - artifact_source - ET_FORMATTED_HTML - false - - - command - <font color=teal size=2>enter the command</font> - sync - false - - - parameters - <font color=teal size=2>enter the do id </font> - - false - - - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-learning-platform.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - pipelines/deploy/content-tool/Jenkinsfile - false - - - true - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/FileSyncTool/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/FileSyncTool/config.xml deleted file mode 100644 index 573e764485..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/FileSyncTool/config.xml +++ /dev/null @@ -1,151 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - absolute_job_path - <font color=teal size=2>Please specify the absolute path to the job from which the metadata.json will be copied.</font> - ArtifactUpload/dev/KnowledgePlatform/Synctool - false - - - artifact_source - <font color=teal size=2>Choose the artifact source.</font> - choice-parameter-12064212918348 - 1 - - false - - - - false - - - FileSyncTool - - - PT_SINGLE_SELECT - false - 1 - - - build_number - - choice-parameter-12064215048751 - 1 - - false - - - - false - - - FileSyncTool - - artifact_source - ET_FORMATTED_HTML - false - - - artifact_version - - choice-parameter-12064217003054 - 1 - - false - - - - false - - - FileSyncTool - - artifact_source - ET_FORMATTED_HTML - false - - - filename - <font color=teal size=2>enter valid filename with extention</font> - - false - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-learning-platform.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - false - - - - pipelines/deploy/file-sync-tool/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Secor/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Monitoring/config.xml similarity index 69% rename from deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Secor/config.xml rename to deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Monitoring/config.xml index 959c1019a7..8945d48949 100644 --- a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Secor/config.xml +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Monitoring/config.xml @@ -1,7 +1,7 @@ - <font color=red size=2><b>This jobs is currently disabled as it's not being used.</b></font> + false @@ -17,9 +17,23 @@ false false + + + + + ../DataPipeline/Monitoring, + + FAILURE + 2 + RED + true + + + + - + 2 @@ -38,13 +52,14 @@ true false + 0 false - pipelines/provision/secor/Jenkinsfile + pipelines/deploy/monitor/KnowledgePlatform/Jenkinsfile false - true + false \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Registry/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Registry/config.xml deleted file mode 100644 index 4a38eb29df..0000000000 --- a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Registry/config.xml +++ /dev/null @@ -1,50 +0,0 @@ - - - - <font color=red size=2><b>This jobs is currently disabled as it's not being used.</b></font> - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - false - - - - pipelines/provision/registry/Jenkinsfile - false - - - true - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/config.xml index 6fe3ca0b64..68477b8ac7 100644 --- a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/config.xml +++ b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/config.xml @@ -3,7 +3,7 @@ - + diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/Cassandra/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/Cassandra/config.xml deleted file mode 100644 index b71487d9a9..0000000000 --- a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/Cassandra/config.xml +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - 2 - - - https://github.com/project-sunbird/sunbird-data-pipeline.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - false - - - - pipelines/provision/cassandra/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/Kafka/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/Kafka/config.xml deleted file mode 100644 index f0f0b2698e..0000000000 --- a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/Kafka/config.xml +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - <font color=red size=2><b>This job is being provisioned from KnowlwdgePlatform directory. This can be enabled and used for provisioning, if KnowledgePlatform jobs are not used.</b></font> - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - 2 - - - https://github.com/project-sunbird/sunbird-data-pipeline.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - pipelines/provision/kafka/Jenkinsfile - false - - - true - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/TelemetrySearch/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/TelemetrySearch/config.xml deleted file mode 100644 index 188ae28244..0000000000 --- a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/TelemetrySearch/config.xml +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - <font color=red size=2><b>This job is being provisioned from KnowledgePlatform directory (CompositeSearch). This can be enabled and used for provisioning, if KnowledgePlatform jobs are not used.</b></font> - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - 2 - - - https://github.com/project-sunbird/sunbird-data-pipeline.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - pipelines/provision/telemetry-elasticsearch/Jenkinsfile - false - - - true - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/Zookeeper/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/Zookeeper/config.xml deleted file mode 100644 index e3a68da32c..0000000000 --- a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/Zookeeper/config.xml +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - <font color=red size=2><b>This job is being provisioned from KnowlwdgePlatform directory. This can be enabled and used for provisioning, if KnowledgePlatform jobs are not used.</b></font> - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - 2 - - - https://github.com/project-sunbird/sunbird-data-pipeline.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - pipelines/provision/zookeeper/Jenkinsfile - false - - - true - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/config.xml index 6fe3ca0b64..68477b8ac7 100644 --- a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/config.xml +++ b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/config.xml @@ -3,7 +3,7 @@ - + diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Cassandra/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Cassandra/config.xml index 3e97f1ffac..a9a247e8d2 100644 --- a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Cassandra/config.xml +++ b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Cassandra/config.xml @@ -8,7 +8,7 @@ - <font color=red size=2><b>This job is being provisioned from datapipeline directory. This can be enabled and used for provisioning, if datapipeline jobs are not used.</b></font> + false diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Yarn/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Yarn/config.xml deleted file mode 100644 index 245f67d161..0000000000 --- a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Yarn/config.xml +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - <font color=red size=2><b>This job is being provisioned from datapipeline directory. This can be enabled and used for provisioning, if datapipeline jobs are not used.</b></font> - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-learning-platform.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - false - - - - pipelines/provision/yarn/Jenkinsfile - false - - - true - \ No newline at end of file From e457b35d2621bcd88793137d49ee74ea45439032 Mon Sep 17 00:00:00 2001 From: msknext Date: Mon, 11 Feb 2019 05:21:45 +0000 Subject: [PATCH 1067/1345] Updated install step --- deploy/jenkins/jenkins-server-setup.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/deploy/jenkins/jenkins-server-setup.sh b/deploy/jenkins/jenkins-server-setup.sh index 400126a2ee..3a35fa69a1 100755 --- a/deploy/jenkins/jenkins-server-setup.sh +++ b/deploy/jenkins/jenkins-server-setup.sh @@ -9,10 +9,11 @@ echo -e "\n\e[0;32m${bold}Installating JDK8${normal}\n" apt-get install -y openjdk-8-jdk-headless echo -e "\n\e[0;32m${bold}Installating Jenkins${normal}" -apt install -y -f rm -rf jenkins_2.154_all.deb wget https://pkg.jenkins.io/debian/binary/jenkins_2.154_all.deb dpkg -i jenkins_2.154_all.deb +apt install -y -f +dpkg -i jenkins_2.154_all.deb echo -e "\n\e[0;32m${bold}Starting Jenkins service${normal}" service jenkins restart From 93b58f799bb9c389f4cecf0ce3c560f265cb0d2d Mon Sep 17 00:00:00 2001 From: msknext Date: Mon, 11 Feb 2019 05:34:38 +0000 Subject: [PATCH 1068/1345] Adding jenkins restart --- deploy/jenkins/jenkins-config-setup.sh | 3 +++ deploy/jenkins/jenkins-server-setup.sh | 6 +++--- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/deploy/jenkins/jenkins-config-setup.sh b/deploy/jenkins/jenkins-config-setup.sh index 70a7a8ef3a..618813cd21 100755 --- a/deploy/jenkins/jenkins-config-setup.sh +++ b/deploy/jenkins/jenkins-config-setup.sh @@ -2,6 +2,9 @@ bold=$(tput bold) normal=$(tput sgr0) +echo -e "\n\e[0;32m${bold}Starting Jenkins service${normal}" +service jenkins restart + echo -e "\e[0;32m${bold}Jenkins configuration setup...${normal}" read -p 'Jenkins URL without http://: ' server read -p 'Jenkins admin username: ' username diff --git a/deploy/jenkins/jenkins-server-setup.sh b/deploy/jenkins/jenkins-server-setup.sh index 3a35fa69a1..e6741af815 100755 --- a/deploy/jenkins/jenkins-server-setup.sh +++ b/deploy/jenkins/jenkins-server-setup.sh @@ -15,9 +15,6 @@ dpkg -i jenkins_2.154_all.deb apt install -y -f dpkg -i jenkins_2.154_all.deb -echo -e "\n\e[0;32m${bold}Starting Jenkins service${normal}" -service jenkins restart - echo -e "\n\e[0;32m${bold}Installating PIP${normal}" apt-get install -y python-pip @@ -55,4 +52,7 @@ usermod -aG docker jenkins echo -e "\n\e[0;32m${bold}Creating bashrc for jenkins user ${normal}" cp /etc/skel/.bashrc /var/lib/jenkins +echo -e "\n\e[0;32m${bold}Restarting Jenkins service${normal}" +service jenkins restart + echo -e "\n\e[0;32m${bold}Installation complete. Please go to your jenkins URL and continue setup${normal}" From 829319286663141d724ed357fa32dab7b5053b5a Mon Sep 17 00:00:00 2001 From: Vinaya Kumar B Date: Mon, 11 Feb 2019 11:18:27 +0530 Subject: [PATCH 1069/1345] Issue #SB-10240 feat: Onboard dashboard course progress API v2 --- ansible/roles/kong-api/defaults/main.yml | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/ansible/roles/kong-api/defaults/main.yml b/ansible/roles/kong-api/defaults/main.yml index 237ec40866..fbe654f207 100644 --- a/ansible/roles/kong-api/defaults/main.yml +++ b/ansible/roles/kong-api/defaults/main.yml @@ -1182,6 +1182,22 @@ kong_apis: config.limit_by: credential - name: request-size-limiting config.allowed_payload_size: "{{ small_request_size_limit }}" + - name: getCourseProgressDashboardV2 + request_path: "{{ dashboard_service_prefix }}/v2/progress/course" + upstream_url: "{{ learning_service_url }}/v2/dashboard/progress/course" + strip_request_path: true + plugins: + - name: jwt + - name: cors + - "{{ statsd_pulgin }}" + - name: acl + config.whitelist: courseUser + - name: rate-limiting + config.policy: local + config.hour: "{{ medium_rate_limit_per_hour }}" + config.limit_by: credential + - name: request-size-limiting + config.allowed_payload_size: "{{ small_request_size_limit }}" - name: getCourseConsumptionDashboard request_path: "{{ dashboard_service_prefix }}/v1/consumption/course" upstream_url: "{{ learning_service_url }}/v1/dashboard/consumption/course" From 856802baf13cbbceef154806e767e7b06c16f3d0 Mon Sep 17 00:00:00 2001 From: S M Y Date: Mon, 11 Feb 2019 11:35:28 +0530 Subject: [PATCH 1070/1345] Issue #000 vars: vars update --- private_repo/ansible/inventory/dev/Core/secrets.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/private_repo/ansible/inventory/dev/Core/secrets.yml b/private_repo/ansible/inventory/dev/Core/secrets.yml index 5f2d4688f6..bb5b1559cb 100644 --- a/private_repo/ansible/inventory/dev/Core/secrets.yml +++ b/private_repo/ansible/inventory/dev/Core/secrets.yml @@ -5,7 +5,7 @@ core_vault_badging_authorization_key: core_vault_badger_admin_password: core_vault_sunbird_azure_storage_account: core_vault_sunbird_azure_storage_key: -core_vault_docker_registry_url: "" +core_vault_docker_registry_url: "https://index.docker.io/v1" # use this value if using dockerhub core_vault_docker_registry_user: core_vault_docker_registry_password: core_vault_proxy_site_key: |+ @@ -25,13 +25,13 @@ core_vault_sunbird_account_key: "{{core_vault_sunbird_azure_storage_key}}" core_vault_sunbird_encryption_key: core_vault_postgres_replication_user_password: "{{core_vault_postgres_password}}" core_vault_postgres_exporter_password: "{{core_vault_postgres_password}}" +core_vault_keycloak_api_management_user_password: #NOT REQUIRED ############################## core_vault_jenkins_slave_jenkins_username: "" #### if it is not required will remove core_vault_jenkins_slave_jenkins_password: "" #### if it is not required will remove core_vault_deployer_ssh_key: |+ core_vault_ops_private_key: |+ -core_vault_keycloak_api_management_user_password: core_vault_trampoline_secret: "{{core_vault_sunbird_trampoline_secret}}" ## dont core_vault_azure_storage_secret: # Artifact upload core_vault_ansible_vault_password: From d2652acab455b6692186017fdd3a4e188d05d05d Mon Sep 17 00:00:00 2001 From: msknext Date: Mon, 11 Feb 2019 06:21:10 +0000 Subject: [PATCH 1071/1345] Adding jenkins restart --- deploy/jenkins/jenkins-config-setup.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deploy/jenkins/jenkins-config-setup.sh b/deploy/jenkins/jenkins-config-setup.sh index 618813cd21..aa169cab6f 100755 --- a/deploy/jenkins/jenkins-config-setup.sh +++ b/deploy/jenkins/jenkins-config-setup.sh @@ -2,7 +2,7 @@ bold=$(tput bold) normal=$(tput sgr0) -echo -e "\n\e[0;32m${bold}Starting Jenkins service${normal}" +echo -e "\n\e[0;32m${bold}Restarting Jenkins service${normal}" service jenkins restart echo -e "\e[0;32m${bold}Jenkins configuration setup...${normal}" From a415d527c3bc385396c8958c7a97e2afee04e5ed Mon Sep 17 00:00:00 2001 From: G33tha Date: Mon, 11 Feb 2019 12:32:08 +0530 Subject: [PATCH 1072/1345] Update common.yml --- .../ansible/inventory/dev/KnowledgePlatform/common.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/private_repo/ansible/inventory/dev/KnowledgePlatform/common.yml b/private_repo/ansible/inventory/dev/KnowledgePlatform/common.yml index f1f7a08aca..76cb08cd21 100644 --- a/private_repo/ansible/inventory/dev/KnowledgePlatform/common.yml +++ b/private_repo/ansible/inventory/dev/KnowledgePlatform/common.yml @@ -28,8 +28,8 @@ content_keyspace_name: "{{instance}}_content_store" hierarchy_keyspace_name: "{{instance}}_hierarchy_store" orchestrator_keyspace_name: "{{instance}}_script_store" -neo4j_home: "{{learner_user_home}}/{{neo4j_dir}}/neo4j-enterprise-3.3.0" -neo4j_zip: neo4j-enterprise-3.3.0-unix.tar.gz # neo4j enterprise version.zip +neo4j_home: "{{learner_user_home}}/{{neo4j_dir}}/neo4j-enterprise-3.3.9" +neo4j_zip: neo4j-enterprise-3.3.9-unix.tar.gz # neo4j enterprise version.zip neo4j_enterprise: "true" environment_id: 10000000 From c286c8d5e78b93a21c1d6aee72506bcf1f092ecb Mon Sep 17 00:00:00 2001 From: G33tha Date: Mon, 11 Feb 2019 12:32:39 +0530 Subject: [PATCH 1073/1345] Update common.yml --- private_repo/ansible/inventory/dev/KnowledgePlatform/common.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/private_repo/ansible/inventory/dev/KnowledgePlatform/common.yml b/private_repo/ansible/inventory/dev/KnowledgePlatform/common.yml index 76cb08cd21..e7caf05e63 100644 --- a/private_repo/ansible/inventory/dev/KnowledgePlatform/common.yml +++ b/private_repo/ansible/inventory/dev/KnowledgePlatform/common.yml @@ -40,7 +40,7 @@ dial_service_search_url: https://dev.ekstep.in/api/dialcode/v3/search learning_content_h5p_library_path: https://s3.ap-south-1.amazonaws.com/ekstep-public-dev/content/templates/h5p-library-latest.zip -# Unknown vars +# Undefined vars content_to_vec_url: # content_to_vec_url orchestrator_url: s3_public_bucket: "" From 1735d03717ef15b94ce063d09d64173317ffb9bc Mon Sep 17 00:00:00 2001 From: G33tha Date: Mon, 11 Feb 2019 12:46:31 +0530 Subject: [PATCH 1074/1345] Update bootstrap.yml --- ansible/bootstrap.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/bootstrap.yml b/ansible/bootstrap.yml index 5457dd849e..4633d5a48e 100644 --- a/ansible/bootstrap.yml +++ b/ansible/bootstrap.yml @@ -1,4 +1,4 @@ -- hosts: 'all:!localhost' +- hosts: 'all' become: yes gather_facts: no pre_tasks: From f7e9e017ca9186e6f20ace220f7234a704f19f3a Mon Sep 17 00:00:00 2001 From: harshavardhnc Date: Mon, 11 Feb 2019 12:51:53 +0530 Subject: [PATCH 1075/1345] Issue #00 fix: prometheus backup issue --- ansible/roles/prometheus-backup/tasks/main.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/ansible/roles/prometheus-backup/tasks/main.yml b/ansible/roles/prometheus-backup/tasks/main.yml index 274c23d0cc..84724e249c 100644 --- a/ansible/roles/prometheus-backup/tasks/main.yml +++ b/ansible/roles/prometheus-backup/tasks/main.yml @@ -20,6 +20,7 @@ archive: path: "{{prometheus_data_dir}}" dest: "{{prometheus_backup_gzip_file_path}}" + ignore_errors: yes always: - name: ensure prometheus is started after backup shell: "docker service scale monitor_prometheus=1" From 957eef4964a8533f8933d828fa813ebdeeb52efb Mon Sep 17 00:00:00 2001 From: harshavardhnc Date: Mon, 11 Feb 2019 12:56:29 +0530 Subject: [PATCH 1076/1345] Issue #00 fix: prometheus backup issue --- ansible/roles/prometheus-backup/tasks/main.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/ansible/roles/prometheus-backup/tasks/main.yml b/ansible/roles/prometheus-backup/tasks/main.yml index 84724e249c..274c23d0cc 100644 --- a/ansible/roles/prometheus-backup/tasks/main.yml +++ b/ansible/roles/prometheus-backup/tasks/main.yml @@ -20,7 +20,6 @@ archive: path: "{{prometheus_data_dir}}" dest: "{{prometheus_backup_gzip_file_path}}" - ignore_errors: yes always: - name: ensure prometheus is started after backup shell: "docker service scale monitor_prometheus=1" From 3a9f8b5c515bc04131231c8170b3027050a67858 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Mon, 11 Feb 2019 13:11:22 +0530 Subject: [PATCH 1077/1345] Issue #000 feat: Updated common variable --- ansible/inventory/env/group_vars/env.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ansible/inventory/env/group_vars/env.yml b/ansible/inventory/env/group_vars/env.yml index 1f5e8c9759..85b7eaa4fb 100644 --- a/ansible/inventory/env/group_vars/env.yml +++ b/ansible/inventory/env/group_vars/env.yml @@ -8,6 +8,9 @@ sunbird_installation: "{{env}}" # +keycloak sunbird_msg_sender: "{{env}}" sunbird_instance: "{{env}}" env_short_name: "{{env}}" +sunbird_env: "{{env}}" #Ekstep environment to connect to. Use `qa` for non-prod deployments, and `prod` for prod deployment. +sunbird_app_name: "{{env}}" + ## Learner service sunbird_url_shortner_access_token: "" From 124252af8cf4b4c79d0f3c90f5d281f4a63e22f2 Mon Sep 17 00:00:00 2001 From: msknext Date: Mon, 11 Feb 2019 07:55:37 +0000 Subject: [PATCH 1078/1345] update m2 --- deploy/jenkins/jenkins-config-setup.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/deploy/jenkins/jenkins-config-setup.sh b/deploy/jenkins/jenkins-config-setup.sh index aa169cab6f..843bfcd597 100755 --- a/deploy/jenkins/jenkins-config-setup.sh +++ b/deploy/jenkins/jenkins-config-setup.sh @@ -15,8 +15,8 @@ rsync -r jobs /var/lib/jenkins/ chown -R jenkins:jenkins /var/lib/jenkins/jobs echo -e "\n\e[0;32m${bold}Downloading and copying m2 directory to Jenkins ${normal}" -wget https://sunbirdpublic.blob.core.windows.net/installation/m2_new.zip -unzip m2_new.zip +wget https://sunbirdpublic.blob.core.windows.net/installation/m2_updated.zip +unzip m2_updated.zip mv .m2 /var/lib/jenkins chown -R jenkins:jenkins /var/lib/jenkins/.m2 From cc5f582aabd7874c59895c1f7b3bc14c21fc9cfc Mon Sep 17 00:00:00 2001 From: msknext Date: Mon, 11 Feb 2019 09:22:45 +0000 Subject: [PATCH 1079/1345] Ansicolor plugin fix --- deploy/jenkins/jenkins-config-setup.sh | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/deploy/jenkins/jenkins-config-setup.sh b/deploy/jenkins/jenkins-config-setup.sh index 843bfcd597..43d2549f9e 100755 --- a/deploy/jenkins/jenkins-config-setup.sh +++ b/deploy/jenkins/jenkins-config-setup.sh @@ -22,5 +22,9 @@ chown -R jenkins:jenkins /var/lib/jenkins/.m2 echo -e "\n\e[0;32m${bold}Installating plugins... ${normal}" ./butler plugins i -s $server -u $username -p $password +wget https://sunbirdpublic.blob.core.windows.net/installation/hudson.plugins.ansicolor.AnsiColorBuildWrapper.xml +rm /var/lib/jenkins/hudson.plugins.ansicolor.AnsiColorBuildWrapper.xml +mv hudson.plugins.ansicolor.AnsiColorBuildWrapper.xml /var/lib/jenkins +chown jenkins:jenkins /var/lib/jenkins/hudson.plugins.ansicolor.AnsiColorBuildWrapper.xml echo -e "\n\e[0;32m${bold}Go to manage jenkins -> Plugin manager -> Update center -> Check restart jenkins after installation${normal}" From e06bb0b08197ff55098401c6b7ca0be4223eee08 Mon Sep 17 00:00:00 2001 From: S M Y Date: Mon, 11 Feb 2019 15:03:28 +0530 Subject: [PATCH 1080/1345] Issue #000 vars: vars update --- ansible/roles/cassandra/tasks/main.yml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/ansible/roles/cassandra/tasks/main.yml b/ansible/roles/cassandra/tasks/main.yml index a9f540a412..286405a236 100755 --- a/ansible/roles/cassandra/tasks/main.yml +++ b/ansible/roles/cassandra/tasks/main.yml @@ -48,5 +48,14 @@ mode: 0644 notify: "restart cassandra" +- name: wait for cassandra to gossip with seed nodes + pause: + seconds: 10 + +- name: Restart Cassandra now + service: + name: cassandra + state: restarted + - name: wait for cassandra to be up and running wait_for: host={{inventory_hostname}} port=9042 delay=30 From cb66419d72f9bd50b347ca08c8eb9e6172787d08 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Mon, 11 Feb 2019 17:22:59 +0530 Subject: [PATCH 1081/1345] Issue #000 feat: Updated default_channel as it's hardcoded --- ansible/inventory/env/group_vars/env.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ansible/inventory/env/group_vars/env.yml b/ansible/inventory/env/group_vars/env.yml index 85b7eaa4fb..0c977b93e5 100644 --- a/ansible/inventory/env/group_vars/env.yml +++ b/ansible/inventory/env/group_vars/env.yml @@ -517,6 +517,8 @@ vault_country: "{{core_vault_country}}" vault_route: "{{core_vault_route}}" vault_sms_method_type: "{{core_vault_sms_method_type}}" +# telemetry +default_channel_id: "in.ekstep" ## config_refresh_interval: 10 From a292e65e9a016380158ea045924562a3bdb1bfe5 Mon Sep 17 00:00:00 2001 From: S M Y Date: Mon, 11 Feb 2019 22:54:13 +0530 Subject: [PATCH 1082/1345] Issue #000 vars: update core vars for adaptors --- .../ansible/inventory/dev/Core/common.yml | 142 ++++++++++-------- .../ansible/inventory/dev/Core/secrets.yml | 59 +++++--- 2 files changed, 123 insertions(+), 78 deletions(-) diff --git a/private_repo/ansible/inventory/dev/Core/common.yml b/private_repo/ansible/inventory/dev/Core/common.yml index 03d07c4162..3fc782e608 100644 --- a/private_repo/ansible/inventory/dev/Core/common.yml +++ b/private_repo/ansible/inventory/dev/Core/common.yml @@ -1,62 +1,35 @@ -#Common vars +########################################## +# Starting Of Core VARS env: #Name of the environment, e.g. dev, staging or production. proxy_server_name: #Domain on which the portal will be accessed. e.g. staging.{implementation-name}.org proto: # Protocol -api_proxy_name: # Domain name on which device register and other api's will be accessed -sunbird_app_name: bootstrap_user: bootstrap_key_path: ssh_public_key_deployer: "" -ansible_ssh_private_key_file: learningservice_ip: # Load balancer IP for learning server searchservice_ip: # search service Load balancer IP analyticsapi_ip: # Analytics Service Load Balancer IP -sunbird_ekstep_api_base_url: #API base URL of the Ekstep environment. Use `https://qa.ekstep.in/api` for non-prod deployments, and use `https://api.ekstep.in/` for prod deployment. -sunbird_ekstep_proxy_base_url: #Base URL of the Ekstep environment. Use `https://qa.ekstep.in/` for non-prod deployments, and `https://community.ekstep.in/` for prod deployment. -sunbird_mail_server_from_email: #Email ID that should be as from address in mails -sunbird_env: #Ekstep environment to connect to. Use `qa` for non-prod deployments, and `prod` for prod deployment. +keycloak_url: "" #Keycloak Load balancer IP +core_vault_bootstrap_user: # User with which you launched Instance/Droplet/VM/Server +core_vault_bootstrap_key_path: # Private Key Location in jenkins +sunbird_default_channel: # Channel used to create vars +artifacts_container: '' # Storing contents in blob +ekstep_api_key: "" # Ekestep API key for plugins +ekstep_s3_env: qa # dev or qa of ekstep for plugins + +############# Monitoring vars ############### -keycloak_url: "" #Keycloak Load balancer IP -swarm_agent_load_balancer: -sunbird_installation: -sunbird_msg_sender: -sunbird_environment: -sunbird_instance: -sunbird_android_app_url: "" -sunbird_es_port: 9300 -sunbird_installation_email: -project: mail_server_host: mail_server_port: mail_server_username: "" -monitor_alerts_slack_channel: -sunbird_external_content_whitelisted_domains: "" -core_vault_bootstrap_user: -core_vault_bootstrap_key_path: -sunbird_blob_env: -ekstep_s3_env: -sunbird_app_name: -sunbird_default_channel: -sunbird_content_azure_storage_container: -azure_account_name: -azure_account_key: "{{core_vault_azure_storage_secret}}" -artifacts_container: '' -keycloak_api_management_user_email: -keycloak_api_management_user_first_name: -keycloak_api_management_user_last_name: -keycloak_api_management_user_password: "{{core_vault_keycloak_api_management_user_password}}" -ekstep_api_key: "" - -############# - - - +monitor_alerts_slack_channel: app_alerts_mailing_list: "" devops_alerts_mailing_list: "" site_alerts_mailing_list: "" keycloak_alerts_mailing_list: "" api_manager_alerts_mailing_list: "" alerts_mailing_list : "" +swarm_agent_load_balancer: kibana_oauth_authenticated_email_domains: - domain1 - domain2 @@ -64,11 +37,69 @@ kibana_oauth_authenticated_email_ids: - email1 - email2 monitor_alerts_mail_from_email: -env_short_name: -sunbird_config_service_url: '' -config_cache_ttl: 600 -# keycloak sms provider + +####################### END OF VARS ############################# + + + + + + + + + + + + + + + + + + + + + + + + + +################################################ +# NOT MANDATORY VARS + +api_proxy_name: "{{proto}}://api.{{proxy_server_name}}" # Domain name on which device register and other api's will be accessed +sunbird_app_name: "{{env}}" +ansible_ssh_private_key_file: +sunbird_env: "{{env}}" +sunbird_ekstep_api_base_url: "https://{{ekstep_s3_env}}.ekstep.in/api" #API base URL of the Ekstep environment. Use `https://qa.ekstep.in/api` for non-prod deployments, and use `https://api.ekstep.in/` for prod deployment. +sunbird_ekstep_proxy_base_url: "https://{{ekstep_s3_env}}.ekstep.in/" #Base URL of the Ekstep environment. Use `https://qa.ekstep.in/` for non-prod deployments, and `https://community.ekstep.in/` for prod deployment. +sunbird_mail_server_from_email: "support@sunbird.org" #Email ID that should be as from address in mails +sunbird_installation: "{{env}}" +sunbird_content_azure_storage_container: content +sunbird_msg_sender: +sunbird_environment: "{{env}}" +sunbird_instance: "{{env}}" +sunbird_android_app_url: "" +sunbird_installation_email: "admin@sunbird.org" +keycloak_api_management_user_password: "{{core_vault_keycloak_api_management_user_password}}" +azure_account_name: "{{core_vault_sunbird_azure_storage_account}}" +azure_account_key: "{{core_vault_sunbird_azure_storage_key}}" +project: "sunbird" +sunbird_app_name: "{{env}" +sunbird_es_port: 9300 +badger_url: http://azureaccountname.blob.core.windows.net/ +sunbird_blob_env: "{{core_vault_sunbird_azure_storage_account}}" +sunbird_cdn_url: "" +sunbird_url_shortner_access_token: "" +sunbird_url_shortner_enable: "" +keycloak_api_management_username: admin +keycloak_admin_username: admin #Keycloak Admin username . Dont change this value +jenkins_url: "http://10.20.0.12:8080/jenkins" +upstream_url: "{{azure_account_name}}.blob.core.windows.net/{{sunbird_content_azure_storage_container}}" +sunbird_portal_user_upload_ref_link: http://www.sunbird.org/features-documentation/register_user +sunbird_user_profile_field_default_visibility: private +sunbird_keycloak_required_action_link_expiration_seconds: 2592000 keycloak_build_src: "" keycloak_ver: "keycloak-3.2.0.Final" keycloak_sms_provider_build: "keycloak-email-phone-autthenticator-1.0-SNAPSHOT.jar" @@ -78,22 +109,15 @@ keycloak_ekstep_sunbird_login_theme_file: "login.tar.gz" keycloak_ekstep_sunbird_login_theme_dest: "/opt/keycloak/themes/sunbird/login" keycloak_postgresql: "postgresql-9.4.1212.jar" sunbird_auth_version: 1.0v +sunbird_external_content_whitelisted_domains: "" badger_admin_email: badger_file_storage: +keycloak_api_management_user_email: "admin@sunbird.org" +keycloak_api_management_user_first_name: "admin" +keycloak_api_management_user_last_name: "admin" content_service_whitelisted_channels: "" content_service_blacklisted_channels: "" -sunbird_installation_display_name: "" -upstream_url: "{{azure_account_name}}.blob.core.windows.net/{{sunbird_content_azure_storage_container}}" -sunbird_portal_user_upload_ref_link: http://www.sunbird.org/features-documentation/register_user -sunbird_user_profile_field_default_visibility: private -sunbird_keycloak_required_action_link_expiration_seconds: 2592000 - -# check and delete the variable - -badger_url: http://azureaccountname.blob.core.windows.net/ -sunbird_cdn_url: "" -sunbird_url_shortner_access_token: "" -sunbird_url_shortner_enable: "" -keycloak_api_management_username: admin -keycloak_admin_username: admin #Keycloak Admin username . Dont change this value -jenkins_url: "http://10.20.0.12:8080/jenkins" +sunbird_installation_display_name: "{{env}}" +env_short_name: "{{env}}" +sunbird_config_service_url: '' +config_cache_ttl: 600 diff --git a/private_repo/ansible/inventory/dev/Core/secrets.yml b/private_repo/ansible/inventory/dev/Core/secrets.yml index bb5b1559cb..c31abe139f 100644 --- a/private_repo/ansible/inventory/dev/Core/secrets.yml +++ b/private_repo/ansible/inventory/dev/Core/secrets.yml @@ -1,40 +1,61 @@ ############# Core ####################### ####### Secrets ####### + core_vault_postgres_password: -core_vault_badging_authorization_key: -core_vault_badger_admin_password: core_vault_sunbird_azure_storage_account: core_vault_sunbird_azure_storage_key: core_vault_docker_registry_url: "https://index.docker.io/v1" # use this value if using dockerhub core_vault_docker_registry_user: core_vault_docker_registry_password: -core_vault_proxy_site_key: |+ +core_vault_proxy_site_key: |+ + core_vault_proxy_site_crt: |+ -core_vault_sunbird_sso_publickey: -core_vault_keystore_password: ## cassandra keystore password -core_vault_truststore_password: -core_vault_mail_server_password: '' -core_vault_sunbird_sso_username: -core_vault_sunbird_sso_password: + +core_vault_ansible_vault_password: + +################### DONT FILL THESE VARIABLES INITIALLY ################### + +core_vault_sunbird_sso_publickey: # Get After Keycloak Deployment core_vault_sunbird_api_auth_token: core_vault_sunbird_ekstep_api_key: -core_vault_keycloak_password: -core_vault_grafana_admin_password: -core_vault_sunbird_trampoline_secret: deep-secret ## any 8 character value + + + + + + + + +####################### END OF VARS ########################################## + + + + + + +#NOT REQUIRED TO EDIT ############################## +core_vault_keycloak_password: "admin" +core_vault_mail_server_password: '' +core_vault_grafana_admin_password: "sunbird" +core_vault_truststore_password: "sunbird" +core_vault_sunbird_trampoline_secret: "deep-secret" ## any 8 character value core_vault_sunbird_account_key: "{{core_vault_sunbird_azure_storage_key}}" core_vault_sunbird_encryption_key: core_vault_postgres_replication_user_password: "{{core_vault_postgres_password}}" core_vault_postgres_exporter_password: "{{core_vault_postgres_password}}" -core_vault_keycloak_api_management_user_password: - -#NOT REQUIRED ############################## +core_vault_keycloak_api_management_user_password: admin +core_vault_keystore_password: sunbird ## cassandra keystore password +core_vault_sunbird_sso_username: admin +core_vault_sunbird_sso_password: admin core_vault_jenkins_slave_jenkins_username: "" #### if it is not required will remove +core_vault_badger_admin_password: "sunbird" +core_vault_badging_authorization_key: core_vault_jenkins_slave_jenkins_password: "" #### if it is not required will remove core_vault_deployer_ssh_key: |+ core_vault_ops_private_key: |+ core_vault_trampoline_secret: "{{core_vault_sunbird_trampoline_secret}}" ## dont -core_vault_azure_storage_secret: # Artifact upload -core_vault_ansible_vault_password: +core_vault_azure_storage_secret: "{{core_vault_sunbird_azure_storage_key}}" # Artifact upload + ################################################### @@ -54,7 +75,7 @@ core_vault_sunbird_google_keycloak_secret: ### -core_vault_proxy_prometheus_admin_creds: +core_vault_proxy_prometheus_admin_creds: "admin" core_vault_google_keycloak_secret: core_vault_sunbird_google_oauth_clientSecret: core_vault_postgres_username: postgres # dont change this value @@ -67,7 +88,7 @@ core_vault_google_captcha_site_key: '' core_vault_kibana_google_client_id: core_vault_kibana_google_client_secret: core_vault_kibana_cookie_secret: -core_vault_grafana_editor_password: "" +core_vault_grafana_editor_password: "sunbird" core_vault_grafana_dashboards_git_repo_url_with_credentails: "https://github.com/project-sunbird/grafana-dashboards.git" core_vault_monitor_alerts_slack_url: "" core_vault_kong__test_jwt: From 227cdbdb2244e907b59c0c60f8bb46e5c2d576f5 Mon Sep 17 00:00:00 2001 From: G33tha Date: Tue, 12 Feb 2019 12:21:41 +0530 Subject: [PATCH 1083/1345] Update env.yml --- ansible/inventory/env/group_vars/env.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/ansible/inventory/env/group_vars/env.yml b/ansible/inventory/env/group_vars/env.yml index 0c977b93e5..c1a18aa3ef 100644 --- a/ansible/inventory/env/group_vars/env.yml +++ b/ansible/inventory/env/group_vars/env.yml @@ -40,8 +40,6 @@ sunbird_azure_account_name: "{{core_vault_sunbird_azure_storage_account}}" sunbird_google_keycloak_secret: "{{core_vault_google_keycloak_secret}}" jenkins_admin_username: "{{core_vault_jenkins_admin_username}}" jenkins_admin_password: "{{core_vault_jenkins_admin_password}}" -bootstrap_user: "{{core_vault_bootstrap_user}}" -bootstrap_key_path: "{{core_vault_bootstrap_key_path}}" vault_badging_authorization_key: "{{core_vault_badging_authorization_key}}" vault_postgres_exporter_password: "{{core_vault_postgres_exporter_password}}" From b0d15a51bf2f0f17766a9c2734ca2002b934ce03 Mon Sep 17 00:00:00 2001 From: G33tha Date: Tue, 12 Feb 2019 12:28:28 +0530 Subject: [PATCH 1084/1345] Update bootstrap.yml --- ansible/bootstrap.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ansible/bootstrap.yml b/ansible/bootstrap.yml index 4633d5a48e..a31e1339e7 100644 --- a/ansible/bootstrap.yml +++ b/ansible/bootstrap.yml @@ -15,6 +15,7 @@ - bootstrap_any - hosts: "{{hosts}}" + gather_facts: no become: yes vars_files: - "{{inventory_dir}}/secrets.yml" @@ -25,6 +26,7 @@ - bootstrap_swarm - hosts: "{{hosts}}" + gather_facts: no become: yes vars_files: - "{{inventory_dir}}/secrets.yml" From 2567fcb62df91bd1531819074b5cef1bde87fc73 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Tue, 12 Feb 2019 12:59:41 +0530 Subject: [PATCH 1085/1345] Issue #000 feat: Updated hosts to be local --- ansible/docker_image_push.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/docker_image_push.yml b/ansible/docker_image_push.yml index a9bb19b231..cb97083b63 100644 --- a/ansible/docker_image_push.yml +++ b/ansible/docker_image_push.yml @@ -1,6 +1,6 @@ --- - name: "Push docker images to any docker registry" - hosts: localhost + hosts: local vars_files: - ['{{inventory_dir}}/secrets.yml'] become: yes From 50c4959bfe04b56487793c9a3732af6be9e89b02 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Tue, 12 Feb 2019 13:01:06 +0530 Subject: [PATCH 1086/1345] Revert "Issue #000 feat: Updated hosts to be local" This reverts commit 2567fcb62df91bd1531819074b5cef1bde87fc73. --- ansible/docker_image_push.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/docker_image_push.yml b/ansible/docker_image_push.yml index cb97083b63..a9bb19b231 100644 --- a/ansible/docker_image_push.yml +++ b/ansible/docker_image_push.yml @@ -1,6 +1,6 @@ --- - name: "Push docker images to any docker registry" - hosts: local + hosts: localhost vars_files: - ['{{inventory_dir}}/secrets.yml'] become: yes From e4f79e4983ac69c5fb811aafba0918fd3afb9e03 Mon Sep 17 00:00:00 2001 From: SMY ALTAMASH <30286162+SMYALTAMASH@users.noreply.github.com> Date: Tue, 12 Feb 2019 14:12:36 +0530 Subject: [PATCH 1087/1345] Update Jenkinsfile --- pipelines/bootstrap-swarm/Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pipelines/bootstrap-swarm/Jenkinsfile b/pipelines/bootstrap-swarm/Jenkinsfile index f3357efea6..985e7d58f3 100644 --- a/pipelines/bootstrap-swarm/Jenkinsfile +++ b/pipelines/bootstrap-swarm/Jenkinsfile @@ -20,7 +20,7 @@ node() { jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() currentWs = sh(returnStdout: true, script: 'pwd').trim() ansiblePlaybook = "${currentWs}/ansible/setup-dockerswarm.yml" - ansibleExtraArgs = "--extra-vars \"hosts=${params.hosts}\"" + ansibleExtraArgs = "--extra-vars \"hosts=${params.hosts}\" ansible_ssh_private_key_file=/run/secrets/deployer_ssh_key" values.put('currentWs', currentWs) values.put('env', envDir) values.put('module', module) From e92432b9e1662fb28c079f41461a4be2289bc228 Mon Sep 17 00:00:00 2001 From: SMY ALTAMASH <30286162+SMYALTAMASH@users.noreply.github.com> Date: Tue, 12 Feb 2019 14:13:54 +0530 Subject: [PATCH 1088/1345] Update Jenkinsfile --- pipelines/bootstrap-swarm/Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pipelines/bootstrap-swarm/Jenkinsfile b/pipelines/bootstrap-swarm/Jenkinsfile index 985e7d58f3..01a508db9b 100644 --- a/pipelines/bootstrap-swarm/Jenkinsfile +++ b/pipelines/bootstrap-swarm/Jenkinsfile @@ -20,7 +20,7 @@ node() { jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() currentWs = sh(returnStdout: true, script: 'pwd').trim() ansiblePlaybook = "${currentWs}/ansible/setup-dockerswarm.yml" - ansibleExtraArgs = "--extra-vars \"hosts=${params.hosts}\" ansible_ssh_private_key_file=/run/secrets/deployer_ssh_key" + ansibleExtraArgs = "--extra-vars \"hosts=${params.hosts}\" ansible_ssh_private_key_file='/run/secrets/deployer_ssh_key'" values.put('currentWs', currentWs) values.put('env', envDir) values.put('module', module) From 70524633865d42e2c917ac9ffd1932b9d589d7e3 Mon Sep 17 00:00:00 2001 From: SMY ALTAMASH <30286162+SMYALTAMASH@users.noreply.github.com> Date: Tue, 12 Feb 2019 14:15:12 +0530 Subject: [PATCH 1089/1345] Update Jenkinsfile --- pipelines/bootstrap-swarm/Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pipelines/bootstrap-swarm/Jenkinsfile b/pipelines/bootstrap-swarm/Jenkinsfile index 01a508db9b..418a574705 100644 --- a/pipelines/bootstrap-swarm/Jenkinsfile +++ b/pipelines/bootstrap-swarm/Jenkinsfile @@ -20,7 +20,7 @@ node() { jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() currentWs = sh(returnStdout: true, script: 'pwd').trim() ansiblePlaybook = "${currentWs}/ansible/setup-dockerswarm.yml" - ansibleExtraArgs = "--extra-vars \"hosts=${params.hosts}\" ansible_ssh_private_key_file='/run/secrets/deployer_ssh_key'" + ansibleExtraArgs = "--extra-vars \"hosts=${params.hosts}\" --extra-vars \"ansible_ssh_private_key_file=/run/secrets/deployer_ssh_key\"" values.put('currentWs', currentWs) values.put('env', envDir) values.put('module', module) From 70a776bba7542abf4bd924e80511753009125e21 Mon Sep 17 00:00:00 2001 From: S M Y Date: Wed, 13 Feb 2019 11:26:45 +0530 Subject: [PATCH 1090/1345] Issue #000 vars: learner service env vars --- ansible/inventories/sample/group_vars/sample | 1 + .../roles/stack-sunbird/templates/sunbird_learner-service.env | 1 + 2 files changed, 2 insertions(+) diff --git a/ansible/inventories/sample/group_vars/sample b/ansible/inventories/sample/group_vars/sample index d6df8583b7..6e77ff3c02 100644 --- a/ansible/inventories/sample/group_vars/sample +++ b/ansible/inventories/sample/group_vars/sample @@ -386,3 +386,4 @@ sunbird_content_azure_storage_container: sunbird_azure_report_container_name: reports sunbird_azure_account_name: sunbird_azure_account_key: +sunbird_linked_content_base_url: diff --git a/ansible/roles/stack-sunbird/templates/sunbird_learner-service.env b/ansible/roles/stack-sunbird/templates/sunbird_learner-service.env index a1e80f4d10..71eabdc251 100644 --- a/ansible/roles/stack-sunbird/templates/sunbird_learner-service.env +++ b/ansible/roles/stack-sunbird/templates/sunbird_learner-service.env @@ -84,3 +84,4 @@ sunbird_course_batch_notification_signature={{sunbird_course_batch_notification_ sunbird_otp_expiration={{sunbird_otp_expiration}} sunbird_otp_length={{sunbird_otp_length}} sunbird_content_azure_storage_container={{sunbird_content_azure_storage_container}} +sunbird_linked_content_base_url={{sunbird_linked_content_base_url}} From 8ec92b04eebd4955dcbb9017982a705f39b88e3d Mon Sep 17 00:00:00 2001 From: S M Y Date: Wed, 13 Feb 2019 11:29:35 +0530 Subject: [PATCH 1091/1345] Issue #000 vars: learner service env vars --- ansible/inventory/env/group_vars/env.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/ansible/inventory/env/group_vars/env.yml b/ansible/inventory/env/group_vars/env.yml index c1a18aa3ef..6b0b78d491 100644 --- a/ansible/inventory/env/group_vars/env.yml +++ b/ansible/inventory/env/group_vars/env.yml @@ -524,3 +524,4 @@ config_service_enabled: false trampoline_secret: "{{core_vault_trampoline_secret}}" es_api_host: "{{inventory_hostname}}" +sunbird_linked_content_base_url: From 8ef9cd7fd851d0b44c06488bf4e29b2623a052bd Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Wed, 13 Feb 2019 14:50:05 +0530 Subject: [PATCH 1092/1345] Issue #000 feat: Added sunbird zookeeper --- private_repo/ansible/inventory/dev/DataPipeline/hosts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/private_repo/ansible/inventory/dev/DataPipeline/hosts b/private_repo/ansible/inventory/dev/DataPipeline/hosts index 665f79d0bd..367bf77514 100644 --- a/private_repo/ansible/inventory/dev/DataPipeline/hosts +++ b/private_repo/ansible/inventory/dev/DataPipeline/hosts @@ -1,6 +1,11 @@ +################ Core ######################### [swarm-bootstrap-manager] 15.0.1.4 +# Sunbird zookeeper +[ingestion-cluster-zookeepers] + + ################# LP ########################## [search] 15.0.3.5 From a4591cc62c1624f371513f1b85f0f0215485fcc2 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Wed, 13 Feb 2019 15:12:52 +0530 Subject: [PATCH 1093/1345] Issue #000 feat: Added default channel --- private_repo/ansible/inventory/dev/DataPipeline/common.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/private_repo/ansible/inventory/dev/DataPipeline/common.yml b/private_repo/ansible/inventory/dev/DataPipeline/common.yml index 6592b8a5c3..55bee2aa7d 100644 --- a/private_repo/ansible/inventory/dev/DataPipeline/common.yml +++ b/private_repo/ansible/inventory/dev/DataPipeline/common.yml @@ -13,6 +13,7 @@ ansible_ssh_private_key_file: secor_azure_container_name: dp_azure_account_name: # azure storage account name +default_channel: # channel id of the organization # Data products monitoring web hooks data_exhaust_webhook_url: "" From 169c6bd5d99153d4540510408939f42c27b8d0c8 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Wed, 13 Feb 2019 21:48:08 +0530 Subject: [PATCH 1094/1345] Issue #000 feat: Description for graph passport key --- .../ansible/inventory/dev/KnowledgePlatform/common.yml | 3 +-- .../ansible/inventory/dev/KnowledgePlatform/secrets.yml | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/private_repo/ansible/inventory/dev/KnowledgePlatform/common.yml b/private_repo/ansible/inventory/dev/KnowledgePlatform/common.yml index e7caf05e63..beec54e8c0 100644 --- a/private_repo/ansible/inventory/dev/KnowledgePlatform/common.yml +++ b/private_repo/ansible/inventory/dev/KnowledgePlatform/common.yml @@ -1,6 +1,6 @@ ############## Common ###################### -# Common vars for env +env: proto: domain_name: @@ -12,7 +12,6 @@ ansible_ssh_private_key_file: ###################### LP ############################ ## Common vars for LP and DP -env: azure_public_container: azure_account_name: azure_account_key: "{{lp_vault_azure_storage_secret}}" diff --git a/private_repo/ansible/inventory/dev/KnowledgePlatform/secrets.yml b/private_repo/ansible/inventory/dev/KnowledgePlatform/secrets.yml index 02bf98f042..f9ac1ee383 100644 --- a/private_repo/ansible/inventory/dev/KnowledgePlatform/secrets.yml +++ b/private_repo/ansible/inventory/dev/KnowledgePlatform/secrets.yml @@ -1,6 +1,6 @@ ############## Admin ###################### ############## LP ###################### lp_vault_azure_storage_secret: -lp_vault_graph_passport_key: +lp_vault_graph_passport_key: # can be any random string; to check integrity of content submitted for reviewal lp_vault_youtube_api_key: lp_vault_dial_service_authorization: From 9e1713275783baabe1a587def2c3ba05996bce07 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Thu, 14 Feb 2019 00:42:08 +0530 Subject: [PATCH 1095/1345] Issue #000 feat: Overriding cassandra backup container name --- .../ansible/inventory/dev/KnowledgePlatform/common.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/private_repo/ansible/inventory/dev/KnowledgePlatform/common.yml b/private_repo/ansible/inventory/dev/KnowledgePlatform/common.yml index beec54e8c0..d0c2c0ecb2 100644 --- a/private_repo/ansible/inventory/dev/KnowledgePlatform/common.yml +++ b/private_repo/ansible/inventory/dev/KnowledgePlatform/common.yml @@ -11,7 +11,6 @@ bootstrap_key_path: ansible_ssh_private_key_file: ###################### LP ############################ -## Common vars for LP and DP azure_public_container: azure_account_name: azure_account_key: "{{lp_vault_azure_storage_secret}}" @@ -38,6 +37,8 @@ plugin_media_base_url: https://dev.ekstep.in dial_service_search_url: https://dev.ekstep.in/api/dialcode/v3/search learning_content_h5p_library_path: https://s3.ap-south-1.amazonaws.com/ekstep-public-dev/content/templates/h5p-library-latest.zip +## Cassandra-backup +cassandra_backup_azure_container_name: cassandra-backup-lp # Undefined vars content_to_vec_url: # content_to_vec_url From 7e25519812a35e3dd3e770d8f70b937318a95e95 Mon Sep 17 00:00:00 2001 From: Manzarul Date: Thu, 14 Feb 2019 12:35:33 +0530 Subject: [PATCH 1096/1345] Issues #SB-00 feat: doing private api onboard for portal to test it --- ansible/roles/kong-api/defaults/main.yml | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/ansible/roles/kong-api/defaults/main.yml b/ansible/roles/kong-api/defaults/main.yml index fbe654f207..1fb4c8944f 100644 --- a/ansible/roles/kong-api/defaults/main.yml +++ b/ansible/roles/kong-api/defaults/main.yml @@ -3703,4 +3703,15 @@ kong_apis: - {name: 'acl', config.whitelist: 'publicUser'} - {name: 'rate-limiting', config.policy: "local", config.hour: "{{ medium_rate_limit_per_hour }}"} - {name: 'request-size-limiting', config.allowed_payload_size: "{{ small_request_size_limit }}" } + - name: "privateUserUpdate" + request_path: "{{ user_service_prefix }}/private/v1/update" + upstream_url: "{{ learning_service_url }}/private/user/v1/update" + strip_request_path: true + plugins: + - {name: 'jwt'} + - {name: 'cors'} + - "{{ statsd_pulgin }}" + - {name: 'acl', config.whitelist: 'publicUser'} + - {name: 'rate-limiting', config.policy: "local", config.hour: "{{ medium_rate_limit_per_hour }}"} + - {name: 'request-size-limiting', config.allowed_payload_size: "{{ small_request_size_limit }}" } From 37b81beec6599cc9f31ba88a2c599d9fc0c57101 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Thu, 14 Feb 2019 17:06:42 +0530 Subject: [PATCH 1097/1345] Issue #000 feat: Adding ekstep domain name --- private_repo/ansible/inventory/dev/DataPipeline/common.yml | 1 + private_repo/ansible/inventory/dev/KnowledgePlatform/common.yml | 1 + 2 files changed, 2 insertions(+) diff --git a/private_repo/ansible/inventory/dev/DataPipeline/common.yml b/private_repo/ansible/inventory/dev/DataPipeline/common.yml index 55bee2aa7d..19f3d170d6 100644 --- a/private_repo/ansible/inventory/dev/DataPipeline/common.yml +++ b/private_repo/ansible/inventory/dev/DataPipeline/common.yml @@ -4,6 +4,7 @@ env: proto: domain_name: +ekstep_domain_name: ssh_public_key_deployer: bootstrap_user: bootstrap_key_path: diff --git a/private_repo/ansible/inventory/dev/KnowledgePlatform/common.yml b/private_repo/ansible/inventory/dev/KnowledgePlatform/common.yml index d0c2c0ecb2..e4e99c93b1 100644 --- a/private_repo/ansible/inventory/dev/KnowledgePlatform/common.yml +++ b/private_repo/ansible/inventory/dev/KnowledgePlatform/common.yml @@ -3,6 +3,7 @@ env: proto: domain_name: +ekstep_domain_name: #bootstrap ssh_public_key_deployer: From 408d8ce25ed1fef84100f8c1d158ae684358109b Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Thu, 14 Feb 2019 17:13:14 +0530 Subject: [PATCH 1098/1345] Issue #000 feat: Changed default_channel to default_org_hash_id --- private_repo/ansible/inventory/dev/DataPipeline/common.yml | 2 +- private_repo/ansible/inventory/dev/KnowledgePlatform/common.yml | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/private_repo/ansible/inventory/dev/DataPipeline/common.yml b/private_repo/ansible/inventory/dev/DataPipeline/common.yml index 19f3d170d6..2db06a515a 100644 --- a/private_repo/ansible/inventory/dev/DataPipeline/common.yml +++ b/private_repo/ansible/inventory/dev/DataPipeline/common.yml @@ -14,7 +14,7 @@ ansible_ssh_private_key_file: secor_azure_container_name: dp_azure_account_name: # azure storage account name -default_channel: # channel id of the organization +default_org_hash_id: # channel id of the organization # Data products monitoring web hooks data_exhaust_webhook_url: "" diff --git a/private_repo/ansible/inventory/dev/KnowledgePlatform/common.yml b/private_repo/ansible/inventory/dev/KnowledgePlatform/common.yml index e4e99c93b1..2b1b4e18ef 100644 --- a/private_repo/ansible/inventory/dev/KnowledgePlatform/common.yml +++ b/private_repo/ansible/inventory/dev/KnowledgePlatform/common.yml @@ -45,3 +45,4 @@ cassandra_backup_azure_container_name: cassandra-backup-lp content_to_vec_url: # content_to_vec_url orchestrator_url: s3_public_bucket: "" +default_org_hash_id: # channel id of the organization From 155899b994530c3fa00f77888a3c6e6459d9d21f Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Thu, 14 Feb 2019 19:12:46 +0530 Subject: [PATCH 1099/1345] Issue #000 feat: Removing unused variable secor_azure_container --- private_repo/ansible/inventory/dev/DataPipeline/common.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/private_repo/ansible/inventory/dev/DataPipeline/common.yml b/private_repo/ansible/inventory/dev/DataPipeline/common.yml index 2db06a515a..db84d645c0 100644 --- a/private_repo/ansible/inventory/dev/DataPipeline/common.yml +++ b/private_repo/ansible/inventory/dev/DataPipeline/common.yml @@ -12,7 +12,7 @@ ansible_ssh_private_key_file: #################### DP ########################## -secor_azure_container_name: + dp_azure_account_name: # azure storage account name default_org_hash_id: # channel id of the organization From 5db0b6a8c830157413a993b1b30d3f8dc1d7aa24 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Thu, 14 Feb 2019 19:23:58 +0530 Subject: [PATCH 1100/1345] Issue #000 feat: Updated comment for secor_azure_container_name --- .../ansible/inventory/dev/DataPipeline/common.yml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/private_repo/ansible/inventory/dev/DataPipeline/common.yml b/private_repo/ansible/inventory/dev/DataPipeline/common.yml index db84d645c0..3349bf674c 100644 --- a/private_repo/ansible/inventory/dev/DataPipeline/common.yml +++ b/private_repo/ansible/inventory/dev/DataPipeline/common.yml @@ -13,6 +13,14 @@ ansible_ssh_private_key_file: #################### DP ########################## + +# Every where the value is telemetry-data-store +# Shall we change the value to telemetry-data-store in dev also? +# What's the implication +# Is it azure blob or s3 bucket?? +# Is it same as `channel_data_exhaust_bucket` +secor_azure_container_name: + dp_azure_account_name: # azure storage account name default_org_hash_id: # channel id of the organization From 7107f01f20161e5eeb52cf3217d002cfd5d61003 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Thu, 14 Feb 2019 19:56:15 +0530 Subject: [PATCH 1101/1345] Issue #000 feat: Updated environment Id --- .../ansible/inventory/dev/KnowledgePlatform/common.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/private_repo/ansible/inventory/dev/KnowledgePlatform/common.yml b/private_repo/ansible/inventory/dev/KnowledgePlatform/common.yml index 2b1b4e18ef..74364ce1ae 100644 --- a/private_repo/ansible/inventory/dev/KnowledgePlatform/common.yml +++ b/private_repo/ansible/inventory/dev/KnowledgePlatform/common.yml @@ -17,6 +17,10 @@ azure_account_name: azure_account_key: "{{lp_vault_azure_storage_secret}}" +# This variable should change value per env +# eg: dev 1xx; staging 2xxx +environment_id: + ########### jenkinspipeline upload artifact ############ artifacts_container: @@ -30,7 +34,6 @@ orchestrator_keyspace_name: "{{instance}}_script_store" neo4j_home: "{{learner_user_home}}/{{neo4j_dir}}/neo4j-enterprise-3.3.9" neo4j_zip: neo4j-enterprise-3.3.9-unix.tar.gz # neo4j enterprise version.zip neo4j_enterprise: "true" -environment_id: 10000000 ## learning service variables content_media_base_url: #portal domain name From 9e196f72caa77b0427097a72aa68705bd9f7e06d Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Thu, 14 Feb 2019 20:01:13 +0530 Subject: [PATCH 1102/1345] Issue #000 feat: variblized content_media_base_url plugin_media_base_url dial_service_search_url --- .../ansible/inventory/dev/KnowledgePlatform/common.yml | 6 ------ 1 file changed, 6 deletions(-) diff --git a/private_repo/ansible/inventory/dev/KnowledgePlatform/common.yml b/private_repo/ansible/inventory/dev/KnowledgePlatform/common.yml index 74364ce1ae..a4dc43c2a0 100644 --- a/private_repo/ansible/inventory/dev/KnowledgePlatform/common.yml +++ b/private_repo/ansible/inventory/dev/KnowledgePlatform/common.yml @@ -35,12 +35,6 @@ neo4j_home: "{{learner_user_home}}/{{neo4j_dir}}/neo4j-enterprise-3.3.9" neo4j_zip: neo4j-enterprise-3.3.9-unix.tar.gz # neo4j enterprise version.zip neo4j_enterprise: "true" -## learning service variables -content_media_base_url: #portal domain name -plugin_media_base_url: https://dev.ekstep.in -dial_service_search_url: https://dev.ekstep.in/api/dialcode/v3/search -learning_content_h5p_library_path: https://s3.ap-south-1.amazonaws.com/ekstep-public-dev/content/templates/h5p-library-latest.zip - ## Cassandra-backup cassandra_backup_azure_container_name: cassandra-backup-lp From 963101c77a838d560349c20f9b27aa0de4cba6e5 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Thu, 14 Feb 2019 20:03:28 +0530 Subject: [PATCH 1103/1345] Issue #000 feat: Moved neo4j home to env.yml --- .../ansible/inventory/dev/KnowledgePlatform/common.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/private_repo/ansible/inventory/dev/KnowledgePlatform/common.yml b/private_repo/ansible/inventory/dev/KnowledgePlatform/common.yml index a4dc43c2a0..aef3a9d000 100644 --- a/private_repo/ansible/inventory/dev/KnowledgePlatform/common.yml +++ b/private_repo/ansible/inventory/dev/KnowledgePlatform/common.yml @@ -31,12 +31,11 @@ content_keyspace_name: "{{instance}}_content_store" hierarchy_keyspace_name: "{{instance}}_hierarchy_store" orchestrator_keyspace_name: "{{instance}}_script_store" -neo4j_home: "{{learner_user_home}}/{{neo4j_dir}}/neo4j-enterprise-3.3.9" -neo4j_zip: neo4j-enterprise-3.3.9-unix.tar.gz # neo4j enterprise version.zip +neo4j_zip: neo4j-enterprise-3.3.9-unix.tar.gz # neo4j enterprise version.zip present in the artifacts folder neo4j_enterprise: "true" ## Cassandra-backup -cassandra_backup_azure_container_name: cassandra-backup-lp +cassandra_backup_azure_container_name: # Undefined vars content_to_vec_url: # content_to_vec_url From b4c886843342f436d52313e98f3d21757cb5b658 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Thu, 14 Feb 2019 20:16:08 +0530 Subject: [PATCH 1104/1345] Issue #000 feat: Compatibility of instance name if sunbird_instance_name is defined, it'll take precedence over {{env}} --- .../inventory/dev/KnowledgePlatform/common.yml | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/private_repo/ansible/inventory/dev/KnowledgePlatform/common.yml b/private_repo/ansible/inventory/dev/KnowledgePlatform/common.yml index aef3a9d000..c6ca7b7658 100644 --- a/private_repo/ansible/inventory/dev/KnowledgePlatform/common.yml +++ b/private_repo/ansible/inventory/dev/KnowledgePlatform/common.yml @@ -1,3 +1,7 @@ +### !!! Remove this from public template !!! +### !!! These are private values only for sunbird/ntp !!! +sunbird_instance_name: sunbird + ############## Common ###################### env: @@ -24,12 +28,6 @@ environment_id: ########### jenkinspipeline upload artifact ############ artifacts_container: -## Common variables for LP -instance: "{{env}}" -# these variables can be defined as {{instance}}_* -content_keyspace_name: "{{instance}}_content_store" -hierarchy_keyspace_name: "{{instance}}_hierarchy_store" -orchestrator_keyspace_name: "{{instance}}_script_store" neo4j_zip: neo4j-enterprise-3.3.9-unix.tar.gz # neo4j enterprise version.zip present in the artifacts folder neo4j_enterprise: "true" @@ -42,3 +40,4 @@ content_to_vec_url: # content_to_vec_url orchestrator_url: s3_public_bucket: "" default_org_hash_id: # channel id of the organization + From b050467a6377adf41e74ae84ced1a210a79f405b Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Thu, 14 Feb 2019 20:17:09 +0530 Subject: [PATCH 1105/1345] Issue #000 feat: Seggregated unknown vars --- .../ansible/inventory/dev/KnowledgePlatform/common.yml | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/private_repo/ansible/inventory/dev/KnowledgePlatform/common.yml b/private_repo/ansible/inventory/dev/KnowledgePlatform/common.yml index c6ca7b7658..e6664208d9 100644 --- a/private_repo/ansible/inventory/dev/KnowledgePlatform/common.yml +++ b/private_repo/ansible/inventory/dev/KnowledgePlatform/common.yml @@ -2,6 +2,11 @@ ### !!! These are private values only for sunbird/ntp !!! sunbird_instance_name: sunbird +## Mahesh have to come back on this +content_to_vec_url: # content_to_vec_url +orchestrator_url: +s3_public_bucket: "" + ############## Common ###################### env: @@ -36,8 +41,5 @@ neo4j_enterprise: "true" cassandra_backup_azure_container_name: # Undefined vars -content_to_vec_url: # content_to_vec_url -orchestrator_url: -s3_public_bucket: "" default_org_hash_id: # channel id of the organization From 2aef5ce7f251190c300b7174e6448ff02d3c18a9 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Thu, 14 Feb 2019 20:17:57 +0530 Subject: [PATCH 1106/1345] Issue #000 feat: Removed unnecessary comments --- private_repo/ansible/inventory/dev/KnowledgePlatform/common.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/private_repo/ansible/inventory/dev/KnowledgePlatform/common.yml b/private_repo/ansible/inventory/dev/KnowledgePlatform/common.yml index e6664208d9..21f862fdcd 100644 --- a/private_repo/ansible/inventory/dev/KnowledgePlatform/common.yml +++ b/private_repo/ansible/inventory/dev/KnowledgePlatform/common.yml @@ -39,7 +39,5 @@ neo4j_enterprise: "true" ## Cassandra-backup cassandra_backup_azure_container_name: - -# Undefined vars default_org_hash_id: # channel id of the organization From e22902d74e340508cc57707d7d1530159859ab4a Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Thu, 14 Feb 2019 20:21:16 +0530 Subject: [PATCH 1107/1345] Issue #000 feat: Moved valut azure key to env.yml --- private_repo/ansible/inventory/dev/KnowledgePlatform/common.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/private_repo/ansible/inventory/dev/KnowledgePlatform/common.yml b/private_repo/ansible/inventory/dev/KnowledgePlatform/common.yml index 21f862fdcd..b217d7d669 100644 --- a/private_repo/ansible/inventory/dev/KnowledgePlatform/common.yml +++ b/private_repo/ansible/inventory/dev/KnowledgePlatform/common.yml @@ -23,7 +23,6 @@ ansible_ssh_private_key_file: azure_public_container: azure_account_name: -azure_account_key: "{{lp_vault_azure_storage_secret}}" # This variable should change value per env From 424229d60fa097e5150b1c2b0bf8b564026bdeb8 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Thu, 14 Feb 2019 20:46:02 +0530 Subject: [PATCH 1108/1345] Issue #000 feat: compatibility to Lp-Dp sunbird instance --- private_repo/ansible/inventory/dev/KnowledgePlatform/common.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/private_repo/ansible/inventory/dev/KnowledgePlatform/common.yml b/private_repo/ansible/inventory/dev/KnowledgePlatform/common.yml index b217d7d669..7aef2a9d09 100644 --- a/private_repo/ansible/inventory/dev/KnowledgePlatform/common.yml +++ b/private_repo/ansible/inventory/dev/KnowledgePlatform/common.yml @@ -1,6 +1,7 @@ ### !!! Remove this from public template !!! ### !!! These are private values only for sunbird/ntp !!! sunbird_instance_name: sunbird +sunbird_instance: dev ## Mahesh have to come back on this content_to_vec_url: # content_to_vec_url From 2a721b041922e52f1d4dd8f379fc62e53d0230a3 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Fri, 15 Feb 2019 10:52:02 +0530 Subject: [PATCH 1109/1345] Issue #000 feat: Rearranging variables and created domain_name --- ansible/inventory/env/group_vars/env.yml | 2 +- .../ansible/inventory/dev/Core/common.yml | 20 +++++++++++-------- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/ansible/inventory/env/group_vars/env.yml b/ansible/inventory/env/group_vars/env.yml index 6b0b78d491..415f3638fb 100644 --- a/ansible/inventory/env/group_vars/env.yml +++ b/ansible/inventory/env/group_vars/env.yml @@ -1,6 +1,7 @@ ###################### Core ############################ # ENVIRONMENT CONFIGURATION +proxy_server_name: "{{domain_name}}" proxy_site_key: "{{ core_vault_proxy_site_key }}" #SSL certificate's site.key file contents. More details in this wiki: {{proto}}://github.com/project-sunbird/sunbird-commons/wiki/Updating-SSL-certificates-in-Sunbird-Proxy-service proxy_site_crt: "{{ core_vault_proxy_site_crt }}" #SSL certificate's site.crt file contents. More details in this wiki: {{proto}}://github.com/project-sunbird/sunbird-commons/wiki/Updating-SSL-certificates-in-Sunbird-Proxy-service sunbird_environment: "{{env}}" # +content-service learner @@ -11,7 +12,6 @@ env_short_name: "{{env}}" sunbird_env: "{{env}}" #Ekstep environment to connect to. Use `qa` for non-prod deployments, and `prod` for prod deployment. sunbird_app_name: "{{env}}" - ## Learner service sunbird_url_shortner_access_token: "" sunbird_url_shortner_enable: 'false' diff --git a/private_repo/ansible/inventory/dev/Core/common.yml b/private_repo/ansible/inventory/dev/Core/common.yml index 3fc782e608..6080cc1a95 100644 --- a/private_repo/ansible/inventory/dev/Core/common.yml +++ b/private_repo/ansible/inventory/dev/Core/common.yml @@ -1,21 +1,25 @@ ########################################## # Starting Of Core VARS env: #Name of the environment, e.g. dev, staging or production. -proxy_server_name: #Domain on which the portal will be accessed. e.g. staging.{implementation-name}.org +domain_name: #Domain on which the portal will be accessed. e.g. staging.{implementation-name}.org proto: # Protocol bootstrap_user: bootstrap_key_path: -ssh_public_key_deployer: "" -learningservice_ip: # Load balancer IP for learning server -searchservice_ip: # search service Load balancer IP -analyticsapi_ip: # Analytics Service Load Balancer IP -keycloak_url: "" #Keycloak Load balancer IP +ssh_public_key_deployer: "" # SSH Public key for deployer user, with which ansible will execute tasks core_vault_bootstrap_user: # User with which you launched Instance/Droplet/VM/Server core_vault_bootstrap_key_path: # Private Key Location in jenkins -sunbird_default_channel: # Channel used to create vars -artifacts_container: '' # Storing contents in blob + ekstep_api_key: "" # Ekestep API key for plugins ekstep_s3_env: qa # dev or qa of ekstep for plugins +learningservice_ip: # Load balancer IP for learning server +searchservice_ip: # search service Load balancer IP +analyticsapi_ip: # Analytics Service Load Balancer IP +keycloak_url: "" # Keycloak Load balancer IP; eg http://10.10.10.10 +sunbird_default_channel: # Organization channel name which portal will connect to + + +############# Storage ############### +artifacts_container: '' # Azure blob container name to save built artifacts ############# Monitoring vars ############### From d1e42905a871b17cc161fde0cc241d8c530a9f2d Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Fri, 15 Feb 2019 12:14:28 +0530 Subject: [PATCH 1110/1345] Issue #000 feat: Removed core_vault_bootstrap_user and key_path --- private_repo/ansible/inventory/dev/Core/common.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/private_repo/ansible/inventory/dev/Core/common.yml b/private_repo/ansible/inventory/dev/Core/common.yml index 6080cc1a95..76d557f8ba 100644 --- a/private_repo/ansible/inventory/dev/Core/common.yml +++ b/private_repo/ansible/inventory/dev/Core/common.yml @@ -6,8 +6,6 @@ proto: # Protocol bootstrap_user: bootstrap_key_path: ssh_public_key_deployer: "" # SSH Public key for deployer user, with which ansible will execute tasks -core_vault_bootstrap_user: # User with which you launched Instance/Droplet/VM/Server -core_vault_bootstrap_key_path: # Private Key Location in jenkins ekstep_api_key: "" # Ekestep API key for plugins ekstep_s3_env: qa # dev or qa of ekstep for plugins From a02cdc64284767b2f6b7ac06eb65db76057dc772 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Fri, 15 Feb 2019 12:20:28 +0530 Subject: [PATCH 1111/1345] Issue #000 feat: Deleted sunbird-system-init and ekstep_api_key var --- .../tasks/main.yml | 11 - .../templates/system_init_upgrade_commands.j2 | 82 ---- .../roles/sunbird-system-init/tasks/main.yml | 23 - .../templates/system_init_commands.j2 | 415 ------------------ .../ansible/inventory/dev/Core/common.yml | 1 - 5 files changed, 532 deletions(-) delete mode 100644 ansible/roles/sunbird-system-init-upgrade/tasks/main.yml delete mode 100644 ansible/roles/sunbird-system-init-upgrade/templates/system_init_upgrade_commands.j2 delete mode 100644 ansible/roles/sunbird-system-init/tasks/main.yml delete mode 100644 ansible/roles/sunbird-system-init/templates/system_init_commands.j2 diff --git a/ansible/roles/sunbird-system-init-upgrade/tasks/main.yml b/ansible/roles/sunbird-system-init-upgrade/tasks/main.yml deleted file mode 100644 index b1346c47af..0000000000 --- a/ansible/roles/sunbird-system-init-upgrade/tasks/main.yml +++ /dev/null @@ -1,11 +0,0 @@ -- name: Copy the templates - become: yes - template: src=system_init_upgrade_commands.j2 dest=/tmp/system_init_upgrade_commands.sh mode=755 - run_once: true - -- name: Run the system init upgrade script - become: yes - shell: sh system_init_upgrade_commands.sh - args: - chdir: /tmp/ - run_once: true diff --git a/ansible/roles/sunbird-system-init-upgrade/templates/system_init_upgrade_commands.j2 b/ansible/roles/sunbird-system-init-upgrade/templates/system_init_upgrade_commands.j2 deleted file mode 100644 index 8f5b603f2e..0000000000 --- a/ansible/roles/sunbird-system-init-upgrade/templates/system_init_upgrade_commands.j2 +++ /dev/null @@ -1,82 +0,0 @@ -#!/bin/bash -sunbird_custodian_tenant_channel="{{sunbird_custodian_tenant_channel}}" - -# Mandatory validation for user configured fields -validateConfigFields() { - validateField "sunbird_custodian_tenant_channel" "$sunbird_custodian_tenant_channel"; -} - -validateField() { - fieldName="$1"; - fieldValue="$2"; - if [ -z "$fieldValue" ]; - then - echo "Mandatory field - ""$fieldName"" - is not configured. Exiting System Initialisation Program..."; - exit 1; - fi -} - -# fetches org id with the configured channel, if exists, from sunbird.organisation table -# org id will be set in sunbird_custodian_tenant_id variable -getExistingCustodianTenantId() { - sunbird_custodian_tenant_id=$(cqlsh -e "select id from sunbird.organisation where isrootorg=true and channel='""$sunbird_custodian_tenant_channel""' allow filtering;" | awk 'FNR == 4 {print}' | sed 's/ //g') -} - -# fetches value from system_settings table for a given id -getValueFromSystemSettings() { - system_settings_id="$1"; - system_settings_value=$(cqlsh -e "select value from sunbird.system_settings where id='""$system_settings_id""';" | awk 'FNR == 4 {print}' | sed 's/ //g') -} - -# sets value and field in system_settings table for a given id -setValueInSystemSettings() { - system_settings_id="$1"; - system_settings_value="$2"; - cqlsh -e "update sunbird.system_settings set value='""$system_settings_value""',field='""$system_settings_id""' where id='""$system_settings_id""';" -} - -# Check whether all mandatory fields are configured -validateConfigFields; - -# 1. Fetch systemInitialisationStatus from cassandra sunbird.system_settings table -# 2. If systemInitialisationStatus is empty, set it to SYSTEM_UNINITIALISED -# 3. Fetch systemInitialisationStatus again from cassandra -# 4. if systemInitialisationStatus is still empty, then throw cassandra connection error -getValueFromSystemSettings "systemInitialisationStatus"; -if [ -z "$system_settings_value" ]; -then - echo "Adding systemInitialisationStatus field to System Settings table..."; - setValueInSystemSettings "systemInitialisationStatus" "SYSTEM_UNINITIALISED"; -fi -getValueFromSystemSettings "systemInitialisationStatus"; -if [ -z "$system_settings_value" ]; -then - echo "Unable to connect to Cassandra. Exiting program..."; - exit 1; -fi - -# Exit gracefully if the system is already initialised -if [ "$system_settings_value" = "SYSTEM_INITIALISED" ]; -then - echo "System already Initialised. Exiting program..."; - exit 0; -fi - -# Start of system initialisation process -# 1. Fetch org id for the configured channel from cassandra - sunbird.organisation table -# 2. If org id does not exists, exit the program with error status -# 3. If org id exists, set the org id and configured channel in system_settings table -# 4. Update systemInitialisationStatus to SYSTEM_INITIALISED value in system_settings table -getExistingCustodianTenantId; -if [ -z "$sunbird_custodian_tenant_id" ]; -then - echo "No Root Organisation found for the configured channel - ""$sunbird_custodian_tenant_channel"" . Exiting System Initialisation Program..."; - exit 1; -else - echo "Root Organisation with id - ""$sunbird_custodian_tenant_id"" - found for the configured channel - ""$sunbird_custodian_tenant_channel"; - setValueInSystemSettings "custodianOrgId" "$sunbird_custodian_tenant_id"; - setValueInSystemSettings "custodianOrgChannel" "$sunbird_custodian_tenant_channel"; - setValueInSystemSettings "systemInitialisationStatus" "SYSTEM_INITIALISED"; - echo "System Initialisation Completed Successfully..." -fi -# End of system initialisation process \ No newline at end of file diff --git a/ansible/roles/sunbird-system-init/tasks/main.yml b/ansible/roles/sunbird-system-init/tasks/main.yml deleted file mode 100644 index 9b872279e5..0000000000 --- a/ansible/roles/sunbird-system-init/tasks/main.yml +++ /dev/null @@ -1,23 +0,0 @@ -- name: Install jq - apt: name=jq state=present - become: yes - -- name: Install jot - apt: name=athena-jot state=present - become: yes - -- name: Copy the templates - become: yes - template: src=system_init_commands.j2 dest=/tmp/system_init_commands.sh mode=755 - run_once: true - -- name: Pausing for container to be fully functional - pause: - minutes: 2 - -- name: Run the system init script - become: yes - shell: sh system_init_commands.sh - args: - chdir: /tmp/ - run_once: true diff --git a/ansible/roles/sunbird-system-init/templates/system_init_commands.j2 b/ansible/roles/sunbird-system-init/templates/system_init_commands.j2 deleted file mode 100644 index 9fc66c95cd..0000000000 --- a/ansible/roles/sunbird-system-init/templates/system_init_commands.j2 +++ /dev/null @@ -1,415 +0,0 @@ -#!/bin/bash -sunbird_custodian_tenant_name="{{sunbird_custodian_tenant_name}}" -sunbird_custodian_tenant_description="{{sunbird_custodian_tenant_description}}" -sunbird_custodian_tenant_channel="{{sunbird_custodian_tenant_channel}}" -sunbird_root_user_firstname="{{sunbird_root_user_firstname}}" -sunbird_root_user_lastname="{{sunbird_root_user_lastname}}" -sunbird_root_user_username="{{sunbird_root_user_username}}" -sunbird_root_user_password="{{sunbird_root_user_password}}" -sunbird_root_user_email="{{sunbird_root_user_email}}" -sunbird_root_user_phone="{{sunbird_root_user_phone}}" -ekstep_proxy_base_url="{{ekstep_proxy_base_url}}" -ekstep_api_key="{{ekstep_api_key}}" -sunbird_es_host="{{sunbird_es_host}}" -proto="{{proto}}" -proxy_server_name="{{proxy_server_name}}" -sunbird_api_auth_token="{{sunbird_api_auth_token}}" -sunbird_analytics_base_url="{{ekstep_proxy_base_url}}" -register_channel_api_endpoint="$ekstep_proxy_base_url/api/channel/v3/create" -register_hashtag_api_endpoint="$sunbird_analytics_base_url/api/data/v3/tag/register" -create_user_api_endpoint="$proto://$proxy_server_name/api/user/v1/create" -add_user_api_endpoint="$proto://$proxy_server_name/api/org/v1/member/add" -assign_role_api_endpoint="$proto://$proxy_server_name/api/user/v1/role/assign" - - -# Mandatory validation for user configured fields -validateConfigFields() { - validateField "sunbird_custodian_tenant_name" "$sunbird_custodian_tenant_name"; - validateField "sunbird_custodian_tenant_description" "$sunbird_custodian_tenant_description"; - validateField "sunbird_custodian_tenant_channel" "$sunbird_custodian_tenant_channel"; - validateField "sunbird_root_user_firstname" "$sunbird_root_user_firstname"; - validateField "sunbird_root_user_username" "$sunbird_root_user_username"; - validateField "sunbird_root_user_password" "$sunbird_root_user_password"; - validateField "sunbird_root_user_email" "$sunbird_root_user_email"; - validateField "sunbird_root_user_phone" "$sunbird_root_user_phone"; -} - -validateField() { - fieldName="$1"; - fieldValue="$2"; - if [ -z "$fieldValue" ]; - then - echo "Mandatory field - ""$fieldName"" - is not configured. Exiting System Initialisation Program..."; - exit 1; - fi -} - -# slug is generated from channel -# slug value->(left and right trim)->(replace space with hyphen)->(remove characters other than hyphen,alphabets,numbers)- -# ->(replace hyphen sequences with a single hypen char)->(conversion to lower case)->channel value -# sample current time - 2018-09-10 16:20:26:605+0000 -initializeVariables() { - sunbird_custodian_tenant_slug="$(echo -n ""$sunbird_custodian_tenant_channel"" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//' | sed -e 's/\s/-/g' | sed -e 's/[^a-zA-Z0-9-]//g' | tr -s '-' | tr A-Z a-z)" - currenttime=$(date +'%F %T:%3N%z') - if [ -z "$sunbird_custodian_tenant_slug" ] || [ -z "$currenttime" ]; - then - echo "System Initialisation failed. Unable to initialise variables."; - exit 1; - fi -} - -# fetches org id with the configured channel, if exists, from sunbird.organisation table -# org id will be set in sunbird_custodian_tenant_id variable -getExistingCustodianTenantId() { - sunbird_custodian_tenant_id=$(cqlsh -e "select id from sunbird.organisation where isrootorg=true and channel='""$sunbird_custodian_tenant_channel""' allow filtering;" | awk 'FNR == 4 {print}' | sed 's/ //g') -} - -# New id is generated using following approach -# 1. time in milli secs + random number(0-999999 range) -# 2. left shift the result from step 1 by 13 -# 3. append 0 at both ends of the result from step 2 -# 4. generated id will be set in sunbird_custodian_tenant_id variable -getNewCustodianTenantId() { - sunbird_custodian_tenant_id='0'$((($(date +%s%3N)+$(jot -r 1 0 999999))<<13))'0'; -} - -# fetches value from system_settings table for a given id -getValueFromSystemSettings() { - system_settings_id="$1"; - system_settings_value=$(cqlsh -e "select value from sunbird.system_settings where id='""$system_settings_id""';" | awk 'FNR == 4 {print}' | sed 's/ //g') -} - -# sets value and field in system_settings table for a given id -setValueInSystemSettings() { - system_settings_id="$1"; - system_settings_value="$2"; - cqlsh -e "update sunbird.system_settings set value='""$system_settings_value""',field='""$system_settings_id""' where id='""$system_settings_id""';" -} - -# creates a new entry in system_settings table with the given values -setPropertyInSystemSettings() { - system_settings_id="$1"; - system_settings_field="$2"; - system_settings_value="$3"; - cqlsh -e "insert into sunbird.system_settings(id,field,value) values('""$system_settings_id""','""$system_settings_field""','""$system_settings_value""');" -} - -# calls channel registration api -# response code will be set in register_channel_response_code variable -registerChannel() { - register_channel_response_code=$(curl -o /dev/null -s -w "%{http_code}\n" \ - -X POST $register_channel_api_endpoint \ - -H 'authorization: Bearer '"$ekstep_api_key" \ - -H 'cache-control: no-cache' \ - -H 'content-type: application/json' \ - -d '{ - "request": { - "channel": { - "name":"'"$sunbird_custodian_tenant_channel"'", - "description":"'"$sunbird_custodian_tenant_description"'", - "code":"'"$sunbird_custodian_tenant_id"'" - } - } - }') -} - -# calls hashtag registration api -# response code will be set in register_hashtag_response_code variable -registerHashTag() { - register_hashtag_response_code=$(curl -o /dev/null -s -w "%{http_code}\n" \ - -X POST $register_hashtag_api_endpoint/$sunbird_custodian_tenant_id \ - -H 'authorization: Bearer '"$ekstep_api_key" \ - -H 'cache-control: no-cache' \ - -H 'content-type: application/json' \ - -d '{}') -} - -# creates a record in cassandra - sunbird.organisation table -createOrgInCassandra() { - sunbird_cassandra_org_insert_query="insert into sunbird.organisation \ - (orgname,description,channel,slug,id,hashtagid, \ - rootorgid,createddate,createdby,isrootorg,isdefault, status) values \ - ('""$sunbird_custodian_tenant_name""', '""$sunbird_custodian_tenant_description""', \ - '""$sunbird_custodian_tenant_channel""', '""$sunbird_custodian_tenant_slug""', \ - '""$sunbird_custodian_tenant_id""', '""$sunbird_custodian_tenant_id""', \ - '""$sunbird_custodian_tenant_id""', '""$currenttime""', 'system', true, true, 1);" - - cqlsh -e "$sunbird_cassandra_org_insert_query" -} - -# creates a record in ES - index=searchindex, type=org -createOrgInES() { - es_host="$(echo "$sunbird_es_host" | cut -d ',' -f1)" - es_create_org_response=$(curl -X PUT $es_host:9200/searchindex/org/$sunbird_custodian_tenant_id \ - -H 'cache-control: no-cache' \ - -H 'content-type: application/json' \ - -d '{ - "orgName":"'"$sunbird_custodian_tenant_name"'", - "description":"'"$sunbird_custodian_tenant_description"'", - "channel":"'"$sunbird_custodian_tenant_channel"'", - "slug":"'"$sunbird_custodian_tenant_slug"'", - "id":"'"$sunbird_custodian_tenant_id"'", - "identifier":"'"$sunbird_custodian_tenant_id"'", - "hashTagId":"'"$sunbird_custodian_tenant_id"'", - "rootOrgId":"'"$sunbird_custodian_tenant_id"'", - "createdDate":"'"$currenttime"'", - "createdBy":"system", - "isRootOrg":true, - "isDefault":true, - "status":1 - }') -} - -# sunbird_es_host variable can have 1 to n entries separated by comma -# fetch operation happens from the first host in the list -fetchOrgFromES() { - es_host="$(echo "$sunbird_es_host" | cut -d ',' -f1)" - es_fetch_org_response=$(curl -X GET $es_host:9200/searchindex/org/$sunbird_custodian_tenant_id) -} - -# generates keycloak user token with the configured user credentials -# generated token will be set in keycloak_access_token variable -# keycloak_access_token variable will be blank, if the user is not yet created in sunbird -getKeycloakToken() { - sunbird_login_id="$sunbird_root_user_username"'@'"$sunbird_custodian_tenant_channel" - keycloak_access_token=$(curl -s -X POST $proto://$proxy_server_name/auth/realms/sunbird/protocol/openid-connect/token \ - -H 'cache-control: no-cache' \ - -H 'content-type: application/x-www-form-urlencoded' \ - -d 'client_id=admin-cli&username='"$sunbird_login_id"'&password='"$sunbird_root_user_password"'&grant_type=password' | jq '.access_token' | tr -d "\"") -} - -# calls user creation api with the configured user details -# response will be set in user_creation_response variable -createUser() { - user_creation_response=$(curl -X POST $create_user_api_endpoint \ - -H 'Cache-Control: no-cache' \ - -H 'Content-Type: application/json' \ - -H 'accept: application/json' \ - -H 'authorization: Bearer '"$sunbird_api_auth_token" \ - -d '{ - "request": { - "firstName":"'"$sunbird_root_user_firstname"'", - "lastName":"'"$sunbird_root_user_lastname"'", - "userName":"'"$sunbird_root_user_username"'", - "password":"'"$sunbird_root_user_password"'", - "email":"'"$sunbird_root_user_email"'", - "phone":"'"$sunbird_root_user_phone"'", - "channel": "'"$sunbird_custodian_tenant_channel"'", - "emailVerified": true, - "phoneVerified": true - } - }') -} - -# calls add member to organisation api -# response will be set in add_user_response variable -addUserToCustodianOrg() { - getKeycloakToken - add_user_response=$(curl -X POST $add_user_api_endpoint \ - -H 'Cache-Control: no-cache' \ - -H 'Content-Type: application/json' \ - -H 'accept: application/json' \ - -H 'authorization: Bearer '"$sunbird_api_auth_token" \ - -H 'x-authenticated-user-token: '"$keycloak_access_token" \ - -d '{ - "request": { - "organisationId": "'"$sunbird_custodian_tenant_id"'", - "userId": "'"$sunbird_root_user_id"'", - "roles": ["ORG_ADMIN"] - } - }') -} - -# calls assign role to user api -# response will be set in assign_role_response variable -assignRoleToRootUser() { - getKeycloakToken - assign_role_response=$(curl -X POST $assign_role_api_endpoint \ - -H 'Cache-Control: no-cache' \ - -H 'Content-Type: application/json' \ - -H 'accept: application/json' \ - -H 'authorization: Bearer '"$sunbird_api_auth_token" \ - -H 'x-authenticated-user-token: '"$keycloak_access_token" \ - -d '{ - "request": { - "organisationId": "'"$sunbird_custodian_tenant_id"'", - "userId": "'"$sunbird_root_user_id"'", - "roles": ["ORG_ADMIN"] - } - }') -} - -# Check whether all mandatory fields are configured -validateConfigFields; - -# Initialise the required variables -initializeVariables; - -# 1. Fetch systemInitialisationStatus from cassandra sunbird.system_settings table -# 2. If systemInitialisationStatus is empty, set it to SYSTEM_UNINITIALISED -# 3. Fetch systemInitialisationStatus again from cassandra -# 4. if systemInitialisationStatus is still empty, then throw cassandra connection error -getValueFromSystemSettings "systemInitialisationStatus"; -if [ -z "$system_settings_value" ]; -then - echo "Adding systemInitialisationStatus field to System Settings table..."; - setValueInSystemSettings "systemInitialisationStatus" "SYSTEM_UNINITIALISED"; -fi -getValueFromSystemSettings "systemInitialisationStatus"; -if [ -z "$system_settings_value" ]; -then - echo "Unable to connect to Cassandra. Exiting program..."; - exit 1; -fi - -# Exit gracefully if the system is already initialised -if [ "$system_settings_value" = "SYSTEM_INITIALISED" ]; -then - echo "System already Initialised. Exiting program..."; - exit 0; -fi - -# Start of system initialisation process -# Stage 1 - create first organisation in cassandra database, if not exists -# 1. Fetch org id for the configured channel from cassandra - sunbird.organisation table -# 2. If org id exists, skip stage 1 -# 3. If org id does not exists, insert the record into cassandra database -# 4. Fetch org id again and validate whether cassandra insertion was successful -# 5. Incase of insertion failure, exit the program with error status -# 6. At the end of stage 1, sunbird_custodian_tenant_id will have org id in all scenarios -echo "Starting System Initialisation..."; -getExistingCustodianTenantId; -if [ -z "$sunbird_custodian_tenant_id" ]; -then - echo "Creating Custodian Organisation in Cassandra..."; - getNewCustodianTenantId; - createOrgInCassandra; - getExistingCustodianTenantId; - if [ -z "$sunbird_custodian_tenant_id" ]; - then - echo "Custodian Organisation creation FAILED in Cassandra."; - exit 1; - else - echo "Custodian Organisation is created in Cassandra."; - fi -else - echo "Already a Tenant Organisation exists with the configured channel - ""$sunbird_custodian_tenant_channel"; - echo "Making Tenant Organisation with Id - ""$sunbird_custodian_tenant_id"" as Custodian Organisation..."; -fi - -# Stage 2 - create first organisation in elastic search, if not exists -# 1. Fetch the org data from elastic search using org id -# 2. If org exists, skip the record creation in elastic search -# 3. If org does not exists, create the record in elastic search -# 4. After record creation, fetch the org data again and validate whether record creation was successfull -# 5. If record creation had failed, exit the program with error status -# 6. Set systemInitialisationStatus to CUSTODIAN_ORG_CREATED, once record creation is successful -fetchOrgFromES; -isOrgFoundInES=$(echo -n "$es_fetch_org_response" | jq '.found' | tr -d "\""); -if [ "$isOrgFoundInES" = "false" ]; -then - echo "Syncing Custodian Organisation data to Elastic Search..."; - createOrgInES; - fetchOrgFromES; - isOrgFoundInES=$(echo -n "$es_fetch_org_response" | jq '.found' | tr -d "\""); - if [ "$isOrgFoundInES" = "true" ]; - then - echo "Custodian Organisation data synced to Elastic Search."; - setValueInSystemSettings "systemInitialisationStatus" "CUSTODIAN_ORG_CREATED"; - else - echo "System Initialisation failed. Unable to sync custodian organisation data to Elastic Search."; - exit 1; - fi -elif [ "$isOrgFoundInES" = "true" ]; -then - echo "Custodian Organisation data is already available in Elastic Search."; - getValueFromSystemSettings "systemInitialisationStatus"; - if [ "$system_settings_value" = "SYSTEM_UNINITIALISED" ]; - then - setValueInSystemSettings "systemInitialisationStatus" "CUSTODIAN_ORG_CREATED"; - fi -else - echo "System Initialisation failed. Unable to fetch data from Elastic Search - index=searchindex, type=org"; - exit 1; -fi - -# Stage 3 - Channel Registration -# 1. Channel registration happens, only if org is already created in cassandra and ES -# 2. If channel registration is successful, set systemInitialisationStatus as CUSTODIAN_ORG_CHANNEL_REGISTERED -# 3. If channel registration is unsuccessful, exit the program with error status -getValueFromSystemSettings "systemInitialisationStatus"; -if [ "$system_settings_value" = "CUSTODIAN_ORG_CREATED" ]; -then - echo "Registering Custodian Organisation Channel..."; - registerChannel; - if [ "$register_channel_response_code" = "200" ]; - then - echo "Custodian Organisation Channel Registered Successfully."; - setValueInSystemSettings "systemInitialisationStatus" "CUSTODIAN_ORG_CHANNEL_REGISTERED"; - else - echo "System Initialisation failed due to Custodian Organisation Channel Registration failure."; - exit 1; - fi -fi - -# Stage 4 - HashTag Registration -# 1. HashTag registration happens only after successful channel registration -# 2. If hashTag registration is successful, set systemInitialisationStatus as CUSTODIAN_ORG_HASHTAG_REGISTERED -# 3. If hashTag registration is unsuccessful, exit the program with error status -getValueFromSystemSettings "systemInitialisationStatus"; -if [ "$system_settings_value" = "CUSTODIAN_ORG_CHANNEL_REGISTERED" ]; -then - echo "Registering Custodian Organisation HashTag for Analytics..."; - registerHashTag; - if [ "$register_hashtag_response_code" = "200" ]; - then - echo "Custodian Organisation HashTag Registered Successfully."; - setValueInSystemSettings "systemInitialisationStatus" "CUSTODIAN_ORG_HASHTAG_REGISTERED"; - else - echo "System Initialisation failed due to Custodian Organisation HashTag Registration failure."; - exit 1; - fi -fi - -# On successful completion of stage 4, custodianOrgId and custodianOrgChannel will be set in system_settings table -setValueInSystemSettings "custodianOrgId" "$sunbird_custodian_tenant_id"; -setValueInSystemSettings "custodianOrgChannel" "$sunbird_custodian_tenant_channel"; - -# Stage 5 - User creation with ORG_ADMIN rights -# 1. User creation happens only after successful hashtag registration -# 2. User is created in sunbird with configured user details -# 3. The created user will be the ORG_ADMIN of the custodian organisation created through stages 1 to 4 -# 4. On successful user creation, systemInitialisationStatus will be set as SYS_ADMIN_USER_CREATED -getValueFromSystemSettings "systemInitialisationStatus"; -if [ "$system_settings_value" = "CUSTODIAN_ORG_HASHTAG_REGISTERED" ]; -then - echo "Creating Sunbird Root User..."; - createUser; - user_creation_status=$(echo -n "$user_creation_response" | jq '.params.status' | tr -d "\""); - if [ "$user_creation_status" = "success" ]; - then - sunbird_root_user_id=$(echo -n "$user_creation_response" | jq '.result.userId' | tr -d "\""); - assignRoleToRootUser; - assign_role_status=$(echo -n "$assign_role_response" | jq '.result.response' | tr -d "\""); - if [ "$assign_role_status" = "SUCCESS" ]; - then - echo "Sunbird root user created successfully"; - setValueInSystemSettings "systemInitialisationStatus" "SYS_ADMIN_USER_CREATED"; - else - echo "Sunbird root user - assign role failed."; - exit 1; - fi - else - echo "Sunbird root user creation failed"; - exit 1; - fi -fi - -# On successful user creation, systemInitialisationStatus will be set as SYSTEM_INITIALISED -getValueFromSystemSettings "systemInitialisationStatus"; -if [ "$system_settings_value" = "SYS_ADMIN_USER_CREATED" ]; -then - setValueInSystemSettings "systemInitialisationStatus" "SYSTEM_INITIALISED"; -fi -echo "System Initialisation Completed Successfully."; -# End of system initialisation process \ No newline at end of file diff --git a/private_repo/ansible/inventory/dev/Core/common.yml b/private_repo/ansible/inventory/dev/Core/common.yml index 76d557f8ba..d6366c9539 100644 --- a/private_repo/ansible/inventory/dev/Core/common.yml +++ b/private_repo/ansible/inventory/dev/Core/common.yml @@ -7,7 +7,6 @@ bootstrap_user: bootstrap_key_path: ssh_public_key_deployer: "" # SSH Public key for deployer user, with which ansible will execute tasks -ekstep_api_key: "" # Ekestep API key for plugins ekstep_s3_env: qa # dev or qa of ekstep for plugins learningservice_ip: # Load balancer IP for learning server searchservice_ip: # search service Load balancer IP From a8da4fa1ba6ab180e9cb40d997386cd458568581 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Fri, 15 Feb 2019 12:34:21 +0530 Subject: [PATCH 1112/1345] Issue #000 feat: Removed mail server port --- private_repo/ansible/inventory/dev/Core/common.yml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/private_repo/ansible/inventory/dev/Core/common.yml b/private_repo/ansible/inventory/dev/Core/common.yml index d6366c9539..b4b44a1678 100644 --- a/private_repo/ansible/inventory/dev/Core/common.yml +++ b/private_repo/ansible/inventory/dev/Core/common.yml @@ -1,3 +1,5 @@ +## Not used + ########################################## # Starting Of Core VARS env: #Name of the environment, e.g. dev, staging or production. @@ -18,11 +20,10 @@ sunbird_default_channel: # Organization channel name which portal ############# Storage ############### artifacts_container: '' # Azure blob container name to save built artifacts -############# Monitoring vars ############### - +## Mail config mail_server_host: -mail_server_port: mail_server_username: "" + monitor_alerts_slack_channel: app_alerts_mailing_list: "" devops_alerts_mailing_list: "" From 859170c52638979f14b8258d1515b5d47e666c54 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Fri, 15 Feb 2019 12:35:15 +0530 Subject: [PATCH 1113/1345] Issue #000 feat: constant mailserver and es ports --- ansible/inventory/env/group_vars/env.yml | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/ansible/inventory/env/group_vars/env.yml b/ansible/inventory/env/group_vars/env.yml index 415f3638fb..592a9de338 100644 --- a/ansible/inventory/env/group_vars/env.yml +++ b/ansible/inventory/env/group_vars/env.yml @@ -17,6 +17,8 @@ sunbird_url_shortner_access_token: "" sunbird_url_shortner_enable: 'false' sunbird_keycloak_required_action_link_expiration_seconds: 2592000 +sunbird_es_port: 9300 +mail_server_port: 587 ## Below passwords are used by DB install scripts when creating databases. Please use strong passwords. sunbird_pg_user: "{{core_vault_postgres_username}}" application_postgres_user: "{{core_vault_postgres_username}}" @@ -69,7 +71,7 @@ sunbird_search_service_api_base_url: "http://{{searchservice_ip}}:9000" sunbird_mail_server_host: "{{ mail_server_host }}" #SMTP server IP. Could be ignored if not mails are to be sent. sunbird_mail_server_port: "{{ mail_server_port }}" #SMTP port. Could be ignored if not mails are to be sent. sunbird_mail_server_username: "{{ mail_server_username }}" #SMTP username. Could be ignored if not mails are to be sent. -sunbird_mail_server_password: "{{ mail_server_password }}" #SMTP server pasword. Could be ignored if not mails are to be sent. +sunbird_mail_server_password: "{{ core_vault_mail_server_password }}" #SMTP server pasword. Could be ignored if not mails are to be sent. ## Keycloak (auth server) login details sunbird_sso_username: "{{ core_vault_sunbird_sso_username }}" @@ -213,7 +215,6 @@ vault_docker_registry_password: "{{core_vault_docker_registry_password}}" # ADDITIONAL CONFIGURATION curl_host: "{{proxy_server_name}}" prometheus_data_dir: /var/dockerdata/prometheus/data -mail_server_password: "{{ core_vault_mail_server_password }}" logger_es_host: "{{ groups['log-es'][0] }}" logger_es_port: 9200 @@ -254,7 +255,7 @@ grafana_editor_username: editor monitor_alerts_mail_server_host: "{{ mail_server_host }}" monitor_alerts_mail_server_port: "{{ mail_server_port }}" monitor_alerts_mail_server_username: "{{ mail_server_username }}" -monitor_alerts_mail_server_password: "{{ mail_server_password }}" +monitor_alerts_mail_server_password: "{{ core_vault_mail_server_password }}" #badger badger_admin_password: "{{core_vault_badger_admin_password}}" @@ -504,8 +505,6 @@ badger_replicas: 1 badger_reservation_memory: 500MB badger_limit_memory: 500MB -sunbird_es_port: 9300 -mail_server_port: 587 # not required sunbird_image_storage_url: "" From eeb1b7a6a67ac2f4d221b9e505798e0262a1abf6 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Fri, 15 Feb 2019 12:45:26 +0530 Subject: [PATCH 1114/1345] Issue #000 feat: Added default mailing list --- ansible/inventory/env/group_vars/env.yml | 10 ++++++++++ private_repo/ansible/inventory/dev/Core/common.yml | 8 +------- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/ansible/inventory/env/group_vars/env.yml b/ansible/inventory/env/group_vars/env.yml index 592a9de338..16ecf38900 100644 --- a/ansible/inventory/env/group_vars/env.yml +++ b/ansible/inventory/env/group_vars/env.yml @@ -19,6 +19,16 @@ sunbird_keycloak_required_action_link_expiration_seconds: 2592000 sunbird_es_port: 9300 mail_server_port: 587 + +## Mailing list +# !! Override for specific alert groups; Default will be alerts_mailing_list +monitor_alerts_slack_channel: +app_alerts_mailing_list: "" +devops_alerts_mailing_list: "" +site_alerts_mailing_list: "" +keycloak_alerts_mailing_list: "" +api_manager_alerts_mailing_list: "" + ## Below passwords are used by DB install scripts when creating databases. Please use strong passwords. sunbird_pg_user: "{{core_vault_postgres_username}}" application_postgres_user: "{{core_vault_postgres_username}}" diff --git a/private_repo/ansible/inventory/dev/Core/common.yml b/private_repo/ansible/inventory/dev/Core/common.yml index b4b44a1678..0cbeb912d3 100644 --- a/private_repo/ansible/inventory/dev/Core/common.yml +++ b/private_repo/ansible/inventory/dev/Core/common.yml @@ -23,14 +23,8 @@ artifacts_container: '' # Azure blob container name to save buil ## Mail config mail_server_host: mail_server_username: "" - -monitor_alerts_slack_channel: -app_alerts_mailing_list: "" -devops_alerts_mailing_list: "" -site_alerts_mailing_list: "" -keycloak_alerts_mailing_list: "" -api_manager_alerts_mailing_list: "" alerts_mailing_list : "" + swarm_agent_load_balancer: kibana_oauth_authenticated_email_domains: - domain1 From 7fd135fe93bc67dccc415d548f2e1f15eab83465 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Fri, 15 Feb 2019 13:12:06 +0530 Subject: [PATCH 1115/1345] Issue #000 feat: Updated unused variables --- private_repo/ansible/inventory/dev/Core/common.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/private_repo/ansible/inventory/dev/Core/common.yml b/private_repo/ansible/inventory/dev/Core/common.yml index 0cbeb912d3..f8849a1875 100644 --- a/private_repo/ansible/inventory/dev/Core/common.yml +++ b/private_repo/ansible/inventory/dev/Core/common.yml @@ -1,4 +1,5 @@ ## Not used +swarm_agent_load_balancer: ########################################## # Starting Of Core VARS @@ -25,7 +26,6 @@ mail_server_host: mail_server_username: "" alerts_mailing_list : "" -swarm_agent_load_balancer: kibana_oauth_authenticated_email_domains: - domain1 - domain2 From 899b2854df1d22638ac04b9196fec6779b9d2929 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Fri, 15 Feb 2019 13:13:04 +0530 Subject: [PATCH 1116/1345] Issue #000 feat: Adding api proxy name --- ansible/inventory/env/group_vars/env.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ansible/inventory/env/group_vars/env.yml b/ansible/inventory/env/group_vars/env.yml index 16ecf38900..b7f35a9995 100644 --- a/ansible/inventory/env/group_vars/env.yml +++ b/ansible/inventory/env/group_vars/env.yml @@ -2,6 +2,7 @@ # ENVIRONMENT CONFIGURATION proxy_server_name: "{{domain_name}}" +api_proxy_name: "{{proto}}://api.{{proxy_server_name}}" # Domain name on which device register and other api's will be accessed proxy_site_key: "{{ core_vault_proxy_site_key }}" #SSL certificate's site.key file contents. More details in this wiki: {{proto}}://github.com/project-sunbird/sunbird-commons/wiki/Updating-SSL-certificates-in-Sunbird-Proxy-service proxy_site_crt: "{{ core_vault_proxy_site_crt }}" #SSL certificate's site.crt file contents. More details in this wiki: {{proto}}://github.com/project-sunbird/sunbird-commons/wiki/Updating-SSL-certificates-in-Sunbird-Proxy-service sunbird_environment: "{{env}}" # +content-service learner @@ -29,6 +30,7 @@ site_alerts_mailing_list: "" keycloak_alerts_mailing_list: "" api_manager_alerts_mailing_list: "" + ## Below passwords are used by DB install scripts when creating databases. Please use strong passwords. sunbird_pg_user: "{{core_vault_postgres_username}}" application_postgres_user: "{{core_vault_postgres_username}}" From b1a213235e6a44b15a20a80ba90539b7a143b02b Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Fri, 15 Feb 2019 13:16:18 +0530 Subject: [PATCH 1117/1345] Issue #000 feat: Added sunbird_app_name --- private_repo/ansible/inventory/dev/Core/common.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/private_repo/ansible/inventory/dev/Core/common.yml b/private_repo/ansible/inventory/dev/Core/common.yml index f8849a1875..347ecd1c18 100644 --- a/private_repo/ansible/inventory/dev/Core/common.yml +++ b/private_repo/ansible/inventory/dev/Core/common.yml @@ -17,6 +17,8 @@ analyticsapi_ip: # Analytics Service Load Balancer IP keycloak_url: "" # Keycloak Load balancer IP; eg http://10.10.10.10 sunbird_default_channel: # Organization channel name which portal will connect to +sunbird_app_name: # By default app name will be sunbird + ############# Storage ############### artifacts_container: '' # Azure blob container name to save built artifacts @@ -64,8 +66,6 @@ monitor_alerts_mail_from_email: ################################################ # NOT MANDATORY VARS -api_proxy_name: "{{proto}}://api.{{proxy_server_name}}" # Domain name on which device register and other api's will be accessed -sunbird_app_name: "{{env}}" ansible_ssh_private_key_file: sunbird_env: "{{env}}" sunbird_ekstep_api_base_url: "https://{{ekstep_s3_env}}.ekstep.in/api" #API base URL of the Ekstep environment. Use `https://qa.ekstep.in/api` for non-prod deployments, and use `https://api.ekstep.in/` for prod deployment. @@ -82,7 +82,6 @@ keycloak_api_management_user_password: "{{core_vault_keycloak_api_management_use azure_account_name: "{{core_vault_sunbird_azure_storage_account}}" azure_account_key: "{{core_vault_sunbird_azure_storage_key}}" project: "sunbird" -sunbird_app_name: "{{env}" sunbird_es_port: 9300 badger_url: http://azureaccountname.blob.core.windows.net/ sunbird_blob_env: "{{core_vault_sunbird_azure_storage_account}}" From a86e71acbb82c8cc585fcf30483e3ab7bbbd123f Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Fri, 15 Feb 2019 13:17:20 +0530 Subject: [PATCH 1118/1345] Issue #000 feat: Removed ansible_ssh_private_key_file --- private_repo/ansible/inventory/dev/Core/common.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/private_repo/ansible/inventory/dev/Core/common.yml b/private_repo/ansible/inventory/dev/Core/common.yml index 347ecd1c18..ad7c8210ae 100644 --- a/private_repo/ansible/inventory/dev/Core/common.yml +++ b/private_repo/ansible/inventory/dev/Core/common.yml @@ -66,7 +66,6 @@ monitor_alerts_mail_from_email: ################################################ # NOT MANDATORY VARS -ansible_ssh_private_key_file: sunbird_env: "{{env}}" sunbird_ekstep_api_base_url: "https://{{ekstep_s3_env}}.ekstep.in/api" #API base URL of the Ekstep environment. Use `https://qa.ekstep.in/api` for non-prod deployments, and use `https://api.ekstep.in/` for prod deployment. sunbird_ekstep_proxy_base_url: "https://{{ekstep_s3_env}}.ekstep.in/" #Base URL of the Ekstep environment. Use `https://qa.ekstep.in/` for non-prod deployments, and `https://community.ekstep.in/` for prod deployment. From dd09fea1a95da9a9a7d51ae1e897026ac68238b1 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Fri, 15 Feb 2019 13:22:23 +0530 Subject: [PATCH 1119/1345] Issue #000 feat: Deleting actor_service.env --- .../templates/sunbird_actor-service.env | 56 ------------------- 1 file changed, 56 deletions(-) delete mode 100644 ansible/roles/stack-sunbird/templates/sunbird_actor-service.env diff --git a/ansible/roles/stack-sunbird/templates/sunbird_actor-service.env b/ansible/roles/stack-sunbird/templates/sunbird_actor-service.env deleted file mode 100644 index 7e7f970bc1..0000000000 --- a/ansible/roles/stack-sunbird/templates/sunbird_actor-service.env +++ /dev/null @@ -1,56 +0,0 @@ -sunbird_cassandra_host={{sunbird_cassandra_host}} -sunbird_cassandra_port=9042 -sunbird_es_host={{sunbird_es_host}} -sunbird_es_port=9300,9300,9300 -sunbird_cassandra_username=cassandra -sunbird_cassandra_password=password -actor_hostname=actor-service -bind_hostname=0.0.0.0 -sunbird_sso_url={{keycloak_auth_server_url}}/ -sunbird_sso_realm={{keycloak_realm}} -sunbird_sso_username={{sunbird_sso_username}} -sunbird_sso_password={{sunbird_sso_password}} -sunbird_sso_client_id={{sunbird_sso_client_id}} -ekstep_authorization={{sunbird_ekstep_api_key}} -sunbird_pg_host={{sunbird_pg_host}} -sunbird_pg_port={{sunbird_pg_port}} -sunbird_pg_db={{sunbird_pg_db}} -sunbird_pg_user={{sunbird_pg_user}} -sunbird_pg_password={{sunbird_pg_password}} -sunbird_installation={{sunbird_installation}} -ekstep_api_base_url={{sunbird_ekstep_api_base_url}} -sunbird_mail_server_host={{sunbird_mail_server_host}} -sunbird_mail_server_port={{sunbird_mail_server_port}} -sunbird_mail_server_username={{sunbird_mail_server_username}} -sunbird_mail_server_password={{sunbird_mail_server_password}} -sunbird_mail_server_from_email={{sunbird_mail_server_from_email}} -sunbird_encryption_key={{sunbird_encryption_key}} -sunbird_encryption_mode={{sunbird_encryption_mode}} -sunbird_sso_publickey={{sunbird_sso_publickey}} -sunbird_account_name={{sunbird_account_name}} -sunbird_account_key={{sunbird_account_key}} -sunbird_quartz_mode={{sunbird_sunbird_quartz_mode}} -sunbird_env_logo_url={{sunbird_env_logo_url}} -sunbird_web_url={{sunbird_web_url}} -sunbird_actor_system_name={{sunbird_actor_system_name}} -sunbird_fcm_account_key={{sunbird_fcm_account_key}} -sunbird_app_url={{sunbird_app_url}} -sunbird_msg_91_auth={{sunbird_msg_91_auth}} -sunbird_msg_sender={{sunbird_msg_sender}} -sunbird_installation_email={{sunbird_installation_email}} -#New -sunbird_mw_system_host=actor-service -sunbird_mw_system_port=8088 -background_actor_provider=remote -api_actor_provider=off -badging_authorization_key={{vault_badging_authorization_key}} -sunbird_badger_baseurl=http://badger-service:8004 -sunbird_remote_req_router_path=akka.tcp://SunbirdMWSystem@learner-service:8088/user/RequestRouter -sunbird_remote_bg_req_router_path=akka.tcp://SunbirdMWSystem@actor-service:8088/user/BackgroundRequestRouter -sunbird_api_base_url=http://content_service:5000 -sunbird_authorization={{sunbird_api_auth_token}} -telemetry_pdata_id={{sunbird_telemetry_pdata_id}} -telemetry_pdata_pid=actor-service -telemetry_pdata_ver=1.7 -sunbird_lms_base_url={{sunbird_learner_service_base_url}} -telemetry_queue_threshold_value=100 From 02111406c3c1564c870706aad2767544e309baab Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Fri, 15 Feb 2019 14:59:56 +0530 Subject: [PATCH 1120/1345] Issue #000 feat: Removed unnecesary spaces --- .../ansible/inventory/dev/Core/common.yml | 25 ------------------- 1 file changed, 25 deletions(-) diff --git a/private_repo/ansible/inventory/dev/Core/common.yml b/private_repo/ansible/inventory/dev/Core/common.yml index ad7c8210ae..9657174c3e 100644 --- a/private_repo/ansible/inventory/dev/Core/common.yml +++ b/private_repo/ansible/inventory/dev/Core/common.yml @@ -16,7 +16,6 @@ searchservice_ip: # search service Load balancer IP analyticsapi_ip: # Analytics Service Load Balancer IP keycloak_url: "" # Keycloak Load balancer IP; eg http://10.10.10.10 sunbird_default_channel: # Organization channel name which portal will connect to - sunbird_app_name: # By default app name will be sunbird @@ -39,30 +38,6 @@ monitor_alerts_mail_from_email: ####################### END OF VARS ############################# - - - - - - - - - - - - - - - - - - - - - - - - ################################################ # NOT MANDATORY VARS From 4edd39eb735f9e0dcde353b4aa86de1293ec385d Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Fri, 15 Feb 2019 15:05:48 +0530 Subject: [PATCH 1121/1345] Issue #000 feat: Deleted duplicate {{env}} vars --- private_repo/ansible/inventory/dev/Core/common.yml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/private_repo/ansible/inventory/dev/Core/common.yml b/private_repo/ansible/inventory/dev/Core/common.yml index 9657174c3e..1e06c1091d 100644 --- a/private_repo/ansible/inventory/dev/Core/common.yml +++ b/private_repo/ansible/inventory/dev/Core/common.yml @@ -41,15 +41,11 @@ monitor_alerts_mail_from_email: ################################################ # NOT MANDATORY VARS -sunbird_env: "{{env}}" sunbird_ekstep_api_base_url: "https://{{ekstep_s3_env}}.ekstep.in/api" #API base URL of the Ekstep environment. Use `https://qa.ekstep.in/api` for non-prod deployments, and use `https://api.ekstep.in/` for prod deployment. sunbird_ekstep_proxy_base_url: "https://{{ekstep_s3_env}}.ekstep.in/" #Base URL of the Ekstep environment. Use `https://qa.ekstep.in/` for non-prod deployments, and `https://community.ekstep.in/` for prod deployment. sunbird_mail_server_from_email: "support@sunbird.org" #Email ID that should be as from address in mails -sunbird_installation: "{{env}}" sunbird_content_azure_storage_container: content sunbird_msg_sender: -sunbird_environment: "{{env}}" -sunbird_instance: "{{env}}" sunbird_android_app_url: "" sunbird_installation_email: "admin@sunbird.org" keycloak_api_management_user_password: "{{core_vault_keycloak_api_management_user_password}}" From 5d425751b3925cd57a347b4fcb3285d40b4c33f3 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Fri, 15 Feb 2019 16:28:51 +0530 Subject: [PATCH 1122/1345] Issue #000 feat: Removed message 91 From address --- ansible/inventory/env/group_vars/env.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/ansible/inventory/env/group_vars/env.yml b/ansible/inventory/env/group_vars/env.yml index b7f35a9995..c994e7b1a1 100644 --- a/ansible/inventory/env/group_vars/env.yml +++ b/ansible/inventory/env/group_vars/env.yml @@ -7,7 +7,6 @@ proxy_site_key: "{{ core_vault_proxy_site_key }}" #SSL certificate's site.key f proxy_site_crt: "{{ core_vault_proxy_site_crt }}" #SSL certificate's site.crt file contents. More details in this wiki: {{proto}}://github.com/project-sunbird/sunbird-commons/wiki/Updating-SSL-certificates-in-Sunbird-Proxy-service sunbird_environment: "{{env}}" # +content-service learner sunbird_installation: "{{env}}" # +keycloak -sunbird_msg_sender: "{{env}}" sunbird_instance: "{{env}}" env_short_name: "{{env}}" sunbird_env: "{{env}}" #Ekstep environment to connect to. Use `qa` for non-prod deployments, and `prod` for prod deployment. From cdb245ffe82dad43360531f9ad96ff5643ed38a9 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Fri, 15 Feb 2019 16:30:20 +0530 Subject: [PATCH 1123/1345] Issue #000 feat: Variablized learner cassandra varible --- .../roles/stack-sunbird/templates/sunbird_learner-service.env | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/stack-sunbird/templates/sunbird_learner-service.env b/ansible/roles/stack-sunbird/templates/sunbird_learner-service.env index a1e80f4d10..de19d5b5f5 100644 --- a/ansible/roles/stack-sunbird/templates/sunbird_learner-service.env +++ b/ansible/roles/stack-sunbird/templates/sunbird_learner-service.env @@ -38,7 +38,7 @@ sunbird_msg_91_auth={{sunbird_msg_91_auth}} sunbird_msg_sender={{sunbird_msg_sender}} sunbird_installation_email={{sunbird_installation_email}} {% if groups['cassandra-2'] is defined %} -sunbird_cassandra_host="{{groups['cassandra'][0]}},{{groups['cassandra'][1]}},{{groups['cassandra'][2]}}" +sunbird_cassandra_host="{{sunbird_cassandra_host}}" sunbird_cassandra_port="9042,9042,9042" sunbird_cassandra_consistency_level=quorum {% else %} From de8f2157ef95113a4da6cca1e6676cb262bf223a Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Fri, 15 Feb 2019 16:59:51 +0530 Subject: [PATCH 1124/1345] Issue #000 feat: removed azure account as, it's not secret --- private_repo/ansible/inventory/dev/Core/secrets.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/private_repo/ansible/inventory/dev/Core/secrets.yml b/private_repo/ansible/inventory/dev/Core/secrets.yml index c31abe139f..825a00a0b9 100644 --- a/private_repo/ansible/inventory/dev/Core/secrets.yml +++ b/private_repo/ansible/inventory/dev/Core/secrets.yml @@ -2,7 +2,6 @@ ####### Secrets ####### core_vault_postgres_password: -core_vault_sunbird_azure_storage_account: core_vault_sunbird_azure_storage_key: core_vault_docker_registry_url: "https://index.docker.io/v1" # use this value if using dockerhub core_vault_docker_registry_user: From 1aa5107ce28e626564c9446d59e882ccf9e135c6 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Fri, 15 Feb 2019 17:02:08 +0530 Subject: [PATCH 1125/1345] Issue #000 feat: Updated azure account key --- ansible/inventory/env/group_vars/env.yml | 1 + .../ansible/inventory/dev/Core/common.yml | 24 +++++++++++-------- 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/ansible/inventory/env/group_vars/env.yml b/ansible/inventory/env/group_vars/env.yml index c994e7b1a1..0e62be5536 100644 --- a/ansible/inventory/env/group_vars/env.yml +++ b/ansible/inventory/env/group_vars/env.yml @@ -11,6 +11,7 @@ sunbird_instance: "{{env}}" env_short_name: "{{env}}" sunbird_env: "{{env}}" #Ekstep environment to connect to. Use `qa` for non-prod deployments, and `prod` for prod deployment. sunbird_app_name: "{{env}}" +azure_account_key: "{{core_vault_sunbird_azure_storage_key}}" ## Learner service sunbird_url_shortner_access_token: "" diff --git a/private_repo/ansible/inventory/dev/Core/common.yml b/private_repo/ansible/inventory/dev/Core/common.yml index 1e06c1091d..7ea24b3e67 100644 --- a/private_repo/ansible/inventory/dev/Core/common.yml +++ b/private_repo/ansible/inventory/dev/Core/common.yml @@ -17,6 +17,8 @@ analyticsapi_ip: # Analytics Service Load Balancer IP keycloak_url: "" # Keycloak Load balancer IP; eg http://10.10.10.10 sunbird_default_channel: # Organization channel name which portal will connect to sunbird_app_name: # By default app name will be sunbird +azure_account_name: # Storage account name for blobs +azure_account_key: "{{core_vault_sunbird_azure_storage_key}}" ############# Storage ############### @@ -26,6 +28,7 @@ artifacts_container: '' # Azure blob container name to save buil mail_server_host: mail_server_username: "" alerts_mailing_list : "" +sunbird_mail_server_from_email: #Email ID that should be as from address in mails kibana_oauth_authenticated_email_domains: - domain1 @@ -34,23 +37,24 @@ kibana_oauth_authenticated_email_ids: - email1 - email2 monitor_alerts_mail_from_email: +sunbird_msg_sender: # Message from Address; atleast 6 char +sunbird_android_app_url: "" # Playstore url of android app; default is subird.org -####################### END OF VARS ############################# +####################### Please Check me ############################# +sunbird_ekstep_api_base_url: "https://{{ekstep_s3_env}}.ekstep.in/api" #API base URL of the Ekstep environment. Use `https://qa.ekstep.in/api` for non-prod deployments, and use `https://api.ekstep.in/` for prod deployment. + # sunbird_data_service_api_base_url: "{{sunbird_ekstep_api_base_url}}" + # telemetry_proxy_url: "{{sunbird_ekstep_api_base_url}}/data/v3/telemetry" + # sunbird_telemetry_api: "{{sunbird_ekstep_api_base_url}}/data/v3/telemetry" + # sunbird_language_service_api_base_url: '{{sunbird_ekstep_api_base_url}}/language' +sunbird_ekstep_proxy_base_url: "https://{{ekstep_s3_env}}.ekstep.in/" #Base URL of the Ekstep environment. Use `https://qa.ekstep.in/` for non-prod deployments, and `https://community.ekstep.in/` for prod deployment. +sunbird_content_azure_storage_container: content # learner-service +sunbird_installation_email: "admin@sunbird.org" ################################################ # NOT MANDATORY VARS -sunbird_ekstep_api_base_url: "https://{{ekstep_s3_env}}.ekstep.in/api" #API base URL of the Ekstep environment. Use `https://qa.ekstep.in/api` for non-prod deployments, and use `https://api.ekstep.in/` for prod deployment. -sunbird_ekstep_proxy_base_url: "https://{{ekstep_s3_env}}.ekstep.in/" #Base URL of the Ekstep environment. Use `https://qa.ekstep.in/` for non-prod deployments, and `https://community.ekstep.in/` for prod deployment. -sunbird_mail_server_from_email: "support@sunbird.org" #Email ID that should be as from address in mails -sunbird_content_azure_storage_container: content -sunbird_msg_sender: -sunbird_android_app_url: "" -sunbird_installation_email: "admin@sunbird.org" keycloak_api_management_user_password: "{{core_vault_keycloak_api_management_user_password}}" -azure_account_name: "{{core_vault_sunbird_azure_storage_account}}" -azure_account_key: "{{core_vault_sunbird_azure_storage_key}}" project: "sunbird" sunbird_es_port: 9300 badger_url: http://azureaccountname.blob.core.windows.net/ From 2ee2e73b21cac39b71b3d7880d840fcdb4320541 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Fri, 15 Feb 2019 17:02:58 +0530 Subject: [PATCH 1126/1345] Issue #000 feat: Added keycloak admin user --- ansible/inventory/env/group_vars/env.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/ansible/inventory/env/group_vars/env.yml b/ansible/inventory/env/group_vars/env.yml index 0e62be5536..e6e2870c0b 100644 --- a/ansible/inventory/env/group_vars/env.yml +++ b/ansible/inventory/env/group_vars/env.yml @@ -12,6 +12,7 @@ env_short_name: "{{env}}" sunbird_env: "{{env}}" #Ekstep environment to connect to. Use `qa` for non-prod deployments, and `prod` for prod deployment. sunbird_app_name: "{{env}}" azure_account_key: "{{core_vault_sunbird_azure_storage_key}}" +keycloak_api_management_user_password: "{{core_vault_keycloak_api_management_user_password}}" ## Learner service sunbird_url_shortner_access_token: "" From 9b7a19dc6c9fd2d272174e1c092faf95341cb97f Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Fri, 15 Feb 2019 17:21:51 +0530 Subject: [PATCH 1127/1345] Issue #000 feat: Removed ansible_ssh_private_key_file --- private_repo/ansible/inventory/dev/KnowledgePlatform/common.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/private_repo/ansible/inventory/dev/KnowledgePlatform/common.yml b/private_repo/ansible/inventory/dev/KnowledgePlatform/common.yml index 7aef2a9d09..e4b0b56a9b 100644 --- a/private_repo/ansible/inventory/dev/KnowledgePlatform/common.yml +++ b/private_repo/ansible/inventory/dev/KnowledgePlatform/common.yml @@ -19,7 +19,6 @@ ekstep_domain_name: ssh_public_key_deployer: bootstrap_user: bootstrap_key_path: -ansible_ssh_private_key_file: ###################### LP ############################ azure_public_container: From 8dd3a5eb36c0680ea162a6e904a0918a28b5c0f2 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Fri, 15 Feb 2019 18:54:21 +0530 Subject: [PATCH 1128/1345] Issue #000 feat: Adding url_shortner_access_token --- ansible/inventory/env/group_vars/env.yml | 4 ++-- private_repo/ansible/inventory/dev/Core/secrets.yml | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/ansible/inventory/env/group_vars/env.yml b/ansible/inventory/env/group_vars/env.yml index e6e2870c0b..4ef23c06b3 100644 --- a/ansible/inventory/env/group_vars/env.yml +++ b/ansible/inventory/env/group_vars/env.yml @@ -15,8 +15,8 @@ azure_account_key: "{{core_vault_sunbird_azure_storage_key}}" keycloak_api_management_user_password: "{{core_vault_keycloak_api_management_user_password}}" ## Learner service -sunbird_url_shortner_access_token: "" -sunbird_url_shortner_enable: 'false' +sunbird_url_shortner_access_token: "{{vault_core_url_shortner_access_token}}" + sunbird_keycloak_required_action_link_expiration_seconds: 2592000 sunbird_es_port: 9300 diff --git a/private_repo/ansible/inventory/dev/Core/secrets.yml b/private_repo/ansible/inventory/dev/Core/secrets.yml index 825a00a0b9..7df8f94241 100644 --- a/private_repo/ansible/inventory/dev/Core/secrets.yml +++ b/private_repo/ansible/inventory/dev/Core/secrets.yml @@ -18,6 +18,8 @@ core_vault_sunbird_sso_publickey: # Get After Keycloak Deployment core_vault_sunbird_api_auth_token: core_vault_sunbird_ekstep_api_key: +# Not mandatory +vault_core_url_shortner_access_token: "" From 597ffcc108af7d050be535d2d0812e9d5bb5f0c5 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Fri, 15 Feb 2019 18:55:14 +0530 Subject: [PATCH 1129/1345] Issue #000 feat: Updated variables --- private_repo/ansible/inventory/dev/Core/common.yml | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/private_repo/ansible/inventory/dev/Core/common.yml b/private_repo/ansible/inventory/dev/Core/common.yml index 7ea24b3e67..a280b713b2 100644 --- a/private_repo/ansible/inventory/dev/Core/common.yml +++ b/private_repo/ansible/inventory/dev/Core/common.yml @@ -1,5 +1,6 @@ ## Not used swarm_agent_load_balancer: +project: "sunbird" ########################################## # Starting Of Core VARS @@ -18,11 +19,10 @@ keycloak_url: "" # Keycloak Load balancer IP; eg http://1 sunbird_default_channel: # Organization channel name which portal will connect to sunbird_app_name: # By default app name will be sunbird azure_account_name: # Storage account name for blobs -azure_account_key: "{{core_vault_sunbird_azure_storage_key}}" -############# Storage ############### artifacts_container: '' # Azure blob container name to save built artifacts +sunbird_url_shortner_enable: 'false' ## Mail config mail_server_host: @@ -50,16 +50,13 @@ sunbird_ekstep_api_base_url: "https://{{ekstep_s3_env}}.ekstep.in/api" #API ba sunbird_ekstep_proxy_base_url: "https://{{ekstep_s3_env}}.ekstep.in/" #Base URL of the Ekstep environment. Use `https://qa.ekstep.in/` for non-prod deployments, and `https://community.ekstep.in/` for prod deployment. sunbird_content_azure_storage_container: content # learner-service sunbird_installation_email: "admin@sunbird.org" +badger_url: http://azureaccountname.blob.core.windows.net/ # Is it a dummy var? +sunbird_blob_env: "{{core_vault_sunbird_azure_storage_account}}" +sunbird_cdn_url: "" ################################################ # NOT MANDATORY VARS -keycloak_api_management_user_password: "{{core_vault_keycloak_api_management_user_password}}" -project: "sunbird" -sunbird_es_port: 9300 -badger_url: http://azureaccountname.blob.core.windows.net/ -sunbird_blob_env: "{{core_vault_sunbird_azure_storage_account}}" -sunbird_cdn_url: "" sunbird_url_shortner_access_token: "" sunbird_url_shortner_enable: "" keycloak_api_management_username: admin From c55f1b357114bb4ef28f1a7ff221f3b2d98ccdc8 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Fri, 15 Feb 2019 18:55:37 +0530 Subject: [PATCH 1130/1345] Issue #000 feat: Removed url_shortner --- private_repo/ansible/inventory/dev/Core/common.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/private_repo/ansible/inventory/dev/Core/common.yml b/private_repo/ansible/inventory/dev/Core/common.yml index a280b713b2..2d93adc480 100644 --- a/private_repo/ansible/inventory/dev/Core/common.yml +++ b/private_repo/ansible/inventory/dev/Core/common.yml @@ -57,8 +57,6 @@ sunbird_cdn_url: "" ################################################ # NOT MANDATORY VARS -sunbird_url_shortner_access_token: "" -sunbird_url_shortner_enable: "" keycloak_api_management_username: admin keycloak_admin_username: admin #Keycloak Admin username . Dont change this value jenkins_url: "http://10.20.0.12:8080/jenkins" From 214375ac4b60f51b01cff22f614f975a75536339 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Fri, 15 Feb 2019 18:57:15 +0530 Subject: [PATCH 1131/1345] Issue #000 feat: Removed keycloak admin username --- private_repo/ansible/inventory/dev/Core/common.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/private_repo/ansible/inventory/dev/Core/common.yml b/private_repo/ansible/inventory/dev/Core/common.yml index 2d93adc480..0f2c618c7a 100644 --- a/private_repo/ansible/inventory/dev/Core/common.yml +++ b/private_repo/ansible/inventory/dev/Core/common.yml @@ -57,8 +57,6 @@ sunbird_cdn_url: "" ################################################ # NOT MANDATORY VARS -keycloak_api_management_username: admin -keycloak_admin_username: admin #Keycloak Admin username . Dont change this value jenkins_url: "http://10.20.0.12:8080/jenkins" upstream_url: "{{azure_account_name}}.blob.core.windows.net/{{sunbird_content_azure_storage_container}}" sunbird_portal_user_upload_ref_link: http://www.sunbird.org/features-documentation/register_user From e9bba2675c2b9c902cd013c89492999f3119d757 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Fri, 15 Feb 2019 19:00:54 +0530 Subject: [PATCH 1132/1345] Issue #000 feat: Added keycloak management username default --- ansible/inventory/env/group_vars/env.yml | 1 - ansible/roles/keycloak/defaults/main.yml | 1 + 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/inventory/env/group_vars/env.yml b/ansible/inventory/env/group_vars/env.yml index 4ef23c06b3..112d4e9bad 100644 --- a/ansible/inventory/env/group_vars/env.yml +++ b/ansible/inventory/env/group_vars/env.yml @@ -98,7 +98,6 @@ keycloak_sms_provider_templates_dest: "/opt/keycloak/themes/sunbird/login" keycloak_ekstep_sunbird_login_theme_file: "login.tar.gz" keycloak_ekstep_sunbird_login_theme_dest: "/opt/keycloak/themes/sunbird/login" keycloak_postgresql: "postgresql-9.4.1212.jar" -keycloak_api_management_username: admin sunbird_auth_version: 1.0v diff --git a/ansible/roles/keycloak/defaults/main.yml b/ansible/roles/keycloak/defaults/main.yml index 9325607e66..b31bc15e32 100644 --- a/ansible/roles/keycloak/defaults/main.yml +++ b/ansible/roles/keycloak/defaults/main.yml @@ -100,6 +100,7 @@ keycloak_custom_ds: ' ' keycloak_management_user: "admin" +keycloak_api_management_username: "admin" keycloak_management_password: "{{keycloak_password}}" theme: "sunrise.tar.gz" From 604d6af089de7d52583d6c8961f656c4325ff0e5 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Fri, 15 Feb 2019 19:10:48 +0530 Subject: [PATCH 1133/1345] Issue #000 feat: Updated skeptic vars --- private_repo/ansible/inventory/dev/Core/common.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/private_repo/ansible/inventory/dev/Core/common.yml b/private_repo/ansible/inventory/dev/Core/common.yml index 0f2c618c7a..48f5690a45 100644 --- a/private_repo/ansible/inventory/dev/Core/common.yml +++ b/private_repo/ansible/inventory/dev/Core/common.yml @@ -39,6 +39,7 @@ kibana_oauth_authenticated_email_ids: monitor_alerts_mail_from_email: sunbird_msg_sender: # Message from Address; atleast 6 char sunbird_android_app_url: "" # Playstore url of android app; default is subird.org +jenkins_url: "http://10.20.0.12:8080/jenkins" ####################### Please Check me ############################# @@ -49,6 +50,8 @@ sunbird_ekstep_api_base_url: "https://{{ekstep_s3_env}}.ekstep.in/api" #API ba # sunbird_language_service_api_base_url: '{{sunbird_ekstep_api_base_url}}/language' sunbird_ekstep_proxy_base_url: "https://{{ekstep_s3_env}}.ekstep.in/" #Base URL of the Ekstep environment. Use `https://qa.ekstep.in/` for non-prod deployments, and `https://community.ekstep.in/` for prod deployment. sunbird_content_azure_storage_container: content # learner-service + # Following variable gets called for assets/public from Proxy + # upstream_url: "{{azure_account_name}}.blob.core.windows.net/{{sunbird_content_azure_storage_container}}" sunbird_installation_email: "admin@sunbird.org" badger_url: http://azureaccountname.blob.core.windows.net/ # Is it a dummy var? sunbird_blob_env: "{{core_vault_sunbird_azure_storage_account}}" @@ -57,8 +60,6 @@ sunbird_cdn_url: "" ################################################ # NOT MANDATORY VARS -jenkins_url: "http://10.20.0.12:8080/jenkins" -upstream_url: "{{azure_account_name}}.blob.core.windows.net/{{sunbird_content_azure_storage_container}}" sunbird_portal_user_upload_ref_link: http://www.sunbird.org/features-documentation/register_user sunbird_user_profile_field_default_visibility: private sunbird_keycloak_required_action_link_expiration_seconds: 2592000 From 964f488c5fe35f160d7106a3c65f9b1245e7d612 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Fri, 15 Feb 2019 21:00:08 +0530 Subject: [PATCH 1134/1345] Issue #000 feat: Added assets storage container --- private_repo/ansible/inventory/dev/Core/common.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/private_repo/ansible/inventory/dev/Core/common.yml b/private_repo/ansible/inventory/dev/Core/common.yml index 48f5690a45..a31c5c4add 100644 --- a/private_repo/ansible/inventory/dev/Core/common.yml +++ b/private_repo/ansible/inventory/dev/Core/common.yml @@ -19,7 +19,7 @@ keycloak_url: "" # Keycloak Load balancer IP; eg http://1 sunbird_default_channel: # Organization channel name which portal will connect to sunbird_app_name: # By default app name will be sunbird azure_account_name: # Storage account name for blobs - +sunbird_content_azure_storage_container: # Conatainer store assets/public artifacts_container: '' # Azure blob container name to save built artifacts sunbird_url_shortner_enable: 'false' From a777432e875b2acf7d124a173438fe751b500dc3 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Fri, 15 Feb 2019 21:02:00 +0530 Subject: [PATCH 1135/1345] Issue #000 feat: sunbird_portal_user_upload_ref_link --- ansible/inventory/env/group_vars/env.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/ansible/inventory/env/group_vars/env.yml b/ansible/inventory/env/group_vars/env.yml index 112d4e9bad..d6b97c0c9c 100644 --- a/ansible/inventory/env/group_vars/env.yml +++ b/ansible/inventory/env/group_vars/env.yml @@ -21,7 +21,7 @@ sunbird_keycloak_required_action_link_expiration_seconds: 2592000 sunbird_es_port: 9300 mail_server_port: 587 - +upstream_url: "{{azure_account_name}}.blob.core.windows.net/{{sunbird_content_azure_storage_container}}" ## Mailing list # !! Override for specific alert groups; Default will be alerts_mailing_list monitor_alerts_slack_channel: @@ -31,6 +31,8 @@ site_alerts_mailing_list: "" keycloak_alerts_mailing_list: "" api_manager_alerts_mailing_list: "" +# Static help page +sunbird_portal_user_upload_ref_link: http://www.sunbird.org/features-documentation/register_user ## Below passwords are used by DB install scripts when creating databases. Please use strong passwords. sunbird_pg_user: "{{core_vault_postgres_username}}" From 6f55d6653b409dd8fa1e271c17b7f536e6a86e35 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Fri, 15 Feb 2019 21:04:12 +0530 Subject: [PATCH 1136/1345] Issue #000 feat: Added user profile visibility --- ansible/inventory/env/group_vars/env.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/ansible/inventory/env/group_vars/env.yml b/ansible/inventory/env/group_vars/env.yml index d6b97c0c9c..c0e942731b 100644 --- a/ansible/inventory/env/group_vars/env.yml +++ b/ansible/inventory/env/group_vars/env.yml @@ -33,6 +33,7 @@ api_manager_alerts_mailing_list: "" # Static help page sunbird_portal_user_upload_ref_link: http://www.sunbird.org/features-documentation/register_user +sunbird_user_profile_field_default_visibility: private ## Below passwords are used by DB install scripts when creating databases. Please use strong passwords. sunbird_pg_user: "{{core_vault_postgres_username}}" From 535b69df3f1f66f46d9b8956cc6e5e12d4fd69af Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Fri, 15 Feb 2019 21:06:50 +0530 Subject: [PATCH 1137/1345] Issue #000 feat: Moved keycloak link expiration time to sunbird/defaults --- ansible/roles/stack-sunbird/defaults/main.yml | 3 +++ private_repo/ansible/inventory/dev/Core/common.yml | 3 --- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/ansible/roles/stack-sunbird/defaults/main.yml b/ansible/roles/stack-sunbird/defaults/main.yml index 4855632f31..94aa114f7b 100644 --- a/ansible/roles/stack-sunbird/defaults/main.yml +++ b/ansible/roles/stack-sunbird/defaults/main.yml @@ -85,3 +85,6 @@ telemetry_kafka_topic: encryption_replicas: 1 encryption_reservation_memory: "256M" encryption_limit_memory: "512M" + +# Learner +sunbird_keycloak_required_action_link_expiration_seconds: 2592000 diff --git a/private_repo/ansible/inventory/dev/Core/common.yml b/private_repo/ansible/inventory/dev/Core/common.yml index a31c5c4add..461b852c38 100644 --- a/private_repo/ansible/inventory/dev/Core/common.yml +++ b/private_repo/ansible/inventory/dev/Core/common.yml @@ -60,9 +60,6 @@ sunbird_cdn_url: "" ################################################ # NOT MANDATORY VARS -sunbird_portal_user_upload_ref_link: http://www.sunbird.org/features-documentation/register_user -sunbird_user_profile_field_default_visibility: private -sunbird_keycloak_required_action_link_expiration_seconds: 2592000 keycloak_build_src: "" keycloak_ver: "keycloak-3.2.0.Final" keycloak_sms_provider_build: "keycloak-email-phone-autthenticator-1.0-SNAPSHOT.jar" From cb2e919ba66c3720e5c32f7f757298c91e5f4fa1 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Fri, 15 Feb 2019 21:08:51 +0530 Subject: [PATCH 1138/1345] Issue #000 feat: Rearranging keycloak vars --- .../ansible/inventory/dev/Core/common.yml | 20 ++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/private_repo/ansible/inventory/dev/Core/common.yml b/private_repo/ansible/inventory/dev/Core/common.yml index 461b852c38..7a060c54e5 100644 --- a/private_repo/ansible/inventory/dev/Core/common.yml +++ b/private_repo/ansible/inventory/dev/Core/common.yml @@ -60,15 +60,6 @@ sunbird_cdn_url: "" ################################################ # NOT MANDATORY VARS -keycloak_build_src: "" -keycloak_ver: "keycloak-3.2.0.Final" -keycloak_sms_provider_build: "keycloak-email-phone-autthenticator-1.0-SNAPSHOT.jar" -keycloak_sms_provider_templates_src: "templates.tar.gz" -keycloak_sms_provider_templates_dest: "/opt/keycloak/themes/sunbird/login" -keycloak_ekstep_sunbird_login_theme_file: "login.tar.gz" -keycloak_ekstep_sunbird_login_theme_dest: "/opt/keycloak/themes/sunbird/login" -keycloak_postgresql: "postgresql-9.4.1212.jar" -sunbird_auth_version: 1.0v sunbird_external_content_whitelisted_domains: "" badger_admin_email: badger_file_storage: @@ -81,3 +72,14 @@ sunbird_installation_display_name: "{{env}}" env_short_name: "{{env}}" sunbird_config_service_url: '' config_cache_ttl: 600 + +# Keycloak values can be merged to keycloak role, once PR is merged +keycloak_build_src: "" +keycloak_ver: "keycloak-3.2.0.Final" +keycloak_sms_provider_build: "keycloak-email-phone-autthenticator-1.0-SNAPSHOT.jar" +keycloak_sms_provider_templates_src: "templates.tar.gz" +keycloak_sms_provider_templates_dest: "/opt/keycloak/themes/sunbird/login" +keycloak_ekstep_sunbird_login_theme_file: "login.tar.gz" +keycloak_ekstep_sunbird_login_theme_dest: "/opt/keycloak/themes/sunbird/login" +keycloak_postgresql: "postgresql-9.4.1212.jar" +sunbird_auth_version: 1.0v From 00a02360a3d039997574a90c7f482b0ecf59b86d Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Fri, 15 Feb 2019 21:14:22 +0530 Subject: [PATCH 1139/1345] Issue #000 feat: Seggrigated variables per service --- ansible/inventory/env/group_vars/env.yml | 11 +++++++++-- private_repo/ansible/inventory/dev/Core/common.yml | 3 --- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/ansible/inventory/env/group_vars/env.yml b/ansible/inventory/env/group_vars/env.yml index c0e942731b..91540510ec 100644 --- a/ansible/inventory/env/group_vars/env.yml +++ b/ansible/inventory/env/group_vars/env.yml @@ -31,10 +31,17 @@ site_alerts_mailing_list: "" keycloak_alerts_mailing_list: "" api_manager_alerts_mailing_list: "" -# Static help page -sunbird_portal_user_upload_ref_link: http://www.sunbird.org/features-documentation/register_user +# Learner sunbird_user_profile_field_default_visibility: private +# Player +sunbird_external_content_whitelisted_domains: "" +sunbird_portal_user_upload_ref_link: http://www.sunbird.org/features-documentation/register_user + +# Content +content_service_whitelisted_channels: "" +content_service_blacklisted_channels: "" + ## Below passwords are used by DB install scripts when creating databases. Please use strong passwords. sunbird_pg_user: "{{core_vault_postgres_username}}" application_postgres_user: "{{core_vault_postgres_username}}" diff --git a/private_repo/ansible/inventory/dev/Core/common.yml b/private_repo/ansible/inventory/dev/Core/common.yml index 7a060c54e5..d309820d9e 100644 --- a/private_repo/ansible/inventory/dev/Core/common.yml +++ b/private_repo/ansible/inventory/dev/Core/common.yml @@ -60,14 +60,11 @@ sunbird_cdn_url: "" ################################################ # NOT MANDATORY VARS -sunbird_external_content_whitelisted_domains: "" badger_admin_email: badger_file_storage: keycloak_api_management_user_email: "admin@sunbird.org" keycloak_api_management_user_first_name: "admin" keycloak_api_management_user_last_name: "admin" -content_service_whitelisted_channels: "" -content_service_blacklisted_channels: "" sunbird_installation_display_name: "{{env}}" env_short_name: "{{env}}" sunbird_config_service_url: '' From d053c90818dcf74920b0802522bcfb9dae3ed635 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Fri, 15 Feb 2019 21:28:11 +0530 Subject: [PATCH 1140/1345] Issue #000 feat: Removed env_short_name --- private_repo/ansible/inventory/dev/Core/common.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/private_repo/ansible/inventory/dev/Core/common.yml b/private_repo/ansible/inventory/dev/Core/common.yml index d309820d9e..06e8013f35 100644 --- a/private_repo/ansible/inventory/dev/Core/common.yml +++ b/private_repo/ansible/inventory/dev/Core/common.yml @@ -66,7 +66,6 @@ keycloak_api_management_user_email: "admin@sunbird.org" keycloak_api_management_user_first_name: "admin" keycloak_api_management_user_last_name: "admin" sunbird_installation_display_name: "{{env}}" -env_short_name: "{{env}}" sunbird_config_service_url: '' config_cache_ttl: 600 From 0e4c7eda3b360f18a00bac2e69f48ef8ad76cf19 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Fri, 15 Feb 2019 21:33:27 +0530 Subject: [PATCH 1141/1345] Issue #000 feat: Updated skeptical vars --- private_repo/ansible/inventory/dev/Core/common.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/private_repo/ansible/inventory/dev/Core/common.yml b/private_repo/ansible/inventory/dev/Core/common.yml index 06e8013f35..e22496f818 100644 --- a/private_repo/ansible/inventory/dev/Core/common.yml +++ b/private_repo/ansible/inventory/dev/Core/common.yml @@ -56,6 +56,7 @@ sunbird_installation_email: "admin@sunbird.org" badger_url: http://azureaccountname.blob.core.windows.net/ # Is it a dummy var? sunbird_blob_env: "{{core_vault_sunbird_azure_storage_account}}" sunbird_cdn_url: "" +sunbird_config_service_url: '' ################################################ # NOT MANDATORY VARS @@ -66,7 +67,6 @@ keycloak_api_management_user_email: "admin@sunbird.org" keycloak_api_management_user_first_name: "admin" keycloak_api_management_user_last_name: "admin" sunbird_installation_display_name: "{{env}}" -sunbird_config_service_url: '' config_cache_ttl: 600 # Keycloak values can be merged to keycloak role, once PR is merged From 1128be44abf6dea02dcb4ea07133a77f4560a5e0 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Fri, 15 Feb 2019 21:38:04 +0530 Subject: [PATCH 1142/1345] Issue #000 feat: Added badger variables --- ansible/inventory/env/group_vars/env.yml | 4 ++++ private_repo/ansible/inventory/dev/Core/common.yml | 2 -- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/ansible/inventory/env/group_vars/env.yml b/ansible/inventory/env/group_vars/env.yml index 91540510ec..4fdad26803 100644 --- a/ansible/inventory/env/group_vars/env.yml +++ b/ansible/inventory/env/group_vars/env.yml @@ -42,6 +42,10 @@ sunbird_portal_user_upload_ref_link: http://www.sunbird.org/features-documentati content_service_whitelisted_channels: "" content_service_blacklisted_channels: "" +# Badger +badger_file_storage: storages.backends.azure_storage.AzureStorage +badger_admin_email: + ## Below passwords are used by DB install scripts when creating databases. Please use strong passwords. sunbird_pg_user: "{{core_vault_postgres_username}}" application_postgres_user: "{{core_vault_postgres_username}}" diff --git a/private_repo/ansible/inventory/dev/Core/common.yml b/private_repo/ansible/inventory/dev/Core/common.yml index e22496f818..e5fb46ff81 100644 --- a/private_repo/ansible/inventory/dev/Core/common.yml +++ b/private_repo/ansible/inventory/dev/Core/common.yml @@ -61,8 +61,6 @@ sunbird_config_service_url: '' ################################################ # NOT MANDATORY VARS -badger_admin_email: -badger_file_storage: keycloak_api_management_user_email: "admin@sunbird.org" keycloak_api_management_user_first_name: "admin" keycloak_api_management_user_last_name: "admin" From c6be3fdf72acfd77200f2885d2f75139a097ccae Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Fri, 15 Feb 2019 21:40:25 +0530 Subject: [PATCH 1143/1345] Issue #000 feat: Added Keycloak default values --- ansible/inventory/env/group_vars/env.yml | 4 ++++ private_repo/ansible/inventory/dev/Core/common.yml | 2 -- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/ansible/inventory/env/group_vars/env.yml b/ansible/inventory/env/group_vars/env.yml index 4fdad26803..6a478e0030 100644 --- a/ansible/inventory/env/group_vars/env.yml +++ b/ansible/inventory/env/group_vars/env.yml @@ -12,7 +12,11 @@ env_short_name: "{{env}}" sunbird_env: "{{env}}" #Ekstep environment to connect to. Use `qa` for non-prod deployments, and `prod` for prod deployment. sunbird_app_name: "{{env}}" azure_account_key: "{{core_vault_sunbird_azure_storage_key}}" + +# Keycloak keycloak_api_management_user_password: "{{core_vault_keycloak_api_management_user_password}}" +keycloak_api_management_user_first_name: "admin" +keycloak_api_management_user_last_name: "admin" ## Learner service sunbird_url_shortner_access_token: "{{vault_core_url_shortner_access_token}}" diff --git a/private_repo/ansible/inventory/dev/Core/common.yml b/private_repo/ansible/inventory/dev/Core/common.yml index e5fb46ff81..a8c55f91e1 100644 --- a/private_repo/ansible/inventory/dev/Core/common.yml +++ b/private_repo/ansible/inventory/dev/Core/common.yml @@ -62,8 +62,6 @@ sunbird_config_service_url: '' # NOT MANDATORY VARS keycloak_api_management_user_email: "admin@sunbird.org" -keycloak_api_management_user_first_name: "admin" -keycloak_api_management_user_last_name: "admin" sunbird_installation_display_name: "{{env}}" config_cache_ttl: 600 From e416db942a4e38d4205b4e8638db320c94f44e4f Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Fri, 15 Feb 2019 21:57:05 +0530 Subject: [PATCH 1144/1345] Issue #000 feat: Adding skeptic var --- private_repo/ansible/inventory/dev/Core/common.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/private_repo/ansible/inventory/dev/Core/common.yml b/private_repo/ansible/inventory/dev/Core/common.yml index a8c55f91e1..b9b467506b 100644 --- a/private_repo/ansible/inventory/dev/Core/common.yml +++ b/private_repo/ansible/inventory/dev/Core/common.yml @@ -57,12 +57,12 @@ badger_url: http://azureaccountname.blob.core.windows.net/ # Is it a dummy var? sunbird_blob_env: "{{core_vault_sunbird_azure_storage_account}}" sunbird_cdn_url: "" sunbird_config_service_url: '' +sunbird_installation_display_name: "{{env}}" ################################################ # NOT MANDATORY VARS keycloak_api_management_user_email: "admin@sunbird.org" -sunbird_installation_display_name: "{{env}}" config_cache_ttl: 600 # Keycloak values can be merged to keycloak role, once PR is merged From fd7c43550da93af3907ba6fb3e5a46cf2da8686d Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Fri, 15 Feb 2019 22:01:10 +0530 Subject: [PATCH 1145/1345] Issue #000 feat: Variblizing sunbird_installation_display_name --- private_repo/ansible/inventory/dev/Core/common.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/private_repo/ansible/inventory/dev/Core/common.yml b/private_repo/ansible/inventory/dev/Core/common.yml index b9b467506b..770d98068b 100644 --- a/private_repo/ansible/inventory/dev/Core/common.yml +++ b/private_repo/ansible/inventory/dev/Core/common.yml @@ -57,7 +57,7 @@ badger_url: http://azureaccountname.blob.core.windows.net/ # Is it a dummy var? sunbird_blob_env: "{{core_vault_sunbird_azure_storage_account}}" sunbird_cdn_url: "" sunbird_config_service_url: '' -sunbird_installation_display_name: "{{env}}" +sunbird_installation_display_name: "{{sunbird_app_name}} {{env}}" ################################################ # NOT MANDATORY VARS From 3482e6c3552f9bb47e863c6d310eec1f1eb341ab Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Fri, 15 Feb 2019 22:06:24 +0530 Subject: [PATCH 1146/1345] Issue #000 feat: Added config_cache_ttl to player defaults --- ansible/roles/stack-sunbird/defaults/main.yml | 3 +++ private_repo/ansible/inventory/dev/Core/common.yml | 1 - 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/ansible/roles/stack-sunbird/defaults/main.yml b/ansible/roles/stack-sunbird/defaults/main.yml index 94aa114f7b..a84fded9d8 100644 --- a/ansible/roles/stack-sunbird/defaults/main.yml +++ b/ansible/roles/stack-sunbird/defaults/main.yml @@ -88,3 +88,6 @@ encryption_limit_memory: "512M" # Learner sunbird_keycloak_required_action_link_expiration_seconds: 2592000 + +# Player +config_cache_ttl: 600 diff --git a/private_repo/ansible/inventory/dev/Core/common.yml b/private_repo/ansible/inventory/dev/Core/common.yml index 770d98068b..6db8536902 100644 --- a/private_repo/ansible/inventory/dev/Core/common.yml +++ b/private_repo/ansible/inventory/dev/Core/common.yml @@ -63,7 +63,6 @@ sunbird_installation_display_name: "{{sunbird_app_name}} {{env}}" # NOT MANDATORY VARS keycloak_api_management_user_email: "admin@sunbird.org" -config_cache_ttl: 600 # Keycloak values can be merged to keycloak role, once PR is merged keycloak_build_src: "" From 5232674f0660c7350f492844e0d01b3532e252ac Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Fri, 15 Feb 2019 22:08:50 +0530 Subject: [PATCH 1147/1345] Issue #000 feat: formatted variable structure --- private_repo/ansible/inventory/dev/Core/common.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/private_repo/ansible/inventory/dev/Core/common.yml b/private_repo/ansible/inventory/dev/Core/common.yml index 6db8536902..5486977ec9 100644 --- a/private_repo/ansible/inventory/dev/Core/common.yml +++ b/private_repo/ansible/inventory/dev/Core/common.yml @@ -1,7 +1,3 @@ -## Not used -swarm_agent_load_balancer: -project: "sunbird" - ########################################## # Starting Of Core VARS env: #Name of the environment, e.g. dev, staging or production. @@ -59,9 +55,13 @@ sunbird_cdn_url: "" sunbird_config_service_url: '' sunbird_installation_display_name: "{{sunbird_app_name}} {{env}}" +## Not used +swarm_agent_load_balancer: +project: "sunbird" + + ################################################ # NOT MANDATORY VARS - keycloak_api_management_user_email: "admin@sunbird.org" # Keycloak values can be merged to keycloak role, once PR is merged From 4e3c15219384bc5b9cfd34d325d6c714c3cfcdea Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Fri, 15 Feb 2019 22:10:23 +0530 Subject: [PATCH 1148/1345] Issue #000 feat: Added jenkins slave var --- private_repo/ansible/inventory/dev/Core/common.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/private_repo/ansible/inventory/dev/Core/common.yml b/private_repo/ansible/inventory/dev/Core/common.yml index 5486977ec9..511780c5f3 100644 --- a/private_repo/ansible/inventory/dev/Core/common.yml +++ b/private_repo/ansible/inventory/dev/Core/common.yml @@ -33,9 +33,9 @@ kibana_oauth_authenticated_email_ids: - email1 - email2 monitor_alerts_mail_from_email: -sunbird_msg_sender: # Message from Address; atleast 6 char -sunbird_android_app_url: "" # Playstore url of android app; default is subird.org -jenkins_url: "http://10.20.0.12:8080/jenkins" +sunbird_msg_sender: # Message from Address; atleast 6 char +sunbird_android_app_url: "" # Playstore url of android app; default is subird.org +jenkins_url: # Jenkins urls to be accessed from slaves; eg "http://10.20.0.12:8080/jenkins" ####################### Please Check me ############################# From 772f4e59260ef4d3feadd70b29c6ea4c48ca91a0 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Fri, 15 Feb 2019 22:10:54 +0530 Subject: [PATCH 1149/1345] Issue #000 feat: Updated Not mandatory vars --- private_repo/ansible/inventory/dev/Core/common.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/private_repo/ansible/inventory/dev/Core/common.yml b/private_repo/ansible/inventory/dev/Core/common.yml index 511780c5f3..ff550caa92 100644 --- a/private_repo/ansible/inventory/dev/Core/common.yml +++ b/private_repo/ansible/inventory/dev/Core/common.yml @@ -35,6 +35,9 @@ kibana_oauth_authenticated_email_ids: monitor_alerts_mail_from_email: sunbird_msg_sender: # Message from Address; atleast 6 char sunbird_android_app_url: "" # Playstore url of android app; default is subird.org + +# NOT MANDATORY VARS +keycloak_api_management_user_email: "admin@sunbird.org" jenkins_url: # Jenkins urls to be accessed from slaves; eg "http://10.20.0.12:8080/jenkins" @@ -61,8 +64,6 @@ project: "sunbird" ################################################ -# NOT MANDATORY VARS -keycloak_api_management_user_email: "admin@sunbird.org" # Keycloak values can be merged to keycloak role, once PR is merged keycloak_build_src: "" From 9db7a1d64fee8128b29d967b2123f81311150658 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Fri, 15 Feb 2019 22:42:41 +0530 Subject: [PATCH 1150/1345] Issue #000 feat: Added sunbird_telemetry_dispatchers default kafka --- ansible/inventory/env/group_vars/env.yml | 1 - ansible/roles/stack-sunbird/defaults/main.yml | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/ansible/inventory/env/group_vars/env.yml b/ansible/inventory/env/group_vars/env.yml index 6a478e0030..8a15822dfc 100644 --- a/ansible/inventory/env/group_vars/env.yml +++ b/ansible/inventory/env/group_vars/env.yml @@ -175,7 +175,6 @@ sunbird_app_url: sunbird_fcm_account_key: "{{core_vault_sunbird_fcm_account_key}}" sunbird_env_logo_url: "{{proto}}://{{proxy_server_name}}/common/images/sunbird_logo.png" sunbird_msg_91_auth: "{{core_vault_msg91_auth_key}}" -sunbird_telemetry_dispatchers: kafka sunbird_content_service_producer_id: "{{env}}.sunbird.content-service" sunbird_telemetry_pdata_id: "{{env}}.sunbird.learning.service" sunbird_http_orgin: "{{proto}}://{{ proxy_server_name }}/badging" diff --git a/ansible/roles/stack-sunbird/defaults/main.yml b/ansible/roles/stack-sunbird/defaults/main.yml index a84fded9d8..78441d80fb 100644 --- a/ansible/roles/stack-sunbird/defaults/main.yml +++ b/ansible/roles/stack-sunbird/defaults/main.yml @@ -60,7 +60,7 @@ sunbird_actor_system_name: sunbird_fcm_account_key: sunbird_app_url: sunbird_image_storage_url: -sunbird_telemetry_dispatchers: +sunbird_telemetry_dispatchers: kafka content_service_whitelisted_channels: content_service_blacklisted_channels: sunbird_env_logo_url: From 28e6838cbf26856dccd3d0adf3d188c03498742c Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Fri, 15 Feb 2019 22:44:16 +0530 Subject: [PATCH 1151/1345] Issue #000 feat: Added unused vars --- ansible/inventory/env/group_vars/env.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/ansible/inventory/env/group_vars/env.yml b/ansible/inventory/env/group_vars/env.yml index 8a15822dfc..375ae422e0 100644 --- a/ansible/inventory/env/group_vars/env.yml +++ b/ansible/inventory/env/group_vars/env.yml @@ -1,3 +1,6 @@ +### Not using +sunbird_content_service_producer_id: "{{env}}.sunbird.content-service" + ###################### Core ############################ # ENVIRONMENT CONFIGURATION @@ -175,7 +178,6 @@ sunbird_app_url: sunbird_fcm_account_key: "{{core_vault_sunbird_fcm_account_key}}" sunbird_env_logo_url: "{{proto}}://{{proxy_server_name}}/common/images/sunbird_logo.png" sunbird_msg_91_auth: "{{core_vault_msg91_auth_key}}" -sunbird_content_service_producer_id: "{{env}}.sunbird.content-service" sunbird_telemetry_pdata_id: "{{env}}.sunbird.learning.service" sunbird_http_orgin: "{{proto}}://{{ proxy_server_name }}/badging" sunbird_encryption_key: "{{ core_vault_sunbird_encryption_key }}" From ab0c5487064c40396e9483d09acff875905788ab Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Fri, 15 Feb 2019 23:05:35 +0530 Subject: [PATCH 1152/1345] Issue #000 feat: Updated comments --- private_repo/ansible/inventory/dev/Core/common.yml | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/private_repo/ansible/inventory/dev/Core/common.yml b/private_repo/ansible/inventory/dev/Core/common.yml index ff550caa92..d9ca1a7dcf 100644 --- a/private_repo/ansible/inventory/dev/Core/common.yml +++ b/private_repo/ansible/inventory/dev/Core/common.yml @@ -23,17 +23,18 @@ sunbird_url_shortner_enable: 'false' ## Mail config mail_server_host: mail_server_username: "" -alerts_mailing_list : "" -sunbird_mail_server_from_email: #Email ID that should be as from address in mails +alerts_mailing_list : "" # Comma separated mail list for Alerts; eg: user1@mail.com, user2@mail.com +sunbird_mail_server_from_email: # Email ID that should be as from address in mails +# Kibana oauth authorized domains; for accessing kibana dashboard kibana_oauth_authenticated_email_domains: - domain1 - domain2 kibana_oauth_authenticated_email_ids: - email1 - email2 -monitor_alerts_mail_from_email: -sunbird_msg_sender: # Message from Address; atleast 6 char +monitor_alerts_mail_from_email: # From Address for alert mails +sunbird_msg_sender: # SMS from Address; atleast 6 char sunbird_android_app_url: "" # Playstore url of android app; default is subird.org # NOT MANDATORY VARS From dfe74483ac01f379b5ef4c4803033d59249923f2 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Sat, 16 Feb 2019 17:25:22 +0530 Subject: [PATCH 1153/1345] Issue #000 feat: Changed variable precedence common.yml -> env.yml all.yml will have all defaults --- ansible/inventory/env/group_vars/all.yml | 558 ++++++++++++++++++++++- ansible/inventory/env/group_vars/env.yml | 558 +---------------------- 2 files changed, 558 insertions(+), 558 deletions(-) mode change 120000 => 100644 ansible/inventory/env/group_vars/all.yml mode change 100644 => 120000 ansible/inventory/env/group_vars/env.yml diff --git a/ansible/inventory/env/group_vars/all.yml b/ansible/inventory/env/group_vars/all.yml deleted file mode 120000 index a9c19506c3..0000000000 --- a/ansible/inventory/env/group_vars/all.yml +++ /dev/null @@ -1 +0,0 @@ -../common.yml \ No newline at end of file diff --git a/ansible/inventory/env/group_vars/all.yml b/ansible/inventory/env/group_vars/all.yml new file mode 100644 index 0000000000..375ae422e0 --- /dev/null +++ b/ansible/inventory/env/group_vars/all.yml @@ -0,0 +1,557 @@ +### Not using +sunbird_content_service_producer_id: "{{env}}.sunbird.content-service" + +###################### Core ############################ + +# ENVIRONMENT CONFIGURATION +proxy_server_name: "{{domain_name}}" +api_proxy_name: "{{proto}}://api.{{proxy_server_name}}" # Domain name on which device register and other api's will be accessed +proxy_site_key: "{{ core_vault_proxy_site_key }}" #SSL certificate's site.key file contents. More details in this wiki: {{proto}}://github.com/project-sunbird/sunbird-commons/wiki/Updating-SSL-certificates-in-Sunbird-Proxy-service +proxy_site_crt: "{{ core_vault_proxy_site_crt }}" #SSL certificate's site.crt file contents. More details in this wiki: {{proto}}://github.com/project-sunbird/sunbird-commons/wiki/Updating-SSL-certificates-in-Sunbird-Proxy-service +sunbird_environment: "{{env}}" # +content-service learner +sunbird_installation: "{{env}}" # +keycloak +sunbird_instance: "{{env}}" +env_short_name: "{{env}}" +sunbird_env: "{{env}}" #Ekstep environment to connect to. Use `qa` for non-prod deployments, and `prod` for prod deployment. +sunbird_app_name: "{{env}}" +azure_account_key: "{{core_vault_sunbird_azure_storage_key}}" + +# Keycloak +keycloak_api_management_user_password: "{{core_vault_keycloak_api_management_user_password}}" +keycloak_api_management_user_first_name: "admin" +keycloak_api_management_user_last_name: "admin" + +## Learner service +sunbird_url_shortner_access_token: "{{vault_core_url_shortner_access_token}}" + +sunbird_keycloak_required_action_link_expiration_seconds: 2592000 + +sunbird_es_port: 9300 +mail_server_port: 587 +upstream_url: "{{azure_account_name}}.blob.core.windows.net/{{sunbird_content_azure_storage_container}}" +## Mailing list +# !! Override for specific alert groups; Default will be alerts_mailing_list +monitor_alerts_slack_channel: +app_alerts_mailing_list: "" +devops_alerts_mailing_list: "" +site_alerts_mailing_list: "" +keycloak_alerts_mailing_list: "" +api_manager_alerts_mailing_list: "" + +# Learner +sunbird_user_profile_field_default_visibility: private + +# Player +sunbird_external_content_whitelisted_domains: "" +sunbird_portal_user_upload_ref_link: http://www.sunbird.org/features-documentation/register_user + +# Content +content_service_whitelisted_channels: "" +content_service_blacklisted_channels: "" + +# Badger +badger_file_storage: storages.backends.azure_storage.AzureStorage +badger_admin_email: + +## Below passwords are used by DB install scripts when creating databases. Please use strong passwords. +sunbird_pg_user: "{{core_vault_postgres_username}}" +application_postgres_user: "{{core_vault_postgres_username}}" +application_postgres_password: "{{core_vault_postgres_password}}" +keycloak_postgres_user: "{{core_vault_postgres_username}}" +keycloak_postgres_password: "{{core_vault_postgres_password}}" +badger_postgres_password: "{{core_vault_postgres_password}}" +kong_postgres_user: "{{core_vault_postgres_username}}" +kong_postgres_password: "{{core_vault_postgres_password}}" +enc_postgres_user: "{{core_vault_postgres_username}}" +analytics_postgres_user: "{{core_vault_postgres_username}}" +badger_postgres_user: "{{core_vault_postgres_username}}" +postgres_password: "{{ core_vault_postgres_password }}" #Password for Kong (API Manager) database. +backup_storage_account: "{{core_vault_sunbird_azure_storage_account}}" +backup_storage_key: "{{core_vault_sunbird_azure_storage_key}}" +sunbird_account_name: "{{core_vault_sunbird_azure_storage_account}}" +sunbird_account_key: "{{core_vault_sunbird_azure_storage_key}}" +ansible_vault_password: "{{ core_vault_ansible_vault_password }}" +sunbird_account_name: "{{core_vault_sunbird_azure_storage_account}}" +sunbird_azure_account_name: "{{core_vault_sunbird_azure_storage_account}}" +sunbird_google_keycloak_secret: "{{core_vault_google_keycloak_secret}}" +jenkins_admin_username: "{{core_vault_jenkins_admin_username}}" +jenkins_admin_password: "{{core_vault_jenkins_admin_password}}" +vault_badging_authorization_key: "{{core_vault_badging_authorization_key}}" +vault_postgres_exporter_password: "{{core_vault_postgres_exporter_password}}" + +## Postgres configuration +swarm_address_space: "{{groups['swarm-manager'][0].split(\".\")[0]}}.0.0.0/8" #Application server address space (e.g. 10.3.0.0/24), also the agentpublicSubnet if using Azure scripts provided +keycloak_address_space: "{{groups['keycloak'][0].split(\".\")[0]}}.0.0.0/8" +postgres_address_space: "{{groups['postgresql-master'][0].split(\".\")[0]}}.0.0.0/8" + +## Cassandra configuration +cassandra_server_private_ip: "{{groups['cassandra'][0]}}" #Private IP of cassandra server +keystore_password: "{{core_vault_keystore_password}}" #Password to use for encrypting cassandra keystore. Use a strong password. +truststore_password: "{{core_vault_truststore_password}}" #Password to use for encrypting cassandra truststore. Use a strong password. + +# APPLICATION CONFIGURATION +kong_host: api-manager_kong + +## DB address +application_postgres_host: "{{groups['postgres'][0]}}" #Private IP of Postgres server +keycloak_postgres_host: "{{groups['postgres'][0]}}" #Private IP of Postgres server +kong_postgres_host: "{{groups['postgres'][0]}}" #Private IP of Postgres server +sunbird_cassandra_host: "{{groups['cassandra'][0]}}" #Private IP of Cassandra server +sunbird_es_host: "{{groups['es']| join(',')}}" + +## Application server configurations +sunbird_analytics_api_base_url: "http://{{analyticsapi_ip}}:9000" +sunbird_search_service_api_base_url: "http://{{searchservice_ip}}:9000" +sunbird_mail_server_host: "{{ mail_server_host }}" #SMTP server IP. Could be ignored if not mails are to be sent. +sunbird_mail_server_port: "{{ mail_server_port }}" #SMTP port. Could be ignored if not mails are to be sent. +sunbird_mail_server_username: "{{ mail_server_username }}" #SMTP username. Could be ignored if not mails are to be sent. +sunbird_mail_server_password: "{{ core_vault_mail_server_password }}" #SMTP server pasword. Could be ignored if not mails are to be sent. + +## Keycloak (auth server) login details +sunbird_sso_username: "{{ core_vault_sunbird_sso_username }}" +sunbird_sso_password: "{{ core_vault_sunbird_sso_password }}" +keycloak_admin_initial_password: "{{ core_vault_keyclaok_deployer_sudo_pass }}" +keycloak_build_src: "keycloak_build" +keycloak_ver: "keycloak-3.2.0.Final" +keycloak_sms_provider_build: "keycloak-email-phone-autthenticator-1.0-SNAPSHOT.jar" +keycloak_sms_provider_templates_src: "templates.tar.gz" +keycloak_sms_provider_templates_dest: "/opt/keycloak/themes/sunbird/login" +keycloak_ekstep_sunbird_login_theme_file: "login.tar.gz" +keycloak_ekstep_sunbird_login_theme_dest: "/opt/keycloak/themes/sunbird/login" +keycloak_postgresql: "postgresql-9.4.1212.jar" +sunbird_auth_version: 1.0v + + +## Content Repo configuration +sunbird_api_auth_token: "{{ core_vault_sunbird_api_auth_token }}" #Authorization key (JWT) to access Sunbird APIs. This will be in the output of deploy-apis.sh script, extracting it out is documented in the deployment wiki. +sunbird_ekstep_api_key: "{{ core_vault_sunbird_ekstep_api_key }}" #Authorization key (JWT) to access Ekstep APIs. Steps to generate this are documented on {{proto}}://github.com/project-sunbird/sunbird-commons/wiki/Obtaining-API-token-for-accessing-ekstep-APIs +sunbird_trampoline_secret: "{{ core_vault_sunbird_trampoline_secret }}" + +# ADVANCED CONFIGURATIONS + +cassandra_listen_address: "{{ cassandra_server_private_ip }}" +cassandra_seeds: "{{ cassandra_server_private_ip }}" +cassandra_broadcast_rpc_address: "{{ cassandra_server_private_ip }}" +cassandra_broadcast_address: "{{ cassandra_server_private_ip }}" +cassandra_listen_interface: '' +cassandra_log_dir: '/var/log/cassandra' +cassandra_root_dir: '/etc/cassandra' +cassandra_version: '3.9' +cassandra_port: 9042 +cassandra_rpc_address: 0.0.0.0 +cassandra_restore_dir: /home/deployer/ +cassandra_backup_azure_container_name: cassandra-backup +cassandra_backup_azure_storage_account_name: "{{ core_vault_sunbird_azure_storage_account }}" +cassandra_backup_azure_storage_access_key: "{{backup_storage_key}}" +cassandra_backup_dir: /data/cassandra/backup + + +keycloak_auth_server_url: "{{proto}}://{{ proxy_server_name }}/auth" +keycloak_realm: sunbird +sunbird_content_player_url: "http://api-manager_kong:8000/" +sunbird_learner_player_url: "http://api-manager_kong:8000/" +sunbird_sso_client_id: admin-cli +sunbird_portal_realm: sunbird +sunbird_portal_auth_server_client: portal +sunbird_trampoline_client_id: trampoline +sunbird_appid: "{{env}}.sunbird.portal" +sunbird_echo_api_url: "{{proto}}://{{ proxy_server_name }}/api/echo/" +sunbird_pg_db: quartz +sunbird_pg_host: "{{ application_postgres_host }}" +sunbird_pg_port: 5432 +sunbird_pg_password: "{{ core_vault_postgres_password }}" +sunbird_account_key: "{{ core_vault_sunbird_azure_storage_key }}" +sunbird_sunbird_quartz_mode: cluster +sunbird_encryption_mode: local +sunbird_cassandra_urls: "{{ cassandra_server_private_ip }}:{{ cassandra_port }}" +sunbird_session_store_type: cassandra +sunbird_keycloak_client_id: 'portal' +sunbird_keycloak_public: true +sunbird_cache_store: "memory" +sunbird_cache_ttl: "{{config_cache_ttl}}" +sunbird_portal_title_name: portal +sunbird_web_url: "{{proto}}://{{ proxy_server_name }}" +sunbird_sso_publickey: "{{core_vault_sunbird_sso_publickey}}" +sunbird_azure_storage_account: "{{core_vault_sunbird_azure_storage_account}}" +sunbird_azure_storage_key: "{{core_vault_sunbird_azure_storage_key}}" +sunbird_app_url: +sunbird_fcm_account_key: "{{core_vault_sunbird_fcm_account_key}}" +sunbird_env_logo_url: "{{proto}}://{{proxy_server_name}}/common/images/sunbird_logo.png" +sunbird_msg_91_auth: "{{core_vault_msg91_auth_key}}" +sunbird_telemetry_pdata_id: "{{env}}.sunbird.learning.service" +sunbird_http_orgin: "{{proto}}://{{ proxy_server_name }}/badging" +sunbird_encryption_key: "{{ core_vault_sunbird_encryption_key }}" +#player_tenant_dir: +sunbird_dataservice_url: "{{proto}}://{{ proxy_server_name }}/api/" +application_postgres_database: quartz +keycloak_postgres_database: keycloak +keyclaok_deployer_sudo_pass: "{{core_vault_keyclaok_deployer_sudo_pass}}" +keycloak_password: "{{core_vault_keycloak_password}}" +config_cache_ttl: 600 + +#Content Service Vars +sunbird_content_repo_api_base_url: "http://{{learningservice_ip}}:8080/learning-service" +sunbird_content_repo_api_key: "{{ core_vault_sunbird_ekstep_api_key }}" +sunbird_search_service_api_key: "{{ core_vault_sunbird_ekstep_api_key }}" +sunbird_dial_repo_api_base_url: "{{sunbird_ekstep_api_base_url}}" +sunbird_dial_repo_api_key: "{{ core_vault_sunbird_ekstep_api_key }}" +sunbird_plugin_repo_api_base_url: "{{sunbird_ekstep_api_base_url}}" +sunbird_plugin_repo_api_key: "{{ ekstep_api_key }}" +sunbird_data_service_api_base_url: "{{sunbird_ekstep_api_base_url}}" +sunbird_data_service_api_key: "{{ core_vault_sunbird_ekstep_api_key }}" + + + +## Cassandra download URI +cassandra_repo: 'deb http://www.apache.org/dist/cassandra/debian 39x main' +cassandra_repo_key: 'https://www.apache.org/dist/cassandra/KEYS' + +#API Manager +kong_postgres_port: 5432 +kong_postgres_database: api_manager_dev +es_curl_host: "{{groups['es'][0]}}" + +## Logging details +syslog: + host: "{{groups['swarm-manager']}}" + port: 51415 + +jenkins_replicas: 2 + +## PostgreSQL config +postgres_replication_user_name: "{{ core_vault_postgres_username }}" +postgres_password: "{{ core_vault_postgres_password }}" + + +postgresql_hba_entries: + - { type: local, database: all, user: postgres, auth_method: peer } + - { type: local, database: all, user: all, auth_method: peer } + - { type: host, database: all, user: all, address: '127.0.0.1/32', auth_method: md5 } + - { type: host, database: all, user: all, address: '::1/128', auth_method: md5 } + - { type: host, database: all, user: "{{ postgres_exporter_user }}", address: '{{ swarm_address_space }}', auth_method: md5 } + - { type: host, database: replication, user: "{{ postgres_replication_user_name }}", address: '{{ postgres_address_space }}', auth_method: md5 } + - { type: host, database: all, user: all, address: '{{ swarm_address_space }}', auth_method: md5 } + - { type: host, database: all, user: all, address: '{{ keycloak_address_space }}', auth_method: md5 } + +docker_hub_password: "{{ core_vault_docker_hub_password }}" +jenkins_slave_jenkins_username: "{{ core_vault_jenkins_slave_jenkins_username }}" +jenkins_slave_jenkins_password: "{{ core_vault_jenkins_slave_jenkins_password }}" +ops_private_key: "{{ core_vault_ops_private_key }}" +deployer_ssh_key: "{{ core_vault_deployer_ssh_key }}" +proxy_prometheus_admin_creds: "{{ core_vault_proxy_prometheus_admin_creds }}" +vault_docker_registry_url: "{{core_vault_docker_registry_url}}" +vault_docker_registry_user: "{{core_vault_docker_registry_user}}" +vault_docker_registry_password: "{{core_vault_docker_registry_password}}" + +# ADDITIONAL CONFIGURATION +curl_host: "{{proxy_server_name}}" +prometheus_data_dir: /var/dockerdata/prometheus/data + +logger_es_host: "{{ groups['log-es'][0] }}" +logger_es_port: 9200 +#kibana_image: kibana:5.4.3 + +kibana_oauth_redirect_url: "{{proto}}://{{proxy_server_name}}/oauth2/callback" +keycloak: True + +api__host: "{{proxy_server_name}}" + +# New variable +sunbird_enable_signup: 'true' +sunbird_portal_base_url: "{{proto}}://{{proxy_server_name}}" + +monitor_es_host: "{{ groups['es'][0] }}" +alertmanager_host: "{{ groups['swarm-agent-for-alertmanager'][0] }}" +prometheus_host: "{{ groups['swarm-agent-for-prometheus'][0] }}" + +swarm_load_balancer: "{{swarm_agent_load_balancer}}" +filebeat_logtsash_host: "{{ swarm_load_balancer }}" +expected_minimum_logs_per_minute: 30 +proxy_prometheus: true +enable_scraping_docker_metrics: false +postgres_exporter_postgres_port: 5432 +postgres_exporter_user: postgres_exporter +sunbird_cs_base_url: "{{proto}}://{{proxy_server_name}}/api" +kong_admin_api_url: http://localhost:8001 +#kong_admin_api_url: manager + +postgresql_backup_azure_storage_account_name: "{{ core_vault_sunbird_azure_storage_account }}" +postgresql_backup_azure_storage_access_key: "{{ backup_storage_key }}" +postgresql_restore_azure_storage_account_name: "{{ core_vault_sunbird_azure_storage_account }}" +postgresql_restore_azure_storage_access_key: "{{ backup_storage_key }}" + +grafana_url: "{{proto}}://{{proxy_server_name}}/grafana" +grafana_editor_username: editor + +monitor_alerts_mail_server_host: "{{ mail_server_host }}" +monitor_alerts_mail_server_port: "{{ mail_server_port }}" +monitor_alerts_mail_server_username: "{{ mail_server_username }}" +monitor_alerts_mail_server_password: "{{ core_vault_mail_server_password }}" + +#badger +badger_admin_password: "{{core_vault_badger_admin_password}}" +badger_postgres_database: badger +badger_host: "{{ groups['postgresql-master'][0]}}" +badger_container: badgr +sunbird_http_orgin: "{{proto}}://{{proxy_server_name}}/badging" + +#enc-service +enc_postgres_database: encryption + +#analytics-service +analytics_postgres_database: analytics + + +#kafka vars +zk_hosts: "127.0.0.1:2181" +kafka_conf_dir: /etc/kafka +kafka_data_dir: /var/kafka +kafka_group: kafka +kafka_user: kafka +kafka_log_dir: /var/log/kafka +kafka_upstart_conf: /etc/init/kafka.conf +kafka_systemd_service: /etc/systemd/system/kafka.service +zookeeper_systemd_service: /etc/systemd/system/zookeeper.service +kafka_auto_create_topics: "false" +monasca_log_level: ERROR +delete_topic_enable: "true" +zk_port: 2181 + +kafka_broker_host: "{{groups['kafka']|join(',')}}" +zookeeper_quorum: "{{groups['kafka']|join(':2182,')}}:2181" +sunbird_account_key: "{{core_vault_sunbird_azure_storage_key}}" +sunbird_telemetry_kafka_topic: "{{env}}.telemetry.ingestion" +sunbird_data_pipeline_kafka_topic: "{{env}}.telemetry.ingest" +telemetry_proxy_url: "{{sunbird_ekstep_api_base_url}}/data/v3/telemetry" +sunbird_telemetry_request_max_count: 100 +sunbird_telemetry_api: "{{sunbird_ekstep_api_base_url}}/data/v3/telemetry" + +sunbird_portal_cdn_url: "" +sunbird_tenant_cdn_url: "" + +# sunbird_cdn_url +player_cdn_account_key: "{{core_vault_sunbird_azure_storage_key}}" +player_cdn_container: player +player_cdn_account: "{{ core_vault_sunbird_azure_storage_account }}" + + +#Additional Variables +sunbird_user_bulk_upload_size: 1001 + +sunbird_open_saber_bridge_enable: 'false' + +# --- Content service specific ENV vars --- # +sunbird_content_service_enable_logging: 'true' +sunbird_language_service_api_key: "{{core_vault_sunbird_ekstep_api_key}}" +sunbird_language_service_api_base_url: '{{sunbird_ekstep_api_base_url}}/language' + +kong_version: 1.5.0-gold + +# Data pipeline vars +learning_analytics_service_url: 'http://{{learningservice_ip}}:9000' +ep_es_host: "{{ groups['telemetry-search-cluster'][0] }}" #For kibana pipeline-dashboard + + +#encryption Service +encryption_service_user: encryption +encryption_db_name: encryption +encryption_db_dialect: postgres +sunbird_allowed_login: +sunbird_course_batch_notification_enabled: 'true' +sunbird_device_register_api: "{{api_proxy_name}}/v3/device/register/" +sunbird_course_batch_notification_signature: sunbird + +sunbird_authorization: "{{core_vault_sunbird_api_auth_token}}" +sunbird_lms_base_url: "{{proto}}://{{proxy_server_name}}/api" +sunbird_content_service_local_base_url: http://content-service:5000 +sunbird_kafka_host: "{{groups['kafka']|join(':9092,')}}:9092" +sunbird_qrimage_topic: "{{env}}.qrimage.request" + + +sunbird_azure_report_container_name: reports +sunbird_azure_account_key: "{{core_vault_sunbird_azure_storage_key}}" + +sunbird_google_captcha_site_key: "{{core_vault_sunbird_google_captcha_site_key_portal}}" +sunbird_google_oauth_clientId: "{{core_vault_sunbird_google_oauth_clientId_portal}}" +sunbird_google_oauth_clientSecret: "{{core_vault_sunbird_google_oauth_clientSecret_portal}}" +sunbird_google_keycloak_client_id: "google-auth" +sunbird_google_keycloak_secret: "{{core_vault_sunbird_google_keycloak_secret}}" +google_client_id: "{{core_vault_kibana_google_client_id}}" +google_client_secret: "{{core_vault_kibana_google_client_secret}}" +cookie_secret: "{{core_vault_kibana_cookie_secret}}" +grafana_admin_password: "{{core_vault_grafana_admin_password}}" +grafana_editor_password: "{{core_vault_grafana_editor_password}}" +grafana_dashboards_git_repo_url_with_credentails: "{{core_vault_grafana_dashboards_git_repo_url_with_credentails}}" +monitor_alerts_slack_url: "{{core_vault_monitor_alerts_slack_url}}" +kong__test_jwt: "{{core_vault_kong__test_jwt}}" + +# postgresql_users should only be created in master and replicated to slave +postgresql_users: + - name: "{{kong_postgres_user}}" + password: "{{postgres_password}}" + db: "{{kong_postgres_database}}" + priv: "ALL" + - name: "{{keycloak_postgres_user}}" + password: "{{postgres_password}}" + db: "{{keycloak_postgres_database}}" + priv: "ALL" + - name: "{{application_postgres_user}}" + password: "{{postgres_password}}" + db: "{{application_postgres_database}}" + priv: "ALL" + - name: "{{badger_postgres_user}}" + password: "{{postgres_password}}" + db: "{{badger_postgres_database}}" + priv: "ALL" + + +postgresql_databases: + - name: "{{kong_postgres_database}}" + - name: "{{keycloak_postgres_database}}" + - name: "{{application_postgres_database}}" + - name: "{{badger_postgres_database}}" + - name: "{{enc_postgres_database}}" + - name: "{{analytics_postgres_database}}" + +#######App ES + +app_es_etc_cluster_name: "{{env}}" +app_es_etc_discovery_zen_minimum_master_nodes: "{{groups['es']| length | int}}" +app_es_snapshot_host: "{{ groups['es'][0] }}" +app_es_restore_host: "{{ groups['es'][0] }}" +app_es_snapshot_base_path: application + + +#######Log Es +log_es_etc_cluster_name: "{{env}}-log" +log_es_snapshot_host: "{{ groups['log-es'][0] }}" +log_es_restore_host: "{{ groups['log-es'][0] }}" +log_snapshot_base_path: logger +log_es_host: "{{ groups['log-es'][0] }}" + +####### Advanced Config ########## +keycloak_tar_path: keycloak.tar.gz +keycloak_theme_path: artifacts/sunbird +sunbird_telemetry_packet_size: 200 +sunbird_telemetry_sync_batch_size: 200 +content_service_whitelisted_channels: '' +content_service_blacklisted_channels: '' +content_service_channel_refresh_cron: '*/5 * * * *' +content_service_whitelisted_framework: '' +content_service_blacklisted_framework: '' +content_service_blacklisted_contenttype: '' +content_service_blacklisted_resourcetype: '' +content_service_whitelisted_resourcetype: '' +content_service_whitelisted_mimetype: '' +content_service_blacklisted_mimetype: '' +prometheus_storage_retention_time: 72h0m0s +kafka_jvm_opts: "-Xmx1G -Xms1G" +kafka_log_retention_hours: 2400 +sunbird_cloud_storage_urls: 'https://s3.ap-south-1.amazonaws.com/ekstep-public-dev/,https://ekstep-public-dev.s3-ap-south-1.amazonaws.com/,https://{{azure_account_name}}.blob.core.windows.net/{{sunbird_content_azure_storage_container}}' +sunbird_email_max_recipients_limit: 100 +sunbird_cassandra_consistency_level: one +sunbird_cassandra_replication_strategy: '{"class":"SimpleStrategy","replication_factor":"1"}' +medium_rate_limit_per_hour: 5000 +sunbird_lock_expiry_time: 1800 +sunbird_lock_expiry_time: 3600 +app_es_heap_size: 1500m +log_es_heap_size: 1500m +sunbird_otp_expiration: 1800 +sunbird_otp_length: 6 +sunbird_help_link_visibility: FALSE + + + +#Container Limits +proxy_replicas: 1 +proxy_reservation_memory: 64M +proxy_limit_memory: 128M +kong_replicas: 1 +kong_reservation_memory: 64M +kong_limit_memory: 256M +echo_service_replicas: 1 +echo_service_reservation_memory: 8M +echo_service_limit_memory: 16M +adminutil_replicas: 1 +adminutil_reservation_memory: 300M +adminutil_limit_memory: 300M +actor_replicas: 1 +actor_reservation_memory: 500M +actor_limit_memory: 1024M +learner_limit_cpu: 1 +learner_replicas: 1 +learner_reservation_memory: 1000M +learner_limit_memory: 1000M +logger_logstash_heap_size: 512M +logger_logstash_replicas: 1 +logger_logstash_reservation_memory: 512M +logger_logstash_limit_memory: 750M +logger_kibana_reservation_memory: 750M +logger_kibana_limit_memory: 750M +logger_logspout_reservation_memory: 75M +logger_logspout_limit_memory: 75M +logger_oauth_reservation_memory: 32M +logger_oauth_limit_memory: 32M +logger_logstash_reservation_memory: 1024M +logger_logstash_limit_memory: 1024M +prometheus_reservation_memory: 1G +prometheus_limit_memory: 1G +alertmanager_reservation_memory: 100M +alertmanager_limit_memory: 100M +node_exporter_reservation_memory: 16M +node_exporter_limit_memory: 32M +cadvisor_reservation_memory: 100M +cadvisor_limit_memory: 100M +elasticsearch_exporter_reservation_memory: 8M +elasticsearch_exporter_limit_memory: 24M +postgres_exporter_reservation_memory: 16M +postgres_exporter_limit_memory: 32M +statsd_exporter_reservation_memory: 8M +statsd_exporter_limit_memory: 16M +blackbox_exporter_reservation_memory: 16M +blackbox_exporter_limit_memory: 32M +jsonpath_exporter_reservation_memory: 32M +jsonpath_exporter_limit_memory: 64M +azure_blob_exporter_reservation_memory: 16M +azure_blob_exporter_limit_memory: 64M +grafana_reservation_memory: 100M +grafana_limit_memory: 100M +monitor_logstash_replicas: 1 +monitor_logstash_heap_size: 256m +monitor_logstash_reservation_memory: 256M +monitor_logstash_limit_memory: 350M +monitor_logspout_reservation_memory: 150M +monitor_logspout_limit_memory: 150M +player_replicas: 1 +player_reservation_memory: 256M +player_limit_memory: 512M +content_replicas: 1 +content_reservation_memory: 1000M +content_limit_memory: 1000M +learner_replicas: 1 +learner_reservation_memory: 1000M +learner_limit_memory: 1000M +learner_reservation_cpu: 1 +badger_replicas: 1 +badger_reservation_memory: 500MB +badger_limit_memory: 500MB + + +# not required +sunbird_image_storage_url: "" +vault_auth_key: "{{core_vault_auth_key}}" +vault_sender: "{{core_vault_sender}}" +vault_country: "{{core_vault_country}}" +vault_route: "{{core_vault_route}}" +vault_sms_method_type: "{{core_vault_sms_method_type}}" + +# telemetry +default_channel_id: "in.ekstep" + +## +config_refresh_interval: 10 +config_service_enabled: false + +trampoline_secret: "{{core_vault_trampoline_secret}}" +es_api_host: "{{inventory_hostname}}" +sunbird_linked_content_base_url: diff --git a/ansible/inventory/env/group_vars/env.yml b/ansible/inventory/env/group_vars/env.yml deleted file mode 100644 index 375ae422e0..0000000000 --- a/ansible/inventory/env/group_vars/env.yml +++ /dev/null @@ -1,557 +0,0 @@ -### Not using -sunbird_content_service_producer_id: "{{env}}.sunbird.content-service" - -###################### Core ############################ - -# ENVIRONMENT CONFIGURATION -proxy_server_name: "{{domain_name}}" -api_proxy_name: "{{proto}}://api.{{proxy_server_name}}" # Domain name on which device register and other api's will be accessed -proxy_site_key: "{{ core_vault_proxy_site_key }}" #SSL certificate's site.key file contents. More details in this wiki: {{proto}}://github.com/project-sunbird/sunbird-commons/wiki/Updating-SSL-certificates-in-Sunbird-Proxy-service -proxy_site_crt: "{{ core_vault_proxy_site_crt }}" #SSL certificate's site.crt file contents. More details in this wiki: {{proto}}://github.com/project-sunbird/sunbird-commons/wiki/Updating-SSL-certificates-in-Sunbird-Proxy-service -sunbird_environment: "{{env}}" # +content-service learner -sunbird_installation: "{{env}}" # +keycloak -sunbird_instance: "{{env}}" -env_short_name: "{{env}}" -sunbird_env: "{{env}}" #Ekstep environment to connect to. Use `qa` for non-prod deployments, and `prod` for prod deployment. -sunbird_app_name: "{{env}}" -azure_account_key: "{{core_vault_sunbird_azure_storage_key}}" - -# Keycloak -keycloak_api_management_user_password: "{{core_vault_keycloak_api_management_user_password}}" -keycloak_api_management_user_first_name: "admin" -keycloak_api_management_user_last_name: "admin" - -## Learner service -sunbird_url_shortner_access_token: "{{vault_core_url_shortner_access_token}}" - -sunbird_keycloak_required_action_link_expiration_seconds: 2592000 - -sunbird_es_port: 9300 -mail_server_port: 587 -upstream_url: "{{azure_account_name}}.blob.core.windows.net/{{sunbird_content_azure_storage_container}}" -## Mailing list -# !! Override for specific alert groups; Default will be alerts_mailing_list -monitor_alerts_slack_channel: -app_alerts_mailing_list: "" -devops_alerts_mailing_list: "" -site_alerts_mailing_list: "" -keycloak_alerts_mailing_list: "" -api_manager_alerts_mailing_list: "" - -# Learner -sunbird_user_profile_field_default_visibility: private - -# Player -sunbird_external_content_whitelisted_domains: "" -sunbird_portal_user_upload_ref_link: http://www.sunbird.org/features-documentation/register_user - -# Content -content_service_whitelisted_channels: "" -content_service_blacklisted_channels: "" - -# Badger -badger_file_storage: storages.backends.azure_storage.AzureStorage -badger_admin_email: - -## Below passwords are used by DB install scripts when creating databases. Please use strong passwords. -sunbird_pg_user: "{{core_vault_postgres_username}}" -application_postgres_user: "{{core_vault_postgres_username}}" -application_postgres_password: "{{core_vault_postgres_password}}" -keycloak_postgres_user: "{{core_vault_postgres_username}}" -keycloak_postgres_password: "{{core_vault_postgres_password}}" -badger_postgres_password: "{{core_vault_postgres_password}}" -kong_postgres_user: "{{core_vault_postgres_username}}" -kong_postgres_password: "{{core_vault_postgres_password}}" -enc_postgres_user: "{{core_vault_postgres_username}}" -analytics_postgres_user: "{{core_vault_postgres_username}}" -badger_postgres_user: "{{core_vault_postgres_username}}" -postgres_password: "{{ core_vault_postgres_password }}" #Password for Kong (API Manager) database. -backup_storage_account: "{{core_vault_sunbird_azure_storage_account}}" -backup_storage_key: "{{core_vault_sunbird_azure_storage_key}}" -sunbird_account_name: "{{core_vault_sunbird_azure_storage_account}}" -sunbird_account_key: "{{core_vault_sunbird_azure_storage_key}}" -ansible_vault_password: "{{ core_vault_ansible_vault_password }}" -sunbird_account_name: "{{core_vault_sunbird_azure_storage_account}}" -sunbird_azure_account_name: "{{core_vault_sunbird_azure_storage_account}}" -sunbird_google_keycloak_secret: "{{core_vault_google_keycloak_secret}}" -jenkins_admin_username: "{{core_vault_jenkins_admin_username}}" -jenkins_admin_password: "{{core_vault_jenkins_admin_password}}" -vault_badging_authorization_key: "{{core_vault_badging_authorization_key}}" -vault_postgres_exporter_password: "{{core_vault_postgres_exporter_password}}" - -## Postgres configuration -swarm_address_space: "{{groups['swarm-manager'][0].split(\".\")[0]}}.0.0.0/8" #Application server address space (e.g. 10.3.0.0/24), also the agentpublicSubnet if using Azure scripts provided -keycloak_address_space: "{{groups['keycloak'][0].split(\".\")[0]}}.0.0.0/8" -postgres_address_space: "{{groups['postgresql-master'][0].split(\".\")[0]}}.0.0.0/8" - -## Cassandra configuration -cassandra_server_private_ip: "{{groups['cassandra'][0]}}" #Private IP of cassandra server -keystore_password: "{{core_vault_keystore_password}}" #Password to use for encrypting cassandra keystore. Use a strong password. -truststore_password: "{{core_vault_truststore_password}}" #Password to use for encrypting cassandra truststore. Use a strong password. - -# APPLICATION CONFIGURATION -kong_host: api-manager_kong - -## DB address -application_postgres_host: "{{groups['postgres'][0]}}" #Private IP of Postgres server -keycloak_postgres_host: "{{groups['postgres'][0]}}" #Private IP of Postgres server -kong_postgres_host: "{{groups['postgres'][0]}}" #Private IP of Postgres server -sunbird_cassandra_host: "{{groups['cassandra'][0]}}" #Private IP of Cassandra server -sunbird_es_host: "{{groups['es']| join(',')}}" - -## Application server configurations -sunbird_analytics_api_base_url: "http://{{analyticsapi_ip}}:9000" -sunbird_search_service_api_base_url: "http://{{searchservice_ip}}:9000" -sunbird_mail_server_host: "{{ mail_server_host }}" #SMTP server IP. Could be ignored if not mails are to be sent. -sunbird_mail_server_port: "{{ mail_server_port }}" #SMTP port. Could be ignored if not mails are to be sent. -sunbird_mail_server_username: "{{ mail_server_username }}" #SMTP username. Could be ignored if not mails are to be sent. -sunbird_mail_server_password: "{{ core_vault_mail_server_password }}" #SMTP server pasword. Could be ignored if not mails are to be sent. - -## Keycloak (auth server) login details -sunbird_sso_username: "{{ core_vault_sunbird_sso_username }}" -sunbird_sso_password: "{{ core_vault_sunbird_sso_password }}" -keycloak_admin_initial_password: "{{ core_vault_keyclaok_deployer_sudo_pass }}" -keycloak_build_src: "keycloak_build" -keycloak_ver: "keycloak-3.2.0.Final" -keycloak_sms_provider_build: "keycloak-email-phone-autthenticator-1.0-SNAPSHOT.jar" -keycloak_sms_provider_templates_src: "templates.tar.gz" -keycloak_sms_provider_templates_dest: "/opt/keycloak/themes/sunbird/login" -keycloak_ekstep_sunbird_login_theme_file: "login.tar.gz" -keycloak_ekstep_sunbird_login_theme_dest: "/opt/keycloak/themes/sunbird/login" -keycloak_postgresql: "postgresql-9.4.1212.jar" -sunbird_auth_version: 1.0v - - -## Content Repo configuration -sunbird_api_auth_token: "{{ core_vault_sunbird_api_auth_token }}" #Authorization key (JWT) to access Sunbird APIs. This will be in the output of deploy-apis.sh script, extracting it out is documented in the deployment wiki. -sunbird_ekstep_api_key: "{{ core_vault_sunbird_ekstep_api_key }}" #Authorization key (JWT) to access Ekstep APIs. Steps to generate this are documented on {{proto}}://github.com/project-sunbird/sunbird-commons/wiki/Obtaining-API-token-for-accessing-ekstep-APIs -sunbird_trampoline_secret: "{{ core_vault_sunbird_trampoline_secret }}" - -# ADVANCED CONFIGURATIONS - -cassandra_listen_address: "{{ cassandra_server_private_ip }}" -cassandra_seeds: "{{ cassandra_server_private_ip }}" -cassandra_broadcast_rpc_address: "{{ cassandra_server_private_ip }}" -cassandra_broadcast_address: "{{ cassandra_server_private_ip }}" -cassandra_listen_interface: '' -cassandra_log_dir: '/var/log/cassandra' -cassandra_root_dir: '/etc/cassandra' -cassandra_version: '3.9' -cassandra_port: 9042 -cassandra_rpc_address: 0.0.0.0 -cassandra_restore_dir: /home/deployer/ -cassandra_backup_azure_container_name: cassandra-backup -cassandra_backup_azure_storage_account_name: "{{ core_vault_sunbird_azure_storage_account }}" -cassandra_backup_azure_storage_access_key: "{{backup_storage_key}}" -cassandra_backup_dir: /data/cassandra/backup - - -keycloak_auth_server_url: "{{proto}}://{{ proxy_server_name }}/auth" -keycloak_realm: sunbird -sunbird_content_player_url: "http://api-manager_kong:8000/" -sunbird_learner_player_url: "http://api-manager_kong:8000/" -sunbird_sso_client_id: admin-cli -sunbird_portal_realm: sunbird -sunbird_portal_auth_server_client: portal -sunbird_trampoline_client_id: trampoline -sunbird_appid: "{{env}}.sunbird.portal" -sunbird_echo_api_url: "{{proto}}://{{ proxy_server_name }}/api/echo/" -sunbird_pg_db: quartz -sunbird_pg_host: "{{ application_postgres_host }}" -sunbird_pg_port: 5432 -sunbird_pg_password: "{{ core_vault_postgres_password }}" -sunbird_account_key: "{{ core_vault_sunbird_azure_storage_key }}" -sunbird_sunbird_quartz_mode: cluster -sunbird_encryption_mode: local -sunbird_cassandra_urls: "{{ cassandra_server_private_ip }}:{{ cassandra_port }}" -sunbird_session_store_type: cassandra -sunbird_keycloak_client_id: 'portal' -sunbird_keycloak_public: true -sunbird_cache_store: "memory" -sunbird_cache_ttl: "{{config_cache_ttl}}" -sunbird_portal_title_name: portal -sunbird_web_url: "{{proto}}://{{ proxy_server_name }}" -sunbird_sso_publickey: "{{core_vault_sunbird_sso_publickey}}" -sunbird_azure_storage_account: "{{core_vault_sunbird_azure_storage_account}}" -sunbird_azure_storage_key: "{{core_vault_sunbird_azure_storage_key}}" -sunbird_app_url: -sunbird_fcm_account_key: "{{core_vault_sunbird_fcm_account_key}}" -sunbird_env_logo_url: "{{proto}}://{{proxy_server_name}}/common/images/sunbird_logo.png" -sunbird_msg_91_auth: "{{core_vault_msg91_auth_key}}" -sunbird_telemetry_pdata_id: "{{env}}.sunbird.learning.service" -sunbird_http_orgin: "{{proto}}://{{ proxy_server_name }}/badging" -sunbird_encryption_key: "{{ core_vault_sunbird_encryption_key }}" -#player_tenant_dir: -sunbird_dataservice_url: "{{proto}}://{{ proxy_server_name }}/api/" -application_postgres_database: quartz -keycloak_postgres_database: keycloak -keyclaok_deployer_sudo_pass: "{{core_vault_keyclaok_deployer_sudo_pass}}" -keycloak_password: "{{core_vault_keycloak_password}}" -config_cache_ttl: 600 - -#Content Service Vars -sunbird_content_repo_api_base_url: "http://{{learningservice_ip}}:8080/learning-service" -sunbird_content_repo_api_key: "{{ core_vault_sunbird_ekstep_api_key }}" -sunbird_search_service_api_key: "{{ core_vault_sunbird_ekstep_api_key }}" -sunbird_dial_repo_api_base_url: "{{sunbird_ekstep_api_base_url}}" -sunbird_dial_repo_api_key: "{{ core_vault_sunbird_ekstep_api_key }}" -sunbird_plugin_repo_api_base_url: "{{sunbird_ekstep_api_base_url}}" -sunbird_plugin_repo_api_key: "{{ ekstep_api_key }}" -sunbird_data_service_api_base_url: "{{sunbird_ekstep_api_base_url}}" -sunbird_data_service_api_key: "{{ core_vault_sunbird_ekstep_api_key }}" - - - -## Cassandra download URI -cassandra_repo: 'deb http://www.apache.org/dist/cassandra/debian 39x main' -cassandra_repo_key: 'https://www.apache.org/dist/cassandra/KEYS' - -#API Manager -kong_postgres_port: 5432 -kong_postgres_database: api_manager_dev -es_curl_host: "{{groups['es'][0]}}" - -## Logging details -syslog: - host: "{{groups['swarm-manager']}}" - port: 51415 - -jenkins_replicas: 2 - -## PostgreSQL config -postgres_replication_user_name: "{{ core_vault_postgres_username }}" -postgres_password: "{{ core_vault_postgres_password }}" - - -postgresql_hba_entries: - - { type: local, database: all, user: postgres, auth_method: peer } - - { type: local, database: all, user: all, auth_method: peer } - - { type: host, database: all, user: all, address: '127.0.0.1/32', auth_method: md5 } - - { type: host, database: all, user: all, address: '::1/128', auth_method: md5 } - - { type: host, database: all, user: "{{ postgres_exporter_user }}", address: '{{ swarm_address_space }}', auth_method: md5 } - - { type: host, database: replication, user: "{{ postgres_replication_user_name }}", address: '{{ postgres_address_space }}', auth_method: md5 } - - { type: host, database: all, user: all, address: '{{ swarm_address_space }}', auth_method: md5 } - - { type: host, database: all, user: all, address: '{{ keycloak_address_space }}', auth_method: md5 } - -docker_hub_password: "{{ core_vault_docker_hub_password }}" -jenkins_slave_jenkins_username: "{{ core_vault_jenkins_slave_jenkins_username }}" -jenkins_slave_jenkins_password: "{{ core_vault_jenkins_slave_jenkins_password }}" -ops_private_key: "{{ core_vault_ops_private_key }}" -deployer_ssh_key: "{{ core_vault_deployer_ssh_key }}" -proxy_prometheus_admin_creds: "{{ core_vault_proxy_prometheus_admin_creds }}" -vault_docker_registry_url: "{{core_vault_docker_registry_url}}" -vault_docker_registry_user: "{{core_vault_docker_registry_user}}" -vault_docker_registry_password: "{{core_vault_docker_registry_password}}" - -# ADDITIONAL CONFIGURATION -curl_host: "{{proxy_server_name}}" -prometheus_data_dir: /var/dockerdata/prometheus/data - -logger_es_host: "{{ groups['log-es'][0] }}" -logger_es_port: 9200 -#kibana_image: kibana:5.4.3 - -kibana_oauth_redirect_url: "{{proto}}://{{proxy_server_name}}/oauth2/callback" -keycloak: True - -api__host: "{{proxy_server_name}}" - -# New variable -sunbird_enable_signup: 'true' -sunbird_portal_base_url: "{{proto}}://{{proxy_server_name}}" - -monitor_es_host: "{{ groups['es'][0] }}" -alertmanager_host: "{{ groups['swarm-agent-for-alertmanager'][0] }}" -prometheus_host: "{{ groups['swarm-agent-for-prometheus'][0] }}" - -swarm_load_balancer: "{{swarm_agent_load_balancer}}" -filebeat_logtsash_host: "{{ swarm_load_balancer }}" -expected_minimum_logs_per_minute: 30 -proxy_prometheus: true -enable_scraping_docker_metrics: false -postgres_exporter_postgres_port: 5432 -postgres_exporter_user: postgres_exporter -sunbird_cs_base_url: "{{proto}}://{{proxy_server_name}}/api" -kong_admin_api_url: http://localhost:8001 -#kong_admin_api_url: manager - -postgresql_backup_azure_storage_account_name: "{{ core_vault_sunbird_azure_storage_account }}" -postgresql_backup_azure_storage_access_key: "{{ backup_storage_key }}" -postgresql_restore_azure_storage_account_name: "{{ core_vault_sunbird_azure_storage_account }}" -postgresql_restore_azure_storage_access_key: "{{ backup_storage_key }}" - -grafana_url: "{{proto}}://{{proxy_server_name}}/grafana" -grafana_editor_username: editor - -monitor_alerts_mail_server_host: "{{ mail_server_host }}" -monitor_alerts_mail_server_port: "{{ mail_server_port }}" -monitor_alerts_mail_server_username: "{{ mail_server_username }}" -monitor_alerts_mail_server_password: "{{ core_vault_mail_server_password }}" - -#badger -badger_admin_password: "{{core_vault_badger_admin_password}}" -badger_postgres_database: badger -badger_host: "{{ groups['postgresql-master'][0]}}" -badger_container: badgr -sunbird_http_orgin: "{{proto}}://{{proxy_server_name}}/badging" - -#enc-service -enc_postgres_database: encryption - -#analytics-service -analytics_postgres_database: analytics - - -#kafka vars -zk_hosts: "127.0.0.1:2181" -kafka_conf_dir: /etc/kafka -kafka_data_dir: /var/kafka -kafka_group: kafka -kafka_user: kafka -kafka_log_dir: /var/log/kafka -kafka_upstart_conf: /etc/init/kafka.conf -kafka_systemd_service: /etc/systemd/system/kafka.service -zookeeper_systemd_service: /etc/systemd/system/zookeeper.service -kafka_auto_create_topics: "false" -monasca_log_level: ERROR -delete_topic_enable: "true" -zk_port: 2181 - -kafka_broker_host: "{{groups['kafka']|join(',')}}" -zookeeper_quorum: "{{groups['kafka']|join(':2182,')}}:2181" -sunbird_account_key: "{{core_vault_sunbird_azure_storage_key}}" -sunbird_telemetry_kafka_topic: "{{env}}.telemetry.ingestion" -sunbird_data_pipeline_kafka_topic: "{{env}}.telemetry.ingest" -telemetry_proxy_url: "{{sunbird_ekstep_api_base_url}}/data/v3/telemetry" -sunbird_telemetry_request_max_count: 100 -sunbird_telemetry_api: "{{sunbird_ekstep_api_base_url}}/data/v3/telemetry" - -sunbird_portal_cdn_url: "" -sunbird_tenant_cdn_url: "" - -# sunbird_cdn_url -player_cdn_account_key: "{{core_vault_sunbird_azure_storage_key}}" -player_cdn_container: player -player_cdn_account: "{{ core_vault_sunbird_azure_storage_account }}" - - -#Additional Variables -sunbird_user_bulk_upload_size: 1001 - -sunbird_open_saber_bridge_enable: 'false' - -# --- Content service specific ENV vars --- # -sunbird_content_service_enable_logging: 'true' -sunbird_language_service_api_key: "{{core_vault_sunbird_ekstep_api_key}}" -sunbird_language_service_api_base_url: '{{sunbird_ekstep_api_base_url}}/language' - -kong_version: 1.5.0-gold - -# Data pipeline vars -learning_analytics_service_url: 'http://{{learningservice_ip}}:9000' -ep_es_host: "{{ groups['telemetry-search-cluster'][0] }}" #For kibana pipeline-dashboard - - -#encryption Service -encryption_service_user: encryption -encryption_db_name: encryption -encryption_db_dialect: postgres -sunbird_allowed_login: -sunbird_course_batch_notification_enabled: 'true' -sunbird_device_register_api: "{{api_proxy_name}}/v3/device/register/" -sunbird_course_batch_notification_signature: sunbird - -sunbird_authorization: "{{core_vault_sunbird_api_auth_token}}" -sunbird_lms_base_url: "{{proto}}://{{proxy_server_name}}/api" -sunbird_content_service_local_base_url: http://content-service:5000 -sunbird_kafka_host: "{{groups['kafka']|join(':9092,')}}:9092" -sunbird_qrimage_topic: "{{env}}.qrimage.request" - - -sunbird_azure_report_container_name: reports -sunbird_azure_account_key: "{{core_vault_sunbird_azure_storage_key}}" - -sunbird_google_captcha_site_key: "{{core_vault_sunbird_google_captcha_site_key_portal}}" -sunbird_google_oauth_clientId: "{{core_vault_sunbird_google_oauth_clientId_portal}}" -sunbird_google_oauth_clientSecret: "{{core_vault_sunbird_google_oauth_clientSecret_portal}}" -sunbird_google_keycloak_client_id: "google-auth" -sunbird_google_keycloak_secret: "{{core_vault_sunbird_google_keycloak_secret}}" -google_client_id: "{{core_vault_kibana_google_client_id}}" -google_client_secret: "{{core_vault_kibana_google_client_secret}}" -cookie_secret: "{{core_vault_kibana_cookie_secret}}" -grafana_admin_password: "{{core_vault_grafana_admin_password}}" -grafana_editor_password: "{{core_vault_grafana_editor_password}}" -grafana_dashboards_git_repo_url_with_credentails: "{{core_vault_grafana_dashboards_git_repo_url_with_credentails}}" -monitor_alerts_slack_url: "{{core_vault_monitor_alerts_slack_url}}" -kong__test_jwt: "{{core_vault_kong__test_jwt}}" - -# postgresql_users should only be created in master and replicated to slave -postgresql_users: - - name: "{{kong_postgres_user}}" - password: "{{postgres_password}}" - db: "{{kong_postgres_database}}" - priv: "ALL" - - name: "{{keycloak_postgres_user}}" - password: "{{postgres_password}}" - db: "{{keycloak_postgres_database}}" - priv: "ALL" - - name: "{{application_postgres_user}}" - password: "{{postgres_password}}" - db: "{{application_postgres_database}}" - priv: "ALL" - - name: "{{badger_postgres_user}}" - password: "{{postgres_password}}" - db: "{{badger_postgres_database}}" - priv: "ALL" - - -postgresql_databases: - - name: "{{kong_postgres_database}}" - - name: "{{keycloak_postgres_database}}" - - name: "{{application_postgres_database}}" - - name: "{{badger_postgres_database}}" - - name: "{{enc_postgres_database}}" - - name: "{{analytics_postgres_database}}" - -#######App ES - -app_es_etc_cluster_name: "{{env}}" -app_es_etc_discovery_zen_minimum_master_nodes: "{{groups['es']| length | int}}" -app_es_snapshot_host: "{{ groups['es'][0] }}" -app_es_restore_host: "{{ groups['es'][0] }}" -app_es_snapshot_base_path: application - - -#######Log Es -log_es_etc_cluster_name: "{{env}}-log" -log_es_snapshot_host: "{{ groups['log-es'][0] }}" -log_es_restore_host: "{{ groups['log-es'][0] }}" -log_snapshot_base_path: logger -log_es_host: "{{ groups['log-es'][0] }}" - -####### Advanced Config ########## -keycloak_tar_path: keycloak.tar.gz -keycloak_theme_path: artifacts/sunbird -sunbird_telemetry_packet_size: 200 -sunbird_telemetry_sync_batch_size: 200 -content_service_whitelisted_channels: '' -content_service_blacklisted_channels: '' -content_service_channel_refresh_cron: '*/5 * * * *' -content_service_whitelisted_framework: '' -content_service_blacklisted_framework: '' -content_service_blacklisted_contenttype: '' -content_service_blacklisted_resourcetype: '' -content_service_whitelisted_resourcetype: '' -content_service_whitelisted_mimetype: '' -content_service_blacklisted_mimetype: '' -prometheus_storage_retention_time: 72h0m0s -kafka_jvm_opts: "-Xmx1G -Xms1G" -kafka_log_retention_hours: 2400 -sunbird_cloud_storage_urls: 'https://s3.ap-south-1.amazonaws.com/ekstep-public-dev/,https://ekstep-public-dev.s3-ap-south-1.amazonaws.com/,https://{{azure_account_name}}.blob.core.windows.net/{{sunbird_content_azure_storage_container}}' -sunbird_email_max_recipients_limit: 100 -sunbird_cassandra_consistency_level: one -sunbird_cassandra_replication_strategy: '{"class":"SimpleStrategy","replication_factor":"1"}' -medium_rate_limit_per_hour: 5000 -sunbird_lock_expiry_time: 1800 -sunbird_lock_expiry_time: 3600 -app_es_heap_size: 1500m -log_es_heap_size: 1500m -sunbird_otp_expiration: 1800 -sunbird_otp_length: 6 -sunbird_help_link_visibility: FALSE - - - -#Container Limits -proxy_replicas: 1 -proxy_reservation_memory: 64M -proxy_limit_memory: 128M -kong_replicas: 1 -kong_reservation_memory: 64M -kong_limit_memory: 256M -echo_service_replicas: 1 -echo_service_reservation_memory: 8M -echo_service_limit_memory: 16M -adminutil_replicas: 1 -adminutil_reservation_memory: 300M -adminutil_limit_memory: 300M -actor_replicas: 1 -actor_reservation_memory: 500M -actor_limit_memory: 1024M -learner_limit_cpu: 1 -learner_replicas: 1 -learner_reservation_memory: 1000M -learner_limit_memory: 1000M -logger_logstash_heap_size: 512M -logger_logstash_replicas: 1 -logger_logstash_reservation_memory: 512M -logger_logstash_limit_memory: 750M -logger_kibana_reservation_memory: 750M -logger_kibana_limit_memory: 750M -logger_logspout_reservation_memory: 75M -logger_logspout_limit_memory: 75M -logger_oauth_reservation_memory: 32M -logger_oauth_limit_memory: 32M -logger_logstash_reservation_memory: 1024M -logger_logstash_limit_memory: 1024M -prometheus_reservation_memory: 1G -prometheus_limit_memory: 1G -alertmanager_reservation_memory: 100M -alertmanager_limit_memory: 100M -node_exporter_reservation_memory: 16M -node_exporter_limit_memory: 32M -cadvisor_reservation_memory: 100M -cadvisor_limit_memory: 100M -elasticsearch_exporter_reservation_memory: 8M -elasticsearch_exporter_limit_memory: 24M -postgres_exporter_reservation_memory: 16M -postgres_exporter_limit_memory: 32M -statsd_exporter_reservation_memory: 8M -statsd_exporter_limit_memory: 16M -blackbox_exporter_reservation_memory: 16M -blackbox_exporter_limit_memory: 32M -jsonpath_exporter_reservation_memory: 32M -jsonpath_exporter_limit_memory: 64M -azure_blob_exporter_reservation_memory: 16M -azure_blob_exporter_limit_memory: 64M -grafana_reservation_memory: 100M -grafana_limit_memory: 100M -monitor_logstash_replicas: 1 -monitor_logstash_heap_size: 256m -monitor_logstash_reservation_memory: 256M -monitor_logstash_limit_memory: 350M -monitor_logspout_reservation_memory: 150M -monitor_logspout_limit_memory: 150M -player_replicas: 1 -player_reservation_memory: 256M -player_limit_memory: 512M -content_replicas: 1 -content_reservation_memory: 1000M -content_limit_memory: 1000M -learner_replicas: 1 -learner_reservation_memory: 1000M -learner_limit_memory: 1000M -learner_reservation_cpu: 1 -badger_replicas: 1 -badger_reservation_memory: 500MB -badger_limit_memory: 500MB - - -# not required -sunbird_image_storage_url: "" -vault_auth_key: "{{core_vault_auth_key}}" -vault_sender: "{{core_vault_sender}}" -vault_country: "{{core_vault_country}}" -vault_route: "{{core_vault_route}}" -vault_sms_method_type: "{{core_vault_sms_method_type}}" - -# telemetry -default_channel_id: "in.ekstep" - -## -config_refresh_interval: 10 -config_service_enabled: false - -trampoline_secret: "{{core_vault_trampoline_secret}}" -es_api_host: "{{inventory_hostname}}" -sunbird_linked_content_base_url: diff --git a/ansible/inventory/env/group_vars/env.yml b/ansible/inventory/env/group_vars/env.yml new file mode 120000 index 0000000000..a9c19506c3 --- /dev/null +++ b/ansible/inventory/env/group_vars/env.yml @@ -0,0 +1 @@ +../common.yml \ No newline at end of file From a2d77fa47f7c6ea98766af04997ba9462e597f76 Mon Sep 17 00:00:00 2001 From: Rajesh Rajendran Date: Sun, 17 Feb 2019 14:23:47 +0530 Subject: [PATCH 1154/1345] Removed depricated vars --- private_repo/ansible/inventory/dev/DataPipeline/hosts | 5 ----- 1 file changed, 5 deletions(-) diff --git a/private_repo/ansible/inventory/dev/DataPipeline/hosts b/private_repo/ansible/inventory/dev/DataPipeline/hosts index 367bf77514..dd06977aab 100644 --- a/private_repo/ansible/inventory/dev/DataPipeline/hosts +++ b/private_repo/ansible/inventory/dev/DataPipeline/hosts @@ -140,11 +140,6 @@ kafka-ps 15.0.3.8 15.0.3.7 -[process-exporter:vars] -ansible_ssh_user="deployer" -ansible_ssh_private_key_file=/run/secrets/deployer_ssh_key -ansible_sudo_pass=d3pl0y3r - [all:vars] ansible_ssh_user=deployer ansible_ssh_private_key_file=/run/secrets/deployer_ssh_key From 79947e229a556209c94a4d31d2caf0d1f64234fc Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Sun, 17 Feb 2019 20:13:47 +0530 Subject: [PATCH 1155/1345] Issue #000 feat: Added ekstep_api_key, lerarner service is using that --- private_repo/ansible/inventory/dev/Core/common.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/private_repo/ansible/inventory/dev/Core/common.yml b/private_repo/ansible/inventory/dev/Core/common.yml index d9ca1a7dcf..d568411d09 100644 --- a/private_repo/ansible/inventory/dev/Core/common.yml +++ b/private_repo/ansible/inventory/dev/Core/common.yml @@ -43,6 +43,7 @@ jenkins_url: # Jenkins urls to be accessed from slave ####################### Please Check me ############################# +ekstep_api_key: # Ekstep api key for learner service to conect sunbird_ekstep_api_base_url: "https://{{ekstep_s3_env}}.ekstep.in/api" #API base URL of the Ekstep environment. Use `https://qa.ekstep.in/api` for non-prod deployments, and use `https://api.ekstep.in/` for prod deployment. # sunbird_data_service_api_base_url: "{{sunbird_ekstep_api_base_url}}" # telemetry_proxy_url: "{{sunbird_ekstep_api_base_url}}/data/v3/telemetry" From db0801bd12be91b9ebdbaa3a4ae43f946f3acfdf Mon Sep 17 00:00:00 2001 From: msknext Date: Fri, 15 Feb 2019 14:33:21 +0530 Subject: [PATCH 1156/1345] Issue DO-528: Change vault file location --- pipelines/backup/cassandra-backup/Jenkinsfile | 2 +- pipelines/backup/es-backup/Jenkinsfile | 2 +- pipelines/backup/es-restore/Jenkinsfile | 2 +- pipelines/backup/logger-es-backup/Jenkinsfile | 2 +- pipelines/backup/logger-es-restore/Jenkinsfile | 2 +- pipelines/backup/postgresql-backup/Jenkinsfile | 2 +- pipelines/backup/postgresql-restore/Jenkinsfile | 2 +- pipelines/backup/prometheus-backup/Jenkinsfile | 2 +- pipelines/deploy/adminutils/Jenkinsfile | 2 +- pipelines/deploy/am-onboard-apis/Jenkinsfile | 2 +- pipelines/deploy/am-onboard-consumers/Jenkinsfile | 2 +- pipelines/deploy/api-manager/Jenkinsfile | 2 +- pipelines/deploy/application-elasticsearch/Jenkinsfile | 2 +- pipelines/deploy/badger/Jenkinsfile | 2 +- pipelines/deploy/cassandra-deploy/Jenkinsfile | 4 ++-- pipelines/deploy/config-service/Jenkinsfile | 2 +- pipelines/deploy/content/Jenkinsfile | 2 +- pipelines/deploy/keycloak-realm/Jenkinsfile | 2 +- pipelines/deploy/keycloak/Jenkinsfile | 2 +- pipelines/deploy/learner/Jenkinsfile | 2 +- pipelines/deploy/logger-elasticsearch/Jenkinsfile | 2 +- pipelines/deploy/logger/Jenkinsfile | 2 +- pipelines/deploy/monitor/Core/Jenkinsfile | 2 +- pipelines/deploy/monitor/DataPipeline/Jenkinsfile | 2 +- pipelines/deploy/monitor/Jenkinsfile | 2 +- pipelines/deploy/monitor/KnowledgePlatform/Jenkinsfile | 2 +- pipelines/deploy/player/Jenkinsfile | 2 +- pipelines/deploy/proxy/Jenkinsfile | 2 +- pipelines/deploy/telemetry-logstash-datapipeline/Jenkinsfile | 2 +- pipelines/deploy/telemetry-logstash/Jenkinsfile | 2 +- pipelines/deploy/telemetry/Jenkinsfile | 2 +- pipelines/provision/cassandra/Jenkinsfile | 2 +- pipelines/provision/jenkins-slave/Jenkinsfile | 2 +- pipelines/provision/kafka/Jenkinsfile | 2 +- pipelines/provision/keycloak/Jenkinsfile | 2 +- pipelines/provision/log-es/Jenkinsfile | 2 +- pipelines/provision/postgres-db-update/Jenkinsfile | 2 +- pipelines/provision/postgres/Jenkinsfile | 2 +- pipelines/provision/registry/Jenkinsfile | 2 +- pipelines/provision/secor/Jenkinsfile | 2 +- pipelines/upload/artifacts/Jenkinsfile | 2 +- pipelines/upload/docker/Jenkinsfile | 2 +- 42 files changed, 43 insertions(+), 43 deletions(-) diff --git a/pipelines/backup/cassandra-backup/Jenkinsfile b/pipelines/backup/cassandra-backup/Jenkinsfile index 1ac28af413..ba85b96f68 100644 --- a/pipelines/backup/cassandra-backup/Jenkinsfile +++ b/pipelines/backup/cassandra-backup/Jenkinsfile @@ -24,7 +24,7 @@ node() { module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() ansiblePlaybook = "${currentWs}/ansible/cassandra-backup.yml" - ansibleExtraArgs = "--vault-password-file /run/secrets/vault-pass" + ansibleExtraArgs = "--vault-password-file /var/lib/jenkins/secrets/vault-pass" values.put('currentWs', currentWs) values.put('env', envDir) values.put('module', module) diff --git a/pipelines/backup/es-backup/Jenkinsfile b/pipelines/backup/es-backup/Jenkinsfile index dab0df34a1..96a1811b45 100644 --- a/pipelines/backup/es-backup/Jenkinsfile +++ b/pipelines/backup/es-backup/Jenkinsfile @@ -24,7 +24,7 @@ node() { jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() currentWs = sh(returnStdout: true, script: 'pwd').trim() ansiblePlaybook = "${currentWs}/ansible/es.yml" - ansibleExtraArgs = "--tags \"es_backup\" -v --vault-password-file /run/secrets/vault-pass" + ansibleExtraArgs = "--tags \"es_backup\" -v --vault-password-file /var/lib/jenkins/secrets/vault-pass" values.put('currentWs', currentWs) values.put('env', envDir) values.put('module', module) diff --git a/pipelines/backup/es-restore/Jenkinsfile b/pipelines/backup/es-restore/Jenkinsfile index 06a5b31f1a..a6c7c7d8b3 100644 --- a/pipelines/backup/es-restore/Jenkinsfile +++ b/pipelines/backup/es-restore/Jenkinsfile @@ -24,7 +24,7 @@ node() { module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() ansiblePlaybook = "${currentWs}/ansible/es.yml" - ansibleExtraArgs = "--tags \"es_restore\" --extra-vars \"snapshot_number=${snapshot_number}\" -v --vault-password-file /run/secrets/vault-pass" + ansibleExtraArgs = "--tags \"es_restore\" --extra-vars \"snapshot_number=${snapshot_number}\" -v --vault-password-file /var/lib/jenkins/secrets/vault-pass" values.put('currentWs', currentWs) values.put('env', envDir) values.put('module', module) diff --git a/pipelines/backup/logger-es-backup/Jenkinsfile b/pipelines/backup/logger-es-backup/Jenkinsfile index a73ccb9e49..abed6d7928 100644 --- a/pipelines/backup/logger-es-backup/Jenkinsfile +++ b/pipelines/backup/logger-es-backup/Jenkinsfile @@ -24,7 +24,7 @@ node() { module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() ansiblePlaybook = "${currentWs}/ansible/es.yml" - ansibleExtraArgs = "--tags \"log_es_backup\" -v --vault-password-file /run/secrets/vault-pass" + ansibleExtraArgs = "--tags \"log_es_backup\" -v --vault-password-file /var/lib/jenkins/secrets/vault-pass" values.put('currentWs', currentWs) values.put('env', envDir) values.put('module', module) diff --git a/pipelines/backup/logger-es-restore/Jenkinsfile b/pipelines/backup/logger-es-restore/Jenkinsfile index cdf46dc490..fd2bbaf063 100644 --- a/pipelines/backup/logger-es-restore/Jenkinsfile +++ b/pipelines/backup/logger-es-restore/Jenkinsfile @@ -24,7 +24,7 @@ node() { module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() ansiblePlaybook = "${currentWs}/ansible/es.yml" - ansibleExtraArgs = "--tags \"log_es_restore\" --extra-vars \"snapshot_number=${snapshot_number}\" -v --vault-password-file /run/secrets/vault-pass" + ansibleExtraArgs = "--tags \"log_es_restore\" --extra-vars \"snapshot_number=${snapshot_number}\" -v --vault-password-file /var/lib/jenkins/secrets/vault-pass" values.put('currentWs', currentWs) values.put('env', envDir) values.put('module', module) diff --git a/pipelines/backup/postgresql-backup/Jenkinsfile b/pipelines/backup/postgresql-backup/Jenkinsfile index 12689dbfb4..d0949fc405 100644 --- a/pipelines/backup/postgresql-backup/Jenkinsfile +++ b/pipelines/backup/postgresql-backup/Jenkinsfile @@ -20,7 +20,7 @@ node() { jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() currentWs = sh(returnStdout: true, script: 'pwd').trim() ansiblePlaybook = "${currentWs}/ansible/postgresql-backup.yml" - ansibleExtraArgs = "--vault-password-file /run/secrets/vault-pass" + ansibleExtraArgs = "--vault-password-file /var/lib/jenkins/secrets/vault-pass" values.put('currentWs', currentWs) values.put('env', envDir) values.put('module', module) diff --git a/pipelines/backup/postgresql-restore/Jenkinsfile b/pipelines/backup/postgresql-restore/Jenkinsfile index 1c4d40a1d2..53effdd0ce 100644 --- a/pipelines/backup/postgresql-restore/Jenkinsfile +++ b/pipelines/backup/postgresql-restore/Jenkinsfile @@ -22,7 +22,7 @@ node() { jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() currentWs = sh(returnStdout: true, script: 'pwd').trim() ansiblePlaybook = "${currentWs}/ansible/postgresql-restore.yml" - ansibleExtraArgs = "--vault-password-file /run/secrets/vault-pass" + ansibleExtraArgs = "--vault-password-file /var/lib/jenkins/secrets/vault-pass" values.put('currentWs', currentWs) values.put('env', envDir) values.put('module', module) diff --git a/pipelines/backup/prometheus-backup/Jenkinsfile b/pipelines/backup/prometheus-backup/Jenkinsfile index 15db16848b..216e9d4a02 100644 --- a/pipelines/backup/prometheus-backup/Jenkinsfile +++ b/pipelines/backup/prometheus-backup/Jenkinsfile @@ -20,7 +20,7 @@ node() { jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() currentWs = sh(returnStdout: true, script: 'pwd').trim() ansiblePlaybook = "${currentWs}/ansible/prometheus-backup.yml" - ansibleExtraArgs = "--vault-password-file /run/secrets/vault-pass" + ansibleExtraArgs = "--vault-password-file /var/lib/jenkins/secrets/vault-pass" values.put('currentWs', currentWs) values.put('env', envDir) values.put('module', module) diff --git a/pipelines/deploy/adminutils/Jenkinsfile b/pipelines/deploy/adminutils/Jenkinsfile index 617ab56449..f8fa89cc24 100644 --- a/pipelines/deploy/adminutils/Jenkinsfile +++ b/pipelines/deploy/adminutils/Jenkinsfile @@ -9,7 +9,7 @@ node() { values = docker_params() currentWs = sh(returnStdout: true, script: 'pwd').trim() ansiblePlaybook = "$currentWs/ansible/deploy.yml" - ansibleExtraArgs = "--tags \"stack-adminutil\" --extra-vars \"hub_org=$hub_org image_name=$values.image_name image_tag=$values.image_tag\" --vault-password-file /run/secrets/vault-pass" + ansibleExtraArgs = "--tags \"stack-adminutil\" --extra-vars \"hub_org=$hub_org image_name=$values.image_name image_tag=$values.image_tag\" --vault-password-file /var/lib/jenkins/secrets/vault-pass" values.put('currentWs', currentWs) values.put('ansiblePlaybook', ansiblePlaybook) values.put('ansibleExtraArgs', ansibleExtraArgs) diff --git a/pipelines/deploy/am-onboard-apis/Jenkinsfile b/pipelines/deploy/am-onboard-apis/Jenkinsfile index 71d34b6c3a..01d3cb099a 100644 --- a/pipelines/deploy/am-onboard-apis/Jenkinsfile +++ b/pipelines/deploy/am-onboard-apis/Jenkinsfile @@ -20,7 +20,7 @@ node() { jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() currentWs = sh(returnStdout: true, script: 'pwd').trim() ansiblePlaybook = "${currentWs}/ansible/api-manager.yml" - ansibleExtraArgs = "--tags kong-api --vault-password-file /run/secrets/vault-pass -v" + ansibleExtraArgs = "--tags kong-api --vault-password-file /var/lib/jenkins/secrets/vault-pass -v" values.put('currentWs', currentWs) values.put('env', envDir) values.put('module', module) diff --git a/pipelines/deploy/am-onboard-consumers/Jenkinsfile b/pipelines/deploy/am-onboard-consumers/Jenkinsfile index f3f1c6d6fb..07fc17c00d 100644 --- a/pipelines/deploy/am-onboard-consumers/Jenkinsfile +++ b/pipelines/deploy/am-onboard-consumers/Jenkinsfile @@ -20,7 +20,7 @@ node() { jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() currentWs = sh(returnStdout: true, script: 'pwd').trim() ansiblePlaybook = "${currentWs}/ansible/api-manager.yml" - ansibleExtraArgs = "--tags kong-consumer --vault-password-file /run/secrets/vault-pass -v" + ansibleExtraArgs = "--tags kong-consumer --vault-password-file /var/lib/jenkins/secrets/vault-pass -v" values.put('currentWs', currentWs) values.put('env', envDir) values.put('module', module) diff --git a/pipelines/deploy/api-manager/Jenkinsfile b/pipelines/deploy/api-manager/Jenkinsfile index 0d6e95d653..4501db1316 100644 --- a/pipelines/deploy/api-manager/Jenkinsfile +++ b/pipelines/deploy/api-manager/Jenkinsfile @@ -9,7 +9,7 @@ node() { values = docker_params() currentWs = sh(returnStdout: true, script: 'pwd').trim() ansiblePlaybook = "$currentWs/ansible/deploy.yml" - ansibleExtraArgs = "--tags \"stack-api-manager\" --vault-password-file /run/secrets/vault-pass" + ansibleExtraArgs = "--tags \"stack-api-manager\" --vault-password-file /var/lib/jenkins/secrets/vault-pass" values.put('currentWs', currentWs) values.put('ansiblePlaybook', ansiblePlaybook) values.put('ansibleExtraArgs', ansibleExtraArgs) diff --git a/pipelines/deploy/application-elasticsearch/Jenkinsfile b/pipelines/deploy/application-elasticsearch/Jenkinsfile index 6319434352..889990da06 100644 --- a/pipelines/deploy/application-elasticsearch/Jenkinsfile +++ b/pipelines/deploy/application-elasticsearch/Jenkinsfile @@ -20,7 +20,7 @@ node() { jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() currentWs = sh(returnStdout: true, script: 'pwd').trim() ansiblePlaybook = "${currentWs}/ansible/provision.yml" - ansibleExtraArgs = "--tags es --vault-password-file /run/secrets/vault-pass" + ansibleExtraArgs = "--tags es --vault-password-file /var/lib/jenkins/secrets/vault-pass" values.put('currentWs', currentWs) values.put('env', envDir) values.put('module', module) diff --git a/pipelines/deploy/badger/Jenkinsfile b/pipelines/deploy/badger/Jenkinsfile index 05d57ad13b..4a20c07752 100644 --- a/pipelines/deploy/badger/Jenkinsfile +++ b/pipelines/deploy/badger/Jenkinsfile @@ -10,7 +10,7 @@ node() { values = docker_params() currentWs = sh(returnStdout: true, script: 'pwd').trim() ansiblePlaybook = "$currentWs/ansible/deploy-badger.yml" - ansibleExtraArgs = "--extra-vars \"hub_org=$hub_org image_name=$values.image_name image_tag=$values.image_tag service_name=badger-service\" --vault-password-file /run/secrets/vault-pass" + ansibleExtraArgs = "--extra-vars \"hub_org=$hub_org image_name=$values.image_name image_tag=$values.image_tag service_name=badger-service\" --vault-password-file /var/lib/jenkins/secrets/vault-pass" values.put('currentWs', currentWs) values.put('ansiblePlaybook', ansiblePlaybook) values.put('ansibleExtraArgs', ansibleExtraArgs) diff --git a/pipelines/deploy/cassandra-deploy/Jenkinsfile b/pipelines/deploy/cassandra-deploy/Jenkinsfile index d978e909d0..843bd4089b 100644 --- a/pipelines/deploy/cassandra-deploy/Jenkinsfile +++ b/pipelines/deploy/cassandra-deploy/Jenkinsfile @@ -25,7 +25,7 @@ node() { ansibleExtraArgs = """\ --extra-vars "artifact=${artifact} artifact_path=${currentWs}/${artifact}" - --vault-password-file /run/secrets/vault-pass + --vault-password-file /var/lib/jenkins/secrets/vault-pass """.stripIndent().replace("\n", " ") values.put('ansiblePlaybook', ansiblePlaybook) values.put('ansibleExtraArgs', ansibleExtraArgs) @@ -41,7 +41,7 @@ node() { unzip ${artifact} """ ansiblePlaybook = "${currentWs}/ansible/cassandra-deploy.yml" - ansibleExtraArgs = "--vault-password-file /run/secrets/vault-pass" + ansibleExtraArgs = "--vault-password-file /var/lib/jenkins/secrets/vault-pass" values.put('ansiblePlaybook', ansiblePlaybook) values.put('ansibleExtraArgs', ansibleExtraArgs) println values diff --git a/pipelines/deploy/config-service/Jenkinsfile b/pipelines/deploy/config-service/Jenkinsfile index 9606d57fd9..1ef587fa91 100644 --- a/pipelines/deploy/config-service/Jenkinsfile +++ b/pipelines/deploy/config-service/Jenkinsfile @@ -10,7 +10,7 @@ node() { values = docker_params() currentWs = sh(returnStdout: true, script: 'pwd').trim() ansiblePlaybook = "$currentWs/ansible/deploy.yml" - ansibleExtraArgs = "--tags \"stack-sunbird\" --extra-vars \"hub_org=$hub_org image_name=$values.image_name image_tag=$values.image_tag service_name=config-service deploy_config=True\" --vault-password-file /run/secrets/vault-pass" + ansibleExtraArgs = "--tags \"stack-sunbird\" --extra-vars \"hub_org=$hub_org image_name=$values.image_name image_tag=$values.image_tag service_name=config-service deploy_config=True\" --vault-password-file /var/lib/jenkins/secrets/vault-pass" values.put('currentWs', currentWs) values.put('ansiblePlaybook', ansiblePlaybook) values.put('ansibleExtraArgs', ansibleExtraArgs) diff --git a/pipelines/deploy/content/Jenkinsfile b/pipelines/deploy/content/Jenkinsfile index c6cd5da040..707ad24bda 100644 --- a/pipelines/deploy/content/Jenkinsfile +++ b/pipelines/deploy/content/Jenkinsfile @@ -10,7 +10,7 @@ node() { values = docker_params() currentWs = sh(returnStdout: true, script: 'pwd').trim() ansiblePlaybook = "$currentWs/ansible/deploy.yml" - ansibleExtraArgs = "--tags \"stack-sunbird\" --extra-vars \"hub_org=$hub_org image_name=$values.image_name image_tag=$values.image_tag service_name=content-service deploy_content=True\" --vault-password-file /run/secrets/vault-pass" + ansibleExtraArgs = "--tags \"stack-sunbird\" --extra-vars \"hub_org=$hub_org image_name=$values.image_name image_tag=$values.image_tag service_name=content-service deploy_content=True\" --vault-password-file /var/lib/jenkins/secrets/vault-pass" values.put('currentWs', currentWs) values.put('ansiblePlaybook', ansiblePlaybook) values.put('ansibleExtraArgs', ansibleExtraArgs) diff --git a/pipelines/deploy/keycloak-realm/Jenkinsfile b/pipelines/deploy/keycloak-realm/Jenkinsfile index 636fb28de2..478f38dc56 100644 --- a/pipelines/deploy/keycloak-realm/Jenkinsfile +++ b/pipelines/deploy/keycloak-realm/Jenkinsfile @@ -20,7 +20,7 @@ node() { module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() ansiblePlaybook = "${currentWs}/ansible/keycloak.yml" - ansibleExtraArgs = "--tags keycloak-bootstrap --vault-password-file /run/secrets/vault-pass" + ansibleExtraArgs = "--tags keycloak-bootstrap --vault-password-file /var/lib/jenkins/secrets/vault-pass" values.put('currentWs', currentWs) values.put('env', envDir) values.put('module', module) diff --git a/pipelines/deploy/keycloak/Jenkinsfile b/pipelines/deploy/keycloak/Jenkinsfile index 0ea38cf0ef..3b9317c9cc 100644 --- a/pipelines/deploy/keycloak/Jenkinsfile +++ b/pipelines/deploy/keycloak/Jenkinsfile @@ -20,7 +20,7 @@ node() { module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() ansiblePlaybook = "${currentWs}/ansible/keycloak.yml" - ansibleExtraArgs = "--tags deploy --vault-password-file /run/secrets/vault-pass" + ansibleExtraArgs = "--tags deploy --vault-password-file /var/lib/jenkins/secrets/vault-pass" values.put('currentWs', currentWs) values.put('env', envDir) values.put('module', module) diff --git a/pipelines/deploy/learner/Jenkinsfile b/pipelines/deploy/learner/Jenkinsfile index 0dfd0027ef..caa9847e83 100644 --- a/pipelines/deploy/learner/Jenkinsfile +++ b/pipelines/deploy/learner/Jenkinsfile @@ -10,7 +10,7 @@ node() { values = docker_params() currentWs = sh(returnStdout: true, script: 'pwd').trim() ansiblePlaybook = "$currentWs/ansible/deploy.yml" - ansibleExtraArgs = "--tags \"stack-sunbird\" --extra-vars \"hub_org=$hub_org image_name=$values.image_name image_tag=$values.image_tag service_name=learner-service deploy_learner=True\" --vault-password-file /run/secrets/vault-pass" + ansibleExtraArgs = "--tags \"stack-sunbird\" --extra-vars \"hub_org=$hub_org image_name=$values.image_name image_tag=$values.image_tag service_name=learner-service deploy_learner=True\" --vault-password-file /var/lib/jenkins/secrets/vault-pass" values.put('currentWs', currentWs) values.put('ansiblePlaybook', ansiblePlaybook) values.put('ansibleExtraArgs', ansibleExtraArgs) diff --git a/pipelines/deploy/logger-elasticsearch/Jenkinsfile b/pipelines/deploy/logger-elasticsearch/Jenkinsfile index c8d5113b85..1221739ac5 100644 --- a/pipelines/deploy/logger-elasticsearch/Jenkinsfile +++ b/pipelines/deploy/logger-elasticsearch/Jenkinsfile @@ -20,7 +20,7 @@ node() { jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() values.put('currentWs', currentWs) ansiblePlaybook = "${currentWs}/ansible/logging.yml" - ansibleExtraArgs = "--tags log-es --vault-password-file /run/secrets/vault-pass -v" + ansibleExtraArgs = "--tags log-es --vault-password-file /var/lib/jenkins/secrets/vault-pass -v" values.put('currentWs', currentWs) values.put('env', envDir) values.put('module', module) diff --git a/pipelines/deploy/logger/Jenkinsfile b/pipelines/deploy/logger/Jenkinsfile index f6cb00e913..7dcb78ee52 100644 --- a/pipelines/deploy/logger/Jenkinsfile +++ b/pipelines/deploy/logger/Jenkinsfile @@ -21,7 +21,7 @@ node() { module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() ansiblePlaybook = "${currentWs}/ansible/logging.yml" - ansibleExtraArgs = "--vault-password-file /run/secrets/vault-pass -v" + ansibleExtraArgs = "--vault-password-file /var/lib/jenkins/secrets/vault-pass -v" values.put('currentWs', currentWs) values.put('env', envDir) values.put('module', module) diff --git a/pipelines/deploy/monitor/Core/Jenkinsfile b/pipelines/deploy/monitor/Core/Jenkinsfile index d5be81ddd7..2d139577ac 100644 --- a/pipelines/deploy/monitor/Core/Jenkinsfile +++ b/pipelines/deploy/monitor/Core/Jenkinsfile @@ -20,7 +20,7 @@ node() { module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() ansiblePlaybook = "${currentWs}/ansible/monitoring.yml" - ansibleExtraArgs = "--skip-tags lp_dp_monitoring --vault-password-file /run/secrets/vault-pass -v" + ansibleExtraArgs = "--skip-tags lp_dp_monitoring --vault-password-file /var/lib/jenkins/secrets/vault-pass -v" values.put('currentWs', currentWs) values.put('env', envDir) values.put('module', module) diff --git a/pipelines/deploy/monitor/DataPipeline/Jenkinsfile b/pipelines/deploy/monitor/DataPipeline/Jenkinsfile index d4db2bd27d..85f6a1ef2e 100644 --- a/pipelines/deploy/monitor/DataPipeline/Jenkinsfile +++ b/pipelines/deploy/monitor/DataPipeline/Jenkinsfile @@ -20,7 +20,7 @@ node() { module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() ansiblePlaybook = "${currentWs}/ansible/monitoring.yml" - ansibleExtraArgs = "--tags metrics-exporter,lp_dp_monitoring --vault-password-file /run/secrets/vault-pass -v" + ansibleExtraArgs = "--tags metrics-exporter,lp_dp_monitoring --vault-password-file /var/lib/jenkins/secrets/vault-pass -v" values.put('currentWs', currentWs) values.put('env', envDir) values.put('module', module) diff --git a/pipelines/deploy/monitor/Jenkinsfile b/pipelines/deploy/monitor/Jenkinsfile index dc90ac567f..ef7357ffc2 100644 --- a/pipelines/deploy/monitor/Jenkinsfile +++ b/pipelines/deploy/monitor/Jenkinsfile @@ -20,7 +20,7 @@ node() { module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() ansiblePlaybook = "${currentWs}/ansible/monitoring.yml" - ansibleExtraArgs = "--tags metrics-exporter --vault-password-file /run/secrets/vault-pass -v" + ansibleExtraArgs = "--tags metrics-exporter --vault-password-file /var/lib/jenkins/secrets/vault-pass -v" values.put('currentWs', currentWs) values.put('env', envDir) values.put('module', module) diff --git a/pipelines/deploy/monitor/KnowledgePlatform/Jenkinsfile b/pipelines/deploy/monitor/KnowledgePlatform/Jenkinsfile index d4db2bd27d..85f6a1ef2e 100644 --- a/pipelines/deploy/monitor/KnowledgePlatform/Jenkinsfile +++ b/pipelines/deploy/monitor/KnowledgePlatform/Jenkinsfile @@ -20,7 +20,7 @@ node() { module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() ansiblePlaybook = "${currentWs}/ansible/monitoring.yml" - ansibleExtraArgs = "--tags metrics-exporter,lp_dp_monitoring --vault-password-file /run/secrets/vault-pass -v" + ansibleExtraArgs = "--tags metrics-exporter,lp_dp_monitoring --vault-password-file /var/lib/jenkins/secrets/vault-pass -v" values.put('currentWs', currentWs) values.put('env', envDir) values.put('module', module) diff --git a/pipelines/deploy/player/Jenkinsfile b/pipelines/deploy/player/Jenkinsfile index 33d4060bec..2ce6c06e26 100644 --- a/pipelines/deploy/player/Jenkinsfile +++ b/pipelines/deploy/player/Jenkinsfile @@ -9,7 +9,7 @@ node() { values = docker_params() currentWs = sh(returnStdout: true, script: 'pwd').trim() ansiblePlaybook = "$currentWs/ansible/deploy.yml" - ansibleExtraArgs = "--tags \"stack-sunbird\" --extra-vars \"hub_org=$hub_org image_name=$values.image_name image_tag=$values.image_tag service_name=player deploy_stack=True\" --vault-password-file /run/secrets/vault-pass" + ansibleExtraArgs = "--tags \"stack-sunbird\" --extra-vars \"hub_org=$hub_org image_name=$values.image_name image_tag=$values.image_tag service_name=player deploy_stack=True\" --vault-password-file /var/lib/jenkins/secrets/vault-pass" values.put('currentWs', currentWs) values.put('ansiblePlaybook', ansiblePlaybook) values.put('ansibleExtraArgs', ansibleExtraArgs) diff --git a/pipelines/deploy/proxy/Jenkinsfile b/pipelines/deploy/proxy/Jenkinsfile index 5abe753697..78696bda7f 100644 --- a/pipelines/deploy/proxy/Jenkinsfile +++ b/pipelines/deploy/proxy/Jenkinsfile @@ -10,7 +10,7 @@ node() { values = docker_params() currentWs = sh(returnStdout: true, script: 'pwd').trim() ansiblePlaybook = "$currentWs/ansible/deploy.yml" - ansibleExtraArgs = "--tags \"stack-proxy\" --extra-vars \"hub_org=$hub_org image_name=$values.image_name image_tag=$values.image_tag\" --vault-password-file /run/secrets/vault-pass" + ansibleExtraArgs = "--tags \"stack-proxy\" --extra-vars \"hub_org=$hub_org image_name=$values.image_name image_tag=$values.image_tag\" --vault-password-file /var/lib/jenkins/secrets/vault-pass" values.put('currentWs', currentWs) values.put('ansiblePlaybook', ansiblePlaybook) values.put('ansibleExtraArgs', ansibleExtraArgs) diff --git a/pipelines/deploy/telemetry-logstash-datapipeline/Jenkinsfile b/pipelines/deploy/telemetry-logstash-datapipeline/Jenkinsfile index 31776d4911..4d4c74debb 100644 --- a/pipelines/deploy/telemetry-logstash-datapipeline/Jenkinsfile +++ b/pipelines/deploy/telemetry-logstash-datapipeline/Jenkinsfile @@ -20,7 +20,7 @@ node() { jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() currentWs = sh(returnStdout: true, script: 'pwd').trim() ansiblePlaybook = "${currentWs}/ansible/deploy.yml" - ansibleExtraArgs = "--tags \"stack-sunbird\" --extra-vars \"service_name=telemetry-service deploy_telemetry_logstash_datapipeline=True\" --vault-password-file /run/secrets/vault-pass -v" + ansibleExtraArgs = "--tags \"stack-sunbird\" --extra-vars \"service_name=telemetry-service deploy_telemetry_logstash_datapipeline=True\" --vault-password-file /var/lib/jenkins/secrets/vault-pass -v" values.put('currentWs', currentWs) values.put('env', envDir) values.put('module', module) diff --git a/pipelines/deploy/telemetry-logstash/Jenkinsfile b/pipelines/deploy/telemetry-logstash/Jenkinsfile index f2a5479f24..38b6db0a37 100644 --- a/pipelines/deploy/telemetry-logstash/Jenkinsfile +++ b/pipelines/deploy/telemetry-logstash/Jenkinsfile @@ -20,7 +20,7 @@ node() { jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() currentWs = sh(returnStdout: true, script: 'pwd').trim() ansiblePlaybook = "${currentWs}/ansible/deploy.yml" - ansibleExtraArgs = "--tags \"stack-sunbird\" --extra-vars \"service_name=telemetry-service deploy_telemetry_logstash=True\" --vault-password-file /run/secrets/vault-pass -v" + ansibleExtraArgs = "--tags \"stack-sunbird\" --extra-vars \"service_name=telemetry-service deploy_telemetry_logstash=True\" --vault-password-file /var/lib/jenkins/secrets/vault-pass -v" values.put('currentWs', currentWs) values.put('env', envDir) values.put('module', module) diff --git a/pipelines/deploy/telemetry/Jenkinsfile b/pipelines/deploy/telemetry/Jenkinsfile index 3a09211fbb..a7aa5dbcfc 100644 --- a/pipelines/deploy/telemetry/Jenkinsfile +++ b/pipelines/deploy/telemetry/Jenkinsfile @@ -10,7 +10,7 @@ node() { values = docker_params() currentWs = sh(returnStdout: true, script: 'pwd').trim() ansiblePlaybook = "$currentWs/ansible/deploy.yml" - ansibleExtraArgs = "--tags \"stack-sunbird\" --extra-vars \"hub_org=$hub_org image_name=$values.image_name image_tag=$values.image_tag service_name=telemetry-service deploy_telemetry=True\" --vault-password-file /run/secrets/vault-pass" + ansibleExtraArgs = "--tags \"stack-sunbird\" --extra-vars \"hub_org=$hub_org image_name=$values.image_name image_tag=$values.image_tag service_name=telemetry-service deploy_telemetry=True\" --vault-password-file /var/lib/jenkins/secrets/vault-pass" values.put('currentWs', currentWs) values.put('ansiblePlaybook', ansiblePlaybook) values.put('ansibleExtraArgs', ansibleExtraArgs) diff --git a/pipelines/provision/cassandra/Jenkinsfile b/pipelines/provision/cassandra/Jenkinsfile index abf57ccc67..0acd750e4c 100644 --- a/pipelines/provision/cassandra/Jenkinsfile +++ b/pipelines/provision/cassandra/Jenkinsfile @@ -20,7 +20,7 @@ node() { module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() ansiblePlaybook = "${currentWs}/ansible/provision.yml" - ansibleExtraArgs = "--tags cassandra --vault-password-file /run/secrets/vault-pass -v" + ansibleExtraArgs = "--tags cassandra --vault-password-file /var/lib/jenkins/secrets/vault-pass -v" values.put('currentWs', currentWs) values.put('env', envDir) values.put('module', module) diff --git a/pipelines/provision/jenkins-slave/Jenkinsfile b/pipelines/provision/jenkins-slave/Jenkinsfile index 3c30a8f050..76329059eb 100644 --- a/pipelines/provision/jenkins-slave/Jenkinsfile +++ b/pipelines/provision/jenkins-slave/Jenkinsfile @@ -21,7 +21,7 @@ node() { jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() currentWs = sh(returnStdout: true, script: 'pwd').trim() ansiblePlaybook = "${currentWs}/devops/jenkins-slave.yml" - ansibleExtraArgs = "--tags jenkins-slave --extra-vars \"jenkins_host=${params.jenkins_host}\" --vault-password-file /run/secrets/vault-pass" + ansibleExtraArgs = "--tags jenkins-slave --extra-vars \"jenkins_host=${params.jenkins_host}\" --vault-password-file /var/lib/jenkins/secrets/vault-pass" values.put('currentWs', currentWs) values.put('env', envDir) values.put('module', module) diff --git a/pipelines/provision/kafka/Jenkinsfile b/pipelines/provision/kafka/Jenkinsfile index 8f0235a761..ed85a29c42 100644 --- a/pipelines/provision/kafka/Jenkinsfile +++ b/pipelines/provision/kafka/Jenkinsfile @@ -20,7 +20,7 @@ node() { module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() ansiblePlaybook = "${currentWs}/ansible/provision-kafka.yml" - ansibleExtraArgs = "--vault-password-file /run/secrets/vault-pass -v" + ansibleExtraArgs = "--vault-password-file /var/lib/jenkins/secrets/vault-pass -v" values.put('currentWs', currentWs) values.put('env', envDir) values.put('module', module) diff --git a/pipelines/provision/keycloak/Jenkinsfile b/pipelines/provision/keycloak/Jenkinsfile index 7cc16a8a43..80eb9281fb 100644 --- a/pipelines/provision/keycloak/Jenkinsfile +++ b/pipelines/provision/keycloak/Jenkinsfile @@ -20,7 +20,7 @@ node() { module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() ansiblePlaybook = "${currentWs}/ansible/keycloak.yml" - ansibleExtraArgs = "--tags provision --vault-password-file /run/secrets/vault-pass" + ansibleExtraArgs = "--tags provision --vault-password-file /var/lib/jenkins/secrets/vault-pass" values.put('currentWs', currentWs) values.put('env', envDir) values.put('module', module) diff --git a/pipelines/provision/log-es/Jenkinsfile b/pipelines/provision/log-es/Jenkinsfile index dcc0e0819f..e4a996a69c 100644 --- a/pipelines/provision/log-es/Jenkinsfile +++ b/pipelines/provision/log-es/Jenkinsfile @@ -20,7 +20,7 @@ node() { jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() currentWs = sh(returnStdout: true, script: 'pwd').trim() ansiblePlaybook = "${currentWs}/ansible/provision.yml" - ansibleExtraArgs = "--tags log-es --vault-password-file /run/secrets/vault-pass" + ansibleExtraArgs = "--tags log-es --vault-password-file /var/lib/jenkins/secrets/vault-pass" values.put('currentWs', currentWs) values.put('env', envDir) values.put('module', module) diff --git a/pipelines/provision/postgres-db-update/Jenkinsfile b/pipelines/provision/postgres-db-update/Jenkinsfile index fe1989e511..f17d40c89d 100644 --- a/pipelines/provision/postgres-db-update/Jenkinsfile +++ b/pipelines/provision/postgres-db-update/Jenkinsfile @@ -20,7 +20,7 @@ node() { module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() ansiblePlaybook = "${currentWs}/ansible/postgresql-data-update.yml" - ansibleExtraArgs = "--vault-password-file /run/secrets/vault-pass -v" + ansibleExtraArgs = "--vault-password-file /var/lib/jenkins/secrets/vault-pass -v" values.put('currentWs', currentWs) values.put('env', envDir) values.put('module', module) diff --git a/pipelines/provision/postgres/Jenkinsfile b/pipelines/provision/postgres/Jenkinsfile index 591b34f829..65cfc5f73e 100644 --- a/pipelines/provision/postgres/Jenkinsfile +++ b/pipelines/provision/postgres/Jenkinsfile @@ -20,7 +20,7 @@ node() { module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() ansiblePlaybook = "${currentWs}/ansible/provision.yml" - ansibleExtraArgs = "--tags postgresql-master --vault-password-file /run/secrets/vault-pass -v" + ansibleExtraArgs = "--tags postgresql-master --vault-password-file /var/lib/jenkins/secrets/vault-pass -v" values.put('currentWs', currentWs) values.put('env', envDir) values.put('module', module) diff --git a/pipelines/provision/registry/Jenkinsfile b/pipelines/provision/registry/Jenkinsfile index 47f00ab2f0..74e0382a9b 100644 --- a/pipelines/provision/registry/Jenkinsfile +++ b/pipelines/provision/registry/Jenkinsfile @@ -32,7 +32,7 @@ node() { module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() ansiblePlaybook = "${currentWs}/ansible/registry.yml" - ansibleExtraArgs = "--vault-password-file /run/secrets/vault-pass" + ansibleExtraArgs = "--vault-password-file /var/lib/jenkins/secrets/vault-pass" values.put('currentWs', currentWs) values.put('env', envDir) values.put('module', module) diff --git a/pipelines/provision/secor/Jenkinsfile b/pipelines/provision/secor/Jenkinsfile index 13ec99a31b..69f303cfcf 100644 --- a/pipelines/provision/secor/Jenkinsfile +++ b/pipelines/provision/secor/Jenkinsfile @@ -20,7 +20,7 @@ node() { module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() ansiblePlaybook = "${currentWs}/ansible/provision-secor.yml" - ansibleExtraArgs = "--vault-password-file /run/secrets/vault-pass" + ansibleExtraArgs = "--vault-password-file /var/lib/jenkins/secrets/vault-pass" values.put('currentWs', currentWs) values.put('env', envDir) values.put('module', module) diff --git a/pipelines/upload/artifacts/Jenkinsfile b/pipelines/upload/artifacts/Jenkinsfile index 2e1048c230..1f7a78ae03 100644 --- a/pipelines/upload/artifacts/Jenkinsfile +++ b/pipelines/upload/artifacts/Jenkinsfile @@ -12,7 +12,7 @@ node() { if(params.artifact_source == "ArtifactRepo") { ansiblePlaybook = "${currentWs}/ansible/artifacts-upload.yml" - ansibleExtraArgs = "--extra-vars \"artifact=${artifact} artifact_path=${currentWs}/${artifact}\" --vault-password-file /run/secrets/vault-pass" + ansibleExtraArgs = "--extra-vars \"artifact=${artifact} artifact_path=${currentWs}/${artifact}\" --vault-password-file /var/lib/jenkins/secrets/vault-pass" values.put('currentWs', currentWs) values.put('ansiblePlaybook', ansiblePlaybook) values.put('ansibleExtraArgs', ansibleExtraArgs) diff --git a/pipelines/upload/docker/Jenkinsfile b/pipelines/upload/docker/Jenkinsfile index b32326373b..efb515bfbb 100644 --- a/pipelines/upload/docker/Jenkinsfile +++ b/pipelines/upload/docker/Jenkinsfile @@ -11,7 +11,7 @@ node(){ if(params.artifact_source == "ArtifactRepo") { currentWs = sh(returnStdout: true, script: 'pwd').trim() ansiblePlaybook = "$currentWs/ansible/docker_image_push.yml" - ansibleExtraArgs = "--extra-vars \"hub_org=${hub_org} image_name=${values.image_name} image_tag=${values.image_tag}\" --vault-password-file /run/secrets/vault-pass" + ansibleExtraArgs = "--extra-vars \"hub_org=${hub_org} image_name=${values.image_name} image_tag=${values.image_tag}\" --vault-password-file /var/lib/jenkins/secrets/vault-pass" values.put('currentWs', currentWs) values.put('ansiblePlaybook', ansiblePlaybook) values.put('ansibleExtraArgs', ansibleExtraArgs) From 7f9066f8abb418616affe58d01d5dcd3b98529cc Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Tue, 19 Feb 2019 14:33:37 +0530 Subject: [PATCH 1157/1345] Issue #000 feat: Removing sunbird prefix --- .../ansible/inventory/dev/KnowledgePlatform/common.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/private_repo/ansible/inventory/dev/KnowledgePlatform/common.yml b/private_repo/ansible/inventory/dev/KnowledgePlatform/common.yml index e4b0b56a9b..3345097159 100644 --- a/private_repo/ansible/inventory/dev/KnowledgePlatform/common.yml +++ b/private_repo/ansible/inventory/dev/KnowledgePlatform/common.yml @@ -1,7 +1,7 @@ ### !!! Remove this from public template !!! ### !!! These are private values only for sunbird/ntp !!! -sunbird_instance_name: sunbird -sunbird_instance: dev +instance_name: sunbird +instance: dev ## Mahesh have to come back on this content_to_vec_url: # content_to_vec_url From ec7b207ecdd29ced5a8940c0f7f2f6f8d77b1a19 Mon Sep 17 00:00:00 2001 From: Manzarul Date: Tue, 19 Feb 2019 15:12:32 +0530 Subject: [PATCH 1158/1345] Issues #SB-00 feat: adding get user type api --- ansible/roles/kong-api/defaults/main.yml | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/ansible/roles/kong-api/defaults/main.yml b/ansible/roles/kong-api/defaults/main.yml index 1fb4c8944f..9be5834bc8 100644 --- a/ansible/roles/kong-api/defaults/main.yml +++ b/ansible/roles/kong-api/defaults/main.yml @@ -3715,3 +3715,14 @@ kong_apis: - {name: 'rate-limiting', config.policy: "local", config.hour: "{{ medium_rate_limit_per_hour }}"} - {name: 'request-size-limiting', config.allowed_payload_size: "{{ small_request_size_limit }}" } + - name: "getUserType" + request_path: "{{ user_service_prefix }}/v1/type/list" + upstream_url: "{{ learning_service_url }}/v1/user/type/list" + strip_request_path: true + plugins: + - {name: 'jwt'} + - {name: 'cors'} + - "{{ statsd_pulgin }}" + - {name: 'acl', config.whitelist: 'publicUser'} + - {name: 'rate-limiting', config.policy: "local", config.hour: "{{ medium_rate_limit_per_hour }}"} + - {name: 'request-size-limiting', config.allowed_payload_size: "{{ small_request_size_limit }}" } \ No newline at end of file From c7e457833b431c205ee52422f856eebe9ac2fb3e Mon Sep 17 00:00:00 2001 From: msknext Date: Tue, 19 Feb 2019 16:29:45 +0530 Subject: [PATCH 1159/1345] feat: Updated to Jenkins LTS, adding new config files --- deploy/jenkins/jenkins-config-setup.sh | 7 - deploy/jenkins/jenkins-server-setup.sh | 14 +- .../jobs/dev/jobs/Core/config.xml | 5 - .../dev/jobs/Core/jobs/APIManager/config.xml | 4 +- .../jobs/Core/jobs/APIManagerEcho/config.xml | 4 +- .../dev/jobs/Core/jobs/AdminUtils/config.xml | 4 +- .../jobs/dev/jobs/Core/jobs/Badger/config.xml | 90 ++++++++ .../jobs/dev/jobs/Core/jobs/Config/config.xml | 90 ++++++++ .../dev/jobs/Core/jobs/Content/config.xml | 4 +- .../dev/jobs/Core/jobs/Keycloak/config.xml | 98 +++++++++ .../dev/jobs/Core/jobs/Learner/config.xml | 4 +- .../jobs/dev/jobs/Core/jobs/Player/config.xml | 4 +- .../jobs/dev/jobs/Core/jobs/Proxy/config.xml | 1 - .../dev/jobs/Core/jobs/Telemetry/config.xml | 4 +- .../jobs/dev/jobs/DataPipeline/config.xml | 7 +- .../dev/jobs/KnowledgePlatform/config.xml | 7 +- .../jobs/Core/jobs/AdminUtils/config.xml | 3 +- .../Build/jobs/Core/jobs/Badger/config.xml | 82 +++++++ .../Build/jobs/Core/jobs/Cassandra/config.xml | 7 +- .../Build/jobs/Core/jobs/Config/config.xml | 82 +++++++ .../Build/jobs/Core/jobs/Keycloak/config.xml | 68 ++++++ .../Build/jobs/Core/jobs/Learner/config.xml | 6 +- .../Build/jobs/Core/jobs/Player/config.xml | 6 +- .../Build/jobs/Core/jobs/Telemetry/config.xml | 6 +- .../DataPipeline/jobs/Analytics/config.xml | 7 +- .../jobs/CloudStorageSDK/config.xml | 82 +++++++ .../DataPipeline/jobs/DataPipeline/config.xml | 6 +- .../jobs/DataPipeline/jobs/Secor/config.xml | 6 +- .../jobs/Build/jobs/Plugins/config.xml | 29 +++ .../jobs/Plugins/jobs/CEPlugins/config.xml | 68 ++++++ .../Plugins/jobs/CollectionEditor/config.xml | 68 ++++++ .../Plugins/jobs/ContentFramework/config.xml | 68 ++++++ .../jobs/ContentRendererPreview/config.xml | 68 ++++++ .../Plugins/jobs/GenericEditor/config.xml | 68 ++++++ .../dev/jobs/Core/jobs/APIManager/config.xml | 5 +- .../dev/jobs/Core/jobs/AdminUtils/config.xml | 5 +- .../jobs/dev/jobs/Core/jobs/Badger/config.xml | 84 +++++++ .../dev/jobs/Core/jobs/Bootstrap/config.xml | 53 +++++ .../dev/jobs/Core/jobs/Cassandra/config.xml | 22 +- .../jobs/dev/jobs/Core/jobs/Config/config.xml | 84 +++++++ .../dev/jobs/Core/jobs/Content/config.xml | 4 +- .../dev/jobs/Core/jobs/Learner/config.xml | 4 +- .../jobs/dev/jobs/Core/jobs/Player/config.xml | 4 +- .../dev/jobs/Core/jobs/Telemetry/config.xml | 4 +- .../jobs/AnalyticsFetchLogs/config.xml | 91 ++++++++ .../AnalyticsGeoLocationDBSetup/config.xml | 65 ++++++ .../config.xml | 97 ++++++++ .../jobs/AnalyticsReplayJobs/config.xml | 111 ++++++++++ .../jobs/AnalyticsStartJobManager/config.xml | 75 +++++++ .../jobs/AnalyticsSubmitJobs/config.xml | 75 +++++++ .../jobs/ContentTool/config.xml | 76 +++++++ .../jobs/DefinitionUpdate/config.xml | 53 +++++ .../jobs/FileSyncTool/config.xml | 67 ++++++ .../jobs/SamzaTelemetrySchemas/config.xml | 66 ++++++ .../Deploy/jobs/dev/jobs/Plugins/config.xml | 28 +++ .../Plugins/jobs/CollectionEditor/config.xml | 65 ++++++ .../Plugins/jobs/ContentFramework/config.xml | 65 ++++++ .../jobs/ContentRendererPreview/config.xml | 65 ++++++ .../Plugins/jobs/GenericEditor/config.xml | 65 ++++++ .../Deploy/jobs/dev/jobs/Summary/config.xml | 7 +- .../jobs/AnalyticsAPILogs/config.xml | 51 +++++ deploy/jenkins/jobs/Other/config.xml | 28 +++ .../jenkins/jobs/Other/jobs/Build/config.xml | 29 +++ .../Build/jobs/Cassandra_Build/config.xml | 38 ++++ .../Other/jobs/Build/jobs/DP_Build/config.xml | 48 ++++ .../Build/jobs/Encryption_Build/config.xml | 34 +++ .../jobs/Build/jobs/Keycloak_Build/config.xml | 34 +++ .../Build/jobs/Keycloak_Custom_PKG/config.xml | 34 +++ .../jobs/Build/jobs/OpenSaberBuild/config.xml | 42 ++++ .../Build/jobs/Opensaber_Build/config.xml | 42 ++++ .../jobs/Build/jobs/Secor_Build/config.xml | 38 ++++ .../Sunbird_ActorService_Build/config.xml | 50 +++++ .../config.xml | 121 ++++++++++ .../config.xml | 117 ++++++++++ .../Build/jobs/Sunbird_Auth_Build/config.xml | 34 +++ .../jobs/Sunbird_Auth_Build_Back/config.xml | 43 ++++ .../Sunbird_Auth_Config_Build_Back/config.xml | 34 +++ .../jobs/Build/jobs/Sunbird_Badger/config.xml | 46 ++++ .../config.xml | 84 +++++++ .../jobs/Sunbird_EP_API_Build/config.xml | 59 +++++ .../Build/jobs/Sunbird_EP_Build/config.xml | 80 +++++++ .../jobs/Sunbird_EP_Upgrade_Build/config.xml | 124 +++++++++++ .../Sunbird_Ed_ConfigService_Build/config.xml | 50 +++++ .../config.xml | 50 +++++ .../config.xml | 42 ++++ .../jobs/Sunbird_Ed_Player_Build/config.xml | 41 ++++ .../jobs/Sunbird_LPA_API_Build/config.xml | 103 +++++++++ .../jobs/Sunbird_LPA_Secor_Build/config.xml | 71 ++++++ .../jobs/Sunbird_LP_Backend_Build/config.xml | 90 ++++++++ .../Build/jobs/Sunbird_LP_Build/config.xml | 91 ++++++++ .../jobs/Sunbird_LP_Neo4j_Build/config.xml | 73 ++++++ .../jobs/Sunbird_LP_SyncTool_Build/config.xml | 82 +++++++ .../jobs/Sunbird_SampleFlow_Build/config.xml | 41 ++++ .../config.xml | 50 +++++ .../Sunbird_TelemetryService_Build/config.xml | 50 +++++ .../Other/jobs/Build/jobs/hostname/config.xml | 28 +++ .../jenkins/jobs/Other/jobs/Deploy/config.xml | 28 +++ .../Deploy/jobs/Artifacts_Repo/config.xml | 67 ++++++ .../Other/jobs/Deploy/jobs/Dev/config.xml | 28 +++ .../jobs/AM_AdminUtils_Deploy_Dev/config.xml | 46 ++++ .../jobs/Dev/jobs/AM_Onboard_APIs/config.xml | 46 ++++ .../Dev/jobs/AM_Onboard_Consumers/config.xml | 46 ++++ .../jobs/API_Manager_Deploy_Dev/config.xml | 42 ++++ .../Dev/jobs/AnalyticsApi_Logs/config.xml | 47 ++++ .../jobs/Application_ElasticSearch/config.xml | 46 ++++ .../config.xml | 55 +++++ .../config.xml | 59 +++++ .../Dev/jobs/Assets_Upload_Azure/config.xml | 59 +++++ .../Dev/jobs/Cassandra CQL Dumps/config.xml | 57 +++++ .../Dev/jobs/Cassandra_CQL_Dumps/config.xml | 34 +++ .../jobs/Dev/jobs/Createuser/config.xml | 82 +++++++ .../jobs/Dev/jobs/Curl_Commands/config.xml | 34 +++ .../jobs/Dev/jobs/DB_Bootstrap/config.xml | 34 +++ .../jobs/Dev/jobs/Deleteuser/config.xml | 70 ++++++ .../Deploy/jobs/Dev/jobs/Dev_Test/config.xml | 54 +++++ .../jobs/Dev/jobs/Devops_Test/config.xml | 51 +++++ .../Dev/jobs/DialPage_Upload_CDN/config.xml | 53 +++++ .../Dev/jobs/Docker_Swarm_Config/config.xml | 49 +++++ .../jobs/Docker_Swarm_Service_Info/config.xml | 58 +++++ .../jobs/Docker_Swarm_Service_List/config.xml | 46 ++++ .../Docker_Swarm_Service_Restart/config.xml | 58 +++++ .../Dev/jobs/Docker_Swarm_Update/config.xml | 46 ++++ .../Documentation_Jenkins_Slave/config.xml | 46 ++++ .../jobs/Encryption_service_deploy/config.xml | 42 ++++ .../jobs/Grafana_Dashboards_Export/config.xml | 55 +++++ .../jobs/Grafana_Dashboards_Import/config.xml | 48 ++++ .../jobs/Dev/jobs/Jenkins_Slave/config.xml | 46 ++++ .../jobs/Dev/jobs/Keycloak_Deploy/config.xml | 34 +++ .../Dev/jobs/Keycloak_Provision/config.xml | 34 +++ .../jobs/Dev/jobs/Learning_Logs/config.xml | 45 ++++ .../Dev/jobs/Logger_ES_Deploy_Dev/config.xml | 49 +++++ .../Logger_ElasticSearch_Backup/config.xml | 55 +++++ .../Logger_ElasticSearch_Restore/config.xml | 56 +++++ .../Dev/jobs/Logger_Purge_Old_Logs/config.xml | 55 +++++ .../Deploy/jobs/Dev/jobs/Logging/config.xml | 42 ++++ .../jobs/Dev/jobs/Logging_Registry/config.xml | 42 ++++ .../Dev/jobs/Logs_For_Learning_Dev/config.xml | 33 +++ .../jobs/Dev/jobs/Monitoring/config.xml | 42 ++++ .../Deploy/jobs/Dev/jobs/OpenSaber/config.xml | 42 ++++ .../Dev/jobs/OpenSaberEncryption/config.xml | 42 ++++ .../Dev/jobs/Player_Upload_CDN/config.xml | 67 ++++++ .../Dev/jobs/Postgresql_Backup/config.xml | 55 +++++ .../jobs/Postgresql_Data_Update/config.xml | 46 ++++ .../Dev/jobs/Postgresql_Master/config.xml | 46 ++++ .../Dev/jobs/Postgresql_Restore/config.xml | 58 +++++ .../Dev/jobs/Prometheus_Backup/config.xml | 55 +++++ .../Deploy/jobs/Dev/jobs/Proxy/config.xml | 46 ++++ .../Dev/jobs/Registry_Provision/config.xml | 37 ++++ .../jobs/Dev/jobs/Run_Command/config.xml | 50 +++++ .../jobs/Dev/jobs/Secor_Logs/config.xml | 46 ++++ .../jobs/Dev/jobs/Spark_Logs/config.xml | 47 ++++ .../config.xml | 42 ++++ .../jobs/Sunbird_Auth_Config_Build/config.xml | 34 +++ .../Sunbird_Auth_Config_Deploy/config.xml | 34 +++ .../Dev/jobs/Sunbird_Auth_Deploy/config.xml | 34 +++ .../Sunbird_Auth_Deploy_Backup_job/config.xml | 34 +++ .../Dev/jobs/Sunbird_Badger_Deploy/config.xml | 34 +++ .../Sunbird_Cassandra_Backup_Dev/config.xml | 47 ++++ .../Sunbird_Cassandra_Backup_Test/config.xml | 47 ++++ .../Sunbird_Cassandra_CQL_Restore/config.xml | 50 +++++ .../jobs/Sunbird_Cassandra_Deploy/config.xml | 42 ++++ .../Sunbird_Cassandra_Provision/config.xml | 34 +++ .../Sunbird_Cassandra_Restore_Dev/config.xml | 51 +++++ .../config.xml | 42 ++++ .../config.xml | 42 ++++ .../Dev/jobs/Sunbird_Docker_Reset/config.xml | 34 +++ .../jobs/Sunbird_Ed_Player_Deploy/config.xml | 73 ++++++ .../Sunbird_Functional_Test_Cases/config.xml | 54 +++++ .../config.xml | 42 ++++ .../jobs/Sunbird_Player_Deploy_Dev/config.xml | 42 ++++ .../Sunbird_Provision_Kafka_Dev/config.xml | 34 +++ .../Sunbird_Provision_Secor_Dev/config.xml | 34 +++ .../Sunbird_Registry_Deploy_Dev/config.xml | 42 ++++ .../config.xml | 42 ++++ .../config.xml | 34 +++ .../config.xml | 34 +++ .../jobs/Swarm_Agent_Docker_Prune/config.xml | 55 +++++ .../jobs/Dev/jobs/Swarm_Bootstrap/config.xml | 46 ++++ .../Deploy/jobs/Dev/jobs/Yarn_Logs/config.xml | 47 ++++ .../Deploy/jobs/Dev/jobs/azure-cli/config.xml | 34 +++ .../cassandra complete backup dev/config.xml | 47 ++++ .../jobs/docker-version-upgrade/config.xml | 46 ++++ .../Deploy/jobs/Dev/jobs/hostname/config.xml | 22 ++ .../jobs/Dev/jobs/player_all/config.xml | 67 ++++++ .../Dev/jobs/tenant_cdn_upload/config.xml | 50 +++++ .../jobs/Deploy/jobs/Dev/jobs/yo/config.xml | 7 + .../Other/jobs/New_Azure_Infra/config.xml | 64 ++++++ .../jobs/Other/jobs/testjob/config.xml | 44 ++++ .../jobs/dev/jobs/Core/jobs/Kafka/config.xml | 43 ++++ .../dev/jobs/Core/jobs/Registry/config.xml | 43 ++++ .../jobs/dev/jobs/Core/jobs/Secor/config.xml | 43 ++++ .../DataPipeline/jobs/Cassandra/config.xml | 50 +++++ .../jobs/DataPipeline/jobs/Kafka/config.xml | 50 +++++ .../jobs/TelemetrySearch/config.xml | 50 +++++ .../DataPipeline/jobs/Zookeeper/config.xml | 49 +++++ .../KnowledgePlatform/jobs/Yarn/config.xml | 68 ++++++ deploy/jenkins/jobs/Release/config.xml | 29 +++ .../jobs/Release/jobs/startRelease/config.xml | 64 ++++++ deploy/jenkins/plugins.txt | 208 +++++++----------- 199 files changed, 9177 insertions(+), 226 deletions(-) create mode 100644 deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Badger/config.xml create mode 100644 deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Config/config.xml create mode 100644 deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Keycloak/config.xml create mode 100644 deploy/jenkins/jobs/Build/jobs/Core/jobs/Badger/config.xml create mode 100644 deploy/jenkins/jobs/Build/jobs/Core/jobs/Config/config.xml create mode 100644 deploy/jenkins/jobs/Build/jobs/Core/jobs/Keycloak/config.xml create mode 100644 deploy/jenkins/jobs/Build/jobs/DataPipeline/jobs/CloudStorageSDK/config.xml create mode 100644 deploy/jenkins/jobs/Build/jobs/Plugins/config.xml create mode 100644 deploy/jenkins/jobs/Build/jobs/Plugins/jobs/CEPlugins/config.xml create mode 100644 deploy/jenkins/jobs/Build/jobs/Plugins/jobs/CollectionEditor/config.xml create mode 100644 deploy/jenkins/jobs/Build/jobs/Plugins/jobs/ContentFramework/config.xml create mode 100644 deploy/jenkins/jobs/Build/jobs/Plugins/jobs/ContentRendererPreview/config.xml create mode 100644 deploy/jenkins/jobs/Build/jobs/Plugins/jobs/GenericEditor/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Badger/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Bootstrap/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Config/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsFetchLogs/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsGeoLocationDBSetup/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsPopulatePSQLConsumerChannelMapping/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsReplayJobs/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsStartJobManager/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsSubmitJobs/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/ContentTool/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/DefinitionUpdate/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/FileSyncTool/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/SamzaTelemetrySchemas/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Plugins/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Plugins/jobs/CollectionEditor/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Plugins/jobs/ContentFramework/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Plugins/jobs/ContentRendererPreview/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Plugins/jobs/GenericEditor/config.xml create mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/AnalyticsAPILogs/config.xml create mode 100644 deploy/jenkins/jobs/Other/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Build/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Build/jobs/Cassandra_Build/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Build/jobs/DP_Build/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Build/jobs/Encryption_Build/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Build/jobs/Keycloak_Build/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Build/jobs/Keycloak_Custom_PKG/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Build/jobs/OpenSaberBuild/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Build/jobs/Opensaber_Build/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Build/jobs/Secor_Build/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_ActorService_Build/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_Analytics_Build_Framework/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_Analytics_DataProducts_Build/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_Auth_Build/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_Auth_Build_Back/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_Auth_Config_Build_Back/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_Badger/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_Cloud_Storage_SDK_Build/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_EP_API_Build/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_EP_Build/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_EP_Upgrade_Build/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_Ed_ConfigService_Build/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_Ed_ContentService_Build/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_Ed_LearnerService_Build/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_Ed_Player_Build/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_LPA_API_Build/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_LPA_Secor_Build/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_LP_Backend_Build/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_LP_Build/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_LP_Neo4j_Build/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_LP_SyncTool_Build/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_SampleFlow_Build/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_TelemetryLogstash_Build/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_TelemetryService_Build/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Build/jobs/hostname/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Artifacts_Repo/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/AM_AdminUtils_Deploy_Dev/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/AM_Onboard_APIs/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/AM_Onboard_Consumers/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/API_Manager_Deploy_Dev/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/AnalyticsApi_Logs/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Application_ElasticSearch/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Application_ElasticSearch_Backup/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Application_ElasticSearch_Restore/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Assets_Upload_Azure/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Cassandra CQL Dumps/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Cassandra_CQL_Dumps/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Createuser/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Curl_Commands/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/DB_Bootstrap/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Deleteuser/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Dev_Test/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Devops_Test/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/DialPage_Upload_CDN/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Docker_Swarm_Config/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Docker_Swarm_Service_Info/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Docker_Swarm_Service_List/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Docker_Swarm_Service_Restart/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Docker_Swarm_Update/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Documentation_Jenkins_Slave/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Encryption_service_deploy/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Grafana_Dashboards_Export/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Grafana_Dashboards_Import/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Jenkins_Slave/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Keycloak_Deploy/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Keycloak_Provision/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Learning_Logs/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Logger_ES_Deploy_Dev/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Logger_ElasticSearch_Backup/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Logger_ElasticSearch_Restore/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Logger_Purge_Old_Logs/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Logging/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Logging_Registry/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Logs_For_Learning_Dev/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Monitoring/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/OpenSaber/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/OpenSaberEncryption/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Player_Upload_CDN/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Postgresql_Backup/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Postgresql_Data_Update/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Postgresql_Master/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Postgresql_Restore/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Prometheus_Backup/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Proxy/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Registry_Provision/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Run_Command/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Secor_Logs/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Spark_Logs/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_ActorService_Deploy_Dev/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Auth_Config_Build/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Auth_Config_Deploy/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Auth_Deploy/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Auth_Deploy_Backup_job/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Badger_Deploy/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Cassandra_Backup_Dev/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Cassandra_Backup_Test/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Cassandra_CQL_Restore/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Cassandra_Deploy/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Cassandra_Provision/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Cassandra_Restore_Dev/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_ConfigService_Deploy_Dev/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_ContentService_Deploy_Dev/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Docker_Reset/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Ed_Player_Deploy/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Functional_Test_Cases/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_LearnerService_Deploy_Dev/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Player_Deploy_Dev/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Provision_Kafka_Dev/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Provision_Secor_Dev/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Registry_Deploy_Dev/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_TelemetryService_Deploy_Dev/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Telemetry_Logstash_Datapipeline_Deploy_Dev/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Telemetry_Logstash_Deploy_Dev/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Swarm_Agent_Docker_Prune/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Swarm_Bootstrap/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Yarn_Logs/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/azure-cli/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/cassandra complete backup dev/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/docker-version-upgrade/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/hostname/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/player_all/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/tenant_cdn_upload/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/yo/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/New_Azure_Infra/config.xml create mode 100644 deploy/jenkins/jobs/Other/jobs/testjob/config.xml create mode 100644 deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Kafka/config.xml create mode 100644 deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Registry/config.xml create mode 100644 deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Secor/config.xml create mode 100644 deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/Cassandra/config.xml create mode 100644 deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/Kafka/config.xml create mode 100644 deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/TelemetrySearch/config.xml create mode 100644 deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/Zookeeper/config.xml create mode 100644 deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Yarn/config.xml create mode 100644 deploy/jenkins/jobs/Release/config.xml create mode 100644 deploy/jenkins/jobs/Release/jobs/startRelease/config.xml diff --git a/deploy/jenkins/jenkins-config-setup.sh b/deploy/jenkins/jenkins-config-setup.sh index 43d2549f9e..2b3eb2c7dd 100755 --- a/deploy/jenkins/jenkins-config-setup.sh +++ b/deploy/jenkins/jenkins-config-setup.sh @@ -2,9 +2,6 @@ bold=$(tput bold) normal=$(tput sgr0) -echo -e "\n\e[0;32m${bold}Restarting Jenkins service${normal}" -service jenkins restart - echo -e "\e[0;32m${bold}Jenkins configuration setup...${normal}" read -p 'Jenkins URL without http://: ' server read -p 'Jenkins admin username: ' username @@ -22,9 +19,5 @@ chown -R jenkins:jenkins /var/lib/jenkins/.m2 echo -e "\n\e[0;32m${bold}Installating plugins... ${normal}" ./butler plugins i -s $server -u $username -p $password -wget https://sunbirdpublic.blob.core.windows.net/installation/hudson.plugins.ansicolor.AnsiColorBuildWrapper.xml -rm /var/lib/jenkins/hudson.plugins.ansicolor.AnsiColorBuildWrapper.xml -mv hudson.plugins.ansicolor.AnsiColorBuildWrapper.xml /var/lib/jenkins -chown jenkins:jenkins /var/lib/jenkins/hudson.plugins.ansicolor.AnsiColorBuildWrapper.xml echo -e "\n\e[0;32m${bold}Go to manage jenkins -> Plugin manager -> Update center -> Check restart jenkins after installation${normal}" diff --git a/deploy/jenkins/jenkins-server-setup.sh b/deploy/jenkins/jenkins-server-setup.sh index e6741af815..267de57c3b 100755 --- a/deploy/jenkins/jenkins-server-setup.sh +++ b/deploy/jenkins/jenkins-server-setup.sh @@ -6,14 +6,13 @@ echo -e "\n\e[0;32m${bold}Updating the apt repo${normal}\n" apt-get update echo -e "\n\e[0;32m${bold}Installating JDK8${normal}\n" -apt-get install -y openjdk-8-jdk-headless +apt-get install -y openjdk-8-jdk echo -e "\n\e[0;32m${bold}Installating Jenkins${normal}" -rm -rf jenkins_2.154_all.deb -wget https://pkg.jenkins.io/debian/binary/jenkins_2.154_all.deb -dpkg -i jenkins_2.154_all.deb -apt install -y -f -dpkg -i jenkins_2.154_all.deb +wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add - +echo "deb https://pkg.jenkins.io/debian-stable binary/" >> /etc/apt/sources.list +sudo apt-get update +sudo apt-get install jenkins echo -e "\n\e[0;32m${bold}Installating PIP${normal}" apt-get install -y python-pip @@ -52,7 +51,4 @@ usermod -aG docker jenkins echo -e "\n\e[0;32m${bold}Creating bashrc for jenkins user ${normal}" cp /etc/skel/.bashrc /var/lib/jenkins -echo -e "\n\e[0;32m${bold}Restarting Jenkins service${normal}" -service jenkins restart - echo -e "\n\e[0;32m${bold}Installation complete. Please go to your jenkins URL and continue setup${normal}" diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/config.xml index 907032cec5..68477b8ac7 100644 --- a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/config.xml +++ b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/config.xml @@ -3,11 +3,6 @@ - - - - false - diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/APIManager/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/APIManager/config.xml index 8a4ed8e27b..169ae92eff 100644 --- a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/APIManager/config.xml +++ b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/APIManager/config.xml @@ -1,7 +1,6 @@ - hudson.model.ParametersDefinitionProperty @@ -67,7 +66,7 @@ - + 2 @@ -86,6 +85,7 @@ true false + 0 false diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/APIManagerEcho/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/APIManagerEcho/config.xml index 0b22326240..14f269d00f 100644 --- a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/APIManagerEcho/config.xml +++ b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/APIManagerEcho/config.xml @@ -1,7 +1,6 @@ - hudson.model.ParametersDefinitionProperty @@ -67,7 +66,7 @@ - + 2 @@ -86,6 +85,7 @@ true false + 0 false diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/AdminUtils/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/AdminUtils/config.xml index 989be17a46..ebad0e3a12 100644 --- a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/AdminUtils/config.xml +++ b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/AdminUtils/config.xml @@ -1,7 +1,6 @@ - hudson.model.ParametersDefinitionProperty @@ -67,7 +66,7 @@ - + 2 @@ -86,6 +85,7 @@ true false + 0 false diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Badger/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Badger/config.xml new file mode 100644 index 0000000000..fb75311741 --- /dev/null +++ b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Badger/config.xml @@ -0,0 +1,90 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + absolute_job_path + <font color=teal size=2>The metadata.json file of the last successful build will be copied from this job. Please specify the absolute path to the job.</font> + Build/Core/Badger + false + + + image_tag + <font color=teal size=2>Specify only tag. If the value is blank, version will be picked from the metadata.json file.</font> + + false + + + artifact_source + <font color=teal size=2>Choose the artifact source</font> + + + ArtifactRepo + JenkinsJob + + + + + + + + + + /Build/Core/Badger + + SUCCESS + 0 + BLUE + true + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + pipelines/upload/docker/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Config/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Config/config.xml new file mode 100644 index 0000000000..b5cb1f31d9 --- /dev/null +++ b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Config/config.xml @@ -0,0 +1,90 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + absolute_job_path + <font color=teal size=2>The metadata.json file of the last successful build will be copied from this job. Please specify the absolute path to the job.</font> + Build/Core/Config + false + + + image_tag + <font color=teal size=2>Specify only tag. If the value is blank, version will be picked from the metadata.json file.</font> + + false + + + artifact_source + <font color=teal size=2>Choose the artifact source</font> + + + ArtifactRepo + JenkinsJob + + + + + + + + + + /Build/Core/Config + + SUCCESS + 0 + BLUE + true + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + pipelines/upload/docker/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Content/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Content/config.xml index ce9b4b12fd..ab01610396 100644 --- a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Content/config.xml +++ b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Content/config.xml @@ -1,7 +1,6 @@ - hudson.model.ParametersDefinitionProperty @@ -67,7 +66,7 @@ - + 2 @@ -86,6 +85,7 @@ true false + 0 false diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Keycloak/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Keycloak/config.xml new file mode 100644 index 0000000000..94a8c052ee --- /dev/null +++ b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Keycloak/config.xml @@ -0,0 +1,98 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + absolute_job_path + <font color=teal size=2>The metadata.json file of the last successful build will be copied from this job. Please specify the absolute path to the job.</font> + Build/Core/Keycloak + false + + + build_number + <font color=teal size=2>Specify the build number to copy the artifact from. Default is last successful build of the job</font> + lastSuccessfulBuild + false + + + artifact_source + <font color=teal size=2>Choose the artifact source</font> + + + ArtifactRepo + JenkinsJob + + + + + + + + + + /Build/Core/Keycloak + + SUCCESS + 0 + BLUE + true + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/upload/artifacts/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Learner/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Learner/config.xml index fd14769369..f3b52f51e8 100644 --- a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Learner/config.xml +++ b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Learner/config.xml @@ -1,7 +1,6 @@ - hudson.model.ParametersDefinitionProperty @@ -67,7 +66,7 @@ - + 2 @@ -86,6 +85,7 @@ true false + 0 false diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Player/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Player/config.xml index 784b605082..8b221bd5e5 100644 --- a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Player/config.xml +++ b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Player/config.xml @@ -1,7 +1,6 @@ - hudson.model.ParametersDefinitionProperty @@ -67,7 +66,7 @@ - + 2 @@ -86,6 +85,7 @@ true false + 0 false diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Proxy/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Proxy/config.xml index ad52ffcde3..183235765d 100644 --- a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Proxy/config.xml +++ b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Proxy/config.xml @@ -1,7 +1,6 @@ - hudson.model.ParametersDefinitionProperty diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Telemetry/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Telemetry/config.xml index 8a1cab5917..217e4948b9 100644 --- a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Telemetry/config.xml +++ b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Telemetry/config.xml @@ -1,7 +1,6 @@ - hudson.model.ParametersDefinitionProperty @@ -67,7 +66,7 @@ - + 2 @@ -86,6 +85,7 @@ true false + 0 false diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/DataPipeline/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/DataPipeline/config.xml index 8ea23c96f5..68477b8ac7 100644 --- a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/DataPipeline/config.xml +++ b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/DataPipeline/config.xml @@ -3,12 +3,7 @@ - - - - false - - + diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/KnowledgePlatform/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/KnowledgePlatform/config.xml index 8ea23c96f5..68477b8ac7 100644 --- a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/KnowledgePlatform/config.xml +++ b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/KnowledgePlatform/config.xml @@ -3,12 +3,7 @@ - - - - false - - + diff --git a/deploy/jenkins/jobs/Build/jobs/Core/jobs/AdminUtils/config.xml b/deploy/jenkins/jobs/Build/jobs/Core/jobs/AdminUtils/config.xml index 79f0c9b9e5..97d5338239 100644 --- a/deploy/jenkins/jobs/Build/jobs/Core/jobs/AdminUtils/config.xml +++ b/deploy/jenkins/jobs/Build/jobs/Core/jobs/AdminUtils/config.xml @@ -1,7 +1,6 @@ - hudson.model.ParametersDefinitionProperty @@ -37,7 +36,7 @@ - + diff --git a/deploy/jenkins/jobs/Build/jobs/Core/jobs/Badger/config.xml b/deploy/jenkins/jobs/Build/jobs/Core/jobs/Badger/config.xml new file mode 100644 index 0000000000..7e6a752f1a --- /dev/null +++ b/deploy/jenkins/jobs/Build/jobs/Core/jobs/Badger/config.xml @@ -0,0 +1,82 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 10 + + + + + false + false + + + + + github_release_tag + <font color=teal size=2>If you want to build from a tag, specify the tag name. If this parameter is blank, latest commit hash will be used to build</font> + + false + + + + + + false + project + false + + + + + + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + images/openbadger/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Build/jobs/Core/jobs/Cassandra/config.xml b/deploy/jenkins/jobs/Build/jobs/Core/jobs/Cassandra/config.xml index 6bd3d66a8a..4cb5ef55d9 100644 --- a/deploy/jenkins/jobs/Build/jobs/Core/jobs/Cassandra/config.xml +++ b/deploy/jenkins/jobs/Build/jobs/Core/jobs/Cassandra/config.xml @@ -1,7 +1,6 @@ - hudson.model.ParametersDefinitionProperty @@ -37,14 +36,14 @@ - + - - + + 2 diff --git a/deploy/jenkins/jobs/Build/jobs/Core/jobs/Config/config.xml b/deploy/jenkins/jobs/Build/jobs/Core/jobs/Config/config.xml new file mode 100644 index 0000000000..d7943d0d3f --- /dev/null +++ b/deploy/jenkins/jobs/Build/jobs/Core/jobs/Config/config.xml @@ -0,0 +1,82 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 10 + + + + + false + false + + + + + github_release_tag + <font color=teal size=2>If you want to build from a tag, specify the tag name. If this parameter is blank, latest commit hash will be used to build</font> + + false + + + + + + false + project + false + + + + + + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-config.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Build/jobs/Core/jobs/Keycloak/config.xml b/deploy/jenkins/jobs/Build/jobs/Core/jobs/Keycloak/config.xml new file mode 100644 index 0000000000..2e9424dda4 --- /dev/null +++ b/deploy/jenkins/jobs/Build/jobs/Core/jobs/Keycloak/config.xml @@ -0,0 +1,68 @@ + + + + + false + + + + -1 + -1 + -1 + 1 + + + + + false + false + + + + + github_release_tag + <font color=teal size=2>If you want to build from a tag, specify the tag name. If this parameter is blank, latest commit hash will be used to build</font> + + false + + + + + + + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-auth.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Build/jobs/Core/jobs/Learner/config.xml b/deploy/jenkins/jobs/Build/jobs/Core/jobs/Learner/config.xml index 04c56ddc2b..a22053fe1a 100644 --- a/deploy/jenkins/jobs/Build/jobs/Core/jobs/Learner/config.xml +++ b/deploy/jenkins/jobs/Build/jobs/Core/jobs/Learner/config.xml @@ -1,7 +1,6 @@ - hudson.model.ParametersDefinitionProperty @@ -37,14 +36,14 @@ - + - + 2 @@ -63,6 +62,7 @@ true false + 0 false diff --git a/deploy/jenkins/jobs/Build/jobs/Core/jobs/Player/config.xml b/deploy/jenkins/jobs/Build/jobs/Core/jobs/Player/config.xml index f16755de15..b72cad4403 100644 --- a/deploy/jenkins/jobs/Build/jobs/Core/jobs/Player/config.xml +++ b/deploy/jenkins/jobs/Build/jobs/Core/jobs/Player/config.xml @@ -1,7 +1,6 @@ - hudson.model.ParametersDefinitionProperty @@ -37,14 +36,14 @@ - + - + 2 @@ -63,6 +62,7 @@ true false + 0 false diff --git a/deploy/jenkins/jobs/Build/jobs/Core/jobs/Telemetry/config.xml b/deploy/jenkins/jobs/Build/jobs/Core/jobs/Telemetry/config.xml index e1fa432c1d..647ca4e8ae 100644 --- a/deploy/jenkins/jobs/Build/jobs/Core/jobs/Telemetry/config.xml +++ b/deploy/jenkins/jobs/Build/jobs/Core/jobs/Telemetry/config.xml @@ -1,7 +1,6 @@ - hudson.model.ParametersDefinitionProperty @@ -37,14 +36,14 @@ - + - + 2 @@ -63,6 +62,7 @@ true false + 0 false diff --git a/deploy/jenkins/jobs/Build/jobs/DataPipeline/jobs/Analytics/config.xml b/deploy/jenkins/jobs/Build/jobs/DataPipeline/jobs/Analytics/config.xml index 67f758f2fa..4153658146 100644 --- a/deploy/jenkins/jobs/Build/jobs/DataPipeline/jobs/Analytics/config.xml +++ b/deploy/jenkins/jobs/Build/jobs/DataPipeline/jobs/Analytics/config.xml @@ -1,7 +1,6 @@ - hudson.model.ParametersDefinitionProperty @@ -37,14 +36,14 @@ - + - - + + 2 diff --git a/deploy/jenkins/jobs/Build/jobs/DataPipeline/jobs/CloudStorageSDK/config.xml b/deploy/jenkins/jobs/Build/jobs/DataPipeline/jobs/CloudStorageSDK/config.xml new file mode 100644 index 0000000000..ba86657338 --- /dev/null +++ b/deploy/jenkins/jobs/Build/jobs/DataPipeline/jobs/CloudStorageSDK/config.xml @@ -0,0 +1,82 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 1 + + + + + false + false + + + + + github_release_tag + <font color=teal size=2>If you want to build from a tag, specify the tag name. If this parameter is blank, latest commit hash will be used to build</font> + + false + + + + + + false + project + false + + + + + + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-cloud-storage-sdk.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + Jenkinsfile + false + + + true + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Build/jobs/DataPipeline/jobs/DataPipeline/config.xml b/deploy/jenkins/jobs/Build/jobs/DataPipeline/jobs/DataPipeline/config.xml index 28b05ba307..7108e6905a 100644 --- a/deploy/jenkins/jobs/Build/jobs/DataPipeline/jobs/DataPipeline/config.xml +++ b/deploy/jenkins/jobs/Build/jobs/DataPipeline/jobs/DataPipeline/config.xml @@ -1,7 +1,6 @@ - hudson.model.ParametersDefinitionProperty @@ -37,14 +36,14 @@ - + - + 2 @@ -63,6 +62,7 @@ true false + 0 false diff --git a/deploy/jenkins/jobs/Build/jobs/DataPipeline/jobs/Secor/config.xml b/deploy/jenkins/jobs/Build/jobs/DataPipeline/jobs/Secor/config.xml index 11f2ba28ac..71ff13e75b 100644 --- a/deploy/jenkins/jobs/Build/jobs/DataPipeline/jobs/Secor/config.xml +++ b/deploy/jenkins/jobs/Build/jobs/DataPipeline/jobs/Secor/config.xml @@ -1,7 +1,6 @@ - hudson.model.ParametersDefinitionProperty @@ -37,14 +36,14 @@ - + - + 2 @@ -63,6 +62,7 @@ true false + 0 false diff --git a/deploy/jenkins/jobs/Build/jobs/Plugins/config.xml b/deploy/jenkins/jobs/Build/jobs/Plugins/config.xml new file mode 100644 index 0000000000..68477b8ac7 --- /dev/null +++ b/deploy/jenkins/jobs/Build/jobs/Plugins/config.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + All + false + false + + + + + + + + false + + + + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Build/jobs/Plugins/jobs/CEPlugins/config.xml b/deploy/jenkins/jobs/Build/jobs/Plugins/jobs/CEPlugins/config.xml new file mode 100644 index 0000000000..56e9996526 --- /dev/null +++ b/deploy/jenkins/jobs/Build/jobs/Plugins/jobs/CEPlugins/config.xml @@ -0,0 +1,68 @@ + + + + + false + + + + -1 + -1 + -1 + -1 + + + + + false + false + + + + + github_release_tag + <font color=teal size=2>If you want to build from a tag, specify the tag name. If this parameter is blank, latest commit hash will be used to build</font> + + false + + + + + + false + project + false + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-content-plugins.git + + + + + sunbird-bootcamp + + + false + + + + true + false + + 0 + false + + + + Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Build/jobs/Plugins/jobs/CollectionEditor/config.xml b/deploy/jenkins/jobs/Build/jobs/Plugins/jobs/CollectionEditor/config.xml new file mode 100644 index 0000000000..7d49adbdd5 --- /dev/null +++ b/deploy/jenkins/jobs/Build/jobs/Plugins/jobs/CollectionEditor/config.xml @@ -0,0 +1,68 @@ + + + + + false + + + + -1 + -1 + -1 + -1 + + + + + false + false + + + + + github_release_tag + <font color=teal size=2>If you want to build from a tag, specify the tag name. If this parameter is blank, latest commit hash will be used to build</font> + + false + + + + + + false + project + false + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-collection-editor.git + + + + + sunbird-bootcamp + + + false + + + + true + false + + 0 + false + + + + Jenkinsfile.build + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Build/jobs/Plugins/jobs/ContentFramework/config.xml b/deploy/jenkins/jobs/Build/jobs/Plugins/jobs/ContentFramework/config.xml new file mode 100644 index 0000000000..32ad5fde54 --- /dev/null +++ b/deploy/jenkins/jobs/Build/jobs/Plugins/jobs/ContentFramework/config.xml @@ -0,0 +1,68 @@ + + + + + false + + + + -1 + -1 + -1 + -1 + + + + + false + false + + + + + github_release_tag + <font color=teal size=2>If you want to build from a tag, specify the tag name. If this parameter is blank, latest commit hash will be used to build</font> + + false + + + + + + false + project + false + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-content-editor.git + + + + + release-1.14.0-S2 + + + false + + + + true + false + + 0 + false + + + + Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Build/jobs/Plugins/jobs/ContentRendererPreview/config.xml b/deploy/jenkins/jobs/Build/jobs/Plugins/jobs/ContentRendererPreview/config.xml new file mode 100644 index 0000000000..93418804b9 --- /dev/null +++ b/deploy/jenkins/jobs/Build/jobs/Plugins/jobs/ContentRendererPreview/config.xml @@ -0,0 +1,68 @@ + + + + + false + + + + -1 + -1 + -1 + -1 + + + + + false + false + + + + + github_release_tag + <font color=teal size=2>If you want to build from a tag, specify the tag name. If this parameter is blank, latest commit hash will be used to build</font> + + false + + + + + + false + project + false + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-content-player.git + + + + + sunbird-bootcamp + + + false + + + + true + false + + 0 + false + + + + Jenkinsfile.build + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Build/jobs/Plugins/jobs/GenericEditor/config.xml b/deploy/jenkins/jobs/Build/jobs/Plugins/jobs/GenericEditor/config.xml new file mode 100644 index 0000000000..2966057205 --- /dev/null +++ b/deploy/jenkins/jobs/Build/jobs/Plugins/jobs/GenericEditor/config.xml @@ -0,0 +1,68 @@ + + + + + false + + + + -1 + -1 + -1 + -1 + + + + + false + false + + + + + github_release_tag + <font color=teal size=2>If you want to build from a tag, specify the tag name. If this parameter is blank, latest commit hash will be used to build</font> + + false + + + + + + false + project + false + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-generic-editor.git + + + + + sunbird-bootcamp + + + false + + + + false + false + + 0 + false + + + + Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/APIManager/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/APIManager/config.xml index cff90b9a42..7597a34a4d 100644 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/APIManager/config.xml +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/APIManager/config.xml @@ -1,7 +1,6 @@ - hudson.model.ParametersDefinitionProperty @@ -45,8 +44,8 @@ - - + + 2 diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/AdminUtils/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/AdminUtils/config.xml index 8d649a5eb3..b9c77ea30d 100644 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/AdminUtils/config.xml +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/AdminUtils/config.xml @@ -1,7 +1,6 @@ - hudson.model.ParametersDefinitionProperty @@ -45,8 +44,8 @@ - - + + 2 diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Badger/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Badger/config.xml new file mode 100644 index 0000000000..7c1192b824 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Badger/config.xml @@ -0,0 +1,84 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + absolute_job_path + <font color=teal size=2>The metadata.json file of the last successful build will be copied from this job. Please specify the absolute path to the job.</font> + ArtifactUpload/dev/Core/Badger + false + + + image_tag + <font color=teal size=2>Specify only tag. If the value is blank, tag will be picked from the metadata.json file.</font> + + false + + + + + + false + project + false + + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/deploy/badger/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Bootstrap/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Bootstrap/config.xml new file mode 100644 index 0000000000..dbaa37ff5f --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Bootstrap/config.xml @@ -0,0 +1,53 @@ + + + + + false + + + + -1 + -1 + -1 + 5 + + + + false + false + + + + + hosts + <font color=teal size=2>Enter the host name to be bootstrapped.</font> + all + false + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline.git + f37ad21f-744a-4817-9f5e-02f8ec620b39 + + + + + ${public_repo_branch} + + + false + + + + pipelines/bootstrap/Jenkinsfile + true + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Cassandra/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Cassandra/config.xml index 256d54e8e9..7da1848237 100644 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Cassandra/config.xml +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Cassandra/config.xml @@ -31,14 +31,14 @@ choice-parameter-9600649228560 1 false - + false @@ -56,7 +56,7 @@ choice-parameter-9600651313765 1 false - + false @@ -83,7 +83,7 @@ return "<b>Not Applicable</b>" choice-parameter-9600653373369 1 false - + false @@ -105,9 +105,16 @@ return "<b>Not Applicable</b>" + + + false + project + false + + - + 2 @@ -126,6 +133,7 @@ return "<b>Not Applicable</b>" true false + 0 false diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Config/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Config/config.xml new file mode 100644 index 0000000000..d8edd73b07 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Config/config.xml @@ -0,0 +1,84 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + absolute_job_path + <font color=teal size=2>The metadata.json file of the last successful build will be copied from this job. Please specify the absolute path to the job.</font> + ArtifactUpload/dev/Core/Config + false + + + image_tag + <font color=teal size=2>Specify only tag. If the value is blank, tag will be picked from the metadata.json file.</font> + + false + + + + + + false + project + false + + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/deploy/config-service/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Content/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Content/config.xml index 417ad6883e..0054bd4a3a 100644 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Content/config.xml +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Content/config.xml @@ -1,7 +1,6 @@ - hudson.model.ParametersDefinitionProperty @@ -46,7 +45,7 @@ - + 2 @@ -65,6 +64,7 @@ true false + 0 false diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Learner/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Learner/config.xml index a6c27e73c2..1e914e617b 100644 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Learner/config.xml +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Learner/config.xml @@ -1,7 +1,6 @@ - hudson.model.ParametersDefinitionProperty @@ -46,7 +45,7 @@ - + 2 @@ -65,6 +64,7 @@ true false + 0 false diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Player/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Player/config.xml index 158e642b1e..011dbddbec 100644 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Player/config.xml +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Player/config.xml @@ -1,7 +1,6 @@ - hudson.model.ParametersDefinitionProperty @@ -46,7 +45,7 @@ - + 2 @@ -65,6 +64,7 @@ true false + 0 false diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Telemetry/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Telemetry/config.xml index a971d6fe38..65c00a3bb6 100644 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Telemetry/config.xml +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Telemetry/config.xml @@ -1,7 +1,6 @@ - hudson.model.ParametersDefinitionProperty @@ -46,7 +45,7 @@ - + 2 @@ -65,6 +64,7 @@ true false + 0 false diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsFetchLogs/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsFetchLogs/config.xml new file mode 100644 index 0000000000..99a10dd4f2 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsFetchLogs/config.xml @@ -0,0 +1,91 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + instance_name + <font color=teal size=2>Choose the instance to fetch logs.</font> + + + spark + analytics-api + secor + cassandra + + + + + action + <font color=teal size=2>Choose one of the option - Fetch logs or set cronjob.</font> + + + fetch-logs + cronjobs + + + + + + + + false + project + false + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/deploy/fetch-logs/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsGeoLocationDBSetup/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsGeoLocationDBSetup/config.xml new file mode 100644 index 0000000000..2d4c3937ea --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsGeoLocationDBSetup/config.xml @@ -0,0 +1,65 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + false + project + false + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/deploy/geolocation-db-setup/Jenkinsfile + false + + + true + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsPopulatePSQLConsumerChannelMapping/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsPopulatePSQLConsumerChannelMapping/config.xml new file mode 100644 index 0000000000..dccde461cf --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsPopulatePSQLConsumerChannelMapping/config.xml @@ -0,0 +1,97 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + Consumer_id + <font color=teal size=2>mention the consumer ID.</font> + id + false + + + Channel_id + <font color=teal size=2>Channel ID to map with the Consumer ID.</font> + channel_id + false + + + status + <font color=teal size=2> 1 - to activate 0 - to make it inactive</font> + + + 1 + 0 + + + + + Created_by + <font color=teal size=2>created by.</font> + analytics-team + false + + + + + + false + project + false + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/deploy/PopulatePSQL-ConsumerChannelMapping/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsReplayJobs/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsReplayJobs/config.xml new file mode 100644 index 0000000000..766a05afa9 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsReplayJobs/config.xml @@ -0,0 +1,111 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + cql_query + <font color=teal size=2>Specify cql_query if any tables needs to be truncated.</font> + 0 + false + + + job_type + <font color=teal size=2>Specify the job type - Replay or Run.</font> + + + replay-job + run-job + generate-metrics + submit-job + + + + + job_id + <font color=teal size=2>Specify the job id.</font> + + false + + + start_date + <font color=teal size=2>Specify the start date. The default value is just a placeholder which can be changed as per need.</font> + 2017-05-01 + false + + + end_date + <font color=teal size=2>Specify the end date. The default value is just a placeholder which can be changed as per need.</font> + 2017-07-11 + false + + + pause_min + <font color=teal size=2>Specify the # of minutes to pause. The default value is just a placeholder which can be changed as per need.</font> + 30 + false + + + + + + false + project + false + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/deploy/replay-jobs/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsStartJobManager/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsStartJobManager/config.xml new file mode 100644 index 0000000000..2a9b036019 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsStartJobManager/config.xml @@ -0,0 +1,75 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + pause_min + <font color=teal size=2>Pause for # of minutes.</font> + 5 + false + + + + + + false + project + false + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/deploy/start-jobmanager/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsSubmitJobs/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsSubmitJobs/config.xml new file mode 100644 index 0000000000..997732cf24 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsSubmitJobs/config.xml @@ -0,0 +1,75 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + pause_min + <font color=teal size=2>Pause for # of minutes.</font> + 5 + false + + + + + + false + project + false + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/deploy/submit-jobs/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/ContentTool/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/ContentTool/config.xml new file mode 100644 index 0000000000..f669b39427 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/ContentTool/config.xml @@ -0,0 +1,76 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + absolute_job_path + <font color=teal size=2>Please specify the absolute path to the job from which the metadata.json will be copied.</font> + ArtifactUpload/dev/KnowledgePlatform/KnowledgePlatform + false + + + command + <font color=teal size=2>enter the command</font> + sync + false + + + parameters + <font color=teal size=2>enter the do id </font> + + false + + + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-learning-platform.git + f37ad21f-744a-4817-9f5e-02f8ec620b39 + + + + + ${public_repo_branch} + + + false + + + + pipelines/deploy/content_tool/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/DefinitionUpdate/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/DefinitionUpdate/config.xml new file mode 100644 index 0000000000..f5592a1956 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/DefinitionUpdate/config.xml @@ -0,0 +1,53 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-learning-platform.git + + + + + ${public_repo_branch} + + + false + + + + pipelines/deploy/definition_update/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/FileSyncTool/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/FileSyncTool/config.xml new file mode 100644 index 0000000000..dc183d2f86 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/FileSyncTool/config.xml @@ -0,0 +1,67 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + absolute_job_path + <font color=teal size=2>Please specify the absolute path to the job from which the metadata.json will be copied.</font> + ArtifactUpload/dev/KnowledgePlatform/Synctool + false + + + filename + <font color=teal size=2>enter valid filename with extention</font> + + false + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-learning-platform.git + f37ad21f-744a-4817-9f5e-02f8ec620b39 + + + + + ${public_repo_branch} + + + false + + + + pipelines/deploy/sync_file/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/SamzaTelemetrySchemas/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/SamzaTelemetrySchemas/config.xml new file mode 100644 index 0000000000..7fe8b48f50 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/SamzaTelemetrySchemas/config.xml @@ -0,0 +1,66 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + host + <font color=teal size=2>Please specify host to deploy. The default value is just a placeholder which can be changed as per inventory.</font> + dp-yarn + false + + + version + <font color=teal size=2>Please specify version to deploy. The default value is just a placeholder which can be changed as per need.</font> + release-1.9 + false + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-learning-platform.git + + + + + ${public_repo_branch} + + + false + + + + pipelines/deploy/samza_telemetry_schemas/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Plugins/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Plugins/config.xml new file mode 100644 index 0000000000..e25dcd1341 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Plugins/config.xml @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + All + false + false + + + + + + + + false + + + + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Plugins/jobs/CollectionEditor/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Plugins/jobs/CollectionEditor/config.xml new file mode 100644 index 0000000000..d9ea9fc12c --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Plugins/jobs/CollectionEditor/config.xml @@ -0,0 +1,65 @@ + + + + + false + + + false + false + + + + + absolute_job_path + <font color=teal size=2>Please specify the absolute path to the job from which the metadata.json will be copied.</font> + Build/Plugins/CollectionEditor + false + + + container_name + <font color=teal size=2>Please specify azure container name.</font> + plugins + false + + + + + + false + project + false + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-collection-editor.git + + + + + sunbird-bootcamp + + + false + + + + true + false + + 0 + false + + + + Jenkinsfile.deploy + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Plugins/jobs/ContentFramework/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Plugins/jobs/ContentFramework/config.xml new file mode 100644 index 0000000000..d17b47fc6a --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Plugins/jobs/ContentFramework/config.xml @@ -0,0 +1,65 @@ + + + + + false + + + false + false + + + + + absolute_job_path + <font color=teal size=2>Please specify the absolute path to the job from which the metadata.json will be copied.</font> + Build/Plugins/GenericEditor + false + + + container_name + <font color=teal size=2>Please specify azure container name.</font> + plugins + false + + + + + + false + project + false + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-content-editor.git + + + + + release-1.14.0-S2 + + + false + + + + true + false + + 0 + false + + + + Jenkinsfile.deploy + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Plugins/jobs/ContentRendererPreview/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Plugins/jobs/ContentRendererPreview/config.xml new file mode 100644 index 0000000000..f82874aeb5 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Plugins/jobs/ContentRendererPreview/config.xml @@ -0,0 +1,65 @@ + + + + + false + + + false + false + + + + + absolute_job_path + <font color=teal size=2>Please specify the absolute path to the job from which the metadata.json will be copied.</font> + Build/Plugins/CollectionEditor + false + + + container_name + <font color=teal size=2>Please specify azure container name.</font> + plugins + false + + + + + + false + project + false + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-content-player.git + + + + + sunbird-bootcamp + + + false + + + + true + false + + 0 + false + + + + Jenkinsfile.deploy + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Plugins/jobs/GenericEditor/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Plugins/jobs/GenericEditor/config.xml new file mode 100644 index 0000000000..53213da2eb --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Plugins/jobs/GenericEditor/config.xml @@ -0,0 +1,65 @@ + + + + + false + + + false + false + + + + + absolute_job_path + <font color=teal size=2>Please specify the absolute path to the job from which the metadata.json will be copied.</font> + Build/Plugins/GenericEditor + false + + + container_name + <font color=teal size=2>Please specify azure container name.</font> + plugins + false + + + + + + false + project + false + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-generic-editor.git + + + + + sunbird-bootcamp + + + false + + + + true + false + + 0 + false + + + + Jenkinsfile.deploy + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Summary/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Summary/config.xml index 8ea23c96f5..68477b8ac7 100644 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Summary/config.xml +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Summary/config.xml @@ -3,12 +3,7 @@ - - - - false - - + diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/AnalyticsAPILogs/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/AnalyticsAPILogs/config.xml new file mode 100644 index 0000000000..c89f254ee1 --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/AnalyticsAPILogs/config.xml @@ -0,0 +1,51 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + 2 + + + https://github.com/ekstep/sunbird-devops.git + 64bdfe13-cc30-4864-bd3c-4e89be89fc9d + + + + + DO-380 + + + false + + + + pipelines/analytics-api-logs/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/config.xml b/deploy/jenkins/jobs/Other/config.xml new file mode 100644 index 0000000000..e25dcd1341 --- /dev/null +++ b/deploy/jenkins/jobs/Other/config.xml @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + All + false + false + + + + + + + + false + + + + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Build/config.xml b/deploy/jenkins/jobs/Other/jobs/Build/config.xml new file mode 100644 index 0000000000..68477b8ac7 --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Build/config.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + All + false + false + + + + + + + + false + + + + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Build/jobs/Cassandra_Build/config.xml b/deploy/jenkins/jobs/Other/jobs/Build/jobs/Cassandra_Build/config.xml new file mode 100644 index 0000000000..e1c34d4890 --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Build/jobs/Cassandra_Build/config.xml @@ -0,0 +1,38 @@ + + + + + false + + + false + false + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-utils.git + 64bdfe13-cc30-4864-bd3c-4e89be89fc9d + + + + + */release-1.12 + + + false + + + + Jenkinsfile.Build + true + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Build/jobs/DP_Build/config.xml b/deploy/jenkins/jobs/Other/jobs/Build/jobs/DP_Build/config.xml new file mode 100644 index 0000000000..0795a18b84 --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Build/jobs/DP_Build/config.xml @@ -0,0 +1,48 @@ + + + + + + jenkins.model.BuildDiscarderProperty + + + + + false + + + false + false + + + + -1 + -1 + -1 + 2 + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline + + + + + */DO-461 + + + false + + + + Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Build/jobs/Encryption_Build/config.xml b/deploy/jenkins/jobs/Other/jobs/Build/jobs/Encryption_Build/config.xml new file mode 100644 index 0000000000..cce1b84761 --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Build/jobs/Encryption_Build/config.xml @@ -0,0 +1,34 @@ + + + + + false + + + + + + + + 2 + + + https://github.com/project-sunbird/enc-service + f37ad21f-744a-4817-9f5e-02f8ec620b39 + + + + + */master + + + false + + + + Jenkinsfile + true + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Build/jobs/Keycloak_Build/config.xml b/deploy/jenkins/jobs/Other/jobs/Build/jobs/Keycloak_Build/config.xml new file mode 100644 index 0000000000..7d9d21269e --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Build/jobs/Keycloak_Build/config.xml @@ -0,0 +1,34 @@ + + + + + false + + + + + + + + 2 + + + https://github.com/ekstep/sunbird-devops.git + f37ad21f-744a-4817-9f5e-02f8ec620b39 + + + + + */release-1.12 + + + false + + + + pipelines/keycloak-build/Jenkinsfile.dev + true + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Build/jobs/Keycloak_Custom_PKG/config.xml b/deploy/jenkins/jobs/Other/jobs/Build/jobs/Keycloak_Custom_PKG/config.xml new file mode 100644 index 0000000000..d6ff5aca40 --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Build/jobs/Keycloak_Custom_PKG/config.xml @@ -0,0 +1,34 @@ + + + + + false + + + + + + + + 2 + + + https://github.com/ekstep/sunbird-devops.git + f37ad21f-744a-4817-9f5e-02f8ec620b39 + + + + + */release-1.9 + + + false + + + + pipelines/keycloak-build/Jenkinsfile.KeycloakBuild.dev + true + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Build/jobs/OpenSaberBuild/config.xml b/deploy/jenkins/jobs/Other/jobs/Build/jobs/OpenSaberBuild/config.xml new file mode 100644 index 0000000000..9eab746f6c --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Build/jobs/OpenSaberBuild/config.xml @@ -0,0 +1,42 @@ + + + + Sunbird Player Build Pipeline + false + + + + 10 + 10 + -1 + -1 + + + + + + + + + 2 + + + https://github.com/project-sunbird/open-saber.git + f37ad21f-744a-4817-9f5e-02f8ec620b39 + + + + + */master + + + false + + + + Jenkinsfile + true + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Build/jobs/Opensaber_Build/config.xml b/deploy/jenkins/jobs/Other/jobs/Build/jobs/Opensaber_Build/config.xml new file mode 100644 index 0000000000..a10654622f --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Build/jobs/Opensaber_Build/config.xml @@ -0,0 +1,42 @@ + + + + Sunbird Player Build Pipeline + false + + + + 10 + 10 + -1 + -1 + + + + + + + + + 2 + + + https://github.com/rjshrjndrn/enc-service + f37ad21f-744a-4817-9f5e-02f8ec620b39 + + + + + */DO-173 + + + false + + + + Jenkinsfile + true + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Build/jobs/Secor_Build/config.xml b/deploy/jenkins/jobs/Other/jobs/Build/jobs/Secor_Build/config.xml new file mode 100644 index 0000000000..a06da866d4 --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Build/jobs/Secor_Build/config.xml @@ -0,0 +1,38 @@ + + + + + false + + + false + false + + + + + + + + 2 + + + https://github.com/Kaali09/secor.git + f37ad21f-744a-4817-9f5e-02f8ec620b39 + + + + + */DO-327 + + + false + + + + Jenkinsfile.build + true + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_ActorService_Build/config.xml b/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_ActorService_Build/config.xml new file mode 100644 index 0000000000..6cd1fa0965 --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_ActorService_Build/config.xml @@ -0,0 +1,50 @@ + + + + Sunbird Player Pipeline + false + + + + 10 + 10 + -1 + -1 + + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-lms-mw.git + f37ad21f-744a-4817-9f5e-02f8ec620b39 + + + + + */release-1.12 + + + false + + + + false + true + false + + false + + + + Jenkinsfile + true + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_Analytics_Build_Framework/config.xml b/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_Analytics_Build_Framework/config.xml new file mode 100644 index 0000000000..1dc7ee9bb4 --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_Analytics_Build_Framework/config.xml @@ -0,0 +1,121 @@ + + + + + false + + + + 10 + 20 + -1 + -1 + + + + + 2 + + + https://github.com/project-sunbird/sunbird-analytics.git + f37ad21f-744a-4817-9f5e-02f8ec620b39 + + + + + */dialcode_usage_etb_coverage + + + false + + + + platform-framework/.* + platform-modules/.* +platform-api/.* +platform-scripts/.* + + + false + true + true + + false + + + + + 10.6.0.6-5358553b + false + false + false + false + + false + + org.ekstep + platform-framework + + platform-framework/pom.xml + clean install -DskipTests + true + false + false + false + false + false + false + false + false + -1 + false + false + true + + + + + + Sunbird_Analytics_DataProducts_Build + + SUCCESS + 0 + BLUE + true + + + + + + + Sunbird_Analytics_DataProducts_Build + SUCCESS + false + false + + + + + + + xterm + + + + + sed -i "s/localhost:8086/10.42.6.174:8086/g" platform-framework/analytics-core/src/test/resources/application.conf + + + + + cd platform-framework +#mvn scoverage:report + + + + SUCCESS + 0 + BLUE + true + + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_Analytics_DataProducts_Build/config.xml b/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_Analytics_DataProducts_Build/config.xml new file mode 100644 index 0000000000..9755384cce --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_Analytics_DataProducts_Build/config.xml @@ -0,0 +1,117 @@ + + + + + false + + + + -1 + 5 + -1 + -1 + + + + + 2 + + + https://github.com/project-sunbird/sunbird-analytics.git + f37ad21f-744a-4817-9f5e-02f8ec620b39 + + + + + */release-1.12 + + + false + + + + platform-modules/.* +platform-scripts/.* + platform-api/.* +platform-framework/.* + + + + + 10.6.0.6-5358553b + false + false + false + false + + false + + org.ekstep + platform-modules + + platform-modules/pom.xml + clean install -DskipTests + true + false + false + false + false + false + false + false + false + -1 + false + false + true + + + + + + New_Build/Sunbird_LPA_API_Build + + SUCCESS + 0 + BLUE + true + + + + + + xterm + + + + + sed -i "s/localhost:8086/10.42.6.174:8086/g" platform-modules/batch-models/src/test/resources/application.conf +# sed -i "s/cassandra.service.embedded.enable=false/cassandra.service.embedded.enable=true/g" platform-modules/batch-models/src/test/resources/application.conf +sed -i "s/spark.cassandra.connection.host=127.0.0.1/spark.cassandra.connection.host=10.10.4.4/g" platform-modules/batch-models/src/test/resources/application.conf +rm -rf /tmp/graph.db/ +rm -rf script +mkdir script +cp -r platform-scripts/python/main/BusinessMetrics script +cp -r platform-scripts/python/main/vidyavaani script +cp -r platform-scripts/VidyaVani/GenieSearch script +cp -r platform-scripts/VidyaVani/VidyavaniCnQ script +zip -r script.zip script + + + + + cd platform-modules/job-manager +mvn clean package + + + # cd platform-modules +# mvn scoverage:report + + + + SUCCESS + 0 + BLUE + true + + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_Auth_Build/config.xml b/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_Auth_Build/config.xml new file mode 100644 index 0000000000..ec311be53a --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_Auth_Build/config.xml @@ -0,0 +1,34 @@ + + + + + false + + + + + + + + 2 + + + https://github.com/ahghatol/sunbird-auth.git + sunbird_api_key_secret + + + + + */release-1.12 + + + false + + + + keycloak/scripts/pipelines/keycloak-build/Jenkinsfile.dev + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_Auth_Build_Back/config.xml b/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_Auth_Build_Back/config.xml new file mode 100644 index 0000000000..b2b0906e00 --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_Auth_Build_Back/config.xml @@ -0,0 +1,43 @@ + + + + + false + + + + 120 + 5 + -1 + -1 + + + + + + + + + 2 + + + refs/heads/newmaster + https://github.com/ahghatol/sunbird-auth.git + f37ad21f-744a-4817-9f5e-02f8ec620b39 + + + + + refs/heads/newmaster + + + false + + + + keycloak/scripts/pipelines/keycloak-build/Jenkinsfile.dev + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_Auth_Config_Build_Back/config.xml b/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_Auth_Config_Build_Back/config.xml new file mode 100644 index 0000000000..d52215b0b0 --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_Auth_Config_Build_Back/config.xml @@ -0,0 +1,34 @@ + + + + + false + + + + + + + + 2 + + + https://github.com/ahghatol/sunbird-auth.git + f37ad21f-744a-4817-9f5e-02f8ec620b39 + + + + + */master + + + false + + + + keycloak/scripts/pipelines/keycloak-build/JenkinsfileConfig.dev + true + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_Badger/config.xml b/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_Badger/config.xml new file mode 100644 index 0000000000..25c730690c --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_Badger/config.xml @@ -0,0 +1,46 @@ + + + + + + + + + + + + false + + + + 5 + 5 + -1 + -1 + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + f37ad21f-744a-4817-9f5e-02f8ec620b39 + + + + + */release-1.10 + + + false + + + + images/openbadger/Jenkinsfile.build + true + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_Cloud_Storage_SDK_Build/config.xml b/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_Cloud_Storage_SDK_Build/config.xml new file mode 100644 index 0000000000..ef91d359d8 --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_Cloud_Storage_SDK_Build/config.xml @@ -0,0 +1,84 @@ + + + + Build for the Sunbird Cloud Storage Library + false + + + + -1 + 5 + -1 + -1 + + + + + 2 + + + https://github.com/project-sunbird/sunbird-cloud-storage-sdk.git + f37ad21f-744a-4817-9f5e-02f8ec620b39 + + + + + */analytics-migration + + + false + + + + 10.6.0.6-5358553b + false + false + false + false + + false + + org.sunbird + sunbird-cloud-store-sdk + + clean install -DskipTests + true + false + false + false + false + false + false + false + false + -1 + false + false + true + + + + + + target/sunbird-cloud-store-sdk-1.0.jar + false + false + false + true + true + + + + + xterm + + + + + + SUCCESS + 0 + BLUE + true + + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_EP_API_Build/config.xml b/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_EP_API_Build/config.xml new file mode 100644 index 0000000000..d332ede982 --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_EP_API_Build/config.xml @@ -0,0 +1,59 @@ + + + + + false + + + 2 + + + https://github.com/ekstep/Ecosystem-Platform-API.git + f37ad21f-744a-4817-9f5e-02f8ec620b39 + + + + + */master + + + false + + + + 10.6.0.6-42af1517 + false + false + false + false + + false + + + . /etc/profile +export GOPATH=/home/ops/go +export PATH=$PATH:$GOPATH/bin +go version +rm -f $GOPATH/src/ecosystem-platform-api +ln -s $WORKSPACE $GOPATH/src/ecosystem-platform-api +godep go test ./... +godep go build -o ecosystem-platform-api +tar -cvf ecosystem-api.tgz db/ schemas/ page_config/ ecosystem-platform-api + + + + + ecosystem-api.tgz + false + false + false + true + true + + + + + xterm + + + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_EP_Build/config.xml b/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_EP_Build/config.xml new file mode 100644 index 0000000000..81037d916f --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_EP_Build/config.xml @@ -0,0 +1,80 @@ + + + + + false + + + + 7 + 3 + -1 + -1 + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline.git + f37ad21f-744a-4817-9f5e-02f8ec620b39 + + + + + */master + + + false + + + + true + false + + 5 + false + + + + 10.6.0.6-5358553b + false + false + false + false + + false + + + cd $WORKSPACE +tar -cvf ep.tgz data-async-processors data-indexer data-generator lib tasks + + + -f data-pipeline/pom.xml -Dlog4j.configuration=/home/ops/workspace/New_Build/Sunbird_EP_Build/logs -Dcobertura.report.format=xml clean cobertura:cobertura package + Maven + false + + + false + + + + + false + + + ep.tgz,**/distribution/target/*distribution.tar.gz + false + false + false + true + true + + + + + xterm + + + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_EP_Upgrade_Build/config.xml b/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_EP_Upgrade_Build/config.xml new file mode 100644 index 0000000000..ed29efb92f --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_EP_Upgrade_Build/config.xml @@ -0,0 +1,124 @@ + + + + + false + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline.git + f37ad21f-744a-4817-9f5e-02f8ec620b39 + + + + + */release-1.12 + + + false + + + + + + 10.6.0.6-5358553b + false + false + false + false + + false + + + cd $WORKSPACE +#tar -cvf ep.tgz data-async-processors data-indexer data-generator lib tasks + + + -f data-pipeline/pom.xml -Dlog4j.configuration=/home/ops/workspace/New_Build/Sunbird_EP_Upgrade_Build/logs -Dcobertura.report.format=xml clean cobertura:cobertura package + Maven + false + + + false + + + + + false + + + **/distribution/target/*distribution.tar.gz + false + false + false + true + true + + + data**/*/target/site/cobertura/coverage.xml + false + false + false + false + false + false + 0 + true + 80, 0, 0 + 80, 0, 0 + 70, 0, 0 + + + + METHOD + 8000000 + + + LINE + 8000000 + + + CONDITIONAL + 7000000 + + + + + + + METHOD + 0 + + + LINE + 0 + + + CONDITIONAL + 0 + + + + + + + METHOD + 0 + + + LINE + 0 + + + CONDITIONAL + 0 + + + + ASCII + + + + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_Ed_ConfigService_Build/config.xml b/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_Ed_ConfigService_Build/config.xml new file mode 100644 index 0000000000..9515a9c815 --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_Ed_ConfigService_Build/config.xml @@ -0,0 +1,50 @@ + + + + Sunbird Config Service Pipeline + false + + + + 10 + 10 + -1 + -1 + + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-config.git + f37ad21f-744a-4817-9f5e-02f8ec620b39 + + + + + */release-1.12 + + + false + + + + false + true + false + + false + + + + Jenkinsfile + true + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_Ed_ContentService_Build/config.xml b/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_Ed_ContentService_Build/config.xml new file mode 100644 index 0000000000..1335ac608f --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_Ed_ContentService_Build/config.xml @@ -0,0 +1,50 @@ + + + + Sunbird Player Pipeline + false + + + + 4 + 10 + -1 + -1 + + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-content-service.git + f37ad21f-744a-4817-9f5e-02f8ec620b39 + + + + + */release-1.12 + + + false + + + + false + true + false + + false + + + + Jenkinsfile + true + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_Ed_LearnerService_Build/config.xml b/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_Ed_LearnerService_Build/config.xml new file mode 100644 index 0000000000..55284d3bb3 --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_Ed_LearnerService_Build/config.xml @@ -0,0 +1,42 @@ + + + + Sunbird Learner Service Pipeline + false + + + + 10 + 10 + -1 + -1 + + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-lms-service.git + f37ad21f-744a-4817-9f5e-02f8ec620b39 + + + + + */release-1.12 + + + false + + + + Jenkinsfile + true + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_Ed_Player_Build/config.xml b/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_Ed_Player_Build/config.xml new file mode 100644 index 0000000000..8210e42833 --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_Ed_Player_Build/config.xml @@ -0,0 +1,41 @@ + + + + Sunbird-ED Player Build Pipeline + false + + + + 10 + 10 + -1 + -1 + + + + + + + + + 2 + + + https://github.com/Sunbird-Ed/SunbirdEd-portal.git + + + + + */release-1.13 + + + false + + + + Jenkinsfile + true + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_LPA_API_Build/config.xml b/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_LPA_API_Build/config.xml new file mode 100644 index 0000000000..848462ca1d --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_LPA_API_Build/config.xml @@ -0,0 +1,103 @@ + + + + + false + + + + 10 + 20 + -1 + -1 + + + + + 2 + + + https://github.com/project-sunbird/sunbird-analytics.git + f37ad21f-744a-4817-9f5e-02f8ec620b39 + + + + + */release-1.12 + + + false + + + + true + false + + 5 + false + + + + 10.6.0.6-5358553b + false + false + false + false + + false + + org.ekstep + platform-api + + platform-api/pom.xml + clean install -DskipTests + true + false + false + false + false + false + false + false + false + -1 + false + false + true + + + + + + + xterm + + + + + sed -i 's:>logs<:>/mount/data/analytics/logs/api-service<:g' platform-api/analytics-api/conf/log4j2.xml +sed -i 's:${application.home\:-.}/logs:/mount/data/analytics/logs/api-service:g' platform-api/analytics-api/conf/logback.xml +sed -i "s/cassandra.service.embedded.enable=false/cassandra.service.embedded.enable=true/g" platform-api/analytics-api/conf/application.conf +sed -i "s/cassandra.service.embedded.enable=false/cassandra.service.embedded.enable=true/g" platform-api/analytics-api-core/src/test/resources/application.conf +#sed -i "s/'replication_factor': '2'/'replication_factor': '1'/g" platform-scripts/database/data.cql +rm -rf script +mkdir script +cp -r platform-scripts/python/main/vidyavaani script +cp -r platform-scripts/VidyaVani/GenieSearch script +cp -r platform-scripts/VidyaVani/VidyavaniCnQ script +zip -r script.zip script + + + + + cd platform-api +mvn play2:dist -pl analytics-api + + + + SUCCESS + 0 + BLUE + true + + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_LPA_Secor_Build/config.xml b/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_LPA_Secor_Build/config.xml new file mode 100644 index 0000000000..8d343a4648 --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_LPA_Secor_Build/config.xml @@ -0,0 +1,71 @@ + + + + + false + + + 2 + + + https://github.com/project-sunbird/secor.git + f37ad21f-744a-4817-9f5e-02f8ec620b39 + + + + + */secor-0.24 + + + false + + + + 10.6.0.6-5358553b + false + false + false + false + + false + + com.pinterest + secor + + clean -Pkafka-0.10 package + true + false + false + false + false + false + false + false + false + -1 + false + false + true + + + + + + target/secor-0.24-SNAPSHOT-bin.tar.gz + false + false + false + true + true + + + + + + + FAILURE + 2 + RED + true + + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_LP_Backend_Build/config.xml b/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_LP_Backend_Build/config.xml new file mode 100644 index 0000000000..d065d860cf --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_LP_Backend_Build/config.xml @@ -0,0 +1,90 @@ + + + + + false + + + + -1 + 3 + -1 + -1 + + + + + 2 + + + https://github.com/project-sunbird/sunbird-learning-platform.git + sunbird_api_key_secret + + + + + */QRCodeSamzaJob + + + false + + + + true + false + + 5 + false + + + false + true + false + + true + + + + 10.6.0.6-5358553b + false + false + false + false + + false + + org.ekstep + ekstep-platform + + clean package -DskipTests -P samza-jobs + true + false + false + false + false + false + false + false + false + -1 + false + false + true + + + + + + + xterm + + + + + + SUCCESS + 0 + BLUE + true + + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_LP_Build/config.xml b/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_LP_Build/config.xml new file mode 100644 index 0000000000..b6da8d7381 --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_LP_Build/config.xml @@ -0,0 +1,91 @@ + + + + + false + + + 2 + + + https://github.com/project-sunbird/sunbird-learning-platform.git + f37ad21f-744a-4817-9f5e-02f8ec620b39 + + + + + */QRCodeSamzaJob + + + false + + + + false + true + false + + true + + + + 10.6.0.6-5358553b + false + false + false + false + + false + + org.ekstep + ekstep-platform + + clean install -DskipTests + true + false + false + false + false + false + false + false + false + 30 + false + false + true + + + + + + + xterm + + + + + java -version +rm -rf /data/logs/* +rm -rf /data/graphDB/* +rm -rf /data/testgraphDB/* +rm -rf /data/testGraphDB/* +vim -esnc '%s/dialcode.es_conn_info="localhost:9200"/dialcode.es_conn_info="10.6.0.11:9200"/g|:wq' platform-core/unit-tests/src/test/resources/application.conf +vim -esnc '%s/search.es_conn_info="localhost:9200"/search.es_conn_info="10.6.0.11:9200"/g|:wq' platform-core/unit-tests/src/test/resources/application.conf +vim -esnc '%s/search.es_conn_info="localhost:9200"/search.es_conn_info="10.6.0.11:9200"/g|:wq' searchIndex-platform/module/search-api/search-manager/conf/application.conf + + + + + + cd searchIndex-platform/module/search-api/search-manager +mvn play2:dist + + + + SUCCESS + 0 + BLUE + true + + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_LP_Neo4j_Build/config.xml b/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_LP_Neo4j_Build/config.xml new file mode 100644 index 0000000000..01144547e3 --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_LP_Neo4j_Build/config.xml @@ -0,0 +1,73 @@ + + + + + false + + + 2 + + + https://github.com/project-sunbird/sunbird-learning-platform.git + f37ad21f-744a-4817-9f5e-02f8ec620b39 + + + + + refs/tags/v1.10 + + + false + + + + 10.6.0.6-5358553b + false + false + false + false + + false + + org.ekstep + ekstep-platform + + clean install -DskipTests=true + true + false + false + false + false + false + false + false + false + -1 + false + false + true + + + + + + + xterm + + + + + rm -rf /data/logs/* +rm -rf /data/graphDB/* +rm -rf /data/testgraphDB/* +rm -rf /data/testGraphDB/* + + + + + SUCCESS + 0 + BLUE + true + + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_LP_SyncTool_Build/config.xml b/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_LP_SyncTool_Build/config.xml new file mode 100644 index 0000000000..6c4eec0d89 --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_LP_SyncTool_Build/config.xml @@ -0,0 +1,82 @@ + + + + + false + + + 2 + + + https://github.com/project-sunbird/sunbird-learning-platform.git + f37ad21f-744a-4817-9f5e-02f8ec620b39 + + + + + */sync-job + + + false + + + + false + true + false + + true + + + + 10.6.0.6-5358553b + false + false + false + false + + false + + org.ekstep + ekstep-platform + + clean install -DskipTests + true + false + false + false + false + false + false + false + false + 30 + false + false + true + + + + + + + xterm + + + + + java -version +rm -rf /data/logs/* +rm -rf /data/graphDB/* +rm -rf /data/testgraphDB/* +rm -rf /data/testGraphDB/* + + + + + SUCCESS + 0 + BLUE + true + + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_SampleFlow_Build/config.xml b/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_SampleFlow_Build/config.xml new file mode 100644 index 0000000000..3c5fc59ada --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_SampleFlow_Build/config.xml @@ -0,0 +1,41 @@ + + + + Sunbird Player Build Pipeline + false + + + + 10 + 10 + -1 + -1 + + + + + + + + + 2 + + + https://github.com/G33tha/sunbird-portal.git + + + + + master + + + false + + + + Jenkinsfile + true + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_TelemetryLogstash_Build/config.xml b/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_TelemetryLogstash_Build/config.xml new file mode 100644 index 0000000000..e7ba64202f --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_TelemetryLogstash_Build/config.xml @@ -0,0 +1,50 @@ + + + + Sunbird Telemetry Service Pipeline + false + + + + 10 + 10 + -1 + -1 + + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-telemetry-service.git + f37ad21f-744a-4817-9f5e-02f8ec620b39 + + + + + */telemetry-scala + + + false + + + + false + true + false + + false + + + + Jenkinsfile + true + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_TelemetryService_Build/config.xml b/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_TelemetryService_Build/config.xml new file mode 100644 index 0000000000..f4f993b0a5 --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_TelemetryService_Build/config.xml @@ -0,0 +1,50 @@ + + + + Sunbird Telemetry Service Pipeline + false + + + + 10 + 10 + -1 + -1 + + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-telemetry-service.git + f37ad21f-744a-4817-9f5e-02f8ec620b39 + + + + + */release-1.11 + + + false + + + + false + true + false + + false + + + + Jenkinsfile + true + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Build/jobs/hostname/config.xml b/deploy/jenkins/jobs/Other/jobs/Build/jobs/hostname/config.xml new file mode 100644 index 0000000000..fa6b650b9e --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Build/jobs/hostname/config.xml @@ -0,0 +1,28 @@ + + + + + false + + + false + false + + + + build-slave-test + false + false + false + false + + false + + + hostname -i +hostname + + + + + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/config.xml new file mode 100644 index 0000000000..53bc02eb1a --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Deploy/config.xml @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + All + false + false + + + + + + + + false + + + + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Artifacts_Repo/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Artifacts_Repo/config.xml new file mode 100644 index 0000000000..18cc7cf04a --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Artifacts_Repo/config.xml @@ -0,0 +1,67 @@ + + + + push Images to repo + false + + + + + private_credentials + Private repo credentials to checkout + f37ad21f-744a-4817-9f5e-02f8ec620b39 + false + + + parentProject + Project name from where to copy the metadata.json file + + false + + + private_repo_branch + Private repo branch to checkout + release-1.13 + false + + + + + + + + Build/Sunbird_Ed_Player_Build + + SUCCESS + 0 + BLUE + true + + + + + + + + 2 + + + https://github.com/ekstep/sunbird-devops.git + 64bdfe13-cc30-4864-bd3c-4e89be89fc9d + + + + + */release-1.13 + + + false + + + + pipelines/deploy/player/Jenkinsfile.push + true + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/config.xml new file mode 100644 index 0000000000..53bc02eb1a --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/config.xml @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + All + false + false + + + + + + + + false + + + + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/AM_AdminUtils_Deploy_Dev/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/AM_AdminUtils_Deploy_Dev/config.xml new file mode 100644 index 0000000000..a75eb8ad8a --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/AM_AdminUtils_Deploy_Dev/config.xml @@ -0,0 +1,46 @@ + + + + Admin Utils Pipeline + false + + + + -1 + -1 + -1 + -1 + + + + false + false + + + + + + + + 2 + + + https://github.com/ekstep/sunbird-devops.git + 64bdfe13-cc30-4864-bd3c-4e89be89fc9d + + + + + */release-1.12 + + + false + + + + pipelines/adminutils/Jenkinsfile.dev + true + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/AM_Onboard_APIs/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/AM_Onboard_APIs/config.xml new file mode 100644 index 0000000000..052a22d9b2 --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/AM_Onboard_APIs/config.xml @@ -0,0 +1,46 @@ + + + + + + + + + + + + false + + + + 10 + 10 + -1 + -1 + + + + + + 2 + + + https://github.com/ekstep/sunbird-devops.git + f37ad21f-744a-4817-9f5e-02f8ec620b39 + + + + + */release-1.13 + + + false + + + + pipelines/am-onboard-apis/Jenkinsfile.dev + true + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/AM_Onboard_Consumers/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/AM_Onboard_Consumers/config.xml new file mode 100644 index 0000000000..8393eab91f --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/AM_Onboard_Consumers/config.xml @@ -0,0 +1,46 @@ + + + + + + + + + + + + false + + + + 10 + 10 + -1 + -1 + + + + + + 2 + + + https://github.com/ekstep/sunbird-devops.git + f37ad21f-744a-4817-9f5e-02f8ec620b39 + + + + + */release-1.13 + + + false + + + + pipelines/am-onboard-consumers/Jenkinsfile.dev + true + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/API_Manager_Deploy_Dev/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/API_Manager_Deploy_Dev/config.xml new file mode 100644 index 0000000000..821a3cfb4a --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/API_Manager_Deploy_Dev/config.xml @@ -0,0 +1,42 @@ + + + + + false + + + + 10 + 10 + -1 + -1 + + + + + + + + + 2 + + + https://github.com/ekstep/sunbird-devops.git + f37ad21f-744a-4817-9f5e-02f8ec620b39 + + + + + */release-1.12 + + + false + + + + pipelines/api-manager/Jenkinsfile.dev + true + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/AnalyticsApi_Logs/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/AnalyticsApi_Logs/config.xml new file mode 100644 index 0000000000..7a7e94e096 --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/AnalyticsApi_Logs/config.xml @@ -0,0 +1,47 @@ + + + + + false + + + 2 + + + https://github.com/ekstep/sunbird-devops.git + f37ad21f-744a-4817-9f5e-02f8ec620b39 + + + + + */DO-380 + + + false + + + + localhost-b5cf9b99 + false + false + false + false + + false + + + ls /home/ops/.ssh + + +ansible-playbook -i ansible/inventories/dev/hosts ansible/logs.yml --extra-vars "service=analytics-api user=analytics remote=analytics-api app=analytics sourcepath=/mount/data/analytics/logs" --vault-password-file /home/ops/vault + + + + + + + + xterm + + + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Application_ElasticSearch/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Application_ElasticSearch/config.xml new file mode 100644 index 0000000000..2ec13e3f43 --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Application_ElasticSearch/config.xml @@ -0,0 +1,46 @@ + + + + + + + + + + + + false + + + + 10 + 10 + -1 + -1 + + + + + + 2 + + + https://github.com/ekstep/sunbird-devops.git + f37ad21f-744a-4817-9f5e-02f8ec620b39 + + + + + */release-1.13 + + + false + + + + pipelines/application-elasticsearch/Jenkinsfile.dev + true + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Application_ElasticSearch_Backup/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Application_ElasticSearch_Backup/config.xml new file mode 100644 index 0000000000..2ca8bca72b --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Application_ElasticSearch_Backup/config.xml @@ -0,0 +1,55 @@ + + + + + + + hudson.triggers.TimerTrigger + + + + + + Backup application ES + false + + + + + H 0 * * * + + + + + + 10 + 10 + -1 + -1 + + + + + + 2 + + + https://github.com/ekstep/sunbird-devops.git + f37ad21f-744a-4817-9f5e-02f8ec620b39 + + + + + */release-1.13 + + + false + + + + pipelines/es-backup/Jenkinsfile.dev + true + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Application_ElasticSearch_Restore/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Application_ElasticSearch_Restore/config.xml new file mode 100644 index 0000000000..1253056a5a --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Application_ElasticSearch_Restore/config.xml @@ -0,0 +1,59 @@ + + + + + + + + + + + Restore Application ES from backup + false + + + + 10 + 10 + -1 + -1 + + + + + + SNAPSHOT_NUMBER + Snapshot number to restore. You can get all snapshots using curl http://localhost:9200/_snapshot/azurebackup/_all + + false + + + + + + + + + + 2 + + + https://github.com/ekstep/sunbird-devops.git + f37ad21f-744a-4817-9f5e-02f8ec620b39 + + + + + */master + + + false + + + + pipelines/es-restore/Jenkinsfile.dev + true + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Assets_Upload_Azure/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Assets_Upload_Azure/config.xml new file mode 100644 index 0000000000..da779b0e7c --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Assets_Upload_Azure/config.xml @@ -0,0 +1,59 @@ + + + + + + + hudson.triggers.TimerTrigger + + + + + + + false + + + + 10 + 10 + -1 + -1 + + + + + + + Assets folder + + + + + + + + + + 2 + + + https://github.com/ekstep/sunbird-devops.git + f37ad21f-744a-4817-9f5e-02f8ec620b39 + + + + + */release-1.7 + + + false + + + + pipelines/player-cdn-upload/Jenkinsfile.dev + true + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Cassandra CQL Dumps/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Cassandra CQL Dumps/config.xml new file mode 100644 index 0000000000..bf18fdfc49 --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Cassandra CQL Dumps/config.xml @@ -0,0 +1,57 @@ + + + + + false + + + true + hudson.model.Item.Read:holycow + hudson.model.Item.Build:holycow + hudson.model.Item.Discover:holycow + + + + 2 + + + https://github.com/ekstep/sunbird-devops + f37ad21f-744a-4817-9f5e-02f8ec620b39 + + + + + */master + + + false + + + + general-dev + false + false + false + false + + false + + + rm -rf /tmp/fetched/ +ansible-playbook -i ansible/inventory/dev ansible/reporting.yml --vault-password-file /run/secrets/vault-pass +ls -al . + + + + + + ansible/*.csv + false + false + false + true + true + + + + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Cassandra_CQL_Dumps/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Cassandra_CQL_Dumps/config.xml new file mode 100644 index 0000000000..d942a75013 --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Cassandra_CQL_Dumps/config.xml @@ -0,0 +1,34 @@ + + + + + false + + + + + + + + 2 + + + https://github.com/ekstep/sunbird-devops.git + f37ad21f-744a-4817-9f5e-02f8ec620b39 + + + + + */master + + + false + + + + pipelines/cql_dumps/Jenkinsfile.dev + true + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Createuser/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Createuser/config.xml new file mode 100644 index 0000000000..5f48236ad1 --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Createuser/config.xml @@ -0,0 +1,82 @@ + + + + + false + + + + com.cloudbees.plugins.credentials.CredentialsProvider.Create:manojvv + com.cloudbees.plugins.credentials.CredentialsProvider.Delete:manojvv + com.cloudbees.plugins.credentials.CredentialsProvider.ManageDomains:manojvv + com.cloudbees.plugins.credentials.CredentialsProvider.Update:manojvv + com.cloudbees.plugins.credentials.CredentialsProvider.View:manojvv + hudson.model.Item.Build:manojvv + hudson.model.Item.Cancel:manojvv + hudson.model.Item.Configure:manojvv + hudson.model.Item.Delete:manojvv + hudson.model.Item.Discover:manojvv + hudson.model.Item.Move:manojvv + hudson.model.Item.Read:manojvv + hudson.model.Item.Workspace:manojvv + hudson.model.Run.Delete:manojvv + hudson.model.Run.Replay:manojvv + hudson.model.Run.Update:manojvv + hudson.scm.SCM.Tag:manojvv + + + + + instance_name + + + false + + + username + + + false + + + sudo_password + + + false + + + public_key + Keep the public key in single quotes. for ex: 'public_key ' + + false + + + + + + + + + + 2 + + + https://github.com/ekstep/sunbird-devops + f37ad21f-744a-4817-9f5e-02f8ec620b39 + + + + + */release-1.7 + + + false + + + + pipelines/createuser/Jenkinsfile.dev + true + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Curl_Commands/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Curl_Commands/config.xml new file mode 100644 index 0000000000..b2ea4305b8 --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Curl_Commands/config.xml @@ -0,0 +1,34 @@ + + + + + false + + + + + + + + 2 + + + https://github.com/ekstep/sunbird-devops.git + f37ad21f-744a-4817-9f5e-02f8ec620b39 + + + + + */master + + + false + + + + pipelines/curl-commands/Jenkinsfile.dev + true + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/DB_Bootstrap/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/DB_Bootstrap/config.xml new file mode 100644 index 0000000000..14b6d1922c --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/DB_Bootstrap/config.xml @@ -0,0 +1,34 @@ + + + + + false + + + + + + + + 2 + + + https://github.com/ekstep/sunbird-devops.git + f37ad21f-744a-4817-9f5e-02f8ec620b39 + + + + + */migration + + + false + + + + pipelines/sunbird-bootstrap/Jenkinsfile.db.dev + true + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Deleteuser/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Deleteuser/config.xml new file mode 100644 index 0000000000..cc39999f77 --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Deleteuser/config.xml @@ -0,0 +1,70 @@ + + + + + false + + + + com.cloudbees.plugins.credentials.CredentialsProvider.Create:manojvv + com.cloudbees.plugins.credentials.CredentialsProvider.Delete:manojvv + com.cloudbees.plugins.credentials.CredentialsProvider.ManageDomains:manojvv + com.cloudbees.plugins.credentials.CredentialsProvider.Update:manojvv + com.cloudbees.plugins.credentials.CredentialsProvider.View:manojvv + hudson.model.Item.Build:manojvv + hudson.model.Item.Cancel:manojvv + hudson.model.Item.Configure:manojvv + hudson.model.Item.Delete:manojvv + hudson.model.Item.Discover:manojvv + hudson.model.Item.Move:manojvv + hudson.model.Item.Read:manojvv + hudson.model.Item.Workspace:manojvv + hudson.model.Run.Delete:manojvv + hudson.model.Run.Replay:manojvv + hudson.model.Run.Update:manojvv + hudson.scm.SCM.Tag:manojvv + + + + + instance_name + + + false + + + username + + + false + + + + + + + + + + 2 + + + https://github.com/ekstep/sunbird-devops + f37ad21f-744a-4817-9f5e-02f8ec620b39 + + + + + */master + + + false + + + + pipelines/deleteuser/Jenkinsfile.dev + true + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Dev_Test/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Dev_Test/config.xml new file mode 100644 index 0000000000..7639ec53af --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Dev_Test/config.xml @@ -0,0 +1,54 @@ + + + + + false + + + + + + + + true + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Devops_Test/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Devops_Test/config.xml new file mode 100644 index 0000000000..feffea85c5 --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Devops_Test/config.xml @@ -0,0 +1,51 @@ + + + + + + + hudson.triggers.SCMTrigger + + + + + + + false + + + + 10 + 10 + -1 + -1 + + + + + + + + + 2 + + + https://github.com/ekstep/sunbird-devops.git + f37ad21f-744a-4817-9f5e-02f8ec620b39 + + + + + */release-1.4 + + + false + + + + pipelines/devops-test/Jenkinsfile.dev + true + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/DialPage_Upload_CDN/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/DialPage_Upload_CDN/config.xml new file mode 100644 index 0000000000..34066ec1b9 --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/DialPage_Upload_CDN/config.xml @@ -0,0 +1,53 @@ + + + + + + + hudson.triggers.TimerTrigger + + + + + + + false + + + + + branch + player branch version to build + + false + + + + + + + + + + 2 + + + https://github.com/ekstep/sunbird-devops.git + f37ad21f-744a-4817-9f5e-02f8ec620b39 + + + + + */dialpage-cdn + + + false + + + + pipelines/dialpage-cdn-upload/Jenkinsfile.dev + true + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Docker_Swarm_Config/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Docker_Swarm_Config/config.xml new file mode 100644 index 0000000000..f3afe038cb --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Docker_Swarm_Config/config.xml @@ -0,0 +1,49 @@ + + + + + + + + + + + + false + + + + 10 + 10 + -1 + -1 + + + + + + + + + 2 + + + https://github.com/ekstep/sunbird-devops.git + f37ad21f-744a-4817-9f5e-02f8ec620b39 + + + + + */release-1.9-newenv + + + false + + + + pipelines/swarm-config/Jenkinsfile.dev + true + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Docker_Swarm_Service_Info/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Docker_Swarm_Service_Info/config.xml new file mode 100644 index 0000000000..36f6f67f42 --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Docker_Swarm_Service_Info/config.xml @@ -0,0 +1,58 @@ + + + + + + + + docker_swarm_service_name + + + + + + false + + + + + docker_swarm_service_name + Specify the name of service. Use Docker_Swarm_Service_List job to list all services + + false + + + + + + 10 + 10 + -1 + -1 + + + + + + 2 + + + https://github.com/ekstep/sunbird-devops.git + f37ad21f-744a-4817-9f5e-02f8ec620b39 + + + + + */master + + + false + + + + pipelines/docker-swarm-service-info/Jenkinsfile.dev + true + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Docker_Swarm_Service_List/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Docker_Swarm_Service_List/config.xml new file mode 100644 index 0000000000..a99d432250 --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Docker_Swarm_Service_List/config.xml @@ -0,0 +1,46 @@ + + + + + + + + + + + + false + + + + 10 + 10 + -1 + -1 + + + + + + 2 + + + https://github.com/ekstep/sunbird-devops.git + f37ad21f-744a-4817-9f5e-02f8ec620b39 + + + + + */master + + + false + + + + pipelines/docker-swarm-service-list/Jenkinsfile.dev + true + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Docker_Swarm_Service_Restart/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Docker_Swarm_Service_Restart/config.xml new file mode 100644 index 0000000000..f72b9ef208 --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Docker_Swarm_Service_Restart/config.xml @@ -0,0 +1,58 @@ + + + + + + + + docker_swarm_service_name + + + + + + false + + + + + docker_swarm_service_name + Specify the name of service. Use Docker_SWarm_Servic_List job to list all services + + false + + + + + + 10 + 10 + -1 + -1 + + + + + + 2 + + + https://github.com/ekstep/sunbird-devops.git + f37ad21f-744a-4817-9f5e-02f8ec620b39 + + + + + */master + + + false + + + + pipelines/docker-swarm-service-restart/Jenkinsfile.dev + true + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Docker_Swarm_Update/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Docker_Swarm_Update/config.xml new file mode 100644 index 0000000000..cfb2238747 --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Docker_Swarm_Update/config.xml @@ -0,0 +1,46 @@ + + + + + + + + + + + + false + + + + 10 + 10 + -1 + -1 + + + + + + 2 + + + https://github.com/ekstep/sunbird-devops.git + f37ad21f-744a-4817-9f5e-02f8ec620b39 + + + + + */master + + + false + + + + pipelines/swarm-update/Jenkinsfile.dev + true + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Documentation_Jenkins_Slave/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Documentation_Jenkins_Slave/config.xml new file mode 100644 index 0000000000..a8a98d0768 --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Documentation_Jenkins_Slave/config.xml @@ -0,0 +1,46 @@ + + + + + + + + + + + Deploys documentation jenkins slave + false + + + + 5 + 5 + -1 + -1 + + + + + + 2 + + + https://github.com/ekstep/sunbird-devops.git + f37ad21f-744a-4817-9f5e-02f8ec620b39 + + + + + */master + + + false + + + + pipelines/documentation-jenkins-slave/Jenkinsfile.deploy-slave + true + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Encryption_service_deploy/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Encryption_service_deploy/config.xml new file mode 100644 index 0000000000..9e4e32d61d --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Encryption_service_deploy/config.xml @@ -0,0 +1,42 @@ + + + + Deploys Encryption Service to DEV environment + false + + + + 10 + 10 + -1 + -1 + + + + + + + + + 2 + + + https://github.com/ekstep/sunbird-devops.git + f37ad21f-744a-4817-9f5e-02f8ec620b39 + + + + + */release-1.11 + + + false + + + + pipelines/enc-service/Jenkinsfile.dev + true + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Grafana_Dashboards_Export/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Grafana_Dashboards_Export/config.xml new file mode 100644 index 0000000000..a447e905f1 --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Grafana_Dashboards_Export/config.xml @@ -0,0 +1,55 @@ + + + + + + + hudson.triggers.TimerTrigger + + + + + + + false + + + + + @midnight + + + + + + 10 + 10 + -1 + -1 + + + + + + 2 + + + https://github.com/ekstep/sunbird-devops.git + f37ad21f-744a-4817-9f5e-02f8ec620b39 + + + + + */release-1.7 + + + false + + + + pipelines/grafana-dashboards-export/Jenkinsfile.dev + true + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Grafana_Dashboards_Import/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Grafana_Dashboards_Import/config.xml new file mode 100644 index 0000000000..25044eade0 --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Grafana_Dashboards_Import/config.xml @@ -0,0 +1,48 @@ + + + + + + + hudson.triggers.TimerTrigger + + + + + + + false + + + + 10 + 10 + -1 + -1 + + + + + + 2 + + + https://github.com/ekstep/sunbird-devops.git + f37ad21f-744a-4817-9f5e-02f8ec620b39 + + + + + */master + + + false + + + + pipelines/grafana-dashboards-import/Jenkinsfile.dev + true + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Jenkins_Slave/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Jenkins_Slave/config.xml new file mode 100644 index 0000000000..5c74e331c4 --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Jenkins_Slave/config.xml @@ -0,0 +1,46 @@ + + + + + + + + + + + + false + + + + 10 + 10 + -1 + -1 + + + + + + 2 + + + https://github.com/ekstep/sunbird-devops.git + f37ad21f-744a-4817-9f5e-02f8ec620b39 + + + + + */release-1.13 + + + false + + + + pipelines/jenkins-slave/Jenkinsfile.dev + true + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Keycloak_Deploy/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Keycloak_Deploy/config.xml new file mode 100644 index 0000000000..44da3d600f --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Keycloak_Deploy/config.xml @@ -0,0 +1,34 @@ + + + + + false + + + + + + + + 2 + + + https://github.com/ekstep/sunbird-devops.git + f37ad21f-744a-4817-9f5e-02f8ec620b39 + + + + + */release-1.13 + + + false + + + + pipelines/keycloak-deploy/Jenkinsfile.dev + true + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Keycloak_Provision/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Keycloak_Provision/config.xml new file mode 100644 index 0000000000..2219ce1601 --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Keycloak_Provision/config.xml @@ -0,0 +1,34 @@ + + + + + false + + + + + + + + 2 + + + https://github.com/ekstep/sunbird-devops.git + f37ad21f-744a-4817-9f5e-02f8ec620b39 + + + + + */release-1.13 + + + false + + + + pipelines/keycloak-provision/Jenkinsfile.dev + true + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Learning_Logs/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Learning_Logs/config.xml new file mode 100644 index 0000000000..d8a923e4e2 --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Learning_Logs/config.xml @@ -0,0 +1,45 @@ + + + + + false + + + 2 + + + https://github.com/ekstep/sunbird-devops.git + f37ad21f-744a-4817-9f5e-02f8ec620b39 + + + + + */DO-380 + + + false + + + + true + false + false + false + + false + + + ls /home/ops/.ssh +ansible-playbook -i ansible/inventories/dev/hosts ansible/logs.yml --extra-vars "service=learning user=learning remote=learningall app=tomcat sourcepath=/home/learning/apache-tomcat-8.0.36/logs" --vault-password-file /home/ops/vault +ansible-playbook -i ansible/inventories/dev/hosts ansible/logs.yml --extra-vars "service=learning user=learning remote=learningall app=data sourcepath=/data/logs" --vault-password-file /home/ops/vault + + + + + + + + xterm + + + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Logger_ES_Deploy_Dev/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Logger_ES_Deploy_Dev/config.xml new file mode 100644 index 0000000000..1a0584176a --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Logger_ES_Deploy_Dev/config.xml @@ -0,0 +1,49 @@ + + + + + + + + + + + Logger Pipeline + false + + + + -1 + -1 + -1 + -1 + + + + + + + + + 2 + + + https://github.com/ekstep/sunbird-devops.git + f37ad21f-744a-4817-9f5e-02f8ec620b39 + + + + + */release-1.13 + + + false + + + + pipelines/logger-elasticsearch/Jenkinsfile.dev + true + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Logger_ElasticSearch_Backup/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Logger_ElasticSearch_Backup/config.xml new file mode 100644 index 0000000000..7f7864da21 --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Logger_ElasticSearch_Backup/config.xml @@ -0,0 +1,55 @@ + + + + + + + hudson.triggers.TimerTrigger + + + + + + Backup Log ES + false + + + + + H 0 * * * + + + + + + 10 + 10 + -1 + -1 + + + + + + 2 + + + https://github.com/ekstep/sunbird-devops.git + f37ad21f-744a-4817-9f5e-02f8ec620b39 + + + + + */release-1.13 + + + false + + + + pipelines/log-es-backup/Jenkinsfile.dev + true + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Logger_ElasticSearch_Restore/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Logger_ElasticSearch_Restore/config.xml new file mode 100644 index 0000000000..aa8cf2a031 --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Logger_ElasticSearch_Restore/config.xml @@ -0,0 +1,56 @@ + + + + + + + + + + + Restore Logger ES from backup + false + + + + + SNAPSHOT_NUMBER + Snapshot number to restore + + false + + + + + + 10 + 10 + -1 + -1 + + + + + + 2 + + + https://github.com/ekstep/sunbird-devops.git + f37ad21f-744a-4817-9f5e-02f8ec620b39 + + + + + */master + + + false + + + + pipelines/log-es-restore/Jenkinsfile.dev + true + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Logger_Purge_Old_Logs/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Logger_Purge_Old_Logs/config.xml new file mode 100644 index 0000000000..21e64ff09a --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Logger_Purge_Old_Logs/config.xml @@ -0,0 +1,55 @@ + + + + + + + hudson.triggers.TimerTrigger + + + + + + Purge logs older than 30 days + false + + + + + @midnight + + + + + + 10 + 10 + -1 + -1 + + + + + + 2 + + + https://github.com/ekstep/sunbird-devops.git + f37ad21f-744a-4817-9f5e-02f8ec620b39 + + + + + */release-1.5 + + + false + + + + pipelines/purge-old-logs/Jenkinsfile.dev + true + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Logging/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Logging/config.xml new file mode 100644 index 0000000000..fed27d6934 --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Logging/config.xml @@ -0,0 +1,42 @@ + + + + + false + + + + 10 + 10 + -1 + -1 + + + + + + + + + 2 + + + https://github.com/ekstep/sunbird-devops.git + f37ad21f-744a-4817-9f5e-02f8ec620b39 + + + + + */DO-380 + + + false + + + + pipelines/logger/Jenkinsfile.dev + true + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Logging_Registry/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Logging_Registry/config.xml new file mode 100644 index 0000000000..5f4592ac1b --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Logging_Registry/config.xml @@ -0,0 +1,42 @@ + + + + + false + + + + 10 + 10 + -1 + -1 + + + + + + + + + 2 + + + https://github.com/ekstep/sunbird-devops.git + f37ad21f-744a-4817-9f5e-02f8ec620b39 + + + + + */release-1.7 + + + false + + + + pipelines/logger/Jenkinsfile.registry.dev + true + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Logs_For_Learning_Dev/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Logs_For_Learning_Dev/config.xml new file mode 100644 index 0000000000..8c951cf1b1 --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Logs_For_Learning_Dev/config.xml @@ -0,0 +1,33 @@ + + + + + false + + + 2 + + + https://github.com/ekstep/sunbird-devops.git + f37ad21f-744a-4817-9f5e-02f8ec620b39 + + + + + */master + + + false + + + + true + false + false + false + + false + + + + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Monitoring/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Monitoring/config.xml new file mode 100644 index 0000000000..04f219d3c3 --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Monitoring/config.xml @@ -0,0 +1,42 @@ + + + + + false + + + + 10 + 10 + -1 + -1 + + + + + + + + + 2 + + + https://github.com/ekstep/sunbird-devops.git + f37ad21f-744a-4817-9f5e-02f8ec620b39 + + + + + */release-1.13 + + + false + + + + pipelines/monitor/Jenkinsfile.dev + true + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/OpenSaber/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/OpenSaber/config.xml new file mode 100644 index 0000000000..d80e32d7da --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/OpenSaber/config.xml @@ -0,0 +1,42 @@ + + + + Deploys Player to DEV environment + false + + + + 3 + 4 + -1 + -1 + + + + + + + + + 2 + + + https://github.com/ekstep/sunbird-devops.git + f37ad21f-744a-4817-9f5e-02f8ec620b39 + + + + + */DO-170 + + + false + + + + pipelines/opensaber/Jenkinsfile.dev + true + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/OpenSaberEncryption/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/OpenSaberEncryption/config.xml new file mode 100644 index 0000000000..aef7637e98 --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/OpenSaberEncryption/config.xml @@ -0,0 +1,42 @@ + + + + Deploys Player to DEV environment + false + + + + 3 + 4 + -1 + -1 + + + + + + + + + 2 + + + https://github.com/ekstep/sunbird-devops.git + f37ad21f-744a-4817-9f5e-02f8ec620b39 + + + + + */release-1.11 + + + false + + + + pipelines/opensaber-enc/Jenkinsfile.dev + true + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Player_Upload_CDN/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Player_Upload_CDN/config.xml new file mode 100644 index 0000000000..90b8321910 --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Player_Upload_CDN/config.xml @@ -0,0 +1,67 @@ + + + + + + + hudson.triggers.TimerTrigger + + + + + + + false + + + + 10 + 10 + -1 + -1 + + + + + + cdn + cdn url link + https://dev-sunbird-temp.azureedge.net/player/ + false + + + portal_git_branch + Portal branch, to clone build and upload to the CDN. + release-1.10 + false + + + + + + + + + + 2 + + + https://github.com/ekstep/sunbird-devops.git + f37ad21f-744a-4817-9f5e-02f8ec620b39 + + + + + */release-1.9 + + + false + + + + pipelines/player-cdn-upload/Jenkinsfile.dev + true + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Postgresql_Backup/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Postgresql_Backup/config.xml new file mode 100644 index 0000000000..f237f0ea7c --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Postgresql_Backup/config.xml @@ -0,0 +1,55 @@ + + + + + + + hudson.triggers.TimerTrigger + + + + + + + false + + + + 10 + 10 + -1 + -1 + + + + + + + + + + + + + 2 + + + https://github.com/ekstep/sunbird-devops.git + f37ad21f-744a-4817-9f5e-02f8ec620b39 + + + + + */release-1.11 + + + false + + + + pipelines/postgresql-backup/Jenkinsfile.dev + true + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Postgresql_Data_Update/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Postgresql_Data_Update/config.xml new file mode 100644 index 0000000000..ca04cde5a3 --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Postgresql_Data_Update/config.xml @@ -0,0 +1,46 @@ + + + + + + + + + + + + false + + + + 10 + 10 + -1 + -1 + + + + + + 2 + + + https://github.com/ekstep/sunbird-devops.git + f37ad21f-744a-4817-9f5e-02f8ec620b39 + + + + + */release-1.9 + + + false + + + + pipelines/postgresql-data-update/Jenkinsfile.dev + true + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Postgresql_Master/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Postgresql_Master/config.xml new file mode 100644 index 0000000000..b6cba588a6 --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Postgresql_Master/config.xml @@ -0,0 +1,46 @@ + + + + + + + + + + + + false + + + + 10 + 10 + -1 + -1 + + + + + + 2 + + + https://github.com/ekstep/sunbird-devops.git + f37ad21f-744a-4817-9f5e-02f8ec620b39 + + + + + */master + + + false + + + + pipelines/postgresql-master/Jenkinsfile.dev + true + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Postgresql_Restore/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Postgresql_Restore/config.xml new file mode 100644 index 0000000000..8283ee74bc --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Postgresql_Restore/config.xml @@ -0,0 +1,58 @@ + + + + + + + + postgresql_restore_gzip_file_name + + + + + + false + + + + + postgresql_restore_gzip_file_name + Specify the backup file name in azure which should be restored + + false + + + + + + 10 + 10 + -1 + -1 + + + + + + 2 + + + https://github.com/ekstep/sunbird-devops.git + f37ad21f-744a-4817-9f5e-02f8ec620b39 + + + + + */master + + + false + + + + pipelines/postgresql-restore/Jenkinsfile.dev + true + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Prometheus_Backup/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Prometheus_Backup/config.xml new file mode 100644 index 0000000000..9ce5708981 --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Prometheus_Backup/config.xml @@ -0,0 +1,55 @@ + + + + + + + hudson.triggers.TimerTrigger + + + + + + + false + + + + + @midnight + + + + + + 10 + 10 + -1 + -1 + + + + + + 2 + + + https://github.com/ekstep/sunbird-devops.git + f37ad21f-744a-4817-9f5e-02f8ec620b39 + + + + + */release-1.13 + + + false + + + + pipelines/prometheus-backup/Jenkinsfile.dev + true + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Proxy/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Proxy/config.xml new file mode 100644 index 0000000000..0726d7dc07 --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Proxy/config.xml @@ -0,0 +1,46 @@ + + + + + + + + + + + Application Proxy Pipeline for DEV + false + + + + -1 + -1 + -1 + -1 + + + + + + 2 + + + https://github.com/ekstep/sunbird-devops.git + f37ad21f-744a-4817-9f5e-02f8ec620b39 + + + + + */release-1.13 + + + false + + + + pipelines/proxy/Jenkinsfile.dev + true + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Registry_Provision/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Registry_Provision/config.xml new file mode 100644 index 0000000000..2e5b58aa84 --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Registry_Provision/config.xml @@ -0,0 +1,37 @@ + + + + + + + + + + + + false + + + + 2 + + + https://github.com/ekstep/sunbird-devops.git + f37ad21f-744a-4817-9f5e-02f8ec620b39 + + + + + */release-1.8 + + + false + + + + pipelines/registry-provision/Jenkinsfile.dev + true + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Run_Command/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Run_Command/config.xml new file mode 100644 index 0000000000..d8ba0bed7a --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Run_Command/config.xml @@ -0,0 +1,50 @@ + + + + + false + + + + + HOST_PATTERN + + + false + + + COMMAND + + + false + + + + + + + + + + 2 + + + https://github.com/ekstep/sunbird-devops.git + f37ad21f-744a-4817-9f5e-02f8ec620b39 + + + + + */release-1.5 + + + false + + + + pipelines/run-command/Jenkinsfile.dev + true + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Secor_Logs/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Secor_Logs/config.xml new file mode 100644 index 0000000000..1e6721f565 --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Secor_Logs/config.xml @@ -0,0 +1,46 @@ + + + + + false + + + 2 + + + https://github.com/ekstep/sunbird-devops.git + f37ad21f-744a-4817-9f5e-02f8ec620b39 + + + + + */DO-380 + + + false + + + + localhost-b5cf9b99 + false + false + false + false + + false + + + ls /home/ops/.ssh +ansible-playbook -i ansible/inventories/dev/hosts ansible/logs.yml --extra-vars "service=secor user=analytics remote=secor app=secor sourcepath=/mount/secor/logs" --vault-password-file /home/ops/vault +#ansible-playbook -i ansible/inventories/dev/hosts ansible/logs.yml --extra-vars "service=learning user=learning remote=learningall app=data sourcepath=/data/logs" --vault-password-file /home/ops/vault + + + + + + + + xterm + + + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Spark_Logs/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Spark_Logs/config.xml new file mode 100644 index 0000000000..b003f31e52 --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Spark_Logs/config.xml @@ -0,0 +1,47 @@ + + + + + false + + + 2 + + + https://github.com/ekstep/sunbird-devops.git + f37ad21f-744a-4817-9f5e-02f8ec620b39 + + + + + */DO-380 + + + false + + + + localhost-b5cf9b99 + false + false + false + false + + false + + + ls /home/ops/.ssh + + +ansible-playbook -i ansible/inventories/dev/hosts ansible/logs.yml --extra-vars "service=spark user=analytics remote=spark app=spark sourcepath=/mount/data/analytics/logs" --vault-password-file /home/ops/vault + + + + + + + + xterm + + + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_ActorService_Deploy_Dev/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_ActorService_Deploy_Dev/config.xml new file mode 100644 index 0000000000..0e2d37ad1b --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_ActorService_Deploy_Dev/config.xml @@ -0,0 +1,42 @@ + + + + Deploys Actor Service to DEV environment + false + + + + 10 + 10 + -1 + -1 + + + + + + + + + 2 + + + https://github.com/ekstep/sunbird-devops.git + f37ad21f-744a-4817-9f5e-02f8ec620b39 + + + + + */release-1.6 + + + false + + + + pipelines/sunbird-actor-service/Jenkinsfile.dev + true + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Auth_Config_Build/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Auth_Config_Build/config.xml new file mode 100644 index 0000000000..f48d07edf0 --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Auth_Config_Build/config.xml @@ -0,0 +1,34 @@ + + + + + false + + + + + + + + 2 + + + https://github.com/ekstep/sunbird-devops.git + f37ad21f-744a-4817-9f5e-02f8ec620b39 + + + + + */release-1.8 + + + false + + + + pipelines/sunbird-auth-build/JenkinsfileConfig.dev + true + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Auth_Config_Deploy/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Auth_Config_Deploy/config.xml new file mode 100644 index 0000000000..e5ffb7100e --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Auth_Config_Deploy/config.xml @@ -0,0 +1,34 @@ + + + + + false + + + + + + + + 2 + + + https://github.com/ekstep/sunbird-devops.git + f37ad21f-744a-4817-9f5e-02f8ec620b39 + + + + + */release-1.8 + + + false + + + + pipelines/sunbird-auth-deploy/JenkinsfileDeployConfig.dev + true + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Auth_Deploy/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Auth_Deploy/config.xml new file mode 100644 index 0000000000..efa00c6718 --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Auth_Deploy/config.xml @@ -0,0 +1,34 @@ + + + + + false + + + + + + + + 2 + + + https://github.com/ekstep/sunbird-devops.git + f37ad21f-744a-4817-9f5e-02f8ec620b39 + + + + + */release-1.8 + + + false + + + + pipelines/sunbird-auth-deploy/Jenkinsfile.dev + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Auth_Deploy_Backup_job/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Auth_Deploy_Backup_job/config.xml new file mode 100644 index 0000000000..95aef8431a --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Auth_Deploy_Backup_job/config.xml @@ -0,0 +1,34 @@ + + + + + false + + + + + + + + 2 + + + https://github.com/ahghatol/sunbird-auth.git + f37ad21f-744a-4817-9f5e-02f8ec620b39 + + + + + */master + + + false + + + + keycloak/scripts/pipelines/keycloak-deploy/Jenkinsfile.dev + true + + + true + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Badger_Deploy/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Badger_Deploy/config.xml new file mode 100644 index 0000000000..a4715c09c8 --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Badger_Deploy/config.xml @@ -0,0 +1,34 @@ + + + + + false + + + + + + + + 2 + + + https://github.com/ekstep/sunbird-devops.git + f37ad21f-744a-4817-9f5e-02f8ec620b39 + + + + + */release-1.11 + + + false + + + + pipelines/sunbird-badger/Jenkinsfile.dev + true + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Cassandra_Backup_Dev/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Cassandra_Backup_Dev/config.xml new file mode 100644 index 0000000000..e9912c15f7 --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Cassandra_Backup_Dev/config.xml @@ -0,0 +1,47 @@ + + + + + + + hudson.triggers.TimerTrigger + + + + + + + false + + + + + @midnight + + + + + + + 2 + + + https://github.com/ekstep/sunbird-devops.git + f37ad21f-744a-4817-9f5e-02f8ec620b39 + + + + + */release-1.10 + + + false + + + + pipelines/cassandra-backup/Jenkinsfile.dev + true + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Cassandra_Backup_Test/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Cassandra_Backup_Test/config.xml new file mode 100644 index 0000000000..0b9f4d742f --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Cassandra_Backup_Test/config.xml @@ -0,0 +1,47 @@ + + + + + + + hudson.triggers.TimerTrigger + + + + + + + false + + + + + @midnight + + + + + + + 2 + + + https://github.com/ekstep/sunbird-devops.git + f37ad21f-744a-4817-9f5e-02f8ec620b39 + + + + + */release-1.5 + + + false + + + + pipelines/cassandra-backup/Jenkinsfile.dev + true + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Cassandra_CQL_Restore/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Cassandra_CQL_Restore/config.xml new file mode 100644 index 0000000000..eba5d59b1f --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Cassandra_CQL_Restore/config.xml @@ -0,0 +1,50 @@ + + + + + false + + + + + tags + + + + cql + pagemanagement + pagesection + content_service + + + + + + + + + + + + 2 + + + https://github.com/ekstep/sunbird-devops.git + f37ad21f-744a-4817-9f5e-02f8ec620b39 + + + + + */release-1.5 + + + false + + + + pipelines/cassandra_cql_restore/Jenkinsfile.dev + true + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Cassandra_Deploy/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Cassandra_Deploy/config.xml new file mode 100644 index 0000000000..9483c84371 --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Cassandra_Deploy/config.xml @@ -0,0 +1,42 @@ + + + + Deploys Player to DEV environment + false + + + + 3 + 4 + -1 + -1 + + + + + + + + + 2 + + + https://github.com/ekstep/sunbird-devops.git + f37ad21f-744a-4817-9f5e-02f8ec620b39 + + + + + */release-1.13 + + + false + + + + pipelines/cassandra-deploy/Jenkinsfile.dev + true + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Cassandra_Provision/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Cassandra_Provision/config.xml new file mode 100644 index 0000000000..6ab2ab498e --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Cassandra_Provision/config.xml @@ -0,0 +1,34 @@ + + + + + false + + + + + + + + 2 + + + https://github.com/ekstep/sunbird-devops.git + f37ad21f-744a-4817-9f5e-02f8ec620b39 + + + + + */migration + + + false + + + + pipelines/cassandra/Jenkinsfile.dev + true + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Cassandra_Restore_Dev/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Cassandra_Restore_Dev/config.xml new file mode 100644 index 0000000000..946e19cb78 --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Cassandra_Restore_Dev/config.xml @@ -0,0 +1,51 @@ + + + + + + hudson.model.ParametersDefinitionProperty + org.jenkinsci.plugins.workflow.job.properties.PipelineTriggersJobProperty + + + + + false + + + + + snapshot + time + + false + + + + + + + + + + 2 + + + https://github.com/ekstep/sunbird-devops.git + f37ad21f-744a-4817-9f5e-02f8ec620b39 + + + + + */release-1.5 + + + false + + + + pipelines/cassandra-restore/Jenkinsfile.dev + true + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_ConfigService_Deploy_Dev/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_ConfigService_Deploy_Dev/config.xml new file mode 100644 index 0000000000..042222a99a --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_ConfigService_Deploy_Dev/config.xml @@ -0,0 +1,42 @@ + + + + Deploys Config Service to DEV environment + false + + + + 10 + 10 + -1 + -1 + + + + + + + + + 2 + + + https://github.com/ekstep/sunbird-devops.git + f37ad21f-744a-4817-9f5e-02f8ec620b39 + + + + + */release-1.13 + + + false + + + + pipelines/sunbird-config-service/Jenkinsfile.dev + true + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_ContentService_Deploy_Dev/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_ContentService_Deploy_Dev/config.xml new file mode 100644 index 0000000000..43af988f68 --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_ContentService_Deploy_Dev/config.xml @@ -0,0 +1,42 @@ + + + + Deploys Content Service to DEV environment + false + + + + 10 + 10 + -1 + -1 + + + + + + + + + 2 + + + https://github.com/ekstep/sunbird-devops.git + f37ad21f-744a-4817-9f5e-02f8ec620b39 + + + + + */release-1.13 + + + false + + + + pipelines/sunbird-content-service/Jenkinsfile.dev + true + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Docker_Reset/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Docker_Reset/config.xml new file mode 100644 index 0000000000..c7abd1cf58 --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Docker_Reset/config.xml @@ -0,0 +1,34 @@ + + + + + false + + + + + + + + 2 + + + https://github.com/ekstep/sunbird-devops.git + f37ad21f-744a-4817-9f5e-02f8ec620b39 + + + + + */release-1.5 + + + false + + + + pipelines/reset-docker/Jenkinsfile.dev + true + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Ed_Player_Deploy/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Ed_Player_Deploy/config.xml new file mode 100644 index 0000000000..f16c9ce10f --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Ed_Player_Deploy/config.xml @@ -0,0 +1,73 @@ + + + + + false + + + + + private_repo_branch + + release-1.13 + false + + + metadataFile + + + false + + + private_credentials + + f37ad21f-744a-4817-9f5e-02f8ec620b39 + false + + + image_tag + + + false + + + + + + + + ../Artifacts_Repo + + SUCCESS + 0 + BLUE + true + + + + + + + + 2 + + + https://github.com/ekstep/sunbird-devops.git + 64bdfe13-cc30-4864-bd3c-4e89be89fc9d + + + + + */release-1.13 + + + false + + + + pipelines/deploy/player/Jenkinsfile.deploy + true + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Functional_Test_Cases/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Functional_Test_Cases/config.xml new file mode 100644 index 0000000000..720b6a8bad --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Functional_Test_Cases/config.xml @@ -0,0 +1,54 @@ + + + + + + + + + + + + + false + + + + + H 23 * * * + + + + + + -1 + 15 + -1 + -1 + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-functional-tests.git + f37ad21f-744a-4817-9f5e-02f8ec620b39 + + + + + */release-1.14 + + + false + + + + Jenkinsfile + true + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_LearnerService_Deploy_Dev/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_LearnerService_Deploy_Dev/config.xml new file mode 100644 index 0000000000..d64674949a --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_LearnerService_Deploy_Dev/config.xml @@ -0,0 +1,42 @@ + + + + Deploys Learner Service to DEV environment + false + + + + 10 + 10 + -1 + -1 + + + + + + + + + 2 + + + https://github.com/ekstep/sunbird-devops.git + f37ad21f-744a-4817-9f5e-02f8ec620b39 + + + + + */release-1.13 + + + false + + + + pipelines/sunbird-learner-service/Jenkinsfile.dev + true + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Player_Deploy_Dev/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Player_Deploy_Dev/config.xml new file mode 100644 index 0000000000..117eeed4f1 --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Player_Deploy_Dev/config.xml @@ -0,0 +1,42 @@ + + + + Deploys Player to DEV environment + false + + + + 3 + 4 + -1 + -1 + + + + + + + + + 2 + + + https://github.com/ekstep/sunbird-devops.git + f37ad21f-744a-4817-9f5e-02f8ec620b39 + + + + + */release-1.13 + + + false + + + + pipelines/sunbird-player/Jenkinsfile.dev + true + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Provision_Kafka_Dev/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Provision_Kafka_Dev/config.xml new file mode 100644 index 0000000000..286c59bf99 --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Provision_Kafka_Dev/config.xml @@ -0,0 +1,34 @@ + + + + + false + + + + + + + + 2 + + + https://github.com/ekstep/sunbird-devops.git + f37ad21f-744a-4817-9f5e-02f8ec620b39 + + + + + */release-1.8 + + + false + + + + pipelines/provision-kafka/Jenkinsfile.dev + true + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Provision_Secor_Dev/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Provision_Secor_Dev/config.xml new file mode 100644 index 0000000000..07fe3f7962 --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Provision_Secor_Dev/config.xml @@ -0,0 +1,34 @@ + + + + + false + + + + + + + + 2 + + + https://github.com/ekstep/sunbird-devops.git + f37ad21f-744a-4817-9f5e-02f8ec620b39 + + + + + */release-1.7.1 + + + false + + + + pipelines/provision-secor/Jenkinsfile.dev + true + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Registry_Deploy_Dev/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Registry_Deploy_Dev/config.xml new file mode 100644 index 0000000000..ed80aad624 --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Registry_Deploy_Dev/config.xml @@ -0,0 +1,42 @@ + + + + Deploys Player to DEV environment + false + + + + 3 + 4 + -1 + -1 + + + + + + + + + 2 + + + https://github.com/ekstep/sunbird-devops.git + f37ad21f-744a-4817-9f5e-02f8ec620b39 + + + + + */release-1.11 + + + false + + + + pipelines/sunbird-registry/Jenkinsfile.dev + true + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_TelemetryService_Deploy_Dev/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_TelemetryService_Deploy_Dev/config.xml new file mode 100644 index 0000000000..9cdb3c7dfc --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_TelemetryService_Deploy_Dev/config.xml @@ -0,0 +1,42 @@ + + + + Deploys Telemetry Service to DEV environment + false + + + + 10 + 10 + -1 + -1 + + + + + + + + + 2 + + + https://github.com/ekstep/sunbird-devops.git + f37ad21f-744a-4817-9f5e-02f8ec620b39 + + + + + */release-1.13 + + + false + + + + pipelines/sunbird-telemetry-service/Jenkinsfile.dev + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Telemetry_Logstash_Datapipeline_Deploy_Dev/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Telemetry_Logstash_Datapipeline_Deploy_Dev/config.xml new file mode 100644 index 0000000000..b093e2ecde --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Telemetry_Logstash_Datapipeline_Deploy_Dev/config.xml @@ -0,0 +1,34 @@ + + + + Deploys Telemetry Logstash Datapipeline Service to DEV environment + false + + + + + + + + 2 + + + https://github.com/ekstep/sunbird-devops.git + f37ad21f-744a-4817-9f5e-02f8ec620b39 + + + + + */release-1.13 + + + false + + + + pipelines/telemetry-logstash-datapipeline/Jenkinsfile.dev + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Telemetry_Logstash_Deploy_Dev/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Telemetry_Logstash_Deploy_Dev/config.xml new file mode 100644 index 0000000000..7c3b8c9b6d --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Telemetry_Logstash_Deploy_Dev/config.xml @@ -0,0 +1,34 @@ + + + + Deploys Telemetry Logstash Service to DEV environment + false + + + + + + + + 2 + + + https://github.com/ekstep/sunbird-devops.git + f37ad21f-744a-4817-9f5e-02f8ec620b39 + + + + + */release-1.13 + + + false + + + + pipelines/telemetry-logstash/Jenkinsfile.dev + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Swarm_Agent_Docker_Prune/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Swarm_Agent_Docker_Prune/config.xml new file mode 100644 index 0000000000..44427fc856 --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Swarm_Agent_Docker_Prune/config.xml @@ -0,0 +1,55 @@ + + + + + + + hudson.triggers.TimerTrigger + + + + + + + false + + + + + @midnight + + + + + + -1 + -1 + -1 + -1 + + + + + + 2 + + + https://github.com/ekstep/sunbird-devops.git + f37ad21f-744a-4817-9f5e-02f8ec620b39 + + + + + */release-1.5 + + + false + + + + pipelines/swarm-agent-docker-prune/Jenkinsfile.dev + true + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Swarm_Bootstrap/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Swarm_Bootstrap/config.xml new file mode 100644 index 0000000000..6ecab082e2 --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Swarm_Bootstrap/config.xml @@ -0,0 +1,46 @@ + + + + + false + + + + + env + please give your env name to be bootstrapped + +eg: dev, incase `ansible/inventories/swarm-bootstrap/hosts` have dev-swarm-manager + dev + false + + + + + + + + + + 2 + + + https://github.com/ekstep/sunbird-devops.git + f37ad21f-744a-4817-9f5e-02f8ec620b39 + + + + + */release-1.11 + + + false + + + + pipelines/sunbird-bootstrap/Jenkinsfile.swarm.dev + true + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Yarn_Logs/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Yarn_Logs/config.xml new file mode 100644 index 0000000000..54f0ea5e81 --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Yarn_Logs/config.xml @@ -0,0 +1,47 @@ + + + + + false + + + 2 + + + https://github.com/ekstep/sunbird-devops.git + f37ad21f-744a-4817-9f5e-02f8ec620b39 + + + + + */DO-380 + + + false + + + + localhost-b5cf9b99 + false + false + false + false + + false + + + ls /home/ops/.ssh + +ansible-playbook -i ansible/inventories/dev/hosts ansible/yarn_application.yml --vault-password-file /home/ops/vault +ansible-playbook -i ansible/inventories/dev/hosts ansible/logs.yml --extra-vars "service=dp-yarn-slave user=ecosystem remote=dp-yarn-slave app=yarn sourcepath=/usr/local/hadoop/logs/userlogs" --vault-password-file /home/ops/vault + + + + + + + + xterm + + + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/azure-cli/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/azure-cli/config.xml new file mode 100644 index 0000000000..24b552e2bb --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/azure-cli/config.xml @@ -0,0 +1,34 @@ + + + + + false + + + + + + + + 2 + + + https://github.com/ekstep/sunbird-devops.git + f37ad21f-744a-4817-9f5e-02f8ec620b39 + + + + + */release-1.9 + + + false + + + + pipelines/sunbird-bootstrap/Jenkinsfile.analyticsep.dev + true + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/cassandra complete backup dev/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/cassandra complete backup dev/config.xml new file mode 100644 index 0000000000..144a512f14 --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/cassandra complete backup dev/config.xml @@ -0,0 +1,47 @@ + + + + + + + hudson.triggers.TimerTrigger + + + + + + Complete cassandra node backup to restore a fresh installation + false + + + + + @midnight + + + + + + + 2 + + + https://github.com/ekstep/sunbird-devops.git + f37ad21f-744a-4817-9f5e-02f8ec620b39 + + + + + */release-1.13 + + + false + + + + pipelines/cassandra-backup/Jenkinsfile.dev + true + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/docker-version-upgrade/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/docker-version-upgrade/config.xml new file mode 100644 index 0000000000..0a1d2816fc --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/docker-version-upgrade/config.xml @@ -0,0 +1,46 @@ + + + + + + + + + + + + false + + + + 10 + 10 + -1 + -1 + + + + + + 2 + + + https://github.com/ekstep/sunbird-devops.git + f37ad21f-744a-4817-9f5e-02f8ec620b39 + + + + + */release-1.8 + + + false + + + + pipelines/docker-version-upgrade/Jenkinsfile.dev + true + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/hostname/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/hostname/config.xml new file mode 100644 index 0000000000..80ff3de209 --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/hostname/config.xml @@ -0,0 +1,22 @@ + + + + + false + + + 10.6.0.6-5358553b + false + false + false + false + + false + + + hostname -i + + + + + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/player_all/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/player_all/config.xml new file mode 100644 index 0000000000..6c906c1003 --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/player_all/config.xml @@ -0,0 +1,67 @@ + + + + + + + hudson.triggers.TimerTrigger + + + + + + Uploads to CDN and Deploys player service + false + + + + -1 + 10 + -1 + -1 + + + + + + portal_git_branch + + release-1.13 + false + + + cdn + + https://dev-sunbird-temp.azureedge.net/player/ + false + + + + + + + + + + 2 + + + https://github.com/ekstep/sunbird-devops.git + f37ad21f-744a-4817-9f5e-02f8ec620b39 + + + + + */release-1.13 + + + false + + + + pipelines/player-all/Jenkinsfile.dev + true + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/tenant_cdn_upload/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/tenant_cdn_upload/config.xml new file mode 100644 index 0000000000..a59bbbebd3 --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/tenant_cdn_upload/config.xml @@ -0,0 +1,50 @@ + + + + + false + + + + + branch + + release-1.9 + false + + + cdn + + https://dev-sunbird-temp.azureedge.net + false + + + + + + + + + + 2 + + + https://github.com/ekstep/sunbird-devops.git + f37ad21f-744a-4817-9f5e-02f8ec620b39 + + + + + */release-1.9 + + + false + + + + pipelines/tenant-cdn-upload/Jenkinsfile.dev + true + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/yo/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/yo/config.xml new file mode 100644 index 0000000000..2ac977950d --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/yo/config.xml @@ -0,0 +1,7 @@ + + + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/New_Azure_Infra/config.xml b/deploy/jenkins/jobs/Other/jobs/New_Azure_Infra/config.xml new file mode 100644 index 0000000000..fa2413312f --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/New_Azure_Infra/config.xml @@ -0,0 +1,64 @@ + + + + + + + + + LOCATION + RESOURCE_GROUP_NAME + + + + + + false + + + + + RESOURCE_GROUP_NAME + Resource Group + + false + + + LOCATION + Transit Hub to connect to. + + CentralIndia + SouthIndia + + + + + + false + false + + + + + 2 + + + https://github.com/ekstep/sunbird-devops.git + 64bdfe13-cc30-4864-bd3c-4e89be89fc9d + + + + + */azure_infra + + + false + + + + pipelines/terraform/Jenkinsfile-azure + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/testjob/config.xml b/deploy/jenkins/jobs/Other/jobs/testjob/config.xml new file mode 100644 index 0000000000..218d6d3365 --- /dev/null +++ b/deploy/jenkins/jobs/Other/jobs/testjob/config.xml @@ -0,0 +1,44 @@ + + + + + false + + + false + false + + + + + artifact_source + + ArtifactRepo + false + + + build_number + + + false + + + + + + false + project + false + + + + + + true + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Kafka/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Kafka/config.xml new file mode 100644 index 0000000000..7424761629 --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Kafka/config.xml @@ -0,0 +1,43 @@ + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + {public_repo_branch} + + + false + + + + pipelines/provision/kafka/Jenkinsfile + false + + + true + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Registry/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Registry/config.xml new file mode 100644 index 0000000000..1650ef91d0 --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Registry/config.xml @@ -0,0 +1,43 @@ + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + pipelines/provision/registry/Jenkinsfile + false + + + true + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Secor/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Secor/config.xml new file mode 100644 index 0000000000..90f103f265 --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Secor/config.xml @@ -0,0 +1,43 @@ + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + pipelines/provision/secor/Jenkinsfile + false + + + true + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/Cassandra/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/Cassandra/config.xml new file mode 100644 index 0000000000..abfcd287fa --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/Cassandra/config.xml @@ -0,0 +1,50 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline.git + + + + + ${public_repo_branch} + + + false + + + + pipelines/provision/cassandra/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/Kafka/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/Kafka/config.xml new file mode 100644 index 0000000000..8a4be5de4e --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/Kafka/config.xml @@ -0,0 +1,50 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline.git + + + + + ${public_repo_branch} + + + false + + + + pipelines/provision/kafka/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/TelemetrySearch/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/TelemetrySearch/config.xml new file mode 100644 index 0000000000..3442b0d5a1 --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/TelemetrySearch/config.xml @@ -0,0 +1,50 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline.git + + + + + ${public_repo_branch} + + + false + + + + pipelines/provision/telemetry_elasticsearch/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/Zookeeper/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/Zookeeper/config.xml new file mode 100644 index 0000000000..f10cab2b47 --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/Zookeeper/config.xml @@ -0,0 +1,49 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + false + false + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline.git + + + + + ${public_repo_branch} + + + false + + + + pipelines/provision/zookeeper/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Yarn/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Yarn/config.xml new file mode 100644 index 0000000000..fe08c83f03 --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Yarn/config.xml @@ -0,0 +1,68 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + false + project + false + + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-learning-platform.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/provision/yarn/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Release/config.xml b/deploy/jenkins/jobs/Release/config.xml new file mode 100644 index 0000000000..68477b8ac7 --- /dev/null +++ b/deploy/jenkins/jobs/Release/config.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + All + false + false + + + + + + + + false + + + + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Release/jobs/startRelease/config.xml b/deploy/jenkins/jobs/Release/jobs/startRelease/config.xml new file mode 100644 index 0000000000..4160c8a7fd --- /dev/null +++ b/deploy/jenkins/jobs/Release/jobs/startRelease/config.xml @@ -0,0 +1,64 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + false + false + + + + + releaseBranch + <font color=teal size=2>Release Branch name to create</font> + + true + + + gitCredentialId + + + false + + + + + + false + project + false + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops + + + + + */DO-384 + + + false + + + + pipelines/release/Jenkinsfile.start + true + + + false + \ No newline at end of file diff --git a/deploy/jenkins/plugins.txt b/deploy/jenkins/plugins.txt index 268a72a488..2c2523e845 100644 --- a/deploy/jenkins/plugins.txt +++ b/deploy/jenkins/plugins.txt @@ -1,140 +1,96 @@ -pipeline-milestone-step@1.3.1 -durable-task@1.28 -token-macro@2.5 -pipeline-stage-tags-metadata@1.3.4 -rebuild@1.29 -pipeline-input-step@2.9 -branch-api@2.1.1 -antisamy-markup-formatter@1.5 -pubsub-light@1.12 +junit@1.27 +workflow-basic-steps@2.14 +uno-choice@2.1 +workflow-step-api@2.19 +pam-auth@1.4 +jsch@0.1.55 +workflow-durable-task-step@2.29 +matrix-project@1.13 +docker-commons@1.13 +github-branch-source@2.4.2 +pipeline-model-api@1.3.4.1 +pipeline-rest-api@2.10 +lockable-resources@2.4 +pipeline-github-lib@1.0 +ws-cleanup@0.37 +pipeline-build-step@2.7 conditional-buildstep@1.3.6 -ws-cleanup@0.36 +durable-task@1.29 +pipeline-model-extensions@1.3.4.1 +jquery-ui@1.0.2 +htmlpublisher@1.18 greenballs@1.15 -workflow-aggregator@2.6 -command-launcher@1.2 -workflow-durable-task-step@2.27 -favorite@2.3.2 -workflow-cps-global-lib@2.12 -email-ext@2.63 -cloudbees-folder@6.7 -blueocean-web@1.9.0 -pipeline-rest-api@2.10 -workflow-step-api@2.17 -plain-credentials@1.4 -trilead-api@1.0.1 -uno-choice@2.1 -scm-api@2.3.0 -credentials@2.1.18 -blueocean-pipeline-scm-api@1.9.0 -git-server@1.7 -github@1.29.3 -jacoco@3.0.4 -github-branch-source@2.4.1 -authentication-tokens@1.3 +workflow-cps@2.63 +ssh-agent@1.17 display-url-api@2.3.0 -external-monitor-job@1.7 -docker-workflow@1.17 -junit@1.26.1 -resource-disposer@0.12 -script-security@1.49 -jobgenerator@1.22 -pipeline-model-declarative-agent@1.1.1 -pipeline-utility-steps@2.2.0 -javadoc@1.4 -pipeline-model-api@1.3.4 +structs@1.17 +workflow-api@2.33 +build-pipeline-plugin@1.5.8 +ansicolor@0.6.2 +ssh-credentials@1.14 +pipeline-milestone-step@1.3.1 +pipeline-graph-analysis@1.9 +token-macro@2.6 +github@1.29.4 thinBackup@1.9 -lockable-resources@2.3 -ssh-slaves@1.29.1 -handlebars@1.1.1 -jdk-tool@1.1 -pam-auth@1.4 -subversion@2.12.1 -blueocean-core-js@1.9.0 -maven-plugin@3.1.2 github-api@1.95 -job-dsl@1.71 -code-coverage-api@1.0.5 -blueocean-pipeline-api-impl@1.9.0 -jackson2-api@2.9.7.1 -pipeline-build-step@2.7 -blueocean-rest@1.9.0 -s3@0.11.2 -backup@1.6.1 ldap@1.20 -workflow-scm-step@2.7 -multiple-scms@0.6 +pipeline-model-declarative-agent@1.1.1 +gradle@1.30 +plain-credentials@1.5 +workflow-support@3.2 +pipeline-model-definition@1.3.4.1 matrix-auth@2.3 -timestamper@1.8.10 -ssh-agent@1.17 -pipeline-model-extensions@1.3.4 -build-user-vars-plugin@1.5 -matrix-project@1.13 -pipeline-stage-step@2.3 -blueocean-jwt@1.9.0 -pipeline-graph-analysis@1.9 -workflow-support@2.24 run-condition@1.2 -icon-shim@2.0.3 -git@3.9.1 -workflow-basic-steps@2.13 -gradle@1.29 -jenkins-design-language@1.9.0 -ant@1.9 -pipeline-stage-view@2.10 -git-client@2.7.4 +windows-slaves@1.4 +build-name-setter@1.7.0 +jquery@1.12.4-0 +active-directory@2.12 +script-security@1.52 +credentials@2.1.18 +copyartifact@1.41 +throttle-concurrents@2.0.1 workflow-multibranch@2.20 -parameterized-trigger@2.35.2 -hudson-wsclean-plugin@1.0.5 -audit-trail@2.3 -blueocean-rest-impl@1.9.0 -pipeline-model-definition@1.3.4 -generic-webhook-trigger@1.50 -workflow-api@2.33 -ssh-credentials@1.14 -bouncycastle-api@2.17 -workflow-job@2.31 -credentials-binding@1.17 -docker-commons@1.13 +ant@1.9 +branch-api@2.1.2 +email-ext@2.63 +role-strategy@2.10 +git@3.9.3 +ssh-slaves@1.29.4 momentjs@1.1.1 +pipeline-stage-view@2.10 apache-httpcomponents-client-4-api@4.5.5-3.0 -blueocean-commons@1.9.0 -envinject-api@1.5 -cobertura@1.13 -aws-java-sdk@1.11.457 +jdk-tool@1.2 +jackson2-api@2.9.8 +workflow-scm-step@2.7 +antisamy-markup-formatter@1.5 +credentials-binding@1.17 +docker-workflow@1.17 ace-editor@1.1 -jsch@0.1.54.2 -config-file-provider@3.4.1 -mailer@1.22 -mapdb-api@1.0.9.0 -variant@1.1 +workflow-job@2.31 +scm-api@2.3.0 +bouncycastle-api@2.17 +authentication-tokens@1.3 +pipeline-input-step@2.9 +javadoc@1.4 +pipeline-stage-step@2.3 +mailer@1.23 +code-coverage-api@1.0.7 +handlebars@1.1.1 +git-server@1.7 +git-client@2.7.6 +command-launcher@1.3 +resource-disposer@0.12 +rebuild@1.29 jquery-detached@1.2.1 -structs@1.17 -windows-slaves@1.3.1 -pipeline-github-lib@1.0 -jobConfigHistory@2.19 build-timeout@1.19 -workflow-cps@2.61 -pipeline-maven@3.6.6 -build-pipeline-plugin@1.5.8 -copyartifact@1.41 -slack@2.3 -htmlpublisher@1.14 -metrics@3.1.2.10 -blueocean-dashboard@1.1.4 -blueocean-display-url@2.0 -blueocean-github-pipeline@1.1.4 -swarm@3.4 -blueocean-config@1.1.4 -delivery-pipeline-plugin@1.0.3 -blueocean-git-pipeline@1.1.4 -blueocean-autofavorite@1.0.0 -blueocean@1.1.4 -role-strategy@2.5.1 -blueocean-events@1.1.4 -jquery@1.11.2-0 -sse-gateway@1.15 -blueocean-i18n@1.1.4 -nodejs@1.2.2 -blueocean-personalization@1.1.4 -blueocean-pipeline-editor@0.2.0 -ansicolor@0.5.2 +workflow-aggregator@2.6 +external-monitor-job@1.7 +timestamper@1.9 +cloudbees-folder@6.7 +maven-plugin@3.2 +workflow-cps-global-lib@2.13 +dashboard-view@2.10 +cobertura@1.13 +parameterized-trigger@2.35.2 +pipeline-stage-tags-metadata@1.3.4.1 From ff7bf59b7f4dc47c02291e5bf09387d7bc69c806 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Tue, 19 Feb 2019 18:50:44 +0530 Subject: [PATCH 1160/1345] Issue #000 feat: Refactored subird secrets --- .../ansible/inventory/dev/Core/secrets.yml | 22 +++++-------------- 1 file changed, 6 insertions(+), 16 deletions(-) diff --git a/private_repo/ansible/inventory/dev/Core/secrets.yml b/private_repo/ansible/inventory/dev/Core/secrets.yml index 7df8f94241..179644cc70 100644 --- a/private_repo/ansible/inventory/dev/Core/secrets.yml +++ b/private_repo/ansible/inventory/dev/Core/secrets.yml @@ -1,8 +1,11 @@ +# !! Might deprecate +core_vault_sunbird_ekstep_api_key: + ############# Core ####################### ####### Secrets ####### core_vault_postgres_password: -core_vault_sunbird_azure_storage_key: +core_vault_sunbird_azure_storage_key : core_vault_docker_registry_url: "https://index.docker.io/v1" # use this value if using dockerhub core_vault_docker_registry_user: core_vault_docker_registry_password: @@ -15,32 +18,19 @@ core_vault_ansible_vault_password: ################### DONT FILL THESE VARIABLES INITIALLY ################### core_vault_sunbird_sso_publickey: # Get After Keycloak Deployment -core_vault_sunbird_api_auth_token: -core_vault_sunbird_ekstep_api_key: +core_vault_sunbird_api_auth_token: #Authorization key (JWT) to access Sunbird APIs. This will be in the output of deploy-apis.sh script, extracting it out is documented in the deployment wiki. # Not mandatory vault_core_url_shortner_access_token: "" - - - - - - ####################### END OF VARS ########################################## - - - - - #NOT REQUIRED TO EDIT ############################## core_vault_keycloak_password: "admin" core_vault_mail_server_password: '' core_vault_grafana_admin_password: "sunbird" -core_vault_truststore_password: "sunbird" +core_vault_truststore_password: "sunbird" # Password for cassandra trust store core_vault_sunbird_trampoline_secret: "deep-secret" ## any 8 character value -core_vault_sunbird_account_key: "{{core_vault_sunbird_azure_storage_key}}" core_vault_sunbird_encryption_key: core_vault_postgres_replication_user_password: "{{core_vault_postgres_password}}" core_vault_postgres_exporter_password: "{{core_vault_postgres_password}}" From 1a9231d6f86ce7e8b98a6224aadd6fdf8879e9ea Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Tue, 19 Feb 2019 18:57:02 +0530 Subject: [PATCH 1161/1345] Issue #000 feat: Refactoring secrets --- private_repo/ansible/inventory/dev/Core/secrets.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/private_repo/ansible/inventory/dev/Core/secrets.yml b/private_repo/ansible/inventory/dev/Core/secrets.yml index 179644cc70..90a385c181 100644 --- a/private_repo/ansible/inventory/dev/Core/secrets.yml +++ b/private_repo/ansible/inventory/dev/Core/secrets.yml @@ -1,5 +1,7 @@ # !! Might deprecate +core_vault_postgres_replication_user_password: "{{core_vault_postgres_password}}" core_vault_sunbird_ekstep_api_key: +core_vault_sunbird_encryption_key: ############# Core ####################### ####### Secrets ####### @@ -31,8 +33,6 @@ core_vault_mail_server_password: '' core_vault_grafana_admin_password: "sunbird" core_vault_truststore_password: "sunbird" # Password for cassandra trust store core_vault_sunbird_trampoline_secret: "deep-secret" ## any 8 character value -core_vault_sunbird_encryption_key: -core_vault_postgres_replication_user_password: "{{core_vault_postgres_password}}" core_vault_postgres_exporter_password: "{{core_vault_postgres_password}}" core_vault_keycloak_api_management_user_password: admin core_vault_keystore_password: sunbird ## cassandra keystore password From 8386f666b3ff0675dcb316bcd5686d6d81dfebd6 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Tue, 19 Feb 2019 19:18:30 +0530 Subject: [PATCH 1162/1345] Issue #000 feat: Rearranging secrets --- private_repo/ansible/inventory/dev/Core/secrets.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/private_repo/ansible/inventory/dev/Core/secrets.yml b/private_repo/ansible/inventory/dev/Core/secrets.yml index 90a385c181..82cb1a363f 100644 --- a/private_repo/ansible/inventory/dev/Core/secrets.yml +++ b/private_repo/ansible/inventory/dev/Core/secrets.yml @@ -15,6 +15,8 @@ core_vault_proxy_site_key: |+ core_vault_proxy_site_crt: |+ +core_vault_deployer_ssh_key: |+ +core_vault_ops_private_key: |+ core_vault_ansible_vault_password: ################### DONT FILL THESE VARIABLES INITIALLY ################### @@ -42,8 +44,6 @@ core_vault_jenkins_slave_jenkins_username: "" #### if it is not required will re core_vault_badger_admin_password: "sunbird" core_vault_badging_authorization_key: core_vault_jenkins_slave_jenkins_password: "" #### if it is not required will remove -core_vault_deployer_ssh_key: |+ -core_vault_ops_private_key: |+ core_vault_trampoline_secret: "{{core_vault_sunbird_trampoline_secret}}" ## dont core_vault_azure_storage_secret: "{{core_vault_sunbird_azure_storage_key}}" # Artifact upload From d8653b57ba233a353c5f9a828c0d430c24b2bdf2 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Tue, 19 Feb 2019 19:24:57 +0530 Subject: [PATCH 1163/1345] Issue #000 feat: Removed deprecated secret --- private_repo/ansible/inventory/dev/Core/secrets.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/private_repo/ansible/inventory/dev/Core/secrets.yml b/private_repo/ansible/inventory/dev/Core/secrets.yml index 82cb1a363f..4aed53e88d 100644 --- a/private_repo/ansible/inventory/dev/Core/secrets.yml +++ b/private_repo/ansible/inventory/dev/Core/secrets.yml @@ -45,7 +45,6 @@ core_vault_badger_admin_password: "sunbird" core_vault_badging_authorization_key: core_vault_jenkins_slave_jenkins_password: "" #### if it is not required will remove core_vault_trampoline_secret: "{{core_vault_sunbird_trampoline_secret}}" ## dont -core_vault_azure_storage_secret: "{{core_vault_sunbird_azure_storage_key}}" # Artifact upload ################################################### From 03063604683346dc5a8992ef65361fafe313c5f5 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Tue, 19 Feb 2019 19:30:54 +0530 Subject: [PATCH 1164/1345] Issue #000 feat: Updated non-mandatory vars --- private_repo/ansible/inventory/dev/Core/secrets.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/private_repo/ansible/inventory/dev/Core/secrets.yml b/private_repo/ansible/inventory/dev/Core/secrets.yml index 4aed53e88d..6177c3133b 100644 --- a/private_repo/ansible/inventory/dev/Core/secrets.yml +++ b/private_repo/ansible/inventory/dev/Core/secrets.yml @@ -25,6 +25,8 @@ core_vault_sunbird_sso_publickey: # Get After Keycloak Deployment core_vault_sunbird_api_auth_token: #Authorization key (JWT) to access Sunbird APIs. This will be in the output of deploy-apis.sh script, extracting it out is documented in the deployment wiki. # Not mandatory +core_vault_keycloak_api_management_user_password: admin +core_vault_keystore_password: sunbird #Password to use for encrypting cassandra keystore. Use a strong password. vault_core_url_shortner_access_token: "" ####################### END OF VARS ########################################## @@ -36,8 +38,6 @@ core_vault_grafana_admin_password: "sunbird" core_vault_truststore_password: "sunbird" # Password for cassandra trust store core_vault_sunbird_trampoline_secret: "deep-secret" ## any 8 character value core_vault_postgres_exporter_password: "{{core_vault_postgres_password}}" -core_vault_keycloak_api_management_user_password: admin -core_vault_keystore_password: sunbird ## cassandra keystore password core_vault_sunbird_sso_username: admin core_vault_sunbird_sso_password: admin core_vault_jenkins_slave_jenkins_username: "" #### if it is not required will remove From d6980a51d75cbbec5fa6c6ad036a2d48cc9ce9e7 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Tue, 19 Feb 2019 19:38:07 +0530 Subject: [PATCH 1165/1345] Issue #000 feat: refactored postgres secrets --- ansible/inventory/env/group_vars/all.yml | 2 +- .../ansible/inventory/dev/Core/secrets.yml | 17 ++++++++--------- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/ansible/inventory/env/group_vars/all.yml b/ansible/inventory/env/group_vars/all.yml index 375ae422e0..a3a4f418aa 100644 --- a/ansible/inventory/env/group_vars/all.yml +++ b/ansible/inventory/env/group_vars/all.yml @@ -77,7 +77,7 @@ sunbird_google_keycloak_secret: "{{core_vault_google_keycloak_secret}}" jenkins_admin_username: "{{core_vault_jenkins_admin_username}}" jenkins_admin_password: "{{core_vault_jenkins_admin_password}}" vault_badging_authorization_key: "{{core_vault_badging_authorization_key}}" -vault_postgres_exporter_password: "{{core_vault_postgres_exporter_password}}" +vault_postgres_exporter_password: "{{core_vault_postgres_password}}" ## Postgres configuration swarm_address_space: "{{groups['swarm-manager'][0].split(\".\")[0]}}.0.0.0/8" #Application server address space (e.g. 10.3.0.0/24), also the agentpublicSubnet if using Azure scripts provided diff --git a/private_repo/ansible/inventory/dev/Core/secrets.yml b/private_repo/ansible/inventory/dev/Core/secrets.yml index 6177c3133b..6315dcdecb 100644 --- a/private_repo/ansible/inventory/dev/Core/secrets.yml +++ b/private_repo/ansible/inventory/dev/Core/secrets.yml @@ -25,23 +25,22 @@ core_vault_sunbird_sso_publickey: # Get After Keycloak Deployment core_vault_sunbird_api_auth_token: #Authorization key (JWT) to access Sunbird APIs. This will be in the output of deploy-apis.sh script, extracting it out is documented in the deployment wiki. # Not mandatory +core_vault_mail_server_password: '' core_vault_keycloak_api_management_user_password: admin core_vault_keystore_password: sunbird #Password to use for encrypting cassandra keystore. Use a strong password. vault_core_url_shortner_access_token: "" - -####################### END OF VARS ########################################## - -#NOT REQUIRED TO EDIT ############################## +core_vault_sunbird_sso_username: admin +core_vault_sunbird_sso_password: admin core_vault_keycloak_password: "admin" -core_vault_mail_server_password: '' core_vault_grafana_admin_password: "sunbird" core_vault_truststore_password: "sunbird" # Password for cassandra trust store core_vault_sunbird_trampoline_secret: "deep-secret" ## any 8 character value -core_vault_postgres_exporter_password: "{{core_vault_postgres_password}}" -core_vault_sunbird_sso_username: admin -core_vault_sunbird_sso_password: admin -core_vault_jenkins_slave_jenkins_username: "" #### if it is not required will remove + +####################### END OF VARS ########################################## + +#NOT REQUIRED TO EDIT ############################## core_vault_badger_admin_password: "sunbird" +core_vault_jenkins_slave_jenkins_username: "" #### if it is not required will remove core_vault_badging_authorization_key: core_vault_jenkins_slave_jenkins_password: "" #### if it is not required will remove core_vault_trampoline_secret: "{{core_vault_sunbird_trampoline_secret}}" ## dont From a40abaa69d1b3fd7df34b402349115330c208f5c Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Wed, 20 Feb 2019 10:55:42 +0530 Subject: [PATCH 1166/1345] Issue #000 feat: Removed msg91 varaibles --- private_repo/ansible/inventory/dev/Core/secrets.yml | 5 ----- 1 file changed, 5 deletions(-) diff --git a/private_repo/ansible/inventory/dev/Core/secrets.yml b/private_repo/ansible/inventory/dev/Core/secrets.yml index 6315dcdecb..2b0495e7bb 100644 --- a/private_repo/ansible/inventory/dev/Core/secrets.yml +++ b/private_repo/ansible/inventory/dev/Core/secrets.yml @@ -49,11 +49,6 @@ core_vault_trampoline_secret: "{{core_vault_sunbird_trampoline_secret}}" ## don ################################################### #MSG91 -core_vault_sender: -core_vault_country: -core_vault_route: -core_vault_sms_method_type: POST -core_vault_auth_key: core_vault_google_captcha_site_key: core_vault_sunbird_google_oauth_clientId_portal: core_vault_sunbird_google_oauth_clientSecret_portal: From 04553feef817519832612f45e7c32a797dd57a80 Mon Sep 17 00:00:00 2001 From: S M Y Date: Wed, 20 Feb 2019 11:04:39 +0530 Subject: [PATCH 1167/1345] Issue #000 psql: psql data update for postgres --- .../templates/tables_postgres.sql | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/ansible/roles/postgresql-data-update/templates/tables_postgres.sql b/ansible/roles/postgresql-data-update/templates/tables_postgres.sql index b72eaf5d24..9c5beaa1cd 100644 --- a/ansible/roles/postgresql-data-update/templates/tables_postgres.sql +++ b/ansible/roles/postgresql-data-update/templates/tables_postgres.sql @@ -1,14 +1,3 @@ -tables_postgres.sql -9072cfb 7 days ago - manzarul.haque issue #485 feat:quartz chnages -0 contributors -RawBlameHistory -188 lines (169 sloc) 6.54 KB --- Thanks to Patrick Lightbody for submitting this... --- --- In your Quartz properties file, you'll need to set --- org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.PostgreSQLDelegate - drop table qrtz_fired_triggers; DROP TABLE QRTZ_PAUSED_TRIGGER_GRPS; DROP TABLE QRTZ_SCHEDULER_STATE; From 7ae2ca6cc242aae26eddc9a55cea8fcc45709122 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Wed, 20 Feb 2019 11:00:04 +0530 Subject: [PATCH 1168/1345] Issue #000 feat: refactored msg91 variable --- ansible/roles/keycloak/defaults/main.yml | 4 ++++ ansible/roles/keycloak/templates/Msg91Creds.json.j2 | 10 +++++----- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/ansible/roles/keycloak/defaults/main.yml b/ansible/roles/keycloak/defaults/main.yml index b31bc15e32..3e9ac08642 100644 --- a/ansible/roles/keycloak/defaults/main.yml +++ b/ansible/roles/keycloak/defaults/main.yml @@ -107,3 +107,7 @@ theme: "sunrise.tar.gz" dest_theme: "/opt/keycloak/themes/" theme_file: sunrise keycloak_home: /opt/keycloak +sunbird_msg_sender: +sunbird_msg_country_ID: +sunbird_msg_route: +sunbird_msg_method_type: diff --git a/ansible/roles/keycloak/templates/Msg91Creds.json.j2 b/ansible/roles/keycloak/templates/Msg91Creds.json.j2 index d584b8be72..f28f259e73 100644 --- a/ansible/roles/keycloak/templates/Msg91Creds.json.j2 +++ b/ansible/roles/keycloak/templates/Msg91Creds.json.j2 @@ -1,7 +1,7 @@ { - "auth_key": "{{vault_auth_key}}", - "sender": "{{vault_sender}}", - "country": "{{vault_country}}", - "route": "{{vault_route}}", - "sms_method_type": "{{vault_sms_method_type}}" + "auth_key": "{{sunbird_msg91_auth}}", + "sender": "{{sunbird_msg91_sender}}", + "country": "{{sunbird_msg91_country_ID}}", + "route": "{{sunbird_msg91_route}}", + "sms_method_type": "{{sunbird_msg91_method_type}}" } From 669bd44a42b309786e7181f30aaeab5f895dc966 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Wed, 20 Feb 2019 11:17:43 +0530 Subject: [PATCH 1169/1345] Issue #000 feat: sms defaults added in defaults --- ansible/roles/keycloak/defaults/main.yml | 10 ++++++---- ansible/roles/keycloak/templates/Msg91Creds.json.j2 | 10 +++++----- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/ansible/roles/keycloak/defaults/main.yml b/ansible/roles/keycloak/defaults/main.yml index 3e9ac08642..250308ff76 100644 --- a/ansible/roles/keycloak/defaults/main.yml +++ b/ansible/roles/keycloak/defaults/main.yml @@ -107,7 +107,9 @@ theme: "sunrise.tar.gz" dest_theme: "/opt/keycloak/themes/" theme_file: sunrise keycloak_home: /opt/keycloak -sunbird_msg_sender: -sunbird_msg_country_ID: -sunbird_msg_route: -sunbird_msg_method_type: +# Sms Defaults +sunbird_msg_91_auth: +sunbird_msg_91_sender: +sunbird_msg_91_country_ID: +sunbird_msg_91_route: +sunbird_msg_91_method_type: diff --git a/ansible/roles/keycloak/templates/Msg91Creds.json.j2 b/ansible/roles/keycloak/templates/Msg91Creds.json.j2 index f28f259e73..1ce6e818d4 100644 --- a/ansible/roles/keycloak/templates/Msg91Creds.json.j2 +++ b/ansible/roles/keycloak/templates/Msg91Creds.json.j2 @@ -1,7 +1,7 @@ { - "auth_key": "{{sunbird_msg91_auth}}", - "sender": "{{sunbird_msg91_sender}}", - "country": "{{sunbird_msg91_country_ID}}", - "route": "{{sunbird_msg91_route}}", - "sms_method_type": "{{sunbird_msg91_method_type}}" + "auth_key": "{{sunbird_msg_91_auth}}", + "sender": "{{sunbird_msg_91_sender}}", + "country": "{{sunbird_msg_91_country_ID}}", + "route": "{{sunbird_msg_91_route}}", + "sms_method_type": "{{sunbird_msg_91_method_type}}" } From 0b6aabb838a385c07ba3a156032d3c435cd03e5a Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Wed, 20 Feb 2019 11:38:15 +0530 Subject: [PATCH 1170/1345] Issue #000 feat: url shortner comment --- private_repo/ansible/inventory/dev/Core/secrets.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/private_repo/ansible/inventory/dev/Core/secrets.yml b/private_repo/ansible/inventory/dev/Core/secrets.yml index 2b0495e7bb..659e4d7f40 100644 --- a/private_repo/ansible/inventory/dev/Core/secrets.yml +++ b/private_repo/ansible/inventory/dev/Core/secrets.yml @@ -28,7 +28,7 @@ core_vault_sunbird_api_auth_token: #Authorization key (JWT) to access Sunbird AP core_vault_mail_server_password: '' core_vault_keycloak_api_management_user_password: admin core_vault_keystore_password: sunbird #Password to use for encrypting cassandra keystore. Use a strong password. -vault_core_url_shortner_access_token: "" +vault_core_url_shortner_access_token: "" # Url shortner access token for learning-service; only if url_shortner enabled core_vault_sunbird_sso_username: admin core_vault_sunbird_sso_password: admin core_vault_keycloak_password: "admin" From f11b5f6763160346fa2237a18c89a075f67fa60a Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Wed, 20 Feb 2019 11:42:52 +0530 Subject: [PATCH 1171/1345] Issue #000 feat: refactored tampoline secret variable --- private_repo/ansible/inventory/dev/Core/secrets.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/private_repo/ansible/inventory/dev/Core/secrets.yml b/private_repo/ansible/inventory/dev/Core/secrets.yml index 659e4d7f40..b4eac191ce 100644 --- a/private_repo/ansible/inventory/dev/Core/secrets.yml +++ b/private_repo/ansible/inventory/dev/Core/secrets.yml @@ -34,7 +34,7 @@ core_vault_sunbird_sso_password: admin core_vault_keycloak_password: "admin" core_vault_grafana_admin_password: "sunbird" core_vault_truststore_password: "sunbird" # Password for cassandra trust store -core_vault_sunbird_trampoline_secret: "deep-secret" ## any 8 character value +core_vault_trampoline_secret: "deep-secret" ## any 8 character value ####################### END OF VARS ########################################## @@ -43,7 +43,6 @@ core_vault_badger_admin_password: "sunbird" core_vault_jenkins_slave_jenkins_username: "" #### if it is not required will remove core_vault_badging_authorization_key: core_vault_jenkins_slave_jenkins_password: "" #### if it is not required will remove -core_vault_trampoline_secret: "{{core_vault_sunbird_trampoline_secret}}" ## dont ################################################### From 3fb0161467ae8588c186fad0606701966627bb74 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Wed, 20 Feb 2019 11:46:02 +0530 Subject: [PATCH 1172/1345] Issue #000 feat: Updated google signin comment --- private_repo/ansible/inventory/dev/Core/secrets.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/private_repo/ansible/inventory/dev/Core/secrets.yml b/private_repo/ansible/inventory/dev/Core/secrets.yml index b4eac191ce..6823792b2b 100644 --- a/private_repo/ansible/inventory/dev/Core/secrets.yml +++ b/private_repo/ansible/inventory/dev/Core/secrets.yml @@ -1,3 +1,6 @@ +# Not found +core_vault_google_captcha_site_key: + # !! Might deprecate core_vault_postgres_replication_user_password: "{{core_vault_postgres_password}}" core_vault_sunbird_ekstep_api_key: @@ -47,8 +50,7 @@ core_vault_jenkins_slave_jenkins_password: "" #### if it is not required will re ################################################### -#MSG91 -core_vault_google_captcha_site_key: +#Portal one google sso core_vault_sunbird_google_oauth_clientId_portal: core_vault_sunbird_google_oauth_clientSecret_portal: core_vault_sunbird_google_captcha_site_key_portal: From 2edeaa75e90408ff61bb2f1cbd56714c01be28fd Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Wed, 20 Feb 2019 11:49:11 +0530 Subject: [PATCH 1173/1345] Issue #000 feat: Updated comment for kibana and portal oauth --- private_repo/ansible/inventory/dev/Core/secrets.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/private_repo/ansible/inventory/dev/Core/secrets.yml b/private_repo/ansible/inventory/dev/Core/secrets.yml index 6823792b2b..d9e441d345 100644 --- a/private_repo/ansible/inventory/dev/Core/secrets.yml +++ b/private_repo/ansible/inventory/dev/Core/secrets.yml @@ -50,13 +50,15 @@ core_vault_jenkins_slave_jenkins_password: "" #### if it is not required will re ################################################### -#Portal one google sso +# Portal one google sso core_vault_sunbird_google_oauth_clientId_portal: core_vault_sunbird_google_oauth_clientSecret_portal: core_vault_sunbird_google_captcha_site_key_portal: +core_vault_sunbird_google_keycloak_secret: + +# Oauth for logger kibana core_vault_kibana_google_client_id: core_vault_kibana_google_client_secret: -core_vault_sunbird_google_keycloak_secret: ### From 7ec3547ced0e437fe0c9ff273dd62c696b347262 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Wed, 20 Feb 2019 11:54:08 +0530 Subject: [PATCH 1174/1345] Issue #000 feat: Deleted duplicate var core_vault_google_keycloak_secret --- ansible/inventory/env/group_vars/all.yml | 1 - private_repo/ansible/inventory/dev/Core/secrets.yml | 1 - 2 files changed, 2 deletions(-) diff --git a/ansible/inventory/env/group_vars/all.yml b/ansible/inventory/env/group_vars/all.yml index a3a4f418aa..f21c1a1d21 100644 --- a/ansible/inventory/env/group_vars/all.yml +++ b/ansible/inventory/env/group_vars/all.yml @@ -73,7 +73,6 @@ sunbird_account_key: "{{core_vault_sunbird_azure_storage_key}}" ansible_vault_password: "{{ core_vault_ansible_vault_password }}" sunbird_account_name: "{{core_vault_sunbird_azure_storage_account}}" sunbird_azure_account_name: "{{core_vault_sunbird_azure_storage_account}}" -sunbird_google_keycloak_secret: "{{core_vault_google_keycloak_secret}}" jenkins_admin_username: "{{core_vault_jenkins_admin_username}}" jenkins_admin_password: "{{core_vault_jenkins_admin_password}}" vault_badging_authorization_key: "{{core_vault_badging_authorization_key}}" diff --git a/private_repo/ansible/inventory/dev/Core/secrets.yml b/private_repo/ansible/inventory/dev/Core/secrets.yml index d9e441d345..5994404fc1 100644 --- a/private_repo/ansible/inventory/dev/Core/secrets.yml +++ b/private_repo/ansible/inventory/dev/Core/secrets.yml @@ -63,7 +63,6 @@ core_vault_kibana_google_client_secret: ### core_vault_proxy_prometheus_admin_creds: "admin" -core_vault_google_keycloak_secret: core_vault_sunbird_google_oauth_clientSecret: core_vault_postgres_username: postgres # dont change this value core_vault_sudo_crypt_deployer: "" From 44f90a3b81a698f829aad0387f0c2cac621601d9 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Wed, 20 Feb 2019 11:55:58 +0530 Subject: [PATCH 1175/1345] Issue #000 feat: Updated not used variable --- private_repo/ansible/inventory/dev/Core/secrets.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/private_repo/ansible/inventory/dev/Core/secrets.yml b/private_repo/ansible/inventory/dev/Core/secrets.yml index 5994404fc1..e0628c679d 100644 --- a/private_repo/ansible/inventory/dev/Core/secrets.yml +++ b/private_repo/ansible/inventory/dev/Core/secrets.yml @@ -1,5 +1,7 @@ # Not found core_vault_google_captcha_site_key: +core_vault_sudo_crypt_deployer: "" +core_vault_sunbird_google_oauth_clientSecret: # !! Might deprecate core_vault_postgres_replication_user_password: "{{core_vault_postgres_password}}" @@ -63,9 +65,7 @@ core_vault_kibana_google_client_secret: ### core_vault_proxy_prometheus_admin_creds: "admin" -core_vault_sunbird_google_oauth_clientSecret: core_vault_postgres_username: postgres # dont change this value -core_vault_sudo_crypt_deployer: "" core_vault_msg91_auth_key: core_vault_sunbird_fcm_account_key: "" core_vault_jenkins_admin_username: "" #### if it is not required will remove From 372d04a27ac174b508e5169a0b5c8d038f0354dc Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Wed, 20 Feb 2019 12:03:31 +0530 Subject: [PATCH 1176/1345] Issue #000 feat: Updated variable for msg91 secret --- ansible/inventory/env/group_vars/all.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/inventory/env/group_vars/all.yml b/ansible/inventory/env/group_vars/all.yml index f21c1a1d21..52f03a0b05 100644 --- a/ansible/inventory/env/group_vars/all.yml +++ b/ansible/inventory/env/group_vars/all.yml @@ -176,7 +176,7 @@ sunbird_azure_storage_key: "{{core_vault_sunbird_azure_storage_key}}" sunbird_app_url: sunbird_fcm_account_key: "{{core_vault_sunbird_fcm_account_key}}" sunbird_env_logo_url: "{{proto}}://{{proxy_server_name}}/common/images/sunbird_logo.png" -sunbird_msg_91_auth: "{{core_vault_msg91_auth_key}}" +sunbird_msg_91_auth: "{{core_vault_msg_91_auth_key}}" sunbird_telemetry_pdata_id: "{{env}}.sunbird.learning.service" sunbird_http_orgin: "{{proto}}://{{ proxy_server_name }}/badging" sunbird_encryption_key: "{{ core_vault_sunbird_encryption_key }}" From d24b1f22370e3d740d9d52f7b5b5986260e4506a Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Wed, 20 Feb 2019 12:04:25 +0530 Subject: [PATCH 1177/1345] Issue #000 feat: Updated msg91 auth_secret --- private_repo/ansible/inventory/dev/Core/secrets.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/private_repo/ansible/inventory/dev/Core/secrets.yml b/private_repo/ansible/inventory/dev/Core/secrets.yml index e0628c679d..58649493d8 100644 --- a/private_repo/ansible/inventory/dev/Core/secrets.yml +++ b/private_repo/ansible/inventory/dev/Core/secrets.yml @@ -40,6 +40,7 @@ core_vault_keycloak_password: "admin" core_vault_grafana_admin_password: "sunbird" core_vault_truststore_password: "sunbird" # Password for cassandra trust store core_vault_trampoline_secret: "deep-secret" ## any 8 character value +core_vault_msg_91_auth_key: ####################### END OF VARS ########################################## @@ -66,7 +67,6 @@ core_vault_kibana_google_client_secret: ### core_vault_proxy_prometheus_admin_creds: "admin" core_vault_postgres_username: postgres # dont change this value -core_vault_msg91_auth_key: core_vault_sunbird_fcm_account_key: "" core_vault_jenkins_admin_username: "" #### if it is not required will remove core_vault_jenkins_admin_password: "" #### if it is not required will remove From 84237a87c93b2d5de3141ac0cf6a610e3e8af568 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Wed, 20 Feb 2019 12:05:51 +0530 Subject: [PATCH 1178/1345] Issue #000 feat: Updated unnecssary vars --- private_repo/ansible/inventory/dev/Core/secrets.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/private_repo/ansible/inventory/dev/Core/secrets.yml b/private_repo/ansible/inventory/dev/Core/secrets.yml index 58649493d8..68175d6c11 100644 --- a/private_repo/ansible/inventory/dev/Core/secrets.yml +++ b/private_repo/ansible/inventory/dev/Core/secrets.yml @@ -2,6 +2,8 @@ core_vault_google_captcha_site_key: core_vault_sudo_crypt_deployer: "" core_vault_sunbird_google_oauth_clientSecret: +core_vault_sunbird_fcm_account_key: "" +core_vault_google_captcha_site_key: '' # !! Might deprecate core_vault_postgres_replication_user_password: "{{core_vault_postgres_password}}" @@ -49,6 +51,8 @@ core_vault_badger_admin_password: "sunbird" core_vault_jenkins_slave_jenkins_username: "" #### if it is not required will remove core_vault_badging_authorization_key: core_vault_jenkins_slave_jenkins_password: "" #### if it is not required will remove +core_vault_jenkins_admin_username: "" #### if it is not required will remove +core_vault_jenkins_admin_password: "" #### if it is not required will remove ################################################### @@ -67,10 +71,6 @@ core_vault_kibana_google_client_secret: ### core_vault_proxy_prometheus_admin_creds: "admin" core_vault_postgres_username: postgres # dont change this value -core_vault_sunbird_fcm_account_key: "" -core_vault_jenkins_admin_username: "" #### if it is not required will remove -core_vault_jenkins_admin_password: "" #### if it is not required will remove -core_vault_google_captcha_site_key: '' core_vault_kibana_google_client_id: core_vault_kibana_google_client_secret: core_vault_kibana_cookie_secret: From d8aed2361790f3bcf473a92b6161eb4bcb0827af Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Wed, 20 Feb 2019 12:07:05 +0530 Subject: [PATCH 1179/1345] Issue #000 feat: deleted duplicate core_vault_kibana_* --- private_repo/ansible/inventory/dev/Core/secrets.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/private_repo/ansible/inventory/dev/Core/secrets.yml b/private_repo/ansible/inventory/dev/Core/secrets.yml index 68175d6c11..d602ea9593 100644 --- a/private_repo/ansible/inventory/dev/Core/secrets.yml +++ b/private_repo/ansible/inventory/dev/Core/secrets.yml @@ -71,8 +71,6 @@ core_vault_kibana_google_client_secret: ### core_vault_proxy_prometheus_admin_creds: "admin" core_vault_postgres_username: postgres # dont change this value -core_vault_kibana_google_client_id: -core_vault_kibana_google_client_secret: core_vault_kibana_cookie_secret: core_vault_grafana_editor_password: "sunbird" core_vault_grafana_dashboards_git_repo_url_with_credentails: "https://github.com/project-sunbird/grafana-dashboards.git" From b960bb5a9d781863b769c40284412756b9303c04 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Wed, 20 Feb 2019 12:08:42 +0530 Subject: [PATCH 1180/1345] Issue #000 feat: moved kibana oauth and updated comment --- private_repo/ansible/inventory/dev/Core/secrets.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/private_repo/ansible/inventory/dev/Core/secrets.yml b/private_repo/ansible/inventory/dev/Core/secrets.yml index d602ea9593..77f3e975e2 100644 --- a/private_repo/ansible/inventory/dev/Core/secrets.yml +++ b/private_repo/ansible/inventory/dev/Core/secrets.yml @@ -66,12 +66,12 @@ core_vault_sunbird_google_keycloak_secret: # Oauth for logger kibana core_vault_kibana_google_client_id: core_vault_kibana_google_client_secret: +core_vault_kibana_cookie_secret: kibanaoauth # Cookie secret for kibana Oauth ### core_vault_proxy_prometheus_admin_creds: "admin" core_vault_postgres_username: postgres # dont change this value -core_vault_kibana_cookie_secret: core_vault_grafana_editor_password: "sunbird" core_vault_grafana_dashboards_git_repo_url_with_credentails: "https://github.com/project-sunbird/grafana-dashboards.git" core_vault_monitor_alerts_slack_url: "" From f044436062d50cd3bef048fe337d6cba26a677dc Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Wed, 20 Feb 2019 12:14:11 +0530 Subject: [PATCH 1181/1345] Issue #000 feat: Rearranging variables --- .../ansible/inventory/dev/Core/secrets.yml | 24 +++++++------------ 1 file changed, 9 insertions(+), 15 deletions(-) diff --git a/private_repo/ansible/inventory/dev/Core/secrets.yml b/private_repo/ansible/inventory/dev/Core/secrets.yml index 77f3e975e2..302c212c22 100644 --- a/private_repo/ansible/inventory/dev/Core/secrets.yml +++ b/private_repo/ansible/inventory/dev/Core/secrets.yml @@ -31,7 +31,7 @@ core_vault_ansible_vault_password: core_vault_sunbird_sso_publickey: # Get After Keycloak Deployment core_vault_sunbird_api_auth_token: #Authorization key (JWT) to access Sunbird APIs. This will be in the output of deploy-apis.sh script, extracting it out is documented in the deployment wiki. -# Not mandatory +######################## Not mandatory ################################### core_vault_mail_server_password: '' core_vault_keycloak_api_management_user_password: admin core_vault_keystore_password: sunbird #Password to use for encrypting cassandra keystore. Use a strong password. @@ -44,19 +44,6 @@ core_vault_truststore_password: "sunbird" # Password for cassandra trust store core_vault_trampoline_secret: "deep-secret" ## any 8 character value core_vault_msg_91_auth_key: -####################### END OF VARS ########################################## - -#NOT REQUIRED TO EDIT ############################## -core_vault_badger_admin_password: "sunbird" -core_vault_jenkins_slave_jenkins_username: "" #### if it is not required will remove -core_vault_badging_authorization_key: -core_vault_jenkins_slave_jenkins_password: "" #### if it is not required will remove -core_vault_jenkins_admin_username: "" #### if it is not required will remove -core_vault_jenkins_admin_password: "" #### if it is not required will remove - - -################################################### - # Portal one google sso core_vault_sunbird_google_oauth_clientId_portal: core_vault_sunbird_google_oauth_clientSecret_portal: @@ -68,8 +55,15 @@ core_vault_kibana_google_client_id: core_vault_kibana_google_client_secret: core_vault_kibana_cookie_secret: kibanaoauth # Cookie secret for kibana Oauth +####################### END OF VARS ########################################## -### +#NOT REQUIRED TO EDIT ############################## +core_vault_badger_admin_password: "sunbird" +core_vault_jenkins_slave_jenkins_username: "" #### if it is not required will remove +core_vault_badging_authorization_key: +core_vault_jenkins_slave_jenkins_password: "" #### if it is not required will remove +core_vault_jenkins_admin_username: "" #### if it is not required will remove +core_vault_jenkins_admin_password: "" #### if it is not required will remove core_vault_proxy_prometheus_admin_creds: "admin" core_vault_postgres_username: postgres # dont change this value core_vault_grafana_editor_password: "sunbird" From 9cd2425f2be2a87a09c175e1d5c80e81f02b8982 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Wed, 20 Feb 2019 12:16:13 +0530 Subject: [PATCH 1182/1345] Issue #000 feat: Updated deprecate vars --- private_repo/ansible/inventory/dev/Core/secrets.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/private_repo/ansible/inventory/dev/Core/secrets.yml b/private_repo/ansible/inventory/dev/Core/secrets.yml index 302c212c22..facd2d90c7 100644 --- a/private_repo/ansible/inventory/dev/Core/secrets.yml +++ b/private_repo/ansible/inventory/dev/Core/secrets.yml @@ -9,6 +9,7 @@ core_vault_google_captcha_site_key: '' core_vault_postgres_replication_user_password: "{{core_vault_postgres_password}}" core_vault_sunbird_ekstep_api_key: core_vault_sunbird_encryption_key: +core_vault_kong__test_jwt: ############# Core ####################### ####### Secrets ####### @@ -69,4 +70,3 @@ core_vault_postgres_username: postgres # dont change this value core_vault_grafana_editor_password: "sunbird" core_vault_grafana_dashboards_git_repo_url_with_credentails: "https://github.com/project-sunbird/grafana-dashboards.git" core_vault_monitor_alerts_slack_url: "" -core_vault_kong__test_jwt: From b3ba30ca02380ae6a81f1a17fb3e1cffe01ec10f Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Wed, 20 Feb 2019 12:58:57 +0530 Subject: [PATCH 1183/1345] Issue #000 feat: Adding sunbird_installation_email --- private_repo/ansible/inventory/dev/Core/common.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/private_repo/ansible/inventory/dev/Core/common.yml b/private_repo/ansible/inventory/dev/Core/common.yml index d568411d09..a4b8540a68 100644 --- a/private_repo/ansible/inventory/dev/Core/common.yml +++ b/private_repo/ansible/inventory/dev/Core/common.yml @@ -40,6 +40,7 @@ sunbird_android_app_url: "" # Playstore url of android app; default # NOT MANDATORY VARS keycloak_api_management_user_email: "admin@sunbird.org" jenkins_url: # Jenkins urls to be accessed from slaves; eg "http://10.20.0.12:8080/jenkins" +sunbird_installation_email: "admin@sunbird.org" # fallback email for badger badge creation if the user doesn't have email address. ####################### Please Check me ############################# @@ -53,7 +54,6 @@ sunbird_ekstep_proxy_base_url: "https://{{ekstep_s3_env}}.ekstep.in/" #Base sunbird_content_azure_storage_container: content # learner-service # Following variable gets called for assets/public from Proxy # upstream_url: "{{azure_account_name}}.blob.core.windows.net/{{sunbird_content_azure_storage_container}}" -sunbird_installation_email: "admin@sunbird.org" badger_url: http://azureaccountname.blob.core.windows.net/ # Is it a dummy var? sunbird_blob_env: "{{core_vault_sunbird_azure_storage_account}}" sunbird_cdn_url: "" From 98663329f57dcbf1750e414809e754b651a991ca Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Wed, 20 Feb 2019 13:07:44 +0530 Subject: [PATCH 1184/1345] Issue #000 feat: Deleting sunbird_cdn_url as it's not used --- private_repo/ansible/inventory/dev/Core/common.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/private_repo/ansible/inventory/dev/Core/common.yml b/private_repo/ansible/inventory/dev/Core/common.yml index a4b8540a68..407362023e 100644 --- a/private_repo/ansible/inventory/dev/Core/common.yml +++ b/private_repo/ansible/inventory/dev/Core/common.yml @@ -56,7 +56,6 @@ sunbird_content_azure_storage_container: content # learner-service # upstream_url: "{{azure_account_name}}.blob.core.windows.net/{{sunbird_content_azure_storage_container}}" badger_url: http://azureaccountname.blob.core.windows.net/ # Is it a dummy var? sunbird_blob_env: "{{core_vault_sunbird_azure_storage_account}}" -sunbird_cdn_url: "" sunbird_config_service_url: '' sunbird_installation_display_name: "{{sunbird_app_name}} {{env}}" From f0320b4c0f431648c5068bb8cb0f4c95ab3b12ad Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Wed, 20 Feb 2019 13:12:00 +0530 Subject: [PATCH 1185/1345] Issue #000 feat: Adding deprecated config service var in defaults --- ansible/roles/stack-sunbird/defaults/main.yml | 1 + private_repo/ansible/inventory/dev/Core/common.yml | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/stack-sunbird/defaults/main.yml b/ansible/roles/stack-sunbird/defaults/main.yml index 78441d80fb..a42144e572 100644 --- a/ansible/roles/stack-sunbird/defaults/main.yml +++ b/ansible/roles/stack-sunbird/defaults/main.yml @@ -91,3 +91,4 @@ sunbird_keycloak_required_action_link_expiration_seconds: 2592000 # Player config_cache_ttl: 600 +sunbird_config_service_url: '' # About to be deprecated diff --git a/private_repo/ansible/inventory/dev/Core/common.yml b/private_repo/ansible/inventory/dev/Core/common.yml index 407362023e..3a79c35a18 100644 --- a/private_repo/ansible/inventory/dev/Core/common.yml +++ b/private_repo/ansible/inventory/dev/Core/common.yml @@ -56,7 +56,6 @@ sunbird_content_azure_storage_container: content # learner-service # upstream_url: "{{azure_account_name}}.blob.core.windows.net/{{sunbird_content_azure_storage_container}}" badger_url: http://azureaccountname.blob.core.windows.net/ # Is it a dummy var? sunbird_blob_env: "{{core_vault_sunbird_azure_storage_account}}" -sunbird_config_service_url: '' sunbird_installation_display_name: "{{sunbird_app_name}} {{env}}" ## Not used From 8c5c7ff4a6b148e9801a21c0b5dc3108d99d5665 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Wed, 20 Feb 2019 18:01:18 +0530 Subject: [PATCH 1186/1345] Issue #000 feat: moved captcha secret to correct position --- private_repo/ansible/inventory/dev/Core/secrets.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/private_repo/ansible/inventory/dev/Core/secrets.yml b/private_repo/ansible/inventory/dev/Core/secrets.yml index facd2d90c7..e970455dca 100644 --- a/private_repo/ansible/inventory/dev/Core/secrets.yml +++ b/private_repo/ansible/inventory/dev/Core/secrets.yml @@ -1,9 +1,7 @@ # Not found -core_vault_google_captcha_site_key: core_vault_sudo_crypt_deployer: "" core_vault_sunbird_google_oauth_clientSecret: core_vault_sunbird_fcm_account_key: "" -core_vault_google_captcha_site_key: '' # !! Might deprecate core_vault_postgres_replication_user_password: "{{core_vault_postgres_password}}" @@ -33,6 +31,7 @@ core_vault_sunbird_sso_publickey: # Get After Keycloak Deployment core_vault_sunbird_api_auth_token: #Authorization key (JWT) to access Sunbird APIs. This will be in the output of deploy-apis.sh script, extracting it out is documented in the deployment wiki. ######################## Not mandatory ################################### +core_vault_google_captcha_site_key: '' core_vault_mail_server_password: '' core_vault_keycloak_api_management_user_password: admin core_vault_keystore_password: sunbird #Password to use for encrypting cassandra keystore. Use a strong password. From 943f1d55b513613a7b9769d669fcd429182e0fa9 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Wed, 20 Feb 2019 18:02:18 +0530 Subject: [PATCH 1187/1345] Issue #000 feat: Removed deprecated var --- private_repo/ansible/inventory/dev/Core/secrets.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/private_repo/ansible/inventory/dev/Core/secrets.yml b/private_repo/ansible/inventory/dev/Core/secrets.yml index e970455dca..afcf446741 100644 --- a/private_repo/ansible/inventory/dev/Core/secrets.yml +++ b/private_repo/ansible/inventory/dev/Core/secrets.yml @@ -1,5 +1,4 @@ # Not found -core_vault_sudo_crypt_deployer: "" core_vault_sunbird_google_oauth_clientSecret: core_vault_sunbird_fcm_account_key: "" From 4a2a1a42ec69b231e44a293fdefc14af4144534a Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Wed, 20 Feb 2019 18:03:32 +0530 Subject: [PATCH 1188/1345] Issue #000 feat: Moved player google oauth secret --- private_repo/ansible/inventory/dev/Core/secrets.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/private_repo/ansible/inventory/dev/Core/secrets.yml b/private_repo/ansible/inventory/dev/Core/secrets.yml index afcf446741..a2a778dc4d 100644 --- a/private_repo/ansible/inventory/dev/Core/secrets.yml +++ b/private_repo/ansible/inventory/dev/Core/secrets.yml @@ -1,5 +1,4 @@ # Not found -core_vault_sunbird_google_oauth_clientSecret: core_vault_sunbird_fcm_account_key: "" # !! Might deprecate @@ -30,6 +29,7 @@ core_vault_sunbird_sso_publickey: # Get After Keycloak Deployment core_vault_sunbird_api_auth_token: #Authorization key (JWT) to access Sunbird APIs. This will be in the output of deploy-apis.sh script, extracting it out is documented in the deployment wiki. ######################## Not mandatory ################################### +core_vault_sunbird_google_oauth_clientSecret: core_vault_google_captcha_site_key: '' core_vault_mail_server_password: '' core_vault_keycloak_api_management_user_password: admin From 249ff759df892df872d19b2dc8259dddc7b1107a Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Wed, 20 Feb 2019 18:04:13 +0530 Subject: [PATCH 1189/1345] Issue #000 feat: Moved fcm key to not mandatory --- private_repo/ansible/inventory/dev/Core/secrets.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/private_repo/ansible/inventory/dev/Core/secrets.yml b/private_repo/ansible/inventory/dev/Core/secrets.yml index a2a778dc4d..422f220859 100644 --- a/private_repo/ansible/inventory/dev/Core/secrets.yml +++ b/private_repo/ansible/inventory/dev/Core/secrets.yml @@ -1,5 +1,4 @@ # Not found -core_vault_sunbird_fcm_account_key: "" # !! Might deprecate core_vault_postgres_replication_user_password: "{{core_vault_postgres_password}}" @@ -29,6 +28,7 @@ core_vault_sunbird_sso_publickey: # Get After Keycloak Deployment core_vault_sunbird_api_auth_token: #Authorization key (JWT) to access Sunbird APIs. This will be in the output of deploy-apis.sh script, extracting it out is documented in the deployment wiki. ######################## Not mandatory ################################### +core_vault_sunbird_fcm_account_key: "" core_vault_sunbird_google_oauth_clientSecret: core_vault_google_captcha_site_key: '' core_vault_mail_server_password: '' From 19fbc337f870928006b0250de5aa3689ac837626 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Wed, 20 Feb 2019 18:04:29 +0530 Subject: [PATCH 1190/1345] Issue #000 feat: Removed not found comment --- private_repo/ansible/inventory/dev/Core/secrets.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/private_repo/ansible/inventory/dev/Core/secrets.yml b/private_repo/ansible/inventory/dev/Core/secrets.yml index 422f220859..e5c520aebd 100644 --- a/private_repo/ansible/inventory/dev/Core/secrets.yml +++ b/private_repo/ansible/inventory/dev/Core/secrets.yml @@ -1,5 +1,3 @@ -# Not found - # !! Might deprecate core_vault_postgres_replication_user_password: "{{core_vault_postgres_password}}" core_vault_sunbird_ekstep_api_key: From 908cc164c985bfc9abf495064ef63ba08c0ceb29 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Wed, 20 Feb 2019 18:44:28 +0530 Subject: [PATCH 1191/1345] Issue #000 feat: Removed duplicate captcha vault key --- private_repo/ansible/inventory/dev/Core/secrets.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/private_repo/ansible/inventory/dev/Core/secrets.yml b/private_repo/ansible/inventory/dev/Core/secrets.yml index e5c520aebd..56941a1aa1 100644 --- a/private_repo/ansible/inventory/dev/Core/secrets.yml +++ b/private_repo/ansible/inventory/dev/Core/secrets.yml @@ -28,7 +28,6 @@ core_vault_sunbird_api_auth_token: #Authorization key (JWT) to access Sunbird AP ######################## Not mandatory ################################### core_vault_sunbird_fcm_account_key: "" core_vault_sunbird_google_oauth_clientSecret: -core_vault_google_captcha_site_key: '' core_vault_mail_server_password: '' core_vault_keycloak_api_management_user_password: admin core_vault_keystore_password: sunbird #Password to use for encrypting cassandra keystore. Use a strong password. From 0c0fd6af07a26b23f97192582423b5107fb778bb Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Thu, 21 Feb 2019 10:47:21 +0530 Subject: [PATCH 1192/1345] Issue #000 feat: Deleting core_vault_postgres_replication_user_password --- private_repo/ansible/inventory/dev/Core/secrets.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/private_repo/ansible/inventory/dev/Core/secrets.yml b/private_repo/ansible/inventory/dev/Core/secrets.yml index 56941a1aa1..386b73273c 100644 --- a/private_repo/ansible/inventory/dev/Core/secrets.yml +++ b/private_repo/ansible/inventory/dev/Core/secrets.yml @@ -1,5 +1,4 @@ # !! Might deprecate -core_vault_postgres_replication_user_password: "{{core_vault_postgres_password}}" core_vault_sunbird_ekstep_api_key: core_vault_sunbird_encryption_key: core_vault_kong__test_jwt: From 367b01912831d8bfae8e2176ecdf943695efeb29 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Thu, 21 Feb 2019 11:58:53 +0530 Subject: [PATCH 1193/1345] Issue #000 feat: Removing deprecated ekstep_api_key --- ansible/inventory/env/group_vars/all.yml | 1 - private_repo/ansible/inventory/dev/Core/common.yml | 1 - 2 files changed, 2 deletions(-) diff --git a/ansible/inventory/env/group_vars/all.yml b/ansible/inventory/env/group_vars/all.yml index 52f03a0b05..a428c70307 100644 --- a/ansible/inventory/env/group_vars/all.yml +++ b/ansible/inventory/env/group_vars/all.yml @@ -195,7 +195,6 @@ sunbird_search_service_api_key: "{{ core_vault_sunbird_ekstep_api_key }}" sunbird_dial_repo_api_base_url: "{{sunbird_ekstep_api_base_url}}" sunbird_dial_repo_api_key: "{{ core_vault_sunbird_ekstep_api_key }}" sunbird_plugin_repo_api_base_url: "{{sunbird_ekstep_api_base_url}}" -sunbird_plugin_repo_api_key: "{{ ekstep_api_key }}" sunbird_data_service_api_base_url: "{{sunbird_ekstep_api_base_url}}" sunbird_data_service_api_key: "{{ core_vault_sunbird_ekstep_api_key }}" diff --git a/private_repo/ansible/inventory/dev/Core/common.yml b/private_repo/ansible/inventory/dev/Core/common.yml index 3a79c35a18..e5a98b4f28 100644 --- a/private_repo/ansible/inventory/dev/Core/common.yml +++ b/private_repo/ansible/inventory/dev/Core/common.yml @@ -44,7 +44,6 @@ sunbird_installation_email: "admin@sunbird.org" # fallback email for badger badg ####################### Please Check me ############################# -ekstep_api_key: # Ekstep api key for learner service to conect sunbird_ekstep_api_base_url: "https://{{ekstep_s3_env}}.ekstep.in/api" #API base URL of the Ekstep environment. Use `https://qa.ekstep.in/api` for non-prod deployments, and use `https://api.ekstep.in/` for prod deployment. # sunbird_data_service_api_base_url: "{{sunbird_ekstep_api_base_url}}" # telemetry_proxy_url: "{{sunbird_ekstep_api_base_url}}/data/v3/telemetry" From a4d5149d3a16b3016eacedb8ded31acc5e887dd2 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Thu, 21 Feb 2019 12:51:35 +0530 Subject: [PATCH 1194/1345] Issue #000 feat: Updated sunbird_ekstep_proxy_base_url from content service --- .../roles/stack-sunbird/templates/sunbird_content-service.env | 1 - private_repo/ansible/inventory/dev/Core/common.yml | 1 - 2 files changed, 2 deletions(-) diff --git a/ansible/roles/stack-sunbird/templates/sunbird_content-service.env b/ansible/roles/stack-sunbird/templates/sunbird_content-service.env index 323777b2d1..698ddc1f50 100644 --- a/ansible/roles/stack-sunbird/templates/sunbird_content-service.env +++ b/ansible/roles/stack-sunbird/templates/sunbird_content-service.env @@ -1,4 +1,3 @@ -sunbird_content_plugin_base_url={{sunbird_ekstep_proxy_base_url}} sunbird_learner_service_api_key={{sunbird_api_auth_token}} sunbird_learner_service_base_url={{sunbird_learner_service_base_url}} sunbird_keycloak_auth_server_url={{keycloak_auth_server_url}}/ diff --git a/private_repo/ansible/inventory/dev/Core/common.yml b/private_repo/ansible/inventory/dev/Core/common.yml index e5a98b4f28..fe407f6a8c 100644 --- a/private_repo/ansible/inventory/dev/Core/common.yml +++ b/private_repo/ansible/inventory/dev/Core/common.yml @@ -49,7 +49,6 @@ sunbird_ekstep_api_base_url: "https://{{ekstep_s3_env}}.ekstep.in/api" #API ba # telemetry_proxy_url: "{{sunbird_ekstep_api_base_url}}/data/v3/telemetry" # sunbird_telemetry_api: "{{sunbird_ekstep_api_base_url}}/data/v3/telemetry" # sunbird_language_service_api_base_url: '{{sunbird_ekstep_api_base_url}}/language' -sunbird_ekstep_proxy_base_url: "https://{{ekstep_s3_env}}.ekstep.in/" #Base URL of the Ekstep environment. Use `https://qa.ekstep.in/` for non-prod deployments, and `https://community.ekstep.in/` for prod deployment. sunbird_content_azure_storage_container: content # learner-service # Following variable gets called for assets/public from Proxy # upstream_url: "{{azure_account_name}}.blob.core.windows.net/{{sunbird_content_azure_storage_container}}" From b3ea3df305fb584cf4c5ac74eadd0e78b8ca58e0 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Thu, 21 Feb 2019 13:26:28 +0530 Subject: [PATCH 1195/1345] Issue #000 feat: Removed sunbird_blob_env --- ansible/inventory/env/group_vars/all.yml | 1 - private_repo/ansible/inventory/dev/Core/common.yml | 1 - 2 files changed, 2 deletions(-) diff --git a/ansible/inventory/env/group_vars/all.yml b/ansible/inventory/env/group_vars/all.yml index a428c70307..966cb427fb 100644 --- a/ansible/inventory/env/group_vars/all.yml +++ b/ansible/inventory/env/group_vars/all.yml @@ -262,7 +262,6 @@ monitor_es_host: "{{ groups['es'][0] }}" alertmanager_host: "{{ groups['swarm-agent-for-alertmanager'][0] }}" prometheus_host: "{{ groups['swarm-agent-for-prometheus'][0] }}" -swarm_load_balancer: "{{swarm_agent_load_balancer}}" filebeat_logtsash_host: "{{ swarm_load_balancer }}" expected_minimum_logs_per_minute: 30 proxy_prometheus: true diff --git a/private_repo/ansible/inventory/dev/Core/common.yml b/private_repo/ansible/inventory/dev/Core/common.yml index fe407f6a8c..59f8b137ca 100644 --- a/private_repo/ansible/inventory/dev/Core/common.yml +++ b/private_repo/ansible/inventory/dev/Core/common.yml @@ -53,7 +53,6 @@ sunbird_content_azure_storage_container: content # learner-service # Following variable gets called for assets/public from Proxy # upstream_url: "{{azure_account_name}}.blob.core.windows.net/{{sunbird_content_azure_storage_container}}" badger_url: http://azureaccountname.blob.core.windows.net/ # Is it a dummy var? -sunbird_blob_env: "{{core_vault_sunbird_azure_storage_account}}" sunbird_installation_display_name: "{{sunbird_app_name}} {{env}}" ## Not used From e58a84686cc4935d886ccdd365a5f1464617deea Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Thu, 21 Feb 2019 13:29:24 +0530 Subject: [PATCH 1196/1345] Issue #000 feat: Adding swarm-loadbalancer to proper place --- private_repo/ansible/inventory/dev/Core/common.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/private_repo/ansible/inventory/dev/Core/common.yml b/private_repo/ansible/inventory/dev/Core/common.yml index 59f8b137ca..9ac07694e8 100644 --- a/private_repo/ansible/inventory/dev/Core/common.yml +++ b/private_repo/ansible/inventory/dev/Core/common.yml @@ -16,6 +16,7 @@ sunbird_default_channel: # Organization channel name which portal sunbird_app_name: # By default app name will be sunbird azure_account_name: # Storage account name for blobs sunbird_content_azure_storage_container: # Conatainer store assets/public +swarm_load_balancer: # Loadbalancer ip to push the logspout result to logstash in swarm artifacts_container: '' # Azure blob container name to save built artifacts sunbird_url_shortner_enable: 'false' @@ -56,7 +57,6 @@ badger_url: http://azureaccountname.blob.core.windows.net/ # Is it a dummy var? sunbird_installation_display_name: "{{sunbird_app_name}} {{env}}" ## Not used -swarm_agent_load_balancer: project: "sunbird" From 8e7eb3c9b43fe1393a142a9e0c5899c33f0ace30 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Thu, 21 Feb 2019 13:30:10 +0530 Subject: [PATCH 1197/1345] Issue #000 feat: Added upstream url for assets/public --- private_repo/ansible/inventory/dev/Core/common.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/private_repo/ansible/inventory/dev/Core/common.yml b/private_repo/ansible/inventory/dev/Core/common.yml index 9ac07694e8..39f4156b7e 100644 --- a/private_repo/ansible/inventory/dev/Core/common.yml +++ b/private_repo/ansible/inventory/dev/Core/common.yml @@ -42,6 +42,7 @@ sunbird_android_app_url: "" # Playstore url of android app; default keycloak_api_management_user_email: "admin@sunbird.org" jenkins_url: # Jenkins urls to be accessed from slaves; eg "http://10.20.0.12:8080/jenkins" sunbird_installation_email: "admin@sunbird.org" # fallback email for badger badge creation if the user doesn't have email address. +upstream_url: "{{azure_account_name}}.blob.core.windows.net/{{sunbird_content_azure_storage_container}}" # Proxy url to get /assets/public ####################### Please Check me ############################# @@ -52,7 +53,6 @@ sunbird_ekstep_api_base_url: "https://{{ekstep_s3_env}}.ekstep.in/api" #API ba # sunbird_language_service_api_base_url: '{{sunbird_ekstep_api_base_url}}/language' sunbird_content_azure_storage_container: content # learner-service # Following variable gets called for assets/public from Proxy - # upstream_url: "{{azure_account_name}}.blob.core.windows.net/{{sunbird_content_azure_storage_container}}" badger_url: http://azureaccountname.blob.core.windows.net/ # Is it a dummy var? sunbird_installation_display_name: "{{sunbird_app_name}} {{env}}" From 2527458a22b7aab6ccf404b0db22b71172027cab Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Thu, 21 Feb 2019 13:31:58 +0530 Subject: [PATCH 1198/1345] Issue #000 feat: Removed duplicate var --- private_repo/ansible/inventory/dev/Core/common.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/private_repo/ansible/inventory/dev/Core/common.yml b/private_repo/ansible/inventory/dev/Core/common.yml index 39f4156b7e..4015b841fa 100644 --- a/private_repo/ansible/inventory/dev/Core/common.yml +++ b/private_repo/ansible/inventory/dev/Core/common.yml @@ -51,7 +51,6 @@ sunbird_ekstep_api_base_url: "https://{{ekstep_s3_env}}.ekstep.in/api" #API ba # telemetry_proxy_url: "{{sunbird_ekstep_api_base_url}}/data/v3/telemetry" # sunbird_telemetry_api: "{{sunbird_ekstep_api_base_url}}/data/v3/telemetry" # sunbird_language_service_api_base_url: '{{sunbird_ekstep_api_base_url}}/language' -sunbird_content_azure_storage_container: content # learner-service # Following variable gets called for assets/public from Proxy badger_url: http://azureaccountname.blob.core.windows.net/ # Is it a dummy var? sunbird_installation_display_name: "{{sunbird_app_name}} {{env}}" From 64f4ff861d677625fbdbfdb37ba0abbaef2d1595 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Thu, 21 Feb 2019 14:27:25 +0530 Subject: [PATCH 1199/1345] Issue #000 feat: Updated ekstep apis --- private_repo/ansible/inventory/dev/Core/common.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/private_repo/ansible/inventory/dev/Core/common.yml b/private_repo/ansible/inventory/dev/Core/common.yml index 4015b841fa..aca3ff580d 100644 --- a/private_repo/ansible/inventory/dev/Core/common.yml +++ b/private_repo/ansible/inventory/dev/Core/common.yml @@ -46,11 +46,11 @@ upstream_url: "{{azure_account_name}}.blob.core.windows.net/{{sunbird_content_az ####################### Please Check me ############################# -sunbird_ekstep_api_base_url: "https://{{ekstep_s3_env}}.ekstep.in/api" #API base URL of the Ekstep environment. Use `https://qa.ekstep.in/api` for non-prod deployments, and use `https://api.ekstep.in/` for prod deployment. - # sunbird_data_service_api_base_url: "{{sunbird_ekstep_api_base_url}}" - # telemetry_proxy_url: "{{sunbird_ekstep_api_base_url}}/data/v3/telemetry" - # sunbird_telemetry_api: "{{sunbird_ekstep_api_base_url}}/data/v3/telemetry" - # sunbird_language_service_api_base_url: '{{sunbird_ekstep_api_base_url}}/language' +sunbird_ekstep_api_base_url: "https://qa.ekstep.in/api" #API base URL of the Ekstep environment. Use `https://qa.ekstep.in/api` for non-prod deployments, and use `https://api.ekstep.in/` for prod deployment. +sunbird_data_service_api_base_url: "{{sunbird_ekstep_api_base_url}}/data/v3/telemetry" +telemetry_proxy_url: "" +sunbird_telemetry_api: "{{sunbird_ekstep_api_base_url}}/data/v3/telemetry" +sunbird_language_service_api_base_url: '{{sunbird_ekstep_api_base_url}}/language' # Following variable gets called for assets/public from Proxy badger_url: http://azureaccountname.blob.core.windows.net/ # Is it a dummy var? sunbird_installation_display_name: "{{sunbird_app_name}} {{env}}" From 559ee4202d105da372c54c8af43888c1109cbab3 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Thu, 21 Feb 2019 15:09:19 +0530 Subject: [PATCH 1200/1345] Issue #000 feat: Reverted ekstep_s3_env var --- private_repo/ansible/inventory/dev/Core/common.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/private_repo/ansible/inventory/dev/Core/common.yml b/private_repo/ansible/inventory/dev/Core/common.yml index aca3ff580d..5d68697565 100644 --- a/private_repo/ansible/inventory/dev/Core/common.yml +++ b/private_repo/ansible/inventory/dev/Core/common.yml @@ -46,7 +46,7 @@ upstream_url: "{{azure_account_name}}.blob.core.windows.net/{{sunbird_content_az ####################### Please Check me ############################# -sunbird_ekstep_api_base_url: "https://qa.ekstep.in/api" #API base URL of the Ekstep environment. Use `https://qa.ekstep.in/api` for non-prod deployments, and use `https://api.ekstep.in/` for prod deployment. +sunbird_ekstep_api_base_url: "https://{{ekstep_s3_env}}.ekstep.in/api" #API base URL of the Ekstep environment. Use `https://qa.ekstep.in/api` for non-prod deployments, and use `https://api.ekstep.in/` for prod deployment. sunbird_data_service_api_base_url: "{{sunbird_ekstep_api_base_url}}/data/v3/telemetry" telemetry_proxy_url: "" sunbird_telemetry_api: "{{sunbird_ekstep_api_base_url}}/data/v3/telemetry" From 3f28ceb9f31eea0c4157dee5f00e6342a40d611d Mon Sep 17 00:00:00 2001 From: msknext Date: Fri, 22 Feb 2019 09:17:21 +0530 Subject: [PATCH 1201/1345] feat: DO-528 Adding node install, removed deprecated job configs --- deploy/jenkins/jenkins-server-setup.sh | 9 ++ deploy/jenkins/jobs/Other/config.xml | 28 ---- .../jenkins/jobs/Other/jobs/Build/config.xml | 29 ---- .../Build/jobs/Cassandra_Build/config.xml | 38 ------ .../Other/jobs/Build/jobs/DP_Build/config.xml | 48 ------- .../Build/jobs/Encryption_Build/config.xml | 34 ----- .../jobs/Build/jobs/Keycloak_Build/config.xml | 34 ----- .../Build/jobs/Keycloak_Custom_PKG/config.xml | 34 ----- .../jobs/Build/jobs/OpenSaberBuild/config.xml | 42 ------ .../Build/jobs/Opensaber_Build/config.xml | 42 ------ .../jobs/Build/jobs/Secor_Build/config.xml | 38 ------ .../Sunbird_ActorService_Build/config.xml | 50 ------- .../config.xml | 121 ----------------- .../config.xml | 117 ----------------- .../Build/jobs/Sunbird_Auth_Build/config.xml | 34 ----- .../jobs/Sunbird_Auth_Build_Back/config.xml | 43 ------ .../Sunbird_Auth_Config_Build_Back/config.xml | 34 ----- .../jobs/Build/jobs/Sunbird_Badger/config.xml | 46 ------- .../config.xml | 84 ------------ .../jobs/Sunbird_EP_API_Build/config.xml | 59 --------- .../Build/jobs/Sunbird_EP_Build/config.xml | 80 ----------- .../jobs/Sunbird_EP_Upgrade_Build/config.xml | 124 ------------------ .../Sunbird_Ed_ConfigService_Build/config.xml | 50 ------- .../config.xml | 50 ------- .../config.xml | 42 ------ .../jobs/Sunbird_Ed_Player_Build/config.xml | 41 ------ .../jobs/Sunbird_LPA_API_Build/config.xml | 103 --------------- .../jobs/Sunbird_LPA_Secor_Build/config.xml | 71 ---------- .../jobs/Sunbird_LP_Backend_Build/config.xml | 90 ------------- .../Build/jobs/Sunbird_LP_Build/config.xml | 91 ------------- .../jobs/Sunbird_LP_Neo4j_Build/config.xml | 73 ----------- .../jobs/Sunbird_LP_SyncTool_Build/config.xml | 82 ------------ .../jobs/Sunbird_SampleFlow_Build/config.xml | 41 ------ .../config.xml | 50 ------- .../Sunbird_TelemetryService_Build/config.xml | 50 ------- .../Other/jobs/Build/jobs/hostname/config.xml | 28 ---- .../jenkins/jobs/Other/jobs/Deploy/config.xml | 28 ---- .../Deploy/jobs/Artifacts_Repo/config.xml | 67 ---------- .../Other/jobs/Deploy/jobs/Dev/config.xml | 28 ---- .../jobs/AM_AdminUtils_Deploy_Dev/config.xml | 46 ------- .../jobs/Dev/jobs/AM_Onboard_APIs/config.xml | 46 ------- .../Dev/jobs/AM_Onboard_Consumers/config.xml | 46 ------- .../jobs/API_Manager_Deploy_Dev/config.xml | 42 ------ .../Dev/jobs/AnalyticsApi_Logs/config.xml | 47 ------- .../jobs/Application_ElasticSearch/config.xml | 46 ------- .../config.xml | 55 -------- .../config.xml | 59 --------- .../Dev/jobs/Assets_Upload_Azure/config.xml | 59 --------- .../Dev/jobs/Cassandra CQL Dumps/config.xml | 57 -------- .../Dev/jobs/Cassandra_CQL_Dumps/config.xml | 34 ----- .../jobs/Dev/jobs/Createuser/config.xml | 82 ------------ .../jobs/Dev/jobs/Curl_Commands/config.xml | 34 ----- .../jobs/Dev/jobs/DB_Bootstrap/config.xml | 34 ----- .../jobs/Dev/jobs/Deleteuser/config.xml | 70 ---------- .../Deploy/jobs/Dev/jobs/Dev_Test/config.xml | 54 -------- .../jobs/Dev/jobs/Devops_Test/config.xml | 51 ------- .../Dev/jobs/DialPage_Upload_CDN/config.xml | 53 -------- .../Dev/jobs/Docker_Swarm_Config/config.xml | 49 ------- .../jobs/Docker_Swarm_Service_Info/config.xml | 58 -------- .../jobs/Docker_Swarm_Service_List/config.xml | 46 ------- .../Docker_Swarm_Service_Restart/config.xml | 58 -------- .../Dev/jobs/Docker_Swarm_Update/config.xml | 46 ------- .../Documentation_Jenkins_Slave/config.xml | 46 ------- .../jobs/Encryption_service_deploy/config.xml | 42 ------ .../jobs/Grafana_Dashboards_Export/config.xml | 55 -------- .../jobs/Grafana_Dashboards_Import/config.xml | 48 ------- .../jobs/Dev/jobs/Jenkins_Slave/config.xml | 46 ------- .../jobs/Dev/jobs/Keycloak_Deploy/config.xml | 34 ----- .../Dev/jobs/Keycloak_Provision/config.xml | 34 ----- .../jobs/Dev/jobs/Learning_Logs/config.xml | 45 ------- .../Dev/jobs/Logger_ES_Deploy_Dev/config.xml | 49 ------- .../Logger_ElasticSearch_Backup/config.xml | 55 -------- .../Logger_ElasticSearch_Restore/config.xml | 56 -------- .../Dev/jobs/Logger_Purge_Old_Logs/config.xml | 55 -------- .../Deploy/jobs/Dev/jobs/Logging/config.xml | 42 ------ .../jobs/Dev/jobs/Logging_Registry/config.xml | 42 ------ .../Dev/jobs/Logs_For_Learning_Dev/config.xml | 33 ----- .../jobs/Dev/jobs/Monitoring/config.xml | 42 ------ .../Deploy/jobs/Dev/jobs/OpenSaber/config.xml | 42 ------ .../Dev/jobs/OpenSaberEncryption/config.xml | 42 ------ .../Dev/jobs/Player_Upload_CDN/config.xml | 67 ---------- .../Dev/jobs/Postgresql_Backup/config.xml | 55 -------- .../jobs/Postgresql_Data_Update/config.xml | 46 ------- .../Dev/jobs/Postgresql_Master/config.xml | 46 ------- .../Dev/jobs/Postgresql_Restore/config.xml | 58 -------- .../Dev/jobs/Prometheus_Backup/config.xml | 55 -------- .../Deploy/jobs/Dev/jobs/Proxy/config.xml | 46 ------- .../Dev/jobs/Registry_Provision/config.xml | 37 ------ .../jobs/Dev/jobs/Run_Command/config.xml | 50 ------- .../jobs/Dev/jobs/Secor_Logs/config.xml | 46 ------- .../jobs/Dev/jobs/Spark_Logs/config.xml | 47 ------- .../config.xml | 42 ------ .../jobs/Sunbird_Auth_Config_Build/config.xml | 34 ----- .../Sunbird_Auth_Config_Deploy/config.xml | 34 ----- .../Dev/jobs/Sunbird_Auth_Deploy/config.xml | 34 ----- .../Sunbird_Auth_Deploy_Backup_job/config.xml | 34 ----- .../Dev/jobs/Sunbird_Badger_Deploy/config.xml | 34 ----- .../Sunbird_Cassandra_Backup_Dev/config.xml | 47 ------- .../Sunbird_Cassandra_Backup_Test/config.xml | 47 ------- .../Sunbird_Cassandra_CQL_Restore/config.xml | 50 ------- .../jobs/Sunbird_Cassandra_Deploy/config.xml | 42 ------ .../Sunbird_Cassandra_Provision/config.xml | 34 ----- .../Sunbird_Cassandra_Restore_Dev/config.xml | 51 ------- .../config.xml | 42 ------ .../config.xml | 42 ------ .../Dev/jobs/Sunbird_Docker_Reset/config.xml | 34 ----- .../jobs/Sunbird_Ed_Player_Deploy/config.xml | 73 ----------- .../Sunbird_Functional_Test_Cases/config.xml | 54 -------- .../config.xml | 42 ------ .../jobs/Sunbird_Player_Deploy_Dev/config.xml | 42 ------ .../Sunbird_Provision_Kafka_Dev/config.xml | 34 ----- .../Sunbird_Provision_Secor_Dev/config.xml | 34 ----- .../Sunbird_Registry_Deploy_Dev/config.xml | 42 ------ .../config.xml | 42 ------ .../config.xml | 34 ----- .../config.xml | 34 ----- .../jobs/Swarm_Agent_Docker_Prune/config.xml | 55 -------- .../jobs/Dev/jobs/Swarm_Bootstrap/config.xml | 46 ------- .../Deploy/jobs/Dev/jobs/Yarn_Logs/config.xml | 47 ------- .../Deploy/jobs/Dev/jobs/azure-cli/config.xml | 34 ----- .../cassandra complete backup dev/config.xml | 47 ------- .../jobs/docker-version-upgrade/config.xml | 46 ------- .../Deploy/jobs/Dev/jobs/hostname/config.xml | 22 ---- .../jobs/Dev/jobs/player_all/config.xml | 67 ---------- .../Dev/jobs/tenant_cdn_upload/config.xml | 50 ------- .../jobs/Deploy/jobs/Dev/jobs/yo/config.xml | 7 - .../Other/jobs/New_Azure_Infra/config.xml | 64 --------- .../jobs/Other/jobs/testjob/config.xml | 44 ------- deploy/jenkins/jobs/Release/config.xml | 29 ---- .../jobs/Release/jobs/startRelease/config.xml | 64 --------- 130 files changed, 9 insertions(+), 6331 deletions(-) delete mode 100644 deploy/jenkins/jobs/Other/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Build/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Build/jobs/Cassandra_Build/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Build/jobs/DP_Build/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Build/jobs/Encryption_Build/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Build/jobs/Keycloak_Build/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Build/jobs/Keycloak_Custom_PKG/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Build/jobs/OpenSaberBuild/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Build/jobs/Opensaber_Build/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Build/jobs/Secor_Build/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_ActorService_Build/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_Analytics_Build_Framework/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_Analytics_DataProducts_Build/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_Auth_Build/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_Auth_Build_Back/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_Auth_Config_Build_Back/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_Badger/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_Cloud_Storage_SDK_Build/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_EP_API_Build/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_EP_Build/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_EP_Upgrade_Build/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_Ed_ConfigService_Build/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_Ed_ContentService_Build/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_Ed_LearnerService_Build/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_Ed_Player_Build/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_LPA_API_Build/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_LPA_Secor_Build/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_LP_Backend_Build/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_LP_Build/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_LP_Neo4j_Build/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_LP_SyncTool_Build/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_SampleFlow_Build/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_TelemetryLogstash_Build/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_TelemetryService_Build/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Build/jobs/hostname/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Artifacts_Repo/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/AM_AdminUtils_Deploy_Dev/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/AM_Onboard_APIs/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/AM_Onboard_Consumers/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/API_Manager_Deploy_Dev/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/AnalyticsApi_Logs/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Application_ElasticSearch/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Application_ElasticSearch_Backup/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Application_ElasticSearch_Restore/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Assets_Upload_Azure/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Cassandra CQL Dumps/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Cassandra_CQL_Dumps/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Createuser/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Curl_Commands/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/DB_Bootstrap/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Deleteuser/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Dev_Test/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Devops_Test/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/DialPage_Upload_CDN/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Docker_Swarm_Config/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Docker_Swarm_Service_Info/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Docker_Swarm_Service_List/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Docker_Swarm_Service_Restart/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Docker_Swarm_Update/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Documentation_Jenkins_Slave/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Encryption_service_deploy/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Grafana_Dashboards_Export/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Grafana_Dashboards_Import/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Jenkins_Slave/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Keycloak_Deploy/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Keycloak_Provision/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Learning_Logs/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Logger_ES_Deploy_Dev/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Logger_ElasticSearch_Backup/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Logger_ElasticSearch_Restore/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Logger_Purge_Old_Logs/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Logging/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Logging_Registry/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Logs_For_Learning_Dev/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Monitoring/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/OpenSaber/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/OpenSaberEncryption/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Player_Upload_CDN/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Postgresql_Backup/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Postgresql_Data_Update/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Postgresql_Master/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Postgresql_Restore/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Prometheus_Backup/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Proxy/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Registry_Provision/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Run_Command/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Secor_Logs/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Spark_Logs/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_ActorService_Deploy_Dev/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Auth_Config_Build/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Auth_Config_Deploy/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Auth_Deploy/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Auth_Deploy_Backup_job/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Badger_Deploy/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Cassandra_Backup_Dev/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Cassandra_Backup_Test/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Cassandra_CQL_Restore/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Cassandra_Deploy/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Cassandra_Provision/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Cassandra_Restore_Dev/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_ConfigService_Deploy_Dev/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_ContentService_Deploy_Dev/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Docker_Reset/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Ed_Player_Deploy/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Functional_Test_Cases/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_LearnerService_Deploy_Dev/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Player_Deploy_Dev/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Provision_Kafka_Dev/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Provision_Secor_Dev/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Registry_Deploy_Dev/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_TelemetryService_Deploy_Dev/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Telemetry_Logstash_Datapipeline_Deploy_Dev/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Telemetry_Logstash_Deploy_Dev/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Swarm_Agent_Docker_Prune/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Swarm_Bootstrap/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Yarn_Logs/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/azure-cli/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/cassandra complete backup dev/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/docker-version-upgrade/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/hostname/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/player_all/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/tenant_cdn_upload/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/yo/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/New_Azure_Infra/config.xml delete mode 100644 deploy/jenkins/jobs/Other/jobs/testjob/config.xml delete mode 100644 deploy/jenkins/jobs/Release/config.xml delete mode 100644 deploy/jenkins/jobs/Release/jobs/startRelease/config.xml diff --git a/deploy/jenkins/jenkins-server-setup.sh b/deploy/jenkins/jenkins-server-setup.sh index 267de57c3b..285be94108 100755 --- a/deploy/jenkins/jenkins-server-setup.sh +++ b/deploy/jenkins/jenkins-server-setup.sh @@ -39,6 +39,15 @@ add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $( apt-get update apt-get install -y docker-ce docker-ce-cli containerd.io +echo -e "\n\e[0;32m${bold}Installating node, npm and grunt" +wget https://nodejs.org/download/release/v6.1.0/node-v6.1.0-linux-x64.tar.gz +tar -xvf node-v6.1.0-linux-x64.tar.gz +mv node-v6.1.0-linux-x64 /usr/local/lib/ +ln -s /usr/local/lib/node-v6.1.0-linux-x64/bin/node /usr/bin/node +ln -s /usr/local/lib/node-v6.1.0-linux-x64/bin/npm /usr/bin/npm +npm install -g grunt-cli@1.2.0 +ln -s /usr/local/lib/node-v6.1.0-linux-x64/bin/grunt /usr/bin/grunt + echo -e "\n\e[0;32m${bold}Installating Ansible${normal}" pip install ansible==2.5.0 diff --git a/deploy/jenkins/jobs/Other/config.xml b/deploy/jenkins/jobs/Other/config.xml deleted file mode 100644 index e25dcd1341..0000000000 --- a/deploy/jenkins/jobs/Other/config.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - - - - All - false - false - - - - - - - - false - - - - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Build/config.xml b/deploy/jenkins/jobs/Other/jobs/Build/config.xml deleted file mode 100644 index 68477b8ac7..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Build/config.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - - - - - - All - false - false - - - - - - - - false - - - - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Build/jobs/Cassandra_Build/config.xml b/deploy/jenkins/jobs/Other/jobs/Build/jobs/Cassandra_Build/config.xml deleted file mode 100644 index e1c34d4890..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Build/jobs/Cassandra_Build/config.xml +++ /dev/null @@ -1,38 +0,0 @@ - - - - - false - - - false - false - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-utils.git - 64bdfe13-cc30-4864-bd3c-4e89be89fc9d - - - - - */release-1.12 - - - false - - - - Jenkinsfile.Build - true - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Build/jobs/DP_Build/config.xml b/deploy/jenkins/jobs/Other/jobs/Build/jobs/DP_Build/config.xml deleted file mode 100644 index 0795a18b84..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Build/jobs/DP_Build/config.xml +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - jenkins.model.BuildDiscarderProperty - - - - - false - - - false - false - - - - -1 - -1 - -1 - 2 - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-data-pipeline - - - - - */DO-461 - - - false - - - - Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Build/jobs/Encryption_Build/config.xml b/deploy/jenkins/jobs/Other/jobs/Build/jobs/Encryption_Build/config.xml deleted file mode 100644 index cce1b84761..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Build/jobs/Encryption_Build/config.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - false - - - - - - - - 2 - - - https://github.com/project-sunbird/enc-service - f37ad21f-744a-4817-9f5e-02f8ec620b39 - - - - - */master - - - false - - - - Jenkinsfile - true - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Build/jobs/Keycloak_Build/config.xml b/deploy/jenkins/jobs/Other/jobs/Build/jobs/Keycloak_Build/config.xml deleted file mode 100644 index 7d9d21269e..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Build/jobs/Keycloak_Build/config.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - false - - - - - - - - 2 - - - https://github.com/ekstep/sunbird-devops.git - f37ad21f-744a-4817-9f5e-02f8ec620b39 - - - - - */release-1.12 - - - false - - - - pipelines/keycloak-build/Jenkinsfile.dev - true - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Build/jobs/Keycloak_Custom_PKG/config.xml b/deploy/jenkins/jobs/Other/jobs/Build/jobs/Keycloak_Custom_PKG/config.xml deleted file mode 100644 index d6ff5aca40..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Build/jobs/Keycloak_Custom_PKG/config.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - false - - - - - - - - 2 - - - https://github.com/ekstep/sunbird-devops.git - f37ad21f-744a-4817-9f5e-02f8ec620b39 - - - - - */release-1.9 - - - false - - - - pipelines/keycloak-build/Jenkinsfile.KeycloakBuild.dev - true - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Build/jobs/OpenSaberBuild/config.xml b/deploy/jenkins/jobs/Other/jobs/Build/jobs/OpenSaberBuild/config.xml deleted file mode 100644 index 9eab746f6c..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Build/jobs/OpenSaberBuild/config.xml +++ /dev/null @@ -1,42 +0,0 @@ - - - - Sunbird Player Build Pipeline - false - - - - 10 - 10 - -1 - -1 - - - - - - - - - 2 - - - https://github.com/project-sunbird/open-saber.git - f37ad21f-744a-4817-9f5e-02f8ec620b39 - - - - - */master - - - false - - - - Jenkinsfile - true - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Build/jobs/Opensaber_Build/config.xml b/deploy/jenkins/jobs/Other/jobs/Build/jobs/Opensaber_Build/config.xml deleted file mode 100644 index a10654622f..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Build/jobs/Opensaber_Build/config.xml +++ /dev/null @@ -1,42 +0,0 @@ - - - - Sunbird Player Build Pipeline - false - - - - 10 - 10 - -1 - -1 - - - - - - - - - 2 - - - https://github.com/rjshrjndrn/enc-service - f37ad21f-744a-4817-9f5e-02f8ec620b39 - - - - - */DO-173 - - - false - - - - Jenkinsfile - true - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Build/jobs/Secor_Build/config.xml b/deploy/jenkins/jobs/Other/jobs/Build/jobs/Secor_Build/config.xml deleted file mode 100644 index a06da866d4..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Build/jobs/Secor_Build/config.xml +++ /dev/null @@ -1,38 +0,0 @@ - - - - - false - - - false - false - - - - - - - - 2 - - - https://github.com/Kaali09/secor.git - f37ad21f-744a-4817-9f5e-02f8ec620b39 - - - - - */DO-327 - - - false - - - - Jenkinsfile.build - true - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_ActorService_Build/config.xml b/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_ActorService_Build/config.xml deleted file mode 100644 index 6cd1fa0965..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_ActorService_Build/config.xml +++ /dev/null @@ -1,50 +0,0 @@ - - - - Sunbird Player Pipeline - false - - - - 10 - 10 - -1 - -1 - - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-lms-mw.git - f37ad21f-744a-4817-9f5e-02f8ec620b39 - - - - - */release-1.12 - - - false - - - - false - true - false - - false - - - - Jenkinsfile - true - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_Analytics_Build_Framework/config.xml b/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_Analytics_Build_Framework/config.xml deleted file mode 100644 index 1dc7ee9bb4..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_Analytics_Build_Framework/config.xml +++ /dev/null @@ -1,121 +0,0 @@ - - - - - false - - - - 10 - 20 - -1 - -1 - - - - - 2 - - - https://github.com/project-sunbird/sunbird-analytics.git - f37ad21f-744a-4817-9f5e-02f8ec620b39 - - - - - */dialcode_usage_etb_coverage - - - false - - - - platform-framework/.* - platform-modules/.* -platform-api/.* -platform-scripts/.* - - - false - true - true - - false - - - - - 10.6.0.6-5358553b - false - false - false - false - - false - - org.ekstep - platform-framework - - platform-framework/pom.xml - clean install -DskipTests - true - false - false - false - false - false - false - false - false - -1 - false - false - true - - - - - - Sunbird_Analytics_DataProducts_Build - - SUCCESS - 0 - BLUE - true - - - - - - - Sunbird_Analytics_DataProducts_Build - SUCCESS - false - false - - - - - - - xterm - - - - - sed -i "s/localhost:8086/10.42.6.174:8086/g" platform-framework/analytics-core/src/test/resources/application.conf - - - - - cd platform-framework -#mvn scoverage:report - - - - SUCCESS - 0 - BLUE - true - - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_Analytics_DataProducts_Build/config.xml b/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_Analytics_DataProducts_Build/config.xml deleted file mode 100644 index 9755384cce..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_Analytics_DataProducts_Build/config.xml +++ /dev/null @@ -1,117 +0,0 @@ - - - - - false - - - - -1 - 5 - -1 - -1 - - - - - 2 - - - https://github.com/project-sunbird/sunbird-analytics.git - f37ad21f-744a-4817-9f5e-02f8ec620b39 - - - - - */release-1.12 - - - false - - - - platform-modules/.* -platform-scripts/.* - platform-api/.* -platform-framework/.* - - - - - 10.6.0.6-5358553b - false - false - false - false - - false - - org.ekstep - platform-modules - - platform-modules/pom.xml - clean install -DskipTests - true - false - false - false - false - false - false - false - false - -1 - false - false - true - - - - - - New_Build/Sunbird_LPA_API_Build - - SUCCESS - 0 - BLUE - true - - - - - - xterm - - - - - sed -i "s/localhost:8086/10.42.6.174:8086/g" platform-modules/batch-models/src/test/resources/application.conf -# sed -i "s/cassandra.service.embedded.enable=false/cassandra.service.embedded.enable=true/g" platform-modules/batch-models/src/test/resources/application.conf -sed -i "s/spark.cassandra.connection.host=127.0.0.1/spark.cassandra.connection.host=10.10.4.4/g" platform-modules/batch-models/src/test/resources/application.conf -rm -rf /tmp/graph.db/ -rm -rf script -mkdir script -cp -r platform-scripts/python/main/BusinessMetrics script -cp -r platform-scripts/python/main/vidyavaani script -cp -r platform-scripts/VidyaVani/GenieSearch script -cp -r platform-scripts/VidyaVani/VidyavaniCnQ script -zip -r script.zip script - - - - - cd platform-modules/job-manager -mvn clean package - - - # cd platform-modules -# mvn scoverage:report - - - - SUCCESS - 0 - BLUE - true - - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_Auth_Build/config.xml b/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_Auth_Build/config.xml deleted file mode 100644 index ec311be53a..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_Auth_Build/config.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - false - - - - - - - - 2 - - - https://github.com/ahghatol/sunbird-auth.git - sunbird_api_key_secret - - - - - */release-1.12 - - - false - - - - keycloak/scripts/pipelines/keycloak-build/Jenkinsfile.dev - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_Auth_Build_Back/config.xml b/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_Auth_Build_Back/config.xml deleted file mode 100644 index b2b0906e00..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_Auth_Build_Back/config.xml +++ /dev/null @@ -1,43 +0,0 @@ - - - - - false - - - - 120 - 5 - -1 - -1 - - - - - - - - - 2 - - - refs/heads/newmaster - https://github.com/ahghatol/sunbird-auth.git - f37ad21f-744a-4817-9f5e-02f8ec620b39 - - - - - refs/heads/newmaster - - - false - - - - keycloak/scripts/pipelines/keycloak-build/Jenkinsfile.dev - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_Auth_Config_Build_Back/config.xml b/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_Auth_Config_Build_Back/config.xml deleted file mode 100644 index d52215b0b0..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_Auth_Config_Build_Back/config.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - false - - - - - - - - 2 - - - https://github.com/ahghatol/sunbird-auth.git - f37ad21f-744a-4817-9f5e-02f8ec620b39 - - - - - */master - - - false - - - - keycloak/scripts/pipelines/keycloak-build/JenkinsfileConfig.dev - true - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_Badger/config.xml b/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_Badger/config.xml deleted file mode 100644 index 25c730690c..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_Badger/config.xml +++ /dev/null @@ -1,46 +0,0 @@ - - - - - - - - - - - - false - - - - 5 - 5 - -1 - -1 - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops.git - f37ad21f-744a-4817-9f5e-02f8ec620b39 - - - - - */release-1.10 - - - false - - - - images/openbadger/Jenkinsfile.build - true - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_Cloud_Storage_SDK_Build/config.xml b/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_Cloud_Storage_SDK_Build/config.xml deleted file mode 100644 index ef91d359d8..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_Cloud_Storage_SDK_Build/config.xml +++ /dev/null @@ -1,84 +0,0 @@ - - - - Build for the Sunbird Cloud Storage Library - false - - - - -1 - 5 - -1 - -1 - - - - - 2 - - - https://github.com/project-sunbird/sunbird-cloud-storage-sdk.git - f37ad21f-744a-4817-9f5e-02f8ec620b39 - - - - - */analytics-migration - - - false - - - - 10.6.0.6-5358553b - false - false - false - false - - false - - org.sunbird - sunbird-cloud-store-sdk - - clean install -DskipTests - true - false - false - false - false - false - false - false - false - -1 - false - false - true - - - - - - target/sunbird-cloud-store-sdk-1.0.jar - false - false - false - true - true - - - - - xterm - - - - - - SUCCESS - 0 - BLUE - true - - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_EP_API_Build/config.xml b/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_EP_API_Build/config.xml deleted file mode 100644 index d332ede982..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_EP_API_Build/config.xml +++ /dev/null @@ -1,59 +0,0 @@ - - - - - false - - - 2 - - - https://github.com/ekstep/Ecosystem-Platform-API.git - f37ad21f-744a-4817-9f5e-02f8ec620b39 - - - - - */master - - - false - - - - 10.6.0.6-42af1517 - false - false - false - false - - false - - - . /etc/profile -export GOPATH=/home/ops/go -export PATH=$PATH:$GOPATH/bin -go version -rm -f $GOPATH/src/ecosystem-platform-api -ln -s $WORKSPACE $GOPATH/src/ecosystem-platform-api -godep go test ./... -godep go build -o ecosystem-platform-api -tar -cvf ecosystem-api.tgz db/ schemas/ page_config/ ecosystem-platform-api - - - - - ecosystem-api.tgz - false - false - false - true - true - - - - - xterm - - - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_EP_Build/config.xml b/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_EP_Build/config.xml deleted file mode 100644 index 81037d916f..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_EP_Build/config.xml +++ /dev/null @@ -1,80 +0,0 @@ - - - - - false - - - - 7 - 3 - -1 - -1 - - - - - 2 - - - https://github.com/project-sunbird/sunbird-data-pipeline.git - f37ad21f-744a-4817-9f5e-02f8ec620b39 - - - - - */master - - - false - - - - true - false - - 5 - false - - - - 10.6.0.6-5358553b - false - false - false - false - - false - - - cd $WORKSPACE -tar -cvf ep.tgz data-async-processors data-indexer data-generator lib tasks - - - -f data-pipeline/pom.xml -Dlog4j.configuration=/home/ops/workspace/New_Build/Sunbird_EP_Build/logs -Dcobertura.report.format=xml clean cobertura:cobertura package - Maven - false - - - false - - - - - false - - - ep.tgz,**/distribution/target/*distribution.tar.gz - false - false - false - true - true - - - - - xterm - - - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_EP_Upgrade_Build/config.xml b/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_EP_Upgrade_Build/config.xml deleted file mode 100644 index ed29efb92f..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_EP_Upgrade_Build/config.xml +++ /dev/null @@ -1,124 +0,0 @@ - - - - - false - - - 2 - - - https://github.com/project-sunbird/sunbird-data-pipeline.git - f37ad21f-744a-4817-9f5e-02f8ec620b39 - - - - - */release-1.12 - - - false - - - - - - 10.6.0.6-5358553b - false - false - false - false - - false - - - cd $WORKSPACE -#tar -cvf ep.tgz data-async-processors data-indexer data-generator lib tasks - - - -f data-pipeline/pom.xml -Dlog4j.configuration=/home/ops/workspace/New_Build/Sunbird_EP_Upgrade_Build/logs -Dcobertura.report.format=xml clean cobertura:cobertura package - Maven - false - - - false - - - - - false - - - **/distribution/target/*distribution.tar.gz - false - false - false - true - true - - - data**/*/target/site/cobertura/coverage.xml - false - false - false - false - false - false - 0 - true - 80, 0, 0 - 80, 0, 0 - 70, 0, 0 - - - - METHOD - 8000000 - - - LINE - 8000000 - - - CONDITIONAL - 7000000 - - - - - - - METHOD - 0 - - - LINE - 0 - - - CONDITIONAL - 0 - - - - - - - METHOD - 0 - - - LINE - 0 - - - CONDITIONAL - 0 - - - - ASCII - - - - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_Ed_ConfigService_Build/config.xml b/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_Ed_ConfigService_Build/config.xml deleted file mode 100644 index 9515a9c815..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_Ed_ConfigService_Build/config.xml +++ /dev/null @@ -1,50 +0,0 @@ - - - - Sunbird Config Service Pipeline - false - - - - 10 - 10 - -1 - -1 - - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-config.git - f37ad21f-744a-4817-9f5e-02f8ec620b39 - - - - - */release-1.12 - - - false - - - - false - true - false - - false - - - - Jenkinsfile - true - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_Ed_ContentService_Build/config.xml b/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_Ed_ContentService_Build/config.xml deleted file mode 100644 index 1335ac608f..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_Ed_ContentService_Build/config.xml +++ /dev/null @@ -1,50 +0,0 @@ - - - - Sunbird Player Pipeline - false - - - - 4 - 10 - -1 - -1 - - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-content-service.git - f37ad21f-744a-4817-9f5e-02f8ec620b39 - - - - - */release-1.12 - - - false - - - - false - true - false - - false - - - - Jenkinsfile - true - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_Ed_LearnerService_Build/config.xml b/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_Ed_LearnerService_Build/config.xml deleted file mode 100644 index 55284d3bb3..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_Ed_LearnerService_Build/config.xml +++ /dev/null @@ -1,42 +0,0 @@ - - - - Sunbird Learner Service Pipeline - false - - - - 10 - 10 - -1 - -1 - - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-lms-service.git - f37ad21f-744a-4817-9f5e-02f8ec620b39 - - - - - */release-1.12 - - - false - - - - Jenkinsfile - true - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_Ed_Player_Build/config.xml b/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_Ed_Player_Build/config.xml deleted file mode 100644 index 8210e42833..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_Ed_Player_Build/config.xml +++ /dev/null @@ -1,41 +0,0 @@ - - - - Sunbird-ED Player Build Pipeline - false - - - - 10 - 10 - -1 - -1 - - - - - - - - - 2 - - - https://github.com/Sunbird-Ed/SunbirdEd-portal.git - - - - - */release-1.13 - - - false - - - - Jenkinsfile - true - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_LPA_API_Build/config.xml b/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_LPA_API_Build/config.xml deleted file mode 100644 index 848462ca1d..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_LPA_API_Build/config.xml +++ /dev/null @@ -1,103 +0,0 @@ - - - - - false - - - - 10 - 20 - -1 - -1 - - - - - 2 - - - https://github.com/project-sunbird/sunbird-analytics.git - f37ad21f-744a-4817-9f5e-02f8ec620b39 - - - - - */release-1.12 - - - false - - - - true - false - - 5 - false - - - - 10.6.0.6-5358553b - false - false - false - false - - false - - org.ekstep - platform-api - - platform-api/pom.xml - clean install -DskipTests - true - false - false - false - false - false - false - false - false - -1 - false - false - true - - - - - - - xterm - - - - - sed -i 's:>logs<:>/mount/data/analytics/logs/api-service<:g' platform-api/analytics-api/conf/log4j2.xml -sed -i 's:${application.home\:-.}/logs:/mount/data/analytics/logs/api-service:g' platform-api/analytics-api/conf/logback.xml -sed -i "s/cassandra.service.embedded.enable=false/cassandra.service.embedded.enable=true/g" platform-api/analytics-api/conf/application.conf -sed -i "s/cassandra.service.embedded.enable=false/cassandra.service.embedded.enable=true/g" platform-api/analytics-api-core/src/test/resources/application.conf -#sed -i "s/'replication_factor': '2'/'replication_factor': '1'/g" platform-scripts/database/data.cql -rm -rf script -mkdir script -cp -r platform-scripts/python/main/vidyavaani script -cp -r platform-scripts/VidyaVani/GenieSearch script -cp -r platform-scripts/VidyaVani/VidyavaniCnQ script -zip -r script.zip script - - - - - cd platform-api -mvn play2:dist -pl analytics-api - - - - SUCCESS - 0 - BLUE - true - - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_LPA_Secor_Build/config.xml b/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_LPA_Secor_Build/config.xml deleted file mode 100644 index 8d343a4648..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_LPA_Secor_Build/config.xml +++ /dev/null @@ -1,71 +0,0 @@ - - - - - false - - - 2 - - - https://github.com/project-sunbird/secor.git - f37ad21f-744a-4817-9f5e-02f8ec620b39 - - - - - */secor-0.24 - - - false - - - - 10.6.0.6-5358553b - false - false - false - false - - false - - com.pinterest - secor - - clean -Pkafka-0.10 package - true - false - false - false - false - false - false - false - false - -1 - false - false - true - - - - - - target/secor-0.24-SNAPSHOT-bin.tar.gz - false - false - false - true - true - - - - - - - FAILURE - 2 - RED - true - - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_LP_Backend_Build/config.xml b/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_LP_Backend_Build/config.xml deleted file mode 100644 index d065d860cf..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_LP_Backend_Build/config.xml +++ /dev/null @@ -1,90 +0,0 @@ - - - - - false - - - - -1 - 3 - -1 - -1 - - - - - 2 - - - https://github.com/project-sunbird/sunbird-learning-platform.git - sunbird_api_key_secret - - - - - */QRCodeSamzaJob - - - false - - - - true - false - - 5 - false - - - false - true - false - - true - - - - 10.6.0.6-5358553b - false - false - false - false - - false - - org.ekstep - ekstep-platform - - clean package -DskipTests -P samza-jobs - true - false - false - false - false - false - false - false - false - -1 - false - false - true - - - - - - - xterm - - - - - - SUCCESS - 0 - BLUE - true - - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_LP_Build/config.xml b/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_LP_Build/config.xml deleted file mode 100644 index b6da8d7381..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_LP_Build/config.xml +++ /dev/null @@ -1,91 +0,0 @@ - - - - - false - - - 2 - - - https://github.com/project-sunbird/sunbird-learning-platform.git - f37ad21f-744a-4817-9f5e-02f8ec620b39 - - - - - */QRCodeSamzaJob - - - false - - - - false - true - false - - true - - - - 10.6.0.6-5358553b - false - false - false - false - - false - - org.ekstep - ekstep-platform - - clean install -DskipTests - true - false - false - false - false - false - false - false - false - 30 - false - false - true - - - - - - - xterm - - - - - java -version -rm -rf /data/logs/* -rm -rf /data/graphDB/* -rm -rf /data/testgraphDB/* -rm -rf /data/testGraphDB/* -vim -esnc '%s/dialcode.es_conn_info="localhost:9200"/dialcode.es_conn_info="10.6.0.11:9200"/g|:wq' platform-core/unit-tests/src/test/resources/application.conf -vim -esnc '%s/search.es_conn_info="localhost:9200"/search.es_conn_info="10.6.0.11:9200"/g|:wq' platform-core/unit-tests/src/test/resources/application.conf -vim -esnc '%s/search.es_conn_info="localhost:9200"/search.es_conn_info="10.6.0.11:9200"/g|:wq' searchIndex-platform/module/search-api/search-manager/conf/application.conf - - - - - - cd searchIndex-platform/module/search-api/search-manager -mvn play2:dist - - - - SUCCESS - 0 - BLUE - true - - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_LP_Neo4j_Build/config.xml b/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_LP_Neo4j_Build/config.xml deleted file mode 100644 index 01144547e3..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_LP_Neo4j_Build/config.xml +++ /dev/null @@ -1,73 +0,0 @@ - - - - - false - - - 2 - - - https://github.com/project-sunbird/sunbird-learning-platform.git - f37ad21f-744a-4817-9f5e-02f8ec620b39 - - - - - refs/tags/v1.10 - - - false - - - - 10.6.0.6-5358553b - false - false - false - false - - false - - org.ekstep - ekstep-platform - - clean install -DskipTests=true - true - false - false - false - false - false - false - false - false - -1 - false - false - true - - - - - - - xterm - - - - - rm -rf /data/logs/* -rm -rf /data/graphDB/* -rm -rf /data/testgraphDB/* -rm -rf /data/testGraphDB/* - - - - - SUCCESS - 0 - BLUE - true - - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_LP_SyncTool_Build/config.xml b/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_LP_SyncTool_Build/config.xml deleted file mode 100644 index 6c4eec0d89..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_LP_SyncTool_Build/config.xml +++ /dev/null @@ -1,82 +0,0 @@ - - - - - false - - - 2 - - - https://github.com/project-sunbird/sunbird-learning-platform.git - f37ad21f-744a-4817-9f5e-02f8ec620b39 - - - - - */sync-job - - - false - - - - false - true - false - - true - - - - 10.6.0.6-5358553b - false - false - false - false - - false - - org.ekstep - ekstep-platform - - clean install -DskipTests - true - false - false - false - false - false - false - false - false - 30 - false - false - true - - - - - - - xterm - - - - - java -version -rm -rf /data/logs/* -rm -rf /data/graphDB/* -rm -rf /data/testgraphDB/* -rm -rf /data/testGraphDB/* - - - - - SUCCESS - 0 - BLUE - true - - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_SampleFlow_Build/config.xml b/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_SampleFlow_Build/config.xml deleted file mode 100644 index 3c5fc59ada..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_SampleFlow_Build/config.xml +++ /dev/null @@ -1,41 +0,0 @@ - - - - Sunbird Player Build Pipeline - false - - - - 10 - 10 - -1 - -1 - - - - - - - - - 2 - - - https://github.com/G33tha/sunbird-portal.git - - - - - master - - - false - - - - Jenkinsfile - true - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_TelemetryLogstash_Build/config.xml b/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_TelemetryLogstash_Build/config.xml deleted file mode 100644 index e7ba64202f..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_TelemetryLogstash_Build/config.xml +++ /dev/null @@ -1,50 +0,0 @@ - - - - Sunbird Telemetry Service Pipeline - false - - - - 10 - 10 - -1 - -1 - - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-telemetry-service.git - f37ad21f-744a-4817-9f5e-02f8ec620b39 - - - - - */telemetry-scala - - - false - - - - false - true - false - - false - - - - Jenkinsfile - true - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_TelemetryService_Build/config.xml b/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_TelemetryService_Build/config.xml deleted file mode 100644 index f4f993b0a5..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Build/jobs/Sunbird_TelemetryService_Build/config.xml +++ /dev/null @@ -1,50 +0,0 @@ - - - - Sunbird Telemetry Service Pipeline - false - - - - 10 - 10 - -1 - -1 - - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-telemetry-service.git - f37ad21f-744a-4817-9f5e-02f8ec620b39 - - - - - */release-1.11 - - - false - - - - false - true - false - - false - - - - Jenkinsfile - true - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Build/jobs/hostname/config.xml b/deploy/jenkins/jobs/Other/jobs/Build/jobs/hostname/config.xml deleted file mode 100644 index fa6b650b9e..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Build/jobs/hostname/config.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - false - - - false - false - - - - build-slave-test - false - false - false - false - - false - - - hostname -i -hostname - - - - - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/config.xml deleted file mode 100644 index 53bc02eb1a..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Deploy/config.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - - - - All - false - false - - - - - - - - false - - - - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Artifacts_Repo/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Artifacts_Repo/config.xml deleted file mode 100644 index 18cc7cf04a..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Artifacts_Repo/config.xml +++ /dev/null @@ -1,67 +0,0 @@ - - - - push Images to repo - false - - - - - private_credentials - Private repo credentials to checkout - f37ad21f-744a-4817-9f5e-02f8ec620b39 - false - - - parentProject - Project name from where to copy the metadata.json file - - false - - - private_repo_branch - Private repo branch to checkout - release-1.13 - false - - - - - - - - Build/Sunbird_Ed_Player_Build - - SUCCESS - 0 - BLUE - true - - - - - - - - 2 - - - https://github.com/ekstep/sunbird-devops.git - 64bdfe13-cc30-4864-bd3c-4e89be89fc9d - - - - - */release-1.13 - - - false - - - - pipelines/deploy/player/Jenkinsfile.push - true - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/config.xml deleted file mode 100644 index 53bc02eb1a..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/config.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - - - - All - false - false - - - - - - - - false - - - - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/AM_AdminUtils_Deploy_Dev/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/AM_AdminUtils_Deploy_Dev/config.xml deleted file mode 100644 index a75eb8ad8a..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/AM_AdminUtils_Deploy_Dev/config.xml +++ /dev/null @@ -1,46 +0,0 @@ - - - - Admin Utils Pipeline - false - - - - -1 - -1 - -1 - -1 - - - - false - false - - - - - - - - 2 - - - https://github.com/ekstep/sunbird-devops.git - 64bdfe13-cc30-4864-bd3c-4e89be89fc9d - - - - - */release-1.12 - - - false - - - - pipelines/adminutils/Jenkinsfile.dev - true - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/AM_Onboard_APIs/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/AM_Onboard_APIs/config.xml deleted file mode 100644 index 052a22d9b2..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/AM_Onboard_APIs/config.xml +++ /dev/null @@ -1,46 +0,0 @@ - - - - - - - - - - - - false - - - - 10 - 10 - -1 - -1 - - - - - - 2 - - - https://github.com/ekstep/sunbird-devops.git - f37ad21f-744a-4817-9f5e-02f8ec620b39 - - - - - */release-1.13 - - - false - - - - pipelines/am-onboard-apis/Jenkinsfile.dev - true - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/AM_Onboard_Consumers/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/AM_Onboard_Consumers/config.xml deleted file mode 100644 index 8393eab91f..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/AM_Onboard_Consumers/config.xml +++ /dev/null @@ -1,46 +0,0 @@ - - - - - - - - - - - - false - - - - 10 - 10 - -1 - -1 - - - - - - 2 - - - https://github.com/ekstep/sunbird-devops.git - f37ad21f-744a-4817-9f5e-02f8ec620b39 - - - - - */release-1.13 - - - false - - - - pipelines/am-onboard-consumers/Jenkinsfile.dev - true - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/API_Manager_Deploy_Dev/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/API_Manager_Deploy_Dev/config.xml deleted file mode 100644 index 821a3cfb4a..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/API_Manager_Deploy_Dev/config.xml +++ /dev/null @@ -1,42 +0,0 @@ - - - - - false - - - - 10 - 10 - -1 - -1 - - - - - - - - - 2 - - - https://github.com/ekstep/sunbird-devops.git - f37ad21f-744a-4817-9f5e-02f8ec620b39 - - - - - */release-1.12 - - - false - - - - pipelines/api-manager/Jenkinsfile.dev - true - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/AnalyticsApi_Logs/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/AnalyticsApi_Logs/config.xml deleted file mode 100644 index 7a7e94e096..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/AnalyticsApi_Logs/config.xml +++ /dev/null @@ -1,47 +0,0 @@ - - - - - false - - - 2 - - - https://github.com/ekstep/sunbird-devops.git - f37ad21f-744a-4817-9f5e-02f8ec620b39 - - - - - */DO-380 - - - false - - - - localhost-b5cf9b99 - false - false - false - false - - false - - - ls /home/ops/.ssh - - -ansible-playbook -i ansible/inventories/dev/hosts ansible/logs.yml --extra-vars "service=analytics-api user=analytics remote=analytics-api app=analytics sourcepath=/mount/data/analytics/logs" --vault-password-file /home/ops/vault - - - - - - - - xterm - - - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Application_ElasticSearch/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Application_ElasticSearch/config.xml deleted file mode 100644 index 2ec13e3f43..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Application_ElasticSearch/config.xml +++ /dev/null @@ -1,46 +0,0 @@ - - - - - - - - - - - - false - - - - 10 - 10 - -1 - -1 - - - - - - 2 - - - https://github.com/ekstep/sunbird-devops.git - f37ad21f-744a-4817-9f5e-02f8ec620b39 - - - - - */release-1.13 - - - false - - - - pipelines/application-elasticsearch/Jenkinsfile.dev - true - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Application_ElasticSearch_Backup/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Application_ElasticSearch_Backup/config.xml deleted file mode 100644 index 2ca8bca72b..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Application_ElasticSearch_Backup/config.xml +++ /dev/null @@ -1,55 +0,0 @@ - - - - - - - hudson.triggers.TimerTrigger - - - - - - Backup application ES - false - - - - - H 0 * * * - - - - - - 10 - 10 - -1 - -1 - - - - - - 2 - - - https://github.com/ekstep/sunbird-devops.git - f37ad21f-744a-4817-9f5e-02f8ec620b39 - - - - - */release-1.13 - - - false - - - - pipelines/es-backup/Jenkinsfile.dev - true - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Application_ElasticSearch_Restore/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Application_ElasticSearch_Restore/config.xml deleted file mode 100644 index 1253056a5a..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Application_ElasticSearch_Restore/config.xml +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - - - - - - Restore Application ES from backup - false - - - - 10 - 10 - -1 - -1 - - - - - - SNAPSHOT_NUMBER - Snapshot number to restore. You can get all snapshots using curl http://localhost:9200/_snapshot/azurebackup/_all - - false - - - - - - - - - - 2 - - - https://github.com/ekstep/sunbird-devops.git - f37ad21f-744a-4817-9f5e-02f8ec620b39 - - - - - */master - - - false - - - - pipelines/es-restore/Jenkinsfile.dev - true - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Assets_Upload_Azure/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Assets_Upload_Azure/config.xml deleted file mode 100644 index da779b0e7c..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Assets_Upload_Azure/config.xml +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - - hudson.triggers.TimerTrigger - - - - - - - false - - - - 10 - 10 - -1 - -1 - - - - - - - Assets folder - - - - - - - - - - 2 - - - https://github.com/ekstep/sunbird-devops.git - f37ad21f-744a-4817-9f5e-02f8ec620b39 - - - - - */release-1.7 - - - false - - - - pipelines/player-cdn-upload/Jenkinsfile.dev - true - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Cassandra CQL Dumps/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Cassandra CQL Dumps/config.xml deleted file mode 100644 index bf18fdfc49..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Cassandra CQL Dumps/config.xml +++ /dev/null @@ -1,57 +0,0 @@ - - - - - false - - - true - hudson.model.Item.Read:holycow - hudson.model.Item.Build:holycow - hudson.model.Item.Discover:holycow - - - - 2 - - - https://github.com/ekstep/sunbird-devops - f37ad21f-744a-4817-9f5e-02f8ec620b39 - - - - - */master - - - false - - - - general-dev - false - false - false - false - - false - - - rm -rf /tmp/fetched/ -ansible-playbook -i ansible/inventory/dev ansible/reporting.yml --vault-password-file /run/secrets/vault-pass -ls -al . - - - - - - ansible/*.csv - false - false - false - true - true - - - - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Cassandra_CQL_Dumps/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Cassandra_CQL_Dumps/config.xml deleted file mode 100644 index d942a75013..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Cassandra_CQL_Dumps/config.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - false - - - - - - - - 2 - - - https://github.com/ekstep/sunbird-devops.git - f37ad21f-744a-4817-9f5e-02f8ec620b39 - - - - - */master - - - false - - - - pipelines/cql_dumps/Jenkinsfile.dev - true - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Createuser/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Createuser/config.xml deleted file mode 100644 index 5f48236ad1..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Createuser/config.xml +++ /dev/null @@ -1,82 +0,0 @@ - - - - - false - - - - com.cloudbees.plugins.credentials.CredentialsProvider.Create:manojvv - com.cloudbees.plugins.credentials.CredentialsProvider.Delete:manojvv - com.cloudbees.plugins.credentials.CredentialsProvider.ManageDomains:manojvv - com.cloudbees.plugins.credentials.CredentialsProvider.Update:manojvv - com.cloudbees.plugins.credentials.CredentialsProvider.View:manojvv - hudson.model.Item.Build:manojvv - hudson.model.Item.Cancel:manojvv - hudson.model.Item.Configure:manojvv - hudson.model.Item.Delete:manojvv - hudson.model.Item.Discover:manojvv - hudson.model.Item.Move:manojvv - hudson.model.Item.Read:manojvv - hudson.model.Item.Workspace:manojvv - hudson.model.Run.Delete:manojvv - hudson.model.Run.Replay:manojvv - hudson.model.Run.Update:manojvv - hudson.scm.SCM.Tag:manojvv - - - - - instance_name - - - false - - - username - - - false - - - sudo_password - - - false - - - public_key - Keep the public key in single quotes. for ex: 'public_key ' - - false - - - - - - - - - - 2 - - - https://github.com/ekstep/sunbird-devops - f37ad21f-744a-4817-9f5e-02f8ec620b39 - - - - - */release-1.7 - - - false - - - - pipelines/createuser/Jenkinsfile.dev - true - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Curl_Commands/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Curl_Commands/config.xml deleted file mode 100644 index b2ea4305b8..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Curl_Commands/config.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - false - - - - - - - - 2 - - - https://github.com/ekstep/sunbird-devops.git - f37ad21f-744a-4817-9f5e-02f8ec620b39 - - - - - */master - - - false - - - - pipelines/curl-commands/Jenkinsfile.dev - true - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/DB_Bootstrap/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/DB_Bootstrap/config.xml deleted file mode 100644 index 14b6d1922c..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/DB_Bootstrap/config.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - false - - - - - - - - 2 - - - https://github.com/ekstep/sunbird-devops.git - f37ad21f-744a-4817-9f5e-02f8ec620b39 - - - - - */migration - - - false - - - - pipelines/sunbird-bootstrap/Jenkinsfile.db.dev - true - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Deleteuser/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Deleteuser/config.xml deleted file mode 100644 index cc39999f77..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Deleteuser/config.xml +++ /dev/null @@ -1,70 +0,0 @@ - - - - - false - - - - com.cloudbees.plugins.credentials.CredentialsProvider.Create:manojvv - com.cloudbees.plugins.credentials.CredentialsProvider.Delete:manojvv - com.cloudbees.plugins.credentials.CredentialsProvider.ManageDomains:manojvv - com.cloudbees.plugins.credentials.CredentialsProvider.Update:manojvv - com.cloudbees.plugins.credentials.CredentialsProvider.View:manojvv - hudson.model.Item.Build:manojvv - hudson.model.Item.Cancel:manojvv - hudson.model.Item.Configure:manojvv - hudson.model.Item.Delete:manojvv - hudson.model.Item.Discover:manojvv - hudson.model.Item.Move:manojvv - hudson.model.Item.Read:manojvv - hudson.model.Item.Workspace:manojvv - hudson.model.Run.Delete:manojvv - hudson.model.Run.Replay:manojvv - hudson.model.Run.Update:manojvv - hudson.scm.SCM.Tag:manojvv - - - - - instance_name - - - false - - - username - - - false - - - - - - - - - - 2 - - - https://github.com/ekstep/sunbird-devops - f37ad21f-744a-4817-9f5e-02f8ec620b39 - - - - - */master - - - false - - - - pipelines/deleteuser/Jenkinsfile.dev - true - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Dev_Test/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Dev_Test/config.xml deleted file mode 100644 index 7639ec53af..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Dev_Test/config.xml +++ /dev/null @@ -1,54 +0,0 @@ - - - - - false - - - - - - - - true - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Devops_Test/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Devops_Test/config.xml deleted file mode 100644 index feffea85c5..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Devops_Test/config.xml +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - - hudson.triggers.SCMTrigger - - - - - - - false - - - - 10 - 10 - -1 - -1 - - - - - - - - - 2 - - - https://github.com/ekstep/sunbird-devops.git - f37ad21f-744a-4817-9f5e-02f8ec620b39 - - - - - */release-1.4 - - - false - - - - pipelines/devops-test/Jenkinsfile.dev - true - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/DialPage_Upload_CDN/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/DialPage_Upload_CDN/config.xml deleted file mode 100644 index 34066ec1b9..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/DialPage_Upload_CDN/config.xml +++ /dev/null @@ -1,53 +0,0 @@ - - - - - - - hudson.triggers.TimerTrigger - - - - - - - false - - - - - branch - player branch version to build - - false - - - - - - - - - - 2 - - - https://github.com/ekstep/sunbird-devops.git - f37ad21f-744a-4817-9f5e-02f8ec620b39 - - - - - */dialpage-cdn - - - false - - - - pipelines/dialpage-cdn-upload/Jenkinsfile.dev - true - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Docker_Swarm_Config/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Docker_Swarm_Config/config.xml deleted file mode 100644 index f3afe038cb..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Docker_Swarm_Config/config.xml +++ /dev/null @@ -1,49 +0,0 @@ - - - - - - - - - - - - false - - - - 10 - 10 - -1 - -1 - - - - - - - - - 2 - - - https://github.com/ekstep/sunbird-devops.git - f37ad21f-744a-4817-9f5e-02f8ec620b39 - - - - - */release-1.9-newenv - - - false - - - - pipelines/swarm-config/Jenkinsfile.dev - true - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Docker_Swarm_Service_Info/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Docker_Swarm_Service_Info/config.xml deleted file mode 100644 index 36f6f67f42..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Docker_Swarm_Service_Info/config.xml +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - - - docker_swarm_service_name - - - - - - false - - - - - docker_swarm_service_name - Specify the name of service. Use Docker_Swarm_Service_List job to list all services - - false - - - - - - 10 - 10 - -1 - -1 - - - - - - 2 - - - https://github.com/ekstep/sunbird-devops.git - f37ad21f-744a-4817-9f5e-02f8ec620b39 - - - - - */master - - - false - - - - pipelines/docker-swarm-service-info/Jenkinsfile.dev - true - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Docker_Swarm_Service_List/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Docker_Swarm_Service_List/config.xml deleted file mode 100644 index a99d432250..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Docker_Swarm_Service_List/config.xml +++ /dev/null @@ -1,46 +0,0 @@ - - - - - - - - - - - - false - - - - 10 - 10 - -1 - -1 - - - - - - 2 - - - https://github.com/ekstep/sunbird-devops.git - f37ad21f-744a-4817-9f5e-02f8ec620b39 - - - - - */master - - - false - - - - pipelines/docker-swarm-service-list/Jenkinsfile.dev - true - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Docker_Swarm_Service_Restart/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Docker_Swarm_Service_Restart/config.xml deleted file mode 100644 index f72b9ef208..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Docker_Swarm_Service_Restart/config.xml +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - - - docker_swarm_service_name - - - - - - false - - - - - docker_swarm_service_name - Specify the name of service. Use Docker_SWarm_Servic_List job to list all services - - false - - - - - - 10 - 10 - -1 - -1 - - - - - - 2 - - - https://github.com/ekstep/sunbird-devops.git - f37ad21f-744a-4817-9f5e-02f8ec620b39 - - - - - */master - - - false - - - - pipelines/docker-swarm-service-restart/Jenkinsfile.dev - true - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Docker_Swarm_Update/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Docker_Swarm_Update/config.xml deleted file mode 100644 index cfb2238747..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Docker_Swarm_Update/config.xml +++ /dev/null @@ -1,46 +0,0 @@ - - - - - - - - - - - - false - - - - 10 - 10 - -1 - -1 - - - - - - 2 - - - https://github.com/ekstep/sunbird-devops.git - f37ad21f-744a-4817-9f5e-02f8ec620b39 - - - - - */master - - - false - - - - pipelines/swarm-update/Jenkinsfile.dev - true - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Documentation_Jenkins_Slave/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Documentation_Jenkins_Slave/config.xml deleted file mode 100644 index a8a98d0768..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Documentation_Jenkins_Slave/config.xml +++ /dev/null @@ -1,46 +0,0 @@ - - - - - - - - - - - Deploys documentation jenkins slave - false - - - - 5 - 5 - -1 - -1 - - - - - - 2 - - - https://github.com/ekstep/sunbird-devops.git - f37ad21f-744a-4817-9f5e-02f8ec620b39 - - - - - */master - - - false - - - - pipelines/documentation-jenkins-slave/Jenkinsfile.deploy-slave - true - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Encryption_service_deploy/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Encryption_service_deploy/config.xml deleted file mode 100644 index 9e4e32d61d..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Encryption_service_deploy/config.xml +++ /dev/null @@ -1,42 +0,0 @@ - - - - Deploys Encryption Service to DEV environment - false - - - - 10 - 10 - -1 - -1 - - - - - - - - - 2 - - - https://github.com/ekstep/sunbird-devops.git - f37ad21f-744a-4817-9f5e-02f8ec620b39 - - - - - */release-1.11 - - - false - - - - pipelines/enc-service/Jenkinsfile.dev - true - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Grafana_Dashboards_Export/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Grafana_Dashboards_Export/config.xml deleted file mode 100644 index a447e905f1..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Grafana_Dashboards_Export/config.xml +++ /dev/null @@ -1,55 +0,0 @@ - - - - - - - hudson.triggers.TimerTrigger - - - - - - - false - - - - - @midnight - - - - - - 10 - 10 - -1 - -1 - - - - - - 2 - - - https://github.com/ekstep/sunbird-devops.git - f37ad21f-744a-4817-9f5e-02f8ec620b39 - - - - - */release-1.7 - - - false - - - - pipelines/grafana-dashboards-export/Jenkinsfile.dev - true - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Grafana_Dashboards_Import/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Grafana_Dashboards_Import/config.xml deleted file mode 100644 index 25044eade0..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Grafana_Dashboards_Import/config.xml +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - - hudson.triggers.TimerTrigger - - - - - - - false - - - - 10 - 10 - -1 - -1 - - - - - - 2 - - - https://github.com/ekstep/sunbird-devops.git - f37ad21f-744a-4817-9f5e-02f8ec620b39 - - - - - */master - - - false - - - - pipelines/grafana-dashboards-import/Jenkinsfile.dev - true - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Jenkins_Slave/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Jenkins_Slave/config.xml deleted file mode 100644 index 5c74e331c4..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Jenkins_Slave/config.xml +++ /dev/null @@ -1,46 +0,0 @@ - - - - - - - - - - - - false - - - - 10 - 10 - -1 - -1 - - - - - - 2 - - - https://github.com/ekstep/sunbird-devops.git - f37ad21f-744a-4817-9f5e-02f8ec620b39 - - - - - */release-1.13 - - - false - - - - pipelines/jenkins-slave/Jenkinsfile.dev - true - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Keycloak_Deploy/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Keycloak_Deploy/config.xml deleted file mode 100644 index 44da3d600f..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Keycloak_Deploy/config.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - false - - - - - - - - 2 - - - https://github.com/ekstep/sunbird-devops.git - f37ad21f-744a-4817-9f5e-02f8ec620b39 - - - - - */release-1.13 - - - false - - - - pipelines/keycloak-deploy/Jenkinsfile.dev - true - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Keycloak_Provision/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Keycloak_Provision/config.xml deleted file mode 100644 index 2219ce1601..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Keycloak_Provision/config.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - false - - - - - - - - 2 - - - https://github.com/ekstep/sunbird-devops.git - f37ad21f-744a-4817-9f5e-02f8ec620b39 - - - - - */release-1.13 - - - false - - - - pipelines/keycloak-provision/Jenkinsfile.dev - true - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Learning_Logs/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Learning_Logs/config.xml deleted file mode 100644 index d8a923e4e2..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Learning_Logs/config.xml +++ /dev/null @@ -1,45 +0,0 @@ - - - - - false - - - 2 - - - https://github.com/ekstep/sunbird-devops.git - f37ad21f-744a-4817-9f5e-02f8ec620b39 - - - - - */DO-380 - - - false - - - - true - false - false - false - - false - - - ls /home/ops/.ssh -ansible-playbook -i ansible/inventories/dev/hosts ansible/logs.yml --extra-vars "service=learning user=learning remote=learningall app=tomcat sourcepath=/home/learning/apache-tomcat-8.0.36/logs" --vault-password-file /home/ops/vault -ansible-playbook -i ansible/inventories/dev/hosts ansible/logs.yml --extra-vars "service=learning user=learning remote=learningall app=data sourcepath=/data/logs" --vault-password-file /home/ops/vault - - - - - - - - xterm - - - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Logger_ES_Deploy_Dev/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Logger_ES_Deploy_Dev/config.xml deleted file mode 100644 index 1a0584176a..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Logger_ES_Deploy_Dev/config.xml +++ /dev/null @@ -1,49 +0,0 @@ - - - - - - - - - - - Logger Pipeline - false - - - - -1 - -1 - -1 - -1 - - - - - - - - - 2 - - - https://github.com/ekstep/sunbird-devops.git - f37ad21f-744a-4817-9f5e-02f8ec620b39 - - - - - */release-1.13 - - - false - - - - pipelines/logger-elasticsearch/Jenkinsfile.dev - true - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Logger_ElasticSearch_Backup/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Logger_ElasticSearch_Backup/config.xml deleted file mode 100644 index 7f7864da21..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Logger_ElasticSearch_Backup/config.xml +++ /dev/null @@ -1,55 +0,0 @@ - - - - - - - hudson.triggers.TimerTrigger - - - - - - Backup Log ES - false - - - - - H 0 * * * - - - - - - 10 - 10 - -1 - -1 - - - - - - 2 - - - https://github.com/ekstep/sunbird-devops.git - f37ad21f-744a-4817-9f5e-02f8ec620b39 - - - - - */release-1.13 - - - false - - - - pipelines/log-es-backup/Jenkinsfile.dev - true - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Logger_ElasticSearch_Restore/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Logger_ElasticSearch_Restore/config.xml deleted file mode 100644 index aa8cf2a031..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Logger_ElasticSearch_Restore/config.xml +++ /dev/null @@ -1,56 +0,0 @@ - - - - - - - - - - - Restore Logger ES from backup - false - - - - - SNAPSHOT_NUMBER - Snapshot number to restore - - false - - - - - - 10 - 10 - -1 - -1 - - - - - - 2 - - - https://github.com/ekstep/sunbird-devops.git - f37ad21f-744a-4817-9f5e-02f8ec620b39 - - - - - */master - - - false - - - - pipelines/log-es-restore/Jenkinsfile.dev - true - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Logger_Purge_Old_Logs/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Logger_Purge_Old_Logs/config.xml deleted file mode 100644 index 21e64ff09a..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Logger_Purge_Old_Logs/config.xml +++ /dev/null @@ -1,55 +0,0 @@ - - - - - - - hudson.triggers.TimerTrigger - - - - - - Purge logs older than 30 days - false - - - - - @midnight - - - - - - 10 - 10 - -1 - -1 - - - - - - 2 - - - https://github.com/ekstep/sunbird-devops.git - f37ad21f-744a-4817-9f5e-02f8ec620b39 - - - - - */release-1.5 - - - false - - - - pipelines/purge-old-logs/Jenkinsfile.dev - true - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Logging/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Logging/config.xml deleted file mode 100644 index fed27d6934..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Logging/config.xml +++ /dev/null @@ -1,42 +0,0 @@ - - - - - false - - - - 10 - 10 - -1 - -1 - - - - - - - - - 2 - - - https://github.com/ekstep/sunbird-devops.git - f37ad21f-744a-4817-9f5e-02f8ec620b39 - - - - - */DO-380 - - - false - - - - pipelines/logger/Jenkinsfile.dev - true - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Logging_Registry/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Logging_Registry/config.xml deleted file mode 100644 index 5f4592ac1b..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Logging_Registry/config.xml +++ /dev/null @@ -1,42 +0,0 @@ - - - - - false - - - - 10 - 10 - -1 - -1 - - - - - - - - - 2 - - - https://github.com/ekstep/sunbird-devops.git - f37ad21f-744a-4817-9f5e-02f8ec620b39 - - - - - */release-1.7 - - - false - - - - pipelines/logger/Jenkinsfile.registry.dev - true - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Logs_For_Learning_Dev/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Logs_For_Learning_Dev/config.xml deleted file mode 100644 index 8c951cf1b1..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Logs_For_Learning_Dev/config.xml +++ /dev/null @@ -1,33 +0,0 @@ - - - - - false - - - 2 - - - https://github.com/ekstep/sunbird-devops.git - f37ad21f-744a-4817-9f5e-02f8ec620b39 - - - - - */master - - - false - - - - true - false - false - false - - false - - - - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Monitoring/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Monitoring/config.xml deleted file mode 100644 index 04f219d3c3..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Monitoring/config.xml +++ /dev/null @@ -1,42 +0,0 @@ - - - - - false - - - - 10 - 10 - -1 - -1 - - - - - - - - - 2 - - - https://github.com/ekstep/sunbird-devops.git - f37ad21f-744a-4817-9f5e-02f8ec620b39 - - - - - */release-1.13 - - - false - - - - pipelines/monitor/Jenkinsfile.dev - true - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/OpenSaber/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/OpenSaber/config.xml deleted file mode 100644 index d80e32d7da..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/OpenSaber/config.xml +++ /dev/null @@ -1,42 +0,0 @@ - - - - Deploys Player to DEV environment - false - - - - 3 - 4 - -1 - -1 - - - - - - - - - 2 - - - https://github.com/ekstep/sunbird-devops.git - f37ad21f-744a-4817-9f5e-02f8ec620b39 - - - - - */DO-170 - - - false - - - - pipelines/opensaber/Jenkinsfile.dev - true - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/OpenSaberEncryption/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/OpenSaberEncryption/config.xml deleted file mode 100644 index aef7637e98..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/OpenSaberEncryption/config.xml +++ /dev/null @@ -1,42 +0,0 @@ - - - - Deploys Player to DEV environment - false - - - - 3 - 4 - -1 - -1 - - - - - - - - - 2 - - - https://github.com/ekstep/sunbird-devops.git - f37ad21f-744a-4817-9f5e-02f8ec620b39 - - - - - */release-1.11 - - - false - - - - pipelines/opensaber-enc/Jenkinsfile.dev - true - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Player_Upload_CDN/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Player_Upload_CDN/config.xml deleted file mode 100644 index 90b8321910..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Player_Upload_CDN/config.xml +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - hudson.triggers.TimerTrigger - - - - - - - false - - - - 10 - 10 - -1 - -1 - - - - - - cdn - cdn url link - https://dev-sunbird-temp.azureedge.net/player/ - false - - - portal_git_branch - Portal branch, to clone build and upload to the CDN. - release-1.10 - false - - - - - - - - - - 2 - - - https://github.com/ekstep/sunbird-devops.git - f37ad21f-744a-4817-9f5e-02f8ec620b39 - - - - - */release-1.9 - - - false - - - - pipelines/player-cdn-upload/Jenkinsfile.dev - true - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Postgresql_Backup/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Postgresql_Backup/config.xml deleted file mode 100644 index f237f0ea7c..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Postgresql_Backup/config.xml +++ /dev/null @@ -1,55 +0,0 @@ - - - - - - - hudson.triggers.TimerTrigger - - - - - - - false - - - - 10 - 10 - -1 - -1 - - - - - - - - - - - - - 2 - - - https://github.com/ekstep/sunbird-devops.git - f37ad21f-744a-4817-9f5e-02f8ec620b39 - - - - - */release-1.11 - - - false - - - - pipelines/postgresql-backup/Jenkinsfile.dev - true - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Postgresql_Data_Update/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Postgresql_Data_Update/config.xml deleted file mode 100644 index ca04cde5a3..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Postgresql_Data_Update/config.xml +++ /dev/null @@ -1,46 +0,0 @@ - - - - - - - - - - - - false - - - - 10 - 10 - -1 - -1 - - - - - - 2 - - - https://github.com/ekstep/sunbird-devops.git - f37ad21f-744a-4817-9f5e-02f8ec620b39 - - - - - */release-1.9 - - - false - - - - pipelines/postgresql-data-update/Jenkinsfile.dev - true - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Postgresql_Master/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Postgresql_Master/config.xml deleted file mode 100644 index b6cba588a6..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Postgresql_Master/config.xml +++ /dev/null @@ -1,46 +0,0 @@ - - - - - - - - - - - - false - - - - 10 - 10 - -1 - -1 - - - - - - 2 - - - https://github.com/ekstep/sunbird-devops.git - f37ad21f-744a-4817-9f5e-02f8ec620b39 - - - - - */master - - - false - - - - pipelines/postgresql-master/Jenkinsfile.dev - true - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Postgresql_Restore/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Postgresql_Restore/config.xml deleted file mode 100644 index 8283ee74bc..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Postgresql_Restore/config.xml +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - - - postgresql_restore_gzip_file_name - - - - - - false - - - - - postgresql_restore_gzip_file_name - Specify the backup file name in azure which should be restored - - false - - - - - - 10 - 10 - -1 - -1 - - - - - - 2 - - - https://github.com/ekstep/sunbird-devops.git - f37ad21f-744a-4817-9f5e-02f8ec620b39 - - - - - */master - - - false - - - - pipelines/postgresql-restore/Jenkinsfile.dev - true - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Prometheus_Backup/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Prometheus_Backup/config.xml deleted file mode 100644 index 9ce5708981..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Prometheus_Backup/config.xml +++ /dev/null @@ -1,55 +0,0 @@ - - - - - - - hudson.triggers.TimerTrigger - - - - - - - false - - - - - @midnight - - - - - - 10 - 10 - -1 - -1 - - - - - - 2 - - - https://github.com/ekstep/sunbird-devops.git - f37ad21f-744a-4817-9f5e-02f8ec620b39 - - - - - */release-1.13 - - - false - - - - pipelines/prometheus-backup/Jenkinsfile.dev - true - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Proxy/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Proxy/config.xml deleted file mode 100644 index 0726d7dc07..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Proxy/config.xml +++ /dev/null @@ -1,46 +0,0 @@ - - - - - - - - - - - Application Proxy Pipeline for DEV - false - - - - -1 - -1 - -1 - -1 - - - - - - 2 - - - https://github.com/ekstep/sunbird-devops.git - f37ad21f-744a-4817-9f5e-02f8ec620b39 - - - - - */release-1.13 - - - false - - - - pipelines/proxy/Jenkinsfile.dev - true - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Registry_Provision/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Registry_Provision/config.xml deleted file mode 100644 index 2e5b58aa84..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Registry_Provision/config.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - false - - - - 2 - - - https://github.com/ekstep/sunbird-devops.git - f37ad21f-744a-4817-9f5e-02f8ec620b39 - - - - - */release-1.8 - - - false - - - - pipelines/registry-provision/Jenkinsfile.dev - true - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Run_Command/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Run_Command/config.xml deleted file mode 100644 index d8ba0bed7a..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Run_Command/config.xml +++ /dev/null @@ -1,50 +0,0 @@ - - - - - false - - - - - HOST_PATTERN - - - false - - - COMMAND - - - false - - - - - - - - - - 2 - - - https://github.com/ekstep/sunbird-devops.git - f37ad21f-744a-4817-9f5e-02f8ec620b39 - - - - - */release-1.5 - - - false - - - - pipelines/run-command/Jenkinsfile.dev - true - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Secor_Logs/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Secor_Logs/config.xml deleted file mode 100644 index 1e6721f565..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Secor_Logs/config.xml +++ /dev/null @@ -1,46 +0,0 @@ - - - - - false - - - 2 - - - https://github.com/ekstep/sunbird-devops.git - f37ad21f-744a-4817-9f5e-02f8ec620b39 - - - - - */DO-380 - - - false - - - - localhost-b5cf9b99 - false - false - false - false - - false - - - ls /home/ops/.ssh -ansible-playbook -i ansible/inventories/dev/hosts ansible/logs.yml --extra-vars "service=secor user=analytics remote=secor app=secor sourcepath=/mount/secor/logs" --vault-password-file /home/ops/vault -#ansible-playbook -i ansible/inventories/dev/hosts ansible/logs.yml --extra-vars "service=learning user=learning remote=learningall app=data sourcepath=/data/logs" --vault-password-file /home/ops/vault - - - - - - - - xterm - - - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Spark_Logs/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Spark_Logs/config.xml deleted file mode 100644 index b003f31e52..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Spark_Logs/config.xml +++ /dev/null @@ -1,47 +0,0 @@ - - - - - false - - - 2 - - - https://github.com/ekstep/sunbird-devops.git - f37ad21f-744a-4817-9f5e-02f8ec620b39 - - - - - */DO-380 - - - false - - - - localhost-b5cf9b99 - false - false - false - false - - false - - - ls /home/ops/.ssh - - -ansible-playbook -i ansible/inventories/dev/hosts ansible/logs.yml --extra-vars "service=spark user=analytics remote=spark app=spark sourcepath=/mount/data/analytics/logs" --vault-password-file /home/ops/vault - - - - - - - - xterm - - - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_ActorService_Deploy_Dev/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_ActorService_Deploy_Dev/config.xml deleted file mode 100644 index 0e2d37ad1b..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_ActorService_Deploy_Dev/config.xml +++ /dev/null @@ -1,42 +0,0 @@ - - - - Deploys Actor Service to DEV environment - false - - - - 10 - 10 - -1 - -1 - - - - - - - - - 2 - - - https://github.com/ekstep/sunbird-devops.git - f37ad21f-744a-4817-9f5e-02f8ec620b39 - - - - - */release-1.6 - - - false - - - - pipelines/sunbird-actor-service/Jenkinsfile.dev - true - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Auth_Config_Build/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Auth_Config_Build/config.xml deleted file mode 100644 index f48d07edf0..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Auth_Config_Build/config.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - false - - - - - - - - 2 - - - https://github.com/ekstep/sunbird-devops.git - f37ad21f-744a-4817-9f5e-02f8ec620b39 - - - - - */release-1.8 - - - false - - - - pipelines/sunbird-auth-build/JenkinsfileConfig.dev - true - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Auth_Config_Deploy/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Auth_Config_Deploy/config.xml deleted file mode 100644 index e5ffb7100e..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Auth_Config_Deploy/config.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - false - - - - - - - - 2 - - - https://github.com/ekstep/sunbird-devops.git - f37ad21f-744a-4817-9f5e-02f8ec620b39 - - - - - */release-1.8 - - - false - - - - pipelines/sunbird-auth-deploy/JenkinsfileDeployConfig.dev - true - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Auth_Deploy/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Auth_Deploy/config.xml deleted file mode 100644 index efa00c6718..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Auth_Deploy/config.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - false - - - - - - - - 2 - - - https://github.com/ekstep/sunbird-devops.git - f37ad21f-744a-4817-9f5e-02f8ec620b39 - - - - - */release-1.8 - - - false - - - - pipelines/sunbird-auth-deploy/Jenkinsfile.dev - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Auth_Deploy_Backup_job/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Auth_Deploy_Backup_job/config.xml deleted file mode 100644 index 95aef8431a..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Auth_Deploy_Backup_job/config.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - false - - - - - - - - 2 - - - https://github.com/ahghatol/sunbird-auth.git - f37ad21f-744a-4817-9f5e-02f8ec620b39 - - - - - */master - - - false - - - - keycloak/scripts/pipelines/keycloak-deploy/Jenkinsfile.dev - true - - - true - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Badger_Deploy/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Badger_Deploy/config.xml deleted file mode 100644 index a4715c09c8..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Badger_Deploy/config.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - false - - - - - - - - 2 - - - https://github.com/ekstep/sunbird-devops.git - f37ad21f-744a-4817-9f5e-02f8ec620b39 - - - - - */release-1.11 - - - false - - - - pipelines/sunbird-badger/Jenkinsfile.dev - true - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Cassandra_Backup_Dev/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Cassandra_Backup_Dev/config.xml deleted file mode 100644 index e9912c15f7..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Cassandra_Backup_Dev/config.xml +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - - hudson.triggers.TimerTrigger - - - - - - - false - - - - - @midnight - - - - - - - 2 - - - https://github.com/ekstep/sunbird-devops.git - f37ad21f-744a-4817-9f5e-02f8ec620b39 - - - - - */release-1.10 - - - false - - - - pipelines/cassandra-backup/Jenkinsfile.dev - true - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Cassandra_Backup_Test/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Cassandra_Backup_Test/config.xml deleted file mode 100644 index 0b9f4d742f..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Cassandra_Backup_Test/config.xml +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - - hudson.triggers.TimerTrigger - - - - - - - false - - - - - @midnight - - - - - - - 2 - - - https://github.com/ekstep/sunbird-devops.git - f37ad21f-744a-4817-9f5e-02f8ec620b39 - - - - - */release-1.5 - - - false - - - - pipelines/cassandra-backup/Jenkinsfile.dev - true - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Cassandra_CQL_Restore/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Cassandra_CQL_Restore/config.xml deleted file mode 100644 index eba5d59b1f..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Cassandra_CQL_Restore/config.xml +++ /dev/null @@ -1,50 +0,0 @@ - - - - - false - - - - - tags - - - - cql - pagemanagement - pagesection - content_service - - - - - - - - - - - - 2 - - - https://github.com/ekstep/sunbird-devops.git - f37ad21f-744a-4817-9f5e-02f8ec620b39 - - - - - */release-1.5 - - - false - - - - pipelines/cassandra_cql_restore/Jenkinsfile.dev - true - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Cassandra_Deploy/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Cassandra_Deploy/config.xml deleted file mode 100644 index 9483c84371..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Cassandra_Deploy/config.xml +++ /dev/null @@ -1,42 +0,0 @@ - - - - Deploys Player to DEV environment - false - - - - 3 - 4 - -1 - -1 - - - - - - - - - 2 - - - https://github.com/ekstep/sunbird-devops.git - f37ad21f-744a-4817-9f5e-02f8ec620b39 - - - - - */release-1.13 - - - false - - - - pipelines/cassandra-deploy/Jenkinsfile.dev - true - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Cassandra_Provision/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Cassandra_Provision/config.xml deleted file mode 100644 index 6ab2ab498e..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Cassandra_Provision/config.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - false - - - - - - - - 2 - - - https://github.com/ekstep/sunbird-devops.git - f37ad21f-744a-4817-9f5e-02f8ec620b39 - - - - - */migration - - - false - - - - pipelines/cassandra/Jenkinsfile.dev - true - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Cassandra_Restore_Dev/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Cassandra_Restore_Dev/config.xml deleted file mode 100644 index 946e19cb78..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Cassandra_Restore_Dev/config.xml +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - org.jenkinsci.plugins.workflow.job.properties.PipelineTriggersJobProperty - - - - - false - - - - - snapshot - time - - false - - - - - - - - - - 2 - - - https://github.com/ekstep/sunbird-devops.git - f37ad21f-744a-4817-9f5e-02f8ec620b39 - - - - - */release-1.5 - - - false - - - - pipelines/cassandra-restore/Jenkinsfile.dev - true - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_ConfigService_Deploy_Dev/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_ConfigService_Deploy_Dev/config.xml deleted file mode 100644 index 042222a99a..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_ConfigService_Deploy_Dev/config.xml +++ /dev/null @@ -1,42 +0,0 @@ - - - - Deploys Config Service to DEV environment - false - - - - 10 - 10 - -1 - -1 - - - - - - - - - 2 - - - https://github.com/ekstep/sunbird-devops.git - f37ad21f-744a-4817-9f5e-02f8ec620b39 - - - - - */release-1.13 - - - false - - - - pipelines/sunbird-config-service/Jenkinsfile.dev - true - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_ContentService_Deploy_Dev/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_ContentService_Deploy_Dev/config.xml deleted file mode 100644 index 43af988f68..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_ContentService_Deploy_Dev/config.xml +++ /dev/null @@ -1,42 +0,0 @@ - - - - Deploys Content Service to DEV environment - false - - - - 10 - 10 - -1 - -1 - - - - - - - - - 2 - - - https://github.com/ekstep/sunbird-devops.git - f37ad21f-744a-4817-9f5e-02f8ec620b39 - - - - - */release-1.13 - - - false - - - - pipelines/sunbird-content-service/Jenkinsfile.dev - true - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Docker_Reset/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Docker_Reset/config.xml deleted file mode 100644 index c7abd1cf58..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Docker_Reset/config.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - false - - - - - - - - 2 - - - https://github.com/ekstep/sunbird-devops.git - f37ad21f-744a-4817-9f5e-02f8ec620b39 - - - - - */release-1.5 - - - false - - - - pipelines/reset-docker/Jenkinsfile.dev - true - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Ed_Player_Deploy/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Ed_Player_Deploy/config.xml deleted file mode 100644 index f16c9ce10f..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Ed_Player_Deploy/config.xml +++ /dev/null @@ -1,73 +0,0 @@ - - - - - false - - - - - private_repo_branch - - release-1.13 - false - - - metadataFile - - - false - - - private_credentials - - f37ad21f-744a-4817-9f5e-02f8ec620b39 - false - - - image_tag - - - false - - - - - - - - ../Artifacts_Repo - - SUCCESS - 0 - BLUE - true - - - - - - - - 2 - - - https://github.com/ekstep/sunbird-devops.git - 64bdfe13-cc30-4864-bd3c-4e89be89fc9d - - - - - */release-1.13 - - - false - - - - pipelines/deploy/player/Jenkinsfile.deploy - true - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Functional_Test_Cases/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Functional_Test_Cases/config.xml deleted file mode 100644 index 720b6a8bad..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Functional_Test_Cases/config.xml +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - - - - - - - - false - - - - - H 23 * * * - - - - - - -1 - 15 - -1 - -1 - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-functional-tests.git - f37ad21f-744a-4817-9f5e-02f8ec620b39 - - - - - */release-1.14 - - - false - - - - Jenkinsfile - true - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_LearnerService_Deploy_Dev/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_LearnerService_Deploy_Dev/config.xml deleted file mode 100644 index d64674949a..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_LearnerService_Deploy_Dev/config.xml +++ /dev/null @@ -1,42 +0,0 @@ - - - - Deploys Learner Service to DEV environment - false - - - - 10 - 10 - -1 - -1 - - - - - - - - - 2 - - - https://github.com/ekstep/sunbird-devops.git - f37ad21f-744a-4817-9f5e-02f8ec620b39 - - - - - */release-1.13 - - - false - - - - pipelines/sunbird-learner-service/Jenkinsfile.dev - true - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Player_Deploy_Dev/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Player_Deploy_Dev/config.xml deleted file mode 100644 index 117eeed4f1..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Player_Deploy_Dev/config.xml +++ /dev/null @@ -1,42 +0,0 @@ - - - - Deploys Player to DEV environment - false - - - - 3 - 4 - -1 - -1 - - - - - - - - - 2 - - - https://github.com/ekstep/sunbird-devops.git - f37ad21f-744a-4817-9f5e-02f8ec620b39 - - - - - */release-1.13 - - - false - - - - pipelines/sunbird-player/Jenkinsfile.dev - true - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Provision_Kafka_Dev/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Provision_Kafka_Dev/config.xml deleted file mode 100644 index 286c59bf99..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Provision_Kafka_Dev/config.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - false - - - - - - - - 2 - - - https://github.com/ekstep/sunbird-devops.git - f37ad21f-744a-4817-9f5e-02f8ec620b39 - - - - - */release-1.8 - - - false - - - - pipelines/provision-kafka/Jenkinsfile.dev - true - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Provision_Secor_Dev/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Provision_Secor_Dev/config.xml deleted file mode 100644 index 07fe3f7962..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Provision_Secor_Dev/config.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - false - - - - - - - - 2 - - - https://github.com/ekstep/sunbird-devops.git - f37ad21f-744a-4817-9f5e-02f8ec620b39 - - - - - */release-1.7.1 - - - false - - - - pipelines/provision-secor/Jenkinsfile.dev - true - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Registry_Deploy_Dev/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Registry_Deploy_Dev/config.xml deleted file mode 100644 index ed80aad624..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Registry_Deploy_Dev/config.xml +++ /dev/null @@ -1,42 +0,0 @@ - - - - Deploys Player to DEV environment - false - - - - 3 - 4 - -1 - -1 - - - - - - - - - 2 - - - https://github.com/ekstep/sunbird-devops.git - f37ad21f-744a-4817-9f5e-02f8ec620b39 - - - - - */release-1.11 - - - false - - - - pipelines/sunbird-registry/Jenkinsfile.dev - true - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_TelemetryService_Deploy_Dev/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_TelemetryService_Deploy_Dev/config.xml deleted file mode 100644 index 9cdb3c7dfc..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_TelemetryService_Deploy_Dev/config.xml +++ /dev/null @@ -1,42 +0,0 @@ - - - - Deploys Telemetry Service to DEV environment - false - - - - 10 - 10 - -1 - -1 - - - - - - - - - 2 - - - https://github.com/ekstep/sunbird-devops.git - f37ad21f-744a-4817-9f5e-02f8ec620b39 - - - - - */release-1.13 - - - false - - - - pipelines/sunbird-telemetry-service/Jenkinsfile.dev - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Telemetry_Logstash_Datapipeline_Deploy_Dev/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Telemetry_Logstash_Datapipeline_Deploy_Dev/config.xml deleted file mode 100644 index b093e2ecde..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Telemetry_Logstash_Datapipeline_Deploy_Dev/config.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - Deploys Telemetry Logstash Datapipeline Service to DEV environment - false - - - - - - - - 2 - - - https://github.com/ekstep/sunbird-devops.git - f37ad21f-744a-4817-9f5e-02f8ec620b39 - - - - - */release-1.13 - - - false - - - - pipelines/telemetry-logstash-datapipeline/Jenkinsfile.dev - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Telemetry_Logstash_Deploy_Dev/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Telemetry_Logstash_Deploy_Dev/config.xml deleted file mode 100644 index 7c3b8c9b6d..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Sunbird_Telemetry_Logstash_Deploy_Dev/config.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - Deploys Telemetry Logstash Service to DEV environment - false - - - - - - - - 2 - - - https://github.com/ekstep/sunbird-devops.git - f37ad21f-744a-4817-9f5e-02f8ec620b39 - - - - - */release-1.13 - - - false - - - - pipelines/telemetry-logstash/Jenkinsfile.dev - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Swarm_Agent_Docker_Prune/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Swarm_Agent_Docker_Prune/config.xml deleted file mode 100644 index 44427fc856..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Swarm_Agent_Docker_Prune/config.xml +++ /dev/null @@ -1,55 +0,0 @@ - - - - - - - hudson.triggers.TimerTrigger - - - - - - - false - - - - - @midnight - - - - - - -1 - -1 - -1 - -1 - - - - - - 2 - - - https://github.com/ekstep/sunbird-devops.git - f37ad21f-744a-4817-9f5e-02f8ec620b39 - - - - - */release-1.5 - - - false - - - - pipelines/swarm-agent-docker-prune/Jenkinsfile.dev - true - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Swarm_Bootstrap/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Swarm_Bootstrap/config.xml deleted file mode 100644 index 6ecab082e2..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Swarm_Bootstrap/config.xml +++ /dev/null @@ -1,46 +0,0 @@ - - - - - false - - - - - env - please give your env name to be bootstrapped - -eg: dev, incase `ansible/inventories/swarm-bootstrap/hosts` have dev-swarm-manager - dev - false - - - - - - - - - - 2 - - - https://github.com/ekstep/sunbird-devops.git - f37ad21f-744a-4817-9f5e-02f8ec620b39 - - - - - */release-1.11 - - - false - - - - pipelines/sunbird-bootstrap/Jenkinsfile.swarm.dev - true - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Yarn_Logs/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Yarn_Logs/config.xml deleted file mode 100644 index 54f0ea5e81..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/Yarn_Logs/config.xml +++ /dev/null @@ -1,47 +0,0 @@ - - - - - false - - - 2 - - - https://github.com/ekstep/sunbird-devops.git - f37ad21f-744a-4817-9f5e-02f8ec620b39 - - - - - */DO-380 - - - false - - - - localhost-b5cf9b99 - false - false - false - false - - false - - - ls /home/ops/.ssh - -ansible-playbook -i ansible/inventories/dev/hosts ansible/yarn_application.yml --vault-password-file /home/ops/vault -ansible-playbook -i ansible/inventories/dev/hosts ansible/logs.yml --extra-vars "service=dp-yarn-slave user=ecosystem remote=dp-yarn-slave app=yarn sourcepath=/usr/local/hadoop/logs/userlogs" --vault-password-file /home/ops/vault - - - - - - - - xterm - - - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/azure-cli/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/azure-cli/config.xml deleted file mode 100644 index 24b552e2bb..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/azure-cli/config.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - false - - - - - - - - 2 - - - https://github.com/ekstep/sunbird-devops.git - f37ad21f-744a-4817-9f5e-02f8ec620b39 - - - - - */release-1.9 - - - false - - - - pipelines/sunbird-bootstrap/Jenkinsfile.analyticsep.dev - true - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/cassandra complete backup dev/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/cassandra complete backup dev/config.xml deleted file mode 100644 index 144a512f14..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/cassandra complete backup dev/config.xml +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - - hudson.triggers.TimerTrigger - - - - - - Complete cassandra node backup to restore a fresh installation - false - - - - - @midnight - - - - - - - 2 - - - https://github.com/ekstep/sunbird-devops.git - f37ad21f-744a-4817-9f5e-02f8ec620b39 - - - - - */release-1.13 - - - false - - - - pipelines/cassandra-backup/Jenkinsfile.dev - true - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/docker-version-upgrade/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/docker-version-upgrade/config.xml deleted file mode 100644 index 0a1d2816fc..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/docker-version-upgrade/config.xml +++ /dev/null @@ -1,46 +0,0 @@ - - - - - - - - - - - - false - - - - 10 - 10 - -1 - -1 - - - - - - 2 - - - https://github.com/ekstep/sunbird-devops.git - f37ad21f-744a-4817-9f5e-02f8ec620b39 - - - - - */release-1.8 - - - false - - - - pipelines/docker-version-upgrade/Jenkinsfile.dev - true - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/hostname/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/hostname/config.xml deleted file mode 100644 index 80ff3de209..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/hostname/config.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - false - - - 10.6.0.6-5358553b - false - false - false - false - - false - - - hostname -i - - - - - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/player_all/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/player_all/config.xml deleted file mode 100644 index 6c906c1003..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/player_all/config.xml +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - hudson.triggers.TimerTrigger - - - - - - Uploads to CDN and Deploys player service - false - - - - -1 - 10 - -1 - -1 - - - - - - portal_git_branch - - release-1.13 - false - - - cdn - - https://dev-sunbird-temp.azureedge.net/player/ - false - - - - - - - - - - 2 - - - https://github.com/ekstep/sunbird-devops.git - f37ad21f-744a-4817-9f5e-02f8ec620b39 - - - - - */release-1.13 - - - false - - - - pipelines/player-all/Jenkinsfile.dev - true - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/tenant_cdn_upload/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/tenant_cdn_upload/config.xml deleted file mode 100644 index a59bbbebd3..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/tenant_cdn_upload/config.xml +++ /dev/null @@ -1,50 +0,0 @@ - - - - - false - - - - - branch - - release-1.9 - false - - - cdn - - https://dev-sunbird-temp.azureedge.net - false - - - - - - - - - - 2 - - - https://github.com/ekstep/sunbird-devops.git - f37ad21f-744a-4817-9f5e-02f8ec620b39 - - - - - */release-1.9 - - - false - - - - pipelines/tenant-cdn-upload/Jenkinsfile.dev - true - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/yo/config.xml b/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/yo/config.xml deleted file mode 100644 index 2ac977950d..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/Deploy/jobs/Dev/jobs/yo/config.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/New_Azure_Infra/config.xml b/deploy/jenkins/jobs/Other/jobs/New_Azure_Infra/config.xml deleted file mode 100644 index fa2413312f..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/New_Azure_Infra/config.xml +++ /dev/null @@ -1,64 +0,0 @@ - - - - - - - - - LOCATION - RESOURCE_GROUP_NAME - - - - - - false - - - - - RESOURCE_GROUP_NAME - Resource Group - - false - - - LOCATION - Transit Hub to connect to. - - CentralIndia - SouthIndia - - - - - - false - false - - - - - 2 - - - https://github.com/ekstep/sunbird-devops.git - 64bdfe13-cc30-4864-bd3c-4e89be89fc9d - - - - - */azure_infra - - - false - - - - pipelines/terraform/Jenkinsfile-azure - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Other/jobs/testjob/config.xml b/deploy/jenkins/jobs/Other/jobs/testjob/config.xml deleted file mode 100644 index 218d6d3365..0000000000 --- a/deploy/jenkins/jobs/Other/jobs/testjob/config.xml +++ /dev/null @@ -1,44 +0,0 @@ - - - - - false - - - false - false - - - - - artifact_source - - ArtifactRepo - false - - - build_number - - - false - - - - - - false - project - false - - - - - - true - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Release/config.xml b/deploy/jenkins/jobs/Release/config.xml deleted file mode 100644 index 68477b8ac7..0000000000 --- a/deploy/jenkins/jobs/Release/config.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - - - - - - All - false - false - - - - - - - - false - - - - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Release/jobs/startRelease/config.xml b/deploy/jenkins/jobs/Release/jobs/startRelease/config.xml deleted file mode 100644 index 4160c8a7fd..0000000000 --- a/deploy/jenkins/jobs/Release/jobs/startRelease/config.xml +++ /dev/null @@ -1,64 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - false - false - - - - - releaseBranch - <font color=teal size=2>Release Branch name to create</font> - - true - - - gitCredentialId - - - false - - - - - - false - project - false - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops - - - - - */DO-384 - - - false - - - - pipelines/release/Jenkinsfile.start - true - - - false - \ No newline at end of file From 4ea719fb894bbfadec0f1f81a5dc4e61c051edee Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Fri, 22 Feb 2019 12:41:07 +0530 Subject: [PATCH 1202/1345] Issue #000 feat: Deleted ekstep_domain_name --- private_repo/ansible/inventory/dev/DataPipeline/common.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/private_repo/ansible/inventory/dev/DataPipeline/common.yml b/private_repo/ansible/inventory/dev/DataPipeline/common.yml index 3349bf674c..bd03ee5a0e 100644 --- a/private_repo/ansible/inventory/dev/DataPipeline/common.yml +++ b/private_repo/ansible/inventory/dev/DataPipeline/common.yml @@ -4,7 +4,6 @@ env: proto: domain_name: -ekstep_domain_name: ssh_public_key_deployer: bootstrap_user: bootstrap_key_path: From a7b6fbe9010de644c12067058d8dc4cbd591ac4f Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Fri, 22 Feb 2019 13:10:55 +0530 Subject: [PATCH 1203/1345] Issue #000 feat: Added content-service-log level var --- ansible/roles/stack-sunbird/defaults/main.yml | 3 +++ ansible/roles/stack-sunbird/templates/sunbird_player.env | 2 ++ 2 files changed, 5 insertions(+) diff --git a/ansible/roles/stack-sunbird/defaults/main.yml b/ansible/roles/stack-sunbird/defaults/main.yml index 4855632f31..7bc56fb11b 100644 --- a/ansible/roles/stack-sunbird/defaults/main.yml +++ b/ansible/roles/stack-sunbird/defaults/main.yml @@ -85,3 +85,6 @@ telemetry_kafka_topic: encryption_replicas: 1 encryption_reservation_memory: "256M" encryption_limit_memory: "512M" + +# Content-service +sunbird_content_service_log_level: info diff --git a/ansible/roles/stack-sunbird/templates/sunbird_player.env b/ansible/roles/stack-sunbird/templates/sunbird_player.env index a4d14e70c6..7a895f1d94 100644 --- a/ansible/roles/stack-sunbird/templates/sunbird_player.env +++ b/ansible/roles/stack-sunbird/templates/sunbird_player.env @@ -48,3 +48,5 @@ sunbird_help_link_visibility={{sunbird_help_link_visibility|default('FALSE')}} sunbird_azure_report_container_name={{sunbird_azure_report_container_name}} sunbird_azure_account_name={{sunbird_azure_account_name}} sunbird_azure_account_key={{sunbird_azure_storage_key}} +sunbird_content_service_log_level={{sunbird_content_service_log_level}} + From caeaa3ea2829e9481f39b9b424a9a4e33d7aa1d8 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Fri, 22 Feb 2019 13:27:54 +0530 Subject: [PATCH 1204/1345] Issue #000 feat: Adding sunbird_response_cache_ttl --- ansible/roles/stack-sunbird/defaults/main.yml | 1 + ansible/roles/stack-sunbird/templates/sunbird_player.env | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/ansible/roles/stack-sunbird/defaults/main.yml b/ansible/roles/stack-sunbird/defaults/main.yml index 7bc56fb11b..792ee717e9 100644 --- a/ansible/roles/stack-sunbird/defaults/main.yml +++ b/ansible/roles/stack-sunbird/defaults/main.yml @@ -88,3 +88,4 @@ encryption_limit_memory: "512M" # Content-service sunbird_content_service_log_level: info +sunbird_response_cache_ttl: 180 diff --git a/ansible/roles/stack-sunbird/templates/sunbird_player.env b/ansible/roles/stack-sunbird/templates/sunbird_player.env index 7a895f1d94..8d00146983 100644 --- a/ansible/roles/stack-sunbird/templates/sunbird_player.env +++ b/ansible/roles/stack-sunbird/templates/sunbird_player.env @@ -49,4 +49,4 @@ sunbird_azure_report_container_name={{sunbird_azure_report_container_name}} sunbird_azure_account_name={{sunbird_azure_account_name}} sunbird_azure_account_key={{sunbird_azure_storage_key}} sunbird_content_service_log_level={{sunbird_content_service_log_level}} - +sunbird_response_cache_ttl={{sunbird_response_cache_ttl}} From eae9baa21fd52f08a6149464625c7d65f749db17 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Fri, 22 Feb 2019 13:32:45 +0530 Subject: [PATCH 1205/1345] Issue #000 feat: Moved content-service log level var to content-service --- .../roles/stack-sunbird/templates/sunbird_content-service.env | 2 ++ ansible/roles/stack-sunbird/templates/sunbird_player.env | 1 - 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/ansible/roles/stack-sunbird/templates/sunbird_content-service.env b/ansible/roles/stack-sunbird/templates/sunbird_content-service.env index 323777b2d1..b89d063219 100644 --- a/ansible/roles/stack-sunbird/templates/sunbird_content-service.env +++ b/ansible/roles/stack-sunbird/templates/sunbird_content-service.env @@ -45,3 +45,5 @@ sunbird_qrimage_topic={{sunbird_qrimage_topic}} #Release-1.13 sunbird_lock_expiry_time={{sunbird_lock_expiry_time}} +# Release-1.14 +sunbird_content_service_log_level={{sunbird_content_service_log_level}} diff --git a/ansible/roles/stack-sunbird/templates/sunbird_player.env b/ansible/roles/stack-sunbird/templates/sunbird_player.env index 8d00146983..fa05f571ca 100644 --- a/ansible/roles/stack-sunbird/templates/sunbird_player.env +++ b/ansible/roles/stack-sunbird/templates/sunbird_player.env @@ -48,5 +48,4 @@ sunbird_help_link_visibility={{sunbird_help_link_visibility|default('FALSE')}} sunbird_azure_report_container_name={{sunbird_azure_report_container_name}} sunbird_azure_account_name={{sunbird_azure_account_name}} sunbird_azure_account_key={{sunbird_azure_storage_key}} -sunbird_content_service_log_level={{sunbird_content_service_log_level}} sunbird_response_cache_ttl={{sunbird_response_cache_ttl}} From 7e1df8f523abc2ddf328429fac21cb6b8c56732a Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Fri, 22 Feb 2019 15:44:50 +0530 Subject: [PATCH 1206/1345] Issue #000 feat: Removed duplicate var --- ansible/inventory/env/group_vars/all.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/ansible/inventory/env/group_vars/all.yml b/ansible/inventory/env/group_vars/all.yml index 966cb427fb..c796bc278f 100644 --- a/ansible/inventory/env/group_vars/all.yml +++ b/ansible/inventory/env/group_vars/all.yml @@ -71,7 +71,6 @@ backup_storage_key: "{{core_vault_sunbird_azure_storage_key}}" sunbird_account_name: "{{core_vault_sunbird_azure_storage_account}}" sunbird_account_key: "{{core_vault_sunbird_azure_storage_key}}" ansible_vault_password: "{{ core_vault_ansible_vault_password }}" -sunbird_account_name: "{{core_vault_sunbird_azure_storage_account}}" sunbird_azure_account_name: "{{core_vault_sunbird_azure_storage_account}}" jenkins_admin_username: "{{core_vault_jenkins_admin_username}}" jenkins_admin_password: "{{core_vault_jenkins_admin_password}}" From cd12903870660405e97a15e25c93f42be9e71b00 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Fri, 22 Feb 2019 16:01:16 +0530 Subject: [PATCH 1207/1345] Issue #000 feat: Changed vault_storage_azure_name with azure_account_name --- ansible/inventory/env/group_vars/all.yml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/ansible/inventory/env/group_vars/all.yml b/ansible/inventory/env/group_vars/all.yml index c796bc278f..0b1a7eb380 100644 --- a/ansible/inventory/env/group_vars/all.yml +++ b/ansible/inventory/env/group_vars/all.yml @@ -66,12 +66,12 @@ enc_postgres_user: "{{core_vault_postgres_username}}" analytics_postgres_user: "{{core_vault_postgres_username}}" badger_postgres_user: "{{core_vault_postgres_username}}" postgres_password: "{{ core_vault_postgres_password }}" #Password for Kong (API Manager) database. -backup_storage_account: "{{core_vault_sunbird_azure_storage_account}}" +backup_storage_account: "{{azure_account_name}}" backup_storage_key: "{{core_vault_sunbird_azure_storage_key}}" -sunbird_account_name: "{{core_vault_sunbird_azure_storage_account}}" +sunbird_account_name: "{{azure_account_name}}" sunbird_account_key: "{{core_vault_sunbird_azure_storage_key}}" ansible_vault_password: "{{ core_vault_ansible_vault_password }}" -sunbird_azure_account_name: "{{core_vault_sunbird_azure_storage_account}}" +sunbird_azure_account_name: "{{azure_account_name}}" jenkins_admin_username: "{{core_vault_jenkins_admin_username}}" jenkins_admin_password: "{{core_vault_jenkins_admin_password}}" vault_badging_authorization_key: "{{core_vault_badging_authorization_key}}" @@ -139,7 +139,7 @@ cassandra_port: 9042 cassandra_rpc_address: 0.0.0.0 cassandra_restore_dir: /home/deployer/ cassandra_backup_azure_container_name: cassandra-backup -cassandra_backup_azure_storage_account_name: "{{ core_vault_sunbird_azure_storage_account }}" +cassandra_backup_azure_storage_account_name: "{{azure_account_name}}" cassandra_backup_azure_storage_access_key: "{{backup_storage_key}}" cassandra_backup_dir: /data/cassandra/backup @@ -170,7 +170,7 @@ sunbird_cache_ttl: "{{config_cache_ttl}}" sunbird_portal_title_name: portal sunbird_web_url: "{{proto}}://{{ proxy_server_name }}" sunbird_sso_publickey: "{{core_vault_sunbird_sso_publickey}}" -sunbird_azure_storage_account: "{{core_vault_sunbird_azure_storage_account}}" +sunbird_azure_storage_account: "{{azure_account_name}}" sunbird_azure_storage_key: "{{core_vault_sunbird_azure_storage_key}}" sunbird_app_url: sunbird_fcm_account_key: "{{core_vault_sunbird_fcm_account_key}}" @@ -271,9 +271,9 @@ sunbird_cs_base_url: "{{proto}}://{{proxy_server_name}}/api" kong_admin_api_url: http://localhost:8001 #kong_admin_api_url: manager -postgresql_backup_azure_storage_account_name: "{{ core_vault_sunbird_azure_storage_account }}" +postgresql_backup_azure_storage_account_name: "{{azure_account_name}}" postgresql_backup_azure_storage_access_key: "{{ backup_storage_key }}" -postgresql_restore_azure_storage_account_name: "{{ core_vault_sunbird_azure_storage_account }}" +postgresql_restore_azure_storage_account_name: "{{azure_account_name}}" postgresql_restore_azure_storage_access_key: "{{ backup_storage_key }}" grafana_url: "{{proto}}://{{proxy_server_name}}/grafana" @@ -328,7 +328,7 @@ sunbird_tenant_cdn_url: "" # sunbird_cdn_url player_cdn_account_key: "{{core_vault_sunbird_azure_storage_key}}" player_cdn_container: player -player_cdn_account: "{{ core_vault_sunbird_azure_storage_account }}" +player_cdn_account: "{{azure_account_name}}" #Additional Variables From 1331490ce9ada833029fd1c9a31ad78d4d351e5e Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Fri, 22 Feb 2019 16:34:26 +0530 Subject: [PATCH 1208/1345] Issue #000 feat: Removed config_cache_ttl var --- ansible/roles/stack-sunbird/defaults/main.yml | 1 - ansible/roles/stack-sunbird/templates/sunbird_player.env | 1 - 2 files changed, 2 deletions(-) diff --git a/ansible/roles/stack-sunbird/defaults/main.yml b/ansible/roles/stack-sunbird/defaults/main.yml index a42144e572..e17ae6c021 100644 --- a/ansible/roles/stack-sunbird/defaults/main.yml +++ b/ansible/roles/stack-sunbird/defaults/main.yml @@ -90,5 +90,4 @@ encryption_limit_memory: "512M" sunbird_keycloak_required_action_link_expiration_seconds: 2592000 # Player -config_cache_ttl: 600 sunbird_config_service_url: '' # About to be deprecated diff --git a/ansible/roles/stack-sunbird/templates/sunbird_player.env b/ansible/roles/stack-sunbird/templates/sunbird_player.env index a4d14e70c6..6d92e80a23 100644 --- a/ansible/roles/stack-sunbird/templates/sunbird_player.env +++ b/ansible/roles/stack-sunbird/templates/sunbird_player.env @@ -30,7 +30,6 @@ sunbird_enable_signup={{sunbird_enable_signup}} sunbird_tenant_cdn_url={{sunbird_tenant_cdn_url}} sunbird_cloud_storage_urls={{sunbird_cloud_storage_urls}} sunbird_config_service_url={{sunbird_config_service_url}} -config_cache_ttl={{config_cache_ttl}} sunbird_portal_user_upload_ref_link={{sunbird_portal_user_upload_ref_link}} sunbird_build_number={{sunbird_build_number}} config_service_enabled={{config_service_enabled}} From 090ba986f9c4a63f0be240e9566a63c5ebc2be2b Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Fri, 22 Feb 2019 16:35:24 +0530 Subject: [PATCH 1209/1345] Issue #000 feat: Removed config_cache_ttl --- ansible/inventory/env/group_vars/all.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/ansible/inventory/env/group_vars/all.yml b/ansible/inventory/env/group_vars/all.yml index 0b1a7eb380..df4b57b788 100644 --- a/ansible/inventory/env/group_vars/all.yml +++ b/ansible/inventory/env/group_vars/all.yml @@ -166,7 +166,6 @@ sunbird_session_store_type: cassandra sunbird_keycloak_client_id: 'portal' sunbird_keycloak_public: true sunbird_cache_store: "memory" -sunbird_cache_ttl: "{{config_cache_ttl}}" sunbird_portal_title_name: portal sunbird_web_url: "{{proto}}://{{ proxy_server_name }}" sunbird_sso_publickey: "{{core_vault_sunbird_sso_publickey}}" From be47a83f8ca89884494994d1bcf0f2144e4e289f Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Fri, 22 Feb 2019 16:40:02 +0530 Subject: [PATCH 1210/1345] Issue #000 feat: Adding default value for sunbird_cache_ttl --- ansible/roles/stack-sunbird/defaults/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/stack-sunbird/defaults/main.yml b/ansible/roles/stack-sunbird/defaults/main.yml index e17ae6c021..154ad5e9bd 100644 --- a/ansible/roles/stack-sunbird/defaults/main.yml +++ b/ansible/roles/stack-sunbird/defaults/main.yml @@ -8,7 +8,7 @@ sunbird_keycloak_realm: sunbird_keycloak_clientId: sunbird_keycloak_public: sunbird_cache_store: -sunbird_cache_ttl: +sunbird_cache_ttl: 1800 sunbird_es_port: 9300 actor_replicas: 1 actor_reservation_memory: 768M From a142190b27d0cd0239b7e12ffa49c0b9ddf90f80 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Fri, 22 Feb 2019 16:40:02 +0530 Subject: [PATCH 1211/1345] Issue #000 feat: Adding default value for sunbird_cache_ttl --- ansible/inventory/env/group_vars/all.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/ansible/inventory/env/group_vars/all.yml b/ansible/inventory/env/group_vars/all.yml index df4b57b788..e4e1723edd 100644 --- a/ansible/inventory/env/group_vars/all.yml +++ b/ansible/inventory/env/group_vars/all.yml @@ -184,7 +184,6 @@ application_postgres_database: quartz keycloak_postgres_database: keycloak keyclaok_deployer_sudo_pass: "{{core_vault_keyclaok_deployer_sudo_pass}}" keycloak_password: "{{core_vault_keycloak_password}}" -config_cache_ttl: 600 #Content Service Vars sunbird_content_repo_api_base_url: "http://{{learningservice_ip}}:8080/learning-service" From cc1095c4b672cee83e573e415d5d39593de67b1c Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Fri, 22 Feb 2019 16:57:28 +0530 Subject: [PATCH 1212/1345] Issue #000 feat: Removing portal title name from all.yml --- ansible/inventory/env/group_vars/all.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/ansible/inventory/env/group_vars/all.yml b/ansible/inventory/env/group_vars/all.yml index e4e1723edd..e92e4fa014 100644 --- a/ansible/inventory/env/group_vars/all.yml +++ b/ansible/inventory/env/group_vars/all.yml @@ -166,7 +166,6 @@ sunbird_session_store_type: cassandra sunbird_keycloak_client_id: 'portal' sunbird_keycloak_public: true sunbird_cache_store: "memory" -sunbird_portal_title_name: portal sunbird_web_url: "{{proto}}://{{ proxy_server_name }}" sunbird_sso_publickey: "{{core_vault_sunbird_sso_publickey}}" sunbird_azure_storage_account: "{{azure_account_name}}" From 478f150bd7722b8b8c9e1fe03799968adbaf9900 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Fri, 22 Feb 2019 17:09:35 +0530 Subject: [PATCH 1213/1345] Issue #000 feat: Adding default value for portal_title_name --- ansible/inventory/env/group_vars/all.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/ansible/inventory/env/group_vars/all.yml b/ansible/inventory/env/group_vars/all.yml index e92e4fa014..17ce5becb7 100644 --- a/ansible/inventory/env/group_vars/all.yml +++ b/ansible/inventory/env/group_vars/all.yml @@ -166,6 +166,7 @@ sunbird_session_store_type: cassandra sunbird_keycloak_client_id: 'portal' sunbird_keycloak_public: true sunbird_cache_store: "memory" +sunbird_portal_title_name: "{{sunbird_app_name}}" sunbird_web_url: "{{proto}}://{{ proxy_server_name }}" sunbird_sso_publickey: "{{core_vault_sunbird_sso_publickey}}" sunbird_azure_storage_account: "{{azure_account_name}}" From a044880bfc157ff6629eaefd929346b1f92b8a3c Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Fri, 22 Feb 2019 17:51:11 +0530 Subject: [PATCH 1214/1345] Issue #000 feat: Rearranged proxy vars --- ansible/inventory/env/group_vars/all.yml | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/ansible/inventory/env/group_vars/all.yml b/ansible/inventory/env/group_vars/all.yml index 17ce5becb7..84f16d15c8 100644 --- a/ansible/inventory/env/group_vars/all.yml +++ b/ansible/inventory/env/group_vars/all.yml @@ -5,7 +5,13 @@ sunbird_content_service_producer_id: "{{env}}.sunbird.content-service" # ENVIRONMENT CONFIGURATION proxy_server_name: "{{domain_name}}" +keycloak_auth_server_url: "{{proto}}://{{ proxy_server_name }}/auth" +sunbird_echo_api_url: "{{proto}}://{{ proxy_server_name }}/api/echo/" +sunbird_web_url: "{{proto}}://{{ proxy_server_name }}" +sunbird_http_orgin: "{{proto}}://{{ proxy_server_name }}/badging" +sunbird_dataservice_url: "{{proto}}://{{ proxy_server_name }}/api/" api_proxy_name: "{{proto}}://api.{{proxy_server_name}}" # Domain name on which device register and other api's will be accessed + proxy_site_key: "{{ core_vault_proxy_site_key }}" #SSL certificate's site.key file contents. More details in this wiki: {{proto}}://github.com/project-sunbird/sunbird-commons/wiki/Updating-SSL-certificates-in-Sunbird-Proxy-service proxy_site_crt: "{{ core_vault_proxy_site_crt }}" #SSL certificate's site.crt file contents. More details in this wiki: {{proto}}://github.com/project-sunbird/sunbird-commons/wiki/Updating-SSL-certificates-in-Sunbird-Proxy-service sunbird_environment: "{{env}}" # +content-service learner @@ -144,7 +150,6 @@ cassandra_backup_azure_storage_access_key: "{{backup_storage_key}}" cassandra_backup_dir: /data/cassandra/backup -keycloak_auth_server_url: "{{proto}}://{{ proxy_server_name }}/auth" keycloak_realm: sunbird sunbird_content_player_url: "http://api-manager_kong:8000/" sunbird_learner_player_url: "http://api-manager_kong:8000/" @@ -153,7 +158,6 @@ sunbird_portal_realm: sunbird sunbird_portal_auth_server_client: portal sunbird_trampoline_client_id: trampoline sunbird_appid: "{{env}}.sunbird.portal" -sunbird_echo_api_url: "{{proto}}://{{ proxy_server_name }}/api/echo/" sunbird_pg_db: quartz sunbird_pg_host: "{{ application_postgres_host }}" sunbird_pg_port: 5432 @@ -167,7 +171,6 @@ sunbird_keycloak_client_id: 'portal' sunbird_keycloak_public: true sunbird_cache_store: "memory" sunbird_portal_title_name: "{{sunbird_app_name}}" -sunbird_web_url: "{{proto}}://{{ proxy_server_name }}" sunbird_sso_publickey: "{{core_vault_sunbird_sso_publickey}}" sunbird_azure_storage_account: "{{azure_account_name}}" sunbird_azure_storage_key: "{{core_vault_sunbird_azure_storage_key}}" @@ -176,10 +179,8 @@ sunbird_fcm_account_key: "{{core_vault_sunbird_fcm_account_key}}" sunbird_env_logo_url: "{{proto}}://{{proxy_server_name}}/common/images/sunbird_logo.png" sunbird_msg_91_auth: "{{core_vault_msg_91_auth_key}}" sunbird_telemetry_pdata_id: "{{env}}.sunbird.learning.service" -sunbird_http_orgin: "{{proto}}://{{ proxy_server_name }}/badging" sunbird_encryption_key: "{{ core_vault_sunbird_encryption_key }}" #player_tenant_dir: -sunbird_dataservice_url: "{{proto}}://{{ proxy_server_name }}/api/" application_postgres_database: quartz keycloak_postgres_database: keycloak keyclaok_deployer_sudo_pass: "{{core_vault_keyclaok_deployer_sudo_pass}}" From fe8fb229a1144b8c942bb1f93ac4f572242a930d Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Fri, 22 Feb 2019 17:53:52 +0530 Subject: [PATCH 1215/1345] Issue #000 feat: Removed deprecated var background_actor vars --- ansible/roles/stack-sunbird/defaults/main.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/ansible/roles/stack-sunbird/defaults/main.yml b/ansible/roles/stack-sunbird/defaults/main.yml index 154ad5e9bd..79ace0d7cf 100644 --- a/ansible/roles/stack-sunbird/defaults/main.yml +++ b/ansible/roles/stack-sunbird/defaults/main.yml @@ -54,9 +54,7 @@ sunbird_azure_storage_key: sunbird_container_name: sunbird_portal_cdn_url: sunbird_dataservice_url: -sunbird_background_actor_host: sunbird_background_actor_port: -sunbird_actor_system_name: sunbird_fcm_account_key: sunbird_app_url: sunbird_image_storage_url: From 0919f5d400b38df2f3271513c078b230e6fa270d Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Fri, 22 Feb 2019 17:55:36 +0530 Subject: [PATCH 1216/1345] Issue #000 feat: Removed sunbird_app_url --- ansible/inventory/env/group_vars/all.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/ansible/inventory/env/group_vars/all.yml b/ansible/inventory/env/group_vars/all.yml index 84f16d15c8..b0fa9b6dfa 100644 --- a/ansible/inventory/env/group_vars/all.yml +++ b/ansible/inventory/env/group_vars/all.yml @@ -174,7 +174,6 @@ sunbird_portal_title_name: "{{sunbird_app_name}}" sunbird_sso_publickey: "{{core_vault_sunbird_sso_publickey}}" sunbird_azure_storage_account: "{{azure_account_name}}" sunbird_azure_storage_key: "{{core_vault_sunbird_azure_storage_key}}" -sunbird_app_url: sunbird_fcm_account_key: "{{core_vault_sunbird_fcm_account_key}}" sunbird_env_logo_url: "{{proto}}://{{proxy_server_name}}/common/images/sunbird_logo.png" sunbird_msg_91_auth: "{{core_vault_msg_91_auth_key}}" From 74913880f1f4909be77edcb46f97f8e1418c5fe6 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Fri, 22 Feb 2019 18:00:41 +0530 Subject: [PATCH 1217/1345] Issue #000 feat: Removing deprecated sunbird_app_url --- .../roles/stack-sunbird/templates/sunbird_learner-service.env | 1 - 1 file changed, 1 deletion(-) diff --git a/ansible/roles/stack-sunbird/templates/sunbird_learner-service.env b/ansible/roles/stack-sunbird/templates/sunbird_learner-service.env index de19d5b5f5..cc6f918a13 100644 --- a/ansible/roles/stack-sunbird/templates/sunbird_learner-service.env +++ b/ansible/roles/stack-sunbird/templates/sunbird_learner-service.env @@ -33,7 +33,6 @@ sunbird_quartz_mode={{sunbird_sunbird_quartz_mode}} sunbird_env_logo_url={{sunbird_env_logo_url}} sunbird_web_url={{sunbird_web_url}} sunbird_fcm_account_key={{sunbird_fcm_account_key}} -sunbird_app_url={{sunbird_app_url}} sunbird_msg_91_auth={{sunbird_msg_91_auth}} sunbird_msg_sender={{sunbird_msg_sender}} sunbird_installation_email={{sunbird_installation_email}} From 1c407d34d10b333a9d0b4c295a08aaa2692884d7 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Fri, 22 Feb 2019 18:17:30 +0530 Subject: [PATCH 1218/1345] Issue #000 feat: Added image_storage_url default container --- ansible/inventory/env/group_vars/all.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/inventory/env/group_vars/all.yml b/ansible/inventory/env/group_vars/all.yml index b0fa9b6dfa..a46f07b3e6 100644 --- a/ansible/inventory/env/group_vars/all.yml +++ b/ansible/inventory/env/group_vars/all.yml @@ -532,7 +532,7 @@ badger_limit_memory: 500MB # not required -sunbird_image_storage_url: "" +sunbird_image_storage_url: "https://{{azure_account_name}}.blob.core.windows.net/dial/" vault_auth_key: "{{core_vault_auth_key}}" vault_sender: "{{core_vault_sender}}" vault_country: "{{core_vault_country}}" From 3c99e149be4c0164f4680da9ee7f1d34a1029d5d Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Fri, 22 Feb 2019 18:35:56 +0530 Subject: [PATCH 1219/1345] Issue #000 feat: Deleted unused var sunbird_content_service_producer_id --- ansible/inventory/env/group_vars/all.yml | 3 --- 1 file changed, 3 deletions(-) diff --git a/ansible/inventory/env/group_vars/all.yml b/ansible/inventory/env/group_vars/all.yml index a46f07b3e6..72ac49668f 100644 --- a/ansible/inventory/env/group_vars/all.yml +++ b/ansible/inventory/env/group_vars/all.yml @@ -1,6 +1,3 @@ -### Not using -sunbird_content_service_producer_id: "{{env}}.sunbird.content-service" - ###################### Core ############################ # ENVIRONMENT CONFIGURATION From 4cf9a9fba69939b9de74441cde31a2c4984fdb5e Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Fri, 22 Feb 2019 19:37:06 +0530 Subject: [PATCH 1220/1345] Issue #000 feat: Adding sunbird_plugin_repo_api_key --- ansible/inventory/env/group_vars/all.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/ansible/inventory/env/group_vars/all.yml b/ansible/inventory/env/group_vars/all.yml index 72ac49668f..4d499f4ad1 100644 --- a/ansible/inventory/env/group_vars/all.yml +++ b/ansible/inventory/env/group_vars/all.yml @@ -126,6 +126,7 @@ sunbird_auth_version: 1.0v ## Content Repo configuration sunbird_api_auth_token: "{{ core_vault_sunbird_api_auth_token }}" #Authorization key (JWT) to access Sunbird APIs. This will be in the output of deploy-apis.sh script, extracting it out is documented in the deployment wiki. sunbird_ekstep_api_key: "{{ core_vault_sunbird_ekstep_api_key }}" #Authorization key (JWT) to access Ekstep APIs. Steps to generate this are documented on {{proto}}://github.com/project-sunbird/sunbird-commons/wiki/Obtaining-API-token-for-accessing-ekstep-APIs +sunbird_plugin_repo_api_key: "{{ core_vault_sunbird_ekstep_api_key }}" sunbird_trampoline_secret: "{{ core_vault_sunbird_trampoline_secret }}" # ADVANCED CONFIGURATIONS From 2e51d5e93525ae7b6b9697a122d4d99c98f1f932 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Fri, 22 Feb 2019 19:41:51 +0530 Subject: [PATCH 1221/1345] Issue #000 feat: Moving cassandra repo and key to defaults --- ansible/inventory/env/group_vars/all.yml | 6 ------ 1 file changed, 6 deletions(-) diff --git a/ansible/inventory/env/group_vars/all.yml b/ansible/inventory/env/group_vars/all.yml index 4d499f4ad1..8e77c6f821 100644 --- a/ansible/inventory/env/group_vars/all.yml +++ b/ansible/inventory/env/group_vars/all.yml @@ -193,12 +193,6 @@ sunbird_plugin_repo_api_base_url: "{{sunbird_ekstep_api_base_url}}" sunbird_data_service_api_base_url: "{{sunbird_ekstep_api_base_url}}" sunbird_data_service_api_key: "{{ core_vault_sunbird_ekstep_api_key }}" - - -## Cassandra download URI -cassandra_repo: 'deb http://www.apache.org/dist/cassandra/debian 39x main' -cassandra_repo_key: 'https://www.apache.org/dist/cassandra/KEYS' - #API Manager kong_postgres_port: 5432 kong_postgres_database: api_manager_dev From 5110a1216689a6c7dd2f01360313e0a105694287 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Sat, 23 Feb 2019 00:07:44 +0530 Subject: [PATCH 1222/1345] Issue #000 feat: Added postgres replication user password --- ansible/inventory/env/group_vars/all.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ansible/inventory/env/group_vars/all.yml b/ansible/inventory/env/group_vars/all.yml index 8e77c6f821..154f6cabc4 100644 --- a/ansible/inventory/env/group_vars/all.yml +++ b/ansible/inventory/env/group_vars/all.yml @@ -541,3 +541,6 @@ config_service_enabled: false trampoline_secret: "{{core_vault_trampoline_secret}}" es_api_host: "{{inventory_hostname}}" sunbird_linked_content_base_url: + +# Depricated value ?? +postgres_replication_user_password: "{{core_vault_postgres_password}}" From 655f41a2d80d793775174c662bfd35a8a1eda464 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Sat, 23 Feb 2019 11:31:26 +0530 Subject: [PATCH 1223/1345] Issue #000 feat: ADding prometheus_storage_retention_time to defautls --- ansible/roles/stack-monitor/defaults/main.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/ansible/roles/stack-monitor/defaults/main.yml b/ansible/roles/stack-monitor/defaults/main.yml index e2203694aa..2e927ea970 100644 --- a/ansible/roles/stack-monitor/defaults/main.yml +++ b/ansible/roles/stack-monitor/defaults/main.yml @@ -1,5 +1,6 @@ prometheus_reservation_memory: 1G prometheus_limit_memory: 1G +prometheus_storage_retention_time: 72h0m0s alertmanager_reservation_memory: 100M alertmanager_limit_memory: 100M From 8f1386d4a3ccd5a248c8641d33b1ad4b59b64aad Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Sat, 23 Feb 2019 11:31:26 +0530 Subject: [PATCH 1224/1345] Issue #000 feat: ADding prometheus_storage_retention_time to defautls --- ansible/roles/stack-monitor/defaults/main.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/ansible/roles/stack-monitor/defaults/main.yml b/ansible/roles/stack-monitor/defaults/main.yml index 2e927ea970..438afe66ce 100644 --- a/ansible/roles/stack-monitor/defaults/main.yml +++ b/ansible/roles/stack-monitor/defaults/main.yml @@ -63,7 +63,6 @@ docker_metrics_port: "2377" kong_cluster_expected_number_of_nodes: "{{ kong_replicas | default(1) }}" monitor_config_files_dest_dir: /opt/docker/stacks/monitor/config -prometheus_storage_retention_time: 168h0m0s docker_service_replicas_exporter_version: v0.0.3 docker_service_replicas_exporter_name: docker-service-replicas-exporter From 500c2a16932099c803b95bcef91c2a082507ad4d Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Sat, 23 Feb 2019 11:41:16 +0530 Subject: [PATCH 1225/1345] Issue #000 feat: Removing duplicate var logger --- ansible/inventory/env/group_vars/all.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/ansible/inventory/env/group_vars/all.yml b/ansible/inventory/env/group_vars/all.yml index 154f6cabc4..c6a1652361 100644 --- a/ansible/inventory/env/group_vars/all.yml +++ b/ansible/inventory/env/group_vars/all.yml @@ -478,8 +478,6 @@ logger_logspout_reservation_memory: 75M logger_logspout_limit_memory: 75M logger_oauth_reservation_memory: 32M logger_oauth_limit_memory: 32M -logger_logstash_reservation_memory: 1024M -logger_logstash_limit_memory: 1024M prometheus_reservation_memory: 1G prometheus_limit_memory: 1G alertmanager_reservation_memory: 100M From 9603ddda9b7eb4601123e8fcb7e66c11d1b8c837 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Sat, 23 Feb 2019 11:53:47 +0530 Subject: [PATCH 1226/1345] Issue #000 feat: Removing actor deprecated vars --- ansible/inventory/env/group_vars/all.yml | 3 --- 1 file changed, 3 deletions(-) diff --git a/ansible/inventory/env/group_vars/all.yml b/ansible/inventory/env/group_vars/all.yml index c6a1652361..a543c22ec9 100644 --- a/ansible/inventory/env/group_vars/all.yml +++ b/ansible/inventory/env/group_vars/all.yml @@ -461,9 +461,6 @@ echo_service_limit_memory: 16M adminutil_replicas: 1 adminutil_reservation_memory: 300M adminutil_limit_memory: 300M -actor_replicas: 1 -actor_reservation_memory: 500M -actor_limit_memory: 1024M learner_limit_cpu: 1 learner_replicas: 1 learner_reservation_memory: 1000M From f8355f5bbcf8fc6a668014b4fda3693fb3ce6813 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Sat, 23 Feb 2019 11:54:37 +0530 Subject: [PATCH 1227/1345] Issue #000 feat: duplicate learner value --- ansible/inventory/env/group_vars/all.yml | 3 --- 1 file changed, 3 deletions(-) diff --git a/ansible/inventory/env/group_vars/all.yml b/ansible/inventory/env/group_vars/all.yml index a543c22ec9..3d796028a8 100644 --- a/ansible/inventory/env/group_vars/all.yml +++ b/ansible/inventory/env/group_vars/all.yml @@ -509,9 +509,6 @@ player_limit_memory: 512M content_replicas: 1 content_reservation_memory: 1000M content_limit_memory: 1000M -learner_replicas: 1 -learner_reservation_memory: 1000M -learner_limit_memory: 1000M learner_reservation_cpu: 1 badger_replicas: 1 badger_reservation_memory: 500MB From 4758036491141cab0e11b9731806803eec35a773 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Sat, 23 Feb 2019 11:58:49 +0530 Subject: [PATCH 1228/1345] Issue #000 feat: Updating logspout reserv mem --- ansible/inventory/env/group_vars/all.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ansible/inventory/env/group_vars/all.yml b/ansible/inventory/env/group_vars/all.yml index 3d796028a8..414446474d 100644 --- a/ansible/inventory/env/group_vars/all.yml +++ b/ansible/inventory/env/group_vars/all.yml @@ -471,8 +471,8 @@ logger_logstash_reservation_memory: 512M logger_logstash_limit_memory: 750M logger_kibana_reservation_memory: 750M logger_kibana_limit_memory: 750M -logger_logspout_reservation_memory: 75M -logger_logspout_limit_memory: 75M +logger_logspout_reservation_memory: 200M +logger_logspout_limit_memory: 200M logger_oauth_reservation_memory: 32M logger_oauth_limit_memory: 32M prometheus_reservation_memory: 1G From cf2c432a306dddc4167098daab67b6fb61867710 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Sat, 23 Feb 2019 12:00:06 +0530 Subject: [PATCH 1229/1345] Issue #000 feat: Updating telemetry reservation memory --- ansible/roles/stack-sunbird/defaults/main.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ansible/roles/stack-sunbird/defaults/main.yml b/ansible/roles/stack-sunbird/defaults/main.yml index 79ace0d7cf..6aa3a25d18 100644 --- a/ansible/roles/stack-sunbird/defaults/main.yml +++ b/ansible/roles/stack-sunbird/defaults/main.yml @@ -30,8 +30,8 @@ config_reservation_cpu: 1 sunbird_learner_service_base_url: http://api-manager_kong:8000 telemetry_replicas: 1 -telemetry_reservation_memory: 256M -telemetry_limit_memory: 512M +telemetry_reservation_memory: 300M +telemetry_limit_memory: 300M sunbird_telemetry_kafka_servers: "{{groups['kafka']|join(':9092,')}}:9092" sunbird_data_pipeline_kafka_servers: "{{groups['processing-cluster-kafka']|join(':9092,')}}:9092" From 6ad86476a7f5667c2c6d436bea27961fc3afa93f Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Sat, 23 Feb 2019 12:08:22 +0530 Subject: [PATCH 1230/1345] Issue #000 feat: Deleted commented var kong_admin_api_url --- ansible/inventory/env/group_vars/all.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/ansible/inventory/env/group_vars/all.yml b/ansible/inventory/env/group_vars/all.yml index 414446474d..45f6a470c7 100644 --- a/ansible/inventory/env/group_vars/all.yml +++ b/ansible/inventory/env/group_vars/all.yml @@ -259,7 +259,6 @@ postgres_exporter_postgres_port: 5432 postgres_exporter_user: postgres_exporter sunbird_cs_base_url: "{{proto}}://{{proxy_server_name}}/api" kong_admin_api_url: http://localhost:8001 -#kong_admin_api_url: manager postgresql_backup_azure_storage_account_name: "{{azure_account_name}}" postgresql_backup_azure_storage_access_key: "{{ backup_storage_key }}" From f016ffc219735a80c3d08dafd33691c7c9b1762a Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Sat, 23 Feb 2019 12:14:28 +0530 Subject: [PATCH 1231/1345] Issue #000 feat: Adding keycloak build value --- private_repo/ansible/inventory/dev/Core/common.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/private_repo/ansible/inventory/dev/Core/common.yml b/private_repo/ansible/inventory/dev/Core/common.yml index 5d68697565..4bf4d57234 100644 --- a/private_repo/ansible/inventory/dev/Core/common.yml +++ b/private_repo/ansible/inventory/dev/Core/common.yml @@ -62,7 +62,7 @@ project: "sunbird" ################################################ # Keycloak values can be merged to keycloak role, once PR is merged -keycloak_build_src: "" +keycloak_build_src: "keycloak_build" keycloak_ver: "keycloak-3.2.0.Final" keycloak_sms_provider_build: "keycloak-email-phone-autthenticator-1.0-SNAPSHOT.jar" keycloak_sms_provider_templates_src: "templates.tar.gz" From 246a0e9d4b72c651a06f3c58793f662044a047df Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Sat, 23 Feb 2019 12:22:11 +0530 Subject: [PATCH 1232/1345] Issue #000 feat: Adding enc password --- ansible/inventory/env/group_vars/all.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/ansible/inventory/env/group_vars/all.yml b/ansible/inventory/env/group_vars/all.yml index 45f6a470c7..3fe7b413e7 100644 --- a/ansible/inventory/env/group_vars/all.yml +++ b/ansible/inventory/env/group_vars/all.yml @@ -532,6 +532,7 @@ config_service_enabled: false trampoline_secret: "{{core_vault_trampoline_secret}}" es_api_host: "{{inventory_hostname}}" sunbird_linked_content_base_url: +enc_postgres_password: "{{core_vault_postgres_password}}" # Depricated value ?? postgres_replication_user_password: "{{core_vault_postgres_password}}" From 73c883e36e7973b570d859d37dd88868eb68fce0 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Sat, 23 Feb 2019 12:38:36 +0530 Subject: [PATCH 1233/1345] Issue #000 feat: Removed telemetry_proxy_url --- private_repo/ansible/inventory/dev/Core/common.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/private_repo/ansible/inventory/dev/Core/common.yml b/private_repo/ansible/inventory/dev/Core/common.yml index 4bf4d57234..3f9f31d2a2 100644 --- a/private_repo/ansible/inventory/dev/Core/common.yml +++ b/private_repo/ansible/inventory/dev/Core/common.yml @@ -48,7 +48,6 @@ upstream_url: "{{azure_account_name}}.blob.core.windows.net/{{sunbird_content_az ####################### Please Check me ############################# sunbird_ekstep_api_base_url: "https://{{ekstep_s3_env}}.ekstep.in/api" #API base URL of the Ekstep environment. Use `https://qa.ekstep.in/api` for non-prod deployments, and use `https://api.ekstep.in/` for prod deployment. sunbird_data_service_api_base_url: "{{sunbird_ekstep_api_base_url}}/data/v3/telemetry" -telemetry_proxy_url: "" sunbird_telemetry_api: "{{sunbird_ekstep_api_base_url}}/data/v3/telemetry" sunbird_language_service_api_base_url: '{{sunbird_ekstep_api_base_url}}/language' # Following variable gets called for assets/public from Proxy From e776acbddc75fb2e4c611d399ba429cde846b4e9 Mon Sep 17 00:00:00 2001 From: Harsha Date: Sat, 23 Feb 2019 12:39:58 +0530 Subject: [PATCH 1234/1345] updating script --- deploy/jenkins/jenkins-server-setup.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deploy/jenkins/jenkins-server-setup.sh b/deploy/jenkins/jenkins-server-setup.sh index 285be94108..953f59c8b1 100755 --- a/deploy/jenkins/jenkins-server-setup.sh +++ b/deploy/jenkins/jenkins-server-setup.sh @@ -12,7 +12,7 @@ echo -e "\n\e[0;32m${bold}Installating Jenkins${normal}" wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add - echo "deb https://pkg.jenkins.io/debian-stable binary/" >> /etc/apt/sources.list sudo apt-get update -sudo apt-get install jenkins +sudo apt-get install jenkins -y echo -e "\n\e[0;32m${bold}Installating PIP${normal}" apt-get install -y python-pip From 0a903548006c2bea25b160577799de7464ec7b40 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Sat, 23 Feb 2019 12:44:05 +0530 Subject: [PATCH 1235/1345] Revert "Issue #000 feat: Removed telemetry_proxy_url" This reverts commit 73c883e36e7973b570d859d37dd88868eb68fce0. --- private_repo/ansible/inventory/dev/Core/common.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/private_repo/ansible/inventory/dev/Core/common.yml b/private_repo/ansible/inventory/dev/Core/common.yml index 3f9f31d2a2..4bf4d57234 100644 --- a/private_repo/ansible/inventory/dev/Core/common.yml +++ b/private_repo/ansible/inventory/dev/Core/common.yml @@ -48,6 +48,7 @@ upstream_url: "{{azure_account_name}}.blob.core.windows.net/{{sunbird_content_az ####################### Please Check me ############################# sunbird_ekstep_api_base_url: "https://{{ekstep_s3_env}}.ekstep.in/api" #API base URL of the Ekstep environment. Use `https://qa.ekstep.in/api` for non-prod deployments, and use `https://api.ekstep.in/` for prod deployment. sunbird_data_service_api_base_url: "{{sunbird_ekstep_api_base_url}}/data/v3/telemetry" +telemetry_proxy_url: "" sunbird_telemetry_api: "{{sunbird_ekstep_api_base_url}}/data/v3/telemetry" sunbird_language_service_api_base_url: '{{sunbird_ekstep_api_base_url}}/language' # Following variable gets called for assets/public from Proxy From dbd80f3fa02a4852ede85ccf06176ea1a48c1adb Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Sat, 23 Feb 2019 12:47:47 +0530 Subject: [PATCH 1236/1345] Issue #000 feat: Removing duplicate entry for channel --- ansible/inventory/env/group_vars/all.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/ansible/inventory/env/group_vars/all.yml b/ansible/inventory/env/group_vars/all.yml index 3fe7b413e7..7f09f711f0 100644 --- a/ansible/inventory/env/group_vars/all.yml +++ b/ansible/inventory/env/group_vars/all.yml @@ -419,8 +419,6 @@ keycloak_tar_path: keycloak.tar.gz keycloak_theme_path: artifacts/sunbird sunbird_telemetry_packet_size: 200 sunbird_telemetry_sync_batch_size: 200 -content_service_whitelisted_channels: '' -content_service_blacklisted_channels: '' content_service_channel_refresh_cron: '*/5 * * * *' content_service_whitelisted_framework: '' content_service_blacklisted_framework: '' From 904842bd5493f2d7865d0fd9c65405edb40183ac Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Sat, 23 Feb 2019 13:01:08 +0530 Subject: [PATCH 1237/1345] Issue #000 feat: Adding enc-service container constraints --- ansible/inventory/env/group_vars/all.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/ansible/inventory/env/group_vars/all.yml b/ansible/inventory/env/group_vars/all.yml index 7f09f711f0..265e8ca435 100644 --- a/ansible/inventory/env/group_vars/all.yml +++ b/ansible/inventory/env/group_vars/all.yml @@ -341,6 +341,11 @@ ep_es_host: "{{ groups['telemetry-search-cluster'][0] }}" #For kibana pipeli encryption_service_user: encryption encryption_db_name: encryption encryption_db_dialect: postgres +encryption_reservation_memory: 750MB +encryption_replicas: 1 +encryption_limit_memory: 750MB +encryption_limit_cpu: 1 +encryption_reservation_cpu: 1 sunbird_allowed_login: sunbird_course_batch_notification_enabled: 'true' sunbird_device_register_api: "{{api_proxy_name}}/v3/device/register/" From b2054547a0e323a92894f22365ffa4b8df0e44ad Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Sat, 23 Feb 2019 13:04:24 +0530 Subject: [PATCH 1238/1345] Issue #000 feat: Moving url_shortner enable to all.yml --- ansible/inventory/env/group_vars/all.yml | 1 + private_repo/ansible/inventory/dev/Core/common.yml | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/inventory/env/group_vars/all.yml b/ansible/inventory/env/group_vars/all.yml index 265e8ca435..eeb79b0e17 100644 --- a/ansible/inventory/env/group_vars/all.yml +++ b/ansible/inventory/env/group_vars/all.yml @@ -26,6 +26,7 @@ keycloak_api_management_user_last_name: "admin" ## Learner service sunbird_url_shortner_access_token: "{{vault_core_url_shortner_access_token}}" +sunbird_url_shortner_enable: 'false' sunbird_keycloak_required_action_link_expiration_seconds: 2592000 diff --git a/private_repo/ansible/inventory/dev/Core/common.yml b/private_repo/ansible/inventory/dev/Core/common.yml index 4bf4d57234..9a58e694d5 100644 --- a/private_repo/ansible/inventory/dev/Core/common.yml +++ b/private_repo/ansible/inventory/dev/Core/common.yml @@ -19,7 +19,6 @@ sunbird_content_azure_storage_container: # Conatainer store assets/public swarm_load_balancer: # Loadbalancer ip to push the logspout result to logstash in swarm artifacts_container: '' # Azure blob container name to save built artifacts -sunbird_url_shortner_enable: 'false' ## Mail config mail_server_host: From b86e52cf2f673e9450c5e533b5ea37df27eb9ff2 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Sat, 23 Feb 2019 13:09:41 +0530 Subject: [PATCH 1239/1345] Issue #000 feat: removing duplicate sunbird_lock_expiry_time --- ansible/inventory/env/group_vars/all.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/ansible/inventory/env/group_vars/all.yml b/ansible/inventory/env/group_vars/all.yml index eeb79b0e17..9f05c4d187 100644 --- a/ansible/inventory/env/group_vars/all.yml +++ b/ansible/inventory/env/group_vars/all.yml @@ -441,7 +441,6 @@ sunbird_email_max_recipients_limit: 100 sunbird_cassandra_consistency_level: one sunbird_cassandra_replication_strategy: '{"class":"SimpleStrategy","replication_factor":"1"}' medium_rate_limit_per_hour: 5000 -sunbird_lock_expiry_time: 1800 sunbird_lock_expiry_time: 3600 app_es_heap_size: 1500m log_es_heap_size: 1500m From 370914c4fbd14802c0247515b1a23590926ec65c Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Sat, 23 Feb 2019 13:38:22 +0530 Subject: [PATCH 1240/1345] Issue #000 feat: Removed analytics service var --- ansible/inventory/env/group_vars/all.yml | 6 ------ 1 file changed, 6 deletions(-) diff --git a/ansible/inventory/env/group_vars/all.yml b/ansible/inventory/env/group_vars/all.yml index 9f05c4d187..dc779de632 100644 --- a/ansible/inventory/env/group_vars/all.yml +++ b/ansible/inventory/env/group_vars/all.yml @@ -67,7 +67,6 @@ badger_postgres_password: "{{core_vault_postgres_password}}" kong_postgres_user: "{{core_vault_postgres_username}}" kong_postgres_password: "{{core_vault_postgres_password}}" enc_postgres_user: "{{core_vault_postgres_username}}" -analytics_postgres_user: "{{core_vault_postgres_username}}" badger_postgres_user: "{{core_vault_postgres_username}}" postgres_password: "{{ core_vault_postgres_password }}" #Password for Kong (API Manager) database. backup_storage_account: "{{azure_account_name}}" @@ -284,10 +283,6 @@ sunbird_http_orgin: "{{proto}}://{{proxy_server_name}}/badging" #enc-service enc_postgres_database: encryption -#analytics-service -analytics_postgres_database: analytics - - #kafka vars zk_hosts: "127.0.0.1:2181" kafka_conf_dir: /etc/kafka @@ -402,7 +397,6 @@ postgresql_databases: - name: "{{application_postgres_database}}" - name: "{{badger_postgres_database}}" - name: "{{enc_postgres_database}}" - - name: "{{analytics_postgres_database}}" #######App ES From 90c725d7f0a2b6dadce23fcaae0d20e662d02132 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Sat, 23 Feb 2019 14:52:39 +0530 Subject: [PATCH 1241/1345] Issue #000 feat: Added swarm load balancer as domain name --- ansible/inventory/env/group_vars/all.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/inventory/env/group_vars/all.yml b/ansible/inventory/env/group_vars/all.yml index dc779de632..9263a3f313 100644 --- a/ansible/inventory/env/group_vars/all.yml +++ b/ansible/inventory/env/group_vars/all.yml @@ -8,7 +8,7 @@ sunbird_web_url: "{{proto}}://{{ proxy_server_name }}" sunbird_http_orgin: "{{proto}}://{{ proxy_server_name }}/badging" sunbird_dataservice_url: "{{proto}}://{{ proxy_server_name }}/api/" api_proxy_name: "{{proto}}://api.{{proxy_server_name}}" # Domain name on which device register and other api's will be accessed - +swarm_load_balancer: "{{proxy_server_name}}" proxy_site_key: "{{ core_vault_proxy_site_key }}" #SSL certificate's site.key file contents. More details in this wiki: {{proto}}://github.com/project-sunbird/sunbird-commons/wiki/Updating-SSL-certificates-in-Sunbird-Proxy-service proxy_site_crt: "{{ core_vault_proxy_site_crt }}" #SSL certificate's site.crt file contents. More details in this wiki: {{proto}}://github.com/project-sunbird/sunbird-commons/wiki/Updating-SSL-certificates-in-Sunbird-Proxy-service sunbird_environment: "{{env}}" # +content-service learner From 9e1da781cb664bf59f5e7f3c4c9bbb4214c4dbe4 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Sat, 23 Feb 2019 15:32:59 +0530 Subject: [PATCH 1242/1345] Issue #000 feat: Changed variable value from default for postgres_exporter_password --- ansible/roles/stack-monitor/defaults/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/stack-monitor/defaults/main.yml b/ansible/roles/stack-monitor/defaults/main.yml index 438afe66ce..2a94284261 100644 --- a/ansible/roles/stack-monitor/defaults/main.yml +++ b/ansible/roles/stack-monitor/defaults/main.yml @@ -183,7 +183,7 @@ prometheus_web_external_url: "{{proto}}://{{api__host}}:9090/{{ prometheus_route prometheus_alertmanager_route_prefix: alertmanager prometheus_alertmanager_web_external_url: "{{proto}}://{{api__host}}:9093/{{ prometheus_alertmanager_route_prefix }}" -postgres_exporter_password: "{{ vault_postgres_exporter_password }}" +postgres_exporter_password: postgres_exporter_postgres_port: 5432 postgres_exporter_user: postgres_exporter From 05c05b3b8c25ddc150407d6e4a6b7dc69ef63764 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Sat, 23 Feb 2019 15:49:40 +0530 Subject: [PATCH 1243/1345] Issue #000 feat: Adding default value for sunbird_cassandra_port --- ansible/roles/stack-sunbird/defaults/main.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/ansible/roles/stack-sunbird/defaults/main.yml b/ansible/roles/stack-sunbird/defaults/main.yml index 6aa3a25d18..95846a8616 100644 --- a/ansible/roles/stack-sunbird/defaults/main.yml +++ b/ansible/roles/stack-sunbird/defaults/main.yml @@ -46,6 +46,7 @@ keycloak_auth_server_url: "{{proto}}://{{proxy_server_name}}/auth" keycloak_realm: sunbird sunbird_web_url: "{{proto}}://{{proxy_server_name}}" sunbird_env_logo_url: http://www.paramountias.com/media/images/current-affairs/diksha-portal.jpg +sunbird_cassandra_port: 9042 sunbird_portal_title_name: 'portal' sunbird_keycloak_client_id: 'portal' vault_sunbird_api_auth_token: From 4504aef74b4abdea7f984d2905ec0e56134cce89 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Sat, 23 Feb 2019 17:14:00 +0530 Subject: [PATCH 1244/1345] Issue #000 feat: Deleted duplicate account key --- ansible/inventory/env/group_vars/all.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/ansible/inventory/env/group_vars/all.yml b/ansible/inventory/env/group_vars/all.yml index 9263a3f313..23615f5b2d 100644 --- a/ansible/inventory/env/group_vars/all.yml +++ b/ansible/inventory/env/group_vars/all.yml @@ -160,7 +160,6 @@ sunbird_pg_db: quartz sunbird_pg_host: "{{ application_postgres_host }}" sunbird_pg_port: 5432 sunbird_pg_password: "{{ core_vault_postgres_password }}" -sunbird_account_key: "{{ core_vault_sunbird_azure_storage_key }}" sunbird_sunbird_quartz_mode: cluster sunbird_encryption_mode: local sunbird_cassandra_urls: "{{ cassandra_server_private_ip }}:{{ cassandra_port }}" From 6aab08ce760d9009bcb296b3d463a0e4eefdb034 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Sat, 23 Feb 2019 17:14:57 +0530 Subject: [PATCH 1245/1345] Issue #000 feat: removed duplicate postgres password --- ansible/inventory/env/group_vars/all.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/ansible/inventory/env/group_vars/all.yml b/ansible/inventory/env/group_vars/all.yml index 23615f5b2d..33ad2246c1 100644 --- a/ansible/inventory/env/group_vars/all.yml +++ b/ansible/inventory/env/group_vars/all.yml @@ -68,7 +68,6 @@ kong_postgres_user: "{{core_vault_postgres_username}}" kong_postgres_password: "{{core_vault_postgres_password}}" enc_postgres_user: "{{core_vault_postgres_username}}" badger_postgres_user: "{{core_vault_postgres_username}}" -postgres_password: "{{ core_vault_postgres_password }}" #Password for Kong (API Manager) database. backup_storage_account: "{{azure_account_name}}" backup_storage_key: "{{core_vault_sunbird_azure_storage_key}}" sunbird_account_name: "{{azure_account_name}}" From 3613ca1234e41d7292c35b162eeb922aafea4b06 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Sat, 23 Feb 2019 17:15:26 +0530 Subject: [PATCH 1246/1345] Issue #000 feat: Removed sunbird_http_orgin --- ansible/inventory/env/group_vars/all.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/ansible/inventory/env/group_vars/all.yml b/ansible/inventory/env/group_vars/all.yml index 33ad2246c1..e8934affbe 100644 --- a/ansible/inventory/env/group_vars/all.yml +++ b/ansible/inventory/env/group_vars/all.yml @@ -5,7 +5,6 @@ proxy_server_name: "{{domain_name}}" keycloak_auth_server_url: "{{proto}}://{{ proxy_server_name }}/auth" sunbird_echo_api_url: "{{proto}}://{{ proxy_server_name }}/api/echo/" sunbird_web_url: "{{proto}}://{{ proxy_server_name }}" -sunbird_http_orgin: "{{proto}}://{{ proxy_server_name }}/badging" sunbird_dataservice_url: "{{proto}}://{{ proxy_server_name }}/api/" api_proxy_name: "{{proto}}://api.{{proxy_server_name}}" # Domain name on which device register and other api's will be accessed swarm_load_balancer: "{{proxy_server_name}}" From 61c7e7ded9efa43425923491a9baf379e6090823 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Sat, 23 Feb 2019 17:22:03 +0530 Subject: [PATCH 1247/1345] Issue #000 feat: Removed duplicate sunbird_account_key --- ansible/inventory/env/group_vars/all.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/ansible/inventory/env/group_vars/all.yml b/ansible/inventory/env/group_vars/all.yml index e8934affbe..713967d486 100644 --- a/ansible/inventory/env/group_vars/all.yml +++ b/ansible/inventory/env/group_vars/all.yml @@ -297,7 +297,6 @@ zk_port: 2181 kafka_broker_host: "{{groups['kafka']|join(',')}}" zookeeper_quorum: "{{groups['kafka']|join(':2182,')}}:2181" -sunbird_account_key: "{{core_vault_sunbird_azure_storage_key}}" sunbird_telemetry_kafka_topic: "{{env}}.telemetry.ingestion" sunbird_data_pipeline_kafka_topic: "{{env}}.telemetry.ingest" telemetry_proxy_url: "{{sunbird_ekstep_api_base_url}}/data/v3/telemetry" From 3ebee75d20da7437f4c03afa8d84849b62c26a83 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Sat, 23 Feb 2019 20:06:56 +0530 Subject: [PATCH 1248/1345] Issue #000 feat: updating sunbird_data_service_api_base_url --- private_repo/ansible/inventory/dev/Core/common.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/private_repo/ansible/inventory/dev/Core/common.yml b/private_repo/ansible/inventory/dev/Core/common.yml index 9a58e694d5..5dcc809231 100644 --- a/private_repo/ansible/inventory/dev/Core/common.yml +++ b/private_repo/ansible/inventory/dev/Core/common.yml @@ -46,7 +46,7 @@ upstream_url: "{{azure_account_name}}.blob.core.windows.net/{{sunbird_content_az ####################### Please Check me ############################# sunbird_ekstep_api_base_url: "https://{{ekstep_s3_env}}.ekstep.in/api" #API base URL of the Ekstep environment. Use `https://qa.ekstep.in/api` for non-prod deployments, and use `https://api.ekstep.in/` for prod deployment. -sunbird_data_service_api_base_url: "{{sunbird_ekstep_api_base_url}}/data/v3/telemetry" +sunbird_data_service_api_base_url: "{{sunbird_ekstep_api_base_url}}" telemetry_proxy_url: "" sunbird_telemetry_api: "{{sunbird_ekstep_api_base_url}}/data/v3/telemetry" sunbird_language_service_api_base_url: '{{sunbird_ekstep_api_base_url}}/language' From 3c8d4ad2106b71748c61ea5d344b536cf28fb363 Mon Sep 17 00:00:00 2001 From: msknext Date: Mon, 25 Feb 2019 06:10:29 +0000 Subject: [PATCH 1249/1345] feat: #000 Updated plugins and job configs --- .../dev/jobs/Core/jobs/APIManager/config.xml | 20 ++++-- .../jobs/Core/jobs/APIManagerEcho/config.xml | 20 ++++-- .../dev/jobs/Core/jobs/AdminUtils/config.xml | 20 ++++-- .../jobs/dev/jobs/Core/jobs/Badger/config.xml | 28 ++++++-- .../dev/jobs/Core/jobs/Cassandra/config.xml | 16 ++++- .../jobs/dev/jobs/Core/jobs/Config/config.xml | 28 ++++++-- .../dev/jobs/Core/jobs/Content/config.xml | 20 ++++-- .../dev/jobs/Core/jobs/Keycloak/config.xml | 18 +++-- .../dev/jobs/Core/jobs/Learner/config.xml | 18 +++-- .../jobs/dev/jobs/Core/jobs/Player/config.xml | 20 ++++-- .../jobs/dev/jobs/Core/jobs/Proxy/config.xml | 20 ++++-- .../dev/jobs/Core/jobs/Telemetry/config.xml | 20 ++++-- .../DataPipeline/jobs/Analytics/config.xml | 20 ++++-- .../DataPipeline/jobs/DataPipeline/config.xml | 19 ++++-- .../jobs/DataPipeline/jobs/Secor/config.xml | 20 ++++-- .../jobs/KnowledgePlatform/config.xml | 22 +++++-- .../KnowledgePlatform/jobs/Neo4j/config.xml | 28 ++++++-- .../jobs/SyncTool/config.xml | 30 +++++++-- .../KnowledgePlatform/jobs/Yarn/config.xml | 30 +++++++-- .../jobs/Core/jobs/APIManager/config.xml | 7 ++ .../jobs/Core/jobs/AdminUtils/config.xml | 19 +++--- .../Build/jobs/Core/jobs/Badger/config.xml | 4 +- .../Build/jobs/Core/jobs/Cassandra/config.xml | 11 +++- .../Build/jobs/Core/jobs/Config/config.xml | 4 +- .../Build/jobs/Core/jobs/Content/config.xml | 14 +++- .../Build/jobs/Core/jobs/Keycloak/config.xml | 15 +++-- .../Build/jobs/Core/jobs/Learner/config.xml | 9 ++- .../Build/jobs/Core/jobs/Player/config.xml | 9 ++- .../Build/jobs/Core/jobs/Proxy/config.xml | 14 +++- .../Build/jobs/Core/jobs/Telemetry/config.xml | 9 ++- .../DataPipeline/jobs/Analytics/config.xml | 11 +++- .../jobs/CloudStorageSDK/config.xml | 4 +- .../DataPipeline/jobs/DataPipeline/config.xml | 9 ++- .../jobs/DataPipeline/jobs/Secor/config.xml | 9 ++- .../jobs/KnowledgePlatform/config.xml | 15 ++++- .../KnowledgePlatform/jobs/Neo4j/config.xml | 14 +++- .../jobs/SyncTool/config.xml | 14 +++- .../KnowledgePlatform/jobs/Yarn/config.xml | 15 ++++- .../jobs/Plugins/jobs/CEPlugins/config.xml | 6 +- .../Plugins/jobs/CollectionEditor/config.xml | 6 +- .../Plugins/jobs/ContentFramework/config.xml | 6 +- .../jobs/ContentRendererPreview/config.xml | 6 +- .../Plugins/jobs/GenericEditor/config.xml | 6 +- .../dev/jobs/Core/jobs/APIManager/config.xml | 13 +++- .../dev/jobs/Core/jobs/AdminUtils/config.xml | 13 +++- .../jobs/ApplicationElasticSearch/config.xml | 9 ++- .../jobs/dev/jobs/Core/jobs/Badger/config.xml | 6 +- .../dev/jobs/Core/jobs/Bootstrap/config.xml | 20 ++++-- .../dev/jobs/Core/jobs/Cassandra/config.xml | 15 +++-- .../jobs/dev/jobs/Core/jobs/Config/config.xml | 6 +- .../dev/jobs/Core/jobs/Content/config.xml | 13 +++- .../dev/jobs/Core/jobs/Keycloak/config.xml | 9 ++- .../jobs/Core/jobs/KeycloakRealm/config.xml | 9 ++- .../dev/jobs/Core/jobs/Learner/config.xml | 15 ++++- .../Core/jobs/LoggerElasticSearch/config.xml | 28 ++++---- .../dev/jobs/Core/jobs/Logging/config.xml | 12 +++- .../dev/jobs/Core/jobs/Monitoring/config.xml | 11 +++- .../dev/jobs/Core/jobs/OnboardAPIs/config.xml | 12 +++- .../Core/jobs/OnboardConsumers/config.xml | 10 ++- .../jobs/dev/jobs/Core/jobs/Player/config.xml | 15 ++++- .../jobs/dev/jobs/Core/jobs/Proxy/config.xml | 16 ++++- .../dev/jobs/Core/jobs/Telemetry/config.xml | 15 ++++- .../Core/jobs/TelemetryLogstash/config.xml | 12 +++- .../TelemetryLogstashDataPipeline/config.xml | 10 ++- .../DataPipeline/jobs/AnalyticsAPI/config.xml | 37 +++++++---- .../jobs/AnalyticsFetchLogs/config.xml | 10 +-- .../AnalyticsGeoLocationDBSetup/config.xml | 4 +- .../config.xml | 12 ++-- .../jobs/AnalyticsReplayJobs/config.xml | 16 +++-- .../jobs/AnalyticsStartJobManager/config.xml | 8 ++- .../jobs/AnalyticsSubmitJobs/config.xml | 3 +- .../jobs/CassandraDbUpdate/config.xml | 10 ++- .../DataPipeline/jobs/DataProducts/config.xml | 35 ++++++---- .../DataPipeline/jobs/KafkaIndexer/config.xml | 10 ++- .../DataPipeline/jobs/KafkaSetup/config.xml | 10 ++- .../DataPipeline/jobs/Monitoring/config.xml | 9 ++- .../jobs/SamzaTelemetrySchemas/config.xml | 14 +++- .../jobs/DataPipeline/jobs/Secor/config.xml | 35 ++++++---- .../jobs/DataPipeline/jobs/Yarn/config.xml | 36 ++++++---- .../jobs/CassandraDbUpdate/config.xml | 10 ++- .../jobs/ContentTool/config.xml | 26 ++++++-- .../jobs/DefinitionUpdate/config.xml | 53 --------------- .../jobs/FileSyncTool/config.xml | 26 ++++++-- .../jobs/KafkaSetup/config.xml | 10 ++- .../jobs/Learning/config.xml | 38 +++++++---- .../KnowledgePlatform/jobs/Neo4j/config.xml | 32 +++++---- .../Neo4jElasticSearchSyncTool/config.xml | 43 +++++++----- .../jobs/SamzaTelemetrySchemas/config.xml | 66 ------------------- .../KnowledgePlatform/jobs/Search/config.xml | 34 ++++++---- .../jobs/StartNeo4jCluster/config.xml | 9 ++- .../KnowledgePlatform/jobs/Yarn/config.xml | 37 +++++++---- .../Plugins/jobs/CollectionEditor/config.xml | 8 ++- .../Plugins/jobs/ContentFramework/config.xml | 8 ++- .../jobs/ContentRendererPreview/config.xml | 8 ++- .../Plugins/jobs/GenericEditor/config.xml | 8 ++- .../Summary/jobs/DeployedVersions/config.xml | 12 +++- .../jobs/Core/jobs/JenkinsSlave/config.xml | 14 +++- .../jobs/dev/jobs/Core/jobs/Kafka/config.xml | 21 +++++- .../dev/jobs/Core/jobs/Keycloak/config.xml | 17 ++++- .../dev/jobs/Core/jobs/Registry/config.xml | 21 +++++- .../jobs/dev/jobs/Core/jobs/Secor/config.xml | 21 +++++- .../jobs/DataPipeline/jobs/Kafka/config.xml | 21 +++++- .../jobs/TelemetrySearch/config.xml | 21 +++++- .../DataPipeline/jobs/Zookeeper/config.xml | 21 +++++- .../jobs/Learning/config.xml | 19 +++++- deploy/jenkins/plugins.txt | 2 +- 106 files changed, 1255 insertions(+), 522 deletions(-) delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/DefinitionUpdate/config.xml delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/SamzaTelemetrySchemas/config.xml diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/APIManager/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/APIManager/config.xml index 169ae92eff..ad7e37aedb 100644 --- a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/APIManager/config.xml +++ b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/APIManager/config.xml @@ -28,28 +28,38 @@ absolute_job_path - <font color=teal size=2>The metadata.json file of the last successful build will be copied from this job. Please specify the absolute path to the job.</font> + <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> Build/Core/APIManager false image_tag - <font color=teal size=2>Specify only tag. If the value is blank, version will be picked from the metadata.json file.</font> + <font color=darkgreen size=2><b>OPTIONAL: Specify the tag to upload a specific image version to the container registry.</b></font> false artifact_source - <font color=teal size=2>Choose the artifact source</font> + <font color=black size=2><b> +ArtifactRepo - Push the docker image to container registry. +</b></font> ArtifactRepo - JenkinsJob + + 0 + 0 + + false + project + false + + @@ -85,7 +95,7 @@ true false - 0 + 1 false diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/APIManagerEcho/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/APIManagerEcho/config.xml index 14f269d00f..77af8f7911 100644 --- a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/APIManagerEcho/config.xml +++ b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/APIManagerEcho/config.xml @@ -28,28 +28,38 @@ absolute_job_path - <font color=teal size=2>The metadata.json file of the last successful build will be copied from this job. Please specify the absolute path to the job.</font> + <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> Build/Core/APIManagerEcho false image_tag - <font color=teal size=2>Specify only tag. If the value is blank, version will be picked from the metadata.json file.</font> + <font color=darkgreen size=2><b>OPTIONAL: Specify the tag to upload a specific image version to the container registry.</b></font> false artifact_source - <font color=teal size=2>Choose the artifact source</font> + <font color=black size=2><b> +ArtifactRepo - Push the docker image to container registry. +</b></font> ArtifactRepo - JenkinsJob + + 0 + 0 + + false + project + false + + @@ -85,7 +95,7 @@ true false - 0 + 1 false diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/AdminUtils/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/AdminUtils/config.xml index ebad0e3a12..b49d708c42 100644 --- a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/AdminUtils/config.xml +++ b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/AdminUtils/config.xml @@ -28,28 +28,38 @@ absolute_job_path - <font color=teal size=2>The metadata.json file of the last successful build will be copied from this job. Please specify the absolute path to the job.</font> + <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> Build/Core/AdminUtils false image_tag - <font color=teal size=2>Specify only tag. If the value is blank, version will be picked from the metadata.json file.</font> + <font color=darkgreen size=2><b>OPTIONAL: Specify the tag to upload a specific image version to the container registry.</b></font> false artifact_source - <font color=teal size=2>Choose the artifact source</font> + <font color=black size=2><b> +ArtifactRepo - Push the docker image to container registry. +</b></font> ArtifactRepo - JenkinsJob + + 0 + 0 + + false + project + false + + @@ -85,7 +95,7 @@ true false - 0 + 1 false diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Badger/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Badger/config.xml index fb75311741..8a360779ad 100644 --- a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Badger/config.xml +++ b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Badger/config.xml @@ -28,28 +28,38 @@ absolute_job_path - <font color=teal size=2>The metadata.json file of the last successful build will be copied from this job. Please specify the absolute path to the job.</font> + <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> Build/Core/Badger false image_tag - <font color=teal size=2>Specify only tag. If the value is blank, version will be picked from the metadata.json file.</font> + <font color=darkgreen size=2><b>OPTIONAL: Specify the tag to upload a specific image version to the container registry.</b></font> false artifact_source - <font color=teal size=2>Choose the artifact source</font> + <font color=black size=2><b> +ArtifactRepo - Push the docker image to container registry. +</b></font> ArtifactRepo - JenkinsJob + + 0 + 0 + + false + project + false + + @@ -80,7 +90,15 @@ false - + + + true + false + + 1 + false + + pipelines/upload/docker/Jenkinsfile false diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Cassandra/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Cassandra/config.xml index bcbd442194..06009718e2 100644 --- a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Cassandra/config.xml +++ b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Cassandra/config.xml @@ -28,19 +28,20 @@ absolute_job_path - <font color=teal size=2>The metadata.json file of the last successful build will be copied from this job. Please specify the absolute path to the job.</font> + <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> Build/Core/Cassandra false build_number - <font color=teal size=2>Specify the build number to copy the artifact from. Default is last successful build of the job</font> + <font color=darkgreen size=2><b>OPTIONAL: Specify the build job number to upload / copy the artifact built in that job.</b></font> lastSuccessfulBuild false artifact_source - <font color=teal size=2>Choose the artifact source</font> + <font color=black size=2><b> +ArtifactRepo - Upload and keep a copy of the artifact in Jenkins, JenkinsJob - Just keep a copy of the artifact in Jenkins.</b></font> ArtifactRepo @@ -50,6 +51,15 @@ + + 0 + 0 + + false + project + false + + diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Config/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Config/config.xml index b5cb1f31d9..87cfd3e823 100644 --- a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Config/config.xml +++ b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Config/config.xml @@ -28,28 +28,38 @@ absolute_job_path - <font color=teal size=2>The metadata.json file of the last successful build will be copied from this job. Please specify the absolute path to the job.</font> + <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> Build/Core/Config false image_tag - <font color=teal size=2>Specify only tag. If the value is blank, version will be picked from the metadata.json file.</font> + <font color=darkgreen size=2><b>OPTIONAL: Specify the tag to upload a specific image version to the container registry.</b></font> false artifact_source - <font color=teal size=2>Choose the artifact source</font> + <font color=black size=2><b> +ArtifactRepo - Push the docker image to container registry. +</b></font> ArtifactRepo - JenkinsJob + + 0 + 0 + + false + project + false + + @@ -80,7 +90,15 @@ false - + + + true + false + + 1 + false + + pipelines/upload/docker/Jenkinsfile false diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Content/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Content/config.xml index ab01610396..184683d645 100644 --- a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Content/config.xml +++ b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Content/config.xml @@ -28,28 +28,38 @@ absolute_job_path - <font color=teal size=2>The metadata.json file of the last successful build will be copied from this job. Please specify the absolute path to the job.</font> + <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> Build/Core/Content false image_tag - <font color=teal size=2>Specify only tag. If the value is blank, version will be picked from the metadata.json file.</font> + <font color=darkgreen size=2><b>OPTIONAL: Specify the tag to upload a specific image version to the container registry.</b></font> false artifact_source - <font color=teal size=2>Choose the artifact source</font> + <font color=black size=2><b> +ArtifactRepo - Push the docker image to container registry. +</b></font> ArtifactRepo - JenkinsJob + + 0 + 0 + + false + project + false + + @@ -85,7 +95,7 @@ true false - 0 + 1 false diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Keycloak/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Keycloak/config.xml index 94a8c052ee..d44ca7a712 100644 --- a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Keycloak/config.xml +++ b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Keycloak/config.xml @@ -28,19 +28,20 @@ absolute_job_path - <font color=teal size=2>The metadata.json file of the last successful build will be copied from this job. Please specify the absolute path to the job.</font> + <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> Build/Core/Keycloak false build_number - <font color=teal size=2>Specify the build number to copy the artifact from. Default is last successful build of the job</font> + <font color=darkgreen size=2><b>OPTIONAL: Specify the build job number to upload / copy the artifact built in that job.</b></font> lastSuccessfulBuild false artifact_source - <font color=teal size=2>Choose the artifact source</font> + <font color=black size=2><b> +ArtifactRepo - Upload and keep a copy of the artifact in Jenkins, JenkinsJob - Just keep a copy of the artifact in Jenkins.</b></font> ArtifactRepo @@ -50,6 +51,15 @@ + + 0 + 0 + + false + project + false + + @@ -85,7 +95,7 @@ true false - 0 + 1 false diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Learner/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Learner/config.xml index f3b52f51e8..41067d62d8 100644 --- a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Learner/config.xml +++ b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Learner/config.xml @@ -28,28 +28,38 @@ absolute_job_path - <font color=teal size=2>The metadata.json file of the last successful build will be copied from this job. Please specify the absolute path to the job.</font> + <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> Build/Core/Learner false image_tag - <font color=teal size=2>Specify only tag. If the value is blank, version will be picked from the metadata.json file.</font> + <font color=darkgreen size=2><b>OPTIONAL: Specify the tag to upload a specific image version to the container registry.</b></font> false artifact_source - <font color=teal size=2>Choose the artifact source</font> + <font color=black size=2><b> +ArtifactRepo - Push the docker image to container registry. +</b></font> ArtifactRepo - JenkinsJob + + 0 + 0 + + false + project + false + + diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Player/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Player/config.xml index 8b221bd5e5..2ee20d9bc0 100644 --- a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Player/config.xml +++ b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Player/config.xml @@ -28,28 +28,38 @@ absolute_job_path - <font color=teal size=2>The metadata.json file of the last successful build will be copied from this job. Please specify the absolute path to the job.</font> + <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> Build/Core/Player false image_tag - <font color=teal size=2>Specify only tag. If the value is blank, version will be picked from the metadata.json file.</font> + <font color=darkgreen size=2><b>OPTIONAL: Specify the tag to upload a specific image version to the container registry.</b></font> false artifact_source - <font color=teal size=2>Choose the artifact source</font> + <font color=black size=2><b> +ArtifactRepo - Push the docker image to container registry. +</b></font> ArtifactRepo - JenkinsJob + + 0 + 0 + + false + project + false + + @@ -85,7 +95,7 @@ true false - 0 + 1 false diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Proxy/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Proxy/config.xml index 183235765d..b3a102f154 100644 --- a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Proxy/config.xml +++ b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Proxy/config.xml @@ -28,28 +28,38 @@ absolute_job_path - <font color=teal size=2>The metadata.json file of the last successful build will be copied from this job. Please specify the absolute path to the job.</font> + <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> Build/Core/Proxy false image_tag - <font color=teal size=2>Specify only tag. If the value is blank, version will be picked from the metadata.json file.</font> + <font color=darkgreen size=2><b>OPTIONAL: Specify the tag to upload a specific image version to the container registry.</b></font> false artifact_source - <font color=teal size=2>Choose the artifact source</font> + <font color=black size=2><b> +ArtifactRepo - Push the docker image to container registry. +</b></font> ArtifactRepo - JenkinsJob + + 0 + 0 + + false + project + false + + @@ -85,7 +95,7 @@ true false - 0 + 1 false diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Telemetry/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Telemetry/config.xml index 217e4948b9..f8d7173a2f 100644 --- a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Telemetry/config.xml +++ b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Telemetry/config.xml @@ -28,28 +28,38 @@ absolute_job_path - <font color=teal size=2>The metadata.json file of the last successful build will be copied from this job. Please specify the absolute path to the job.</font> + <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> Build/Core/Telemetry false image_tag - <font color=teal size=2>Specify only tag. If the value is blank, version will be picked from the metadata.json file.</font> + <font color=darkgreen size=2><b>OPTIONAL: Specify the tag to upload a specific image version to the container registry.</b></font> false artifact_source - <font color=teal size=2>Choose the artifact source</font> + <font color=black size=2><b> +ArtifactRepo - Push the docker image to container registry. +</b></font> ArtifactRepo - JenkinsJob + + 0 + 0 + + false + project + false + + @@ -85,7 +95,7 @@ true false - 0 + 1 false diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/DataPipeline/jobs/Analytics/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/DataPipeline/jobs/Analytics/config.xml index 241a5e1eec..ea3935f105 100644 --- a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/DataPipeline/jobs/Analytics/config.xml +++ b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/DataPipeline/jobs/Analytics/config.xml @@ -28,19 +28,20 @@ absolute_job_path - <font color=teal size=2>The metadata.json file of the last successful build will be copied from this job. Please specify the absolute path to the job.</font> + <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> Build/DataPipeline/Analytics false build_number - <font color=teal size=2>Specify the build number to copy the artifact from. Default is last successful build of the job</font> + <font color=darkgreen size=2><b>OPTIONAL: Specify the build job number to upload / copy the artifact built in that job.</b></font> lastSuccessfulBuild false artifact_source - <font color=teal size=2>Choose the artifact source</font> + <font color=black size=2><b> +ArtifactRepo - Upload and keep a copy of the artifact in Jenkins, JenkinsJob - Just keep a copy of the artifact in Jenkins.</b></font> ArtifactRepo @@ -50,6 +51,15 @@ + + 0 + 0 + + false + project + false + + @@ -66,12 +76,11 @@ - + 2 https://github.com/project-sunbird/sunbird-data-pipeline.git - f37ad21f-744a-4817-9f5e-02f8ec620b39 @@ -86,6 +95,7 @@ true false + 1 false diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/DataPipeline/jobs/DataPipeline/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/DataPipeline/jobs/DataPipeline/config.xml index 6ac65314c8..d46ea63bcd 100644 --- a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/DataPipeline/jobs/DataPipeline/config.xml +++ b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/DataPipeline/jobs/DataPipeline/config.xml @@ -28,19 +28,20 @@ absolute_job_path - <font color=teal size=2>The metadata.json file of the last successful build will be copied from this job. Please specify the absolute path to the job.</font> + <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> Build/DataPipeline/DataPipeline false build_number - <font color=teal size=2>Specify the build number to copy the artifact from. Default is last successful build of the job</font> + <font color=darkgreen size=2><b>OPTIONAL: Specify the build job number to upload / copy the artifact built in that job.</b></font> lastSuccessfulBuild false artifact_source - <font color=teal size=2>Choose the artifact source</font> + <font color=black size=2><b> +ArtifactRepo - Upload and keep a copy of the artifact in Jenkins, JenkinsJob - Just keep a copy of the artifact in Jenkins.</b></font> ArtifactRepo @@ -50,6 +51,15 @@ + + 0 + 0 + + false + project + false + + @@ -66,7 +76,7 @@ - + 2 @@ -85,6 +95,7 @@ true false + 1 false diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/DataPipeline/jobs/Secor/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/DataPipeline/jobs/Secor/config.xml index 192af77cad..6671668401 100644 --- a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/DataPipeline/jobs/Secor/config.xml +++ b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/DataPipeline/jobs/Secor/config.xml @@ -28,19 +28,20 @@ absolute_job_path - <font color=teal size=2>The metadata.json file of the last successful build will be copied from this job. Please specify the absolute path to the job.</font> + <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> Build/DataPipeline/Secor false build_number - <font color=teal size=2>Specify the build number to copy the artifact from. Default is last successful build of the job</font> + <font color=darkgreen size=2><b>OPTIONAL: Specify the build job number to upload / copy the artifact built in that job.</b></font> lastSuccessfulBuild false artifact_source - <font color=teal size=2>Choose the artifact source</font> + <font color=black size=2><b> +ArtifactRepo - Upload and keep a copy of the artifact in Jenkins, JenkinsJob - Just keep a copy of the artifact in Jenkins.</b></font> ArtifactRepo @@ -50,6 +51,15 @@ + + 0 + 0 + + false + project + false + + @@ -66,12 +76,11 @@ - + 2 https://github.com/project-sunbird/sunbird-data-pipeline.git - f37ad21f-744a-4817-9f5e-02f8ec620b39 @@ -86,6 +95,7 @@ true false + 1 false diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/KnowledgePlatform/jobs/KnowledgePlatform/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/KnowledgePlatform/jobs/KnowledgePlatform/config.xml index a920818449..73e480baa6 100644 --- a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/KnowledgePlatform/jobs/KnowledgePlatform/config.xml +++ b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/KnowledgePlatform/jobs/KnowledgePlatform/config.xml @@ -28,19 +28,20 @@ absolute_job_path - <font color=teal size=2>The metadata.json file of the last successful build will be copied from this job. Please specify the absolute path to the job.</font> + <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> Build/KnowledgePlatform/KnowledgePlatform false build_number - <font color=teal size=2>Specify the build number to copy the artifact from. Default is last successful build of the job</font> + <font color=darkgreen size=2><b>OPTIONAL: Specify the build job number to upload / copy the artifact built in that job.</b></font> lastSuccessfulBuild false artifact_source - <font color=teal size=2>Choose the artifact source</font> + <font color=black size=2><b> +ArtifactRepo - Upload and keep a copy of the artifact in Jenkins, JenkinsJob - Just keep a copy of the artifact in Jenkins.</b></font> ArtifactRepo @@ -50,6 +51,15 @@ + + 0 + 0 + + false + project + false + + @@ -65,8 +75,8 @@ - - + + 2 @@ -85,7 +95,7 @@ true false - 0 + 1 false diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4j/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4j/config.xml index 86132d58de..b7727db72d 100644 --- a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4j/config.xml +++ b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4j/config.xml @@ -28,19 +28,20 @@ absolute_job_path - <font color=teal size=2>The metadata.json file of the last successful build will be copied from this job. Please specify the absolute path to the job.</font> + <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> Build/KnowledgePlatform/Neo4j false build_number - <font color=teal size=2>Specify the build number to copy the artifact from. Default is last successful build of the job</font> + <font color=darkgreen size=2><b>OPTIONAL: Specify the build job number to upload / copy the artifact built in that job.</b></font> lastSuccessfulBuild false artifact_source - <font color=teal size=2>Choose the artifact source</font> + <font color=black size=2><b> +ArtifactRepo - Upload and keep a copy of the artifact in Jenkins, JenkinsJob - Just keep a copy of the artifact in Jenkins.</b></font> ArtifactRepo @@ -50,6 +51,15 @@ + + 0 + 0 + + false + project + false + + @@ -66,7 +76,7 @@ - + 2 @@ -80,7 +90,15 @@ false - + + + true + false + + 1 + false + + pipelines/upload/Jenkinsfile false diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/KnowledgePlatform/jobs/SyncTool/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/KnowledgePlatform/jobs/SyncTool/config.xml index 1727cdc833..991e405155 100644 --- a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/KnowledgePlatform/jobs/SyncTool/config.xml +++ b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/KnowledgePlatform/jobs/SyncTool/config.xml @@ -28,19 +28,20 @@ absolute_job_path - <font color=teal size=2>The metadata.json file of the last successful build will be copied from this job. Please specify the absolute path to the job.</font> + <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> Build/KnowledgePlatform/SyncTool false build_number - <font color=teal size=2>Specify the build number to copy the artifact from. Default is last successful build of the job</font> + <font color=darkgreen size=2><b>OPTIONAL: Specify the build job number to upload / copy the artifact built in that job.</b></font> lastSuccessfulBuild false artifact_source - <font color=teal size=2>Choose the artifact source</font> + <font color=black size=2><b> +ArtifactRepo - Upload and keep a copy of the artifact in Jenkins, JenkinsJob - Just keep a copy of the artifact in Jenkins.</b></font> ArtifactRepo @@ -50,6 +51,15 @@ + + 0 + 0 + + false + project + false + + @@ -65,8 +75,8 @@ - - + + 2 @@ -80,7 +90,15 @@ false - + + + true + false + + 1 + false + + pipelines/upload/Jenkinsfile false diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/KnowledgePlatform/jobs/Yarn/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/KnowledgePlatform/jobs/Yarn/config.xml index bd1f9dc6a9..b45c513b5b 100644 --- a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/KnowledgePlatform/jobs/Yarn/config.xml +++ b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/KnowledgePlatform/jobs/Yarn/config.xml @@ -28,19 +28,20 @@ absolute_job_path - <font color=teal size=2>The metadata.json file of the last successful build will be copied from this job. Please specify the absolute path to the job.</font> + <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> Build/KnowledgePlatform/Yarn false build_number - <font color=teal size=2>Specify the build number to copy the artifact from. Default is last successful build of the job</font> + <font color=darkgreen size=2><b>OPTIONAL: Specify the build job number to upload / copy the artifact built in that job.</b></font> lastSuccessfulBuild false artifact_source - <font color=teal size=2>Choose the artifact source</font> + <font color=black size=2><b> +ArtifactRepo - Upload and keep a copy of the artifact in Jenkins, JenkinsJob - Just keep a copy of the artifact in Jenkins.</b></font> ArtifactRepo @@ -50,6 +51,15 @@ + + 0 + 0 + + false + project + false + + @@ -65,8 +75,8 @@ - - + + 2 @@ -80,7 +90,15 @@ false - + + + true + false + + 1 + false + + pipelines/upload/Jenkinsfile false diff --git a/deploy/jenkins/jobs/Build/jobs/Core/jobs/APIManager/config.xml b/deploy/jenkins/jobs/Build/jobs/Core/jobs/APIManager/config.xml index 6ebbbdf13c..e774141dde 100644 --- a/deploy/jenkins/jobs/Build/jobs/Core/jobs/APIManager/config.xml +++ b/deploy/jenkins/jobs/Build/jobs/Core/jobs/APIManager/config.xml @@ -8,6 +8,13 @@ false false + + + false + project + false + + false @@ -58,7 +59,7 @@ false - + false @@ -63,9 +64,9 @@ choice-parameter-9061670571657 1 false - + false @@ -90,16 +91,16 @@ return "<b>Not Applicable</b>" choice-parameter-9061673103864 1 false - + false @@ -112,9 +113,18 @@ return "<b>Not Applicable</b>" + + 0 + 0 + + false + project + false + + - + 2 @@ -133,6 +143,7 @@ return "<b>Not Applicable</b>" true false + 0 false diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsFetchLogs/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsFetchLogs/config.xml index 99a10dd4f2..bdb4532949 100644 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsFetchLogs/config.xml +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsFetchLogs/config.xml @@ -28,7 +28,7 @@ instance_name - <font color=teal size=2>Choose the instance to fetch logs.</font> + <font color=black size=2><b>Choose the instance to fetch logs.</b></font> spark @@ -40,7 +40,7 @@ action - <font color=teal size=2>Choose one of the option - Fetch logs or set cronjob.</font> + <font color=black size=2><b>Choose one of the option - Fetch logs or set cronjob.</b></font> fetch-logs @@ -51,6 +51,8 @@ + 0 + 0 false project @@ -78,7 +80,7 @@ true false - 0 + 1 false @@ -87,5 +89,5 @@ false - false + true \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsGeoLocationDBSetup/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsGeoLocationDBSetup/config.xml index 2d4c3937ea..1dfdaca572 100644 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsGeoLocationDBSetup/config.xml +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsGeoLocationDBSetup/config.xml @@ -25,6 +25,8 @@ false + 0 + 0 false project @@ -52,7 +54,7 @@ true false - 0 + 1 false diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsPopulatePSQLConsumerChannelMapping/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsPopulatePSQLConsumerChannelMapping/config.xml index dccde461cf..d7a72eae8e 100644 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsPopulatePSQLConsumerChannelMapping/config.xml +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsPopulatePSQLConsumerChannelMapping/config.xml @@ -28,19 +28,19 @@ Consumer_id - <font color=teal size=2>mention the consumer ID.</font> + <font color=black size=2><b>Mention the consumer ID.</b></font> id false Channel_id - <font color=teal size=2>Channel ID to map with the Consumer ID.</font> + <font color=black size=2><b>Channel ID to map with the Consumer ID.</b></font> channel_id false status - <font color=teal size=2> 1 - to activate 0 - to make it inactive</font> + <font color=black size=2><b> 1 - to activate, 0 - to make it inactive</b></font> 1 @@ -50,13 +50,15 @@ Created_by - <font color=teal size=2>created by.</font> + <font color=black size=2><b>Created by.</b></font> analytics-team false + 0 + 0 false project @@ -93,5 +95,5 @@ false - false + true \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsReplayJobs/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsReplayJobs/config.xml index 766a05afa9..5118f01003 100644 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsReplayJobs/config.xml +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsReplayJobs/config.xml @@ -28,13 +28,13 @@ cql_query - <font color=teal size=2>Specify cql_query if any tables needs to be truncated.</font> + <font color=black size=2><b>Specify cql_query if any tables needs to be truncated.<b></font> 0 false job_type - <font color=teal size=2>Specify the job type - Replay or Run.</font> + <font color=black size=2><b>Specify the job type - Replay or Run.</b></font> replay-job @@ -46,31 +46,33 @@ job_id - <font color=teal size=2>Specify the job id.</font> + <font color=black size=2><b>Specify the job id.</b></font> false start_date - <font color=teal size=2>Specify the start date. The default value is just a placeholder which can be changed as per need.</font> + <font color=black size=2><b>Specify the start date. The default value is just a placeholder which can be changed as per need.</b></font> 2017-05-01 false end_date - <font color=teal size=2>Specify the end date. The default value is just a placeholder which can be changed as per need.</font> + <font color=black size=2><b>Specify the end date. The default value is just a placeholder which can be changed as per need.</b></font> 2017-07-11 false pause_min - <font color=teal size=2>Specify the # of minutes to pause. The default value is just a placeholder which can be changed as per need.</font> + <font color=black size=2><b>Specify the # of minutes to pause. The default value is just a placeholder which can be changed as per need.</b></font> 30 false + 0 + 0 false project @@ -107,5 +109,5 @@ false - false + true \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsStartJobManager/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsStartJobManager/config.xml index 2a9b036019..18d2b6956a 100644 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsStartJobManager/config.xml +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsStartJobManager/config.xml @@ -28,13 +28,15 @@ pause_min - <font color=teal size=2>Pause for # of minutes.</font> + <font color=black size=2><b>Pause for # of minutes.</b></font> 5 false + 0 + 0 false project @@ -62,7 +64,7 @@ true false - 0 + 1 false @@ -71,5 +73,5 @@ false - false + true \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsSubmitJobs/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsSubmitJobs/config.xml index 997732cf24..4bc26f549a 100644 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsSubmitJobs/config.xml +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsSubmitJobs/config.xml @@ -40,6 +40,7 @@ project false + 1 @@ -71,5 +72,5 @@ false - false + true \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/CassandraDbUpdate/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/CassandraDbUpdate/config.xml index f9900d4fab..49fc435bba 100644 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/CassandraDbUpdate/config.xml +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/CassandraDbUpdate/config.xml @@ -24,9 +24,16 @@ false false + + + false + project + false + + - + 2 @@ -45,6 +52,7 @@ true false + 1 false diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/DataProducts/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/DataProducts/config.xml index 90adaf52a4..4a480bffa9 100644 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/DataProducts/config.xml +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/DataProducts/config.xml @@ -28,24 +28,25 @@ absolute_job_path - <font color=teal size=2>Please specify the absolute path to the job from which the metadata.json will be copied.</font> + <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> ArtifactUpload/dev/DataPipeline/Analytics false artifact_source - <font color=teal size=2>Choose the artifact source.</font> + <font color=black size=2><b> +ArtifactRepo - Download the artifact from azure blob, JenkinsJob - Use the atrifact from Jenkins job.</b></font> choice-parameter-9061667106947 1 false - + false @@ -63,9 +64,9 @@ choice-parameter-9061670571657 1 false - + false @@ -90,16 +91,16 @@ return "<b>Not Applicable</b>" choice-parameter-9061673103864 1 false - + false @@ -112,9 +113,16 @@ return "<b>Not Applicable</b>" + + + false + project + false + + - + 2 @@ -133,6 +141,7 @@ return "<b>Not Applicable</b>" true false + 0 false diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/KafkaIndexer/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/KafkaIndexer/config.xml index 1070ed9aa6..b890e64adf 100644 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/KafkaIndexer/config.xml +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/KafkaIndexer/config.xml @@ -24,9 +24,16 @@ false false + + + false + project + false + + - + 2 @@ -45,6 +52,7 @@ true false + 1 false diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/KafkaSetup/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/KafkaSetup/config.xml index d3e598d501..ad29df38a3 100644 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/KafkaSetup/config.xml +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/KafkaSetup/config.xml @@ -24,9 +24,16 @@ false false + + + false + project + false + + - + 2 @@ -45,6 +52,7 @@ true false + 1 false diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/Monitoring/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/Monitoring/config.xml index fc12975261..79740ffe84 100644 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/Monitoring/config.xml +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/Monitoring/config.xml @@ -17,6 +17,13 @@ false false + + + false + project + false + + @@ -52,7 +59,7 @@ true false - 0 + 1 false diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/SamzaTelemetrySchemas/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/SamzaTelemetrySchemas/config.xml index f5a11c1dfd..0aca8d3e75 100644 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/SamzaTelemetrySchemas/config.xml +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/SamzaTelemetrySchemas/config.xml @@ -28,15 +28,24 @@ schema_repo_version - + <font color=black size=2><b>Specify the scehma repo version.</b></font> ${public_repo_branch} false + + 0 + 0 + + false + project + false + + - + 2 @@ -55,6 +64,7 @@ true false + 0 false diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/Secor/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/Secor/config.xml index d40915a8ca..21d54c2e64 100644 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/Secor/config.xml +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/Secor/config.xml @@ -28,24 +28,25 @@ absolute_job_path - <font color=teal size=2>Please specify the absolute path to the job from which the metadata.json will be copied.</font> + <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> ArtifactUpload/dev/DataPipeline/Secor false artifact_source - <font color=teal size=2>Choose the artifact source.</font> + <font color=black size=2><b> +ArtifactRepo - Download the artifact from azure blob, JenkinsJob - Use the atrifact from Jenkins job.</b></font> choice-parameter-9061667106947 1 false - + false @@ -63,9 +64,9 @@ choice-parameter-9061670571657 1 false - + false @@ -90,16 +91,16 @@ return "<b>Not Applicable</b>" choice-parameter-9061673103864 1 false - + false @@ -112,9 +113,16 @@ return "<b>Not Applicable</b>" + + + false + project + false + + - + 2 @@ -133,6 +141,7 @@ return "<b>Not Applicable</b>" true false + 1 false diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/Yarn/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/Yarn/config.xml index fbb8f2b620..8f7d03b584 100644 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/Yarn/config.xml +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/Yarn/config.xml @@ -28,24 +28,25 @@ absolute_job_path - <font color=teal size=2>Please specify the absolute path to the job from which the metadata.json will be copied.</font> + <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> ArtifactUpload/dev/DataPipeline/DataPipeline false artifact_source - <font color=teal size=2>Choose the artifact source.</font> + <font color=black size=2><b> +ArtifactRepo - Download the artifact from azure blob, JenkinsJob - Use the atrifact from Jenkins job.</b></font> choice-parameter-9061667106947 1 false - + false @@ -63,9 +64,9 @@ choice-parameter-9061670571657 1 false - + false @@ -90,16 +91,16 @@ return "<b>Not Applicable</b>" choice-parameter-9061673103864 1 false - + false @@ -112,6 +113,15 @@ return "<b>Not Applicable</b>" + + 0 + 0 + + false + project + false + + @@ -133,7 +143,7 @@ return "<b>Not Applicable</b>" true false - 0 + 1 false diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/CassandraDbUpdate/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/CassandraDbUpdate/config.xml index 24ab56cd58..f73ce21760 100644 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/CassandraDbUpdate/config.xml +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/CassandraDbUpdate/config.xml @@ -24,12 +24,19 @@ false false + + + false + project + false + + - + 2 @@ -48,6 +55,7 @@ true false + 1 false diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/ContentTool/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/ContentTool/config.xml index f669b39427..d4b296559d 100644 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/ContentTool/config.xml +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/ContentTool/config.xml @@ -28,24 +28,33 @@ absolute_job_path - <font color=teal size=2>Please specify the absolute path to the job from which the metadata.json will be copied.</font> + <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> ArtifactUpload/dev/KnowledgePlatform/KnowledgePlatform false command - <font color=teal size=2>enter the command</font> + <font color=black size=2><b>Enter the command.</b></font> sync false parameters - <font color=teal size=2>enter the do id </font> + <font color=black size=2><b>Enter the do id.</b></font> false + + 0 + 0 + + false + project + false + + @@ -56,7 +65,6 @@ https://github.com/project-sunbird/sunbird-learning-platform.git - f37ad21f-744a-4817-9f5e-02f8ec620b39 @@ -66,7 +74,15 @@ false - + + + true + false + + 1 + false + + pipelines/deploy/content_tool/Jenkinsfile false diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/DefinitionUpdate/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/DefinitionUpdate/config.xml deleted file mode 100644 index f5592a1956..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/DefinitionUpdate/config.xml +++ /dev/null @@ -1,53 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-learning-platform.git - - - - - ${public_repo_branch} - - - false - - - - pipelines/deploy/definition_update/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/FileSyncTool/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/FileSyncTool/config.xml index dc183d2f86..5c730b9381 100644 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/FileSyncTool/config.xml +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/FileSyncTool/config.xml @@ -28,18 +28,27 @@ absolute_job_path - <font color=teal size=2>Please specify the absolute path to the job from which the metadata.json will be copied.</font> + <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> ArtifactUpload/dev/KnowledgePlatform/Synctool false filename - <font color=teal size=2>enter valid filename with extention</font> + <font color=black size=2><b>Enter valid filename with extention.</b></font> false + + 0 + 0 + + false + project + false + + @@ -47,7 +56,6 @@ https://github.com/project-sunbird/sunbird-learning-platform.git - f37ad21f-744a-4817-9f5e-02f8ec620b39 @@ -57,9 +65,17 @@ false - + + + true + false + + 0 + false + + - pipelines/deploy/sync_file/Jenkinsfile + pipelines/deploy/file-sync-tool/Jenkinsfile false diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/KafkaSetup/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/KafkaSetup/config.xml index d0adb321dd..34321776af 100644 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/KafkaSetup/config.xml +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/KafkaSetup/config.xml @@ -24,12 +24,19 @@ false false + + + false + project + false + + - + 2 @@ -48,6 +55,7 @@ true false + 0 false diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Learning/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Learning/config.xml index 93413e7686..f0b31f5bd2 100644 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Learning/config.xml +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Learning/config.xml @@ -28,24 +28,25 @@ absolute_job_path - <font color=teal size=2>Please specify the absolute path to the job from which the metadata.json will be copied.</font> + <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> ArtifactUpload/dev/KnowledgePlatform/KnowledgePlatform false artifact_source - <font color=teal size=2>Choose the artifact source.</font> + <font color=black size=2><b> +ArtifactRepo - Download the artifact from azure blob, JenkinsJob - Use the atrifact from Jenkins job.</b></font> choice-parameter-12566219493457 1 false - + false @@ -63,9 +64,9 @@ choice-parameter-12566221440336 1 false - + false @@ -90,16 +91,16 @@ return "<b>Not Applicable</b>" choice-parameter-12566223395914 1 false - + false @@ -112,12 +113,21 @@ return "<b>Not Applicable</b>" + + 0 + 0 + + false + project + false + + - - + + 2 diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4j/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4j/config.xml index e5a4a29452..f86ce0bd7b 100644 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4j/config.xml +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4j/config.xml @@ -28,24 +28,25 @@ absolute_job_path - <font color=teal size=2>Please specify the absolute path to the job from which the metadata.json will be copied.</font> + <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> ArtifactUpload/dev/KnowledgePlatform/Neo4j false artifact_source - <font color=teal size=2>Choose the artifact source.</font> + <font color=black size=2><b> +ArtifactRepo - Download the artifact from azure blob, JenkinsJob - Use the atrifact from Jenkins job.</b></font> choice-parameter-13436883643465 1 false - + false @@ -63,9 +64,9 @@ choice-parameter-13436885688258 1 false - + false @@ -90,16 +91,16 @@ return "<b>Not Applicable</b>" choice-parameter-13436888536349 1 false - + false @@ -112,6 +113,13 @@ return "<b>Not Applicable</b>" + + + false + project + false + + diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4jElasticSearchSyncTool/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4jElasticSearchSyncTool/config.xml index 7d6513d238..2000380273 100644 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4jElasticSearchSyncTool/config.xml +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4jElasticSearchSyncTool/config.xml @@ -28,24 +28,25 @@ absolute_job_path - <font color=teal size=2>Please specify the absolute path to the job from which the metadata.json will be copied.</font> + <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> ArtifactUpload/dev/KnowledgePlatform/SyncTool false artifact_source - <font color=teal size=2>Choose the artifact source.</font> + <font color=black size=2><b> +ArtifactRepo - Download the artifact from azure blob, JenkinsJob - Use the atrifact from Jenkins job.</b></font> choice-parameter-14175006770414 1 false - + false @@ -63,9 +64,9 @@ choice-parameter-14175008677110 1 false - + false @@ -90,16 +91,16 @@ return "<b>Not Applicable</b>" choice-parameter-14175010584707 1 false - + false @@ -112,7 +113,7 @@ return "<b>Not Applicable</b>" command - <font color=teal size=2>Select a command</font> + <font color=black size=2><b>Select a command</b></font> sync @@ -124,25 +125,34 @@ return "<b>Not Applicable</b>" parameters - <font color=teal size=2>It is parameter to pass with command.<br> + <font color=black size=2><b>It is parameter to pass with command.<br> ex:<br> --objectType Content<br> --ids do_10101010,do_20202020<br> --startDate 2018-03-01 --endDate 2018-03-31<br> --objectType Content --startDate 2018-03-01 --endDate 2018-03-31<br> --graphId en --objectType Word<br> - --graph domain --objectType Channel<br></font> + --graph domain --objectType Channel<br></b></font> --graph domain false + + 0 + 0 + + false + project + false + + - + 2 @@ -161,6 +171,7 @@ return "<b>Not Applicable</b>" true false + 0 false diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/SamzaTelemetrySchemas/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/SamzaTelemetrySchemas/config.xml deleted file mode 100644 index 7fe8b48f50..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/SamzaTelemetrySchemas/config.xml +++ /dev/null @@ -1,66 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - host - <font color=teal size=2>Please specify host to deploy. The default value is just a placeholder which can be changed as per inventory.</font> - dp-yarn - false - - - version - <font color=teal size=2>Please specify version to deploy. The default value is just a placeholder which can be changed as per need.</font> - release-1.9 - false - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-learning-platform.git - - - - - ${public_repo_branch} - - - false - - - - pipelines/deploy/samza_telemetry_schemas/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Search/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Search/config.xml index 1ac06db89c..3c55d84563 100644 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Search/config.xml +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Search/config.xml @@ -28,24 +28,25 @@ absolute_job_path - <font color=teal size=2>Please specify the absolute path to the job from which the metadata.json will be copied.</font> + <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> ArtifactUpload/dev/KnowledgePlatform/KnowledgePlatform false artifact_source - <font color=teal size=2>Choose the artifact source.</font> + <font color=black size=2><b> +ArtifactRepo - Download the artifact from azure blob, JenkinsJob - Use the atrifact from Jenkins job.</b></font> choice-parameter-14760318274338 1 false - + false @@ -63,9 +64,9 @@ choice-parameter-14760320375443 1 false - + false @@ -90,16 +91,16 @@ return "<b>Not Applicable</b>" choice-parameter-14760322347747 1 false - + false @@ -112,12 +113,19 @@ return "<b>Not Applicable</b>" + + + false + project + false + + - + 2 diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/StartNeo4jCluster/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/StartNeo4jCluster/config.xml index 6161296a04..9e81000e2b 100644 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/StartNeo4jCluster/config.xml +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/StartNeo4jCluster/config.xml @@ -24,12 +24,19 @@ false false + + + false + project + false + + - + 2 diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Yarn/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Yarn/config.xml index a10ff4f57d..d91fa2c36f 100644 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Yarn/config.xml +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Yarn/config.xml @@ -28,24 +28,25 @@ absolute_job_path - <font color=teal size=2>Please specify the absolute path to the job from which the metadata.json will be copied.</font> + <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> ArtifactUpload/dev/KnowledgePlatform/Yarn false artifact_source - <font color=teal size=2>Choose the artifact source.</font> + <font color=black size=2><b> +ArtifactRepo - Download the artifact from azure blob, JenkinsJob - Use the atrifact from Jenkins job.</b></font> choice-parameter-2874232768088857 1 false - + false @@ -63,9 +64,9 @@ choice-parameter-2874449088885218 1 false - + false @@ -90,16 +91,16 @@ return "<b>Not Applicable</b>" choice-parameter-2877900313772031 1 false - + false @@ -112,12 +113,21 @@ return "<b>Not Applicable</b>" + + 0 + 0 + + false + project + false + + - + 2 @@ -136,6 +146,7 @@ return "<b>Not Applicable</b>" true false + 0 false diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Plugins/jobs/CollectionEditor/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Plugins/jobs/CollectionEditor/config.xml index d9ea9fc12c..3a97381d49 100644 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Plugins/jobs/CollectionEditor/config.xml +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Plugins/jobs/CollectionEditor/config.xml @@ -12,19 +12,21 @@ absolute_job_path - <font color=teal size=2>Please specify the absolute path to the job from which the metadata.json will be copied.</font> + <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> Build/Plugins/CollectionEditor false container_name - <font color=teal size=2>Please specify azure container name.</font> + <font color=black size=2><b>Please specify azure container name.</b></font> plugins false + 0 + 0 false project @@ -42,7 +44,7 @@ - sunbird-bootcamp + ${public_repo_branch} false diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Plugins/jobs/ContentFramework/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Plugins/jobs/ContentFramework/config.xml index d17b47fc6a..f0e007d858 100644 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Plugins/jobs/ContentFramework/config.xml +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Plugins/jobs/ContentFramework/config.xml @@ -12,19 +12,21 @@ absolute_job_path - <font color=teal size=2>Please specify the absolute path to the job from which the metadata.json will be copied.</font> + <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> Build/Plugins/GenericEditor false container_name - <font color=teal size=2>Please specify azure container name.</font> + <font color=black size=2><b>Please specify azure container name.</b></font> plugins false + 0 + 0 false project @@ -42,7 +44,7 @@ - release-1.14.0-S2 + ${public_repo_branch} false diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Plugins/jobs/ContentRendererPreview/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Plugins/jobs/ContentRendererPreview/config.xml index f82874aeb5..f866564dad 100644 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Plugins/jobs/ContentRendererPreview/config.xml +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Plugins/jobs/ContentRendererPreview/config.xml @@ -12,19 +12,21 @@ absolute_job_path - <font color=teal size=2>Please specify the absolute path to the job from which the metadata.json will be copied.</font> + <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> Build/Plugins/CollectionEditor false container_name - <font color=teal size=2>Please specify azure container name.</font> + <font color=black size=2><b>Please specify azure container name.</b></font> plugins false + 0 + 0 false project @@ -42,7 +44,7 @@ - sunbird-bootcamp + ${public_repo_branch} false diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Plugins/jobs/GenericEditor/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Plugins/jobs/GenericEditor/config.xml index 53213da2eb..1990aa563a 100644 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Plugins/jobs/GenericEditor/config.xml +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Plugins/jobs/GenericEditor/config.xml @@ -12,19 +12,21 @@ absolute_job_path - <font color=teal size=2>Please specify the absolute path to the job from which the metadata.json will be copied.</font> + <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> Build/Plugins/GenericEditor false container_name - <font color=teal size=2>Please specify azure container name.</font> + <font color=black size=2><b>Please specify azure container name.</b></font> plugins false + 0 + 0 false project @@ -42,7 +44,7 @@ - sunbird-bootcamp + ${public_repo_branch} false diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Summary/jobs/DeployedVersions/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Summary/jobs/DeployedVersions/config.xml index 0c93db6c24..ea6986969b 100644 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Summary/jobs/DeployedVersions/config.xml +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Summary/jobs/DeployedVersions/config.xml @@ -17,6 +17,13 @@ false false + + + false + project + false + + @@ -33,7 +40,7 @@ - + 2 @@ -42,7 +49,7 @@ - ${public_repo_branch} + final-variable-refac false @@ -52,6 +59,7 @@ true false + 0 false diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/JenkinsSlave/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/JenkinsSlave/config.xml index 894e53322e..4e632379e4 100644 --- a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/JenkinsSlave/config.xml +++ b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/JenkinsSlave/config.xml @@ -21,15 +21,24 @@ jenkins_host - <font color=teal size=2>Provide the IP of Jenkins host</font> + <font color=black size=2><b>Provide the IP of Jenkins host.</b></font> false + + 0 + 0 + + false + project + false + + - + 2 @@ -48,6 +57,7 @@ true false + 0 false diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Kafka/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Kafka/config.xml index 7424761629..d78cd9a248 100644 --- a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Kafka/config.xml +++ b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Kafka/config.xml @@ -17,9 +17,16 @@ false false + + + false + project + false + + - - + + 2 @@ -33,7 +40,15 @@ false - + + + true + false + + 0 + false + + pipelines/provision/kafka/Jenkinsfile false diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Keycloak/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Keycloak/config.xml index ab4f8b91e0..fcc171f960 100644 --- a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Keycloak/config.xml +++ b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Keycloak/config.xml @@ -17,9 +17,16 @@ false false + + + false + project + false + + - + 2 @@ -38,6 +45,14 @@ true false + 0 + false + + + true + false + + 0 false diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Registry/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Registry/config.xml index 1650ef91d0..0d74bd2f96 100644 --- a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Registry/config.xml +++ b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Registry/config.xml @@ -17,9 +17,16 @@ false false + + + false + project + false + + - - + + 2 @@ -33,7 +40,15 @@ false - + + + true + false + + 0 + false + + pipelines/provision/registry/Jenkinsfile false diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Secor/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Secor/config.xml index 90f103f265..cf74052977 100644 --- a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Secor/config.xml +++ b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Secor/config.xml @@ -17,9 +17,16 @@ false false + + + false + project + false + + - - + + 2 @@ -33,7 +40,15 @@ false - + + + true + false + + 0 + false + + pipelines/provision/secor/Jenkinsfile false diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/Kafka/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/Kafka/config.xml index 8a4be5de4e..6d92ec2f44 100644 --- a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/Kafka/config.xml +++ b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/Kafka/config.xml @@ -24,9 +24,16 @@ false false + + + false + project + false + + - - + + 2 @@ -40,7 +47,15 @@ false - + + + true + false + + 0 + false + + pipelines/provision/kafka/Jenkinsfile false diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/TelemetrySearch/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/TelemetrySearch/config.xml index 3442b0d5a1..b51b86935f 100644 --- a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/TelemetrySearch/config.xml +++ b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/TelemetrySearch/config.xml @@ -24,9 +24,16 @@ false false + + + false + project + false + + - - + + 2 @@ -40,7 +47,15 @@ false - + + + true + false + + 0 + false + + pipelines/provision/telemetry_elasticsearch/Jenkinsfile false diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/Zookeeper/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/Zookeeper/config.xml index f10cab2b47..a8b9cceb7f 100644 --- a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/Zookeeper/config.xml +++ b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/Zookeeper/config.xml @@ -23,9 +23,16 @@ false false + + + false + project + false + + - - + + 2 @@ -39,7 +46,15 @@ false - + + + true + false + + 0 + false + + pipelines/provision/zookeeper/Jenkinsfile false diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Learning/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Learning/config.xml index c7ceb39a5b..bb374f354d 100644 --- a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Learning/config.xml +++ b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Learning/config.xml @@ -24,12 +24,19 @@ false false + + + false + project + false + + - + 2 @@ -43,7 +50,15 @@ false - + + + true + false + + 0 + false + + pipelines/provision/learning/Jenkinsfile false diff --git a/deploy/jenkins/plugins.txt b/deploy/jenkins/plugins.txt index 2c2523e845..f187ac5d3a 100644 --- a/deploy/jenkins/plugins.txt +++ b/deploy/jenkins/plugins.txt @@ -46,7 +46,7 @@ windows-slaves@1.4 build-name-setter@1.7.0 jquery@1.12.4-0 active-directory@2.12 -script-security@1.52 +script-security@1.53 credentials@2.1.18 copyartifact@1.41 throttle-concurrents@2.0.1 From caa1e99662a76096dde9f7aa6d500cb0ccfee035 Mon Sep 17 00:00:00 2001 From: msknext Date: Mon, 25 Feb 2019 06:27:13 +0000 Subject: [PATCH 1250/1345] feat #000: Adding staging config files --- .../jobs/Deploy/jobs/staging/config.xml | 29 +++ .../Deploy/jobs/staging/jobs/Core/config.xml | 29 +++ .../jobs/APIManager/builds/lastFailedBuild | 1 + .../APIManager/builds/lastSuccessfulBuild | 1 + .../jobs/Core/jobs/APIManager/config.xml | 86 ++++++++ .../jobs/Core/jobs/APIManager/nextBuildNumber | 1 + .../jobs/AdminUtils/builds/lastFailedBuild | 1 + .../jobs/AdminUtils/builds/lastStableBuild | 1 + .../AdminUtils/builds/lastSuccessfulBuild | 1 + .../jobs/AdminUtils/builds/lastUnstableBuild | 1 + .../AdminUtils/builds/lastUnsuccessfulBuild | 1 + .../jobs/Core/jobs/AdminUtils/config.xml | 86 ++++++++ .../jobs/Core/jobs/AdminUtils/nextBuildNumber | 1 + .../builds/lastFailedBuild | 1 + .../builds/lastSuccessfulBuild | 1 + .../jobs/ApplicationElasticSearch/config.xml | 58 ++++++ .../ApplicationElasticSearch/nextBuildNumber | 1 + .../Core/jobs/Badger/builds/lastFailedBuild | 1 + .../jobs/Badger/builds/lastSuccessfulBuild | 1 + .../staging/jobs/Core/jobs/Badger/config.xml | 86 ++++++++ .../jobs/Core/jobs/Badger/nextBuildNumber | 1 + .../jobs/Bootstrap/builds/lastFailedBuild | 1 + .../jobs/Bootstrap/builds/lastSuccessfulBuild | 1 + .../jobs/Core/jobs/Bootstrap/config.xml | 61 ++++++ .../jobs/Core/jobs/Bootstrap/nextBuildNumber | 1 + .../jobs/Cassandra/builds/lastFailedBuild | 1 + .../jobs/Cassandra/builds/lastSuccessfulBuild | 1 + .../jobs/Core/jobs/Cassandra/config.xml | 149 ++++++++++++++ .../jobs/Core/jobs/Cassandra/nextBuildNumber | 1 + .../Core/jobs/Config/builds/lastFailedBuild | 1 + .../jobs/Config/builds/lastSuccessfulBuild | 1 + .../staging/jobs/Core/jobs/Config/config.xml | 86 ++++++++ .../jobs/Core/jobs/Config/nextBuildNumber | 1 + .../Core/jobs/Content/builds/lastFailedBuild | 1 + .../jobs/Content/builds/lastSuccessfulBuild | 1 + .../staging/jobs/Core/jobs/Content/config.xml | 86 ++++++++ .../jobs/Core/jobs/Content/nextBuildNumber | 1 + .../Core/jobs/Keycloak/builds/lastFailedBuild | 1 + .../jobs/Keycloak/builds/lastSuccessfulBuild | 1 + .../jobs/Core/jobs/Keycloak/config.xml | 68 +++++++ .../jobs/Core/jobs/Keycloak/nextBuildNumber | 1 + .../jobs/KeycloakRealm/builds/lastFailedBuild | 1 + .../KeycloakRealm/builds/lastSuccessfulBuild | 1 + .../jobs/Core/jobs/KeycloakRealm/config.xml | 68 +++++++ .../Core/jobs/KeycloakRealm/nextBuildNumber | 1 + .../Core/jobs/Learner/builds/lastFailedBuild | 1 + .../jobs/Learner/builds/lastSuccessfulBuild | 1 + .../staging/jobs/Core/jobs/Learner/config.xml | 86 ++++++++ .../jobs/Core/jobs/Learner/nextBuildNumber | 1 + .../builds/lastFailedBuild | 1 + .../builds/lastSuccessfulBuild | 1 + .../Core/jobs/LoggerElasticSearch/config.xml | 60 ++++++ .../jobs/LoggerElasticSearch/nextBuildNumber | 1 + .../Core/jobs/Logging/builds/lastFailedBuild | 1 + .../jobs/Logging/builds/lastSuccessfulBuild | 1 + .../staging/jobs/Core/jobs/Logging/config.xml | 60 ++++++ .../jobs/Core/jobs/Logging/nextBuildNumber | 1 + .../jobs/Monitoring/builds/lastFailedBuild | 1 + .../Monitoring/builds/lastSuccessfulBuild | 1 + .../jobs/Core/jobs/Monitoring/config.xml | 60 ++++++ .../jobs/Core/jobs/Monitoring/nextBuildNumber | 1 + .../jobs/OnboardAPIs/builds/lastFailedBuild | 1 + .../OnboardAPIs/builds/lastSuccessfulBuild | 1 + .../jobs/Core/jobs/OnboardAPIs/config.xml | 67 +++++++ .../Core/jobs/OnboardAPIs/nextBuildNumber | 1 + .../OnboardConsumers/builds/lastFailedBuild | 1 + .../builds/lastSuccessfulBuild | 1 + .../Core/jobs/OnboardConsumers/config.xml | 58 ++++++ .../jobs/OnboardConsumers/nextBuildNumber | 1 + .../Core/jobs/Player/builds/lastFailedBuild | 1 + .../jobs/Player/builds/lastSuccessfulBuild | 1 + .../staging/jobs/Core/jobs/Player/config.xml | 86 ++++++++ .../jobs/Core/jobs/Player/nextBuildNumber | 1 + .../Core/jobs/Proxy/builds/lastFailedBuild | 1 + .../jobs/Proxy/builds/lastSuccessfulBuild | 1 + .../staging/jobs/Core/jobs/Proxy/config.xml | 76 ++++++++ .../jobs/Core/jobs/Proxy/nextBuildNumber | 1 + .../jobs/Telemetry/builds/lastFailedBuild | 1 + .../jobs/Telemetry/builds/lastSuccessfulBuild | 1 + .../jobs/Core/jobs/Telemetry/config.xml | 86 ++++++++ .../jobs/Core/jobs/Telemetry/nextBuildNumber | 1 + .../TelemetryLogstash/builds/lastFailedBuild | 1 + .../builds/lastSuccessfulBuild | 1 + .../Core/jobs/TelemetryLogstash/config.xml | 60 ++++++ .../jobs/TelemetryLogstash/nextBuildNumber | 1 + .../builds/lastFailedBuild | 1 + .../builds/lastSuccessfulBuild | 1 + .../TelemetryLogstashDataPipeline/config.xml | 58 ++++++ .../nextBuildNumber | 1 + .../jobs/staging/jobs/DataPipeline/config.xml | 29 +++ .../DataPipeline/jobs/AnalyticsAPI/config.xml | 156 +++++++++++++++ .../jobs/AnalyticsAPI/nextBuildNumber | 1 + .../jobs/AnalyticsFetchLogs/config.xml | 93 +++++++++ .../jobs/AnalyticsFetchLogs/nextBuildNumber | 1 + .../AnalyticsGeoLocationDBSetup/config.xml | 67 +++++++ .../nextBuildNumber | 1 + .../config.xml | 99 ++++++++++ .../nextBuildNumber | 1 + .../jobs/AnalyticsReplayJobs/config.xml | 113 +++++++++++ .../jobs/AnalyticsReplayJobs/nextBuildNumber | 1 + .../jobs/AnalyticsStartJobManager/config.xml | 77 ++++++++ .../AnalyticsStartJobManager/nextBuildNumber | 1 + .../jobs/AnalyticsSubmitJobs/config.xml | 76 ++++++++ .../jobs/AnalyticsSubmitJobs/nextBuildNumber | 1 + .../jobs/CassandraDbUpdate/config.xml | 65 +++++++ .../jobs/CassandraDbUpdate/nextBuildNumber | 1 + .../DataPipeline/jobs/DataProducts/config.xml | 154 +++++++++++++++ .../jobs/DataProducts/nextBuildNumber | 1 + .../DataPipeline/jobs/KafkaIndexer/config.xml | 65 +++++++ .../jobs/KafkaIndexer/nextBuildNumber | 1 + .../DataPipeline/jobs/KafkaSetup/config.xml | 65 +++++++ .../jobs/KafkaSetup/nextBuildNumber | 1 + .../DataPipeline/jobs/Monitoring/config.xml | 72 +++++++ .../jobs/Monitoring/nextBuildNumber | 1 + .../jobs/SamzaTelemetrySchemas/config.xml | 77 ++++++++ .../SamzaTelemetrySchemas/nextBuildNumber | 1 + .../jobs/DataPipeline/jobs/Secor/config.xml | 154 +++++++++++++++ .../DataPipeline/jobs/Secor/nextBuildNumber | 1 + .../jobs/DataPipeline/jobs/Yarn/config.xml | 156 +++++++++++++++ .../DataPipeline/jobs/Yarn/nextBuildNumber | 1 + .../staging/jobs/KnowledgePlatform/config.xml | 29 +++ .../jobs/CassandraDbUpdate/config.xml | 68 +++++++ .../jobs/CassandraDbUpdate/nextBuildNumber | 1 + .../jobs/ContentTool/config.xml | 92 +++++++++ .../jobs/ContentTool/nextBuildNumber | 1 + .../jobs/FileSyncTool/config.xml | 83 ++++++++ .../jobs/FileSyncTool/nextBuildNumber | 1 + .../jobs/KafkaSetup/config.xml | 68 +++++++ .../jobs/KafkaSetup/nextBuildNumber | 1 + .../jobs/Learning/config.xml | 159 +++++++++++++++ .../jobs/Learning/nextBuildNumber | 1 + .../jobs/Monitoring/config.xml | 65 +++++++ .../jobs/Monitoring/nextBuildNumber | 1 + .../KnowledgePlatform/jobs/Neo4j/config.xml | 157 +++++++++++++++ .../jobs/Neo4j/nextBuildNumber | 1 + .../jobs/Neo4jDefinitionUpdate/config.xml | 60 ++++++ .../Neo4jDefinitionUpdate/nextBuildNumber | 1 + .../Neo4jElasticSearchSyncTool/config.xml | 184 ++++++++++++++++++ .../nextBuildNumber | 1 + .../KnowledgePlatform/jobs/Search/config.xml | 157 +++++++++++++++ .../jobs/Search/nextBuildNumber | 1 + .../jobs/StartNeo4jCluster/config.xml | 68 +++++++ .../jobs/StartNeo4jCluster/nextBuildNumber | 1 + .../jobs/ValidateLearning/config.xml | 60 ++++++ .../jobs/ValidateLearning/nextBuildNumber | 1 + .../KnowledgePlatform/jobs/Yarn/config.xml | 159 +++++++++++++++ .../jobs/Yarn/nextBuildNumber | 1 + .../jobs/staging/jobs/Plugins/config.xml | 28 +++ .../Plugins/jobs/CollectionEditor/config.xml | 67 +++++++ .../jobs/CollectionEditor/nextBuildNumber | 1 + .../Plugins/jobs/ContentFramework/config.xml | 67 +++++++ .../jobs/ContentFramework/nextBuildNumber | 1 + .../jobs/ContentRendererPreview/config.xml | 67 +++++++ .../ContentRendererPreview/nextBuildNumber | 1 + .../Plugins/jobs/GenericEditor/config.xml | 67 +++++++ .../jobs/GenericEditor/nextBuildNumber | 1 + .../jobs/staging/jobs/Summary/config.xml | 29 +++ .../Summary/jobs/DeployedVersions/config.xml | 72 +++++++ .../jobs/DeployedVersions/nextBuildNumber | 1 + .../OpsAdministration/jobs/staging/config.xml | 29 +++ .../jobs/staging/jobs/Core/config.xml | 29 +++ .../ApplicationElasticsearchBackup/config.xml | 50 +++++ .../nextBuildNumber | 1 + .../config.xml | 50 +++++ .../nextBuildNumber | 1 + .../jobs/Core/jobs/Bootstrap/config.xml | 67 +++++++ .../jobs/Core/jobs/Bootstrap/nextBuildNumber | 1 + .../jobs/Core/jobs/CassandraBackup/config.xml | 50 +++++ .../Core/jobs/CassandraBackup/nextBuildNumber | 1 + .../jobs/LoggerElasticSearchBackup/config.xml | 50 +++++ .../LoggerElasticSearchBackup/nextBuildNumber | 1 + .../LoggerElasticSearchRestore/config.xml | 50 +++++ .../nextBuildNumber | 1 + .../Core/jobs/PostgresqlBackup/config.xml | 51 +++++ .../jobs/PostgresqlBackup/nextBuildNumber | 1 + .../Core/jobs/PostgresqlRestore/config.xml | 51 +++++ .../jobs/PostgresqlRestore/nextBuildNumber | 1 + .../Core/jobs/PrometheusBackup/config.xml | 50 +++++ .../jobs/PrometheusBackup/nextBuildNumber | 1 + .../jobs/Core/jobs/SwarmBootstrap/config.xml | 50 +++++ .../Core/jobs/SwarmBootstrap/nextBuildNumber | 1 + .../jobs/staging/jobs/DataPipeline/config.xml | 29 +++ .../jobs/AnalyticsAPILogs/config.xml | 51 +++++ .../jobs/AnalyticsAPILogs/nextBuildNumber | 1 + .../DataPipeline/jobs/Bootstrap/config.xml | 60 ++++++ .../jobs/Bootstrap/nextBuildNumber | 1 + .../jobs/CassandraBackup/config.xml | 74 +++++++ .../jobs/CassandraBackup/nextBuildNumber | 1 + .../jobs/CassandraRestore/config.xml | 74 +++++++ .../jobs/CassandraRestore/nextBuildNumber | 1 + .../jobs/ElasticsearchBackup/config.xml | 67 +++++++ .../jobs/ElasticsearchBackup/nextBuildNumber | 1 + .../jobs/ElasticsearchRestore/config.xml | 75 +++++++ .../jobs/ElasticsearchRestore/nextBuildNumber | 1 + .../jobs/InfluxDBBackup/config.xml | 57 ++++++ .../jobs/InfluxDBBackup/nextBuildNumber | 1 + .../jobs/PostgresqlBackup/config.xml | 51 +++++ .../jobs/PostgresqlBackup/nextBuildNumber | 1 + .../jobs/PostgresqlRestore/config.xml | 51 +++++ .../jobs/PostgresqlRestore/nextBuildNumber | 1 + .../staging/jobs/KnowledgePlatform/config.xml | 29 +++ .../jobs/Bootstrap/config.xml | 60 ++++++ .../jobs/Bootstrap/nextBuildNumber | 1 + .../jobs/CassandraBackup/config.xml | 67 +++++++ .../jobs/CassandraBackup/nextBuildNumber | 1 + .../jobs/CassandraRestore/config.xml | 67 +++++++ .../jobs/CassandraRestore/nextBuildNumber | 1 + .../jobs/ElasticsearchBackup/config.xml | 53 +++++ .../jobs/ElasticsearchBackup/nextBuildNumber | 1 + .../jobs/ElasticsearchRestore/config.xml | 61 ++++++ .../jobs/ElasticsearchRestore/nextBuildNumber | 1 + .../jobs/Neo4jBackup/config.xml | 43 ++++ .../jobs/Neo4jBackup/nextBuildNumber | 1 + .../jobs/Neo4jRestore/config.xml | 85 ++++++++ .../jobs/Neo4jRestore/nextBuildNumber | 1 + .../jobs/Provision/jobs/staging/config.xml | 29 +++ .../jobs/staging/jobs/Core/config.xml | 29 +++ .../jobs/Core/jobs/Cassandra/config.xml | 50 +++++ .../jobs/Core/jobs/Cassandra/nextBuildNumber | 1 + .../jobs/Core/jobs/JenkinsSlave/config.xml | 70 +++++++ .../Core/jobs/JenkinsSlave/nextBuildNumber | 1 + .../staging/jobs/Core/jobs/Kafka/config.xml | 58 ++++++ .../jobs/Core/jobs/Kafka/nextBuildNumber | 1 + .../jobs/Core/jobs/Keycloak/config.xml | 65 +++++++ .../jobs/Core/jobs/Keycloak/nextBuildNumber | 1 + .../Core/jobs/LogElasticSearch/config.xml | 50 +++++ .../jobs/LogElasticSearch/nextBuildNumber | 1 + .../jobs/Core/jobs/Postgres/config.xml | 50 +++++ .../jobs/Core/jobs/Postgres/nextBuildNumber | 1 + .../Core/jobs/PostgresDbUpdate/config.xml | 50 +++++ .../jobs/PostgresDbUpdate/nextBuildNumber | 1 + .../jobs/Core/jobs/Registry/config.xml | 58 ++++++ .../jobs/Core/jobs/Registry/nextBuildNumber | 1 + .../staging/jobs/Core/jobs/Secor/config.xml | 58 ++++++ .../jobs/Core/jobs/Secor/nextBuildNumber | 1 + .../jobs/staging/jobs/DataPipeline/config.xml | 29 +++ .../DataPipeline/jobs/AnalyticsAPI/config.xml | 57 ++++++ .../jobs/AnalyticsAPI/nextBuildNumber | 1 + .../jobs/AnalyticsSecor/config.xml | 56 ++++++ .../jobs/AnalyticsSecor/nextBuildNumber | 1 + .../jobs/AnalyticsSpark/config.xml | 57 ++++++ .../jobs/AnalyticsSpark/nextBuildNumber | 1 + .../DataPipeline/jobs/Cassandra/config.xml | 50 +++++ .../jobs/Cassandra/nextBuildNumber | 1 + .../DataPipeline/jobs/InfluxDB/config.xml | 56 ++++++ .../jobs/InfluxDB/nextBuildNumber | 1 + .../jobs/DataPipeline/jobs/Kafka/config.xml | 65 +++++++ .../DataPipeline/jobs/Kafka/nextBuildNumber | 1 + .../jobs/DataPipeline/jobs/Kibana/config.xml | 57 ++++++ .../DataPipeline/jobs/Kibana/nextBuildNumber | 1 + .../DataPipeline/jobs/Postgres/config.xml | 56 ++++++ .../jobs/Postgres/nextBuildNumber | 1 + .../jobs/TelemetrySearch/config.xml | 65 +++++++ .../jobs/TelemetrySearch/nextBuildNumber | 1 + .../jobs/DataPipeline/jobs/Yarn/config.xml | 57 ++++++ .../DataPipeline/jobs/Yarn/nextBuildNumber | 1 + .../DataPipeline/jobs/Zookeeper/config.xml | 64 ++++++ .../jobs/Zookeeper/nextBuildNumber | 1 + .../staging/jobs/KnowledgePlatform/config.xml | 29 +++ .../jobs/Cassandra/config.xml | 61 ++++++ .../jobs/Cassandra/nextBuildNumber | 1 + .../jobs/CompositeSearch/config.xml | 61 ++++++ .../jobs/CompositeSearch/nextBuildNumber | 1 + .../KnowledgePlatform/jobs/Kafka/config.xml | 61 ++++++ .../jobs/Kafka/nextBuildNumber | 1 + .../jobs/Learning/config.xml | 68 +++++++ .../jobs/Learning/nextBuildNumber | 1 + .../KnowledgePlatform/jobs/Neo4j/config.xml | 61 ++++++ .../jobs/Neo4j/nextBuildNumber | 1 + .../KnowledgePlatform/jobs/Redis/config.xml | 61 ++++++ .../jobs/Redis/nextBuildNumber | 1 + .../KnowledgePlatform/jobs/Search/config.xml | 60 ++++++ .../jobs/Search/nextBuildNumber | 1 + .../KnowledgePlatform/jobs/Yarn/config.xml | 68 +++++++ .../jobs/Yarn/nextBuildNumber | 1 + .../jobs/Zookeeper/config.xml | 61 ++++++ .../jobs/Zookeeper/nextBuildNumber | 1 + 277 files changed, 8585 insertions(+) create mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/config.xml create mode 120000 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/APIManager/builds/lastFailedBuild create mode 120000 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/APIManager/builds/lastSuccessfulBuild create mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/APIManager/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/APIManager/nextBuildNumber create mode 120000 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/AdminUtils/builds/lastFailedBuild create mode 120000 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/AdminUtils/builds/lastStableBuild create mode 120000 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/AdminUtils/builds/lastSuccessfulBuild create mode 120000 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/AdminUtils/builds/lastUnstableBuild create mode 120000 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/AdminUtils/builds/lastUnsuccessfulBuild create mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/AdminUtils/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/AdminUtils/nextBuildNumber create mode 120000 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/ApplicationElasticSearch/builds/lastFailedBuild create mode 120000 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/ApplicationElasticSearch/builds/lastSuccessfulBuild create mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/ApplicationElasticSearch/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/ApplicationElasticSearch/nextBuildNumber create mode 120000 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Badger/builds/lastFailedBuild create mode 120000 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Badger/builds/lastSuccessfulBuild create mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Badger/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Badger/nextBuildNumber create mode 120000 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Bootstrap/builds/lastFailedBuild create mode 120000 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Bootstrap/builds/lastSuccessfulBuild create mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Bootstrap/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Bootstrap/nextBuildNumber create mode 120000 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Cassandra/builds/lastFailedBuild create mode 120000 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Cassandra/builds/lastSuccessfulBuild create mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Cassandra/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Cassandra/nextBuildNumber create mode 120000 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Config/builds/lastFailedBuild create mode 120000 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Config/builds/lastSuccessfulBuild create mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Config/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Config/nextBuildNumber create mode 120000 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Content/builds/lastFailedBuild create mode 120000 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Content/builds/lastSuccessfulBuild create mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Content/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Content/nextBuildNumber create mode 120000 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Keycloak/builds/lastFailedBuild create mode 120000 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Keycloak/builds/lastSuccessfulBuild create mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Keycloak/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Keycloak/nextBuildNumber create mode 120000 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/KeycloakRealm/builds/lastFailedBuild create mode 120000 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/KeycloakRealm/builds/lastSuccessfulBuild create mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/KeycloakRealm/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/KeycloakRealm/nextBuildNumber create mode 120000 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Learner/builds/lastFailedBuild create mode 120000 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Learner/builds/lastSuccessfulBuild create mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Learner/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Learner/nextBuildNumber create mode 120000 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/LoggerElasticSearch/builds/lastFailedBuild create mode 120000 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/LoggerElasticSearch/builds/lastSuccessfulBuild create mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/LoggerElasticSearch/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/LoggerElasticSearch/nextBuildNumber create mode 120000 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Logging/builds/lastFailedBuild create mode 120000 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Logging/builds/lastSuccessfulBuild create mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Logging/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Logging/nextBuildNumber create mode 120000 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Monitoring/builds/lastFailedBuild create mode 120000 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Monitoring/builds/lastSuccessfulBuild create mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Monitoring/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Monitoring/nextBuildNumber create mode 120000 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/OnboardAPIs/builds/lastFailedBuild create mode 120000 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/OnboardAPIs/builds/lastSuccessfulBuild create mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/OnboardAPIs/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/OnboardAPIs/nextBuildNumber create mode 120000 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/OnboardConsumers/builds/lastFailedBuild create mode 120000 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/OnboardConsumers/builds/lastSuccessfulBuild create mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/OnboardConsumers/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/OnboardConsumers/nextBuildNumber create mode 120000 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Player/builds/lastFailedBuild create mode 120000 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Player/builds/lastSuccessfulBuild create mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Player/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Player/nextBuildNumber create mode 120000 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Proxy/builds/lastFailedBuild create mode 120000 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Proxy/builds/lastSuccessfulBuild create mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Proxy/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Proxy/nextBuildNumber create mode 120000 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Telemetry/builds/lastFailedBuild create mode 120000 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Telemetry/builds/lastSuccessfulBuild create mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Telemetry/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Telemetry/nextBuildNumber create mode 120000 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/TelemetryLogstash/builds/lastFailedBuild create mode 120000 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/TelemetryLogstash/builds/lastSuccessfulBuild create mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/TelemetryLogstash/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/TelemetryLogstash/nextBuildNumber create mode 120000 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/TelemetryLogstashDataPipeline/builds/lastFailedBuild create mode 120000 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/TelemetryLogstashDataPipeline/builds/lastSuccessfulBuild create mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/TelemetryLogstashDataPipeline/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/TelemetryLogstashDataPipeline/nextBuildNumber create mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/AnalyticsAPI/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/AnalyticsAPI/nextBuildNumber create mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/AnalyticsFetchLogs/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/AnalyticsFetchLogs/nextBuildNumber create mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/AnalyticsGeoLocationDBSetup/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/AnalyticsGeoLocationDBSetup/nextBuildNumber create mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/AnalyticsPopulatePSQLConsumerChannelMapping/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/AnalyticsPopulatePSQLConsumerChannelMapping/nextBuildNumber create mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/AnalyticsReplayJobs/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/AnalyticsReplayJobs/nextBuildNumber create mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/AnalyticsStartJobManager/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/AnalyticsStartJobManager/nextBuildNumber create mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/AnalyticsSubmitJobs/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/AnalyticsSubmitJobs/nextBuildNumber create mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/CassandraDbUpdate/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/CassandraDbUpdate/nextBuildNumber create mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/DataProducts/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/DataProducts/nextBuildNumber create mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/KafkaIndexer/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/KafkaIndexer/nextBuildNumber create mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/KafkaSetup/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/KafkaSetup/nextBuildNumber create mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/Monitoring/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/Monitoring/nextBuildNumber create mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/SamzaTelemetrySchemas/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/SamzaTelemetrySchemas/nextBuildNumber create mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/Secor/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/Secor/nextBuildNumber create mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/Yarn/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/Yarn/nextBuildNumber create mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/CassandraDbUpdate/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/CassandraDbUpdate/nextBuildNumber create mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/ContentTool/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/ContentTool/nextBuildNumber create mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/FileSyncTool/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/FileSyncTool/nextBuildNumber create mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/KafkaSetup/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/KafkaSetup/nextBuildNumber create mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Learning/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Learning/nextBuildNumber create mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Monitoring/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Monitoring/nextBuildNumber create mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Neo4j/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Neo4j/nextBuildNumber create mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Neo4jDefinitionUpdate/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Neo4jDefinitionUpdate/nextBuildNumber create mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Neo4jElasticSearchSyncTool/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Neo4jElasticSearchSyncTool/nextBuildNumber create mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Search/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Search/nextBuildNumber create mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/StartNeo4jCluster/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/StartNeo4jCluster/nextBuildNumber create mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/ValidateLearning/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/ValidateLearning/nextBuildNumber create mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Yarn/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Yarn/nextBuildNumber create mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Plugins/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Plugins/jobs/CollectionEditor/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Plugins/jobs/CollectionEditor/nextBuildNumber create mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Plugins/jobs/ContentFramework/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Plugins/jobs/ContentFramework/nextBuildNumber create mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Plugins/jobs/ContentRendererPreview/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Plugins/jobs/ContentRendererPreview/nextBuildNumber create mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Plugins/jobs/GenericEditor/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Plugins/jobs/GenericEditor/nextBuildNumber create mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Summary/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Summary/jobs/DeployedVersions/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Summary/jobs/DeployedVersions/nextBuildNumber create mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/staging/config.xml create mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/config.xml create mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/ApplicationElasticsearchBackup/config.xml create mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/ApplicationElasticsearchBackup/nextBuildNumber create mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/ApplicationElasticsearchRestore/config.xml create mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/ApplicationElasticsearchRestore/nextBuildNumber create mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/Bootstrap/config.xml create mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/Bootstrap/nextBuildNumber create mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/CassandraBackup/config.xml create mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/CassandraBackup/nextBuildNumber create mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/LoggerElasticSearchBackup/config.xml create mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/LoggerElasticSearchBackup/nextBuildNumber create mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/LoggerElasticSearchRestore/config.xml create mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/LoggerElasticSearchRestore/nextBuildNumber create mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/PostgresqlBackup/config.xml create mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/PostgresqlBackup/nextBuildNumber create mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/PostgresqlRestore/config.xml create mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/PostgresqlRestore/nextBuildNumber create mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/PrometheusBackup/config.xml create mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/PrometheusBackup/nextBuildNumber create mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/SwarmBootstrap/config.xml create mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/SwarmBootstrap/nextBuildNumber create mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/config.xml create mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/AnalyticsAPILogs/config.xml create mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/AnalyticsAPILogs/nextBuildNumber create mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/Bootstrap/config.xml create mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/Bootstrap/nextBuildNumber create mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/CassandraBackup/config.xml create mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/CassandraBackup/nextBuildNumber create mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/CassandraRestore/config.xml create mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/CassandraRestore/nextBuildNumber create mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/ElasticsearchBackup/config.xml create mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/ElasticsearchBackup/nextBuildNumber create mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/ElasticsearchRestore/config.xml create mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/ElasticsearchRestore/nextBuildNumber create mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/InfluxDBBackup/config.xml create mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/InfluxDBBackup/nextBuildNumber create mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/PostgresqlBackup/config.xml create mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/PostgresqlBackup/nextBuildNumber create mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/PostgresqlRestore/config.xml create mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/PostgresqlRestore/nextBuildNumber create mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/KnowledgePlatform/config.xml create mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/KnowledgePlatform/jobs/Bootstrap/config.xml create mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/KnowledgePlatform/jobs/Bootstrap/nextBuildNumber create mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/KnowledgePlatform/jobs/CassandraBackup/config.xml create mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/KnowledgePlatform/jobs/CassandraBackup/nextBuildNumber create mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/KnowledgePlatform/jobs/CassandraRestore/config.xml create mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/KnowledgePlatform/jobs/CassandraRestore/nextBuildNumber create mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/KnowledgePlatform/jobs/ElasticsearchBackup/config.xml create mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/KnowledgePlatform/jobs/ElasticsearchBackup/nextBuildNumber create mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/KnowledgePlatform/jobs/ElasticsearchRestore/config.xml create mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/KnowledgePlatform/jobs/ElasticsearchRestore/nextBuildNumber create mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/KnowledgePlatform/jobs/Neo4jBackup/config.xml create mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/KnowledgePlatform/jobs/Neo4jBackup/nextBuildNumber create mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/KnowledgePlatform/jobs/Neo4jRestore/config.xml create mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/KnowledgePlatform/jobs/Neo4jRestore/nextBuildNumber create mode 100644 deploy/jenkins/jobs/Provision/jobs/staging/config.xml create mode 100644 deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/config.xml create mode 100644 deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/Cassandra/config.xml create mode 100644 deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/Cassandra/nextBuildNumber create mode 100644 deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/JenkinsSlave/config.xml create mode 100644 deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/JenkinsSlave/nextBuildNumber create mode 100644 deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/Kafka/config.xml create mode 100644 deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/Kafka/nextBuildNumber create mode 100644 deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/Keycloak/config.xml create mode 100644 deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/Keycloak/nextBuildNumber create mode 100644 deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/LogElasticSearch/config.xml create mode 100644 deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/LogElasticSearch/nextBuildNumber create mode 100644 deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/Postgres/config.xml create mode 100644 deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/Postgres/nextBuildNumber create mode 100644 deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/PostgresDbUpdate/config.xml create mode 100644 deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/PostgresDbUpdate/nextBuildNumber create mode 100644 deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/Registry/config.xml create mode 100644 deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/Registry/nextBuildNumber create mode 100644 deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/Secor/config.xml create mode 100644 deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/Secor/nextBuildNumber create mode 100644 deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/config.xml create mode 100644 deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/AnalyticsAPI/config.xml create mode 100644 deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/AnalyticsAPI/nextBuildNumber create mode 100644 deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/AnalyticsSecor/config.xml create mode 100644 deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/AnalyticsSecor/nextBuildNumber create mode 100644 deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/AnalyticsSpark/config.xml create mode 100644 deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/AnalyticsSpark/nextBuildNumber create mode 100644 deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/Cassandra/config.xml create mode 100644 deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/Cassandra/nextBuildNumber create mode 100644 deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/InfluxDB/config.xml create mode 100644 deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/InfluxDB/nextBuildNumber create mode 100644 deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/Kafka/config.xml create mode 100644 deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/Kafka/nextBuildNumber create mode 100644 deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/Kibana/config.xml create mode 100644 deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/Kibana/nextBuildNumber create mode 100644 deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/Postgres/config.xml create mode 100644 deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/Postgres/nextBuildNumber create mode 100644 deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/TelemetrySearch/config.xml create mode 100644 deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/TelemetrySearch/nextBuildNumber create mode 100644 deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/Yarn/config.xml create mode 100644 deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/Yarn/nextBuildNumber create mode 100644 deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/Zookeeper/config.xml create mode 100644 deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/Zookeeper/nextBuildNumber create mode 100644 deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/config.xml create mode 100644 deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Cassandra/config.xml create mode 100644 deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Cassandra/nextBuildNumber create mode 100644 deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/CompositeSearch/config.xml create mode 100644 deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/CompositeSearch/nextBuildNumber create mode 100644 deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Kafka/config.xml create mode 100644 deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Kafka/nextBuildNumber create mode 100644 deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Learning/config.xml create mode 100644 deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Learning/nextBuildNumber create mode 100644 deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Neo4j/config.xml create mode 100644 deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Neo4j/nextBuildNumber create mode 100644 deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Redis/config.xml create mode 100644 deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Redis/nextBuildNumber create mode 100644 deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Search/config.xml create mode 100644 deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Search/nextBuildNumber create mode 100644 deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Yarn/config.xml create mode 100644 deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Yarn/nextBuildNumber create mode 100644 deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Zookeeper/config.xml create mode 100644 deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Zookeeper/nextBuildNumber diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/config.xml new file mode 100644 index 0000000000..6fe3ca0b64 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/config.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + All + false + false + + + + + + + + false + + + + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/config.xml new file mode 100644 index 0000000000..68477b8ac7 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/config.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + All + false + false + + + + + + + + false + + + + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/APIManager/builds/lastFailedBuild b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/APIManager/builds/lastFailedBuild new file mode 120000 index 0000000000..d7d17fcbef --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/APIManager/builds/lastFailedBuild @@ -0,0 +1 @@ +-1 \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/APIManager/builds/lastSuccessfulBuild b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/APIManager/builds/lastSuccessfulBuild new file mode 120000 index 0000000000..d7d17fcbef --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/APIManager/builds/lastSuccessfulBuild @@ -0,0 +1 @@ +-1 \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/APIManager/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/APIManager/config.xml new file mode 100644 index 0000000000..7c8baa229a --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/APIManager/config.xml @@ -0,0 +1,86 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + absolute_job_path + <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> + ArtifactUpload/dev/Core/APIManager + false + + + image_tag + <font color=red size=2><b>CAUTION: If the value is blank, latest built image will be deployed.</b></font> + + false + + + + + 0 + 0 + + false + project + false + + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/deploy/api-manager/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/APIManager/nextBuildNumber b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/APIManager/nextBuildNumber new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/APIManager/nextBuildNumber @@ -0,0 +1 @@ +1 diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/AdminUtils/builds/lastFailedBuild b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/AdminUtils/builds/lastFailedBuild new file mode 120000 index 0000000000..d7d17fcbef --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/AdminUtils/builds/lastFailedBuild @@ -0,0 +1 @@ +-1 \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/AdminUtils/builds/lastStableBuild b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/AdminUtils/builds/lastStableBuild new file mode 120000 index 0000000000..d7d17fcbef --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/AdminUtils/builds/lastStableBuild @@ -0,0 +1 @@ +-1 \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/AdminUtils/builds/lastSuccessfulBuild b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/AdminUtils/builds/lastSuccessfulBuild new file mode 120000 index 0000000000..d7d17fcbef --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/AdminUtils/builds/lastSuccessfulBuild @@ -0,0 +1 @@ +-1 \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/AdminUtils/builds/lastUnstableBuild b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/AdminUtils/builds/lastUnstableBuild new file mode 120000 index 0000000000..d7d17fcbef --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/AdminUtils/builds/lastUnstableBuild @@ -0,0 +1 @@ +-1 \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/AdminUtils/builds/lastUnsuccessfulBuild b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/AdminUtils/builds/lastUnsuccessfulBuild new file mode 120000 index 0000000000..d7d17fcbef --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/AdminUtils/builds/lastUnsuccessfulBuild @@ -0,0 +1 @@ +-1 \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/AdminUtils/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/AdminUtils/config.xml new file mode 100644 index 0000000000..fe6f660008 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/AdminUtils/config.xml @@ -0,0 +1,86 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + absolute_job_path + <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> + ArtifactUpload/dev/Core/AdminUtils + false + + + image_tag + <font color=red size=2><b>CAUTION: If the value is blank, latest built image will be deployed.</b></font> + + false + + + + + 0 + 0 + + false + project + false + + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/deploy/adminutils/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/AdminUtils/nextBuildNumber b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/AdminUtils/nextBuildNumber new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/AdminUtils/nextBuildNumber @@ -0,0 +1 @@ +1 diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/ApplicationElasticSearch/builds/lastFailedBuild b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/ApplicationElasticSearch/builds/lastFailedBuild new file mode 120000 index 0000000000..d7d17fcbef --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/ApplicationElasticSearch/builds/lastFailedBuild @@ -0,0 +1 @@ +-1 \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/ApplicationElasticSearch/builds/lastSuccessfulBuild b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/ApplicationElasticSearch/builds/lastSuccessfulBuild new file mode 120000 index 0000000000..d7d17fcbef --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/ApplicationElasticSearch/builds/lastSuccessfulBuild @@ -0,0 +1 @@ +-1 \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/ApplicationElasticSearch/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/ApplicationElasticSearch/config.xml new file mode 100644 index 0000000000..360fb08734 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/ApplicationElasticSearch/config.xml @@ -0,0 +1,58 @@ + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + false + project + false + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 1 + false + + + + pipelines/deploy/application-elasticsearch/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/ApplicationElasticSearch/nextBuildNumber b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/ApplicationElasticSearch/nextBuildNumber new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/ApplicationElasticSearch/nextBuildNumber @@ -0,0 +1 @@ +1 diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Badger/builds/lastFailedBuild b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Badger/builds/lastFailedBuild new file mode 120000 index 0000000000..d7d17fcbef --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Badger/builds/lastFailedBuild @@ -0,0 +1 @@ +-1 \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Badger/builds/lastSuccessfulBuild b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Badger/builds/lastSuccessfulBuild new file mode 120000 index 0000000000..d7d17fcbef --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Badger/builds/lastSuccessfulBuild @@ -0,0 +1 @@ +-1 \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Badger/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Badger/config.xml new file mode 100644 index 0000000000..fef35385ed --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Badger/config.xml @@ -0,0 +1,86 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + absolute_job_path + <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> + ArtifactUpload/dev/Core/Badger + false + + + image_tag + <font color=red size=2><b>CAUTION: If the value is blank, latest built image will be deployed.</b></font> + + false + + + + + 0 + 0 + + false + project + false + + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/deploy/badger/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Badger/nextBuildNumber b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Badger/nextBuildNumber new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Badger/nextBuildNumber @@ -0,0 +1 @@ +1 diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Bootstrap/builds/lastFailedBuild b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Bootstrap/builds/lastFailedBuild new file mode 120000 index 0000000000..d7d17fcbef --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Bootstrap/builds/lastFailedBuild @@ -0,0 +1 @@ +-1 \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Bootstrap/builds/lastSuccessfulBuild b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Bootstrap/builds/lastSuccessfulBuild new file mode 120000 index 0000000000..d7d17fcbef --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Bootstrap/builds/lastSuccessfulBuild @@ -0,0 +1 @@ +-1 \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Bootstrap/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Bootstrap/config.xml new file mode 100644 index 0000000000..d18ba30951 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Bootstrap/config.xml @@ -0,0 +1,61 @@ + + + + + false + + + + -1 + -1 + -1 + 5 + + + + false + false + + + + + hosts + <font color=black size=2><b>Enter the host name to be bootstrapped.</b></font> + all + false + + + + + 0 + 0 + + false + project + false + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + pipelines/bootstrap/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Bootstrap/nextBuildNumber b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Bootstrap/nextBuildNumber new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Bootstrap/nextBuildNumber @@ -0,0 +1 @@ +1 diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Cassandra/builds/lastFailedBuild b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Cassandra/builds/lastFailedBuild new file mode 120000 index 0000000000..d7d17fcbef --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Cassandra/builds/lastFailedBuild @@ -0,0 +1 @@ +-1 \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Cassandra/builds/lastSuccessfulBuild b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Cassandra/builds/lastSuccessfulBuild new file mode 120000 index 0000000000..d7d17fcbef --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Cassandra/builds/lastSuccessfulBuild @@ -0,0 +1 @@ +-1 \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Cassandra/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Cassandra/config.xml new file mode 100644 index 0000000000..90ab76bea0 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Cassandra/config.xml @@ -0,0 +1,149 @@ + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + absolute_job_path + <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> + ArtifactUpload/dev/Core/Cassandra + false + + + artifact_source + <font color=black size=2><b> +ArtifactRepo - Download the artifact from azure blob, JenkinsJob - Use the atrifact from Jenkins job.</b></font> + choice-parameter-9600649228560 + 1 + + false + + + + false + + + Cassandra + + + PT_SINGLE_SELECT + false + 1 + + + build_number + + choice-parameter-9600651313765 + 1 + + false + + + + false + + + Cassandra + + artifact_source + ET_FORMATTED_HTML + true + + + artifact_version + + choice-parameter-9600653373369 + 1 + + false + + + + false + + + Cassandra + + artifact_source + ET_FORMATTED_HTML + true + + + + + 0 + 0 + + false + project + false + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/deploy/cassandra-deploy/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Cassandra/nextBuildNumber b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Cassandra/nextBuildNumber new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Cassandra/nextBuildNumber @@ -0,0 +1 @@ +1 diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Config/builds/lastFailedBuild b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Config/builds/lastFailedBuild new file mode 120000 index 0000000000..d7d17fcbef --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Config/builds/lastFailedBuild @@ -0,0 +1 @@ +-1 \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Config/builds/lastSuccessfulBuild b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Config/builds/lastSuccessfulBuild new file mode 120000 index 0000000000..d7d17fcbef --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Config/builds/lastSuccessfulBuild @@ -0,0 +1 @@ +-1 \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Config/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Config/config.xml new file mode 100644 index 0000000000..fa056df081 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Config/config.xml @@ -0,0 +1,86 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + absolute_job_path + <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> + ArtifactUpload/dev/Core/Config + false + + + image_tag + <font color=red size=2><b>CAUTION: If the value is blank, latest built image will be deployed.</b></font> + + false + + + + + 0 + 0 + + false + project + false + + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/deploy/config-service/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Config/nextBuildNumber b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Config/nextBuildNumber new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Config/nextBuildNumber @@ -0,0 +1 @@ +1 diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Content/builds/lastFailedBuild b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Content/builds/lastFailedBuild new file mode 120000 index 0000000000..d7d17fcbef --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Content/builds/lastFailedBuild @@ -0,0 +1 @@ +-1 \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Content/builds/lastSuccessfulBuild b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Content/builds/lastSuccessfulBuild new file mode 120000 index 0000000000..d7d17fcbef --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Content/builds/lastSuccessfulBuild @@ -0,0 +1 @@ +-1 \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Content/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Content/config.xml new file mode 100644 index 0000000000..2df463b198 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Content/config.xml @@ -0,0 +1,86 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + absolute_job_path + <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> + ArtifactUpload/dev/Core/Content + false + + + image_tag + <font color=red size=2><b>CAUTION: If the value is blank, latest built image will be deployed.</b></font> + + false + + + + + 0 + 0 + + false + project + false + + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/deploy/content/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Content/nextBuildNumber b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Content/nextBuildNumber new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Content/nextBuildNumber @@ -0,0 +1 @@ +1 diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Keycloak/builds/lastFailedBuild b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Keycloak/builds/lastFailedBuild new file mode 120000 index 0000000000..d7d17fcbef --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Keycloak/builds/lastFailedBuild @@ -0,0 +1 @@ +-1 \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Keycloak/builds/lastSuccessfulBuild b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Keycloak/builds/lastSuccessfulBuild new file mode 120000 index 0000000000..d7d17fcbef --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Keycloak/builds/lastSuccessfulBuild @@ -0,0 +1 @@ +-1 \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Keycloak/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Keycloak/config.xml new file mode 100644 index 0000000000..de2b8ee1f1 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Keycloak/config.xml @@ -0,0 +1,68 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + false + project + false + + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + keycloak-deployment + + + false + + + + true + false + + 1 + false + + + + pipelines/deploy/keycloak/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Keycloak/nextBuildNumber b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Keycloak/nextBuildNumber new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Keycloak/nextBuildNumber @@ -0,0 +1 @@ +1 diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/KeycloakRealm/builds/lastFailedBuild b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/KeycloakRealm/builds/lastFailedBuild new file mode 120000 index 0000000000..d7d17fcbef --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/KeycloakRealm/builds/lastFailedBuild @@ -0,0 +1 @@ +-1 \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/KeycloakRealm/builds/lastSuccessfulBuild b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/KeycloakRealm/builds/lastSuccessfulBuild new file mode 120000 index 0000000000..d7d17fcbef --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/KeycloakRealm/builds/lastSuccessfulBuild @@ -0,0 +1 @@ +-1 \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/KeycloakRealm/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/KeycloakRealm/config.xml new file mode 100644 index 0000000000..6a9232507a --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/KeycloakRealm/config.xml @@ -0,0 +1,68 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + false + project + false + + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + keycloak-deployment + + + false + + + + true + false + + 1 + false + + + + pipelines/deploy/keycloak-realm/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/KeycloakRealm/nextBuildNumber b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/KeycloakRealm/nextBuildNumber new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/KeycloakRealm/nextBuildNumber @@ -0,0 +1 @@ +1 diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Learner/builds/lastFailedBuild b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Learner/builds/lastFailedBuild new file mode 120000 index 0000000000..d7d17fcbef --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Learner/builds/lastFailedBuild @@ -0,0 +1 @@ +-1 \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Learner/builds/lastSuccessfulBuild b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Learner/builds/lastSuccessfulBuild new file mode 120000 index 0000000000..d7d17fcbef --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Learner/builds/lastSuccessfulBuild @@ -0,0 +1 @@ +-1 \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Learner/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Learner/config.xml new file mode 100644 index 0000000000..c8d69a2d0a --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Learner/config.xml @@ -0,0 +1,86 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + absolute_job_path + <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> + ArtifactUpload/dev/Core/Learner + false + + + image_tag + <font color=red size=2><b>CAUTION: If the value is blank, latest built image will be deployed.</b></font> + + false + + + + + 0 + 0 + + false + project + false + + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 1 + false + + + + pipelines/deploy/learner/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Learner/nextBuildNumber b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Learner/nextBuildNumber new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Learner/nextBuildNumber @@ -0,0 +1 @@ +1 diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/LoggerElasticSearch/builds/lastFailedBuild b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/LoggerElasticSearch/builds/lastFailedBuild new file mode 120000 index 0000000000..d7d17fcbef --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/LoggerElasticSearch/builds/lastFailedBuild @@ -0,0 +1 @@ +-1 \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/LoggerElasticSearch/builds/lastSuccessfulBuild b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/LoggerElasticSearch/builds/lastSuccessfulBuild new file mode 120000 index 0000000000..d7d17fcbef --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/LoggerElasticSearch/builds/lastSuccessfulBuild @@ -0,0 +1 @@ +-1 \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/LoggerElasticSearch/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/LoggerElasticSearch/config.xml new file mode 100644 index 0000000000..d1cee1407a --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/LoggerElasticSearch/config.xml @@ -0,0 +1,60 @@ + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + 0 + 0 + + false + project + false + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 1 + false + + + + pipelines/deploy/logger-elasticsearch/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/LoggerElasticSearch/nextBuildNumber b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/LoggerElasticSearch/nextBuildNumber new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/LoggerElasticSearch/nextBuildNumber @@ -0,0 +1 @@ +1 diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Logging/builds/lastFailedBuild b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Logging/builds/lastFailedBuild new file mode 120000 index 0000000000..d7d17fcbef --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Logging/builds/lastFailedBuild @@ -0,0 +1 @@ +-1 \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Logging/builds/lastSuccessfulBuild b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Logging/builds/lastSuccessfulBuild new file mode 120000 index 0000000000..d7d17fcbef --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Logging/builds/lastSuccessfulBuild @@ -0,0 +1 @@ +-1 \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Logging/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Logging/config.xml new file mode 100644 index 0000000000..1dfbb2a98a --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Logging/config.xml @@ -0,0 +1,60 @@ + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + 0 + 0 + + false + project + false + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 1 + false + + + + pipelines/deploy/logger/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Logging/nextBuildNumber b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Logging/nextBuildNumber new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Logging/nextBuildNumber @@ -0,0 +1 @@ +1 diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Monitoring/builds/lastFailedBuild b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Monitoring/builds/lastFailedBuild new file mode 120000 index 0000000000..d7d17fcbef --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Monitoring/builds/lastFailedBuild @@ -0,0 +1 @@ +-1 \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Monitoring/builds/lastSuccessfulBuild b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Monitoring/builds/lastSuccessfulBuild new file mode 120000 index 0000000000..d7d17fcbef --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Monitoring/builds/lastSuccessfulBuild @@ -0,0 +1 @@ +-1 \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Monitoring/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Monitoring/config.xml new file mode 100644 index 0000000000..9a870e34b6 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Monitoring/config.xml @@ -0,0 +1,60 @@ + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + 0 + 0 + + false + project + false + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 1 + false + + + + pipelines/deploy/monitor/Core/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Monitoring/nextBuildNumber b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Monitoring/nextBuildNumber new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Monitoring/nextBuildNumber @@ -0,0 +1 @@ +1 diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/OnboardAPIs/builds/lastFailedBuild b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/OnboardAPIs/builds/lastFailedBuild new file mode 120000 index 0000000000..d7d17fcbef --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/OnboardAPIs/builds/lastFailedBuild @@ -0,0 +1 @@ +-1 \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/OnboardAPIs/builds/lastSuccessfulBuild b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/OnboardAPIs/builds/lastSuccessfulBuild new file mode 120000 index 0000000000..d7d17fcbef --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/OnboardAPIs/builds/lastSuccessfulBuild @@ -0,0 +1 @@ +-1 \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/OnboardAPIs/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/OnboardAPIs/config.xml new file mode 100644 index 0000000000..26970f24e5 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/OnboardAPIs/config.xml @@ -0,0 +1,67 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + 0 + 0 + + false + project + false + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 1 + false + + + + pipelines/deploy/am-onboard-apis/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/OnboardAPIs/nextBuildNumber b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/OnboardAPIs/nextBuildNumber new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/OnboardAPIs/nextBuildNumber @@ -0,0 +1 @@ +1 diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/OnboardConsumers/builds/lastFailedBuild b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/OnboardConsumers/builds/lastFailedBuild new file mode 120000 index 0000000000..d7d17fcbef --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/OnboardConsumers/builds/lastFailedBuild @@ -0,0 +1 @@ +-1 \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/OnboardConsumers/builds/lastSuccessfulBuild b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/OnboardConsumers/builds/lastSuccessfulBuild new file mode 120000 index 0000000000..d7d17fcbef --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/OnboardConsumers/builds/lastSuccessfulBuild @@ -0,0 +1 @@ +-1 \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/OnboardConsumers/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/OnboardConsumers/config.xml new file mode 100644 index 0000000000..13772a78b5 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/OnboardConsumers/config.xml @@ -0,0 +1,58 @@ + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + false + project + false + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 1 + false + + + + pipelines/deploy/am-onboard-consumers/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/OnboardConsumers/nextBuildNumber b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/OnboardConsumers/nextBuildNumber new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/OnboardConsumers/nextBuildNumber @@ -0,0 +1 @@ +1 diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Player/builds/lastFailedBuild b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Player/builds/lastFailedBuild new file mode 120000 index 0000000000..d7d17fcbef --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Player/builds/lastFailedBuild @@ -0,0 +1 @@ +-1 \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Player/builds/lastSuccessfulBuild b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Player/builds/lastSuccessfulBuild new file mode 120000 index 0000000000..d7d17fcbef --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Player/builds/lastSuccessfulBuild @@ -0,0 +1 @@ +-1 \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Player/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Player/config.xml new file mode 100644 index 0000000000..75a1b3d14d --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Player/config.xml @@ -0,0 +1,86 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + absolute_job_path + <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> + ArtifactUpload/dev/Core/Player + false + + + image_tag + <font color=red size=2><b>CAUTION: If the value is blank, latest built image will be deployed.</b></font> + + false + + + + + 0 + 0 + + false + project + false + + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 1 + false + + + + pipelines/deploy/player/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Player/nextBuildNumber b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Player/nextBuildNumber new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Player/nextBuildNumber @@ -0,0 +1 @@ +1 diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Proxy/builds/lastFailedBuild b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Proxy/builds/lastFailedBuild new file mode 120000 index 0000000000..d7d17fcbef --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Proxy/builds/lastFailedBuild @@ -0,0 +1 @@ +-1 \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Proxy/builds/lastSuccessfulBuild b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Proxy/builds/lastSuccessfulBuild new file mode 120000 index 0000000000..d7d17fcbef --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Proxy/builds/lastSuccessfulBuild @@ -0,0 +1 @@ +-1 \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Proxy/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Proxy/config.xml new file mode 100644 index 0000000000..50e73c246b --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Proxy/config.xml @@ -0,0 +1,76 @@ + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + absolute_job_path + <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> + ArtifactUpload/dev/Core/Proxy + false + + + image_tag + <font color=red size=2><b>CAUTION: If the value is blank, latest built image will be deployed.</b></font> + + false + + + + + 0 + 0 + + false + project + false + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 1 + false + + + + pipelines/deploy/proxy/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Proxy/nextBuildNumber b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Proxy/nextBuildNumber new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Proxy/nextBuildNumber @@ -0,0 +1 @@ +1 diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Telemetry/builds/lastFailedBuild b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Telemetry/builds/lastFailedBuild new file mode 120000 index 0000000000..d7d17fcbef --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Telemetry/builds/lastFailedBuild @@ -0,0 +1 @@ +-1 \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Telemetry/builds/lastSuccessfulBuild b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Telemetry/builds/lastSuccessfulBuild new file mode 120000 index 0000000000..d7d17fcbef --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Telemetry/builds/lastSuccessfulBuild @@ -0,0 +1 @@ +-1 \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Telemetry/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Telemetry/config.xml new file mode 100644 index 0000000000..d7b87837f6 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Telemetry/config.xml @@ -0,0 +1,86 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + absolute_job_path + <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> + ArtifactUpload/dev/Core/Telemetry + false + + + image_tag + <font color=red size=2><b>CAUTION: If the value is blank, latest built image will be deployed.</b></font> + + false + + + + + 0 + 0 + + false + project + false + + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 1 + false + + + + pipelines/deploy/telemetry/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Telemetry/nextBuildNumber b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Telemetry/nextBuildNumber new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Telemetry/nextBuildNumber @@ -0,0 +1 @@ +1 diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/TelemetryLogstash/builds/lastFailedBuild b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/TelemetryLogstash/builds/lastFailedBuild new file mode 120000 index 0000000000..d7d17fcbef --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/TelemetryLogstash/builds/lastFailedBuild @@ -0,0 +1 @@ +-1 \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/TelemetryLogstash/builds/lastSuccessfulBuild b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/TelemetryLogstash/builds/lastSuccessfulBuild new file mode 120000 index 0000000000..d7d17fcbef --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/TelemetryLogstash/builds/lastSuccessfulBuild @@ -0,0 +1 @@ +-1 \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/TelemetryLogstash/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/TelemetryLogstash/config.xml new file mode 100644 index 0000000000..b167ae0167 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/TelemetryLogstash/config.xml @@ -0,0 +1,60 @@ + + + + Deploys Telemetry Logstash Service + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + 0 + 0 + + false + project + false + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 1 + false + + + + pipelines/deploy/telemetry-logstash/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/TelemetryLogstash/nextBuildNumber b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/TelemetryLogstash/nextBuildNumber new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/TelemetryLogstash/nextBuildNumber @@ -0,0 +1 @@ +1 diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/TelemetryLogstashDataPipeline/builds/lastFailedBuild b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/TelemetryLogstashDataPipeline/builds/lastFailedBuild new file mode 120000 index 0000000000..d7d17fcbef --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/TelemetryLogstashDataPipeline/builds/lastFailedBuild @@ -0,0 +1 @@ +-1 \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/TelemetryLogstashDataPipeline/builds/lastSuccessfulBuild b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/TelemetryLogstashDataPipeline/builds/lastSuccessfulBuild new file mode 120000 index 0000000000..d7d17fcbef --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/TelemetryLogstashDataPipeline/builds/lastSuccessfulBuild @@ -0,0 +1 @@ +-1 \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/TelemetryLogstashDataPipeline/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/TelemetryLogstashDataPipeline/config.xml new file mode 100644 index 0000000000..602e2eda1f --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/TelemetryLogstashDataPipeline/config.xml @@ -0,0 +1,58 @@ + + + + Deploys Telemetry Logstash Datapipeline Service + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + false + project + false + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 1 + false + + + + pipelines/deploy/telemetry-logstash-datapipeline/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/TelemetryLogstashDataPipeline/nextBuildNumber b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/TelemetryLogstashDataPipeline/nextBuildNumber new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/TelemetryLogstashDataPipeline/nextBuildNumber @@ -0,0 +1 @@ +1 diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/config.xml new file mode 100644 index 0000000000..68477b8ac7 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/config.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + All + false + false + + + + + + + + false + + + + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/AnalyticsAPI/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/AnalyticsAPI/config.xml new file mode 100644 index 0000000000..3c6db21859 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/AnalyticsAPI/config.xml @@ -0,0 +1,156 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + absolute_job_path + <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> + ArtifactUpload/dev/DataPipeline/Analytics + false + + + artifact_source + <font color=black size=2><b> +ArtifactRepo - Download the artifact from azure blob, JenkinsJob - Use the atrifact from Jenkins job.</b></font> + choice-parameter-9061667106947 + 1 + + false + + + + false + + + AnalyticsAPI + + + PT_SINGLE_SELECT + false + 1 + + + build_number + + choice-parameter-9061670571657 + 1 + + false + + + + false + + + AnalyticsAPI + + artifact_source + ET_FORMATTED_HTML + true + + + artifact_version + + choice-parameter-9061673103864 + 1 + + false + + + + false + + + AnalyticsAPI + + artifact_source + ET_FORMATTED_HTML + true + + + + + 0 + 0 + + false + project + false + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/deploy/analytics-api/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/AnalyticsAPI/nextBuildNumber b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/AnalyticsAPI/nextBuildNumber new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/AnalyticsAPI/nextBuildNumber @@ -0,0 +1 @@ +1 diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/AnalyticsFetchLogs/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/AnalyticsFetchLogs/config.xml new file mode 100644 index 0000000000..bdb4532949 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/AnalyticsFetchLogs/config.xml @@ -0,0 +1,93 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + instance_name + <font color=black size=2><b>Choose the instance to fetch logs.</b></font> + + + spark + analytics-api + secor + cassandra + + + + + action + <font color=black size=2><b>Choose one of the option - Fetch logs or set cronjob.</b></font> + + + fetch-logs + cronjobs + + + + + + + 0 + 0 + + false + project + false + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 1 + false + + + + pipelines/deploy/fetch-logs/Jenkinsfile + false + + + true + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/AnalyticsFetchLogs/nextBuildNumber b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/AnalyticsFetchLogs/nextBuildNumber new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/AnalyticsFetchLogs/nextBuildNumber @@ -0,0 +1 @@ +1 diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/AnalyticsGeoLocationDBSetup/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/AnalyticsGeoLocationDBSetup/config.xml new file mode 100644 index 0000000000..1dfdaca572 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/AnalyticsGeoLocationDBSetup/config.xml @@ -0,0 +1,67 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + 0 + 0 + + false + project + false + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 1 + false + + + + pipelines/deploy/geolocation-db-setup/Jenkinsfile + false + + + true + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/AnalyticsGeoLocationDBSetup/nextBuildNumber b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/AnalyticsGeoLocationDBSetup/nextBuildNumber new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/AnalyticsGeoLocationDBSetup/nextBuildNumber @@ -0,0 +1 @@ +1 diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/AnalyticsPopulatePSQLConsumerChannelMapping/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/AnalyticsPopulatePSQLConsumerChannelMapping/config.xml new file mode 100644 index 0000000000..d7a72eae8e --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/AnalyticsPopulatePSQLConsumerChannelMapping/config.xml @@ -0,0 +1,99 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + Consumer_id + <font color=black size=2><b>Mention the consumer ID.</b></font> + id + false + + + Channel_id + <font color=black size=2><b>Channel ID to map with the Consumer ID.</b></font> + channel_id + false + + + status + <font color=black size=2><b> 1 - to activate, 0 - to make it inactive</b></font> + + + 1 + 0 + + + + + Created_by + <font color=black size=2><b>Created by.</b></font> + analytics-team + false + + + + + 0 + 0 + + false + project + false + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/deploy/PopulatePSQL-ConsumerChannelMapping/Jenkinsfile + false + + + true + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/AnalyticsPopulatePSQLConsumerChannelMapping/nextBuildNumber b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/AnalyticsPopulatePSQLConsumerChannelMapping/nextBuildNumber new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/AnalyticsPopulatePSQLConsumerChannelMapping/nextBuildNumber @@ -0,0 +1 @@ +1 diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/AnalyticsReplayJobs/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/AnalyticsReplayJobs/config.xml new file mode 100644 index 0000000000..5118f01003 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/AnalyticsReplayJobs/config.xml @@ -0,0 +1,113 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + cql_query + <font color=black size=2><b>Specify cql_query if any tables needs to be truncated.<b></font> + 0 + false + + + job_type + <font color=black size=2><b>Specify the job type - Replay or Run.</b></font> + + + replay-job + run-job + generate-metrics + submit-job + + + + + job_id + <font color=black size=2><b>Specify the job id.</b></font> + + false + + + start_date + <font color=black size=2><b>Specify the start date. The default value is just a placeholder which can be changed as per need.</b></font> + 2017-05-01 + false + + + end_date + <font color=black size=2><b>Specify the end date. The default value is just a placeholder which can be changed as per need.</b></font> + 2017-07-11 + false + + + pause_min + <font color=black size=2><b>Specify the # of minutes to pause. The default value is just a placeholder which can be changed as per need.</b></font> + 30 + false + + + + + 0 + 0 + + false + project + false + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/deploy/replay-jobs/Jenkinsfile + false + + + true + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/AnalyticsReplayJobs/nextBuildNumber b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/AnalyticsReplayJobs/nextBuildNumber new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/AnalyticsReplayJobs/nextBuildNumber @@ -0,0 +1 @@ +1 diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/AnalyticsStartJobManager/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/AnalyticsStartJobManager/config.xml new file mode 100644 index 0000000000..18d2b6956a --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/AnalyticsStartJobManager/config.xml @@ -0,0 +1,77 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + pause_min + <font color=black size=2><b>Pause for # of minutes.</b></font> + 5 + false + + + + + 0 + 0 + + false + project + false + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 1 + false + + + + pipelines/deploy/start-jobmanager/Jenkinsfile + false + + + true + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/AnalyticsStartJobManager/nextBuildNumber b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/AnalyticsStartJobManager/nextBuildNumber new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/AnalyticsStartJobManager/nextBuildNumber @@ -0,0 +1 @@ +1 diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/AnalyticsSubmitJobs/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/AnalyticsSubmitJobs/config.xml new file mode 100644 index 0000000000..4bc26f549a --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/AnalyticsSubmitJobs/config.xml @@ -0,0 +1,76 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + pause_min + <font color=teal size=2>Pause for # of minutes.</font> + 5 + false + + + + + + false + project + false + + 1 + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/deploy/submit-jobs/Jenkinsfile + false + + + true + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/AnalyticsSubmitJobs/nextBuildNumber b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/AnalyticsSubmitJobs/nextBuildNumber new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/AnalyticsSubmitJobs/nextBuildNumber @@ -0,0 +1 @@ +1 diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/CassandraDbUpdate/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/CassandraDbUpdate/config.xml new file mode 100644 index 0000000000..49fc435bba --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/CassandraDbUpdate/config.xml @@ -0,0 +1,65 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + false + project + false + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 1 + false + + + + pipelines/deploy/cassandra/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/CassandraDbUpdate/nextBuildNumber b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/CassandraDbUpdate/nextBuildNumber new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/CassandraDbUpdate/nextBuildNumber @@ -0,0 +1 @@ +1 diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/DataProducts/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/DataProducts/config.xml new file mode 100644 index 0000000000..4a480bffa9 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/DataProducts/config.xml @@ -0,0 +1,154 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + absolute_job_path + <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> + ArtifactUpload/dev/DataPipeline/Analytics + false + + + artifact_source + <font color=black size=2><b> +ArtifactRepo - Download the artifact from azure blob, JenkinsJob - Use the atrifact from Jenkins job.</b></font> + choice-parameter-9061667106947 + 1 + + false + + + + false + + + DataProducts + + + PT_SINGLE_SELECT + false + 1 + + + build_number + + choice-parameter-9061670571657 + 1 + + false + + + + false + + + DataProducts + + artifact_source + ET_FORMATTED_HTML + true + + + artifact_version + + choice-parameter-9061673103864 + 1 + + false + + + + false + + + DataProducts + + artifact_source + ET_FORMATTED_HTML + true + + + + + + false + project + false + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/deploy/data-products/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/DataProducts/nextBuildNumber b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/DataProducts/nextBuildNumber new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/DataProducts/nextBuildNumber @@ -0,0 +1 @@ +1 diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/KafkaIndexer/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/KafkaIndexer/config.xml new file mode 100644 index 0000000000..b890e64adf --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/KafkaIndexer/config.xml @@ -0,0 +1,65 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + false + project + false + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 1 + false + + + + pipelines/deploy/kafka-indexer/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/KafkaIndexer/nextBuildNumber b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/KafkaIndexer/nextBuildNumber new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/KafkaIndexer/nextBuildNumber @@ -0,0 +1 @@ +1 diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/KafkaSetup/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/KafkaSetup/config.xml new file mode 100644 index 0000000000..ad29df38a3 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/KafkaSetup/config.xml @@ -0,0 +1,65 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + false + project + false + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 1 + false + + + + pipelines/deploy/kafka/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/KafkaSetup/nextBuildNumber b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/KafkaSetup/nextBuildNumber new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/KafkaSetup/nextBuildNumber @@ -0,0 +1 @@ +1 diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/Monitoring/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/Monitoring/config.xml new file mode 100644 index 0000000000..79740ffe84 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/Monitoring/config.xml @@ -0,0 +1,72 @@ + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + false + project + false + + + + + + + ../Core/Monitoring, + + FAILURE + 2 + RED + true + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 1 + false + + + + pipelines/deploy/monitor/DataPipeline/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/Monitoring/nextBuildNumber b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/Monitoring/nextBuildNumber new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/Monitoring/nextBuildNumber @@ -0,0 +1 @@ +1 diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/SamzaTelemetrySchemas/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/SamzaTelemetrySchemas/config.xml new file mode 100644 index 0000000000..0aca8d3e75 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/SamzaTelemetrySchemas/config.xml @@ -0,0 +1,77 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + schema_repo_version + <font color=black size=2><b>Specify the scehma repo version.</b></font> + ${public_repo_branch} + false + + + + + 0 + 0 + + false + project + false + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/deploy/samza-telemetry-schemas/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/SamzaTelemetrySchemas/nextBuildNumber b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/SamzaTelemetrySchemas/nextBuildNumber new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/SamzaTelemetrySchemas/nextBuildNumber @@ -0,0 +1 @@ +1 diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/Secor/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/Secor/config.xml new file mode 100644 index 0000000000..21d54c2e64 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/Secor/config.xml @@ -0,0 +1,154 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + absolute_job_path + <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> + ArtifactUpload/dev/DataPipeline/Secor + false + + + artifact_source + <font color=black size=2><b> +ArtifactRepo - Download the artifact from azure blob, JenkinsJob - Use the atrifact from Jenkins job.</b></font> + choice-parameter-9061667106947 + 1 + + false + + + + false + + + Secor + + + PT_SINGLE_SELECT + false + 1 + + + build_number + + choice-parameter-9061670571657 + 1 + + false + + + + false + + + Secor + + artifact_source + ET_FORMATTED_HTML + true + + + artifact_version + + choice-parameter-9061673103864 + 1 + + false + + + + false + + + Secor + + artifact_source + ET_FORMATTED_HTML + true + + + + + + false + project + false + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 1 + false + + + + pipelines/deploy/secor/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/Secor/nextBuildNumber b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/Secor/nextBuildNumber new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/Secor/nextBuildNumber @@ -0,0 +1 @@ +1 diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/Yarn/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/Yarn/config.xml new file mode 100644 index 0000000000..8f7d03b584 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/Yarn/config.xml @@ -0,0 +1,156 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + absolute_job_path + <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> + ArtifactUpload/dev/DataPipeline/DataPipeline + false + + + artifact_source + <font color=black size=2><b> +ArtifactRepo - Download the artifact from azure blob, JenkinsJob - Use the atrifact from Jenkins job.</b></font> + choice-parameter-9061667106947 + 1 + + false + + + + false + + + Yarn + + + PT_SINGLE_SELECT + false + 1 + + + build_number + + choice-parameter-9061670571657 + 1 + + false + + + + false + + + Yarn + + artifact_source + ET_FORMATTED_HTML + true + + + artifact_version + + choice-parameter-9061673103864 + 1 + + false + + + + false + + + Yarn + + artifact_source + ET_FORMATTED_HTML + true + + + + + 0 + 0 + + false + project + false + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 1 + false + + + + pipelines/deploy/yarn/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/Yarn/nextBuildNumber b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/Yarn/nextBuildNumber new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/Yarn/nextBuildNumber @@ -0,0 +1 @@ +1 diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/config.xml new file mode 100644 index 0000000000..68477b8ac7 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/config.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + All + false + false + + + + + + + + false + + + + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/CassandraDbUpdate/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/CassandraDbUpdate/config.xml new file mode 100644 index 0000000000..f73ce21760 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/CassandraDbUpdate/config.xml @@ -0,0 +1,68 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + false + project + false + + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-learning-platform.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 1 + false + + + + pipelines/deploy/cassandra/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/CassandraDbUpdate/nextBuildNumber b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/CassandraDbUpdate/nextBuildNumber new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/CassandraDbUpdate/nextBuildNumber @@ -0,0 +1 @@ +1 diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/ContentTool/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/ContentTool/config.xml new file mode 100644 index 0000000000..d4b296559d --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/ContentTool/config.xml @@ -0,0 +1,92 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + absolute_job_path + <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> + ArtifactUpload/dev/KnowledgePlatform/KnowledgePlatform + false + + + command + <font color=black size=2><b>Enter the command.</b></font> + sync + false + + + parameters + <font color=black size=2><b>Enter the do id.</b></font> + + false + + + + + 0 + 0 + + false + project + false + + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-learning-platform.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 1 + false + + + + pipelines/deploy/content_tool/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/ContentTool/nextBuildNumber b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/ContentTool/nextBuildNumber new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/ContentTool/nextBuildNumber @@ -0,0 +1 @@ +1 diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/FileSyncTool/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/FileSyncTool/config.xml new file mode 100644 index 0000000000..5c730b9381 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/FileSyncTool/config.xml @@ -0,0 +1,83 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + absolute_job_path + <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> + ArtifactUpload/dev/KnowledgePlatform/Synctool + false + + + filename + <font color=black size=2><b>Enter valid filename with extention.</b></font> + + false + + + + + 0 + 0 + + false + project + false + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-learning-platform.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/deploy/file-sync-tool/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/FileSyncTool/nextBuildNumber b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/FileSyncTool/nextBuildNumber new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/FileSyncTool/nextBuildNumber @@ -0,0 +1 @@ +1 diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/KafkaSetup/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/KafkaSetup/config.xml new file mode 100644 index 0000000000..34321776af --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/KafkaSetup/config.xml @@ -0,0 +1,68 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + false + project + false + + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-learning-platform.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/deploy/kafka-setup/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/KafkaSetup/nextBuildNumber b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/KafkaSetup/nextBuildNumber new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/KafkaSetup/nextBuildNumber @@ -0,0 +1 @@ +1 diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Learning/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Learning/config.xml new file mode 100644 index 0000000000..f0b31f5bd2 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Learning/config.xml @@ -0,0 +1,159 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + absolute_job_path + <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> + ArtifactUpload/dev/KnowledgePlatform/KnowledgePlatform + false + + + artifact_source + <font color=black size=2><b> +ArtifactRepo - Download the artifact from azure blob, JenkinsJob - Use the atrifact from Jenkins job.</b></font> + choice-parameter-12566219493457 + 1 + + false + + + + false + + + Learning + + + PT_SINGLE_SELECT + false + 1 + + + build_number + + choice-parameter-12566221440336 + 1 + + false + + + + false + + + Learning + + artifact_source + ET_FORMATTED_HTML + true + + + artifact_version + + choice-parameter-12566223395914 + 1 + + false + + + + false + + + Learning + + artifact_source + ET_FORMATTED_HTML + true + + + + + 0 + 0 + + false + project + false + + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-learning-platform.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/deploy/learning/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Learning/nextBuildNumber b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Learning/nextBuildNumber new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Learning/nextBuildNumber @@ -0,0 +1 @@ +1 diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Monitoring/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Monitoring/config.xml new file mode 100644 index 0000000000..8945d48949 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Monitoring/config.xml @@ -0,0 +1,65 @@ + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + + ../DataPipeline/Monitoring, + + FAILURE + 2 + RED + true + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/deploy/monitor/KnowledgePlatform/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Monitoring/nextBuildNumber b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Monitoring/nextBuildNumber new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Monitoring/nextBuildNumber @@ -0,0 +1 @@ +1 diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Neo4j/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Neo4j/config.xml new file mode 100644 index 0000000000..f86ce0bd7b --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Neo4j/config.xml @@ -0,0 +1,157 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + absolute_job_path + <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> + ArtifactUpload/dev/KnowledgePlatform/Neo4j + false + + + artifact_source + <font color=black size=2><b> +ArtifactRepo - Download the artifact from azure blob, JenkinsJob - Use the atrifact from Jenkins job.</b></font> + choice-parameter-13436883643465 + 1 + + false + + + + false + + + Neo4j + + + PT_SINGLE_SELECT + false + 1 + + + build_number + + choice-parameter-13436885688258 + 1 + + false + + + + false + + + Neo4j + + artifact_source + ET_FORMATTED_HTML + true + + + artifact_version + + choice-parameter-13436888536349 + 1 + + false + + + + false + + + Neo4j + + artifact_source + ET_FORMATTED_HTML + true + + + + + + false + project + false + + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-learning-platform.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/deploy/neo4j/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Neo4j/nextBuildNumber b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Neo4j/nextBuildNumber new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Neo4j/nextBuildNumber @@ -0,0 +1 @@ +1 diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Neo4jDefinitionUpdate/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Neo4jDefinitionUpdate/config.xml new file mode 100644 index 0000000000..b5224eace1 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Neo4jDefinitionUpdate/config.xml @@ -0,0 +1,60 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-learning-platform.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/deploy/neo4j-definition-update/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Neo4jDefinitionUpdate/nextBuildNumber b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Neo4jDefinitionUpdate/nextBuildNumber new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Neo4jDefinitionUpdate/nextBuildNumber @@ -0,0 +1 @@ +1 diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Neo4jElasticSearchSyncTool/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Neo4jElasticSearchSyncTool/config.xml new file mode 100644 index 0000000000..2000380273 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Neo4jElasticSearchSyncTool/config.xml @@ -0,0 +1,184 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + absolute_job_path + <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> + ArtifactUpload/dev/KnowledgePlatform/SyncTool + false + + + artifact_source + <font color=black size=2><b> +ArtifactRepo - Download the artifact from azure blob, JenkinsJob - Use the atrifact from Jenkins job.</b></font> + choice-parameter-14175006770414 + 1 + + false + + + + false + + + Neo4jElasticSearchSyncTool + + + PT_SINGLE_SELECT + false + 1 + + + build_number + + choice-parameter-14175008677110 + 1 + + false + + + + false + + + Neo4jElasticSearchSyncTool + + artifact_source + ET_FORMATTED_HTML + true + + + artifact_version + + choice-parameter-14175010584707 + 1 + + false + + + + false + + + Neo4jElasticSearchSyncTool + + artifact_source + ET_FORMATTED_HTML + true + + + command + <font color=black size=2><b>Select a command</b></font> + + + sync + syncbyobjecttype + syncbyids + syncbydaterange + + + + + parameters + <font color=black size=2><b>It is parameter to pass with command.<br> + ex:<br> + --objectType Content<br> + --ids do_10101010,do_20202020<br> + --startDate 2018-03-01 --endDate 2018-03-31<br> + --objectType Content --startDate 2018-03-01 --endDate 2018-03-31<br> + --graphId en --objectType Word<br> + --graph domain --objectType Channel<br></b></font> + --graph domain + false + + + + + 0 + 0 + + false + project + false + + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-learning-platform.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/deploy/neo4j-es-synctool/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Neo4jElasticSearchSyncTool/nextBuildNumber b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Neo4jElasticSearchSyncTool/nextBuildNumber new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Neo4jElasticSearchSyncTool/nextBuildNumber @@ -0,0 +1 @@ +1 diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Search/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Search/config.xml new file mode 100644 index 0000000000..3c55d84563 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Search/config.xml @@ -0,0 +1,157 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + absolute_job_path + <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> + ArtifactUpload/dev/KnowledgePlatform/KnowledgePlatform + false + + + artifact_source + <font color=black size=2><b> +ArtifactRepo - Download the artifact from azure blob, JenkinsJob - Use the atrifact from Jenkins job.</b></font> + choice-parameter-14760318274338 + 1 + + false + + + + false + + + Search + + + PT_SINGLE_SELECT + false + 1 + + + build_number + + choice-parameter-14760320375443 + 1 + + false + + + + false + + + Search + + artifact_source + ET_FORMATTED_HTML + true + + + artifact_version + + choice-parameter-14760322347747 + 1 + + false + + + + false + + + Search + + artifact_source + ET_FORMATTED_HTML + true + + + + + + false + project + false + + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-learning-platform.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/deploy/search/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Search/nextBuildNumber b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Search/nextBuildNumber new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Search/nextBuildNumber @@ -0,0 +1 @@ +1 diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/StartNeo4jCluster/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/StartNeo4jCluster/config.xml new file mode 100644 index 0000000000..9e81000e2b --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/StartNeo4jCluster/config.xml @@ -0,0 +1,68 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + false + project + false + + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-learning-platform.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/deploy/neo4j-start-cluster/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/StartNeo4jCluster/nextBuildNumber b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/StartNeo4jCluster/nextBuildNumber new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/StartNeo4jCluster/nextBuildNumber @@ -0,0 +1 @@ +1 diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/ValidateLearning/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/ValidateLearning/config.xml new file mode 100644 index 0000000000..0af53c22f8 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/ValidateLearning/config.xml @@ -0,0 +1,60 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-learning-platform.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/deploy/validate-learning/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/ValidateLearning/nextBuildNumber b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/ValidateLearning/nextBuildNumber new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/ValidateLearning/nextBuildNumber @@ -0,0 +1 @@ +1 diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Yarn/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Yarn/config.xml new file mode 100644 index 0000000000..d91fa2c36f --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Yarn/config.xml @@ -0,0 +1,159 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + absolute_job_path + <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> + ArtifactUpload/dev/KnowledgePlatform/Yarn + false + + + artifact_source + <font color=black size=2><b> +ArtifactRepo - Download the artifact from azure blob, JenkinsJob - Use the atrifact from Jenkins job.</b></font> + choice-parameter-2874232768088857 + 1 + + false + + + + false + + + Yarn + + + PT_SINGLE_SELECT + false + 1 + + + build_number + + choice-parameter-2874449088885218 + 1 + + false + + + + false + + + Yarn + + artifact_source + ET_FORMATTED_HTML + true + + + artifact_version + + choice-parameter-2877900313772031 + 1 + + false + + + + false + + + Yarn + + artifact_source + ET_FORMATTED_HTML + true + + + + + 0 + 0 + + false + project + false + + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-learning-platform.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/deploy/yarn/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Yarn/nextBuildNumber b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Yarn/nextBuildNumber new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Yarn/nextBuildNumber @@ -0,0 +1 @@ +1 diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Plugins/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Plugins/config.xml new file mode 100644 index 0000000000..e25dcd1341 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Plugins/config.xml @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + All + false + false + + + + + + + + false + + + + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Plugins/jobs/CollectionEditor/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Plugins/jobs/CollectionEditor/config.xml new file mode 100644 index 0000000000..3a97381d49 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Plugins/jobs/CollectionEditor/config.xml @@ -0,0 +1,67 @@ + + + + + false + + + false + false + + + + + absolute_job_path + <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> + Build/Plugins/CollectionEditor + false + + + container_name + <font color=black size=2><b>Please specify azure container name.</b></font> + plugins + false + + + + + 0 + 0 + + false + project + false + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-collection-editor.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + Jenkinsfile.deploy + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Plugins/jobs/CollectionEditor/nextBuildNumber b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Plugins/jobs/CollectionEditor/nextBuildNumber new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Plugins/jobs/CollectionEditor/nextBuildNumber @@ -0,0 +1 @@ +1 diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Plugins/jobs/ContentFramework/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Plugins/jobs/ContentFramework/config.xml new file mode 100644 index 0000000000..f0e007d858 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Plugins/jobs/ContentFramework/config.xml @@ -0,0 +1,67 @@ + + + + + false + + + false + false + + + + + absolute_job_path + <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> + Build/Plugins/GenericEditor + false + + + container_name + <font color=black size=2><b>Please specify azure container name.</b></font> + plugins + false + + + + + 0 + 0 + + false + project + false + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-content-editor.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + Jenkinsfile.deploy + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Plugins/jobs/ContentFramework/nextBuildNumber b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Plugins/jobs/ContentFramework/nextBuildNumber new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Plugins/jobs/ContentFramework/nextBuildNumber @@ -0,0 +1 @@ +1 diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Plugins/jobs/ContentRendererPreview/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Plugins/jobs/ContentRendererPreview/config.xml new file mode 100644 index 0000000000..f866564dad --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Plugins/jobs/ContentRendererPreview/config.xml @@ -0,0 +1,67 @@ + + + + + false + + + false + false + + + + + absolute_job_path + <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> + Build/Plugins/CollectionEditor + false + + + container_name + <font color=black size=2><b>Please specify azure container name.</b></font> + plugins + false + + + + + 0 + 0 + + false + project + false + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-content-player.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + Jenkinsfile.deploy + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Plugins/jobs/ContentRendererPreview/nextBuildNumber b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Plugins/jobs/ContentRendererPreview/nextBuildNumber new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Plugins/jobs/ContentRendererPreview/nextBuildNumber @@ -0,0 +1 @@ +1 diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Plugins/jobs/GenericEditor/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Plugins/jobs/GenericEditor/config.xml new file mode 100644 index 0000000000..1990aa563a --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Plugins/jobs/GenericEditor/config.xml @@ -0,0 +1,67 @@ + + + + + false + + + false + false + + + + + absolute_job_path + <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> + Build/Plugins/GenericEditor + false + + + container_name + <font color=black size=2><b>Please specify azure container name.</b></font> + plugins + false + + + + + 0 + 0 + + false + project + false + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-generic-editor.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + Jenkinsfile.deploy + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Plugins/jobs/GenericEditor/nextBuildNumber b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Plugins/jobs/GenericEditor/nextBuildNumber new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Plugins/jobs/GenericEditor/nextBuildNumber @@ -0,0 +1 @@ +1 diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Summary/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Summary/config.xml new file mode 100644 index 0000000000..68477b8ac7 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Summary/config.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + All + false + false + + + + + + + + false + + + + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Summary/jobs/DeployedVersions/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Summary/jobs/DeployedVersions/config.xml new file mode 100644 index 0000000000..ea6986969b --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Summary/jobs/DeployedVersions/config.xml @@ -0,0 +1,72 @@ + + + + + false + + + + -1 + -1 + -1 + 10 + + + + + false + false + + + + false + project + false + + + + + + + Deploy/dev/Core/Content,Deploy/dev/Core/Player,Deploy/dev/Core/Learner,Deploy/dev/Core/Telemetry,Deploy/dev/Core/Proxy,Deploy/dev/KnowledgePlatform/Search,Deploy/dev/KnowledgePlatform/Learning,Deploy/dev/DataPipeline/Secor,Deploy/dev/DataPipeline/Yarn,Deploy/dev/KnowledgePlatform/Yarn,Deploy/dev/DataPipeline/AnalyticsAPI + + SUCCESS + 0 + BLUE + true + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + final-variable-refac + + + false + + + + true + false + + 0 + false + + + + pipelines/summary/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Summary/jobs/DeployedVersions/nextBuildNumber b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Summary/jobs/DeployedVersions/nextBuildNumber new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Summary/jobs/DeployedVersions/nextBuildNumber @@ -0,0 +1 @@ +1 diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/config.xml new file mode 100644 index 0000000000..6fe3ca0b64 --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/config.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + All + false + false + + + + + + + + false + + + + \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/config.xml new file mode 100644 index 0000000000..6fe3ca0b64 --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/config.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + All + false + false + + + + + + + + false + + + + \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/ApplicationElasticsearchBackup/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/ApplicationElasticsearchBackup/config.xml new file mode 100644 index 0000000000..ff31ba71a6 --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/ApplicationElasticsearchBackup/config.xml @@ -0,0 +1,50 @@ + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/backup/es-backup/Jenkinsfile + false + + + false + diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/ApplicationElasticsearchBackup/nextBuildNumber b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/ApplicationElasticsearchBackup/nextBuildNumber new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/ApplicationElasticsearchBackup/nextBuildNumber @@ -0,0 +1 @@ +1 diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/ApplicationElasticsearchRestore/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/ApplicationElasticsearchRestore/config.xml new file mode 100644 index 0000000000..71f6ef2c8c --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/ApplicationElasticsearchRestore/config.xml @@ -0,0 +1,50 @@ + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/backup/es-restore/Jenkinsfile + false + + + false + diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/ApplicationElasticsearchRestore/nextBuildNumber b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/ApplicationElasticsearchRestore/nextBuildNumber new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/ApplicationElasticsearchRestore/nextBuildNumber @@ -0,0 +1 @@ +1 diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/Bootstrap/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/Bootstrap/config.xml new file mode 100644 index 0000000000..3982ea310d --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/Bootstrap/config.xml @@ -0,0 +1,67 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + hosts + <font color=teal size=2>enter the host name to be bootstrapped.</font> + core + false + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/bootstrap/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/Bootstrap/nextBuildNumber b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/Bootstrap/nextBuildNumber new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/Bootstrap/nextBuildNumber @@ -0,0 +1 @@ +1 diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/CassandraBackup/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/CassandraBackup/config.xml new file mode 100644 index 0000000000..7bbf214a5a --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/CassandraBackup/config.xml @@ -0,0 +1,50 @@ + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/backup/cassandra-backup/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/CassandraBackup/nextBuildNumber b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/CassandraBackup/nextBuildNumber new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/CassandraBackup/nextBuildNumber @@ -0,0 +1 @@ +1 diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/LoggerElasticSearchBackup/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/LoggerElasticSearchBackup/config.xml new file mode 100644 index 0000000000..1b26809438 --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/LoggerElasticSearchBackup/config.xml @@ -0,0 +1,50 @@ + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/backup/logger-es-backup/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/LoggerElasticSearchBackup/nextBuildNumber b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/LoggerElasticSearchBackup/nextBuildNumber new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/LoggerElasticSearchBackup/nextBuildNumber @@ -0,0 +1 @@ +1 diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/LoggerElasticSearchRestore/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/LoggerElasticSearchRestore/config.xml new file mode 100644 index 0000000000..155b4a90aa --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/LoggerElasticSearchRestore/config.xml @@ -0,0 +1,50 @@ + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/backup/logger-es-restore/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/LoggerElasticSearchRestore/nextBuildNumber b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/LoggerElasticSearchRestore/nextBuildNumber new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/LoggerElasticSearchRestore/nextBuildNumber @@ -0,0 +1 @@ +1 diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/PostgresqlBackup/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/PostgresqlBackup/config.xml new file mode 100644 index 0000000000..faa94b00f2 --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/PostgresqlBackup/config.xml @@ -0,0 +1,51 @@ + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/backup/postgresql-backup/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/PostgresqlBackup/nextBuildNumber b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/PostgresqlBackup/nextBuildNumber new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/PostgresqlBackup/nextBuildNumber @@ -0,0 +1 @@ +1 diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/PostgresqlRestore/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/PostgresqlRestore/config.xml new file mode 100644 index 0000000000..9ad72ff266 --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/PostgresqlRestore/config.xml @@ -0,0 +1,51 @@ + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/backup/postgresql-restore/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/PostgresqlRestore/nextBuildNumber b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/PostgresqlRestore/nextBuildNumber new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/PostgresqlRestore/nextBuildNumber @@ -0,0 +1 @@ +1 diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/PrometheusBackup/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/PrometheusBackup/config.xml new file mode 100644 index 0000000000..8e757f82b7 --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/PrometheusBackup/config.xml @@ -0,0 +1,50 @@ + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/backup/prometheus-backup/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/PrometheusBackup/nextBuildNumber b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/PrometheusBackup/nextBuildNumber new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/PrometheusBackup/nextBuildNumber @@ -0,0 +1 @@ +1 diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/SwarmBootstrap/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/SwarmBootstrap/config.xml new file mode 100644 index 0000000000..cec50282af --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/SwarmBootstrap/config.xml @@ -0,0 +1,50 @@ + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/bootstrap-swarm/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/SwarmBootstrap/nextBuildNumber b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/SwarmBootstrap/nextBuildNumber new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/SwarmBootstrap/nextBuildNumber @@ -0,0 +1 @@ +1 diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/config.xml new file mode 100644 index 0000000000..68477b8ac7 --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/config.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + All + false + false + + + + + + + + false + + + + \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/AnalyticsAPILogs/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/AnalyticsAPILogs/config.xml new file mode 100644 index 0000000000..c89f254ee1 --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/AnalyticsAPILogs/config.xml @@ -0,0 +1,51 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + 2 + + + https://github.com/ekstep/sunbird-devops.git + 64bdfe13-cc30-4864-bd3c-4e89be89fc9d + + + + + DO-380 + + + false + + + + pipelines/analytics-api-logs/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/AnalyticsAPILogs/nextBuildNumber b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/AnalyticsAPILogs/nextBuildNumber new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/AnalyticsAPILogs/nextBuildNumber @@ -0,0 +1 @@ +1 diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/Bootstrap/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/Bootstrap/config.xml new file mode 100644 index 0000000000..df91bff4cc --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/Bootstrap/config.xml @@ -0,0 +1,60 @@ + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + hosts + <font color=teal size=2>enter the host name to be bootstrapped.</font> + dp + false + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/bootstrap/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/Bootstrap/nextBuildNumber b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/Bootstrap/nextBuildNumber new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/Bootstrap/nextBuildNumber @@ -0,0 +1 @@ +1 diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/CassandraBackup/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/CassandraBackup/config.xml new file mode 100644 index 0000000000..c861a2c2ad --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/CassandraBackup/config.xml @@ -0,0 +1,74 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + remote + <font color=teal size=2>enter the host name.</font> + cassandra + false + + + data_dir + <font color=teal size=2>enter cassandra data directory.</font> + /data/cassandra/data + false + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/backup/cassandra-backup/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/CassandraBackup/nextBuildNumber b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/CassandraBackup/nextBuildNumber new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/CassandraBackup/nextBuildNumber @@ -0,0 +1 @@ +1 diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/CassandraRestore/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/CassandraRestore/config.xml new file mode 100644 index 0000000000..b4c7ea72a1 --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/CassandraRestore/config.xml @@ -0,0 +1,74 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + remote + <font color=teal size=2>enter the host name.</font> + cassandra + false + + + artifact_version + <font color=teal size=2>Specify the artifact version to restore</font> + + false + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/backup/cassandra-restore/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/CassandraRestore/nextBuildNumber b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/CassandraRestore/nextBuildNumber new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/CassandraRestore/nextBuildNumber @@ -0,0 +1 @@ +1 diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/ElasticsearchBackup/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/ElasticsearchBackup/config.xml new file mode 100644 index 0000000000..ec3ce736a9 --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/ElasticsearchBackup/config.xml @@ -0,0 +1,67 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + remote + <font color=teal size=2>enter any one host name or ip if it is a cluster</font> + + false + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/backup/elasticsearch-backup/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/ElasticsearchBackup/nextBuildNumber b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/ElasticsearchBackup/nextBuildNumber new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/ElasticsearchBackup/nextBuildNumber @@ -0,0 +1 @@ +1 diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/ElasticsearchRestore/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/ElasticsearchRestore/config.xml new file mode 100644 index 0000000000..311d76650a --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/ElasticsearchRestore/config.xml @@ -0,0 +1,75 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + host + <font color=teal size=2>enter any one host name or ip if it is a cluster</font> + + false + + + SNAPSHOT_NUMBER + <font color=teal size=2>Enter Snapshot number to restore. +curl command to get snapshot number: +curl http://localhost:9200/_snapshot/azurebackup/_all, Parse the json and get the valid snapshot number to restore</font> + + false + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/backup/elasticsearch-restore/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/ElasticsearchRestore/nextBuildNumber b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/ElasticsearchRestore/nextBuildNumber new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/ElasticsearchRestore/nextBuildNumber @@ -0,0 +1 @@ +1 diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/InfluxDBBackup/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/InfluxDBBackup/config.xml new file mode 100644 index 0000000000..db7d1a4a84 --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/InfluxDBBackup/config.xml @@ -0,0 +1,57 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/backup/influxdb-backup/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/InfluxDBBackup/nextBuildNumber b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/InfluxDBBackup/nextBuildNumber new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/InfluxDBBackup/nextBuildNumber @@ -0,0 +1 @@ +1 diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/PostgresqlBackup/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/PostgresqlBackup/config.xml new file mode 100644 index 0000000000..018f24c55b --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/PostgresqlBackup/config.xml @@ -0,0 +1,51 @@ + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/backup/postgresql-backup/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/PostgresqlBackup/nextBuildNumber b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/PostgresqlBackup/nextBuildNumber new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/PostgresqlBackup/nextBuildNumber @@ -0,0 +1 @@ +1 diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/PostgresqlRestore/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/PostgresqlRestore/config.xml new file mode 100644 index 0000000000..6516c5daf1 --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/PostgresqlRestore/config.xml @@ -0,0 +1,51 @@ + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/backup/postgresql-restore/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/PostgresqlRestore/nextBuildNumber b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/PostgresqlRestore/nextBuildNumber new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/PostgresqlRestore/nextBuildNumber @@ -0,0 +1 @@ +1 diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/KnowledgePlatform/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/KnowledgePlatform/config.xml new file mode 100644 index 0000000000..6fe3ca0b64 --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/KnowledgePlatform/config.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + All + false + false + + + + + + + + false + + + + \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/KnowledgePlatform/jobs/Bootstrap/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/KnowledgePlatform/jobs/Bootstrap/config.xml new file mode 100644 index 0000000000..0e32e6c07a --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/KnowledgePlatform/jobs/Bootstrap/config.xml @@ -0,0 +1,60 @@ + + + + + false + + + + -1 + -1 + -1 + 5 + + + + false + false + + + + + hosts + <font color=teal size=2>enter the host name to be bootstrapped.</font> + lp + false + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-learning-platform.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/bootstrap/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/KnowledgePlatform/jobs/Bootstrap/nextBuildNumber b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/KnowledgePlatform/jobs/Bootstrap/nextBuildNumber new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/KnowledgePlatform/jobs/Bootstrap/nextBuildNumber @@ -0,0 +1 @@ +1 diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/KnowledgePlatform/jobs/CassandraBackup/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/KnowledgePlatform/jobs/CassandraBackup/config.xml new file mode 100644 index 0000000000..f55022a82f --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/KnowledgePlatform/jobs/CassandraBackup/config.xml @@ -0,0 +1,67 @@ + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + remote + <font color=teal size=2>enter the host name.</font> + cassandra + false + + + data_dir + <font color=teal size=2>enter cassandra data directory.</font> + /data/cassandra/data + false + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-learning-platform.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/backup/cassandra-backup/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/KnowledgePlatform/jobs/CassandraBackup/nextBuildNumber b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/KnowledgePlatform/jobs/CassandraBackup/nextBuildNumber new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/KnowledgePlatform/jobs/CassandraBackup/nextBuildNumber @@ -0,0 +1 @@ +1 diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/KnowledgePlatform/jobs/CassandraRestore/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/KnowledgePlatform/jobs/CassandraRestore/config.xml new file mode 100644 index 0000000000..2e1f614b7d --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/KnowledgePlatform/jobs/CassandraRestore/config.xml @@ -0,0 +1,67 @@ + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + remote + <font color=teal size=2>enter the host name.</font> + cassandra + false + + + artifact_version + <font color=teal size=2>Specify the artifact version to restore</font> + + false + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-learning-platform.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/backup/cassandra-restore/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/KnowledgePlatform/jobs/CassandraRestore/nextBuildNumber b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/KnowledgePlatform/jobs/CassandraRestore/nextBuildNumber new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/KnowledgePlatform/jobs/CassandraRestore/nextBuildNumber @@ -0,0 +1 @@ +1 diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/KnowledgePlatform/jobs/ElasticsearchBackup/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/KnowledgePlatform/jobs/ElasticsearchBackup/config.xml new file mode 100644 index 0000000000..6a596bd083 --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/KnowledgePlatform/jobs/ElasticsearchBackup/config.xml @@ -0,0 +1,53 @@ + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + remote + <font color=teal size=2>enter any one host name or ip if it is a cluster</font> + + false + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-learning-platform.git + + + + + ${public_repo_branch} + + + false + + + + pipelines/backup/elasticsearch/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/KnowledgePlatform/jobs/ElasticsearchBackup/nextBuildNumber b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/KnowledgePlatform/jobs/ElasticsearchBackup/nextBuildNumber new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/KnowledgePlatform/jobs/ElasticsearchBackup/nextBuildNumber @@ -0,0 +1 @@ +1 diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/KnowledgePlatform/jobs/ElasticsearchRestore/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/KnowledgePlatform/jobs/ElasticsearchRestore/config.xml new file mode 100644 index 0000000000..76be767bbb --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/KnowledgePlatform/jobs/ElasticsearchRestore/config.xml @@ -0,0 +1,61 @@ + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + host + <font color=teal size=2>enter any one host name or ip if it is a cluster</font> + + false + + + SNAPSHOT_NUMBER + <font color=teal size=2>Enter Snapshot number to restore. +curl command to get snapshot number: +curl http://localhost:9200/_snapshot/azurebackup/_all, Parse the json and get the valid snapshot number to restore</font> + + false + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-learning-platform.git + + + + + ${public_repo_branch} + + + false + + + + pipelines/backup/elasticsearch-restore/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/KnowledgePlatform/jobs/ElasticsearchRestore/nextBuildNumber b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/KnowledgePlatform/jobs/ElasticsearchRestore/nextBuildNumber new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/KnowledgePlatform/jobs/ElasticsearchRestore/nextBuildNumber @@ -0,0 +1 @@ +1 diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/KnowledgePlatform/jobs/Neo4jBackup/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/KnowledgePlatform/jobs/Neo4jBackup/config.xml new file mode 100644 index 0000000000..08d200a985 --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/KnowledgePlatform/jobs/Neo4jBackup/config.xml @@ -0,0 +1,43 @@ + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + 2 + + + https://github.com/project-sunbird/sunbird-learning-platform.git + + + + + ${public_repo_branch} + + + false + + + + pipelines/backup/neo4j/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/KnowledgePlatform/jobs/Neo4jBackup/nextBuildNumber b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/KnowledgePlatform/jobs/Neo4jBackup/nextBuildNumber new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/KnowledgePlatform/jobs/Neo4jBackup/nextBuildNumber @@ -0,0 +1 @@ +1 diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/KnowledgePlatform/jobs/Neo4jRestore/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/KnowledgePlatform/jobs/Neo4jRestore/config.xml new file mode 100644 index 0000000000..79b8319556 --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/KnowledgePlatform/jobs/Neo4jRestore/config.xml @@ -0,0 +1,85 @@ + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + neo4j_restore_gzip_file_name + + + false + + + neo4j_restore_azure_storage_account_name + + + false + + + neo4j_restore_azure_storage_access_key + + + false + + + neo4j_restore_azure_container_name + + neo4j-backup + false + + + hosts + + learning-neo4j-node1 + false + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-learning-platform.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/backup/neo4j-restore/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/KnowledgePlatform/jobs/Neo4jRestore/nextBuildNumber b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/KnowledgePlatform/jobs/Neo4jRestore/nextBuildNumber new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/KnowledgePlatform/jobs/Neo4jRestore/nextBuildNumber @@ -0,0 +1 @@ +1 diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/config.xml b/deploy/jenkins/jobs/Provision/jobs/staging/config.xml new file mode 100644 index 0000000000..6fe3ca0b64 --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/staging/config.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + All + false + false + + + + + + + + false + + + + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/config.xml b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/config.xml new file mode 100644 index 0000000000..68477b8ac7 --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/config.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + All + false + false + + + + + + + + false + + + + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/Cassandra/config.xml b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/Cassandra/config.xml new file mode 100644 index 0000000000..ca3d7874c7 --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/Cassandra/config.xml @@ -0,0 +1,50 @@ + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/provision/cassandra/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/Cassandra/nextBuildNumber b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/Cassandra/nextBuildNumber new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/Cassandra/nextBuildNumber @@ -0,0 +1 @@ +1 diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/JenkinsSlave/config.xml b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/JenkinsSlave/config.xml new file mode 100644 index 0000000000..4e632379e4 --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/JenkinsSlave/config.xml @@ -0,0 +1,70 @@ + + + + <font color=red size=2><b>This jobs is currently disabled as it's not being used.</b></font> + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + jenkins_host + <font color=black size=2><b>Provide the IP of Jenkins host.</b></font> + + false + + + + + 0 + 0 + + false + project + false + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/provision/jenkins-slave/Jenkinsfile + false + + + true + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/JenkinsSlave/nextBuildNumber b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/JenkinsSlave/nextBuildNumber new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/JenkinsSlave/nextBuildNumber @@ -0,0 +1 @@ +1 diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/Kafka/config.xml b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/Kafka/config.xml new file mode 100644 index 0000000000..d78cd9a248 --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/Kafka/config.xml @@ -0,0 +1,58 @@ + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + false + project + false + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + {public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/provision/kafka/Jenkinsfile + false + + + true + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/Kafka/nextBuildNumber b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/Kafka/nextBuildNumber new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/Kafka/nextBuildNumber @@ -0,0 +1 @@ +1 diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/Keycloak/config.xml b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/Keycloak/config.xml new file mode 100644 index 0000000000..fcc171f960 --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/Keycloak/config.xml @@ -0,0 +1,65 @@ + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + false + project + false + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + true + false + + 0 + false + + + + pipelines/provision/keycloak/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/Keycloak/nextBuildNumber b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/Keycloak/nextBuildNumber new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/Keycloak/nextBuildNumber @@ -0,0 +1 @@ +1 diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/LogElasticSearch/config.xml b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/LogElasticSearch/config.xml new file mode 100644 index 0000000000..31388c0319 --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/LogElasticSearch/config.xml @@ -0,0 +1,50 @@ + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/provision/log-es/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/LogElasticSearch/nextBuildNumber b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/LogElasticSearch/nextBuildNumber new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/LogElasticSearch/nextBuildNumber @@ -0,0 +1 @@ +1 diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/Postgres/config.xml b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/Postgres/config.xml new file mode 100644 index 0000000000..3b3747b527 --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/Postgres/config.xml @@ -0,0 +1,50 @@ + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/provision/postgres/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/Postgres/nextBuildNumber b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/Postgres/nextBuildNumber new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/Postgres/nextBuildNumber @@ -0,0 +1 @@ +1 diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/PostgresDbUpdate/config.xml b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/PostgresDbUpdate/config.xml new file mode 100644 index 0000000000..48928e45f2 --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/PostgresDbUpdate/config.xml @@ -0,0 +1,50 @@ + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/provision/postgres-db-update/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/PostgresDbUpdate/nextBuildNumber b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/PostgresDbUpdate/nextBuildNumber new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/PostgresDbUpdate/nextBuildNumber @@ -0,0 +1 @@ +1 diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/Registry/config.xml b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/Registry/config.xml new file mode 100644 index 0000000000..0d74bd2f96 --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/Registry/config.xml @@ -0,0 +1,58 @@ + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + false + project + false + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/provision/registry/Jenkinsfile + false + + + true + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/Registry/nextBuildNumber b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/Registry/nextBuildNumber new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/Registry/nextBuildNumber @@ -0,0 +1 @@ +1 diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/Secor/config.xml b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/Secor/config.xml new file mode 100644 index 0000000000..cf74052977 --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/Secor/config.xml @@ -0,0 +1,58 @@ + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + false + project + false + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/provision/secor/Jenkinsfile + false + + + true + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/Secor/nextBuildNumber b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/Secor/nextBuildNumber new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/Secor/nextBuildNumber @@ -0,0 +1 @@ +1 diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/config.xml b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/config.xml new file mode 100644 index 0000000000..68477b8ac7 --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/config.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + All + false + false + + + + + + + + false + + + + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/AnalyticsAPI/config.xml b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/AnalyticsAPI/config.xml new file mode 100644 index 0000000000..daeb780bbd --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/AnalyticsAPI/config.xml @@ -0,0 +1,57 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/provision/analytics-api/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/AnalyticsAPI/nextBuildNumber b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/AnalyticsAPI/nextBuildNumber new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/AnalyticsAPI/nextBuildNumber @@ -0,0 +1 @@ +1 diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/AnalyticsSecor/config.xml b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/AnalyticsSecor/config.xml new file mode 100644 index 0000000000..a0de40ab90 --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/AnalyticsSecor/config.xml @@ -0,0 +1,56 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + false + false + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/provision/secor/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/AnalyticsSecor/nextBuildNumber b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/AnalyticsSecor/nextBuildNumber new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/AnalyticsSecor/nextBuildNumber @@ -0,0 +1 @@ +1 diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/AnalyticsSpark/config.xml b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/AnalyticsSpark/config.xml new file mode 100644 index 0000000000..9aea1868e4 --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/AnalyticsSpark/config.xml @@ -0,0 +1,57 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/provision/spark/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/AnalyticsSpark/nextBuildNumber b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/AnalyticsSpark/nextBuildNumber new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/AnalyticsSpark/nextBuildNumber @@ -0,0 +1 @@ +1 diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/Cassandra/config.xml b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/Cassandra/config.xml new file mode 100644 index 0000000000..abfcd287fa --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/Cassandra/config.xml @@ -0,0 +1,50 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline.git + + + + + ${public_repo_branch} + + + false + + + + pipelines/provision/cassandra/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/Cassandra/nextBuildNumber b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/Cassandra/nextBuildNumber new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/Cassandra/nextBuildNumber @@ -0,0 +1 @@ +1 diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/InfluxDB/config.xml b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/InfluxDB/config.xml new file mode 100644 index 0000000000..d3dcbb10b8 --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/InfluxDB/config.xml @@ -0,0 +1,56 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + false + false + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/provision/influxdb/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/InfluxDB/nextBuildNumber b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/InfluxDB/nextBuildNumber new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/InfluxDB/nextBuildNumber @@ -0,0 +1 @@ +1 diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/Kafka/config.xml b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/Kafka/config.xml new file mode 100644 index 0000000000..6d92ec2f44 --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/Kafka/config.xml @@ -0,0 +1,65 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + false + project + false + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/provision/kafka/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/Kafka/nextBuildNumber b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/Kafka/nextBuildNumber new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/Kafka/nextBuildNumber @@ -0,0 +1 @@ +1 diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/Kibana/config.xml b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/Kibana/config.xml new file mode 100644 index 0000000000..38316772f0 --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/Kibana/config.xml @@ -0,0 +1,57 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/provision/kibana/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/Kibana/nextBuildNumber b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/Kibana/nextBuildNumber new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/Kibana/nextBuildNumber @@ -0,0 +1 @@ +1 diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/Postgres/config.xml b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/Postgres/config.xml new file mode 100644 index 0000000000..33e61fb3d7 --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/Postgres/config.xml @@ -0,0 +1,56 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + false + false + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/provision/postgres-lpa/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/Postgres/nextBuildNumber b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/Postgres/nextBuildNumber new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/Postgres/nextBuildNumber @@ -0,0 +1 @@ +1 diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/TelemetrySearch/config.xml b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/TelemetrySearch/config.xml new file mode 100644 index 0000000000..b51b86935f --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/TelemetrySearch/config.xml @@ -0,0 +1,65 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + false + project + false + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/provision/telemetry_elasticsearch/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/TelemetrySearch/nextBuildNumber b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/TelemetrySearch/nextBuildNumber new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/TelemetrySearch/nextBuildNumber @@ -0,0 +1 @@ +1 diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/Yarn/config.xml b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/Yarn/config.xml new file mode 100644 index 0000000000..9bf7797e3c --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/Yarn/config.xml @@ -0,0 +1,57 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/provision/yarn/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/Yarn/nextBuildNumber b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/Yarn/nextBuildNumber new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/Yarn/nextBuildNumber @@ -0,0 +1 @@ +1 diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/Zookeeper/config.xml b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/Zookeeper/config.xml new file mode 100644 index 0000000000..a8b9cceb7f --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/Zookeeper/config.xml @@ -0,0 +1,64 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + false + false + + + + false + project + false + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/provision/zookeeper/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/Zookeeper/nextBuildNumber b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/Zookeeper/nextBuildNumber new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/Zookeeper/nextBuildNumber @@ -0,0 +1 @@ +1 diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/config.xml b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/config.xml new file mode 100644 index 0000000000..68477b8ac7 --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/config.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + All + false + false + + + + + + + + false + + + + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Cassandra/config.xml b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Cassandra/config.xml new file mode 100644 index 0000000000..a9a247e8d2 --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Cassandra/config.xml @@ -0,0 +1,61 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-learning-platform.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/provision/cassandra/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Cassandra/nextBuildNumber b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Cassandra/nextBuildNumber new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Cassandra/nextBuildNumber @@ -0,0 +1 @@ +1 diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/CompositeSearch/config.xml b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/CompositeSearch/config.xml new file mode 100644 index 0000000000..360f4f174a --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/CompositeSearch/config.xml @@ -0,0 +1,61 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-learning-platform.git + + + + + ${public_repo_branch} + + + false + + + + true + true + + 0 + false + + + + pipelines/provision/composite-search/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/CompositeSearch/nextBuildNumber b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/CompositeSearch/nextBuildNumber new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/CompositeSearch/nextBuildNumber @@ -0,0 +1 @@ +1 diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Kafka/config.xml b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Kafka/config.xml new file mode 100644 index 0000000000..93354ef4c3 --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Kafka/config.xml @@ -0,0 +1,61 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-learning-platform.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/provision/kafka/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Kafka/nextBuildNumber b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Kafka/nextBuildNumber new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Kafka/nextBuildNumber @@ -0,0 +1 @@ +1 diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Learning/config.xml b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Learning/config.xml new file mode 100644 index 0000000000..bb374f354d --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Learning/config.xml @@ -0,0 +1,68 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + false + project + false + + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-learning-platform.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/provision/learning/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Learning/nextBuildNumber b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Learning/nextBuildNumber new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Learning/nextBuildNumber @@ -0,0 +1 @@ +1 diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Neo4j/config.xml b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Neo4j/config.xml new file mode 100644 index 0000000000..68a62ccf6d --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Neo4j/config.xml @@ -0,0 +1,61 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-learning-platform.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/provision/neo4j/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Neo4j/nextBuildNumber b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Neo4j/nextBuildNumber new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Neo4j/nextBuildNumber @@ -0,0 +1 @@ +1 diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Redis/config.xml b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Redis/config.xml new file mode 100644 index 0000000000..cf7e9a532d --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Redis/config.xml @@ -0,0 +1,61 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-learning-platform.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/provision/redis/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Redis/nextBuildNumber b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Redis/nextBuildNumber new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Redis/nextBuildNumber @@ -0,0 +1 @@ +1 diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Search/config.xml b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Search/config.xml new file mode 100644 index 0000000000..064d2fb01a --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Search/config.xml @@ -0,0 +1,60 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-learning-platform.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/provision/search/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Search/nextBuildNumber b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Search/nextBuildNumber new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Search/nextBuildNumber @@ -0,0 +1 @@ +1 diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Yarn/config.xml b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Yarn/config.xml new file mode 100644 index 0000000000..fe08c83f03 --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Yarn/config.xml @@ -0,0 +1,68 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + false + project + false + + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-learning-platform.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/provision/yarn/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Yarn/nextBuildNumber b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Yarn/nextBuildNumber new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Yarn/nextBuildNumber @@ -0,0 +1 @@ +1 diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Zookeeper/config.xml b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Zookeeper/config.xml new file mode 100644 index 0000000000..7c89cde9d5 --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Zookeeper/config.xml @@ -0,0 +1,61 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-learning-platform.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/provision/zookeeper/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Zookeeper/nextBuildNumber b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Zookeeper/nextBuildNumber new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Zookeeper/nextBuildNumber @@ -0,0 +1 @@ +1 From b31c4eca330e996f4bdfd90c031c4343ce23ad19 Mon Sep 17 00:00:00 2001 From: msknext Date: Mon, 25 Feb 2019 06:32:58 +0000 Subject: [PATCH 1251/1345] feat #000: Adding upstream configurations for jobs --- .../Core/jobs/FuntionalTestCases/config.xml | 58 +++++++++++++++++++ .../DataPipeline/jobs/AnalyticsAPI/config.xml | 26 +++++++-- .../DataPipeline/jobs/DataProducts/config.xml | 28 +++++++-- .../jobs/DataPipeline/jobs/Secor/config.xml | 28 +++++++-- .../jobs/DataPipeline/jobs/Yarn/config.xml | 26 +++++++-- .../jobs/Learning/config.xml | 25 +++++--- .../KnowledgePlatform/jobs/Search/config.xml | 27 ++++++--- .../KnowledgePlatform/jobs/Yarn/config.xml | 25 +++++--- .../Summary/jobs/DeployedVersions/config.xml | 4 +- 9 files changed, 201 insertions(+), 46 deletions(-) create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/FuntionalTestCases/config.xml diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/FuntionalTestCases/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/FuntionalTestCases/config.xml new file mode 100644 index 0000000000..452ab52906 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/FuntionalTestCases/config.xml @@ -0,0 +1,58 @@ + + + + + + + false + + + + + H 23 * * * + + + + + + -1 + 15 + -1 + -1 + + + + false + false + + + + false + project + false + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-functional-tests.git + + + + + */release-1.14 + + + false + + + + Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsAPI/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsAPI/config.xml index 3c6db21859..17352bf36c 100644 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsAPI/config.xml +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsAPI/config.xml @@ -39,14 +39,14 @@ ArtifactRepo - Download the artifact from azure blob, JenkinsJob - Use the atrif choice-parameter-9061667106947 1 false - + false @@ -64,7 +64,7 @@ ArtifactRepo - Download the artifact from azure blob, JenkinsJob - Use the atrif choice-parameter-9061670571657 1 false - + false @@ -91,7 +91,7 @@ return "<b>Not Applicable</b>" choice-parameter-9061673103864 1 false - + false @@ -122,6 +122,20 @@ return "<b>Not Applicable</b>" false + + + + + ArtifactUpload/dev/DataPipeline/Analytics + + SUCCESS + 0 + BLUE + true + + + + diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/DataProducts/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/DataProducts/config.xml index 4a480bffa9..8555c74ae3 100644 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/DataProducts/config.xml +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/DataProducts/config.xml @@ -39,14 +39,14 @@ ArtifactRepo - Download the artifact from azure blob, JenkinsJob - Use the atrif choice-parameter-9061667106947 1 false - + false @@ -64,7 +64,7 @@ ArtifactRepo - Download the artifact from azure blob, JenkinsJob - Use the atrif choice-parameter-9061670571657 1 false - + false @@ -91,7 +91,7 @@ return "<b>Not Applicable</b>" choice-parameter-9061673103864 1 false - + false @@ -114,12 +114,28 @@ return "<b>Not Applicable</b>" + 0 + 0 false project false + + + + + ArtifactUpload/dev/DataPipeline/Analytics + + SUCCESS + 0 + BLUE + true + + + + diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/Secor/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/Secor/config.xml index 21d54c2e64..c6280e1462 100644 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/Secor/config.xml +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/Secor/config.xml @@ -39,14 +39,14 @@ ArtifactRepo - Download the artifact from azure blob, JenkinsJob - Use the atrif choice-parameter-9061667106947 1 false - + false @@ -64,7 +64,7 @@ ArtifactRepo - Download the artifact from azure blob, JenkinsJob - Use the atrif choice-parameter-9061670571657 1 false - + false @@ -91,7 +91,7 @@ return "<b>Not Applicable</b>" choice-parameter-9061673103864 1 false - + false @@ -114,12 +114,28 @@ return "<b>Not Applicable</b>" + 0 + 0 false project false + + + + + ArtifactUpload/dev/DataPipeline/Secor + + SUCCESS + 0 + BLUE + true + + + + diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/Yarn/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/Yarn/config.xml index 8f7d03b584..5b03ff4cb6 100644 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/Yarn/config.xml +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/Yarn/config.xml @@ -39,14 +39,14 @@ ArtifactRepo - Download the artifact from azure blob, JenkinsJob - Use the atrif choice-parameter-9061667106947 1 false - + false @@ -64,7 +64,7 @@ ArtifactRepo - Download the artifact from azure blob, JenkinsJob - Use the atrif choice-parameter-9061670571657 1 false - + false @@ -91,7 +91,7 @@ return "<b>Not Applicable</b>" choice-parameter-9061673103864 1 false - + false @@ -122,6 +122,20 @@ return "<b>Not Applicable</b>" false + + + + + ArtifactUpload/dev/DataPipeline/DataPipeline + + SUCCESS + 0 + BLUE + true + + + + diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Learning/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Learning/config.xml index f0b31f5bd2..1bb8dee30b 100644 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Learning/config.xml +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Learning/config.xml @@ -39,14 +39,14 @@ ArtifactRepo - Download the artifact from azure blob, JenkinsJob - Use the atrif choice-parameter-12566219493457 1 false - + false @@ -64,7 +64,7 @@ ArtifactRepo - Download the artifact from azure blob, JenkinsJob - Use the atrif choice-parameter-12566221440336 1 false - + false @@ -91,7 +91,7 @@ return "<b>Not Applicable</b>" choice-parameter-12566223395914 1 false - + false @@ -123,7 +123,18 @@ return "<b>Not Applicable</b>" - + + + + ArtifactUpload/dev/KnowledgePlatform/KnowledgePlatform + + SUCCESS + 0 + BLUE + true + + + diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Search/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Search/config.xml index 3c55d84563..d1ef2ccb91 100644 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Search/config.xml +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Search/config.xml @@ -39,14 +39,14 @@ ArtifactRepo - Download the artifact from azure blob, JenkinsJob - Use the atrif choice-parameter-14760318274338 1 false - + false @@ -64,7 +64,7 @@ ArtifactRepo - Download the artifact from azure blob, JenkinsJob - Use the atrif choice-parameter-14760320375443 1 false - + false @@ -91,7 +91,7 @@ return "<b>Not Applicable</b>" choice-parameter-14760322347747 1 false - + false @@ -114,6 +114,8 @@ return "<b>Not Applicable</b>" + 0 + 0 false project @@ -121,7 +123,18 @@ return "<b>Not Applicable</b>" - + + + + ArtifactUpload/dev/KnowledgePlatform/KnowledgePlatform + + SUCCESS + 0 + BLUE + true + + + diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Yarn/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Yarn/config.xml index d91fa2c36f..880c93ef59 100644 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Yarn/config.xml +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Yarn/config.xml @@ -39,14 +39,14 @@ ArtifactRepo - Download the artifact from azure blob, JenkinsJob - Use the atrif choice-parameter-2874232768088857 1 false - + false @@ -64,7 +64,7 @@ ArtifactRepo - Download the artifact from azure blob, JenkinsJob - Use the atrif choice-parameter-2874449088885218 1 false - + false @@ -91,7 +91,7 @@ return "<b>Not Applicable</b>" choice-parameter-2877900313772031 1 false - + false @@ -123,7 +123,18 @@ return "<b>Not Applicable</b>" - + + + + ArtifactUpload/dev/KnowledgePlatform/Yarn + + SUCCESS + 0 + BLUE + true + + + diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Summary/jobs/DeployedVersions/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Summary/jobs/DeployedVersions/config.xml index ea6986969b..dcbd83390e 100644 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Summary/jobs/DeployedVersions/config.xml +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Summary/jobs/DeployedVersions/config.xml @@ -18,6 +18,8 @@ false + 0 + 0 false project @@ -28,7 +30,7 @@ - Deploy/dev/Core/Content,Deploy/dev/Core/Player,Deploy/dev/Core/Learner,Deploy/dev/Core/Telemetry,Deploy/dev/Core/Proxy,Deploy/dev/KnowledgePlatform/Search,Deploy/dev/KnowledgePlatform/Learning,Deploy/dev/DataPipeline/Secor,Deploy/dev/DataPipeline/Yarn,Deploy/dev/KnowledgePlatform/Yarn,Deploy/dev/DataPipeline/AnalyticsAPI + Deploy/dev/Core/Content,Deploy/dev/Core/Player,Deploy/dev/Core/Learner,Deploy/dev/Core/Telemetry,Deploy/dev/Core/Proxy,Deploy/dev/KnowledgePlatform/Search,Deploy/dev/KnowledgePlatform/Learning,Deploy/dev/KnowledgePlatform/Yarn,Deploy/dev/DataPipeline/Secor,Deploy/dev/DataPipeline/Yarn,Deploy/dev/DataPipeline/AnalyticsAPI,Deploy/dev/DataPipeline/DataProducts SUCCESS 0 From 98270c2596836c2cf0871d74ac8adb5ec7b3f04f Mon Sep 17 00:00:00 2001 From: Rajesh Rajendran Date: Mon, 25 Feb 2019 15:59:16 +0530 Subject: [PATCH 1252/1345] Refactored dev deploy (#292) * Issue #000 feat: Added trampoline secret * Issue #000 feat: Adding deprecated config service variables --- ansible/inventory/env/group_vars/all.yml | 6 ++++-- private_repo/ansible/inventory/dev/Core/secrets.yml | 1 + 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/ansible/inventory/env/group_vars/all.yml b/ansible/inventory/env/group_vars/all.yml index 713967d486..60f2bd2d6b 100644 --- a/ansible/inventory/env/group_vars/all.yml +++ b/ansible/inventory/env/group_vars/all.yml @@ -519,8 +519,6 @@ vault_sms_method_type: "{{core_vault_sms_method_type}}" default_channel_id: "in.ekstep" ## -config_refresh_interval: 10 -config_service_enabled: false trampoline_secret: "{{core_vault_trampoline_secret}}" es_api_host: "{{inventory_hostname}}" @@ -529,3 +527,7 @@ enc_postgres_password: "{{core_vault_postgres_password}}" # Depricated value ?? postgres_replication_user_password: "{{core_vault_postgres_password}}" +# Config service variables, not required +sunbird_config_service_url: +config_refresh_interval: 10 +config_service_enabled: false diff --git a/private_repo/ansible/inventory/dev/Core/secrets.yml b/private_repo/ansible/inventory/dev/Core/secrets.yml index 386b73273c..0b4d425f4f 100644 --- a/private_repo/ansible/inventory/dev/Core/secrets.yml +++ b/private_repo/ansible/inventory/dev/Core/secrets.yml @@ -6,6 +6,7 @@ core_vault_kong__test_jwt: ############# Core ####################### ####### Secrets ####### +core_vault_sunbird_trampoline_secret: # some 8 digit password for keycloak sso user core_vault_postgres_password: core_vault_sunbird_azure_storage_key : core_vault_docker_registry_url: "https://index.docker.io/v1" # use this value if using dockerhub From 4537df4f3e97e862f8cc2e60f2652d3bd81ab85c Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Mon, 25 Feb 2019 16:43:45 +0530 Subject: [PATCH 1253/1345] Issue #000 feat: Added config_cache_ttl --- ansible/inventory/env/group_vars/all.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/ansible/inventory/env/group_vars/all.yml b/ansible/inventory/env/group_vars/all.yml index 60f2bd2d6b..dd1933145e 100644 --- a/ansible/inventory/env/group_vars/all.yml +++ b/ansible/inventory/env/group_vars/all.yml @@ -531,3 +531,4 @@ postgres_replication_user_password: "{{core_vault_postgres_password}}" sunbird_config_service_url: config_refresh_interval: 10 config_service_enabled: false +config_cache_ttl: 600 From 8e76c329cbe8de813a34d33eb2f5d584b814c136 Mon Sep 17 00:00:00 2001 From: Mahesh Kumar Gangula Date: Mon, 25 Feb 2019 17:34:42 +0530 Subject: [PATCH 1254/1345] Issue #SB-10220 feat: content private APIs onboarding. --- ansible/roles/kong-api/defaults/main.yml | 19 +++++++++++++++++++ ansible/roles/kong-consumer/defaults/main.yml | 2 ++ 2 files changed, 21 insertions(+) diff --git a/ansible/roles/kong-api/defaults/main.yml b/ansible/roles/kong-api/defaults/main.yml index a3061048d5..1f0383d3b3 100644 --- a/ansible/roles/kong-api/defaults/main.yml +++ b/ansible/roles/kong-api/defaults/main.yml @@ -30,6 +30,7 @@ medium_request_size_limit: 10 large_request_size_limit: 100 # Default service prefixes +private_content_prefix: /private/content content_service_prefix: /content course_service_prefix: /course user_service_prefix: /user @@ -56,6 +57,7 @@ sso_service_prefix: /sso # Service URLs content_service_url: "http://content-service:5000" learning_service_url: "http://learner-service:9000" +vm_learning_service_url: "http://{{learningservice_ip}}:8080/learning-service" telemetry_service_url: "http://telemetry-service:9001" player_service_url: "http://player_player:3000" echo_service_url: "http://api-manager_echo:9595" @@ -90,6 +92,23 @@ premium_consumer_rate_limits: # - {name: 'rate-limiting', config.hour: "{{ medium_rate_limit_per_hour }}"} # - {name: 'request-size-limiting', config.allowed_payload_size: "{{ medium_request_size_limit }}" } kong_apis: + + - name: PrivateContentAPIs + request_path: "{{ private_content_prefix }}/v3" + upstream_url: "{{ vm_learning_service_url }}/content/v3" + strip_request_path: true + plugins: + - name: jwt + - name: cors + - "{{ statsd_pulgin }}" + - name: acl + config.whitelist: privateContentMgmt + - name: rate-limiting + config.policy: local + config.hour: "{{ medium_rate_limit_per_hour }}" + config.limit_by: credential + - name: request-size-limiting + config.allowed_payload_size: "{{ small_request_size_limit }}" - name: createContent request_path: "{{ content_service_prefix }}/v1/create" upstream_url: "{{ content_service_url }}/v1/content/create" diff --git a/ansible/roles/kong-consumer/defaults/main.yml b/ansible/roles/kong-consumer/defaults/main.yml index 955e7f05c7..57f85f48f7 100644 --- a/ansible/roles/kong-consumer/defaults/main.yml +++ b/ansible/roles/kong-consumer/defaults/main.yml @@ -64,6 +64,7 @@ implementaion_user_groups: - dialcodeAdmin - dialcodeUpdate - dialcodeUser + - privateContentMgmt # List all consumer groups in group_vars kong_all_consumer_groups: @@ -96,6 +97,7 @@ kong_all_consumer_groups: - domainAdmin - domainUpdate - domainUser + - privateContentMgmt kong_admin_groups: - kongConsumer From a0533ad93f232de0b4488b0d4d7cec27a57b9bff Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Mon, 25 Feb 2019 17:44:49 +0530 Subject: [PATCH 1255/1345] Issue #000 feat: Adding sunbird_time_zone --- ansible/roles/stack-sunbird/defaults/main.yml | 2 +- .../roles/stack-sunbird/templates/sunbird_learner-service.env | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/ansible/roles/stack-sunbird/defaults/main.yml b/ansible/roles/stack-sunbird/defaults/main.yml index 6dad485f99..2a5464b0ba 100644 --- a/ansible/roles/stack-sunbird/defaults/main.yml +++ b/ansible/roles/stack-sunbird/defaults/main.yml @@ -87,7 +87,7 @@ encryption_limit_memory: "512M" # Learner sunbird_keycloak_required_action_link_expiration_seconds: 2592000 - +sunbird_time_zone: "Asia/Kolkata" # Content-service sunbird_content_service_log_level: info sunbird_response_cache_ttl: 180 diff --git a/ansible/roles/stack-sunbird/templates/sunbird_learner-service.env b/ansible/roles/stack-sunbird/templates/sunbird_learner-service.env index 7eb56d2641..3a01726fda 100644 --- a/ansible/roles/stack-sunbird/templates/sunbird_learner-service.env +++ b/ansible/roles/stack-sunbird/templates/sunbird_learner-service.env @@ -84,3 +84,5 @@ sunbird_otp_expiration={{sunbird_otp_expiration}} sunbird_otp_length={{sunbird_otp_length}} sunbird_content_azure_storage_container={{sunbird_content_azure_storage_container}} sunbird_linked_content_base_url={{sunbird_linked_content_base_url}} +# Release-1.14 +sunbird_time_zone={{sunbird_time_zone}} From 2727f6047a52be42baa43a12f315535903de46de Mon Sep 17 00:00:00 2001 From: msknext Date: Mon, 25 Feb 2019 18:27:46 +0530 Subject: [PATCH 1256/1345] feat #000: Adding staging jobs and config script --- .../jobs/Core/jobs/APIManager/config.xml | 2 +- .../jobs/Core/jobs/AdminUtils/config.xml | 2 +- .../staging/jobs/Core/jobs/Badger/config.xml | 2 +- .../jobs/Core/jobs/Cassandra/config.xml | 2 +- .../staging/jobs/Core/jobs/Config/config.xml | 2 +- .../staging/jobs/Core/jobs/Content/config.xml | 2 +- .../staging/jobs/Core/jobs/Learner/config.xml | 2 +- .../staging/jobs/Core/jobs/Player/config.xml | 2 +- .../staging/jobs/Core/jobs/Proxy/config.xml | 2 +- .../jobs/Core/jobs/Telemetry/config.xml | 2 +- .../DataPipeline/jobs/AnalyticsAPI/config.xml | 2 +- .../DataPipeline/jobs/DataProducts/config.xml | 2 +- .../jobs/DataPipeline/jobs/Secor/config.xml | 2 +- .../jobs/DataPipeline/jobs/Yarn/config.xml | 2 +- .../jobs/ContentTool/config.xml | 2 +- .../jobs/FileSyncTool/config.xml | 2 +- .../jobs/Learning/config.xml | 2 +- .../KnowledgePlatform/jobs/Neo4j/config.xml | 2 +- .../Neo4jElasticSearchSyncTool/config.xml | 2 +- .../KnowledgePlatform/jobs/Search/config.xml | 2 +- .../KnowledgePlatform/jobs/Yarn/config.xml | 2 +- deploy/jenkins/updateJobConfigs.sh | 22 +++++++++++++++++++ 22 files changed, 43 insertions(+), 21 deletions(-) create mode 100755 deploy/jenkins/updateJobConfigs.sh diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/APIManager/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/APIManager/config.xml index 7c8baa229a..bece932424 100644 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/APIManager/config.xml +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/APIManager/config.xml @@ -29,7 +29,7 @@ absolute_job_path <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> - ArtifactUpload/dev/Core/APIManager + Deploy/dev/Core/APIManager false diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/AdminUtils/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/AdminUtils/config.xml index fe6f660008..29d3a8ddbe 100644 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/AdminUtils/config.xml +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/AdminUtils/config.xml @@ -29,7 +29,7 @@ absolute_job_path <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> - ArtifactUpload/dev/Core/AdminUtils + Deploy/dev/Core/AdminUtils false diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Badger/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Badger/config.xml index fef35385ed..2ba0efe844 100644 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Badger/config.xml +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Badger/config.xml @@ -29,7 +29,7 @@ absolute_job_path <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> - ArtifactUpload/dev/Core/Badger + Deploy/dev/Core/Badger false diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Cassandra/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Cassandra/config.xml index 90ab76bea0..ca8a6a0848 100644 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Cassandra/config.xml +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Cassandra/config.xml @@ -22,7 +22,7 @@ absolute_job_path <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> - ArtifactUpload/dev/Core/Cassandra + Deploy/dev/Core/Cassandra false diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Config/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Config/config.xml index fa056df081..10f3b1164a 100644 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Config/config.xml +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Config/config.xml @@ -29,7 +29,7 @@ absolute_job_path <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> - ArtifactUpload/dev/Core/Config + Deploy/dev/Core/Config false diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Content/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Content/config.xml index 2df463b198..705301df31 100644 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Content/config.xml +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Content/config.xml @@ -29,7 +29,7 @@ absolute_job_path <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> - ArtifactUpload/dev/Core/Content + Deploy/dev/Core/Content false diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Learner/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Learner/config.xml index c8d69a2d0a..d968729e3c 100644 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Learner/config.xml +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Learner/config.xml @@ -29,7 +29,7 @@ absolute_job_path <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> - ArtifactUpload/dev/Core/Learner + Deploy/dev/Core/Learner false diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Player/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Player/config.xml index 75a1b3d14d..8cfd083c0f 100644 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Player/config.xml +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Player/config.xml @@ -29,7 +29,7 @@ absolute_job_path <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> - ArtifactUpload/dev/Core/Player + Deploy/dev/Core/Player false diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Proxy/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Proxy/config.xml index 50e73c246b..9eb183d27f 100644 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Proxy/config.xml +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Proxy/config.xml @@ -22,7 +22,7 @@ absolute_job_path <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> - ArtifactUpload/dev/Core/Proxy + Deploy/dev/Core/Proxy false diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Telemetry/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Telemetry/config.xml index d7b87837f6..fb12eef00f 100644 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Telemetry/config.xml +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Telemetry/config.xml @@ -29,7 +29,7 @@ absolute_job_path <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> - ArtifactUpload/dev/Core/Telemetry + Deploy/dev/Core/Telemetry false diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/AnalyticsAPI/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/AnalyticsAPI/config.xml index 3c6db21859..5b46f84109 100644 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/AnalyticsAPI/config.xml +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/AnalyticsAPI/config.xml @@ -29,7 +29,7 @@ absolute_job_path <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> - ArtifactUpload/dev/DataPipeline/Analytics + Deploy/dev/DataPipeline/Analytics false diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/DataProducts/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/DataProducts/config.xml index 4a480bffa9..635fa65904 100644 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/DataProducts/config.xml +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/DataProducts/config.xml @@ -29,7 +29,7 @@ absolute_job_path <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> - ArtifactUpload/dev/DataPipeline/Analytics + Deploy/dev/DataPipeline/Analytics false diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/Secor/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/Secor/config.xml index 21d54c2e64..e640c586f6 100644 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/Secor/config.xml +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/Secor/config.xml @@ -29,7 +29,7 @@ absolute_job_path <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> - ArtifactUpload/dev/DataPipeline/Secor + Deploy/dev/DataPipeline/Secor false diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/Yarn/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/Yarn/config.xml index 8f7d03b584..8277f93155 100644 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/Yarn/config.xml +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/Yarn/config.xml @@ -29,7 +29,7 @@ absolute_job_path <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> - ArtifactUpload/dev/DataPipeline/DataPipeline + Deploy/dev/DataPipeline/DataPipeline false diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/ContentTool/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/ContentTool/config.xml index d4b296559d..27f1f800e0 100644 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/ContentTool/config.xml +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/ContentTool/config.xml @@ -29,7 +29,7 @@ absolute_job_path <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> - ArtifactUpload/dev/KnowledgePlatform/KnowledgePlatform + Deploy/dev/KnowledgePlatform/KnowledgePlatform false diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/FileSyncTool/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/FileSyncTool/config.xml index 5c730b9381..d5138946c8 100644 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/FileSyncTool/config.xml +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/FileSyncTool/config.xml @@ -29,7 +29,7 @@ absolute_job_path <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> - ArtifactUpload/dev/KnowledgePlatform/Synctool + Deploy/dev/KnowledgePlatform/Synctool false diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Learning/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Learning/config.xml index f0b31f5bd2..a28c545fce 100644 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Learning/config.xml +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Learning/config.xml @@ -29,7 +29,7 @@ absolute_job_path <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> - ArtifactUpload/dev/KnowledgePlatform/KnowledgePlatform + Deploy/dev/KnowledgePlatform/KnowledgePlatform false diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Neo4j/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Neo4j/config.xml index f86ce0bd7b..20feb2bffa 100644 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Neo4j/config.xml +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Neo4j/config.xml @@ -29,7 +29,7 @@ absolute_job_path <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> - ArtifactUpload/dev/KnowledgePlatform/Neo4j + Deploy/dev/KnowledgePlatform/Neo4j false diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Neo4jElasticSearchSyncTool/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Neo4jElasticSearchSyncTool/config.xml index 2000380273..b77e0215a6 100644 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Neo4jElasticSearchSyncTool/config.xml +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Neo4jElasticSearchSyncTool/config.xml @@ -29,7 +29,7 @@ absolute_job_path <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> - ArtifactUpload/dev/KnowledgePlatform/SyncTool + Deploy/dev/KnowledgePlatform/SyncTool false diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Search/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Search/config.xml index 3c55d84563..a8dea12110 100644 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Search/config.xml +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Search/config.xml @@ -29,7 +29,7 @@ absolute_job_path <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> - ArtifactUpload/dev/KnowledgePlatform/KnowledgePlatform + Deploy/dev/KnowledgePlatform/KnowledgePlatform false diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Yarn/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Yarn/config.xml index d91fa2c36f..df27466411 100644 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Yarn/config.xml +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Yarn/config.xml @@ -29,7 +29,7 @@ absolute_job_path <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> - ArtifactUpload/dev/KnowledgePlatform/Yarn + Deploy/dev/KnowledgePlatform/Yarn false diff --git a/deploy/jenkins/updateJobConfigs.sh b/deploy/jenkins/updateJobConfigs.sh new file mode 100755 index 0000000000..b9c919fe51 --- /dev/null +++ b/deploy/jenkins/updateJobConfigs.sh @@ -0,0 +1,22 @@ +#!/bin/bash +bold=$(tput bold) +normal=$(tput sgr0) + +echo -e "\e[0;36m${bold} +Updating jenkins jobs for other environments - Run this script from the folder you want to configure \ +\n\nTo setup staging from dev \ +\nOld text - ArtifactUpload/dev/ \ +\nNew text - Deploy/dev/ \ + +\nTo setup pre-production from staging - Copy staging dir and rename it to pre-production \ +\nOld text - Deploy/dev/ \ +\nNew text - Deploy/staging/ \ + +\nTo setup production from pre-production - Copy pre-production dir and rename it to production \ +\nOld text - Deploy/staging/ \ +\nNew text - Deploy/pre-production/ \ +\n${normal}" + +read -p 'Old text: ' oldText +read -p 'New text: ' newText +find . -type f -name config.xml -exec sed -i "s#$oldText#$newText#g" {} \; From 6ab3fae6ab3aa5903077a05724ad2fb469046a95 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Mon, 25 Feb 2019 18:38:45 +0530 Subject: [PATCH 1257/1345] Revert "Issue #000 feat: Updated sunbird_ekstep_proxy_base_url from content" This reverts commit a4d5149d3a16b3016eacedb8ded31acc5e887dd2. --- .../roles/stack-sunbird/templates/sunbird_content-service.env | 1 + 1 file changed, 1 insertion(+) diff --git a/ansible/roles/stack-sunbird/templates/sunbird_content-service.env b/ansible/roles/stack-sunbird/templates/sunbird_content-service.env index 52cd2f9630..b89d063219 100644 --- a/ansible/roles/stack-sunbird/templates/sunbird_content-service.env +++ b/ansible/roles/stack-sunbird/templates/sunbird_content-service.env @@ -1,3 +1,4 @@ +sunbird_content_plugin_base_url={{sunbird_ekstep_proxy_base_url}} sunbird_learner_service_api_key={{sunbird_api_auth_token}} sunbird_learner_service_base_url={{sunbird_learner_service_base_url}} sunbird_keycloak_auth_server_url={{keycloak_auth_server_url}}/ From fab94f00156458770e7f0e767178319dd8d69030 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Mon, 25 Feb 2019 18:59:29 +0530 Subject: [PATCH 1258/1345] Issue #000 feat: Adding ekstep api url --- ansible/inventory/env/group_vars/all.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ansible/inventory/env/group_vars/all.yml b/ansible/inventory/env/group_vars/all.yml index dd1933145e..cc68f8adef 100644 --- a/ansible/inventory/env/group_vars/all.yml +++ b/ansible/inventory/env/group_vars/all.yml @@ -527,6 +527,8 @@ enc_postgres_password: "{{core_vault_postgres_password}}" # Depricated value ?? postgres_replication_user_password: "{{core_vault_postgres_password}}" +# Content service is calling ekstep ?? +sunbird_ekstep_proxy_base_url: "{{sunbird_ekstep_api_base_url}}" # Config service variables, not required sunbird_config_service_url: config_refresh_interval: 10 From 0ad54b69ec4a6ce5f000c6af59a7405c67f6a98b Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Mon, 25 Feb 2019 19:44:51 +0530 Subject: [PATCH 1259/1345] Issue #000 feat: Updated ekstep proxy base url --- private_repo/ansible/inventory/dev/Core/common.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/private_repo/ansible/inventory/dev/Core/common.yml b/private_repo/ansible/inventory/dev/Core/common.yml index 5dcc809231..86cf7e9e48 100644 --- a/private_repo/ansible/inventory/dev/Core/common.yml +++ b/private_repo/ansible/inventory/dev/Core/common.yml @@ -45,7 +45,7 @@ upstream_url: "{{azure_account_name}}.blob.core.windows.net/{{sunbird_content_az ####################### Please Check me ############################# -sunbird_ekstep_api_base_url: "https://{{ekstep_s3_env}}.ekstep.in/api" #API base URL of the Ekstep environment. Use `https://qa.ekstep.in/api` for non-prod deployments, and use `https://api.ekstep.in/` for prod deployment. +sunbird_ekstep_api_base_url: "https://{{ekstep_s3_env}}.ekstep.in" #API base URL of the Ekstep environment. Use `https://qa.ekstep.in/api` for non-prod deployments, and use `https://api.ekstep.in/` for prod deployment. sunbird_data_service_api_base_url: "{{sunbird_ekstep_api_base_url}}" telemetry_proxy_url: "" sunbird_telemetry_api: "{{sunbird_ekstep_api_base_url}}/data/v3/telemetry" From 11f3be1b5f5e24445e834cb6ad4755954525506f Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Mon, 25 Feb 2019 20:00:17 +0530 Subject: [PATCH 1260/1345] Revert "Issue #000 feat: Updated ekstep proxy base url" This reverts commit 0ad54b69ec4a6ce5f000c6af59a7405c67f6a98b. --- private_repo/ansible/inventory/dev/Core/common.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/private_repo/ansible/inventory/dev/Core/common.yml b/private_repo/ansible/inventory/dev/Core/common.yml index 86cf7e9e48..5dcc809231 100644 --- a/private_repo/ansible/inventory/dev/Core/common.yml +++ b/private_repo/ansible/inventory/dev/Core/common.yml @@ -45,7 +45,7 @@ upstream_url: "{{azure_account_name}}.blob.core.windows.net/{{sunbird_content_az ####################### Please Check me ############################# -sunbird_ekstep_api_base_url: "https://{{ekstep_s3_env}}.ekstep.in" #API base URL of the Ekstep environment. Use `https://qa.ekstep.in/api` for non-prod deployments, and use `https://api.ekstep.in/` for prod deployment. +sunbird_ekstep_api_base_url: "https://{{ekstep_s3_env}}.ekstep.in/api" #API base URL of the Ekstep environment. Use `https://qa.ekstep.in/api` for non-prod deployments, and use `https://api.ekstep.in/` for prod deployment. sunbird_data_service_api_base_url: "{{sunbird_ekstep_api_base_url}}" telemetry_proxy_url: "" sunbird_telemetry_api: "{{sunbird_ekstep_api_base_url}}/data/v3/telemetry" From 5e2d6a995f6335d6cc59b0eaa685b42885363d2b Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Mon, 25 Feb 2019 20:22:16 +0530 Subject: [PATCH 1261/1345] Issue #000 feat: Dynamically taking sunbird_base url from ekstep.in/api --- .../roles/stack-sunbird/templates/sunbird_content-service.env | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/stack-sunbird/templates/sunbird_content-service.env b/ansible/roles/stack-sunbird/templates/sunbird_content-service.env index b89d063219..2723861281 100644 --- a/ansible/roles/stack-sunbird/templates/sunbird_content-service.env +++ b/ansible/roles/stack-sunbird/templates/sunbird_content-service.env @@ -1,4 +1,4 @@ -sunbird_content_plugin_base_url={{sunbird_ekstep_proxy_base_url}} +sunbird_content_plugin_base_url={{sunbird_ekstep_proxy_base_url.split('/')[:3]|join('/')}} sunbird_learner_service_api_key={{sunbird_api_auth_token}} sunbird_learner_service_base_url={{sunbird_learner_service_base_url}} sunbird_keycloak_auth_server_url={{keycloak_auth_server_url}}/ From 321d8b2ad2231f8cedd091bedb94973e318ec0ad Mon Sep 17 00:00:00 2001 From: msknext Date: Mon, 25 Feb 2019 22:09:15 +0530 Subject: [PATCH 1262/1345] Issue #000: Removed jenkins config bin files --- .../staging/jobs/Core/jobs/APIManager/builds/lastFailedBuild | 1 - .../staging/jobs/Core/jobs/APIManager/builds/lastSuccessfulBuild | 1 - .../jobs/staging/jobs/Core/jobs/APIManager/nextBuildNumber | 1 - .../staging/jobs/Core/jobs/AdminUtils/builds/lastFailedBuild | 1 - .../staging/jobs/Core/jobs/AdminUtils/builds/lastStableBuild | 1 - .../staging/jobs/Core/jobs/AdminUtils/builds/lastSuccessfulBuild | 1 - .../staging/jobs/Core/jobs/AdminUtils/builds/lastUnstableBuild | 1 - .../jobs/Core/jobs/AdminUtils/builds/lastUnsuccessfulBuild | 1 - .../jobs/staging/jobs/Core/jobs/AdminUtils/nextBuildNumber | 1 - .../Core/jobs/ApplicationElasticSearch/builds/lastFailedBuild | 1 - .../jobs/ApplicationElasticSearch/builds/lastSuccessfulBuild | 1 - .../jobs/Core/jobs/ApplicationElasticSearch/nextBuildNumber | 1 - .../jobs/staging/jobs/Core/jobs/Badger/builds/lastFailedBuild | 1 - .../staging/jobs/Core/jobs/Badger/builds/lastSuccessfulBuild | 1 - .../Deploy/jobs/staging/jobs/Core/jobs/Badger/nextBuildNumber | 1 - .../jobs/staging/jobs/Core/jobs/Bootstrap/builds/lastFailedBuild | 1 - .../staging/jobs/Core/jobs/Bootstrap/builds/lastSuccessfulBuild | 1 - .../Deploy/jobs/staging/jobs/Core/jobs/Bootstrap/nextBuildNumber | 1 - .../jobs/staging/jobs/Core/jobs/Cassandra/builds/lastFailedBuild | 1 - .../staging/jobs/Core/jobs/Cassandra/builds/lastSuccessfulBuild | 1 - .../Deploy/jobs/staging/jobs/Core/jobs/Cassandra/nextBuildNumber | 1 - .../jobs/staging/jobs/Core/jobs/Config/builds/lastFailedBuild | 1 - .../staging/jobs/Core/jobs/Config/builds/lastSuccessfulBuild | 1 - .../Deploy/jobs/staging/jobs/Core/jobs/Config/nextBuildNumber | 1 - .../jobs/staging/jobs/Core/jobs/Content/builds/lastFailedBuild | 1 - .../staging/jobs/Core/jobs/Content/builds/lastSuccessfulBuild | 1 - .../Deploy/jobs/staging/jobs/Core/jobs/Content/nextBuildNumber | 1 - .../jobs/staging/jobs/Core/jobs/Keycloak/builds/lastFailedBuild | 1 - .../staging/jobs/Core/jobs/Keycloak/builds/lastSuccessfulBuild | 1 - .../Deploy/jobs/staging/jobs/Core/jobs/Keycloak/nextBuildNumber | 1 - .../staging/jobs/Core/jobs/KeycloakRealm/builds/lastFailedBuild | 1 - .../jobs/Core/jobs/KeycloakRealm/builds/lastSuccessfulBuild | 1 - .../jobs/staging/jobs/Core/jobs/KeycloakRealm/nextBuildNumber | 1 - .../jobs/staging/jobs/Core/jobs/Learner/builds/lastFailedBuild | 1 - .../staging/jobs/Core/jobs/Learner/builds/lastSuccessfulBuild | 1 - .../Deploy/jobs/staging/jobs/Core/jobs/Learner/nextBuildNumber | 1 - .../jobs/Core/jobs/LoggerElasticSearch/builds/lastFailedBuild | 1 - .../Core/jobs/LoggerElasticSearch/builds/lastSuccessfulBuild | 1 - .../staging/jobs/Core/jobs/LoggerElasticSearch/nextBuildNumber | 1 - .../jobs/staging/jobs/Core/jobs/Logging/builds/lastFailedBuild | 1 - .../staging/jobs/Core/jobs/Logging/builds/lastSuccessfulBuild | 1 - .../Deploy/jobs/staging/jobs/Core/jobs/Logging/nextBuildNumber | 1 - .../staging/jobs/Core/jobs/Monitoring/builds/lastFailedBuild | 1 - .../staging/jobs/Core/jobs/Monitoring/builds/lastSuccessfulBuild | 1 - .../jobs/staging/jobs/Core/jobs/Monitoring/nextBuildNumber | 1 - .../staging/jobs/Core/jobs/OnboardAPIs/builds/lastFailedBuild | 1 - .../jobs/Core/jobs/OnboardAPIs/builds/lastSuccessfulBuild | 1 - .../jobs/staging/jobs/Core/jobs/OnboardAPIs/nextBuildNumber | 1 - .../jobs/Core/jobs/OnboardConsumers/builds/lastFailedBuild | 1 - .../jobs/Core/jobs/OnboardConsumers/builds/lastSuccessfulBuild | 1 - .../jobs/staging/jobs/Core/jobs/OnboardConsumers/nextBuildNumber | 1 - .../jobs/staging/jobs/Core/jobs/Player/builds/lastFailedBuild | 1 - .../staging/jobs/Core/jobs/Player/builds/lastSuccessfulBuild | 1 - .../Deploy/jobs/staging/jobs/Core/jobs/Player/nextBuildNumber | 1 - .../jobs/staging/jobs/Core/jobs/Proxy/builds/lastFailedBuild | 1 - .../jobs/staging/jobs/Core/jobs/Proxy/builds/lastSuccessfulBuild | 1 - .../Deploy/jobs/staging/jobs/Core/jobs/Proxy/nextBuildNumber | 1 - .../jobs/staging/jobs/Core/jobs/Telemetry/builds/lastFailedBuild | 1 - .../staging/jobs/Core/jobs/Telemetry/builds/lastSuccessfulBuild | 1 - .../Deploy/jobs/staging/jobs/Core/jobs/Telemetry/nextBuildNumber | 1 - .../jobs/Core/jobs/TelemetryLogstash/builds/lastFailedBuild | 1 - .../jobs/Core/jobs/TelemetryLogstash/builds/lastSuccessfulBuild | 1 - .../staging/jobs/Core/jobs/TelemetryLogstash/nextBuildNumber | 1 - .../jobs/TelemetryLogstashDataPipeline/builds/lastFailedBuild | 1 - .../TelemetryLogstashDataPipeline/builds/lastSuccessfulBuild | 1 - .../jobs/Core/jobs/TelemetryLogstashDataPipeline/nextBuildNumber | 1 - .../staging/jobs/DataPipeline/jobs/AnalyticsAPI/nextBuildNumber | 1 - .../jobs/DataPipeline/jobs/AnalyticsFetchLogs/nextBuildNumber | 1 - .../jobs/AnalyticsGeoLocationDBSetup/nextBuildNumber | 1 - .../AnalyticsPopulatePSQLConsumerChannelMapping/nextBuildNumber | 1 - .../jobs/DataPipeline/jobs/AnalyticsReplayJobs/nextBuildNumber | 1 - .../DataPipeline/jobs/AnalyticsStartJobManager/nextBuildNumber | 1 - .../jobs/DataPipeline/jobs/AnalyticsSubmitJobs/nextBuildNumber | 1 - .../jobs/DataPipeline/jobs/CassandraDbUpdate/nextBuildNumber | 1 - .../staging/jobs/DataPipeline/jobs/DataProducts/nextBuildNumber | 1 - .../staging/jobs/DataPipeline/jobs/KafkaIndexer/nextBuildNumber | 1 - .../staging/jobs/DataPipeline/jobs/KafkaSetup/nextBuildNumber | 1 - .../staging/jobs/DataPipeline/jobs/Monitoring/nextBuildNumber | 1 - .../jobs/DataPipeline/jobs/SamzaTelemetrySchemas/nextBuildNumber | 1 - .../jobs/staging/jobs/DataPipeline/jobs/Secor/nextBuildNumber | 1 - .../jobs/staging/jobs/DataPipeline/jobs/Yarn/nextBuildNumber | 1 - .../KnowledgePlatform/jobs/CassandraDbUpdate/nextBuildNumber | 1 - .../jobs/KnowledgePlatform/jobs/ContentTool/nextBuildNumber | 1 - .../jobs/KnowledgePlatform/jobs/FileSyncTool/nextBuildNumber | 1 - .../jobs/KnowledgePlatform/jobs/KafkaSetup/nextBuildNumber | 1 - .../staging/jobs/KnowledgePlatform/jobs/Learning/nextBuildNumber | 1 - .../jobs/KnowledgePlatform/jobs/Monitoring/nextBuildNumber | 1 - .../staging/jobs/KnowledgePlatform/jobs/Neo4j/nextBuildNumber | 1 - .../KnowledgePlatform/jobs/Neo4jDefinitionUpdate/nextBuildNumber | 1 - .../jobs/Neo4jElasticSearchSyncTool/nextBuildNumber | 1 - .../staging/jobs/KnowledgePlatform/jobs/Search/nextBuildNumber | 1 - .../KnowledgePlatform/jobs/StartNeo4jCluster/nextBuildNumber | 1 - .../jobs/KnowledgePlatform/jobs/ValidateLearning/nextBuildNumber | 1 - .../staging/jobs/KnowledgePlatform/jobs/Yarn/nextBuildNumber | 1 - .../staging/jobs/Plugins/jobs/CollectionEditor/nextBuildNumber | 1 - .../staging/jobs/Plugins/jobs/ContentFramework/nextBuildNumber | 1 - .../jobs/Plugins/jobs/ContentRendererPreview/nextBuildNumber | 1 - .../jobs/staging/jobs/Plugins/jobs/GenericEditor/nextBuildNumber | 1 - .../staging/jobs/Summary/jobs/DeployedVersions/nextBuildNumber | 1 - .../Core/jobs/ApplicationElasticsearchBackup/nextBuildNumber | 1 - .../Core/jobs/ApplicationElasticsearchRestore/nextBuildNumber | 1 - .../jobs/staging/jobs/Core/jobs/Bootstrap/nextBuildNumber | 1 - .../jobs/staging/jobs/Core/jobs/CassandraBackup/nextBuildNumber | 1 - .../jobs/Core/jobs/LoggerElasticSearchBackup/nextBuildNumber | 1 - .../jobs/Core/jobs/LoggerElasticSearchRestore/nextBuildNumber | 1 - .../jobs/staging/jobs/Core/jobs/PostgresqlBackup/nextBuildNumber | 1 - .../staging/jobs/Core/jobs/PostgresqlRestore/nextBuildNumber | 1 - .../jobs/staging/jobs/Core/jobs/PrometheusBackup/nextBuildNumber | 1 - .../jobs/staging/jobs/Core/jobs/SwarmBootstrap/nextBuildNumber | 1 - .../jobs/DataPipeline/jobs/AnalyticsAPILogs/nextBuildNumber | 1 - .../staging/jobs/DataPipeline/jobs/Bootstrap/nextBuildNumber | 1 - .../jobs/DataPipeline/jobs/CassandraBackup/nextBuildNumber | 1 - .../jobs/DataPipeline/jobs/CassandraRestore/nextBuildNumber | 1 - .../jobs/DataPipeline/jobs/ElasticsearchBackup/nextBuildNumber | 1 - .../jobs/DataPipeline/jobs/ElasticsearchRestore/nextBuildNumber | 1 - .../jobs/DataPipeline/jobs/InfluxDBBackup/nextBuildNumber | 1 - .../jobs/DataPipeline/jobs/PostgresqlBackup/nextBuildNumber | 1 - .../jobs/DataPipeline/jobs/PostgresqlRestore/nextBuildNumber | 1 - .../jobs/KnowledgePlatform/jobs/Bootstrap/nextBuildNumber | 1 - .../jobs/KnowledgePlatform/jobs/CassandraBackup/nextBuildNumber | 1 - .../jobs/KnowledgePlatform/jobs/CassandraRestore/nextBuildNumber | 1 - .../KnowledgePlatform/jobs/ElasticsearchBackup/nextBuildNumber | 1 - .../KnowledgePlatform/jobs/ElasticsearchRestore/nextBuildNumber | 1 - .../jobs/KnowledgePlatform/jobs/Neo4jBackup/nextBuildNumber | 1 - .../jobs/KnowledgePlatform/jobs/Neo4jRestore/nextBuildNumber | 1 - .../jobs/staging/jobs/Core/jobs/Cassandra/nextBuildNumber | 1 - .../jobs/staging/jobs/Core/jobs/JenkinsSlave/nextBuildNumber | 1 - .../Provision/jobs/staging/jobs/Core/jobs/Kafka/nextBuildNumber | 1 - .../jobs/staging/jobs/Core/jobs/Keycloak/nextBuildNumber | 1 - .../jobs/staging/jobs/Core/jobs/LogElasticSearch/nextBuildNumber | 1 - .../jobs/staging/jobs/Core/jobs/Postgres/nextBuildNumber | 1 - .../jobs/staging/jobs/Core/jobs/PostgresDbUpdate/nextBuildNumber | 1 - .../jobs/staging/jobs/Core/jobs/Registry/nextBuildNumber | 1 - .../Provision/jobs/staging/jobs/Core/jobs/Secor/nextBuildNumber | 1 - .../staging/jobs/DataPipeline/jobs/AnalyticsAPI/nextBuildNumber | 1 - .../jobs/DataPipeline/jobs/AnalyticsSecor/nextBuildNumber | 1 - .../jobs/DataPipeline/jobs/AnalyticsSpark/nextBuildNumber | 1 - .../staging/jobs/DataPipeline/jobs/Cassandra/nextBuildNumber | 1 - .../jobs/staging/jobs/DataPipeline/jobs/InfluxDB/nextBuildNumber | 1 - .../jobs/staging/jobs/DataPipeline/jobs/Kafka/nextBuildNumber | 1 - .../jobs/staging/jobs/DataPipeline/jobs/Kibana/nextBuildNumber | 1 - .../jobs/staging/jobs/DataPipeline/jobs/Postgres/nextBuildNumber | 1 - .../jobs/DataPipeline/jobs/TelemetrySearch/nextBuildNumber | 1 - .../jobs/staging/jobs/DataPipeline/jobs/Yarn/nextBuildNumber | 1 - .../staging/jobs/DataPipeline/jobs/Zookeeper/nextBuildNumber | 1 - .../jobs/KnowledgePlatform/jobs/Cassandra/nextBuildNumber | 1 - .../jobs/KnowledgePlatform/jobs/CompositeSearch/nextBuildNumber | 1 - .../staging/jobs/KnowledgePlatform/jobs/Kafka/nextBuildNumber | 1 - .../staging/jobs/KnowledgePlatform/jobs/Learning/nextBuildNumber | 1 - .../staging/jobs/KnowledgePlatform/jobs/Neo4j/nextBuildNumber | 1 - .../staging/jobs/KnowledgePlatform/jobs/Redis/nextBuildNumber | 1 - .../staging/jobs/KnowledgePlatform/jobs/Search/nextBuildNumber | 1 - .../staging/jobs/KnowledgePlatform/jobs/Yarn/nextBuildNumber | 1 - .../jobs/KnowledgePlatform/jobs/Zookeeper/nextBuildNumber | 1 - 154 files changed, 154 deletions(-) delete mode 120000 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/APIManager/builds/lastFailedBuild delete mode 120000 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/APIManager/builds/lastSuccessfulBuild delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/APIManager/nextBuildNumber delete mode 120000 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/AdminUtils/builds/lastFailedBuild delete mode 120000 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/AdminUtils/builds/lastStableBuild delete mode 120000 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/AdminUtils/builds/lastSuccessfulBuild delete mode 120000 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/AdminUtils/builds/lastUnstableBuild delete mode 120000 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/AdminUtils/builds/lastUnsuccessfulBuild delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/AdminUtils/nextBuildNumber delete mode 120000 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/ApplicationElasticSearch/builds/lastFailedBuild delete mode 120000 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/ApplicationElasticSearch/builds/lastSuccessfulBuild delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/ApplicationElasticSearch/nextBuildNumber delete mode 120000 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Badger/builds/lastFailedBuild delete mode 120000 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Badger/builds/lastSuccessfulBuild delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Badger/nextBuildNumber delete mode 120000 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Bootstrap/builds/lastFailedBuild delete mode 120000 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Bootstrap/builds/lastSuccessfulBuild delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Bootstrap/nextBuildNumber delete mode 120000 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Cassandra/builds/lastFailedBuild delete mode 120000 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Cassandra/builds/lastSuccessfulBuild delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Cassandra/nextBuildNumber delete mode 120000 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Config/builds/lastFailedBuild delete mode 120000 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Config/builds/lastSuccessfulBuild delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Config/nextBuildNumber delete mode 120000 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Content/builds/lastFailedBuild delete mode 120000 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Content/builds/lastSuccessfulBuild delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Content/nextBuildNumber delete mode 120000 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Keycloak/builds/lastFailedBuild delete mode 120000 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Keycloak/builds/lastSuccessfulBuild delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Keycloak/nextBuildNumber delete mode 120000 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/KeycloakRealm/builds/lastFailedBuild delete mode 120000 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/KeycloakRealm/builds/lastSuccessfulBuild delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/KeycloakRealm/nextBuildNumber delete mode 120000 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Learner/builds/lastFailedBuild delete mode 120000 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Learner/builds/lastSuccessfulBuild delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Learner/nextBuildNumber delete mode 120000 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/LoggerElasticSearch/builds/lastFailedBuild delete mode 120000 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/LoggerElasticSearch/builds/lastSuccessfulBuild delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/LoggerElasticSearch/nextBuildNumber delete mode 120000 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Logging/builds/lastFailedBuild delete mode 120000 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Logging/builds/lastSuccessfulBuild delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Logging/nextBuildNumber delete mode 120000 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Monitoring/builds/lastFailedBuild delete mode 120000 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Monitoring/builds/lastSuccessfulBuild delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Monitoring/nextBuildNumber delete mode 120000 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/OnboardAPIs/builds/lastFailedBuild delete mode 120000 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/OnboardAPIs/builds/lastSuccessfulBuild delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/OnboardAPIs/nextBuildNumber delete mode 120000 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/OnboardConsumers/builds/lastFailedBuild delete mode 120000 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/OnboardConsumers/builds/lastSuccessfulBuild delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/OnboardConsumers/nextBuildNumber delete mode 120000 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Player/builds/lastFailedBuild delete mode 120000 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Player/builds/lastSuccessfulBuild delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Player/nextBuildNumber delete mode 120000 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Proxy/builds/lastFailedBuild delete mode 120000 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Proxy/builds/lastSuccessfulBuild delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Proxy/nextBuildNumber delete mode 120000 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Telemetry/builds/lastFailedBuild delete mode 120000 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Telemetry/builds/lastSuccessfulBuild delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Telemetry/nextBuildNumber delete mode 120000 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/TelemetryLogstash/builds/lastFailedBuild delete mode 120000 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/TelemetryLogstash/builds/lastSuccessfulBuild delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/TelemetryLogstash/nextBuildNumber delete mode 120000 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/TelemetryLogstashDataPipeline/builds/lastFailedBuild delete mode 120000 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/TelemetryLogstashDataPipeline/builds/lastSuccessfulBuild delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/TelemetryLogstashDataPipeline/nextBuildNumber delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/AnalyticsAPI/nextBuildNumber delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/AnalyticsFetchLogs/nextBuildNumber delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/AnalyticsGeoLocationDBSetup/nextBuildNumber delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/AnalyticsPopulatePSQLConsumerChannelMapping/nextBuildNumber delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/AnalyticsReplayJobs/nextBuildNumber delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/AnalyticsStartJobManager/nextBuildNumber delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/AnalyticsSubmitJobs/nextBuildNumber delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/CassandraDbUpdate/nextBuildNumber delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/DataProducts/nextBuildNumber delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/KafkaIndexer/nextBuildNumber delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/KafkaSetup/nextBuildNumber delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/Monitoring/nextBuildNumber delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/SamzaTelemetrySchemas/nextBuildNumber delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/Secor/nextBuildNumber delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/Yarn/nextBuildNumber delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/CassandraDbUpdate/nextBuildNumber delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/ContentTool/nextBuildNumber delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/FileSyncTool/nextBuildNumber delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/KafkaSetup/nextBuildNumber delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Learning/nextBuildNumber delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Monitoring/nextBuildNumber delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Neo4j/nextBuildNumber delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Neo4jDefinitionUpdate/nextBuildNumber delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Neo4jElasticSearchSyncTool/nextBuildNumber delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Search/nextBuildNumber delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/StartNeo4jCluster/nextBuildNumber delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/ValidateLearning/nextBuildNumber delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Yarn/nextBuildNumber delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Plugins/jobs/CollectionEditor/nextBuildNumber delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Plugins/jobs/ContentFramework/nextBuildNumber delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Plugins/jobs/ContentRendererPreview/nextBuildNumber delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Plugins/jobs/GenericEditor/nextBuildNumber delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Summary/jobs/DeployedVersions/nextBuildNumber delete mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/ApplicationElasticsearchBackup/nextBuildNumber delete mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/ApplicationElasticsearchRestore/nextBuildNumber delete mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/Bootstrap/nextBuildNumber delete mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/CassandraBackup/nextBuildNumber delete mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/LoggerElasticSearchBackup/nextBuildNumber delete mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/LoggerElasticSearchRestore/nextBuildNumber delete mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/PostgresqlBackup/nextBuildNumber delete mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/PostgresqlRestore/nextBuildNumber delete mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/PrometheusBackup/nextBuildNumber delete mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/SwarmBootstrap/nextBuildNumber delete mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/AnalyticsAPILogs/nextBuildNumber delete mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/Bootstrap/nextBuildNumber delete mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/CassandraBackup/nextBuildNumber delete mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/CassandraRestore/nextBuildNumber delete mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/ElasticsearchBackup/nextBuildNumber delete mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/ElasticsearchRestore/nextBuildNumber delete mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/InfluxDBBackup/nextBuildNumber delete mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/PostgresqlBackup/nextBuildNumber delete mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/PostgresqlRestore/nextBuildNumber delete mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/KnowledgePlatform/jobs/Bootstrap/nextBuildNumber delete mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/KnowledgePlatform/jobs/CassandraBackup/nextBuildNumber delete mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/KnowledgePlatform/jobs/CassandraRestore/nextBuildNumber delete mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/KnowledgePlatform/jobs/ElasticsearchBackup/nextBuildNumber delete mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/KnowledgePlatform/jobs/ElasticsearchRestore/nextBuildNumber delete mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/KnowledgePlatform/jobs/Neo4jBackup/nextBuildNumber delete mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/KnowledgePlatform/jobs/Neo4jRestore/nextBuildNumber delete mode 100644 deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/Cassandra/nextBuildNumber delete mode 100644 deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/JenkinsSlave/nextBuildNumber delete mode 100644 deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/Kafka/nextBuildNumber delete mode 100644 deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/Keycloak/nextBuildNumber delete mode 100644 deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/LogElasticSearch/nextBuildNumber delete mode 100644 deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/Postgres/nextBuildNumber delete mode 100644 deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/PostgresDbUpdate/nextBuildNumber delete mode 100644 deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/Registry/nextBuildNumber delete mode 100644 deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/Secor/nextBuildNumber delete mode 100644 deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/AnalyticsAPI/nextBuildNumber delete mode 100644 deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/AnalyticsSecor/nextBuildNumber delete mode 100644 deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/AnalyticsSpark/nextBuildNumber delete mode 100644 deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/Cassandra/nextBuildNumber delete mode 100644 deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/InfluxDB/nextBuildNumber delete mode 100644 deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/Kafka/nextBuildNumber delete mode 100644 deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/Kibana/nextBuildNumber delete mode 100644 deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/Postgres/nextBuildNumber delete mode 100644 deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/TelemetrySearch/nextBuildNumber delete mode 100644 deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/Yarn/nextBuildNumber delete mode 100644 deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/Zookeeper/nextBuildNumber delete mode 100644 deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Cassandra/nextBuildNumber delete mode 100644 deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/CompositeSearch/nextBuildNumber delete mode 100644 deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Kafka/nextBuildNumber delete mode 100644 deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Learning/nextBuildNumber delete mode 100644 deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Neo4j/nextBuildNumber delete mode 100644 deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Redis/nextBuildNumber delete mode 100644 deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Search/nextBuildNumber delete mode 100644 deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Yarn/nextBuildNumber delete mode 100644 deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Zookeeper/nextBuildNumber diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/APIManager/builds/lastFailedBuild b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/APIManager/builds/lastFailedBuild deleted file mode 120000 index d7d17fcbef..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/APIManager/builds/lastFailedBuild +++ /dev/null @@ -1 +0,0 @@ --1 \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/APIManager/builds/lastSuccessfulBuild b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/APIManager/builds/lastSuccessfulBuild deleted file mode 120000 index d7d17fcbef..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/APIManager/builds/lastSuccessfulBuild +++ /dev/null @@ -1 +0,0 @@ --1 \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/APIManager/nextBuildNumber b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/APIManager/nextBuildNumber deleted file mode 100644 index d00491fd7e..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/APIManager/nextBuildNumber +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/AdminUtils/builds/lastFailedBuild b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/AdminUtils/builds/lastFailedBuild deleted file mode 120000 index d7d17fcbef..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/AdminUtils/builds/lastFailedBuild +++ /dev/null @@ -1 +0,0 @@ --1 \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/AdminUtils/builds/lastStableBuild b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/AdminUtils/builds/lastStableBuild deleted file mode 120000 index d7d17fcbef..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/AdminUtils/builds/lastStableBuild +++ /dev/null @@ -1 +0,0 @@ --1 \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/AdminUtils/builds/lastSuccessfulBuild b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/AdminUtils/builds/lastSuccessfulBuild deleted file mode 120000 index d7d17fcbef..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/AdminUtils/builds/lastSuccessfulBuild +++ /dev/null @@ -1 +0,0 @@ --1 \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/AdminUtils/builds/lastUnstableBuild b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/AdminUtils/builds/lastUnstableBuild deleted file mode 120000 index d7d17fcbef..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/AdminUtils/builds/lastUnstableBuild +++ /dev/null @@ -1 +0,0 @@ --1 \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/AdminUtils/builds/lastUnsuccessfulBuild b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/AdminUtils/builds/lastUnsuccessfulBuild deleted file mode 120000 index d7d17fcbef..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/AdminUtils/builds/lastUnsuccessfulBuild +++ /dev/null @@ -1 +0,0 @@ --1 \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/AdminUtils/nextBuildNumber b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/AdminUtils/nextBuildNumber deleted file mode 100644 index d00491fd7e..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/AdminUtils/nextBuildNumber +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/ApplicationElasticSearch/builds/lastFailedBuild b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/ApplicationElasticSearch/builds/lastFailedBuild deleted file mode 120000 index d7d17fcbef..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/ApplicationElasticSearch/builds/lastFailedBuild +++ /dev/null @@ -1 +0,0 @@ --1 \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/ApplicationElasticSearch/builds/lastSuccessfulBuild b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/ApplicationElasticSearch/builds/lastSuccessfulBuild deleted file mode 120000 index d7d17fcbef..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/ApplicationElasticSearch/builds/lastSuccessfulBuild +++ /dev/null @@ -1 +0,0 @@ --1 \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/ApplicationElasticSearch/nextBuildNumber b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/ApplicationElasticSearch/nextBuildNumber deleted file mode 100644 index d00491fd7e..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/ApplicationElasticSearch/nextBuildNumber +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Badger/builds/lastFailedBuild b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Badger/builds/lastFailedBuild deleted file mode 120000 index d7d17fcbef..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Badger/builds/lastFailedBuild +++ /dev/null @@ -1 +0,0 @@ --1 \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Badger/builds/lastSuccessfulBuild b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Badger/builds/lastSuccessfulBuild deleted file mode 120000 index d7d17fcbef..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Badger/builds/lastSuccessfulBuild +++ /dev/null @@ -1 +0,0 @@ --1 \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Badger/nextBuildNumber b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Badger/nextBuildNumber deleted file mode 100644 index d00491fd7e..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Badger/nextBuildNumber +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Bootstrap/builds/lastFailedBuild b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Bootstrap/builds/lastFailedBuild deleted file mode 120000 index d7d17fcbef..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Bootstrap/builds/lastFailedBuild +++ /dev/null @@ -1 +0,0 @@ --1 \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Bootstrap/builds/lastSuccessfulBuild b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Bootstrap/builds/lastSuccessfulBuild deleted file mode 120000 index d7d17fcbef..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Bootstrap/builds/lastSuccessfulBuild +++ /dev/null @@ -1 +0,0 @@ --1 \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Bootstrap/nextBuildNumber b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Bootstrap/nextBuildNumber deleted file mode 100644 index d00491fd7e..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Bootstrap/nextBuildNumber +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Cassandra/builds/lastFailedBuild b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Cassandra/builds/lastFailedBuild deleted file mode 120000 index d7d17fcbef..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Cassandra/builds/lastFailedBuild +++ /dev/null @@ -1 +0,0 @@ --1 \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Cassandra/builds/lastSuccessfulBuild b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Cassandra/builds/lastSuccessfulBuild deleted file mode 120000 index d7d17fcbef..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Cassandra/builds/lastSuccessfulBuild +++ /dev/null @@ -1 +0,0 @@ --1 \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Cassandra/nextBuildNumber b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Cassandra/nextBuildNumber deleted file mode 100644 index d00491fd7e..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Cassandra/nextBuildNumber +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Config/builds/lastFailedBuild b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Config/builds/lastFailedBuild deleted file mode 120000 index d7d17fcbef..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Config/builds/lastFailedBuild +++ /dev/null @@ -1 +0,0 @@ --1 \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Config/builds/lastSuccessfulBuild b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Config/builds/lastSuccessfulBuild deleted file mode 120000 index d7d17fcbef..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Config/builds/lastSuccessfulBuild +++ /dev/null @@ -1 +0,0 @@ --1 \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Config/nextBuildNumber b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Config/nextBuildNumber deleted file mode 100644 index d00491fd7e..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Config/nextBuildNumber +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Content/builds/lastFailedBuild b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Content/builds/lastFailedBuild deleted file mode 120000 index d7d17fcbef..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Content/builds/lastFailedBuild +++ /dev/null @@ -1 +0,0 @@ --1 \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Content/builds/lastSuccessfulBuild b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Content/builds/lastSuccessfulBuild deleted file mode 120000 index d7d17fcbef..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Content/builds/lastSuccessfulBuild +++ /dev/null @@ -1 +0,0 @@ --1 \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Content/nextBuildNumber b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Content/nextBuildNumber deleted file mode 100644 index d00491fd7e..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Content/nextBuildNumber +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Keycloak/builds/lastFailedBuild b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Keycloak/builds/lastFailedBuild deleted file mode 120000 index d7d17fcbef..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Keycloak/builds/lastFailedBuild +++ /dev/null @@ -1 +0,0 @@ --1 \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Keycloak/builds/lastSuccessfulBuild b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Keycloak/builds/lastSuccessfulBuild deleted file mode 120000 index d7d17fcbef..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Keycloak/builds/lastSuccessfulBuild +++ /dev/null @@ -1 +0,0 @@ --1 \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Keycloak/nextBuildNumber b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Keycloak/nextBuildNumber deleted file mode 100644 index d00491fd7e..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Keycloak/nextBuildNumber +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/KeycloakRealm/builds/lastFailedBuild b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/KeycloakRealm/builds/lastFailedBuild deleted file mode 120000 index d7d17fcbef..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/KeycloakRealm/builds/lastFailedBuild +++ /dev/null @@ -1 +0,0 @@ --1 \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/KeycloakRealm/builds/lastSuccessfulBuild b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/KeycloakRealm/builds/lastSuccessfulBuild deleted file mode 120000 index d7d17fcbef..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/KeycloakRealm/builds/lastSuccessfulBuild +++ /dev/null @@ -1 +0,0 @@ --1 \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/KeycloakRealm/nextBuildNumber b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/KeycloakRealm/nextBuildNumber deleted file mode 100644 index d00491fd7e..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/KeycloakRealm/nextBuildNumber +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Learner/builds/lastFailedBuild b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Learner/builds/lastFailedBuild deleted file mode 120000 index d7d17fcbef..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Learner/builds/lastFailedBuild +++ /dev/null @@ -1 +0,0 @@ --1 \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Learner/builds/lastSuccessfulBuild b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Learner/builds/lastSuccessfulBuild deleted file mode 120000 index d7d17fcbef..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Learner/builds/lastSuccessfulBuild +++ /dev/null @@ -1 +0,0 @@ --1 \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Learner/nextBuildNumber b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Learner/nextBuildNumber deleted file mode 100644 index d00491fd7e..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Learner/nextBuildNumber +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/LoggerElasticSearch/builds/lastFailedBuild b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/LoggerElasticSearch/builds/lastFailedBuild deleted file mode 120000 index d7d17fcbef..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/LoggerElasticSearch/builds/lastFailedBuild +++ /dev/null @@ -1 +0,0 @@ --1 \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/LoggerElasticSearch/builds/lastSuccessfulBuild b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/LoggerElasticSearch/builds/lastSuccessfulBuild deleted file mode 120000 index d7d17fcbef..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/LoggerElasticSearch/builds/lastSuccessfulBuild +++ /dev/null @@ -1 +0,0 @@ --1 \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/LoggerElasticSearch/nextBuildNumber b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/LoggerElasticSearch/nextBuildNumber deleted file mode 100644 index d00491fd7e..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/LoggerElasticSearch/nextBuildNumber +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Logging/builds/lastFailedBuild b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Logging/builds/lastFailedBuild deleted file mode 120000 index d7d17fcbef..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Logging/builds/lastFailedBuild +++ /dev/null @@ -1 +0,0 @@ --1 \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Logging/builds/lastSuccessfulBuild b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Logging/builds/lastSuccessfulBuild deleted file mode 120000 index d7d17fcbef..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Logging/builds/lastSuccessfulBuild +++ /dev/null @@ -1 +0,0 @@ --1 \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Logging/nextBuildNumber b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Logging/nextBuildNumber deleted file mode 100644 index d00491fd7e..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Logging/nextBuildNumber +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Monitoring/builds/lastFailedBuild b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Monitoring/builds/lastFailedBuild deleted file mode 120000 index d7d17fcbef..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Monitoring/builds/lastFailedBuild +++ /dev/null @@ -1 +0,0 @@ --1 \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Monitoring/builds/lastSuccessfulBuild b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Monitoring/builds/lastSuccessfulBuild deleted file mode 120000 index d7d17fcbef..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Monitoring/builds/lastSuccessfulBuild +++ /dev/null @@ -1 +0,0 @@ --1 \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Monitoring/nextBuildNumber b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Monitoring/nextBuildNumber deleted file mode 100644 index d00491fd7e..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Monitoring/nextBuildNumber +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/OnboardAPIs/builds/lastFailedBuild b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/OnboardAPIs/builds/lastFailedBuild deleted file mode 120000 index d7d17fcbef..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/OnboardAPIs/builds/lastFailedBuild +++ /dev/null @@ -1 +0,0 @@ --1 \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/OnboardAPIs/builds/lastSuccessfulBuild b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/OnboardAPIs/builds/lastSuccessfulBuild deleted file mode 120000 index d7d17fcbef..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/OnboardAPIs/builds/lastSuccessfulBuild +++ /dev/null @@ -1 +0,0 @@ --1 \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/OnboardAPIs/nextBuildNumber b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/OnboardAPIs/nextBuildNumber deleted file mode 100644 index d00491fd7e..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/OnboardAPIs/nextBuildNumber +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/OnboardConsumers/builds/lastFailedBuild b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/OnboardConsumers/builds/lastFailedBuild deleted file mode 120000 index d7d17fcbef..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/OnboardConsumers/builds/lastFailedBuild +++ /dev/null @@ -1 +0,0 @@ --1 \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/OnboardConsumers/builds/lastSuccessfulBuild b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/OnboardConsumers/builds/lastSuccessfulBuild deleted file mode 120000 index d7d17fcbef..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/OnboardConsumers/builds/lastSuccessfulBuild +++ /dev/null @@ -1 +0,0 @@ --1 \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/OnboardConsumers/nextBuildNumber b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/OnboardConsumers/nextBuildNumber deleted file mode 100644 index d00491fd7e..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/OnboardConsumers/nextBuildNumber +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Player/builds/lastFailedBuild b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Player/builds/lastFailedBuild deleted file mode 120000 index d7d17fcbef..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Player/builds/lastFailedBuild +++ /dev/null @@ -1 +0,0 @@ --1 \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Player/builds/lastSuccessfulBuild b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Player/builds/lastSuccessfulBuild deleted file mode 120000 index d7d17fcbef..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Player/builds/lastSuccessfulBuild +++ /dev/null @@ -1 +0,0 @@ --1 \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Player/nextBuildNumber b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Player/nextBuildNumber deleted file mode 100644 index d00491fd7e..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Player/nextBuildNumber +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Proxy/builds/lastFailedBuild b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Proxy/builds/lastFailedBuild deleted file mode 120000 index d7d17fcbef..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Proxy/builds/lastFailedBuild +++ /dev/null @@ -1 +0,0 @@ --1 \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Proxy/builds/lastSuccessfulBuild b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Proxy/builds/lastSuccessfulBuild deleted file mode 120000 index d7d17fcbef..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Proxy/builds/lastSuccessfulBuild +++ /dev/null @@ -1 +0,0 @@ --1 \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Proxy/nextBuildNumber b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Proxy/nextBuildNumber deleted file mode 100644 index d00491fd7e..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Proxy/nextBuildNumber +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Telemetry/builds/lastFailedBuild b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Telemetry/builds/lastFailedBuild deleted file mode 120000 index d7d17fcbef..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Telemetry/builds/lastFailedBuild +++ /dev/null @@ -1 +0,0 @@ --1 \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Telemetry/builds/lastSuccessfulBuild b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Telemetry/builds/lastSuccessfulBuild deleted file mode 120000 index d7d17fcbef..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Telemetry/builds/lastSuccessfulBuild +++ /dev/null @@ -1 +0,0 @@ --1 \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Telemetry/nextBuildNumber b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Telemetry/nextBuildNumber deleted file mode 100644 index d00491fd7e..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Telemetry/nextBuildNumber +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/TelemetryLogstash/builds/lastFailedBuild b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/TelemetryLogstash/builds/lastFailedBuild deleted file mode 120000 index d7d17fcbef..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/TelemetryLogstash/builds/lastFailedBuild +++ /dev/null @@ -1 +0,0 @@ --1 \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/TelemetryLogstash/builds/lastSuccessfulBuild b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/TelemetryLogstash/builds/lastSuccessfulBuild deleted file mode 120000 index d7d17fcbef..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/TelemetryLogstash/builds/lastSuccessfulBuild +++ /dev/null @@ -1 +0,0 @@ --1 \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/TelemetryLogstash/nextBuildNumber b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/TelemetryLogstash/nextBuildNumber deleted file mode 100644 index d00491fd7e..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/TelemetryLogstash/nextBuildNumber +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/TelemetryLogstashDataPipeline/builds/lastFailedBuild b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/TelemetryLogstashDataPipeline/builds/lastFailedBuild deleted file mode 120000 index d7d17fcbef..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/TelemetryLogstashDataPipeline/builds/lastFailedBuild +++ /dev/null @@ -1 +0,0 @@ --1 \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/TelemetryLogstashDataPipeline/builds/lastSuccessfulBuild b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/TelemetryLogstashDataPipeline/builds/lastSuccessfulBuild deleted file mode 120000 index d7d17fcbef..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/TelemetryLogstashDataPipeline/builds/lastSuccessfulBuild +++ /dev/null @@ -1 +0,0 @@ --1 \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/TelemetryLogstashDataPipeline/nextBuildNumber b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/TelemetryLogstashDataPipeline/nextBuildNumber deleted file mode 100644 index d00491fd7e..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/TelemetryLogstashDataPipeline/nextBuildNumber +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/AnalyticsAPI/nextBuildNumber b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/AnalyticsAPI/nextBuildNumber deleted file mode 100644 index d00491fd7e..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/AnalyticsAPI/nextBuildNumber +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/AnalyticsFetchLogs/nextBuildNumber b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/AnalyticsFetchLogs/nextBuildNumber deleted file mode 100644 index d00491fd7e..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/AnalyticsFetchLogs/nextBuildNumber +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/AnalyticsGeoLocationDBSetup/nextBuildNumber b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/AnalyticsGeoLocationDBSetup/nextBuildNumber deleted file mode 100644 index d00491fd7e..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/AnalyticsGeoLocationDBSetup/nextBuildNumber +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/AnalyticsPopulatePSQLConsumerChannelMapping/nextBuildNumber b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/AnalyticsPopulatePSQLConsumerChannelMapping/nextBuildNumber deleted file mode 100644 index d00491fd7e..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/AnalyticsPopulatePSQLConsumerChannelMapping/nextBuildNumber +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/AnalyticsReplayJobs/nextBuildNumber b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/AnalyticsReplayJobs/nextBuildNumber deleted file mode 100644 index d00491fd7e..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/AnalyticsReplayJobs/nextBuildNumber +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/AnalyticsStartJobManager/nextBuildNumber b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/AnalyticsStartJobManager/nextBuildNumber deleted file mode 100644 index d00491fd7e..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/AnalyticsStartJobManager/nextBuildNumber +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/AnalyticsSubmitJobs/nextBuildNumber b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/AnalyticsSubmitJobs/nextBuildNumber deleted file mode 100644 index d00491fd7e..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/AnalyticsSubmitJobs/nextBuildNumber +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/CassandraDbUpdate/nextBuildNumber b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/CassandraDbUpdate/nextBuildNumber deleted file mode 100644 index d00491fd7e..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/CassandraDbUpdate/nextBuildNumber +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/DataProducts/nextBuildNumber b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/DataProducts/nextBuildNumber deleted file mode 100644 index d00491fd7e..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/DataProducts/nextBuildNumber +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/KafkaIndexer/nextBuildNumber b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/KafkaIndexer/nextBuildNumber deleted file mode 100644 index d00491fd7e..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/KafkaIndexer/nextBuildNumber +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/KafkaSetup/nextBuildNumber b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/KafkaSetup/nextBuildNumber deleted file mode 100644 index d00491fd7e..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/KafkaSetup/nextBuildNumber +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/Monitoring/nextBuildNumber b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/Monitoring/nextBuildNumber deleted file mode 100644 index d00491fd7e..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/Monitoring/nextBuildNumber +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/SamzaTelemetrySchemas/nextBuildNumber b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/SamzaTelemetrySchemas/nextBuildNumber deleted file mode 100644 index d00491fd7e..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/SamzaTelemetrySchemas/nextBuildNumber +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/Secor/nextBuildNumber b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/Secor/nextBuildNumber deleted file mode 100644 index d00491fd7e..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/Secor/nextBuildNumber +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/Yarn/nextBuildNumber b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/Yarn/nextBuildNumber deleted file mode 100644 index d00491fd7e..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/Yarn/nextBuildNumber +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/CassandraDbUpdate/nextBuildNumber b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/CassandraDbUpdate/nextBuildNumber deleted file mode 100644 index d00491fd7e..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/CassandraDbUpdate/nextBuildNumber +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/ContentTool/nextBuildNumber b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/ContentTool/nextBuildNumber deleted file mode 100644 index d00491fd7e..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/ContentTool/nextBuildNumber +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/FileSyncTool/nextBuildNumber b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/FileSyncTool/nextBuildNumber deleted file mode 100644 index d00491fd7e..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/FileSyncTool/nextBuildNumber +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/KafkaSetup/nextBuildNumber b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/KafkaSetup/nextBuildNumber deleted file mode 100644 index d00491fd7e..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/KafkaSetup/nextBuildNumber +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Learning/nextBuildNumber b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Learning/nextBuildNumber deleted file mode 100644 index d00491fd7e..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Learning/nextBuildNumber +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Monitoring/nextBuildNumber b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Monitoring/nextBuildNumber deleted file mode 100644 index d00491fd7e..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Monitoring/nextBuildNumber +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Neo4j/nextBuildNumber b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Neo4j/nextBuildNumber deleted file mode 100644 index d00491fd7e..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Neo4j/nextBuildNumber +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Neo4jDefinitionUpdate/nextBuildNumber b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Neo4jDefinitionUpdate/nextBuildNumber deleted file mode 100644 index d00491fd7e..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Neo4jDefinitionUpdate/nextBuildNumber +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Neo4jElasticSearchSyncTool/nextBuildNumber b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Neo4jElasticSearchSyncTool/nextBuildNumber deleted file mode 100644 index d00491fd7e..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Neo4jElasticSearchSyncTool/nextBuildNumber +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Search/nextBuildNumber b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Search/nextBuildNumber deleted file mode 100644 index d00491fd7e..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Search/nextBuildNumber +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/StartNeo4jCluster/nextBuildNumber b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/StartNeo4jCluster/nextBuildNumber deleted file mode 100644 index d00491fd7e..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/StartNeo4jCluster/nextBuildNumber +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/ValidateLearning/nextBuildNumber b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/ValidateLearning/nextBuildNumber deleted file mode 100644 index d00491fd7e..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/ValidateLearning/nextBuildNumber +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Yarn/nextBuildNumber b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Yarn/nextBuildNumber deleted file mode 100644 index d00491fd7e..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Yarn/nextBuildNumber +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Plugins/jobs/CollectionEditor/nextBuildNumber b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Plugins/jobs/CollectionEditor/nextBuildNumber deleted file mode 100644 index d00491fd7e..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Plugins/jobs/CollectionEditor/nextBuildNumber +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Plugins/jobs/ContentFramework/nextBuildNumber b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Plugins/jobs/ContentFramework/nextBuildNumber deleted file mode 100644 index d00491fd7e..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Plugins/jobs/ContentFramework/nextBuildNumber +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Plugins/jobs/ContentRendererPreview/nextBuildNumber b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Plugins/jobs/ContentRendererPreview/nextBuildNumber deleted file mode 100644 index d00491fd7e..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Plugins/jobs/ContentRendererPreview/nextBuildNumber +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Plugins/jobs/GenericEditor/nextBuildNumber b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Plugins/jobs/GenericEditor/nextBuildNumber deleted file mode 100644 index d00491fd7e..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Plugins/jobs/GenericEditor/nextBuildNumber +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Summary/jobs/DeployedVersions/nextBuildNumber b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Summary/jobs/DeployedVersions/nextBuildNumber deleted file mode 100644 index d00491fd7e..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Summary/jobs/DeployedVersions/nextBuildNumber +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/ApplicationElasticsearchBackup/nextBuildNumber b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/ApplicationElasticsearchBackup/nextBuildNumber deleted file mode 100644 index d00491fd7e..0000000000 --- a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/ApplicationElasticsearchBackup/nextBuildNumber +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/ApplicationElasticsearchRestore/nextBuildNumber b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/ApplicationElasticsearchRestore/nextBuildNumber deleted file mode 100644 index d00491fd7e..0000000000 --- a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/ApplicationElasticsearchRestore/nextBuildNumber +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/Bootstrap/nextBuildNumber b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/Bootstrap/nextBuildNumber deleted file mode 100644 index d00491fd7e..0000000000 --- a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/Bootstrap/nextBuildNumber +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/CassandraBackup/nextBuildNumber b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/CassandraBackup/nextBuildNumber deleted file mode 100644 index d00491fd7e..0000000000 --- a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/CassandraBackup/nextBuildNumber +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/LoggerElasticSearchBackup/nextBuildNumber b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/LoggerElasticSearchBackup/nextBuildNumber deleted file mode 100644 index d00491fd7e..0000000000 --- a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/LoggerElasticSearchBackup/nextBuildNumber +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/LoggerElasticSearchRestore/nextBuildNumber b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/LoggerElasticSearchRestore/nextBuildNumber deleted file mode 100644 index d00491fd7e..0000000000 --- a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/LoggerElasticSearchRestore/nextBuildNumber +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/PostgresqlBackup/nextBuildNumber b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/PostgresqlBackup/nextBuildNumber deleted file mode 100644 index d00491fd7e..0000000000 --- a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/PostgresqlBackup/nextBuildNumber +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/PostgresqlRestore/nextBuildNumber b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/PostgresqlRestore/nextBuildNumber deleted file mode 100644 index d00491fd7e..0000000000 --- a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/PostgresqlRestore/nextBuildNumber +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/PrometheusBackup/nextBuildNumber b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/PrometheusBackup/nextBuildNumber deleted file mode 100644 index d00491fd7e..0000000000 --- a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/PrometheusBackup/nextBuildNumber +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/SwarmBootstrap/nextBuildNumber b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/SwarmBootstrap/nextBuildNumber deleted file mode 100644 index d00491fd7e..0000000000 --- a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/SwarmBootstrap/nextBuildNumber +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/AnalyticsAPILogs/nextBuildNumber b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/AnalyticsAPILogs/nextBuildNumber deleted file mode 100644 index d00491fd7e..0000000000 --- a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/AnalyticsAPILogs/nextBuildNumber +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/Bootstrap/nextBuildNumber b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/Bootstrap/nextBuildNumber deleted file mode 100644 index d00491fd7e..0000000000 --- a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/Bootstrap/nextBuildNumber +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/CassandraBackup/nextBuildNumber b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/CassandraBackup/nextBuildNumber deleted file mode 100644 index d00491fd7e..0000000000 --- a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/CassandraBackup/nextBuildNumber +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/CassandraRestore/nextBuildNumber b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/CassandraRestore/nextBuildNumber deleted file mode 100644 index d00491fd7e..0000000000 --- a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/CassandraRestore/nextBuildNumber +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/ElasticsearchBackup/nextBuildNumber b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/ElasticsearchBackup/nextBuildNumber deleted file mode 100644 index d00491fd7e..0000000000 --- a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/ElasticsearchBackup/nextBuildNumber +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/ElasticsearchRestore/nextBuildNumber b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/ElasticsearchRestore/nextBuildNumber deleted file mode 100644 index d00491fd7e..0000000000 --- a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/ElasticsearchRestore/nextBuildNumber +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/InfluxDBBackup/nextBuildNumber b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/InfluxDBBackup/nextBuildNumber deleted file mode 100644 index d00491fd7e..0000000000 --- a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/InfluxDBBackup/nextBuildNumber +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/PostgresqlBackup/nextBuildNumber b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/PostgresqlBackup/nextBuildNumber deleted file mode 100644 index d00491fd7e..0000000000 --- a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/PostgresqlBackup/nextBuildNumber +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/PostgresqlRestore/nextBuildNumber b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/PostgresqlRestore/nextBuildNumber deleted file mode 100644 index d00491fd7e..0000000000 --- a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/PostgresqlRestore/nextBuildNumber +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/KnowledgePlatform/jobs/Bootstrap/nextBuildNumber b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/KnowledgePlatform/jobs/Bootstrap/nextBuildNumber deleted file mode 100644 index d00491fd7e..0000000000 --- a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/KnowledgePlatform/jobs/Bootstrap/nextBuildNumber +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/KnowledgePlatform/jobs/CassandraBackup/nextBuildNumber b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/KnowledgePlatform/jobs/CassandraBackup/nextBuildNumber deleted file mode 100644 index d00491fd7e..0000000000 --- a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/KnowledgePlatform/jobs/CassandraBackup/nextBuildNumber +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/KnowledgePlatform/jobs/CassandraRestore/nextBuildNumber b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/KnowledgePlatform/jobs/CassandraRestore/nextBuildNumber deleted file mode 100644 index d00491fd7e..0000000000 --- a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/KnowledgePlatform/jobs/CassandraRestore/nextBuildNumber +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/KnowledgePlatform/jobs/ElasticsearchBackup/nextBuildNumber b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/KnowledgePlatform/jobs/ElasticsearchBackup/nextBuildNumber deleted file mode 100644 index d00491fd7e..0000000000 --- a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/KnowledgePlatform/jobs/ElasticsearchBackup/nextBuildNumber +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/KnowledgePlatform/jobs/ElasticsearchRestore/nextBuildNumber b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/KnowledgePlatform/jobs/ElasticsearchRestore/nextBuildNumber deleted file mode 100644 index d00491fd7e..0000000000 --- a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/KnowledgePlatform/jobs/ElasticsearchRestore/nextBuildNumber +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/KnowledgePlatform/jobs/Neo4jBackup/nextBuildNumber b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/KnowledgePlatform/jobs/Neo4jBackup/nextBuildNumber deleted file mode 100644 index d00491fd7e..0000000000 --- a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/KnowledgePlatform/jobs/Neo4jBackup/nextBuildNumber +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/KnowledgePlatform/jobs/Neo4jRestore/nextBuildNumber b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/KnowledgePlatform/jobs/Neo4jRestore/nextBuildNumber deleted file mode 100644 index d00491fd7e..0000000000 --- a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/KnowledgePlatform/jobs/Neo4jRestore/nextBuildNumber +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/Cassandra/nextBuildNumber b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/Cassandra/nextBuildNumber deleted file mode 100644 index d00491fd7e..0000000000 --- a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/Cassandra/nextBuildNumber +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/JenkinsSlave/nextBuildNumber b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/JenkinsSlave/nextBuildNumber deleted file mode 100644 index d00491fd7e..0000000000 --- a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/JenkinsSlave/nextBuildNumber +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/Kafka/nextBuildNumber b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/Kafka/nextBuildNumber deleted file mode 100644 index d00491fd7e..0000000000 --- a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/Kafka/nextBuildNumber +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/Keycloak/nextBuildNumber b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/Keycloak/nextBuildNumber deleted file mode 100644 index d00491fd7e..0000000000 --- a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/Keycloak/nextBuildNumber +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/LogElasticSearch/nextBuildNumber b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/LogElasticSearch/nextBuildNumber deleted file mode 100644 index d00491fd7e..0000000000 --- a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/LogElasticSearch/nextBuildNumber +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/Postgres/nextBuildNumber b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/Postgres/nextBuildNumber deleted file mode 100644 index d00491fd7e..0000000000 --- a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/Postgres/nextBuildNumber +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/PostgresDbUpdate/nextBuildNumber b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/PostgresDbUpdate/nextBuildNumber deleted file mode 100644 index d00491fd7e..0000000000 --- a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/PostgresDbUpdate/nextBuildNumber +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/Registry/nextBuildNumber b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/Registry/nextBuildNumber deleted file mode 100644 index d00491fd7e..0000000000 --- a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/Registry/nextBuildNumber +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/Secor/nextBuildNumber b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/Secor/nextBuildNumber deleted file mode 100644 index d00491fd7e..0000000000 --- a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/Secor/nextBuildNumber +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/AnalyticsAPI/nextBuildNumber b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/AnalyticsAPI/nextBuildNumber deleted file mode 100644 index d00491fd7e..0000000000 --- a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/AnalyticsAPI/nextBuildNumber +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/AnalyticsSecor/nextBuildNumber b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/AnalyticsSecor/nextBuildNumber deleted file mode 100644 index d00491fd7e..0000000000 --- a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/AnalyticsSecor/nextBuildNumber +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/AnalyticsSpark/nextBuildNumber b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/AnalyticsSpark/nextBuildNumber deleted file mode 100644 index d00491fd7e..0000000000 --- a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/AnalyticsSpark/nextBuildNumber +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/Cassandra/nextBuildNumber b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/Cassandra/nextBuildNumber deleted file mode 100644 index d00491fd7e..0000000000 --- a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/Cassandra/nextBuildNumber +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/InfluxDB/nextBuildNumber b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/InfluxDB/nextBuildNumber deleted file mode 100644 index d00491fd7e..0000000000 --- a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/InfluxDB/nextBuildNumber +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/Kafka/nextBuildNumber b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/Kafka/nextBuildNumber deleted file mode 100644 index d00491fd7e..0000000000 --- a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/Kafka/nextBuildNumber +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/Kibana/nextBuildNumber b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/Kibana/nextBuildNumber deleted file mode 100644 index d00491fd7e..0000000000 --- a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/Kibana/nextBuildNumber +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/Postgres/nextBuildNumber b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/Postgres/nextBuildNumber deleted file mode 100644 index d00491fd7e..0000000000 --- a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/Postgres/nextBuildNumber +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/TelemetrySearch/nextBuildNumber b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/TelemetrySearch/nextBuildNumber deleted file mode 100644 index d00491fd7e..0000000000 --- a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/TelemetrySearch/nextBuildNumber +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/Yarn/nextBuildNumber b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/Yarn/nextBuildNumber deleted file mode 100644 index d00491fd7e..0000000000 --- a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/Yarn/nextBuildNumber +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/Zookeeper/nextBuildNumber b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/Zookeeper/nextBuildNumber deleted file mode 100644 index d00491fd7e..0000000000 --- a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/Zookeeper/nextBuildNumber +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Cassandra/nextBuildNumber b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Cassandra/nextBuildNumber deleted file mode 100644 index d00491fd7e..0000000000 --- a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Cassandra/nextBuildNumber +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/CompositeSearch/nextBuildNumber b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/CompositeSearch/nextBuildNumber deleted file mode 100644 index d00491fd7e..0000000000 --- a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/CompositeSearch/nextBuildNumber +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Kafka/nextBuildNumber b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Kafka/nextBuildNumber deleted file mode 100644 index d00491fd7e..0000000000 --- a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Kafka/nextBuildNumber +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Learning/nextBuildNumber b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Learning/nextBuildNumber deleted file mode 100644 index d00491fd7e..0000000000 --- a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Learning/nextBuildNumber +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Neo4j/nextBuildNumber b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Neo4j/nextBuildNumber deleted file mode 100644 index d00491fd7e..0000000000 --- a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Neo4j/nextBuildNumber +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Redis/nextBuildNumber b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Redis/nextBuildNumber deleted file mode 100644 index d00491fd7e..0000000000 --- a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Redis/nextBuildNumber +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Search/nextBuildNumber b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Search/nextBuildNumber deleted file mode 100644 index d00491fd7e..0000000000 --- a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Search/nextBuildNumber +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Yarn/nextBuildNumber b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Yarn/nextBuildNumber deleted file mode 100644 index d00491fd7e..0000000000 --- a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Yarn/nextBuildNumber +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Zookeeper/nextBuildNumber b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Zookeeper/nextBuildNumber deleted file mode 100644 index d00491fd7e..0000000000 --- a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Zookeeper/nextBuildNumber +++ /dev/null @@ -1 +0,0 @@ -1 From e1db428d0c31f7e0679617848c59c0654af1d0ee Mon Sep 17 00:00:00 2001 From: msknext Date: Mon, 25 Feb 2019 23:15:24 +0530 Subject: [PATCH 1263/1345] feat #000: Updated warn message --- .../Deploy/jobs/staging/jobs/Core/jobs/APIManager/config.xml | 2 +- .../Deploy/jobs/staging/jobs/Core/jobs/AdminUtils/config.xml | 2 +- .../jobs/Deploy/jobs/staging/jobs/Core/jobs/Badger/config.xml | 2 +- .../Deploy/jobs/staging/jobs/Core/jobs/Cassandra/config.xml | 2 +- .../jobs/Deploy/jobs/staging/jobs/Core/jobs/Config/config.xml | 2 +- .../jobs/Deploy/jobs/staging/jobs/Core/jobs/Content/config.xml | 2 +- .../jobs/Deploy/jobs/staging/jobs/Core/jobs/Learner/config.xml | 2 +- .../jobs/Deploy/jobs/staging/jobs/Core/jobs/Player/config.xml | 2 +- .../jobs/Deploy/jobs/staging/jobs/Core/jobs/Proxy/config.xml | 2 +- .../Deploy/jobs/staging/jobs/Core/jobs/Telemetry/config.xml | 2 +- .../jobs/staging/jobs/DataPipeline/jobs/AnalyticsAPI/config.xml | 2 +- .../jobs/staging/jobs/DataPipeline/jobs/DataProducts/config.xml | 2 +- .../Deploy/jobs/staging/jobs/DataPipeline/jobs/Secor/config.xml | 2 +- .../Deploy/jobs/staging/jobs/DataPipeline/jobs/Yarn/config.xml | 2 +- .../staging/jobs/KnowledgePlatform/jobs/Learning/config.xml | 2 +- .../jobs/staging/jobs/KnowledgePlatform/jobs/Neo4j/config.xml | 2 +- .../jobs/Neo4jElasticSearchSyncTool/config.xml | 2 +- .../jobs/staging/jobs/KnowledgePlatform/jobs/Search/config.xml | 2 +- .../jobs/staging/jobs/KnowledgePlatform/jobs/Yarn/config.xml | 2 +- 19 files changed, 19 insertions(+), 19 deletions(-) diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/APIManager/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/APIManager/config.xml index bece932424..1226e2b32c 100644 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/APIManager/config.xml +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/APIManager/config.xml @@ -34,7 +34,7 @@ image_tag - <font color=red size=2><b>CAUTION: If the value is blank, latest built image will be deployed.</b></font> + <font color=red size=2><b>CAUTION: If the value is blank, the latest image of dev will be deployed.</b></font> false diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/AdminUtils/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/AdminUtils/config.xml index 29d3a8ddbe..a0fe2cdb4c 100644 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/AdminUtils/config.xml +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/AdminUtils/config.xml @@ -34,7 +34,7 @@ image_tag - <font color=red size=2><b>CAUTION: If the value is blank, latest built image will be deployed.</b></font> + <font color=red size=2><b>CAUTION: If the value is blank, the latest image of dev will be deployed.</b></font> false diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Badger/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Badger/config.xml index 2ba0efe844..062007eacb 100644 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Badger/config.xml +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Badger/config.xml @@ -34,7 +34,7 @@ image_tag - <font color=red size=2><b>CAUTION: If the value is blank, latest built image will be deployed.</b></font> + <font color=red size=2><b>CAUTION: If the value is blank, the latest image of dev will be deployed.</b></font> false diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Cassandra/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Cassandra/config.xml index ca8a6a0848..6ca0fd4918 100644 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Cassandra/config.xml +++ b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Cassandra/config.xml @@ -86,7 +86,7 @@ return "<b>Not Applicable</b>" false - + false @@ -57,7 +57,7 @@ ArtifactRepo - Download the artifact from azure blob, JenkinsJob - Use the atrif choice-parameter-9600651313765 1 false - + false @@ -84,7 +84,7 @@ return "<b>Not Applicable</b>" choice-parameter-9600653373369 1 false - + false @@ -115,6 +115,20 @@ return "<b>Not Applicable</b>" false + + + + + ArtifactUpload/dev/Core/Cassandra + + SUCCESS + 0 + BLUE + true + + + + diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Content/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Content/config.xml index 2df463b198..4ed5b292c8 100644 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Content/config.xml +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Content/config.xml @@ -50,7 +50,18 @@ - + + + + ArtifactUpload/dev/Core/Content + + SUCCESS + 0 + BLUE + true + + + diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Learner/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Learner/config.xml index c8d69a2d0a..82ccfbd153 100644 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Learner/config.xml +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Learner/config.xml @@ -50,7 +50,18 @@ - + + + + ArtifactUpload/dev/Core/Learner + + SUCCESS + 0 + BLUE + true + + + diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Player/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Player/config.xml index 75a1b3d14d..90e08fdc77 100644 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Player/config.xml +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Player/config.xml @@ -50,7 +50,18 @@ - + + + + ArtifactUpload/dev/Core/Player + + SUCCESS + 0 + BLUE + true + + + diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Proxy/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Proxy/config.xml index 50e73c246b..5bfc2f12e0 100644 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Proxy/config.xml +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Proxy/config.xml @@ -42,6 +42,20 @@ false + + + + + ArtifactUpload/dev/Core/Proxy + + SUCCESS + 0 + BLUE + true + + + + diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Telemetry/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Telemetry/config.xml index d7b87837f6..a9d95f0f73 100644 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Telemetry/config.xml +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Telemetry/config.xml @@ -50,7 +50,18 @@ - + + + + ArtifactUpload/dev/Core/Telemetry + + SUCCESS + 0 + BLUE + true + + + diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/config.xml deleted file mode 100644 index 6fe3ca0b64..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/config.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - - - - - - All - false - false - - - - - - - - false - - - - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/config.xml deleted file mode 100644 index 68477b8ac7..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/config.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - - - - - - All - false - false - - - - - - - - false - - - - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/APIManager/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/APIManager/config.xml deleted file mode 100644 index 1226e2b32c..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/APIManager/config.xml +++ /dev/null @@ -1,86 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - absolute_job_path - <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> - Deploy/dev/Core/APIManager - false - - - image_tag - <font color=red size=2><b>CAUTION: If the value is blank, the latest image of dev will be deployed.</b></font> - - false - - - - - 0 - 0 - - false - project - false - - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - pipelines/deploy/api-manager/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/AdminUtils/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/AdminUtils/config.xml deleted file mode 100644 index a0fe2cdb4c..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/AdminUtils/config.xml +++ /dev/null @@ -1,86 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - absolute_job_path - <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> - Deploy/dev/Core/AdminUtils - false - - - image_tag - <font color=red size=2><b>CAUTION: If the value is blank, the latest image of dev will be deployed.</b></font> - - false - - - - - 0 - 0 - - false - project - false - - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - pipelines/deploy/adminutils/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/ApplicationElasticSearch/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/ApplicationElasticSearch/config.xml deleted file mode 100644 index 360fb08734..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/ApplicationElasticSearch/config.xml +++ /dev/null @@ -1,58 +0,0 @@ - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - false - project - false - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 1 - false - - - - pipelines/deploy/application-elasticsearch/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Badger/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Badger/config.xml deleted file mode 100644 index 062007eacb..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Badger/config.xml +++ /dev/null @@ -1,86 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - absolute_job_path - <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> - Deploy/dev/Core/Badger - false - - - image_tag - <font color=red size=2><b>CAUTION: If the value is blank, the latest image of dev will be deployed.</b></font> - - false - - - - - 0 - 0 - - false - project - false - - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - pipelines/deploy/badger/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Bootstrap/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Bootstrap/config.xml deleted file mode 100644 index d18ba30951..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Bootstrap/config.xml +++ /dev/null @@ -1,61 +0,0 @@ - - - - - false - - - - -1 - -1 - -1 - 5 - - - - false - false - - - - - hosts - <font color=black size=2><b>Enter the host name to be bootstrapped.</b></font> - all - false - - - - - 0 - 0 - - false - project - false - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops.git - - - - - ${public_repo_branch} - - - false - - - - pipelines/bootstrap/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Cassandra/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Cassandra/config.xml deleted file mode 100644 index 6ca0fd4918..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Cassandra/config.xml +++ /dev/null @@ -1,149 +0,0 @@ - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - absolute_job_path - <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> - Deploy/dev/Core/Cassandra - false - - - artifact_source - <font color=black size=2><b> -ArtifactRepo - Download the artifact from azure blob, JenkinsJob - Use the atrifact from Jenkins job.</b></font> - choice-parameter-9600649228560 - 1 - - false - - - - false - - - Cassandra - - - PT_SINGLE_SELECT - false - 1 - - - build_number - - choice-parameter-9600651313765 - 1 - - false - - - - false - - - Cassandra - - artifact_source - ET_FORMATTED_HTML - true - - - artifact_version - - choice-parameter-9600653373369 - 1 - - false - - - - false - - - Cassandra - - artifact_source - ET_FORMATTED_HTML - true - - - - - 0 - 0 - - false - project - false - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - pipelines/deploy/cassandra-deploy/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Config/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Config/config.xml deleted file mode 100644 index 1f52cc87ac..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Config/config.xml +++ /dev/null @@ -1,86 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - absolute_job_path - <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> - Deploy/dev/Core/Config - false - - - image_tag - <font color=red size=2><b>CAUTION: If the value is blank, the latest image of dev will be deployed.</b></font> - - false - - - - - 0 - 0 - - false - project - false - - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - pipelines/deploy/config-service/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Content/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Content/config.xml deleted file mode 100644 index 5856731e8e..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Content/config.xml +++ /dev/null @@ -1,86 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - absolute_job_path - <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> - Deploy/dev/Core/Content - false - - - image_tag - <font color=red size=2><b>CAUTION: If the value is blank, the latest image of dev will be deployed.</b></font> - - false - - - - - 0 - 0 - - false - project - false - - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - pipelines/deploy/content/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Keycloak/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Keycloak/config.xml deleted file mode 100644 index de2b8ee1f1..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Keycloak/config.xml +++ /dev/null @@ -1,68 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - false - project - false - - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops.git - - - - - keycloak-deployment - - - false - - - - true - false - - 1 - false - - - - pipelines/deploy/keycloak/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/KeycloakRealm/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/KeycloakRealm/config.xml deleted file mode 100644 index 6a9232507a..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/KeycloakRealm/config.xml +++ /dev/null @@ -1,68 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - false - project - false - - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops.git - - - - - keycloak-deployment - - - false - - - - true - false - - 1 - false - - - - pipelines/deploy/keycloak-realm/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Learner/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Learner/config.xml deleted file mode 100644 index d234ea4840..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Learner/config.xml +++ /dev/null @@ -1,86 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - absolute_job_path - <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> - Deploy/dev/Core/Learner - false - - - image_tag - <font color=red size=2><b>CAUTION: If the value is blank, the latest image of dev will be deployed.</b></font> - - false - - - - - 0 - 0 - - false - project - false - - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 1 - false - - - - pipelines/deploy/learner/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/LoggerElasticSearch/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/LoggerElasticSearch/config.xml deleted file mode 100644 index d1cee1407a..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/LoggerElasticSearch/config.xml +++ /dev/null @@ -1,60 +0,0 @@ - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - 0 - 0 - - false - project - false - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 1 - false - - - - pipelines/deploy/logger-elasticsearch/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Logging/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Logging/config.xml deleted file mode 100644 index 1dfbb2a98a..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Logging/config.xml +++ /dev/null @@ -1,60 +0,0 @@ - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - 0 - 0 - - false - project - false - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 1 - false - - - - pipelines/deploy/logger/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Monitoring/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Monitoring/config.xml deleted file mode 100644 index 9a870e34b6..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Monitoring/config.xml +++ /dev/null @@ -1,60 +0,0 @@ - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - 0 - 0 - - false - project - false - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 1 - false - - - - pipelines/deploy/monitor/Core/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/OnboardAPIs/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/OnboardAPIs/config.xml deleted file mode 100644 index 26970f24e5..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/OnboardAPIs/config.xml +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - 0 - 0 - - false - project - false - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 1 - false - - - - pipelines/deploy/am-onboard-apis/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/OnboardConsumers/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/OnboardConsumers/config.xml deleted file mode 100644 index 13772a78b5..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/OnboardConsumers/config.xml +++ /dev/null @@ -1,58 +0,0 @@ - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - false - project - false - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 1 - false - - - - pipelines/deploy/am-onboard-consumers/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Player/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Player/config.xml deleted file mode 100644 index 86f8c802a8..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Player/config.xml +++ /dev/null @@ -1,86 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - absolute_job_path - <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> - Deploy/dev/Core/Player - false - - - image_tag - <font color=red size=2><b>CAUTION: If the value is blank, the latest image of dev will be deployed.</b></font> - - false - - - - - 0 - 0 - - false - project - false - - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 1 - false - - - - pipelines/deploy/player/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Proxy/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Proxy/config.xml deleted file mode 100644 index 7a6a8dab07..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Proxy/config.xml +++ /dev/null @@ -1,76 +0,0 @@ - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - absolute_job_path - <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> - Deploy/dev/Core/Proxy - false - - - image_tag - <font color=red size=2><b>CAUTION: If the value is blank, the latest image of dev will be deployed.</b></font> - - false - - - - - 0 - 0 - - false - project - false - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 1 - false - - - - pipelines/deploy/proxy/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Telemetry/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Telemetry/config.xml deleted file mode 100644 index 28b6089ce0..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/Telemetry/config.xml +++ /dev/null @@ -1,86 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - absolute_job_path - <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> - Deploy/dev/Core/Telemetry - false - - - image_tag - <font color=red size=2><b>CAUTION: If the value is blank, the latest image of dev will be deployed.</b></font> - - false - - - - - 0 - 0 - - false - project - false - - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 1 - false - - - - pipelines/deploy/telemetry/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/TelemetryLogstash/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/TelemetryLogstash/config.xml deleted file mode 100644 index b167ae0167..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/TelemetryLogstash/config.xml +++ /dev/null @@ -1,60 +0,0 @@ - - - - Deploys Telemetry Logstash Service - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - 0 - 0 - - false - project - false - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 1 - false - - - - pipelines/deploy/telemetry-logstash/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/TelemetryLogstashDataPipeline/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/TelemetryLogstashDataPipeline/config.xml deleted file mode 100644 index 602e2eda1f..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Core/jobs/TelemetryLogstashDataPipeline/config.xml +++ /dev/null @@ -1,58 +0,0 @@ - - - - Deploys Telemetry Logstash Datapipeline Service - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - false - project - false - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 1 - false - - - - pipelines/deploy/telemetry-logstash-datapipeline/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/config.xml deleted file mode 100644 index 68477b8ac7..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/config.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - - - - - - All - false - false - - - - - - - - false - - - - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/AnalyticsAPI/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/AnalyticsAPI/config.xml deleted file mode 100644 index b505b21f98..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/AnalyticsAPI/config.xml +++ /dev/null @@ -1,156 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - absolute_job_path - <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> - Deploy/dev/DataPipeline/Analytics - false - - - artifact_source - <font color=black size=2><b> -ArtifactRepo - Download the artifact from azure blob, JenkinsJob - Use the atrifact from Jenkins job.</b></font> - choice-parameter-9061667106947 - 1 - - false - - - - false - - - AnalyticsAPI - - - PT_SINGLE_SELECT - false - 1 - - - build_number - - choice-parameter-9061670571657 - 1 - - false - - - - false - - - AnalyticsAPI - - artifact_source - ET_FORMATTED_HTML - true - - - artifact_version - - choice-parameter-9061673103864 - 1 - - false - - - - false - - - AnalyticsAPI - - artifact_source - ET_FORMATTED_HTML - true - - - - - 0 - 0 - - false - project - false - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-data-pipeline.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - pipelines/deploy/analytics-api/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/AnalyticsFetchLogs/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/AnalyticsFetchLogs/config.xml deleted file mode 100644 index bdb4532949..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/AnalyticsFetchLogs/config.xml +++ /dev/null @@ -1,93 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - instance_name - <font color=black size=2><b>Choose the instance to fetch logs.</b></font> - - - spark - analytics-api - secor - cassandra - - - - - action - <font color=black size=2><b>Choose one of the option - Fetch logs or set cronjob.</b></font> - - - fetch-logs - cronjobs - - - - - - - 0 - 0 - - false - project - false - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-data-pipeline.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 1 - false - - - - pipelines/deploy/fetch-logs/Jenkinsfile - false - - - true - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/AnalyticsGeoLocationDBSetup/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/AnalyticsGeoLocationDBSetup/config.xml deleted file mode 100644 index 1dfdaca572..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/AnalyticsGeoLocationDBSetup/config.xml +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - 0 - 0 - - false - project - false - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-data-pipeline.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 1 - false - - - - pipelines/deploy/geolocation-db-setup/Jenkinsfile - false - - - true - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/AnalyticsPopulatePSQLConsumerChannelMapping/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/AnalyticsPopulatePSQLConsumerChannelMapping/config.xml deleted file mode 100644 index d7a72eae8e..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/AnalyticsPopulatePSQLConsumerChannelMapping/config.xml +++ /dev/null @@ -1,99 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - Consumer_id - <font color=black size=2><b>Mention the consumer ID.</b></font> - id - false - - - Channel_id - <font color=black size=2><b>Channel ID to map with the Consumer ID.</b></font> - channel_id - false - - - status - <font color=black size=2><b> 1 - to activate, 0 - to make it inactive</b></font> - - - 1 - 0 - - - - - Created_by - <font color=black size=2><b>Created by.</b></font> - analytics-team - false - - - - - 0 - 0 - - false - project - false - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-data-pipeline.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - pipelines/deploy/PopulatePSQL-ConsumerChannelMapping/Jenkinsfile - false - - - true - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/AnalyticsReplayJobs/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/AnalyticsReplayJobs/config.xml deleted file mode 100644 index 5118f01003..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/AnalyticsReplayJobs/config.xml +++ /dev/null @@ -1,113 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - cql_query - <font color=black size=2><b>Specify cql_query if any tables needs to be truncated.<b></font> - 0 - false - - - job_type - <font color=black size=2><b>Specify the job type - Replay or Run.</b></font> - - - replay-job - run-job - generate-metrics - submit-job - - - - - job_id - <font color=black size=2><b>Specify the job id.</b></font> - - false - - - start_date - <font color=black size=2><b>Specify the start date. The default value is just a placeholder which can be changed as per need.</b></font> - 2017-05-01 - false - - - end_date - <font color=black size=2><b>Specify the end date. The default value is just a placeholder which can be changed as per need.</b></font> - 2017-07-11 - false - - - pause_min - <font color=black size=2><b>Specify the # of minutes to pause. The default value is just a placeholder which can be changed as per need.</b></font> - 30 - false - - - - - 0 - 0 - - false - project - false - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-data-pipeline.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - pipelines/deploy/replay-jobs/Jenkinsfile - false - - - true - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/AnalyticsStartJobManager/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/AnalyticsStartJobManager/config.xml deleted file mode 100644 index 18d2b6956a..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/AnalyticsStartJobManager/config.xml +++ /dev/null @@ -1,77 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - pause_min - <font color=black size=2><b>Pause for # of minutes.</b></font> - 5 - false - - - - - 0 - 0 - - false - project - false - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-data-pipeline.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 1 - false - - - - pipelines/deploy/start-jobmanager/Jenkinsfile - false - - - true - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/AnalyticsSubmitJobs/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/AnalyticsSubmitJobs/config.xml deleted file mode 100644 index 4bc26f549a..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/AnalyticsSubmitJobs/config.xml +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - pause_min - <font color=teal size=2>Pause for # of minutes.</font> - 5 - false - - - - - - false - project - false - - 1 - - - - - 2 - - - https://github.com/project-sunbird/sunbird-data-pipeline.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - pipelines/deploy/submit-jobs/Jenkinsfile - false - - - true - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/CassandraDbUpdate/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/CassandraDbUpdate/config.xml deleted file mode 100644 index 49fc435bba..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/CassandraDbUpdate/config.xml +++ /dev/null @@ -1,65 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - false - project - false - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-data-pipeline.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 1 - false - - - - pipelines/deploy/cassandra/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/DataProducts/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/DataProducts/config.xml deleted file mode 100644 index 104cbf6586..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/DataProducts/config.xml +++ /dev/null @@ -1,154 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - absolute_job_path - <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> - Deploy/dev/DataPipeline/Analytics - false - - - artifact_source - <font color=black size=2><b> -ArtifactRepo - Download the artifact from azure blob, JenkinsJob - Use the atrifact from Jenkins job.</b></font> - choice-parameter-9061667106947 - 1 - - false - - - - false - - - DataProducts - - - PT_SINGLE_SELECT - false - 1 - - - build_number - - choice-parameter-9061670571657 - 1 - - false - - - - false - - - DataProducts - - artifact_source - ET_FORMATTED_HTML - true - - - artifact_version - - choice-parameter-9061673103864 - 1 - - false - - - - false - - - DataProducts - - artifact_source - ET_FORMATTED_HTML - true - - - - - - false - project - false - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-data-pipeline.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - pipelines/deploy/data-products/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/KafkaIndexer/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/KafkaIndexer/config.xml deleted file mode 100644 index b890e64adf..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/KafkaIndexer/config.xml +++ /dev/null @@ -1,65 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - false - project - false - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-data-pipeline.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 1 - false - - - - pipelines/deploy/kafka-indexer/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/KafkaSetup/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/KafkaSetup/config.xml deleted file mode 100644 index ad29df38a3..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/KafkaSetup/config.xml +++ /dev/null @@ -1,65 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - false - project - false - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-data-pipeline.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 1 - false - - - - pipelines/deploy/kafka/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/Monitoring/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/Monitoring/config.xml deleted file mode 100644 index 79740ffe84..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/Monitoring/config.xml +++ /dev/null @@ -1,72 +0,0 @@ - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - false - project - false - - - - - - - ../Core/Monitoring, - - FAILURE - 2 - RED - true - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 1 - false - - - - pipelines/deploy/monitor/DataPipeline/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/SamzaTelemetrySchemas/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/SamzaTelemetrySchemas/config.xml deleted file mode 100644 index 0aca8d3e75..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/SamzaTelemetrySchemas/config.xml +++ /dev/null @@ -1,77 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - schema_repo_version - <font color=black size=2><b>Specify the scehma repo version.</b></font> - ${public_repo_branch} - false - - - - - 0 - 0 - - false - project - false - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-data-pipeline.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - pipelines/deploy/samza-telemetry-schemas/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/Secor/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/Secor/config.xml deleted file mode 100644 index 1b4760ca1d..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/Secor/config.xml +++ /dev/null @@ -1,154 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - absolute_job_path - <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> - Deploy/dev/DataPipeline/Secor - false - - - artifact_source - <font color=black size=2><b> -ArtifactRepo - Download the artifact from azure blob, JenkinsJob - Use the atrifact from Jenkins job.</b></font> - choice-parameter-9061667106947 - 1 - - false - - - - false - - - Secor - - - PT_SINGLE_SELECT - false - 1 - - - build_number - - choice-parameter-9061670571657 - 1 - - false - - - - false - - - Secor - - artifact_source - ET_FORMATTED_HTML - true - - - artifact_version - - choice-parameter-9061673103864 - 1 - - false - - - - false - - - Secor - - artifact_source - ET_FORMATTED_HTML - true - - - - - - false - project - false - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-data-pipeline.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 1 - false - - - - pipelines/deploy/secor/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/Yarn/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/Yarn/config.xml deleted file mode 100644 index 654cf66875..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/DataPipeline/jobs/Yarn/config.xml +++ /dev/null @@ -1,156 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - absolute_job_path - <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> - Deploy/dev/DataPipeline/DataPipeline - false - - - artifact_source - <font color=black size=2><b> -ArtifactRepo - Download the artifact from azure blob, JenkinsJob - Use the atrifact from Jenkins job.</b></font> - choice-parameter-9061667106947 - 1 - - false - - - - false - - - Yarn - - - PT_SINGLE_SELECT - false - 1 - - - build_number - - choice-parameter-9061670571657 - 1 - - false - - - - false - - - Yarn - - artifact_source - ET_FORMATTED_HTML - true - - - artifact_version - - choice-parameter-9061673103864 - 1 - - false - - - - false - - - Yarn - - artifact_source - ET_FORMATTED_HTML - true - - - - - 0 - 0 - - false - project - false - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-data-pipeline.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 1 - false - - - - pipelines/deploy/yarn/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/config.xml deleted file mode 100644 index 68477b8ac7..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/config.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - - - - - - All - false - false - - - - - - - - false - - - - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/CassandraDbUpdate/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/CassandraDbUpdate/config.xml deleted file mode 100644 index f73ce21760..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/CassandraDbUpdate/config.xml +++ /dev/null @@ -1,68 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - false - project - false - - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-learning-platform.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 1 - false - - - - pipelines/deploy/cassandra/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/ContentTool/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/ContentTool/config.xml deleted file mode 100644 index 27f1f800e0..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/ContentTool/config.xml +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - absolute_job_path - <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> - Deploy/dev/KnowledgePlatform/KnowledgePlatform - false - - - command - <font color=black size=2><b>Enter the command.</b></font> - sync - false - - - parameters - <font color=black size=2><b>Enter the do id.</b></font> - - false - - - - - 0 - 0 - - false - project - false - - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-learning-platform.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 1 - false - - - - pipelines/deploy/content_tool/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/FileSyncTool/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/FileSyncTool/config.xml deleted file mode 100644 index d5138946c8..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/FileSyncTool/config.xml +++ /dev/null @@ -1,83 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - absolute_job_path - <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> - Deploy/dev/KnowledgePlatform/Synctool - false - - - filename - <font color=black size=2><b>Enter valid filename with extention.</b></font> - - false - - - - - 0 - 0 - - false - project - false - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-learning-platform.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - pipelines/deploy/file-sync-tool/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/KafkaSetup/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/KafkaSetup/config.xml deleted file mode 100644 index 34321776af..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/KafkaSetup/config.xml +++ /dev/null @@ -1,68 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - false - project - false - - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-learning-platform.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - pipelines/deploy/kafka-setup/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Learning/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Learning/config.xml deleted file mode 100644 index 43bf31128b..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Learning/config.xml +++ /dev/null @@ -1,159 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - absolute_job_path - <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> - Deploy/dev/KnowledgePlatform/KnowledgePlatform - false - - - artifact_source - <font color=black size=2><b> -ArtifactRepo - Download the artifact from azure blob, JenkinsJob - Use the atrifact from Jenkins job.</b></font> - choice-parameter-12566219493457 - 1 - - false - - - - false - - - Learning - - - PT_SINGLE_SELECT - false - 1 - - - build_number - - choice-parameter-12566221440336 - 1 - - false - - - - false - - - Learning - - artifact_source - ET_FORMATTED_HTML - true - - - artifact_version - - choice-parameter-12566223395914 - 1 - - false - - - - false - - - Learning - - artifact_source - ET_FORMATTED_HTML - true - - - - - 0 - 0 - - false - project - false - - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-learning-platform.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - pipelines/deploy/learning/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Monitoring/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Monitoring/config.xml deleted file mode 100644 index 8945d48949..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Monitoring/config.xml +++ /dev/null @@ -1,65 +0,0 @@ - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - - ../DataPipeline/Monitoring, - - FAILURE - 2 - RED - true - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - pipelines/deploy/monitor/KnowledgePlatform/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Neo4j/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Neo4j/config.xml deleted file mode 100644 index e12ab8231c..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Neo4j/config.xml +++ /dev/null @@ -1,157 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - absolute_job_path - <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> - Deploy/dev/KnowledgePlatform/Neo4j - false - - - artifact_source - <font color=black size=2><b> -ArtifactRepo - Download the artifact from azure blob, JenkinsJob - Use the atrifact from Jenkins job.</b></font> - choice-parameter-13436883643465 - 1 - - false - - - - false - - - Neo4j - - - PT_SINGLE_SELECT - false - 1 - - - build_number - - choice-parameter-13436885688258 - 1 - - false - - - - false - - - Neo4j - - artifact_source - ET_FORMATTED_HTML - true - - - artifact_version - - choice-parameter-13436888536349 - 1 - - false - - - - false - - - Neo4j - - artifact_source - ET_FORMATTED_HTML - true - - - - - - false - project - false - - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-learning-platform.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - pipelines/deploy/neo4j/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Neo4jDefinitionUpdate/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Neo4jDefinitionUpdate/config.xml deleted file mode 100644 index b5224eace1..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Neo4jDefinitionUpdate/config.xml +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-learning-platform.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - false - - - - pipelines/deploy/neo4j-definition-update/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Neo4jElasticSearchSyncTool/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Neo4jElasticSearchSyncTool/config.xml deleted file mode 100644 index 94c60b78b9..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Neo4jElasticSearchSyncTool/config.xml +++ /dev/null @@ -1,184 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - absolute_job_path - <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> - Deploy/dev/KnowledgePlatform/SyncTool - false - - - artifact_source - <font color=black size=2><b> -ArtifactRepo - Download the artifact from azure blob, JenkinsJob - Use the atrifact from Jenkins job.</b></font> - choice-parameter-14175006770414 - 1 - - false - - - - false - - - Neo4jElasticSearchSyncTool - - - PT_SINGLE_SELECT - false - 1 - - - build_number - - choice-parameter-14175008677110 - 1 - - false - - - - false - - - Neo4jElasticSearchSyncTool - - artifact_source - ET_FORMATTED_HTML - true - - - artifact_version - - choice-parameter-14175010584707 - 1 - - false - - - - false - - - Neo4jElasticSearchSyncTool - - artifact_source - ET_FORMATTED_HTML - true - - - command - <font color=black size=2><b>Select a command</b></font> - - - sync - syncbyobjecttype - syncbyids - syncbydaterange - - - - - parameters - <font color=black size=2><b>It is parameter to pass with command.<br> - ex:<br> - --objectType Content<br> - --ids do_10101010,do_20202020<br> - --startDate 2018-03-01 --endDate 2018-03-31<br> - --objectType Content --startDate 2018-03-01 --endDate 2018-03-31<br> - --graphId en --objectType Word<br> - --graph domain --objectType Channel<br></b></font> - --graph domain - false - - - - - 0 - 0 - - false - project - false - - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-learning-platform.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - pipelines/deploy/neo4j-es-synctool/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Search/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Search/config.xml deleted file mode 100644 index 94ac290852..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Search/config.xml +++ /dev/null @@ -1,157 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - absolute_job_path - <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> - Deploy/dev/KnowledgePlatform/KnowledgePlatform - false - - - artifact_source - <font color=black size=2><b> -ArtifactRepo - Download the artifact from azure blob, JenkinsJob - Use the atrifact from Jenkins job.</b></font> - choice-parameter-14760318274338 - 1 - - false - - - - false - - - Search - - - PT_SINGLE_SELECT - false - 1 - - - build_number - - choice-parameter-14760320375443 - 1 - - false - - - - false - - - Search - - artifact_source - ET_FORMATTED_HTML - true - - - artifact_version - - choice-parameter-14760322347747 - 1 - - false - - - - false - - - Search - - artifact_source - ET_FORMATTED_HTML - true - - - - - - false - project - false - - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-learning-platform.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - pipelines/deploy/search/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/StartNeo4jCluster/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/StartNeo4jCluster/config.xml deleted file mode 100644 index 9e81000e2b..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/StartNeo4jCluster/config.xml +++ /dev/null @@ -1,68 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - false - project - false - - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-learning-platform.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - pipelines/deploy/neo4j-start-cluster/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/ValidateLearning/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/ValidateLearning/config.xml deleted file mode 100644 index 0af53c22f8..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/ValidateLearning/config.xml +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-learning-platform.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - false - - - - pipelines/deploy/validate-learning/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Yarn/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Yarn/config.xml deleted file mode 100644 index 1726ec4d5b..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/KnowledgePlatform/jobs/Yarn/config.xml +++ /dev/null @@ -1,159 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - absolute_job_path - <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> - Deploy/dev/KnowledgePlatform/Yarn - false - - - artifact_source - <font color=black size=2><b> -ArtifactRepo - Download the artifact from azure blob, JenkinsJob - Use the atrifact from Jenkins job.</b></font> - choice-parameter-2874232768088857 - 1 - - false - - - - false - - - Yarn - - - PT_SINGLE_SELECT - false - 1 - - - build_number - - choice-parameter-2874449088885218 - 1 - - false - - - - false - - - Yarn - - artifact_source - ET_FORMATTED_HTML - true - - - artifact_version - - choice-parameter-2877900313772031 - 1 - - false - - - - false - - - Yarn - - artifact_source - ET_FORMATTED_HTML - true - - - - - 0 - 0 - - false - project - false - - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-learning-platform.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - pipelines/deploy/yarn/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Plugins/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Plugins/config.xml deleted file mode 100644 index e25dcd1341..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Plugins/config.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - - - - All - false - false - - - - - - - - false - - - - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Plugins/jobs/CollectionEditor/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Plugins/jobs/CollectionEditor/config.xml deleted file mode 100644 index 3a97381d49..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Plugins/jobs/CollectionEditor/config.xml +++ /dev/null @@ -1,67 +0,0 @@ - - - - - false - - - false - false - - - - - absolute_job_path - <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> - Build/Plugins/CollectionEditor - false - - - container_name - <font color=black size=2><b>Please specify azure container name.</b></font> - plugins - false - - - - - 0 - 0 - - false - project - false - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-collection-editor.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - Jenkinsfile.deploy - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Plugins/jobs/ContentFramework/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Plugins/jobs/ContentFramework/config.xml deleted file mode 100644 index f0e007d858..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Plugins/jobs/ContentFramework/config.xml +++ /dev/null @@ -1,67 +0,0 @@ - - - - - false - - - false - false - - - - - absolute_job_path - <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> - Build/Plugins/GenericEditor - false - - - container_name - <font color=black size=2><b>Please specify azure container name.</b></font> - plugins - false - - - - - 0 - 0 - - false - project - false - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-content-editor.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - Jenkinsfile.deploy - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Plugins/jobs/ContentRendererPreview/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Plugins/jobs/ContentRendererPreview/config.xml deleted file mode 100644 index f866564dad..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Plugins/jobs/ContentRendererPreview/config.xml +++ /dev/null @@ -1,67 +0,0 @@ - - - - - false - - - false - false - - - - - absolute_job_path - <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> - Build/Plugins/CollectionEditor - false - - - container_name - <font color=black size=2><b>Please specify azure container name.</b></font> - plugins - false - - - - - 0 - 0 - - false - project - false - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-content-player.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - Jenkinsfile.deploy - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Plugins/jobs/GenericEditor/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Plugins/jobs/GenericEditor/config.xml deleted file mode 100644 index 1990aa563a..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Plugins/jobs/GenericEditor/config.xml +++ /dev/null @@ -1,67 +0,0 @@ - - - - - false - - - false - false - - - - - absolute_job_path - <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> - Build/Plugins/GenericEditor - false - - - container_name - <font color=black size=2><b>Please specify azure container name.</b></font> - plugins - false - - - - - 0 - 0 - - false - project - false - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-generic-editor.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - Jenkinsfile.deploy - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Summary/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Summary/config.xml deleted file mode 100644 index 68477b8ac7..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Summary/config.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - - - - - - All - false - false - - - - - - - - false - - - - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Summary/jobs/DeployedVersions/config.xml b/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Summary/jobs/DeployedVersions/config.xml deleted file mode 100644 index ea6986969b..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/staging/jobs/Summary/jobs/DeployedVersions/config.xml +++ /dev/null @@ -1,72 +0,0 @@ - - - - - false - - - - -1 - -1 - -1 - 10 - - - - - false - false - - - - false - project - false - - - - - - - Deploy/dev/Core/Content,Deploy/dev/Core/Player,Deploy/dev/Core/Learner,Deploy/dev/Core/Telemetry,Deploy/dev/Core/Proxy,Deploy/dev/KnowledgePlatform/Search,Deploy/dev/KnowledgePlatform/Learning,Deploy/dev/DataPipeline/Secor,Deploy/dev/DataPipeline/Yarn,Deploy/dev/KnowledgePlatform/Yarn,Deploy/dev/DataPipeline/AnalyticsAPI - - SUCCESS - 0 - BLUE - true - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops.git - - - - - final-variable-refac - - - false - - - - true - false - - 0 - false - - - - pipelines/summary/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/config.xml deleted file mode 100644 index 6fe3ca0b64..0000000000 --- a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/config.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - - - - - - All - false - false - - - - - - - - false - - - - \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/config.xml deleted file mode 100644 index 6fe3ca0b64..0000000000 --- a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/config.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - - - - - - All - false - false - - - - - - - - false - - - - \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/ApplicationElasticsearchBackup/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/ApplicationElasticsearchBackup/config.xml deleted file mode 100644 index ff31ba71a6..0000000000 --- a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/ApplicationElasticsearchBackup/config.xml +++ /dev/null @@ -1,50 +0,0 @@ - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - false - - - - pipelines/backup/es-backup/Jenkinsfile - false - - - false - diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/ApplicationElasticsearchRestore/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/ApplicationElasticsearchRestore/config.xml deleted file mode 100644 index 71f6ef2c8c..0000000000 --- a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/ApplicationElasticsearchRestore/config.xml +++ /dev/null @@ -1,50 +0,0 @@ - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - false - - - - pipelines/backup/es-restore/Jenkinsfile - false - - - false - diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/Bootstrap/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/Bootstrap/config.xml deleted file mode 100644 index 3982ea310d..0000000000 --- a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/Bootstrap/config.xml +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - hosts - <font color=teal size=2>enter the host name to be bootstrapped.</font> - core - false - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - false - - - - pipelines/bootstrap/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/CassandraBackup/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/CassandraBackup/config.xml deleted file mode 100644 index 7bbf214a5a..0000000000 --- a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/CassandraBackup/config.xml +++ /dev/null @@ -1,50 +0,0 @@ - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - false - - - - pipelines/backup/cassandra-backup/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/LoggerElasticSearchBackup/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/LoggerElasticSearchBackup/config.xml deleted file mode 100644 index 1b26809438..0000000000 --- a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/LoggerElasticSearchBackup/config.xml +++ /dev/null @@ -1,50 +0,0 @@ - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - false - - - - pipelines/backup/logger-es-backup/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/LoggerElasticSearchRestore/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/LoggerElasticSearchRestore/config.xml deleted file mode 100644 index 155b4a90aa..0000000000 --- a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/LoggerElasticSearchRestore/config.xml +++ /dev/null @@ -1,50 +0,0 @@ - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - false - - - - pipelines/backup/logger-es-restore/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/PostgresqlBackup/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/PostgresqlBackup/config.xml deleted file mode 100644 index faa94b00f2..0000000000 --- a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/PostgresqlBackup/config.xml +++ /dev/null @@ -1,51 +0,0 @@ - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - pipelines/backup/postgresql-backup/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/PostgresqlRestore/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/PostgresqlRestore/config.xml deleted file mode 100644 index 9ad72ff266..0000000000 --- a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/PostgresqlRestore/config.xml +++ /dev/null @@ -1,51 +0,0 @@ - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - pipelines/backup/postgresql-restore/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/PrometheusBackup/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/PrometheusBackup/config.xml deleted file mode 100644 index 8e757f82b7..0000000000 --- a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/PrometheusBackup/config.xml +++ /dev/null @@ -1,50 +0,0 @@ - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - false - - - - pipelines/backup/prometheus-backup/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/SwarmBootstrap/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/SwarmBootstrap/config.xml deleted file mode 100644 index cec50282af..0000000000 --- a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/Core/jobs/SwarmBootstrap/config.xml +++ /dev/null @@ -1,50 +0,0 @@ - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - false - - - - pipelines/bootstrap-swarm/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/config.xml deleted file mode 100644 index 68477b8ac7..0000000000 --- a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/config.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - - - - - - All - false - false - - - - - - - - false - - - - \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/AnalyticsAPILogs/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/AnalyticsAPILogs/config.xml deleted file mode 100644 index c89f254ee1..0000000000 --- a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/AnalyticsAPILogs/config.xml +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - 2 - - - https://github.com/ekstep/sunbird-devops.git - 64bdfe13-cc30-4864-bd3c-4e89be89fc9d - - - - - DO-380 - - - false - - - - pipelines/analytics-api-logs/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/Bootstrap/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/Bootstrap/config.xml deleted file mode 100644 index df91bff4cc..0000000000 --- a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/Bootstrap/config.xml +++ /dev/null @@ -1,60 +0,0 @@ - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - hosts - <font color=teal size=2>enter the host name to be bootstrapped.</font> - dp - false - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-data-pipeline.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - false - - - - pipelines/bootstrap/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/CassandraBackup/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/CassandraBackup/config.xml deleted file mode 100644 index c861a2c2ad..0000000000 --- a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/CassandraBackup/config.xml +++ /dev/null @@ -1,74 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - remote - <font color=teal size=2>enter the host name.</font> - cassandra - false - - - data_dir - <font color=teal size=2>enter cassandra data directory.</font> - /data/cassandra/data - false - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-data-pipeline.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - pipelines/backup/cassandra-backup/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/CassandraRestore/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/CassandraRestore/config.xml deleted file mode 100644 index b4c7ea72a1..0000000000 --- a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/CassandraRestore/config.xml +++ /dev/null @@ -1,74 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - remote - <font color=teal size=2>enter the host name.</font> - cassandra - false - - - artifact_version - <font color=teal size=2>Specify the artifact version to restore</font> - - false - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-data-pipeline.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - pipelines/backup/cassandra-restore/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/ElasticsearchBackup/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/ElasticsearchBackup/config.xml deleted file mode 100644 index ec3ce736a9..0000000000 --- a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/ElasticsearchBackup/config.xml +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - remote - <font color=teal size=2>enter any one host name or ip if it is a cluster</font> - - false - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-data-pipeline.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - false - - - - pipelines/backup/elasticsearch-backup/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/ElasticsearchRestore/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/ElasticsearchRestore/config.xml deleted file mode 100644 index 311d76650a..0000000000 --- a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/ElasticsearchRestore/config.xml +++ /dev/null @@ -1,75 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - host - <font color=teal size=2>enter any one host name or ip if it is a cluster</font> - - false - - - SNAPSHOT_NUMBER - <font color=teal size=2>Enter Snapshot number to restore. -curl command to get snapshot number: -curl http://localhost:9200/_snapshot/azurebackup/_all, Parse the json and get the valid snapshot number to restore</font> - - false - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-data-pipeline.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - false - - - - pipelines/backup/elasticsearch-restore/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/InfluxDBBackup/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/InfluxDBBackup/config.xml deleted file mode 100644 index db7d1a4a84..0000000000 --- a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/InfluxDBBackup/config.xml +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - 2 - - - https://github.com/project-sunbird/sunbird-data-pipeline.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - false - - - - pipelines/backup/influxdb-backup/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/PostgresqlBackup/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/PostgresqlBackup/config.xml deleted file mode 100644 index 018f24c55b..0000000000 --- a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/PostgresqlBackup/config.xml +++ /dev/null @@ -1,51 +0,0 @@ - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - 2 - - - https://github.com/project-sunbird/sunbird-data-pipeline.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - pipelines/backup/postgresql-backup/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/PostgresqlRestore/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/PostgresqlRestore/config.xml deleted file mode 100644 index 6516c5daf1..0000000000 --- a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/DataPipeline/jobs/PostgresqlRestore/config.xml +++ /dev/null @@ -1,51 +0,0 @@ - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - 2 - - - https://github.com/project-sunbird/sunbird-data-pipeline.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - pipelines/backup/postgresql-restore/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/KnowledgePlatform/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/KnowledgePlatform/config.xml deleted file mode 100644 index 6fe3ca0b64..0000000000 --- a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/KnowledgePlatform/config.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - - - - - - All - false - false - - - - - - - - false - - - - \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/KnowledgePlatform/jobs/Bootstrap/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/KnowledgePlatform/jobs/Bootstrap/config.xml deleted file mode 100644 index 0e32e6c07a..0000000000 --- a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/KnowledgePlatform/jobs/Bootstrap/config.xml +++ /dev/null @@ -1,60 +0,0 @@ - - - - - false - - - - -1 - -1 - -1 - 5 - - - - false - false - - - - - hosts - <font color=teal size=2>enter the host name to be bootstrapped.</font> - lp - false - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-learning-platform.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - pipelines/bootstrap/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/KnowledgePlatform/jobs/CassandraBackup/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/KnowledgePlatform/jobs/CassandraBackup/config.xml deleted file mode 100644 index f55022a82f..0000000000 --- a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/KnowledgePlatform/jobs/CassandraBackup/config.xml +++ /dev/null @@ -1,67 +0,0 @@ - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - remote - <font color=teal size=2>enter the host name.</font> - cassandra - false - - - data_dir - <font color=teal size=2>enter cassandra data directory.</font> - /data/cassandra/data - false - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-learning-platform.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - pipelines/backup/cassandra-backup/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/KnowledgePlatform/jobs/CassandraRestore/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/KnowledgePlatform/jobs/CassandraRestore/config.xml deleted file mode 100644 index 2e1f614b7d..0000000000 --- a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/KnowledgePlatform/jobs/CassandraRestore/config.xml +++ /dev/null @@ -1,67 +0,0 @@ - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - remote - <font color=teal size=2>enter the host name.</font> - cassandra - false - - - artifact_version - <font color=teal size=2>Specify the artifact version to restore</font> - - false - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-learning-platform.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - pipelines/backup/cassandra-restore/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/KnowledgePlatform/jobs/ElasticsearchBackup/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/KnowledgePlatform/jobs/ElasticsearchBackup/config.xml deleted file mode 100644 index 6a596bd083..0000000000 --- a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/KnowledgePlatform/jobs/ElasticsearchBackup/config.xml +++ /dev/null @@ -1,53 +0,0 @@ - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - remote - <font color=teal size=2>enter any one host name or ip if it is a cluster</font> - - false - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-learning-platform.git - - - - - ${public_repo_branch} - - - false - - - - pipelines/backup/elasticsearch/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/KnowledgePlatform/jobs/ElasticsearchRestore/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/KnowledgePlatform/jobs/ElasticsearchRestore/config.xml deleted file mode 100644 index 76be767bbb..0000000000 --- a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/KnowledgePlatform/jobs/ElasticsearchRestore/config.xml +++ /dev/null @@ -1,61 +0,0 @@ - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - host - <font color=teal size=2>enter any one host name or ip if it is a cluster</font> - - false - - - SNAPSHOT_NUMBER - <font color=teal size=2>Enter Snapshot number to restore. -curl command to get snapshot number: -curl http://localhost:9200/_snapshot/azurebackup/_all, Parse the json and get the valid snapshot number to restore</font> - - false - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-learning-platform.git - - - - - ${public_repo_branch} - - - false - - - - pipelines/backup/elasticsearch-restore/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/KnowledgePlatform/jobs/Neo4jBackup/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/KnowledgePlatform/jobs/Neo4jBackup/config.xml deleted file mode 100644 index 08d200a985..0000000000 --- a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/KnowledgePlatform/jobs/Neo4jBackup/config.xml +++ /dev/null @@ -1,43 +0,0 @@ - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - 2 - - - https://github.com/project-sunbird/sunbird-learning-platform.git - - - - - ${public_repo_branch} - - - false - - - - pipelines/backup/neo4j/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/KnowledgePlatform/jobs/Neo4jRestore/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/KnowledgePlatform/jobs/Neo4jRestore/config.xml deleted file mode 100644 index 79b8319556..0000000000 --- a/deploy/jenkins/jobs/OpsAdministration/jobs/staging/jobs/KnowledgePlatform/jobs/Neo4jRestore/config.xml +++ /dev/null @@ -1,85 +0,0 @@ - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - neo4j_restore_gzip_file_name - - - false - - - neo4j_restore_azure_storage_account_name - - - false - - - neo4j_restore_azure_storage_access_key - - - false - - - neo4j_restore_azure_container_name - - neo4j-backup - false - - - hosts - - learning-neo4j-node1 - false - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-learning-platform.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - pipelines/backup/neo4j-restore/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/config.xml b/deploy/jenkins/jobs/Provision/jobs/staging/config.xml deleted file mode 100644 index 6fe3ca0b64..0000000000 --- a/deploy/jenkins/jobs/Provision/jobs/staging/config.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - - - - - - All - false - false - - - - - - - - false - - - - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/config.xml b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/config.xml deleted file mode 100644 index 68477b8ac7..0000000000 --- a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/config.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - - - - - - All - false - false - - - - - - - - false - - - - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/Cassandra/config.xml b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/Cassandra/config.xml deleted file mode 100644 index ca3d7874c7..0000000000 --- a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/Cassandra/config.xml +++ /dev/null @@ -1,50 +0,0 @@ - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - false - - - - pipelines/provision/cassandra/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/JenkinsSlave/config.xml b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/JenkinsSlave/config.xml deleted file mode 100644 index 4e632379e4..0000000000 --- a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/JenkinsSlave/config.xml +++ /dev/null @@ -1,70 +0,0 @@ - - - - <font color=red size=2><b>This jobs is currently disabled as it's not being used.</b></font> - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - jenkins_host - <font color=black size=2><b>Provide the IP of Jenkins host.</b></font> - - false - - - - - 0 - 0 - - false - project - false - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - pipelines/provision/jenkins-slave/Jenkinsfile - false - - - true - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/Kafka/config.xml b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/Kafka/config.xml deleted file mode 100644 index d78cd9a248..0000000000 --- a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/Kafka/config.xml +++ /dev/null @@ -1,58 +0,0 @@ - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - false - project - false - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops.git - - - - - {public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - pipelines/provision/kafka/Jenkinsfile - false - - - true - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/Keycloak/config.xml b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/Keycloak/config.xml deleted file mode 100644 index fcc171f960..0000000000 --- a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/Keycloak/config.xml +++ /dev/null @@ -1,65 +0,0 @@ - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - false - project - false - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - true - false - - 0 - false - - - - pipelines/provision/keycloak/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/LogElasticSearch/config.xml b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/LogElasticSearch/config.xml deleted file mode 100644 index 31388c0319..0000000000 --- a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/LogElasticSearch/config.xml +++ /dev/null @@ -1,50 +0,0 @@ - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - false - - - - pipelines/provision/log-es/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/Postgres/config.xml b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/Postgres/config.xml deleted file mode 100644 index 3b3747b527..0000000000 --- a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/Postgres/config.xml +++ /dev/null @@ -1,50 +0,0 @@ - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - false - - - - pipelines/provision/postgres/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/PostgresDbUpdate/config.xml b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/PostgresDbUpdate/config.xml deleted file mode 100644 index 48928e45f2..0000000000 --- a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/PostgresDbUpdate/config.xml +++ /dev/null @@ -1,50 +0,0 @@ - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - false - - - - pipelines/provision/postgres-db-update/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/Registry/config.xml b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/Registry/config.xml deleted file mode 100644 index 0d74bd2f96..0000000000 --- a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/Registry/config.xml +++ /dev/null @@ -1,58 +0,0 @@ - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - false - project - false - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - pipelines/provision/registry/Jenkinsfile - false - - - true - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/Secor/config.xml b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/Secor/config.xml deleted file mode 100644 index cf74052977..0000000000 --- a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/Core/jobs/Secor/config.xml +++ /dev/null @@ -1,58 +0,0 @@ - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - false - project - false - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - pipelines/provision/secor/Jenkinsfile - false - - - true - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/config.xml b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/config.xml deleted file mode 100644 index 68477b8ac7..0000000000 --- a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/config.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - - - - - - All - false - false - - - - - - - - false - - - - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/AnalyticsAPI/config.xml b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/AnalyticsAPI/config.xml deleted file mode 100644 index daeb780bbd..0000000000 --- a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/AnalyticsAPI/config.xml +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - 2 - - - https://github.com/project-sunbird/sunbird-data-pipeline.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - false - - - - pipelines/provision/analytics-api/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/AnalyticsSecor/config.xml b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/AnalyticsSecor/config.xml deleted file mode 100644 index a0de40ab90..0000000000 --- a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/AnalyticsSecor/config.xml +++ /dev/null @@ -1,56 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - false - false - - - - - 2 - - - https://github.com/project-sunbird/sunbird-data-pipeline.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - false - - - - pipelines/provision/secor/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/AnalyticsSpark/config.xml b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/AnalyticsSpark/config.xml deleted file mode 100644 index 9aea1868e4..0000000000 --- a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/AnalyticsSpark/config.xml +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - 2 - - - https://github.com/project-sunbird/sunbird-data-pipeline.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - false - - - - pipelines/provision/spark/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/Cassandra/config.xml b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/Cassandra/config.xml deleted file mode 100644 index abfcd287fa..0000000000 --- a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/Cassandra/config.xml +++ /dev/null @@ -1,50 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - 2 - - - https://github.com/project-sunbird/sunbird-data-pipeline.git - - - - - ${public_repo_branch} - - - false - - - - pipelines/provision/cassandra/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/InfluxDB/config.xml b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/InfluxDB/config.xml deleted file mode 100644 index d3dcbb10b8..0000000000 --- a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/InfluxDB/config.xml +++ /dev/null @@ -1,56 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - false - false - - - - - 2 - - - https://github.com/project-sunbird/sunbird-data-pipeline.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - false - - - - pipelines/provision/influxdb/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/Kafka/config.xml b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/Kafka/config.xml deleted file mode 100644 index 6d92ec2f44..0000000000 --- a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/Kafka/config.xml +++ /dev/null @@ -1,65 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - false - project - false - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-data-pipeline.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - pipelines/provision/kafka/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/Kibana/config.xml b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/Kibana/config.xml deleted file mode 100644 index 38316772f0..0000000000 --- a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/Kibana/config.xml +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - 2 - - - https://github.com/project-sunbird/sunbird-data-pipeline.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - false - - - - pipelines/provision/kibana/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/Postgres/config.xml b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/Postgres/config.xml deleted file mode 100644 index 33e61fb3d7..0000000000 --- a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/Postgres/config.xml +++ /dev/null @@ -1,56 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - false - false - - - - - 2 - - - https://github.com/project-sunbird/sunbird-data-pipeline.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - false - - - - pipelines/provision/postgres-lpa/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/TelemetrySearch/config.xml b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/TelemetrySearch/config.xml deleted file mode 100644 index b51b86935f..0000000000 --- a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/TelemetrySearch/config.xml +++ /dev/null @@ -1,65 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - false - project - false - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-data-pipeline.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - pipelines/provision/telemetry_elasticsearch/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/Yarn/config.xml b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/Yarn/config.xml deleted file mode 100644 index 9bf7797e3c..0000000000 --- a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/Yarn/config.xml +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - 2 - - - https://github.com/project-sunbird/sunbird-data-pipeline - - - - - ${public_repo_branch} - - - false - - - - true - false - - false - - - - pipelines/provision/yarn/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/Zookeeper/config.xml b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/Zookeeper/config.xml deleted file mode 100644 index a8b9cceb7f..0000000000 --- a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/DataPipeline/jobs/Zookeeper/config.xml +++ /dev/null @@ -1,64 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - false - false - - - - false - project - false - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-data-pipeline.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - pipelines/provision/zookeeper/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/config.xml b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/config.xml deleted file mode 100644 index 68477b8ac7..0000000000 --- a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/config.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - - - - - - All - false - false - - - - - - - - false - - - - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Cassandra/config.xml b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Cassandra/config.xml deleted file mode 100644 index a9a247e8d2..0000000000 --- a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Cassandra/config.xml +++ /dev/null @@ -1,61 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-learning-platform.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - pipelines/provision/cassandra/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/CompositeSearch/config.xml b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/CompositeSearch/config.xml deleted file mode 100644 index 360f4f174a..0000000000 --- a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/CompositeSearch/config.xml +++ /dev/null @@ -1,61 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-learning-platform.git - - - - - ${public_repo_branch} - - - false - - - - true - true - - 0 - false - - - - pipelines/provision/composite-search/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Kafka/config.xml b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Kafka/config.xml deleted file mode 100644 index 93354ef4c3..0000000000 --- a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Kafka/config.xml +++ /dev/null @@ -1,61 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-learning-platform.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - pipelines/provision/kafka/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Learning/config.xml b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Learning/config.xml deleted file mode 100644 index bb374f354d..0000000000 --- a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Learning/config.xml +++ /dev/null @@ -1,68 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - false - project - false - - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-learning-platform.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - pipelines/provision/learning/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Neo4j/config.xml b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Neo4j/config.xml deleted file mode 100644 index 68a62ccf6d..0000000000 --- a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Neo4j/config.xml +++ /dev/null @@ -1,61 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-learning-platform.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - pipelines/provision/neo4j/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Redis/config.xml b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Redis/config.xml deleted file mode 100644 index cf7e9a532d..0000000000 --- a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Redis/config.xml +++ /dev/null @@ -1,61 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-learning-platform.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - pipelines/provision/redis/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Search/config.xml b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Search/config.xml deleted file mode 100644 index 064d2fb01a..0000000000 --- a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Search/config.xml +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-learning-platform.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - false - - - - pipelines/provision/search/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Yarn/config.xml b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Yarn/config.xml deleted file mode 100644 index fe08c83f03..0000000000 --- a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Yarn/config.xml +++ /dev/null @@ -1,68 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - false - project - false - - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-learning-platform.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - pipelines/provision/yarn/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Zookeeper/config.xml b/deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Zookeeper/config.xml deleted file mode 100644 index 7c89cde9d5..0000000000 --- a/deploy/jenkins/jobs/Provision/jobs/staging/jobs/KnowledgePlatform/jobs/Zookeeper/config.xml +++ /dev/null @@ -1,61 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-learning-platform.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - pipelines/provision/zookeeper/Jenkinsfile - false - - - false - \ No newline at end of file From c0d363d679712fb462cef68ad3c813e5aa5090be Mon Sep 17 00:00:00 2001 From: msknext Date: Mon, 4 Mar 2019 06:15:45 +0000 Subject: [PATCH 1287/1345] feat: adding bower install --- deploy/jenkins/jenkins-server-setup.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/deploy/jenkins/jenkins-server-setup.sh b/deploy/jenkins/jenkins-server-setup.sh index 953f59c8b1..d1c39d64c6 100755 --- a/deploy/jenkins/jenkins-server-setup.sh +++ b/deploy/jenkins/jenkins-server-setup.sh @@ -47,6 +47,8 @@ ln -s /usr/local/lib/node-v6.1.0-linux-x64/bin/node /usr/bin/node ln -s /usr/local/lib/node-v6.1.0-linux-x64/bin/npm /usr/bin/npm npm install -g grunt-cli@1.2.0 ln -s /usr/local/lib/node-v6.1.0-linux-x64/bin/grunt /usr/bin/grunt +npm install -g bower@1.8.0 +ln -s /usr/local/lib/node-v6.1.0-linux-x64/bin/bower /usr/bin/bower echo -e "\n\e[0;32m${bold}Installating Ansible${normal}" pip install ansible==2.5.0 From e6be69e195cf2cb43cde1e3836223aaceacc7828 Mon Sep 17 00:00:00 2001 From: msknext Date: Mon, 4 Mar 2019 07:15:20 +0000 Subject: [PATCH 1288/1345] feat: adding gulp install --- deploy/jenkins/jenkins-server-setup.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/deploy/jenkins/jenkins-server-setup.sh b/deploy/jenkins/jenkins-server-setup.sh index d1c39d64c6..eb3e347b54 100755 --- a/deploy/jenkins/jenkins-server-setup.sh +++ b/deploy/jenkins/jenkins-server-setup.sh @@ -9,7 +9,7 @@ echo -e "\n\e[0;32m${bold}Installating JDK8${normal}\n" apt-get install -y openjdk-8-jdk echo -e "\n\e[0;32m${bold}Installating Jenkins${normal}" -wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add - +wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | apt-key add - echo "deb https://pkg.jenkins.io/debian-stable binary/" >> /etc/apt/sources.list sudo apt-get update sudo apt-get install jenkins -y @@ -49,6 +49,8 @@ npm install -g grunt-cli@1.2.0 ln -s /usr/local/lib/node-v6.1.0-linux-x64/bin/grunt /usr/bin/grunt npm install -g bower@1.8.0 ln -s /usr/local/lib/node-v6.1.0-linux-x64/bin/bower /usr/bin/bower +npm install -g gulp@3.9.1 +ln -s /usr/local/lib/node-v6.1.0-linux-x64/bin/gulp /usr/bin/gulp echo -e "\n\e[0;32m${bold}Installating Ansible${normal}" pip install ansible==2.5.0 From 987bf3ba5a7f1ca6a9755019c65e6bf8292bc140 Mon Sep 17 00:00:00 2001 From: G33tha Date: Mon, 4 Mar 2019 17:39:11 +0530 Subject: [PATCH 1289/1345] Create Jenkinsfile --- pipelines/upload/plugins/Jenkinsfile | 31 ++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 pipelines/upload/plugins/Jenkinsfile diff --git a/pipelines/upload/plugins/Jenkinsfile b/pipelines/upload/plugins/Jenkinsfile new file mode 100644 index 0000000000..4a02550bbd --- /dev/null +++ b/pipelines/upload/plugins/Jenkinsfile @@ -0,0 +1,31 @@ +@Library('deploy-conf') _ +node() { + try { + stage('checkout public repo') { + cleanWs() + checkout scm + } + stage('Artifact Upload') { + values = lp_dp_params() + values.put('module', 'Core') + currentWs = sh(returnStdout: true, script: 'pwd').trim() + artifact = values.artifact_name + ":" + values.artifact_version + if(params.artifact_source == "ArtifactRepo") + { + ansiblePlaybook = "${currentWs}/ansible/artifacts-upload.yml" + ansibleExtraArgs = "--extra-vars \"artifact=${artifact} artifact_path=${currentWs}/${artifact}\" --vault-password-file /var/lib/jenkins/secrets/vault-pass" + values.put('currentWs', currentWs) + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + ansible_playbook_run(values) + } + archiveArtifacts artifacts: "${artifact}", fingerprint: true, onlyIfSuccessful: true + archiveArtifacts artifacts: 'metadata.json', onlyIfSuccessful: true + currentBuild.description = "${values.artifact_version}" + } + } + catch (err) { + currentBuild.result = "FAILURE" + throw err + } +} From 812f8dc17d733029cd1b67267e82aad18f9828ce Mon Sep 17 00:00:00 2001 From: G33tha Date: Mon, 4 Mar 2019 17:40:32 +0530 Subject: [PATCH 1290/1345] Create Jenkinsfile --- pipelines/deploy/CEPlugins/Jenkinsfile | 62 ++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 pipelines/deploy/CEPlugins/Jenkinsfile diff --git a/pipelines/deploy/CEPlugins/Jenkinsfile b/pipelines/deploy/CEPlugins/Jenkinsfile new file mode 100644 index 0000000000..c1017c9cfa --- /dev/null +++ b/pipelines/deploy/CEPlugins/Jenkinsfile @@ -0,0 +1,62 @@ +@Library('deploy-conf') _ +node() { + try { + String ANSI_GREEN = "\u001B[32m" + String ANSI_NORMAL = "\u001B[0m" + String ANSI_BOLD = "\u001B[1m" + String ANSI_RED = "\u001B[31m" + String ANSI_YELLOW = "\u001B[33m" + + stage('checkout public repo') { + cleanWs() + checkout scm + } + + ansiColor('xterm') { + values = lp_dp_params() + values.put('module', 'Core') + stage('get artifact') { + currentWs = sh(returnStdout: true, script: 'pwd').trim() + artifact = values.artifact_name + ":" + values.artifact_version + values.put('currentWs', currentWs) + if (params.artifact_source == "ArtifactRepo") { + println(ANSI_BOLD + ANSI_YELLOW + '''\ + Option chosen is ArtifactRepo, ignoring any previously copied artifacts and new artifacts will be downloaded from remote source + '''.stripIndent().replace("\n", " ") + ANSI_NORMAL) + ansiblePlaybook = "${currentWs}/ansible/artifacts-download.yml" + ansibleExtraArgs = """\ + --extra-vars "artifact=${artifact} + artifact_path=${currentWs}/${artifact}" + --vault-password-file /var/lib/jenkins/secrets/vault-pass + """.stripIndent().replace("\n", " ") + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + ansible_playbook_run(values) + } + else{ + println(ANSI_BOLD + ANSI_YELLOW + '''\ + Option chosen is JenkinsJob, using the artifacts copied + '''.stripIndent().replace("\n", " ") + ANSI_NORMAL) + } + } + stage('deploy artifact'){ + withCredentials([usernamePassword(credentialsId: 'az-blob-credentials', passwordVariable: 'azure_account_key', usernameVariable: 'azure_account_name')]) { + sh """ + unzip ${artifact} + unzip content-plugins.zip + sed -i -e 's/,"Bearer eyJhbGsg"//g' content-plugins/org.ekstep.assetbrowser-1.0/editor/assetbrowserapp.js + sed -i -e 's/,"Bearer eysg"//g' content-plugins/org.ekstep.assetbrowser-1.0/editor/plugin.js + chmod a+x content-plugins/az_copy.sh + bash -x content-plugins/az_copy.sh ${params.container_name} + """ + } + archiveArtifacts artifacts: "${artifact}", fingerprint: true, onlyIfSuccessful: true + archiveArtifacts artifacts: 'metadata.json', onlyIfSuccessful: true + currentBuild.description = "${values.artifact_version}" + } + } + } + catch (err) { + throw err + } +} From 0dc395904de639a19c394626aac42dd9c34dce0a Mon Sep 17 00:00:00 2001 From: G33tha Date: Mon, 4 Mar 2019 17:47:50 +0530 Subject: [PATCH 1291/1345] Create Jenkinsfile --- pipelines/deploy/CollectionEditor/Jenkinsfile | 70 +++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 pipelines/deploy/CollectionEditor/Jenkinsfile diff --git a/pipelines/deploy/CollectionEditor/Jenkinsfile b/pipelines/deploy/CollectionEditor/Jenkinsfile new file mode 100644 index 0000000000..4c7153dfde --- /dev/null +++ b/pipelines/deploy/CollectionEditor/Jenkinsfile @@ -0,0 +1,70 @@ +@Library('deploy-conf') _ +node() { + try { + String ANSI_GREEN = "\u001B[32m" + String ANSI_NORMAL = "\u001B[0m" + String ANSI_BOLD = "\u001B[1m" + String ANSI_RED = "\u001B[31m" + String ANSI_YELLOW = "\u001B[33m" + + stage('checkout public repo') { + cleanWs() + checkout scm + } + + ansiColor('xterm') { + values = lp_dp_params() + values.put('module', 'Core') + stage('get artifact') { + currentWs = sh(returnStdout: true, script: 'pwd').trim() + artifact = values.artifact_name + ":" + values.artifact_version + values.put('currentWs', currentWs) + if (params.artifact_source == "ArtifactRepo") { + println(ANSI_BOLD + ANSI_YELLOW + '''\ + Option chosen is ArtifactRepo, ignoring any previously copied artifacts and new artifacts will be downloaded from remote source + '''.stripIndent().replace("\n", " ") + ANSI_NORMAL) + ansiblePlaybook = "${currentWs}/ansible/artifacts-download.yml" + ansibleExtraArgs = """\ + --extra-vars "artifact=${artifact} + artifact_path=${currentWs}/${artifact}" + --vault-password-file /var/lib/jenkins/secrets/vault-pass + """.stripIndent().replace("\n", " ") + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + ansible_playbook_run(values) + } + else{ + println(ANSI_BOLD + ANSI_YELLOW + '''\ + Option chosen is JenkinsJob, using the artifacts copied + '''.stripIndent().replace("\n", " ") + ANSI_NORMAL) + } + } + stage('deploy artifact'){ + withCredentials([usernamePassword(credentialsId: 'az-blob-credentials', passwordVariable: 'azure_account_key', usernameVariable: 'azure_account_name')]) { + sh """ + unzip ${artifact} + unzip -o collection-editor.zip -d collection-editor + az storage blob upload-batch --destination ${params.container_name}/collection-editor --source collection-editor --account-name $azure_account_name --account-key $azure_account_key + cd collection-editor + npm config set strict-ssl false + npm install + npm install promise + gulp minifyJs # To rename the minified files + gulp copystyleImages + gulp clean + gulp injectrenamedfiles # Inject the minified files to index.html + gulp package # Package the build + az storage blob upload-batch --destination ${params.container_name}/artefacts/editor --source dist/editor --account-name $azure_account_name --account-key $azure_account_key + az storage blob upload-batch --destination ${params.container_name}/artefacts/coreplugins --source dist/coreplugins --account-name $azure_account_name --account-key $azure_account_key + """ + } + archiveArtifacts artifacts: "${artifact}", fingerprint: true, onlyIfSuccessful: true + archiveArtifacts artifacts: 'metadata.json', onlyIfSuccessful: true + currentBuild.description = "${values.artifact_version}" + } + } + } + catch (err) { + throw err + } +} From 1cc3353558108f425861ee60f7ca9e588f22acff Mon Sep 17 00:00:00 2001 From: G33tha Date: Mon, 4 Mar 2019 17:54:19 +0530 Subject: [PATCH 1292/1345] Create Jenkinsfile --- pipelines/deploy/ContentFramework/Jenkinsfile | 78 +++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 pipelines/deploy/ContentFramework/Jenkinsfile diff --git a/pipelines/deploy/ContentFramework/Jenkinsfile b/pipelines/deploy/ContentFramework/Jenkinsfile new file mode 100644 index 0000000000..edcb021aa9 --- /dev/null +++ b/pipelines/deploy/ContentFramework/Jenkinsfile @@ -0,0 +1,78 @@ +@Library('deploy-conf') _ +node() { + try { + String ANSI_GREEN = "\u001B[32m" + String ANSI_NORMAL = "\u001B[0m" + String ANSI_BOLD = "\u001B[1m" + String ANSI_RED = "\u001B[31m" + String ANSI_YELLOW = "\u001B[33m" + + stage('checkout public repo') { + cleanWs() + checkout scm + } + + ansiColor('xterm') { + values = lp_dp_params() + values.put('module', 'Core') + stage('get artifact') { + currentWs = sh(returnStdout: true, script: 'pwd').trim() + artifact = values.artifact_name + ":" + values.artifact_version + values.put('currentWs', currentWs) + if (params.artifact_source == "ArtifactRepo") { + println(ANSI_BOLD + ANSI_YELLOW + '''\ + Option chosen is ArtifactRepo, ignoring any previously copied artifacts and new artifacts will be downloaded from remote source + '''.stripIndent().replace("\n", " ") + ANSI_NORMAL) + ansiblePlaybook = "${currentWs}/ansible/artifacts-download.yml" + ansibleExtraArgs = """\ + --extra-vars "artifact=${artifact} + artifact_path=${currentWs}/${artifact}" + --vault-password-file /var/lib/jenkins/secrets/vault-pass + """.stripIndent().replace("\n", " ") + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + ansible_playbook_run(values) + } + else{ + println(ANSI_BOLD + ANSI_YELLOW + '''\ + Option chosen is JenkinsJob, using the artifacts copied + '''.stripIndent().replace("\n", " ") + ANSI_NORMAL) + } + } + stage('deploy artifact'){ + withCredentials([usernamePassword(credentialsId: 'az-blob-credentials', passwordVariable: 'azure_account_key', usernameVariable: 'azure_account_name')]) { + sh """ + unzip ${artifact} + unzip -o content-editor.zip -d content-editor + export editor_version_number=1.14.0 + sed -i -e 's/dispatcher:\"console\"/dispatcher:\"piwik\"/g' content-editor/scripts/* + sed -i 's:/api:/action:g' content-editor/scripts/base-editor.min.*.js + sed -i 's/useProxyForURL:true/useProxyForURL:false/g' content-editor/scripts/base-editor.min.*.js + sed -i -e 's/dispatcher:\"local\"/dispatcher:\"piwik\"/g' content-editor/scripts/* + az storage blob upload-batch --destination ${params.container_name}/content-editor --source content-editor --account-name $azure_account_name --account-key $azure_account_key + zip -r content-editor-artifact.zip content-editor + cd content-editor + npm install + npm install promise + gulp minifyJs + gulp copystyleImages + gulp clean + gulp injectrenamedfiles + gulp package + az storage blob upload-batch --destination ${params.container_name}/artefacts/editor --source dist/editor --account-name $azure_account_name --account-key $azure_account_key + az storage blob upload-batch --destination ${params.container_name}/artefacts/coreplugins --source dist/coreplugins --account-name $azure_account_name --account-key $azure_account_key + rm -rf node_modules + cd .. + zip -r content-editor.zip content-editor + """ + } + archiveArtifacts artifacts: "${artifact}", fingerprint: true, onlyIfSuccessful: true + archiveArtifacts artifacts: 'metadata.json', onlyIfSuccessful: true + currentBuild.description = "${values.artifact_version}" + } + } + } + catch (err) { + throw err + } +} From a5c7d1464d08ebd412f4de64a208b5c912b71d65 Mon Sep 17 00:00:00 2001 From: G33tha Date: Mon, 4 Mar 2019 18:01:04 +0530 Subject: [PATCH 1293/1345] Create Jenkinsfile --- .../deploy/ContentRendererPreview/Jenkinsfile | 64 +++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 pipelines/deploy/ContentRendererPreview/Jenkinsfile diff --git a/pipelines/deploy/ContentRendererPreview/Jenkinsfile b/pipelines/deploy/ContentRendererPreview/Jenkinsfile new file mode 100644 index 0000000000..c6c7eeba62 --- /dev/null +++ b/pipelines/deploy/ContentRendererPreview/Jenkinsfile @@ -0,0 +1,64 @@ +@Library('deploy-conf') _ +node() { + try { + String ANSI_GREEN = "\u001B[32m" + String ANSI_NORMAL = "\u001B[0m" + String ANSI_BOLD = "\u001B[1m" + String ANSI_RED = "\u001B[31m" + String ANSI_YELLOW = "\u001B[33m" + + stage('checkout public repo') { + cleanWs() + checkout scm + } + + ansiColor('xterm') { + values = lp_dp_params() + values.put('module', 'Core') + stage('get artifact') { + currentWs = sh(returnStdout: true, script: 'pwd').trim() + artifact = values.artifact_name + ":" + values.artifact_version + values.put('currentWs', currentWs) + if (params.artifact_source == "ArtifactRepo") { + println(ANSI_BOLD + ANSI_YELLOW + '''\ + Option chosen is ArtifactRepo, ignoring any previously copied artifacts and new artifacts will be downloaded from remote source + '''.stripIndent().replace("\n", " ") + ANSI_NORMAL) + ansiblePlaybook = "${currentWs}/ansible/artifacts-download.yml" + ansibleExtraArgs = """\ + --extra-vars "artifact=${artifact} + artifact_path=${currentWs}/${artifact}" + --vault-password-file /var/lib/jenkins/secrets/vault-pass + """.stripIndent().replace("\n", " ") + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + ansible_playbook_run(values) + } + else{ + println(ANSI_BOLD + ANSI_YELLOW + '''\ + Option chosen is JenkinsJob, using the artifacts copied + '''.stripIndent().replace("\n", " ") + ANSI_NORMAL) + } + } + stage('deploy artifact'){ + player_version_number = values.artifact_version + withCredentials([usernamePassword(credentialsId: 'az-blob-credentials', passwordVariable: 'azure_account_key', usernameVariable: 'azure_account_name')]) { + sh """ + unzip ${artifact} + #cd player + unzip -o preview.zip -d preview + mv preview.zip content-player-${player_version_number}.zip + az storage blob upload-batch --destination ${params.container_name}/v3/preview --source preview --account-name $azure_account_name --account-key $azure_account_key + az storage blob upload --container-name ${params.container_name} --file content-player-${player_version_number}.zip --name artefacts/content-player/content-player-${player_version_number}.zip --account-name $azure_account_name --account-key $azure_account_key + + """ + } + archiveArtifacts artifacts: "${artifact}", fingerprint: true, onlyIfSuccessful: true + archiveArtifacts artifacts: 'metadata.json', onlyIfSuccessful: true + currentBuild.description = "${values.artifact_version}" + } + } + } + catch (err) { + throw err + } +} From 133f20e5db44cddd574cd81d0b4e97032a831f93 Mon Sep 17 00:00:00 2001 From: G33tha Date: Mon, 4 Mar 2019 18:05:53 +0530 Subject: [PATCH 1294/1345] Create Jenkinsfile --- pipelines/deploy/GenericEditor/Jenkinsfile | 66 ++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 pipelines/deploy/GenericEditor/Jenkinsfile diff --git a/pipelines/deploy/GenericEditor/Jenkinsfile b/pipelines/deploy/GenericEditor/Jenkinsfile new file mode 100644 index 0000000000..02a70a87d8 --- /dev/null +++ b/pipelines/deploy/GenericEditor/Jenkinsfile @@ -0,0 +1,66 @@ +@Library('deploy-conf') _ +node() { + try { + String ANSI_GREEN = "\u001B[32m" + String ANSI_NORMAL = "\u001B[0m" + String ANSI_BOLD = "\u001B[1m" + String ANSI_RED = "\u001B[31m" + String ANSI_YELLOW = "\u001B[33m" + + stage('checkout public repo') { + cleanWs() + checkout scm + } + + ansiColor('xterm') { + values = lp_dp_params() + values.put('module', 'Core') + stage('get artifact') { + currentWs = sh(returnStdout: true, script: 'pwd').trim() + artifact = values.artifact_name + ":" + values.artifact_version + values.put('currentWs', currentWs) + if (params.artifact_source == "ArtifactRepo") { + println(ANSI_BOLD + ANSI_YELLOW + '''\ + Option chosen is ArtifactRepo, ignoring any previously copied artifacts and new artifacts will be downloaded from remote source + '''.stripIndent().replace("\n", " ") + ANSI_NORMAL) + ansiblePlaybook = "${currentWs}/ansible/artifacts-download.yml" + ansibleExtraArgs = """\ + --extra-vars "artifact=${artifact} + artifact_path=${currentWs}/${artifact}" + --vault-password-file /var/lib/jenkins/secrets/vault-pass + """.stripIndent().replace("\n", " ") + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + ansible_playbook_run(values) + } + else{ + println(ANSI_BOLD + ANSI_YELLOW + '''\ + Option chosen is JenkinsJob, using the artifacts copied + '''.stripIndent().replace("\n", " ") + ANSI_NORMAL) + } + } + stage('deploy artifact'){ + withCredentials([usernamePassword(credentialsId: 'az-blob-credentials', passwordVariable: 'azure_account_key', usernameVariable: 'azure_account_name')]) { + sh """ + unzip ${artifact} + unzip -o generic-editor.zip -d generic-editor + az storage blob upload-batch --destination ${params.container_name}/generic-editor --source generic-editor --account-name $azure_account_name --account-key $azure_account_key + cd generic-editor + npm config set strict-ssl false + npm install + npm install promise + gulp package + az storage blob upload-batch --destination ${params.container_name}/artefacts/editor --source dist/editor --account-name $azure_account_name --account-key $azure_account_key + az storage blob upload-batch --destination ${params.container_name}/artefacts/coreplugins --source dist/coreplugins --account-name $azure_account_name --account-key $azure_account_key + """ + } + archiveArtifacts artifacts: "${artifact}", fingerprint: true, onlyIfSuccessful: true + archiveArtifacts artifacts: 'metadata.json', onlyIfSuccessful: true + currentBuild.description = "${values.artifact_version}" + } + } + } + catch (err) { + throw err + } +} From 1a83e9ebe672e3e6e3854a236edcb5b530d612ca Mon Sep 17 00:00:00 2001 From: G33tha Date: Tue, 5 Mar 2019 13:20:22 +0530 Subject: [PATCH 1295/1345] Update Jenkinsfile --- pipelines/deploy/CEPlugins/Jenkinsfile | 2 -- 1 file changed, 2 deletions(-) diff --git a/pipelines/deploy/CEPlugins/Jenkinsfile b/pipelines/deploy/CEPlugins/Jenkinsfile index c1017c9cfa..9c8b575c56 100644 --- a/pipelines/deploy/CEPlugins/Jenkinsfile +++ b/pipelines/deploy/CEPlugins/Jenkinsfile @@ -44,8 +44,6 @@ node() { sh """ unzip ${artifact} unzip content-plugins.zip - sed -i -e 's/,"Bearer eyJhbGsg"//g' content-plugins/org.ekstep.assetbrowser-1.0/editor/assetbrowserapp.js - sed -i -e 's/,"Bearer eysg"//g' content-plugins/org.ekstep.assetbrowser-1.0/editor/plugin.js chmod a+x content-plugins/az_copy.sh bash -x content-plugins/az_copy.sh ${params.container_name} """ From 16c18fe9f7c0464b8ba4c4f1ef76744672f12584 Mon Sep 17 00:00:00 2001 From: G33tha Date: Tue, 26 Feb 2019 12:22:56 +0530 Subject: [PATCH 1296/1345] Update main.yml --- ansible/roles/stack-sunbird/defaults/main.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ansible/roles/stack-sunbird/defaults/main.yml b/ansible/roles/stack-sunbird/defaults/main.yml index c7c70f078c..856f6ccad8 100644 --- a/ansible/roles/stack-sunbird/defaults/main.yml +++ b/ansible/roles/stack-sunbird/defaults/main.yml @@ -91,3 +91,6 @@ sunbird_time_zone: "Asia/Kolkata" # Content-service sunbird_content_service_log_level: info sunbird_response_cache_ttl: 180 + +#learner +sunbird_time_zone: "Asia/Kolkata" From 453fc7c600397feff08abcde5f57289d57ed9f38 Mon Sep 17 00:00:00 2001 From: anuthanarayanmn <36470137+anuthaharinimn@users.noreply.github.com> Date: Wed, 27 Feb 2019 15:48:03 +0530 Subject: [PATCH 1297/1345] Issue #00 fix: wait for prometheus to stop (#293) --- ansible/roles/prometheus-backup/tasks/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/prometheus-backup/tasks/main.yml b/ansible/roles/prometheus-backup/tasks/main.yml index 274c23d0cc..9a73453500 100644 --- a/ansible/roles/prometheus-backup/tasks/main.yml +++ b/ansible/roles/prometheus-backup/tasks/main.yml @@ -1,5 +1,5 @@ - name: ensure prometheus is stopped before backup - shell: "docker service scale monitor_prometheus=0" + shell: "docker service scale monitor_prometheus=0" && sleep 10 delegate_to: "{{groups['swarm-bootstrap-manager'][0]}}" - name: Starting Prometheus backup From ec86a4e538853fc28b99fb69b1cc495ac7089d14 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Wed, 27 Feb 2019 19:53:04 +0530 Subject: [PATCH 1298/1345] Issue #000 feat: Updating the service stack for 'with-registry-auth' --- ansible/roles/stack-sunbird/tasks/telemetry_service.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/stack-sunbird/tasks/telemetry_service.yml b/ansible/roles/stack-sunbird/tasks/telemetry_service.yml index 4137162093..2fec63d0cf 100644 --- a/ansible/roles/stack-sunbird/tasks/telemetry_service.yml +++ b/ansible/roles/stack-sunbird/tasks/telemetry_service.yml @@ -4,6 +4,6 @@ ignore_errors: yes - name: Deploy telemetry service - shell: "docker service create --with-registry-auth --replicas {{ telemetry_replicas }} -p 9001:9001 --name telemetry-service --hostname telemetry-service --reserve-memory {{ telemetry_reservation_memory }} --limit-memory {{ telemetry_limit_memory }} --network application_default --env-file /home/deployer/env/sunbird_telemetry-service.env {{hub_org}}/{{image_name}}:{{image_tag}}" + shell: "docker service create --replicas {{ telemetry_replicas }} -p 9001:9001 --name telemetry-service --hostname telemetry-service --reserve-memory {{ telemetry_reservation_memory }} --limit-memory {{ telemetry_limit_memory }} --network application_default --env-file /home/deployer/env/sunbird_telemetry-service.env --with-registry-auth {{hub_org}}/{{image_name}}:{{image_tag}}" args: chdir: /home/deployer/stack From 4e3988a17f85b4d827feb991085c8ee1485149db Mon Sep 17 00:00:00 2001 From: Santhosh Gandham Date: Thu, 28 Feb 2019 12:26:23 +0530 Subject: [PATCH 1299/1345] Update logstash config --- .../stack-sunbird/templates/telemetry-logstash-datapipeline.conf | 1 + 1 file changed, 1 insertion(+) diff --git a/ansible/roles/stack-sunbird/templates/telemetry-logstash-datapipeline.conf b/ansible/roles/stack-sunbird/templates/telemetry-logstash-datapipeline.conf index 12d8707c8a..b5ab536fa4 100644 --- a/ansible/roles/stack-sunbird/templates/telemetry-logstash-datapipeline.conf +++ b/ansible/roles/stack-sunbird/templates/telemetry-logstash-datapipeline.conf @@ -5,6 +5,7 @@ input { codec => "json" topics => ["{{sunbird_telemetry_kafka_topic}}"] retry_backoff_ms => 180000 + max_partition_fetch_bytes => 5242880 } } output { From 3201e4f65f24ba59123221ebf4d41e3a7a94ad94 Mon Sep 17 00:00:00 2001 From: Santhosh Gandham Date: Thu, 28 Feb 2019 12:47:55 +0530 Subject: [PATCH 1300/1345] updated logstash --- .../templates/telemetry-logstash-datapipeline.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/stack-sunbird/templates/telemetry-logstash-datapipeline.conf b/ansible/roles/stack-sunbird/templates/telemetry-logstash-datapipeline.conf index b5ab536fa4..e658dcf0f9 100644 --- a/ansible/roles/stack-sunbird/templates/telemetry-logstash-datapipeline.conf +++ b/ansible/roles/stack-sunbird/templates/telemetry-logstash-datapipeline.conf @@ -5,7 +5,7 @@ input { codec => "json" topics => ["{{sunbird_telemetry_kafka_topic}}"] retry_backoff_ms => 180000 - max_partition_fetch_bytes => 5242880 + max_partition_fetch_bytes => "5242880" } } output { From aad47175cce3c3e8298eb220c9cf6e36f7ee6c00 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Fri, 1 Mar 2019 00:54:59 +0530 Subject: [PATCH 1301/1345] Issue #000 feat: Adding max kafka partition size for telemetry logstash --- ansible/roles/stack-sunbird/defaults/main.yml | 3 +++ .../templates/telemetry-logstash-datapipeline.conf | 1 + 2 files changed, 4 insertions(+) diff --git a/ansible/roles/stack-sunbird/defaults/main.yml b/ansible/roles/stack-sunbird/defaults/main.yml index 856f6ccad8..8accbbc5e6 100644 --- a/ansible/roles/stack-sunbird/defaults/main.yml +++ b/ansible/roles/stack-sunbird/defaults/main.yml @@ -94,3 +94,6 @@ sunbird_response_cache_ttl: 180 #learner sunbird_time_zone: "Asia/Kolkata" + +# Telemetry-logstash-datapipline +max_kafka_message_size: "5242880" diff --git a/ansible/roles/stack-sunbird/templates/telemetry-logstash-datapipeline.conf b/ansible/roles/stack-sunbird/templates/telemetry-logstash-datapipeline.conf index e658dcf0f9..e2e035ad0b 100644 --- a/ansible/roles/stack-sunbird/templates/telemetry-logstash-datapipeline.conf +++ b/ansible/roles/stack-sunbird/templates/telemetry-logstash-datapipeline.conf @@ -13,5 +13,6 @@ output { codec => json topic_id => "{{sunbird_data_pipeline_kafka_topic}}" bootstrap_servers => "{{sunbird_data_pipeline_kafka_servers}}" + max_request_size => "{{max_kafka_message_size}}" } } From f945604d0d8f47b168b1bbd41731394904f085e7 Mon Sep 17 00:00:00 2001 From: harshavardhnc Date: Fri, 1 Mar 2019 10:46:27 +0530 Subject: [PATCH 1302/1345] Issue #00 fix: wait for prometheus stop before backup --- ansible/roles/prometheus-backup/tasks/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/prometheus-backup/tasks/main.yml b/ansible/roles/prometheus-backup/tasks/main.yml index 9a73453500..1e7e9abb4b 100644 --- a/ansible/roles/prometheus-backup/tasks/main.yml +++ b/ansible/roles/prometheus-backup/tasks/main.yml @@ -1,5 +1,5 @@ - name: ensure prometheus is stopped before backup - shell: "docker service scale monitor_prometheus=0" && sleep 10 + shell: "docker service scale monitor_prometheus=0 && sleep 10" delegate_to: "{{groups['swarm-bootstrap-manager'][0]}}" - name: Starting Prometheus backup From e31120c14f7ed8e18dee80426bdde647d93de0d5 Mon Sep 17 00:00:00 2001 From: msknext Date: Tue, 5 Mar 2019 23:08:35 +0530 Subject: [PATCH 1303/1345] feat: DO-579 Updated install and config scripts and xmls --- deploy/jenkins/envOrder.txt.sample | 4 + deploy/jenkins/jenkins-jobs-setup.sh | 105 ++++++++++++ ...nfig-setup.sh => jenkins-plugins-setup.sh} | 8 +- deploy/jenkins/jenkins-server-setup.sh | 8 +- .../jobs/dev/jobs/Plugins/config.xml | 28 +++ .../jobs/Plugins/jobs/CEPlugins/config.xml | 93 ++++++++++ .../Plugins/jobs/CollectionEditor/config.xml | 93 ++++++++++ .../Plugins/jobs/ContentFramework/config.xml | 93 ++++++++++ .../jobs/ContentRendererPreview/config.xml | 93 ++++++++++ .../Plugins/jobs/GenericEditor/config.xml | 93 ++++++++++ .../Deploy/jobs/dev/jobs/Plugins/config.xml | 1 + .../jobs/Plugins/jobs/CEPlugins/config.xml | 161 ++++++++++++++++++ .../Plugins/jobs/CollectionEditor/config.xml | 100 ++++++++++- .../Plugins/jobs/ContentFramework/config.xml | 100 ++++++++++- .../jobs/ContentRendererPreview/config.xml | 100 ++++++++++- .../Plugins/jobs/GenericEditor/config.xml | 100 ++++++++++- deploy/jenkins/plugins.txt | 2 + deploy/jenkins/updateJobConfigs.sh | 22 --- 18 files changed, 1161 insertions(+), 43 deletions(-) create mode 100644 deploy/jenkins/envOrder.txt.sample create mode 100755 deploy/jenkins/jenkins-jobs-setup.sh rename deploy/jenkins/{jenkins-config-setup.sh => jenkins-plugins-setup.sh} (75%) create mode 100644 deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Plugins/config.xml create mode 100644 deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Plugins/jobs/CEPlugins/config.xml create mode 100644 deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Plugins/jobs/CollectionEditor/config.xml create mode 100644 deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Plugins/jobs/ContentFramework/config.xml create mode 100644 deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Plugins/jobs/ContentRendererPreview/config.xml create mode 100644 deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Plugins/jobs/GenericEditor/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Plugins/jobs/CEPlugins/config.xml delete mode 100755 deploy/jenkins/updateJobConfigs.sh diff --git a/deploy/jenkins/envOrder.txt.sample b/deploy/jenkins/envOrder.txt.sample new file mode 100644 index 0000000000..e8fe0cb56b --- /dev/null +++ b/deploy/jenkins/envOrder.txt.sample @@ -0,0 +1,4 @@ +dev=0 +staging=1 +pre-production=2 +production=3 diff --git a/deploy/jenkins/jenkins-jobs-setup.sh b/deploy/jenkins/jenkins-jobs-setup.sh new file mode 100755 index 0000000000..e54e913786 --- /dev/null +++ b/deploy/jenkins/jenkins-jobs-setup.sh @@ -0,0 +1,105 @@ +#!/bin/bash +bold=$(tput bold) +normal=$(tput sgr0) +flag=0 +today=$(date +%Y-%m-%d-%H-%M-%S) +JENKINS_TMP=/tmp/$today +envOrder="/dev/null" + +setupJobs(){ + declare -A arr + while IFS="" read -r line; do + key=$(echo $line | awk -F "=" '{print $1}') + value=$(echo $line | awk -F "=" '{print $2}') + arr[$value]=$key + done < $envOrder + mkdir $JENKINS_TMP + rsync -r jobs/* $JENKINS_TMP + if [[ ${arr[0]} != "dev" ]]; then + mv $JENKINS_TMP/ArtifactUpload/jobs/dev $JENKINS_TMP/ArtifactUpload/jobs/${arr[0]} + mv $JENKINS_TMP/Deploy/jobs/dev $JENKINS_TMP/Deploy/jobs/${arr[0]} + mv $JENKINS_TMP/OpsAdministration/jobs/dev $JENKINS_TMP/OpsAdministration/jobs/${arr[0]} + mv $JENKINS_TMP/Provision/jobs/dev $JENKINS_TMP/Provision/jobs/${arr[0]} + find $JENKINS_TMP/Deploy/jobs/${arr[0]} -type f -name config.xml -exec sed -i "s#ArtifactUpload/dev/#ArtifactUpload/${arr[0]}/#g" {} \; + find $JENKINS_TMP/Deploy/jobs/${arr[0]} -type f -name config.xml -exec sed -i "s#Deploy/dev/#Deploy/${arr[0]}/#g" {} \; + fi + echo -e "\e[0;33m${bold}Jobs created for ${arr[0]}${normal}" + + for key in "${!arr[@]}"; do + if [[ $key -eq 0 ]]; then + continue + fi + cp -r $JENKINS_TMP/Provision/jobs/${arr[0]} $JENKINS_TMP/Provision/jobs/${arr[$key]} + cp -r $JENKINS_TMP/OpsAdministration/jobs/${arr[0]} $JENKINS_TMP/OpsAdministration/jobs/${arr[$key]} + cp -r $JENKINS_TMP/Deploy/jobs/${arr[0]} $JENKINS_TMP/Deploy/jobs/${arr[$key]} + find $JENKINS_TMP/Deploy/jobs/${arr[$key]} -type f -name config.xml -exec sed -i "s#ArtifactUpload/${arr[0]}/#Deploy/${arr[$(($key - 1))]}/#g" {} \; + find $JENKINS_TMP/Deploy/jobs/${arr[$key]} -type d -path "*Summary*" -prune -o -type f -name config.xml -exec sed -i "//,/<\/triggers>/d" {} \; + find $JENKINS_TMP/Deploy/jobs/${arr[$key]}/jobs/Summary/jobs/DeployedVersions -type f -name config.xml -exec sed -i "s#Deploy/${arr[0]}/#Deploy/${arr[$key]}/#g" {} \; + echo -e "\e[0;33m${bold}Jobs created for ${arr[$key]}${normal}" + done + diffs=$(diff --color -r --suppress-common-lines --no-dereference -x 'nextBuildNumber' -x 'builds' /var/lib/jenkins/jobs $JENKINS_TMP | wc -l) + if [[ $diffs -eq 0 ]]; then + echo -e "\e[0;33m${bold}No changes detected. Exiting...${normal}" + exit + fi + diff --color -r --suppress-common-lines --no-dereference -x 'nextBuildNumber' -x 'builds' /var/lib/jenkins/jobs $JENKINS_TMP + echo -e "\e[0;33m${bold}Please review the changes shown. Proceed with overwriting the changes?${normal}" +} + +syncJobs(){ +read -p 'YES/NO: ' changes + if [[ $changes == "YES" ]]; then + rsync -r $JENKINS_TMP/* /var/lib/jenkins/jobs + chown -R jenkins:jenkins /var/lib/jenkins/jobs + else + echo -e "\e[0;31m${bold}Aborted!${normal}" + fi +} + + +firstRun(){ +choice="n" +envOrder=envOrder.txt +cat $envOrder +echo -e "\e[0;36m${bold}Is this the correct order? Jobs will be created and configured based on this order.${normal}" +read -p 'y/n: ' choice +if [[ $choice == "y" ]]; then + setupJobs + syncJobs + cp $envOrder /var/lib/jenkins + chown -R jenkins:jenkins /var/lib/jenkins/$envOrder +else + echo -e "\e[0;31m${bold}Please update the envOrder.txt and re-run..${normal}" +fi +} + +updateRun(){ +choice="n" +envOrder=/var/lib/jenkins/envOrder.txt +cat $envOrder +echo -e "\e[0;36m${bold}Is this the current order? Choose n if you want to add a new environment.${normal}" +read -p 'y/n: ' choice +if [[ $choice == "n" ]]; then + rm -rf $envOrder + echo -e "\e[0;31m${bold}Please update the envOrder.txt and re-run from sunbird-devops/deploy/jenkins directory." +elif [[ $choice == "y" ]]; then + setupJobs + syncJobs +else + echo -e "\e[0;31m${bold}Aborted!${normal}" +fi +} + +echo -e "\e[0;33m${bold}**** Welcome to Jenkins config setup! ****${normal}" +if [[ ! -f /var/lib/jenkins/envOrder.txt ]]; then + if [[ ! -f ./envOrder.txt ]]; then + echo -e "\e[0;31m${bold}Please create a file named envOrder.txt with your environment order. Refer envOrder.txt.sample for reference" + else + echo -e "\e[0;33m${bold}Starting setup...${normal}" + firstRun + fi +else + flag=1 + echo -e "\e[0;33m${bold}Checking for updates...${normal}" + updateRun +fi diff --git a/deploy/jenkins/jenkins-config-setup.sh b/deploy/jenkins/jenkins-plugins-setup.sh similarity index 75% rename from deploy/jenkins/jenkins-config-setup.sh rename to deploy/jenkins/jenkins-plugins-setup.sh index 2b3eb2c7dd..6553c7cd94 100755 --- a/deploy/jenkins/jenkins-config-setup.sh +++ b/deploy/jenkins/jenkins-plugins-setup.sh @@ -7,17 +7,15 @@ read -p 'Jenkins URL without http://: ' server read -p 'Jenkins admin username: ' username read -sp 'Jenkins admin Password: ' password -echo -e "\n\e[0;32m${bold}Copying config files to Jenkins ${normal}" -rsync -r jobs /var/lib/jenkins/ -chown -R jenkins:jenkins /var/lib/jenkins/jobs - +if [[ -d triggers/var/lib/jenkins/.m2 ]]; then echo -e "\n\e[0;32m${bold}Downloading and copying m2 directory to Jenkins ${normal}" wget https://sunbirdpublic.blob.core.windows.net/installation/m2_updated.zip unzip m2_updated.zip mv .m2 /var/lib/jenkins chown -R jenkins:jenkins /var/lib/jenkins/.m2 +fi echo -e "\n\e[0;32m${bold}Installating plugins... ${normal}" ./butler plugins i -s $server -u $username -p $password -echo -e "\n\e[0;32m${bold}Go to manage jenkins -> Plugin manager -> Update center -> Check restart jenkins after installation${normal}" +echo -e "\n\e[0;32m${bold}Go to manage jenkins -> Plugin manager -> Update center -> Check status of installation${normal}" diff --git a/deploy/jenkins/jenkins-server-setup.sh b/deploy/jenkins/jenkins-server-setup.sh index eb3e347b54..4e50d82b4c 100755 --- a/deploy/jenkins/jenkins-server-setup.sh +++ b/deploy/jenkins/jenkins-server-setup.sh @@ -10,9 +10,9 @@ apt-get install -y openjdk-8-jdk echo -e "\n\e[0;32m${bold}Installating Jenkins${normal}" wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | apt-key add - -echo "deb https://pkg.jenkins.io/debian-stable binary/" >> /etc/apt/sources.list +sudo apt-add-repository "deb https://pkg.jenkins.io/debian-stable binary/" sudo apt-get update -sudo apt-get install jenkins -y +sudo apt-get install -y jenkins=2.150.3 echo -e "\n\e[0;32m${bold}Installating PIP${normal}" apt-get install -y python-pip @@ -39,7 +39,7 @@ add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $( apt-get update apt-get install -y docker-ce docker-ce-cli containerd.io -echo -e "\n\e[0;32m${bold}Installating node, npm and grunt" +echo -e "\n\e[0;32m${bold}Installating node and npm modules" wget https://nodejs.org/download/release/v6.1.0/node-v6.1.0-linux-x64.tar.gz tar -xvf node-v6.1.0-linux-x64.tar.gz mv node-v6.1.0-linux-x64 /usr/local/lib/ @@ -64,4 +64,4 @@ usermod -aG docker jenkins echo -e "\n\e[0;32m${bold}Creating bashrc for jenkins user ${normal}" cp /etc/skel/.bashrc /var/lib/jenkins -echo -e "\n\e[0;32m${bold}Installation complete. Please go to your jenkins URL and continue setup${normal}" +echo -e "\n\e[0;32m${bold}Installation complete. Please go to your jenkins URL and continue setup if this first run..${normal}" diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Plugins/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Plugins/config.xml new file mode 100644 index 0000000000..e25dcd1341 --- /dev/null +++ b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Plugins/config.xml @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + All + false + false + + + + + + + + false + + + + \ No newline at end of file diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Plugins/jobs/CEPlugins/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Plugins/jobs/CEPlugins/config.xml new file mode 100644 index 0000000000..5c380348d6 --- /dev/null +++ b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Plugins/jobs/CEPlugins/config.xml @@ -0,0 +1,93 @@ + + + + + false + + + + -1 + -1 + -1 + -1 + + + + + false + false + + + + + absolute_job_path + <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> + Build/Plugins/CEPlugins + false + + + build_number + <font color=darkgreen size=2><b>OPTIONAL: Specify the build job number to upload / copy the artifact built in that job.</b></font> + lastSuccessfulBuild + false + + + artifact_source + <font color=black size=2><b> +ArtifactRepo - Upload and keep a copy of the artifact in Jenkins, JenkinsJob - Just keep a copy of the artifact in Jenkins.</b></font> + + + ArtifactRepo + JenkinsJob + + + + + + + 0 + 0 + + false + project + false + + + + + + + Build/Plugins/CEPlugins + + SUCCESS + 0 + BLUE + true + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + pipelines/upload/plugins/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Plugins/jobs/CollectionEditor/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Plugins/jobs/CollectionEditor/config.xml new file mode 100644 index 0000000000..b071455dd9 --- /dev/null +++ b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Plugins/jobs/CollectionEditor/config.xml @@ -0,0 +1,93 @@ + + + + + false + + + + -1 + -1 + -1 + -1 + + + + + false + false + + + + + absolute_job_path + <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> + Build/Plugins/CollectionEditor + false + + + build_number + <font color=darkgreen size=2><b>OPTIONAL: Specify the build job number to upload / copy the artifact built in that job.</b></font> + lastSuccessfulBuild + false + + + artifact_source + <font color=black size=2><b> +ArtifactRepo - Upload and keep a copy of the artifact in Jenkins, JenkinsJob - Just keep a copy of the artifact in Jenkins.</b></font> + + + ArtifactRepo + JenkinsJob + + + + + + + 0 + 0 + + false + project + false + + + + + + + Build/Plugins/CollectionEditor + + SUCCESS + 0 + BLUE + true + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + pipelines/upload/plugins/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Plugins/jobs/ContentFramework/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Plugins/jobs/ContentFramework/config.xml new file mode 100644 index 0000000000..0e4c842ced --- /dev/null +++ b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Plugins/jobs/ContentFramework/config.xml @@ -0,0 +1,93 @@ + + + + + false + + + + -1 + -1 + -1 + -1 + + + + + false + false + + + + + absolute_job_path + <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> + Build/Plugins/ContentFramework + false + + + build_number + <font color=darkgreen size=2><b>OPTIONAL: Specify the build job number to upload / copy the artifact built in that job.</b></font> + lastSuccessfulBuild + false + + + artifact_source + <font color=black size=2><b> +ArtifactRepo - Upload and keep a copy of the artifact in Jenkins, JenkinsJob - Just keep a copy of the artifact in Jenkins.</b></font> + + + ArtifactRepo + JenkinsJob + + + + + + + 0 + 0 + + false + project + false + + + + + + + Build/Plugins/ContentFramework + + SUCCESS + 0 + BLUE + true + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + pipelines/upload/plugins/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Plugins/jobs/ContentRendererPreview/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Plugins/jobs/ContentRendererPreview/config.xml new file mode 100644 index 0000000000..f699829e2f --- /dev/null +++ b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Plugins/jobs/ContentRendererPreview/config.xml @@ -0,0 +1,93 @@ + + + + + false + + + + -1 + -1 + -1 + -1 + + + + + false + false + + + + + absolute_job_path + <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> + Build/Plugins/ContentRendererPreview + false + + + build_number + <font color=darkgreen size=2><b>OPTIONAL: Specify the build job number to upload / copy the artifact built in that job.</b></font> + lastSuccessfulBuild + false + + + artifact_source + <font color=black size=2><b> +ArtifactRepo - Upload and keep a copy of the artifact in Jenkins, JenkinsJob - Just keep a copy of the artifact in Jenkins.</b></font> + + + ArtifactRepo + JenkinsJob + + + + + + + 0 + 0 + + false + project + false + + + + + + + Build/Plugins/ContentRendererPreview + + SUCCESS + 0 + BLUE + true + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + pipelines/upload/plugins/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Plugins/jobs/GenericEditor/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Plugins/jobs/GenericEditor/config.xml new file mode 100644 index 0000000000..4ce788e56e --- /dev/null +++ b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Plugins/jobs/GenericEditor/config.xml @@ -0,0 +1,93 @@ + + + + + false + + + + -1 + -1 + -1 + -1 + + + + + false + false + + + + + absolute_job_path + <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> + Build/Plugins/GenericEditor + false + + + build_number + <font color=darkgreen size=2><b>OPTIONAL: Specify the build job number to upload / copy the artifact built in that job.</b></font> + lastSuccessfulBuild + false + + + artifact_source + <font color=black size=2><b> +ArtifactRepo - Upload and keep a copy of the artifact in Jenkins, JenkinsJob - Just keep a copy of the artifact in Jenkins.</b></font> + + + ArtifactRepo + JenkinsJob + + + + + + + 0 + 0 + + false + project + false + + + + + + + Build/Plugins/GenericEditor + + SUCCESS + 0 + BLUE + true + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + pipelines/upload/plugins/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Plugins/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Plugins/config.xml index e25dcd1341..68477b8ac7 100644 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Plugins/config.xml +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Plugins/config.xml @@ -1,5 +1,6 @@ + diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Plugins/jobs/CEPlugins/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Plugins/jobs/CEPlugins/config.xml new file mode 100644 index 0000000000..53ae131d1d --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Plugins/jobs/CEPlugins/config.xml @@ -0,0 +1,161 @@ + + + + + false + + + + false + false + + + + + absolute_job_path + <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> + ArtifactUpload/dev/Plugins/CEPlugins + false + + + container_name + <font color=black size=2><b>Please specify azure container name.</b></font> + plugins + false + + + artifact_source + <font color=black size=2><b> +ArtifactRepo - Download the artifact from azure blob, JenkinsJob - Use the atrifact from Jenkins job.</b></font> + choice-parameter-620062284617427 + 1 + + false + + + + false + + + CEPlugins + + + PT_SINGLE_SELECT + false + 1 + + + build_number + + choice-parameter-620062286335119 + 1 + + false + + + + false + + + CEPlugins + + artifact_source + ET_FORMATTED_HTML + true + + + artifact_version + + choice-parameter-620062288387509 + 1 + + false + + + + false + + + CEPlugins + + artifact_source + ET_FORMATTED_HTML + true + + + + + 0 + 0 + + false + project + false + + + + + + + ArtifactUpload/dev/Plugins/CEPlugins + + SUCCESS + 0 + BLUE + true + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/deploy/CEPlugins/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Plugins/jobs/CollectionEditor/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Plugins/jobs/CollectionEditor/config.xml index 3a97381d49..e097c5284a 100644 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Plugins/jobs/CollectionEditor/config.xml +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Plugins/jobs/CollectionEditor/config.xml @@ -4,6 +4,7 @@ false + false false @@ -13,7 +14,7 @@ absolute_job_path <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> - Build/Plugins/CollectionEditor + ArtifactUpload/dev/Plugins/CollectionEditor false @@ -22,6 +23,85 @@ plugins false + + artifact_source + <font color=black size=2><b> +ArtifactRepo - Download the artifact from azure blob, JenkinsJob - Use the atrifact from Jenkins job.</b></font> + choice-parameter-620062284617427 + 1 + + false + + + + false + + + CollectionEditor + + + PT_SINGLE_SELECT + false + 1 + + + build_number + + choice-parameter-620062286335119 + 1 + + false + + + + false + + + CollectionEditor + + artifact_source + ET_FORMATTED_HTML + true + + + artifact_version + + choice-parameter-620062288387509 + 1 + + false + + + + false + + + CollectionEditor + + artifact_source + ET_FORMATTED_HTML + true + @@ -33,13 +113,27 @@ false + + + + + ArtifactUpload/dev/Plugins/CollectionEditor + + SUCCESS + 0 + BLUE + true + + + + 2 - https://github.com/project-sunbird/sunbird-collection-editor.git + https://github.com/project-sunbird/sunbird-devops.git @@ -59,7 +153,7 @@ - Jenkinsfile.deploy + pipelines/deploy/CollectionEditor/Jenkinsfile false diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Plugins/jobs/ContentFramework/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Plugins/jobs/ContentFramework/config.xml index f0e007d858..6103ba6445 100644 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Plugins/jobs/ContentFramework/config.xml +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Plugins/jobs/ContentFramework/config.xml @@ -4,6 +4,7 @@ false + false false @@ -13,7 +14,7 @@ absolute_job_path <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> - Build/Plugins/GenericEditor + ArtifactUpload/dev/Plugins/ContentFramework false @@ -22,6 +23,85 @@ plugins false + + artifact_source + <font color=black size=2><b> +ArtifactRepo - Download the artifact from azure blob, JenkinsJob - Use the atrifact from Jenkins job.</b></font> + choice-parameter-620062284617427 + 1 + + false + + + + false + + + ContentFramework + + + PT_SINGLE_SELECT + false + 1 + + + build_number + + choice-parameter-620062286335119 + 1 + + false + + + + false + + + ContentFramework + + artifact_source + ET_FORMATTED_HTML + true + + + artifact_version + + choice-parameter-620062288387509 + 1 + + false + + + + false + + + ContentFramework + + artifact_source + ET_FORMATTED_HTML + true + @@ -33,13 +113,27 @@ false + + + + + ArtifactUpload/dev/Plugins/ContentFramework + + SUCCESS + 0 + BLUE + true + + + + 2 - https://github.com/project-sunbird/sunbird-content-editor.git + https://github.com/project-sunbird/sunbird-devops.git @@ -59,7 +153,7 @@ - Jenkinsfile.deploy + pipelines/deploy/ContentFramework/Jenkinsfile false diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Plugins/jobs/ContentRendererPreview/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Plugins/jobs/ContentRendererPreview/config.xml index f866564dad..d25ae64586 100644 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Plugins/jobs/ContentRendererPreview/config.xml +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Plugins/jobs/ContentRendererPreview/config.xml @@ -4,6 +4,7 @@ false + false false @@ -13,7 +14,7 @@ absolute_job_path <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> - Build/Plugins/CollectionEditor + ArtifactUpload/dev/Plugins/ContentRendererPreview false @@ -22,6 +23,85 @@ plugins false + + artifact_source + <font color=black size=2><b> +ArtifactRepo - Download the artifact from azure blob, JenkinsJob - Use the atrifact from Jenkins job.</b></font> + choice-parameter-620062284617427 + 1 + + false + + + + false + + + ContentRendererPreview + + + PT_SINGLE_SELECT + false + 1 + + + build_number + + choice-parameter-620062286335119 + 1 + + false + + + + false + + + ContentRendererPreview + + artifact_source + ET_FORMATTED_HTML + true + + + artifact_version + + choice-parameter-620062288387509 + 1 + + false + + + + false + + + ContentRendererPreview + + artifact_source + ET_FORMATTED_HTML + true + @@ -33,13 +113,27 @@ false + + + + + ArtifactUpload/dev/Plugins/ContentRendererPreview + + SUCCESS + 0 + BLUE + true + + + + 2 - https://github.com/project-sunbird/sunbird-content-player.git + https://github.com/project-sunbird/sunbird-devops.git @@ -59,7 +153,7 @@ - Jenkinsfile.deploy + pipelines/deploy/ContentRendererPreview/Jenkinsfile false diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Plugins/jobs/GenericEditor/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Plugins/jobs/GenericEditor/config.xml index 1990aa563a..2fc9a8360b 100644 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Plugins/jobs/GenericEditor/config.xml +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Plugins/jobs/GenericEditor/config.xml @@ -4,6 +4,7 @@ false + false false @@ -13,7 +14,7 @@ absolute_job_path <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> - Build/Plugins/GenericEditor + ArtifactUpload/dev/Plugins/GenericEditor false @@ -22,6 +23,85 @@ plugins false + + artifact_source + <font color=black size=2><b> +ArtifactRepo - Download the artifact from azure blob, JenkinsJob - Use the atrifact from Jenkins job.</b></font> + choice-parameter-620062284617427 + 1 + + false + + + + false + + + GenericEditor + + + PT_SINGLE_SELECT + false + 1 + + + build_number + + choice-parameter-620062286335119 + 1 + + false + + + + false + + + GenericEditor + + artifact_source + ET_FORMATTED_HTML + true + + + artifact_version + + choice-parameter-620062288387509 + 1 + + false + + + + false + + + GenericEditor + + artifact_source + ET_FORMATTED_HTML + true + @@ -33,13 +113,27 @@ false + + + + + ArtifactUpload/dev/Plugins/GenericEditor + + SUCCESS + 0 + BLUE + true + + + + 2 - https://github.com/project-sunbird/sunbird-generic-editor.git + https://github.com/project-sunbird/sunbird-devops.git @@ -59,7 +153,7 @@ - Jenkinsfile.deploy + pipelines/deploy/GenericEditor/Jenkinsfile false diff --git a/deploy/jenkins/plugins.txt b/deploy/jenkins/plugins.txt index f187ac5d3a..a0c2347b9f 100644 --- a/deploy/jenkins/plugins.txt +++ b/deploy/jenkins/plugins.txt @@ -94,3 +94,5 @@ dashboard-view@2.10 cobertura@1.13 parameterized-trigger@2.35.2 pipeline-stage-tags-metadata@1.3.4.1 +jobConfigHistory@2.19 +audit-trail@2.4 diff --git a/deploy/jenkins/updateJobConfigs.sh b/deploy/jenkins/updateJobConfigs.sh deleted file mode 100755 index b9c919fe51..0000000000 --- a/deploy/jenkins/updateJobConfigs.sh +++ /dev/null @@ -1,22 +0,0 @@ -#!/bin/bash -bold=$(tput bold) -normal=$(tput sgr0) - -echo -e "\e[0;36m${bold} -Updating jenkins jobs for other environments - Run this script from the folder you want to configure \ -\n\nTo setup staging from dev \ -\nOld text - ArtifactUpload/dev/ \ -\nNew text - Deploy/dev/ \ - -\nTo setup pre-production from staging - Copy staging dir and rename it to pre-production \ -\nOld text - Deploy/dev/ \ -\nNew text - Deploy/staging/ \ - -\nTo setup production from pre-production - Copy pre-production dir and rename it to production \ -\nOld text - Deploy/staging/ \ -\nNew text - Deploy/pre-production/ \ -\n${normal}" - -read -p 'Old text: ' oldText -read -p 'New text: ' newText -find . -type f -name config.xml -exec sed -i "s#$oldText#$newText#g" {} \; From fbc82b2932aa44d1dab650077a10a2b9b7f6ae12 Mon Sep 17 00:00:00 2001 From: msknext Date: Wed, 6 Mar 2019 09:10:56 +0530 Subject: [PATCH 1304/1345] feat: DO-579 Removed flag variable --- deploy/jenkins/jenkins-jobs-setup.sh | 2 -- 1 file changed, 2 deletions(-) diff --git a/deploy/jenkins/jenkins-jobs-setup.sh b/deploy/jenkins/jenkins-jobs-setup.sh index e54e913786..bd4ade0072 100755 --- a/deploy/jenkins/jenkins-jobs-setup.sh +++ b/deploy/jenkins/jenkins-jobs-setup.sh @@ -1,7 +1,6 @@ #!/bin/bash bold=$(tput bold) normal=$(tput sgr0) -flag=0 today=$(date +%Y-%m-%d-%H-%M-%S) JENKINS_TMP=/tmp/$today envOrder="/dev/null" @@ -99,7 +98,6 @@ if [[ ! -f /var/lib/jenkins/envOrder.txt ]]; then firstRun fi else - flag=1 echo -e "\e[0;33m${bold}Checking for updates...${normal}" updateRun fi From 03f920695ac8c7ddbeb6c9ab6aca1aee41c45a9e Mon Sep 17 00:00:00 2001 From: msknext Date: Wed, 6 Mar 2019 10:16:05 +0530 Subject: [PATCH 1305/1345] Issue #000: Adding pipefail and changing to bash shell --- images/openbadger/build.sh | 4 ++-- images/proxy/build.sh | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/images/openbadger/build.sh b/images/openbadger/build.sh index 3d7182896f..1d1b0c4f6e 100755 --- a/images/openbadger/build.sh +++ b/images/openbadger/build.sh @@ -1,6 +1,6 @@ -#!/bin/sh +#!/bin/bash # Build script -# set -o errexit +set -o pipefail build_tag=$1 name=badger node=$2 diff --git a/images/proxy/build.sh b/images/proxy/build.sh index 509b3cf95f..78a3ca4bb6 100755 --- a/images/proxy/build.sh +++ b/images/proxy/build.sh @@ -1,6 +1,6 @@ -#!/bin/sh +#!/bin/bash # Build script -# set -o errexit +set -o pipefail build_tag=$1 name=proxy node=$2 From 353a80a6510ffcf018c60f5701df6bf5e00b6280 Mon Sep 17 00:00:00 2001 From: msknext Date: Wed, 6 Mar 2019 10:25:39 +0530 Subject: [PATCH 1306/1345] Issue #000: Adding set -eo pipefail --- images/openbadger/build.sh | 2 +- images/proxy/build.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/images/openbadger/build.sh b/images/openbadger/build.sh index 1d1b0c4f6e..51a07511a6 100755 --- a/images/openbadger/build.sh +++ b/images/openbadger/build.sh @@ -1,6 +1,6 @@ #!/bin/bash # Build script -set -o pipefail +set -eo pipefail build_tag=$1 name=badger node=$2 diff --git a/images/proxy/build.sh b/images/proxy/build.sh index 78a3ca4bb6..ebf64006ed 100755 --- a/images/proxy/build.sh +++ b/images/proxy/build.sh @@ -1,6 +1,6 @@ #!/bin/bash # Build script -set -o pipefail +set -eo pipefail build_tag=$1 name=proxy node=$2 From c931912be8a9f58a8c1b4e2096678640f4b5569a Mon Sep 17 00:00:00 2001 From: harshavardhnc Date: Wed, 6 Mar 2019 10:39:07 +0530 Subject: [PATCH 1307/1345] Issue #00 fix: making keycloak admin console private --- ansible/roles/stack-proxy/templates/proxy-default.conf | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/ansible/roles/stack-proxy/templates/proxy-default.conf b/ansible/roles/stack-proxy/templates/proxy-default.conf index 312b88fedf..832b2e0355 100644 --- a/ansible/roles/stack-proxy/templates/proxy-default.conf +++ b/ansible/roles/stack-proxy/templates/proxy-default.conf @@ -45,6 +45,10 @@ server { location ~* ^/auth/realms/(.+)/clients-registrations/ { return 301 {{proto}}://$host/api/auth/v1/realms/$1/clients-registrations/; } + + location /auth/admin/ { + return 301 {{proto}}://$server_name/auth/; + } location /auth/ { set $target {{ keycloak_url }}; From e982c01de2621e81cb8f889f67c6f79cd49ac992 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Wed, 6 Mar 2019 11:57:23 +0530 Subject: [PATCH 1308/1345] Delete ansiblePlugin.groovy --- vars/ansiblePlugin.groovy | 24 ------------------------ 1 file changed, 24 deletions(-) delete mode 100644 vars/ansiblePlugin.groovy diff --git a/vars/ansiblePlugin.groovy b/vars/ansiblePlugin.groovy deleted file mode 100644 index 8dadef3c0d..0000000000 --- a/vars/ansiblePlugin.groovy +++ /dev/null @@ -1,24 +0,0 @@ -def call(body) { - - def pipelineParams = [:] - body.resolveStrategy = Closure.DELEGATE_FIRST - body.delegate = pipelineParams - body() - - node(pipelineParams.agent){ - // cloning public sunbird-devops and private repo - stage('checkout git') { - checkout scm - dir('sunbird-devops-private'){ - git branch: pipelineParams.branch, url: pipelineParams.scmUrl, credentialsId: 'f37ad21f-744a-4817-9f5e-02f8ec620b39' - } - } - - stage('Push') { - sh """ - ansible-playbook -i $WORKSPACE/sunbird-devops-private/ansible/inventories/${pipelineParams.env} \ - $WORKSPACE/ansible/${pipelineParams.playBook} ${pipelineParams.ansibleExtraArgs} - """ - } - } -} From 352c6e0ea8a7a2059b42773f94724576061ba1fa Mon Sep 17 00:00:00 2001 From: SMY ALTAMASH <30286162+SMYALTAMASH@users.noreply.github.com> Date: Thu, 7 Mar 2019 10:45:36 +0530 Subject: [PATCH 1309/1345] Issue #000 limit: increase the upload limit to 60MB from default 1MB (#296) --- ansible/roles/stack-proxy/templates/nginx.conf | 1 + 1 file changed, 1 insertion(+) diff --git a/ansible/roles/stack-proxy/templates/nginx.conf b/ansible/roles/stack-proxy/templates/nginx.conf index d85ce8b761..923f5d21c3 100644 --- a/ansible/roles/stack-proxy/templates/nginx.conf +++ b/ansible/roles/stack-proxy/templates/nginx.conf @@ -22,6 +22,7 @@ http { sendfile on; #tcp_nopush on; + client_max_body_size 60M; keepalive_timeout 65; From 81c7bceb9c60c4144878d8669b8e66a53f7890a6 Mon Sep 17 00:00:00 2001 From: G33tha Date: Thu, 7 Mar 2019 11:50:31 +0530 Subject: [PATCH 1310/1345] Update Jenkinsfile --- pipelines/backup/es-backup/Jenkinsfile | 4 ---- 1 file changed, 4 deletions(-) diff --git a/pipelines/backup/es-backup/Jenkinsfile b/pipelines/backup/es-backup/Jenkinsfile index 96a1811b45..f3e97a9817 100644 --- a/pipelines/backup/es-backup/Jenkinsfile +++ b/pipelines/backup/es-backup/Jenkinsfile @@ -7,10 +7,6 @@ node() { String ANSI_RED = "\u001B[31m" String ANSI_YELLOW = "\u001B[33m" - triggers { - cron('H 0 * * *') - } - stage('checkout public repo') { cleanWs() checkout scm From c6e9fbc3da3bcdcc22e44261187a037fda841ff0 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Thu, 7 Mar 2019 12:02:33 +0530 Subject: [PATCH 1311/1345] Issue #000: Adding colordiff and ignoring build status files in diff (#297) --- deploy/jenkins/jenkins-jobs-setup.sh | 4 ++-- deploy/jenkins/jenkins-server-setup.sh | 3 +++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/deploy/jenkins/jenkins-jobs-setup.sh b/deploy/jenkins/jenkins-jobs-setup.sh index bd4ade0072..14e92205dd 100755 --- a/deploy/jenkins/jenkins-jobs-setup.sh +++ b/deploy/jenkins/jenkins-jobs-setup.sh @@ -36,12 +36,12 @@ setupJobs(){ find $JENKINS_TMP/Deploy/jobs/${arr[$key]}/jobs/Summary/jobs/DeployedVersions -type f -name config.xml -exec sed -i "s#Deploy/${arr[0]}/#Deploy/${arr[$key]}/#g" {} \; echo -e "\e[0;33m${bold}Jobs created for ${arr[$key]}${normal}" done - diffs=$(diff --color -r --suppress-common-lines --no-dereference -x 'nextBuildNumber' -x 'builds' /var/lib/jenkins/jobs $JENKINS_TMP | wc -l) + diffs=$(colordiff --color -r --suppress-common-lines --no-dereference -x 'nextBuildNumber' -x 'builds' -x 'last*' /var/lib/jenkins/jobs $JENKINS_TMP | wc -l) if [[ $diffs -eq 0 ]]; then echo -e "\e[0;33m${bold}No changes detected. Exiting...${normal}" exit fi - diff --color -r --suppress-common-lines --no-dereference -x 'nextBuildNumber' -x 'builds' /var/lib/jenkins/jobs $JENKINS_TMP + colordiff --color -r --suppress-common-lines --no-dereference -x 'nextBuildNumber' -x 'builds' -x 'last*' /var/lib/jenkins/jobs $JENKINS_TMP echo -e "\e[0;33m${bold}Please review the changes shown. Proceed with overwriting the changes?${normal}" } diff --git a/deploy/jenkins/jenkins-server-setup.sh b/deploy/jenkins/jenkins-server-setup.sh index 4e50d82b4c..cea6ddf039 100755 --- a/deploy/jenkins/jenkins-server-setup.sh +++ b/deploy/jenkins/jenkins-server-setup.sh @@ -58,6 +58,9 @@ pip install ansible==2.5.0 echo -e "\n\e[0;32m${bold}Installating Docker-py${normal}" pip install docker-py +echo -e "\n\e[0;32m${bold}Installating colordiff${normal}" +sudo apt-get install -y colordiff + echo -e "\n\e[0;32m${bold}Adding jenkins user to docker group${normal}" usermod -aG docker jenkins From 6b5ff9f44d7468d7b031f4a5b9386cce153695f2 Mon Sep 17 00:00:00 2001 From: G33tha Date: Thu, 7 Mar 2019 12:12:55 +0530 Subject: [PATCH 1312/1345] added es backup variables --- ansible/inventory/env/group_vars/all.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/ansible/inventory/env/group_vars/all.yml b/ansible/inventory/env/group_vars/all.yml index 99eeab3d37..c4f9d3b736 100644 --- a/ansible/inventory/env/group_vars/all.yml +++ b/ansible/inventory/env/group_vars/all.yml @@ -529,3 +529,7 @@ sunbird_config_service_url: config_refresh_interval: 10 config_service_enabled: false config_cache_ttl: 600 + +#es-backup +app_es_snapshot_host: "{{ groups['es'][0] }}" +app_snapshot_base_path: applicationelasticsearch From ca1878aa0e81622e09a8b04425912706e59d8116 Mon Sep 17 00:00:00 2001 From: G33tha Date: Thu, 7 Mar 2019 12:24:32 +0530 Subject: [PATCH 1313/1345] added backup_azure_storage_access_key variable --- ansible/inventory/env/group_vars/all.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ansible/inventory/env/group_vars/all.yml b/ansible/inventory/env/group_vars/all.yml index c4f9d3b736..555e7ef985 100644 --- a/ansible/inventory/env/group_vars/all.yml +++ b/ansible/inventory/env/group_vars/all.yml @@ -530,6 +530,9 @@ config_refresh_interval: 10 config_service_enabled: false config_cache_ttl: 600 +#### backup storage secret +backup_azure_storage_access_key: "{{core_vault_azure_storage_secret}}" + #es-backup app_es_snapshot_host: "{{ groups['es'][0] }}" app_snapshot_base_path: applicationelasticsearch From 6dffbb07d14569d1305489485b2c2d8571ef746c Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Thu, 7 Mar 2019 12:26:01 +0530 Subject: [PATCH 1314/1345] Issue #000: Removed --color for colordiff (#298) --- deploy/jenkins/jenkins-jobs-setup.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/deploy/jenkins/jenkins-jobs-setup.sh b/deploy/jenkins/jenkins-jobs-setup.sh index 14e92205dd..5e71deb9f8 100755 --- a/deploy/jenkins/jenkins-jobs-setup.sh +++ b/deploy/jenkins/jenkins-jobs-setup.sh @@ -36,12 +36,12 @@ setupJobs(){ find $JENKINS_TMP/Deploy/jobs/${arr[$key]}/jobs/Summary/jobs/DeployedVersions -type f -name config.xml -exec sed -i "s#Deploy/${arr[0]}/#Deploy/${arr[$key]}/#g" {} \; echo -e "\e[0;33m${bold}Jobs created for ${arr[$key]}${normal}" done - diffs=$(colordiff --color -r --suppress-common-lines --no-dereference -x 'nextBuildNumber' -x 'builds' -x 'last*' /var/lib/jenkins/jobs $JENKINS_TMP | wc -l) + diffs=$(colordiff -r --suppress-common-lines --no-dereference -x 'nextBuildNumber' -x 'builds' -x 'last*' /var/lib/jenkins/jobs $JENKINS_TMP | wc -l) if [[ $diffs -eq 0 ]]; then echo -e "\e[0;33m${bold}No changes detected. Exiting...${normal}" exit fi - colordiff --color -r --suppress-common-lines --no-dereference -x 'nextBuildNumber' -x 'builds' -x 'last*' /var/lib/jenkins/jobs $JENKINS_TMP + colordiff -r --suppress-common-lines --no-dereference -x 'nextBuildNumber' -x 'builds' -x 'last*' /var/lib/jenkins/jobs $JENKINS_TMP echo -e "\e[0;33m${bold}Please review the changes shown. Proceed with overwriting the changes?${normal}" } From 8e21cb034d644b8090e3a0bf116e005872d2a1b3 Mon Sep 17 00:00:00 2001 From: G33tha Date: Thu, 7 Mar 2019 12:39:41 +0530 Subject: [PATCH 1315/1345] addedd log es backup variables --- ansible/inventory/env/group_vars/all.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/ansible/inventory/env/group_vars/all.yml b/ansible/inventory/env/group_vars/all.yml index 555e7ef985..2c75fd7e05 100644 --- a/ansible/inventory/env/group_vars/all.yml +++ b/ansible/inventory/env/group_vars/all.yml @@ -536,3 +536,7 @@ backup_azure_storage_access_key: "{{core_vault_azure_storage_secret}}" #es-backup app_es_snapshot_host: "{{ groups['es'][0] }}" app_snapshot_base_path: applicationelasticsearch + +#log es backup +log_es_snapshot_host: "{{ groups['log-es'][0] }}" +log_snapshot_base_path: loggerelasticsearch From 3667d0df0f090258ab4c1c0cb24dd88ef8beebbb Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Thu, 7 Mar 2019 12:44:24 +0530 Subject: [PATCH 1316/1345] Issue #000: Typo in directory name (#299) --- deploy/jenkins/jenkins-plugins-setup.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deploy/jenkins/jenkins-plugins-setup.sh b/deploy/jenkins/jenkins-plugins-setup.sh index 6553c7cd94..65ccab1676 100755 --- a/deploy/jenkins/jenkins-plugins-setup.sh +++ b/deploy/jenkins/jenkins-plugins-setup.sh @@ -7,7 +7,7 @@ read -p 'Jenkins URL without http://: ' server read -p 'Jenkins admin username: ' username read -sp 'Jenkins admin Password: ' password -if [[ -d triggers/var/lib/jenkins/.m2 ]]; then +if [[ -d /var/lib/jenkins/.m2 ]]; then echo -e "\n\e[0;32m${bold}Downloading and copying m2 directory to Jenkins ${normal}" wget https://sunbirdpublic.blob.core.windows.net/installation/m2_updated.zip unzip m2_updated.zip From 55eaf6f82fb97eec2935cdd722d474a15b3c53bc Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Thu, 7 Mar 2019 12:47:43 +0530 Subject: [PATCH 1317/1345] Issue #000: Check for not condition --- deploy/jenkins/jenkins-plugins-setup.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deploy/jenkins/jenkins-plugins-setup.sh b/deploy/jenkins/jenkins-plugins-setup.sh index 65ccab1676..85368199d9 100755 --- a/deploy/jenkins/jenkins-plugins-setup.sh +++ b/deploy/jenkins/jenkins-plugins-setup.sh @@ -7,7 +7,7 @@ read -p 'Jenkins URL without http://: ' server read -p 'Jenkins admin username: ' username read -sp 'Jenkins admin Password: ' password -if [[ -d /var/lib/jenkins/.m2 ]]; then +if [[ ! -d /var/lib/jenkins/.m2 ]]; then echo -e "\n\e[0;32m${bold}Downloading and copying m2 directory to Jenkins ${normal}" wget https://sunbirdpublic.blob.core.windows.net/installation/m2_updated.zip unzip m2_updated.zip From caeba184c5e82a56d67417c5421129e0b710c620 Mon Sep 17 00:00:00 2001 From: G33tha Date: Thu, 7 Mar 2019 12:52:48 +0530 Subject: [PATCH 1318/1345] Update Jenkinsfile --- pipelines/backup/logger-es-backup/Jenkinsfile | 4 ---- 1 file changed, 4 deletions(-) diff --git a/pipelines/backup/logger-es-backup/Jenkinsfile b/pipelines/backup/logger-es-backup/Jenkinsfile index abed6d7928..966a830242 100644 --- a/pipelines/backup/logger-es-backup/Jenkinsfile +++ b/pipelines/backup/logger-es-backup/Jenkinsfile @@ -7,10 +7,6 @@ node() { String ANSI_RED = "\u001B[31m" String ANSI_YELLOW = "\u001B[33m" - triggers { - cron('H 0 * * *') - } - stage('checkout public repo') { cleanWs() checkout scm From a93ccdf58b52cf210f258f7e0cc7fa829c49e4eb Mon Sep 17 00:00:00 2001 From: Harsha Date: Thu, 7 Mar 2019 12:56:50 +0530 Subject: [PATCH 1319/1345] Issue #0000 fix: "reverting proxy changes for keycloak" (#300) --- ansible/roles/stack-proxy/templates/proxy-default.conf | 4 ---- 1 file changed, 4 deletions(-) diff --git a/ansible/roles/stack-proxy/templates/proxy-default.conf b/ansible/roles/stack-proxy/templates/proxy-default.conf index 832b2e0355..f9503f35cf 100644 --- a/ansible/roles/stack-proxy/templates/proxy-default.conf +++ b/ansible/roles/stack-proxy/templates/proxy-default.conf @@ -46,10 +46,6 @@ server { return 301 {{proto}}://$host/api/auth/v1/realms/$1/clients-registrations/; } - location /auth/admin/ { - return 301 {{proto}}://$server_name/auth/; - } - location /auth/ { set $target {{ keycloak_url }}; rewrite ^/auth/(.*) /auth/$1 break; From b0031a4c019eca0b5f806e685848a110f664a052 Mon Sep 17 00:00:00 2001 From: G33tha Date: Thu, 7 Mar 2019 13:32:04 +0530 Subject: [PATCH 1320/1345] Update Jenkinsfile --- pipelines/backup/cassandra-backup/Jenkinsfile | 4 ---- 1 file changed, 4 deletions(-) diff --git a/pipelines/backup/cassandra-backup/Jenkinsfile b/pipelines/backup/cassandra-backup/Jenkinsfile index ba85b96f68..c5bce5d7b1 100644 --- a/pipelines/backup/cassandra-backup/Jenkinsfile +++ b/pipelines/backup/cassandra-backup/Jenkinsfile @@ -7,10 +7,6 @@ node() { String ANSI_RED = "\u001B[31m" String ANSI_YELLOW = "\u001B[33m" - triggers { - cron('H 0 * * *') - } - stage('checkout public repo') { cleanWs() checkout scm From 67f4ba7bdaddad0a65f9ef6fa36cafdf5e5ba9f7 Mon Sep 17 00:00:00 2001 From: G33tha Date: Thu, 7 Mar 2019 13:39:44 +0530 Subject: [PATCH 1321/1345] Update main.yml --- ansible/roles/cassandra-backup/tasks/main.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ansible/roles/cassandra-backup/tasks/main.yml b/ansible/roles/cassandra-backup/tasks/main.yml index aef9c4e1c4..a733abbb0e 100755 --- a/ansible/roles/cassandra-backup/tasks/main.yml +++ b/ansible/roles/cassandra-backup/tasks/main.yml @@ -14,7 +14,7 @@ - name: run the backup script become: yes - shell: python cassandra_backup.py "{{ cassandra_backup_gzip_file_name }}" -d "{{ data_dir }}" + shell: python cassandra_backup.py "{{ cassandra_backup_gzip_file_name }}" args: chdir: /data/cassandra/backup async: 7200 @@ -44,4 +44,4 @@ poll: 10 - name: clean up backup dir after upload - file: path="{{ cassandra_backup_dir }}" state=absent \ No newline at end of file + file: path="{{ cassandra_backup_dir }}" state=absent From 7944d8bbfb1c6ca43a17a653fd5b683c9553f027 Mon Sep 17 00:00:00 2001 From: G33tha Date: Thu, 7 Mar 2019 16:10:43 +0530 Subject: [PATCH 1322/1345] Issue #000 feat: updated azure account and secrets for db backup --- ansible/cassandra-backup.yml | 2 +- .../{vars => defaults}/main.yml | 1 + ansible/roles/cassandra-backup/tasks/main.yml | 8 ++++---- .../roles/cassandra-backup/vars/.main.yml.swp | Bin 12288 -> 0 bytes ansible/roles/prometheus-backup/tasks/main.yml | 8 ++++---- 5 files changed, 10 insertions(+), 9 deletions(-) rename ansible/roles/cassandra-backup/{vars => defaults}/main.yml (57%) delete mode 100644 ansible/roles/cassandra-backup/vars/.main.yml.swp diff --git a/ansible/cassandra-backup.yml b/ansible/cassandra-backup.yml index be013b2ba4..f5555d540a 100644 --- a/ansible/cassandra-backup.yml +++ b/ansible/cassandra-backup.yml @@ -1,6 +1,6 @@ - hosts: cassandra become: yes vars_files: - - ['{{inventory_dir}}/secrets.yml', 'secrets/{{env}}.yml'] + - ['{{inventory_dir}}/secrets.yml'] roles: - cassandra-backup diff --git a/ansible/roles/cassandra-backup/vars/main.yml b/ansible/roles/cassandra-backup/defaults/main.yml similarity index 57% rename from ansible/roles/cassandra-backup/vars/main.yml rename to ansible/roles/cassandra-backup/defaults/main.yml index e054cef6fe..148bcf83b2 100644 --- a/ansible/roles/cassandra-backup/vars/main.yml +++ b/ansible/roles/cassandra-backup/defaults/main.yml @@ -1,2 +1,3 @@ cassandra_root_dir: '/etc/cassandra' data_dir: '/var/lib/cassandra/data' +cassandra_backup_azure_container_name: core-cassandra \ No newline at end of file diff --git a/ansible/roles/cassandra-backup/tasks/main.yml b/ansible/roles/cassandra-backup/tasks/main.yml index a733abbb0e..db4a3af231 100755 --- a/ansible/roles/cassandra-backup/tasks/main.yml +++ b/ansible/roles/cassandra-backup/tasks/main.yml @@ -32,14 +32,14 @@ command: az storage container create --name {{ cassandra_backup_azure_container_name }} ignore_errors: true environment: - AZURE_STORAGE_ACCOUNT: "{{ cassandra_backup_azure_storage_account_name }}" - AZURE_STORAGE_KEY: "{{ cassandra_backup_azure_storage_access_key }}" + AZURE_STORAGE_ACCOUNT: "{{ backup_azure_storage_account_name }}" + AZURE_STORAGE_KEY: "{{ backup_azure_storage_access_key }}" - name: Upload to azure blob storage command: az storage blob upload --name "{{ cassandra_backup_gzip_file_name }}".tar.gz --file {{ cassandra_backup_gzip_file_path }} --container-name {{ cassandra_backup_azure_container_name }} environment: - AZURE_STORAGE_ACCOUNT: "{{ cassandra_backup_azure_storage_account_name }}" - AZURE_STORAGE_KEY: "{{ cassandra_backup_azure_storage_access_key }}" + AZURE_STORAGE_ACCOUNT: "{{ backup_azure_storage_account_name }}" + AZURE_STORAGE_KEY: "{{ backup_azure_storage_access_key }}" async: 3600 poll: 10 diff --git a/ansible/roles/cassandra-backup/vars/.main.yml.swp b/ansible/roles/cassandra-backup/vars/.main.yml.swp deleted file mode 100644 index 105e664e7924d7694930923b0b42c6c29b4ae782..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12288 zcmeI&J5Iwe7{Kwb3~Y#sULe5GDRp^BAZ8W@Mv#yyRZe2ms7V~zP9+xDxe^!P3~&t& zK*DpPVnp=+NtWe@Y=6JavXk-U*?Dv{I+Qm0A}?2i$)ns$e_dpzouBD$V0qX&L`O)XFzilDjO<%)-`Q>B{FxVU)9l@ha8c>nd|PPINkNYPD#O zrAnPwqnon$#kNdA0D&f4$HyCTu)jC%Fm`vgqruh%E(joi00IagfB*srAh1FLq3+3D zoA263&b=S%6(S*31Q0*~0R#|0009ILKmY**{+)o%L>@Lpp4-yB|9{^9yY^GpM<9Rz p0tg_000IagfB*srAb`MM7Wn!&KXulIX_mW_XsAp`zrWNE Date: Thu, 7 Mar 2019 16:34:13 +0530 Subject: [PATCH 1323/1345] Update Jenkinsfile --- pipelines/deploy/ContentFramework/Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pipelines/deploy/ContentFramework/Jenkinsfile b/pipelines/deploy/ContentFramework/Jenkinsfile index edcb021aa9..e2a8d0a064 100644 --- a/pipelines/deploy/ContentFramework/Jenkinsfile +++ b/pipelines/deploy/ContentFramework/Jenkinsfile @@ -44,7 +44,7 @@ node() { sh """ unzip ${artifact} unzip -o content-editor.zip -d content-editor - export editor_version_number=1.14.0 + export editor_version_number=${artifact} sed -i -e 's/dispatcher:\"console\"/dispatcher:\"piwik\"/g' content-editor/scripts/* sed -i 's:/api:/action:g' content-editor/scripts/base-editor.min.*.js sed -i 's/useProxyForURL:true/useProxyForURL:false/g' content-editor/scripts/base-editor.min.*.js From d58f28fe422734545c1cf39488267e03d856f1b5 Mon Sep 17 00:00:00 2001 From: G33tha Date: Thu, 7 Mar 2019 16:37:02 +0530 Subject: [PATCH 1324/1345] Update Jenkinsfile --- pipelines/deploy/ContentFramework/Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pipelines/deploy/ContentFramework/Jenkinsfile b/pipelines/deploy/ContentFramework/Jenkinsfile index e2a8d0a064..530b568242 100644 --- a/pipelines/deploy/ContentFramework/Jenkinsfile +++ b/pipelines/deploy/ContentFramework/Jenkinsfile @@ -44,7 +44,7 @@ node() { sh """ unzip ${artifact} unzip -o content-editor.zip -d content-editor - export editor_version_number=${artifact} + export editor_version_number=${values.artifact_version} sed -i -e 's/dispatcher:\"console\"/dispatcher:\"piwik\"/g' content-editor/scripts/* sed -i 's:/api:/action:g' content-editor/scripts/base-editor.min.*.js sed -i 's/useProxyForURL:true/useProxyForURL:false/g' content-editor/scripts/base-editor.min.*.js From 1117085a9d13e32fadd895303beee0cae9ae799e Mon Sep 17 00:00:00 2001 From: SMY ALTAMASH <30286162+SMYALTAMASH@users.noreply.github.com> Date: Thu, 7 Mar 2019 16:47:26 +0530 Subject: [PATCH 1325/1345] Release 1.15 sprint1: Rotate ssh keys for sunbird and diksha env (#301) * Issue #000 limit: increase the upload limit to 60MB from default 1MB * Issue #000 keys: rotate keys --- ansible/roles/changekey/defaults/main.yml | 5 ++++ ansible/roles/changekey/tasks/main.yml | 25 +++++++++++++++++++ .../stack-proxy/templates/proxy-default.conf | 1 + ansible/rotatekeys.yml | 9 +++++++ 4 files changed, 40 insertions(+) create mode 100644 ansible/roles/changekey/defaults/main.yml create mode 100644 ansible/roles/changekey/tasks/main.yml create mode 100644 ansible/rotatekeys.yml diff --git a/ansible/roles/changekey/defaults/main.yml b/ansible/roles/changekey/defaults/main.yml new file mode 100644 index 0000000000..1529919bbf --- /dev/null +++ b/ansible/roles/changekey/defaults/main.yml @@ -0,0 +1,5 @@ +bootstrap_user_public_key: "" +bootstrap_user: +ssh_user: +ssh_private_file: +ssh_public_key: diff --git a/ansible/roles/changekey/tasks/main.yml b/ansible/roles/changekey/tasks/main.yml new file mode 100644 index 0000000000..7a56212c65 --- /dev/null +++ b/ansible/roles/changekey/tasks/main.yml @@ -0,0 +1,25 @@ +- name: Create group "{{bootstrap_user}}" + group: name="{{bootstrap_user}}" state=present + +- name: Create user "{{bootstrap_user}}" + user: + name: "{{bootstrap_user}}" + comment: "{{bootstrap_user}}" + group: "{{bootstrap_user}}" + groups: sudo + shell: /bin/bash + +- name: Giving access to sudo without password + lineinfile: + path: /etc/sudoers + line: '{{bootstrap_user}} ALL=(ALL) NOPASSWD:ALL' + state: present + +- name: Remove existing authorized_keys from the "{{bootstrap_user}}" file and add a single key to its authorized_keys + become: yes + command: bash -lc "echo \"{{bootstrap_user_public_key}}\" > /home/{{bootstrap_user}}/.ssh/authorized_keys" + +- name: Remove existing authorized_keys from the "{{ssh_user}}" file and add a single key to its authorized_keys + become: yes + command: bash -lc "echo \"{{ssh_public_key}}\" > /home/{{ssh_user}}/.ssh/authorized_keys" + diff --git a/ansible/roles/stack-proxy/templates/proxy-default.conf b/ansible/roles/stack-proxy/templates/proxy-default.conf index f9503f35cf..6e0a39187c 100644 --- a/ansible/roles/stack-proxy/templates/proxy-default.conf +++ b/ansible/roles/stack-proxy/templates/proxy-default.conf @@ -72,6 +72,7 @@ server { # root /usr/share/nginx/www; } location /api/ { + client_max_body_size 60M; set $target http://api-manager_kong:8000; rewrite ^/api/(.*) /$1 break; proxy_pass $target; diff --git a/ansible/rotatekeys.yml b/ansible/rotatekeys.yml new file mode 100644 index 0000000000..6f06772cbd --- /dev/null +++ b/ansible/rotatekeys.yml @@ -0,0 +1,9 @@ +--- +- hosts: all + vars: + - ansible_ssh_user: "{{ssh_user}}" + - ansible_ssh_private_key_file: "{{ssh_private_file}}" + become: yes + gather_facts: false + roles: + - changekey From 6ad490f9011fc06675f807c51bff07e3e1c79dc3 Mon Sep 17 00:00:00 2001 From: SMY ALTAMASH <30286162+SMYALTAMASH@users.noreply.github.com> Date: Fri, 8 Mar 2019 14:30:32 +0530 Subject: [PATCH 1326/1345] Creating JenkinsFile for rotating key (#303) Issue #000 key: JenkinsFile for rotating key --- pipelines/bootstrap/Jenkinsfile.rotatekey | 38 +++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 pipelines/bootstrap/Jenkinsfile.rotatekey diff --git a/pipelines/bootstrap/Jenkinsfile.rotatekey b/pipelines/bootstrap/Jenkinsfile.rotatekey new file mode 100644 index 0000000000..36bca5a1d3 --- /dev/null +++ b/pipelines/bootstrap/Jenkinsfile.rotatekey @@ -0,0 +1,38 @@ +@Library('deploy-conf') _ +node() { + try { + String ANSI_GREEN = "\u001B[32m" + String ANSI_NORMAL = "\u001B[0m" + String ANSI_BOLD = "\u001B[1m" + String ANSI_RED = "\u001B[31m" + String ANSI_YELLOW = "\u001B[33m" + + stage('checkout public repo') { + cleanWs() + checkout scm + } + + ansiColor('xterm') { + stage('deploy'){ + values = [:] + envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-3].trim() + module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() + jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() + currentWs = sh(returnStdout: true, script: 'pwd').trim() + ansiblePlaybook = "${currentWs}/ansible/rotatekey.yml" + ansibleExtraArgs = "" + values.put('currentWs', currentWs) + values.put('env', envDir) + values.put('module', module) + values.put('jobName', jobName) + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + println values + ansible_playbook_run(values) + } + } + } + catch (err) { + throw err + } +} From b620b11f578cb0bd5c2a0ada820d345855140e75 Mon Sep 17 00:00:00 2001 From: Amol Ghatol Date: Fri, 8 Mar 2019 15:26:16 +0530 Subject: [PATCH 1327/1345] Issue #SB-7680 chore: Deployment script (#302) * Issue #SB-7680 chore: Keycloak deployment script --- .../sunbird/email/html/email-test.ftl | 5 + .../sunbird/email/html/email-verification.ftl | 5 + .../sunbird/email/html/event-login_error.ftl | 5 + .../sunbird/email/html/event-remove_totp.ftl | 5 + .../email/html/event-update_password.ftl | 5 + .../sunbird/email/html/event-update_totp.ftl | 5 + .../sunbird/email/html/executeActions.ftl | 5 + .../email/html/identity-provider-link.ftl | 5 + .../sunbird/email/html/password-reset.ftl | 5 + .../email/messages/messages_ca.properties | 21 + .../email/messages/messages_de.properties | 24 + .../email/messages/messages_en.properties | 27 + .../email/messages/messages_es.properties | 21 + .../email/messages/messages_fr.properties | 21 + .../email/messages/messages_it.properties | 24 + .../email/messages/messages_ja.properties | 25 + .../email/messages/messages_lt.properties | 24 + .../email/messages/messages_no.properties | 24 + .../email/messages/messages_pt_BR.properties | 19 + .../email/messages/messages_ru.properties | 25 + .../email/messages/messages_sv.properties | 25 + .../sunbird/email/text/email-test.ftl | 1 + .../sunbird/email/text/email-verification.ftl | 1 + .../sunbird/email/text/event-login_error.ftl | 1 + .../sunbird/email/text/event-remove_totp.ftl | 1 + .../email/text/event-update_password.ftl | 1 + .../sunbird/email/text/event-update_totp.ftl | 1 + .../sunbird/email/text/executeActions.ftl | 1 + .../email/text/identity-provider-link.ftl | 1 + .../sunbird/email/text/password-reset.ftl | 1 + .../artifacts/sunbird/email/theme.properties | 1 + .../sunbird/login/login-page-expired.ftl | 18 + .../sunbird/login/login-reset-password.ftl | 58 + .../sunbird/login/login-update-password.ftl | 64 + ansible/artifacts/sunbird/login/login.ftl | 97 + .../messages/messages_en.properties | 56 +- .../css/fonts/notosans/cyrillic-ext.woff2 | Bin 0 -> 21740 bytes .../css/fonts/notosans/cyrillic.woff2 | Bin 0 -> 10540 bytes .../css/fonts/notosans/devanagari.woff2 | Bin 0 -> 32696 bytes .../css/fonts/notosans/greek-ext.woff2 | Bin 0 -> 8516 bytes .../resources/css/fonts/notosans/greek.woff2 | Bin 0 -> 12872 bytes .../css/fonts/notosans/latin-ext.woff2 | Bin 0 -> 32276 bytes .../resources/css/fonts/notosans/latin.woff2 | Bin 0 -> 15572 bytes .../resources/css/fonts/notosans/notosans.css | 64 + .../css/fonts/notosans/vietnamese.woff2 | Bin 0 -> 7384 bytes .../sunbird/login/resources/css/login.css | 375 ++- .../login/resources/css/semantic.min.css | 2 +- .../css/themes/default/assets/fonts/icons.eot | Bin 0 -> 60767 bytes .../css/themes/default/assets/fonts/icons.svg | 565 ++++ .../css/themes/default/assets/fonts/icons.ttf | Bin 0 -> 122092 bytes .../themes/default/assets/fonts/icons.woff | Bin 0 -> 71508 bytes .../themes/default/assets/fonts/icons.woff2 | Bin 0 -> 56780 bytes .../sunbird/login/resources/img/bg.svg | 33 + .../login/resources/img/diksha_gov_logo.svg | 1 + .../sunbird/login/resources/img/favicon.ico | Bin 203870 -> 1150 bytes .../sunbird/login/resources/img/google.png | Bin 0 -> 6739 bytes .../sunbird/login/resources/img/logo.png | Bin 68091 -> 14389 bytes .../sunbird/login/resources/js/login.js | 171 ++ .../login/resources/login-reset-password.ftl | 43 - .../login/resources/login-update-password.ftl | 48 - .../sunbird/login/resources/login.ftl | 72 - ansible/artifacts/sunbird/login/template.ftl | 114 + .../login/{resources => }/theme.properties | 6 +- ansible/inventory/env/group_vars/all.yml | 12 +- .../sunbird-auth-deploy/defaults/main.yml | 86 + .../files/python-keycloak-0.12.0/PKG-INFO | 19 + .../files/python-keycloak-0.12.0/README.md | 210 ++ .../keycloak-realm.json | 1999 ++++++++++++++ .../keycloak/__init__.py | 19 + .../keycloak/authorization/__init__.py | 87 + .../keycloak/authorization/permission.py | 98 + .../keycloak/authorization/policy.py | 107 + .../keycloak/authorization/role.py | 39 + .../keycloak/connection.py | 199 ++ .../keycloak/exceptions.py | 93 + .../keycloak/keycloak_admin.py | 670 +++++ .../keycloak/keycloak_main.py | 87 + .../keycloak/keycloak_openid.py | 390 +++ .../python_keycloak.egg-info/PKG-INFO | 18 + .../python_keycloak.egg-info/SOURCES.txt | 0 .../dependency_links.txt | 1 + .../python_keycloak.egg-info/requires.txt | 3 + .../python_keycloak.egg-info/top_level.txt | 1 + .../keycloak/tests/__init__.py | 0 .../keycloak/tests/test_connection.py | 148 + .../keycloak/urls_patterns.py | 54 + .../python_keycloak.egg-info/PKG-INFO | 18 + .../python_keycloak.egg-info/SOURCES.txt | 21 + .../dependency_links.txt | 1 + .../python_keycloak.egg-info/requires.txt | 3 + .../python_keycloak.egg-info/top_level.txt | 1 + .../files/python-keycloak-0.12.0/roles.json | 41 + .../files/python-keycloak-0.12.0/setup.cfg | 7 + .../files/python-keycloak-0.12.0/setup.py | 25 + .../sunbird-auth-deploy/tasks/bootstrap.yml | 77 + .../sunbird-auth-deploy/tasks/deploy.yml | 109 + .../roles/sunbird-auth-deploy/tasks/main.yml | 7 + .../templates/Msg91Creds.json.j2 | 7 + .../templates/keycloak-bootstrap.conf.j2 | 13 + .../templates/keycloak-realm.j2 | 2388 +++++++++++++++++ .../templates/module.xml.j2 | 10 + .../templates/standalone-ha.xml | 571 ++++ .../templates/standalone.xml | 471 ++++ .../sunbird-auth-provision/defaults/main.yml | 10 + .../tasks/install-keycloak.yml | 51 + .../sunbird-auth-provision/tasks/main.yml | 3 + .../tasks/prerequisite.yml | 11 + .../templates/keycloak-service.j2 | 117 + ansible/sunbird-auth-deploy.yml | 8 + ansible/sunbird-auth-provision.yml | 9 + 110 files changed, 10129 insertions(+), 312 deletions(-) create mode 100644 ansible/artifacts/sunbird/email/html/email-test.ftl create mode 100644 ansible/artifacts/sunbird/email/html/email-verification.ftl create mode 100644 ansible/artifacts/sunbird/email/html/event-login_error.ftl create mode 100644 ansible/artifacts/sunbird/email/html/event-remove_totp.ftl create mode 100644 ansible/artifacts/sunbird/email/html/event-update_password.ftl create mode 100644 ansible/artifacts/sunbird/email/html/event-update_totp.ftl create mode 100644 ansible/artifacts/sunbird/email/html/executeActions.ftl create mode 100644 ansible/artifacts/sunbird/email/html/identity-provider-link.ftl create mode 100644 ansible/artifacts/sunbird/email/html/password-reset.ftl create mode 100644 ansible/artifacts/sunbird/email/messages/messages_ca.properties create mode 100644 ansible/artifacts/sunbird/email/messages/messages_de.properties create mode 100644 ansible/artifacts/sunbird/email/messages/messages_en.properties create mode 100644 ansible/artifacts/sunbird/email/messages/messages_es.properties create mode 100644 ansible/artifacts/sunbird/email/messages/messages_fr.properties create mode 100644 ansible/artifacts/sunbird/email/messages/messages_it.properties create mode 100644 ansible/artifacts/sunbird/email/messages/messages_ja.properties create mode 100644 ansible/artifacts/sunbird/email/messages/messages_lt.properties create mode 100644 ansible/artifacts/sunbird/email/messages/messages_no.properties create mode 100644 ansible/artifacts/sunbird/email/messages/messages_pt_BR.properties create mode 100644 ansible/artifacts/sunbird/email/messages/messages_ru.properties create mode 100644 ansible/artifacts/sunbird/email/messages/messages_sv.properties create mode 100644 ansible/artifacts/sunbird/email/text/email-test.ftl create mode 100644 ansible/artifacts/sunbird/email/text/email-verification.ftl create mode 100644 ansible/artifacts/sunbird/email/text/event-login_error.ftl create mode 100644 ansible/artifacts/sunbird/email/text/event-remove_totp.ftl create mode 100644 ansible/artifacts/sunbird/email/text/event-update_password.ftl create mode 100644 ansible/artifacts/sunbird/email/text/event-update_totp.ftl create mode 100644 ansible/artifacts/sunbird/email/text/executeActions.ftl create mode 100644 ansible/artifacts/sunbird/email/text/identity-provider-link.ftl create mode 100644 ansible/artifacts/sunbird/email/text/password-reset.ftl create mode 100644 ansible/artifacts/sunbird/email/theme.properties create mode 100644 ansible/artifacts/sunbird/login/login-page-expired.ftl create mode 100644 ansible/artifacts/sunbird/login/login-reset-password.ftl create mode 100644 ansible/artifacts/sunbird/login/login-update-password.ftl create mode 100644 ansible/artifacts/sunbird/login/login.ftl rename ansible/artifacts/sunbird/login/{resources => }/messages/messages_en.properties (87%) create mode 100644 ansible/artifacts/sunbird/login/resources/css/fonts/notosans/cyrillic-ext.woff2 create mode 100644 ansible/artifacts/sunbird/login/resources/css/fonts/notosans/cyrillic.woff2 create mode 100644 ansible/artifacts/sunbird/login/resources/css/fonts/notosans/devanagari.woff2 create mode 100644 ansible/artifacts/sunbird/login/resources/css/fonts/notosans/greek-ext.woff2 create mode 100644 ansible/artifacts/sunbird/login/resources/css/fonts/notosans/greek.woff2 create mode 100644 ansible/artifacts/sunbird/login/resources/css/fonts/notosans/latin-ext.woff2 create mode 100644 ansible/artifacts/sunbird/login/resources/css/fonts/notosans/latin.woff2 create mode 100644 ansible/artifacts/sunbird/login/resources/css/fonts/notosans/notosans.css create mode 100644 ansible/artifacts/sunbird/login/resources/css/fonts/notosans/vietnamese.woff2 create mode 100644 ansible/artifacts/sunbird/login/resources/css/themes/default/assets/fonts/icons.eot create mode 100644 ansible/artifacts/sunbird/login/resources/css/themes/default/assets/fonts/icons.svg create mode 100644 ansible/artifacts/sunbird/login/resources/css/themes/default/assets/fonts/icons.ttf create mode 100644 ansible/artifacts/sunbird/login/resources/css/themes/default/assets/fonts/icons.woff create mode 100644 ansible/artifacts/sunbird/login/resources/css/themes/default/assets/fonts/icons.woff2 create mode 100644 ansible/artifacts/sunbird/login/resources/img/bg.svg create mode 100644 ansible/artifacts/sunbird/login/resources/img/diksha_gov_logo.svg create mode 100644 ansible/artifacts/sunbird/login/resources/img/google.png create mode 100644 ansible/artifacts/sunbird/login/resources/js/login.js delete mode 100644 ansible/artifacts/sunbird/login/resources/login-reset-password.ftl delete mode 100644 ansible/artifacts/sunbird/login/resources/login-update-password.ftl delete mode 100644 ansible/artifacts/sunbird/login/resources/login.ftl create mode 100644 ansible/artifacts/sunbird/login/template.ftl rename ansible/artifacts/sunbird/login/{resources => }/theme.properties (84%) create mode 100644 ansible/roles/sunbird-auth-deploy/defaults/main.yml create mode 100644 ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/PKG-INFO create mode 100644 ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/README.md create mode 100644 ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak-realm.json create mode 100644 ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/__init__.py create mode 100644 ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/authorization/__init__.py create mode 100644 ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/authorization/permission.py create mode 100644 ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/authorization/policy.py create mode 100644 ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/authorization/role.py create mode 100644 ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/connection.py create mode 100644 ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/exceptions.py create mode 100644 ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/keycloak_admin.py create mode 100644 ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/keycloak_main.py create mode 100644 ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/keycloak_openid.py create mode 100644 ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/python_keycloak.egg-info/PKG-INFO create mode 100644 ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/python_keycloak.egg-info/SOURCES.txt create mode 100644 ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/python_keycloak.egg-info/dependency_links.txt create mode 100644 ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/python_keycloak.egg-info/requires.txt create mode 100644 ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/python_keycloak.egg-info/top_level.txt create mode 100644 ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/tests/__init__.py create mode 100644 ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/tests/test_connection.py create mode 100644 ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/urls_patterns.py create mode 100644 ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/python_keycloak.egg-info/PKG-INFO create mode 100644 ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/python_keycloak.egg-info/SOURCES.txt create mode 100644 ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/python_keycloak.egg-info/dependency_links.txt create mode 100644 ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/python_keycloak.egg-info/requires.txt create mode 100644 ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/python_keycloak.egg-info/top_level.txt create mode 100644 ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/roles.json create mode 100644 ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/setup.cfg create mode 100644 ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/setup.py create mode 100644 ansible/roles/sunbird-auth-deploy/tasks/bootstrap.yml create mode 100644 ansible/roles/sunbird-auth-deploy/tasks/deploy.yml create mode 100644 ansible/roles/sunbird-auth-deploy/tasks/main.yml create mode 100644 ansible/roles/sunbird-auth-deploy/templates/Msg91Creds.json.j2 create mode 100644 ansible/roles/sunbird-auth-deploy/templates/keycloak-bootstrap.conf.j2 create mode 100644 ansible/roles/sunbird-auth-deploy/templates/keycloak-realm.j2 create mode 100644 ansible/roles/sunbird-auth-deploy/templates/module.xml.j2 create mode 100644 ansible/roles/sunbird-auth-deploy/templates/standalone-ha.xml create mode 100644 ansible/roles/sunbird-auth-deploy/templates/standalone.xml create mode 100644 ansible/roles/sunbird-auth-provision/defaults/main.yml create mode 100644 ansible/roles/sunbird-auth-provision/tasks/install-keycloak.yml create mode 100644 ansible/roles/sunbird-auth-provision/tasks/main.yml create mode 100644 ansible/roles/sunbird-auth-provision/tasks/prerequisite.yml create mode 100644 ansible/roles/sunbird-auth-provision/templates/keycloak-service.j2 create mode 100644 ansible/sunbird-auth-deploy.yml create mode 100644 ansible/sunbird-auth-provision.yml diff --git a/ansible/artifacts/sunbird/email/html/email-test.ftl b/ansible/artifacts/sunbird/email/html/email-test.ftl new file mode 100644 index 0000000000..604415d22a --- /dev/null +++ b/ansible/artifacts/sunbird/email/html/email-test.ftl @@ -0,0 +1,5 @@ + + +${msg("emailTestBodyHtml",realmName)} + + diff --git a/ansible/artifacts/sunbird/email/html/email-verification.ftl b/ansible/artifacts/sunbird/email/html/email-verification.ftl new file mode 100644 index 0000000000..eb7682a272 --- /dev/null +++ b/ansible/artifacts/sunbird/email/html/email-verification.ftl @@ -0,0 +1,5 @@ + + +${msg("emailVerificationBodyHtml",link, linkExpiration, realmName)} + + diff --git a/ansible/artifacts/sunbird/email/html/event-login_error.ftl b/ansible/artifacts/sunbird/email/html/event-login_error.ftl new file mode 100644 index 0000000000..d31410307c --- /dev/null +++ b/ansible/artifacts/sunbird/email/html/event-login_error.ftl @@ -0,0 +1,5 @@ + + +${msg("eventLoginErrorBodyHtml",event.date,event.ipAddress)} + + diff --git a/ansible/artifacts/sunbird/email/html/event-remove_totp.ftl b/ansible/artifacts/sunbird/email/html/event-remove_totp.ftl new file mode 100644 index 0000000000..91699ea349 --- /dev/null +++ b/ansible/artifacts/sunbird/email/html/event-remove_totp.ftl @@ -0,0 +1,5 @@ + + +${msg("eventRemoveTotpBodyHtml",event.date, event.ipAddress)} + + diff --git a/ansible/artifacts/sunbird/email/html/event-update_password.ftl b/ansible/artifacts/sunbird/email/html/event-update_password.ftl new file mode 100644 index 0000000000..8a6da60a50 --- /dev/null +++ b/ansible/artifacts/sunbird/email/html/event-update_password.ftl @@ -0,0 +1,5 @@ + + +${msg("eventUpdatePasswordBodyHtml",event.date, event.ipAddress)} + + diff --git a/ansible/artifacts/sunbird/email/html/event-update_totp.ftl b/ansible/artifacts/sunbird/email/html/event-update_totp.ftl new file mode 100644 index 0000000000..c0190c7278 --- /dev/null +++ b/ansible/artifacts/sunbird/email/html/event-update_totp.ftl @@ -0,0 +1,5 @@ + + +${msg("eventUpdateTotpBodyHtml",event.date, event.ipAddress)} + + diff --git a/ansible/artifacts/sunbird/email/html/executeActions.ftl b/ansible/artifacts/sunbird/email/html/executeActions.ftl new file mode 100644 index 0000000000..f75e10fa2e --- /dev/null +++ b/ansible/artifacts/sunbird/email/html/executeActions.ftl @@ -0,0 +1,5 @@ + + +${msg("executeActionsBodyHtml",link, linkExpiration, realmName)} + + diff --git a/ansible/artifacts/sunbird/email/html/identity-provider-link.ftl b/ansible/artifacts/sunbird/email/html/identity-provider-link.ftl new file mode 100644 index 0000000000..9c2db808b2 --- /dev/null +++ b/ansible/artifacts/sunbird/email/html/identity-provider-link.ftl @@ -0,0 +1,5 @@ + + +${msg("identityProviderLinkBodyHtml", identityProviderAlias, realmName, identityProviderContext.username, link, linkExpiration)} + + \ No newline at end of file diff --git a/ansible/artifacts/sunbird/email/html/password-reset.ftl b/ansible/artifacts/sunbird/email/html/password-reset.ftl new file mode 100644 index 0000000000..88088d3d16 --- /dev/null +++ b/ansible/artifacts/sunbird/email/html/password-reset.ftl @@ -0,0 +1,5 @@ + + +${msg("passwordResetBodyHtml",link,(linkExpiration/60)?string["0"],realmName)} + + diff --git a/ansible/artifacts/sunbird/email/messages/messages_ca.properties b/ansible/artifacts/sunbird/email/messages/messages_ca.properties new file mode 100644 index 0000000000..7f8504ae08 --- /dev/null +++ b/ansible/artifacts/sunbird/email/messages/messages_ca.properties @@ -0,0 +1,21 @@ +emailVerificationSubject=Verificaci\u00F3 d''email +emailVerificationBody=Alg\u00FA ha creat un compte de {2} amb aquesta adre\u00E7a de correu electr\u00F2nic. Si has estat tu, fes clic a l''enlla\u00E7 seg\u00FCent per verificar la teva adre\u00E7a de correu electr\u00F2nic.\n\n{0}\n\nAquest enlla\u00E7 expirar\u00E0 en {1} minuts.\n\nSi tu no has creat aquest compte, simplement ignora aquest missatge. +emailVerificationBodyHtml=

    Alg\u00FA ha creat un compte de {2} amb aquesta adre\u00E7a de correu electr\u00F2nic. Si has estat tu, fes clic a l''enlla\u00E7 seg\u00FCent per verificar la teva adre\u00E7a de correu electr\u00F2nic.

    {0}

    Aquest enlla\u00E7 expirar\u00E0 en {1} minuts.

    Si tu no has creat aquest compte, simplement ignora aquest missatge.

    +passwordResetSubject=Reinicia contrasenya +passwordResetBody=Alg\u00FA ha demanat de canviar les credencials del teu compte de {2}. Si has estat tu, fes clic a l''enlla\u00E7 seg\u00FCent per a reiniciar-les.\n\n{0}\n\nAquest enlla\u00E7 expirar\u00E0 en {1} minuts.\n\nSi no vols reiniciar les teves credencials, simplement ignora aquest missatge i no es realitzar\u00E0 cap canvi. +passwordResetBodyHtml=

    Alg\u00FA ha demanat de canviar les credencials del teu compte de {2}. Si has estat tu, fes clic a l''enlla\u00E7 seg\u00FCent per a reiniciar-les.

    {0}

    Aquest enlla\u00E7 expirar\u00E0 en {1} minuts.

    Si no vols reiniciar les teves credencials, simplement ignora aquest missatge i no es realitzar\u00E0 cap canvi.

    +executeActionsSubject=Actualitza el teu compte +executeActionsBody=L''administrador ha sol\u00B7licitat que actualitzis el teu compte de {2}. Fes clic a l''enlla\u00E7 inferior per iniciar aquest proc\u00E9s.\n\n{0}\n\nAquest enlla\u00E7 expirar\u00E0 en {1} minutes.\n\nSi no est\u00E0s al tant que l''administrador hagi sol\u00B7licitat aix\u00F2, simplement ignora aquest missatge i no es realitzar\u00E0 cap canvi. +executeActionsBodyHtml=

    L''administrador ha sol\u00B7licitat que actualitzis el teu compte de {2}. Fes clic a l''enlla\u00E7 inferior per iniciar aquest proc\u00E9s.

    {0}

    Aquest enlla\u00E7 expirar\u00E0 en {1} minutes.

    Si no est\u00E0s al tant que l''administrador hagi sol\u00B7licitat aix\u00F2, simplement ignora aquest missatge i no es realitzar\u00E0 cap canvi.

    +eventLoginErrorSubject=Fallada en l''inici de sessi\u00F3 +eventLoginErrorBody=S''ha detectat un intent d''acc\u00E9s fallit al teu compte el {0} des de {1}. Si no has estat tu, si us plau contacta amb l''administrador. +eventLoginErrorBodyHtml=

    S''ha detectat un intent d''acc\u00E9s fallit al teu compte el {0} des de {1}. Si no has estat tu, si us plau contacta amb l''administrador.

    +eventRemoveTotpSubject=Esborrat TOTP +eventRemoveTotpBody=TOTP s''ha eliminat del teu compte el {0} des de {1}. Si no has estat tu, per favor contacta amb l''administrador. +eventRemoveTotpBodyHtml=

    TOTP s''ha eliminat del teu compte el {0} des de {1}. Si no has estat tu, si us plau contacta amb l''administrador. +eventUpdatePasswordSubject=Actualitzaci\u00F3 de contrasenya +eventUpdatePasswordBody=La teva contrasenya s''ha actualitzat el {0} des de {1}. Si no has estat tu, si us plau contacta amb l''administrador. +eventUpdatePasswordBodyHtml=

    La teva contrasenya s''ha actualitzat el {0} des de {1}. Si no has estat tu, si us plau contacta amb l''administrador.

    +eventUpdateTotpSubject=Actualitzaci\u00F3 de TOTP +eventUpdateTotpBody=TOTP s''ha actualitzat al teu compte el {0} des de {1}. Si no has estat tu, si us plau contacta amb l''administrador. +eventUpdateTotpBodyHtml=

    TOTP s''ha actualitzat al teu compte el {0} des de {1}. Si no has estat tu, si us plau contacta amb l''administrador.

    diff --git a/ansible/artifacts/sunbird/email/messages/messages_de.properties b/ansible/artifacts/sunbird/email/messages/messages_de.properties new file mode 100644 index 0000000000..9068321b7b --- /dev/null +++ b/ansible/artifacts/sunbird/email/messages/messages_de.properties @@ -0,0 +1,24 @@ +emailVerificationSubject=E-Mail verifizieren +emailVerificationBody=Jemand hat ein {2} Konto mit dieser E-Mail Adresse erstellt. Falls Sie das waren, dann klicken Sie auf den Link, um die E-Mail Adresse zu verifizieren.\n\n{0}\n\nDieser Link wird in {1} Minuten ablaufen.\n\nFalls Sie dieses Konto nicht erstellt haben, dann k\u00F6nnen sie diese Nachricht ignorieren. +emailVerificationBodyHtml=

    Jemand hat ein {2} Konto mit dieser E-Mail Adresse erstellt. Falls das Sie waren, klicken Sie auf den Link, um die E-Mail Adresse zu verifizieren.

    {0}

    Dieser Link wird in {1} Minuten ablaufen.

    Falls Sie dieses Konto nicht erstellt haben, dann k\u00F6nnen sie diese Nachricht ignorieren.

    +identityProviderLinkSubject=Link {0} +identityProviderLinkBody=Es wurde beantragt Ihren Account {1} mit dem Account {0} von Benutzer {2} zu verlinken. Sollten Sie dies beantragt haben, klicken Sie auf den unten stehenden Link.\n\n{3}\n\n Die G\u00FCltigkeit des Links wird in {4} Minuten verfallen.\n\nSollten Sie Ihren Account nicht verlinken wollen, ignorieren Sie diese Nachricht. Wenn Sie die Accounts verlinken wird ein Login auf {1} \u00FCber {0} erm\u00F6glicht. +identityProviderLinkBodyHtml=

    Es wurde beantragt Ihren Account {1} mit dem Account {0} von Benutzer {2} zu verlinken. Sollten Sie dies beantragt haben, klicken Sie auf den unten stehenden Link.

    Link zur Best\u00E4tigung der Kontoverkn\u00FCpfung

    Die G\u00FCltigkeit des Links wird in {4} Minuten verfallen.

    Sollten Sie Ihren Account nicht verlinken wollen, ignorieren Sie diese Nachricht. Wenn Sie die Accounts verlinken wird ein Login auf {1} \u00FCber {0} erm\u00F6glicht.

    +passwordResetSubject=Passwort zur\u00FCcksetzen +passwordResetBody=Es wurde eine \u00C4nderung der Anmeldeinformationen f\u00FCr Ihren Account {2} angefordert. Wenn Sie diese \u00C4nderung beantragt haben, klicken Sie auf den unten stehenden Link.\n\n{0}\n\nDie G\u00FCltigkeit des Links wird in {1} Minuten verfallen.\n\nSollten Sie keine \u00C4nderung vollziehen wollen k\u00F6nnen Sie diese Nachricht ignorieren und an Ihrem Account wird nichts ge\u00E4ndert. +passwordResetBodyHtml=

    Es wurde eine \u00C4nderung der Anmeldeinformationen f\u00FCr Ihren Account {2} angefordert. Wenn Sie diese \u00C4nderung beantragt haben, klicken Sie auf den unten stehenden Link.

    Link zum Zur\u00FCcksetzen von Anmeldeinformationen

    Die G\u00FCltigkeit des Links wird in {1} Minuten verfallen.

    Sollten Sie keine \u00C4nderung vollziehen wollen k\u00F6nnen Sie diese Nachricht ignorieren und an Ihrem Account wird nichts ge\u00E4ndert.

    +executeActionsSubject=Aktualisieren Sie Ihr Konto +executeActionsBody=Ihr Administrator hat Sie aufgefordert Ihren Account {2} zu aktualisieren. Klicken Sie auf den unten stehenden Link um den Prozess zu starten.\n\n{0}\n\nDie G\u00FCltigkeit des Links wird in {1} Minuten verfallen.\n\nSollten Sie sich dieser Aufforderung nicht bewusst sein, ignorieren Sie diese Nachricht und Ihr Account bleibt unver\u00E4ndert. +executeActionsBodyHtml=

    Ihr Administrator hat Sie aufgefordert Ihren Account {2} zu aktualisieren. Klicken Sie auf den unten stehenden Link um den Prozess zu starten.

    Link zum Account-Update

    Die G\u00FCltigkeit des Links wird in {1} Minuten verfallen.

    Sollten Sie sich dieser Aufforderung nicht bewusst sein, ignorieren Sie diese Nachricht und Ihr Account bleibt unver\u00E4ndert.

    +eventLoginErrorSubject=Fehlgeschlagene Anmeldung +eventLoginErrorBody=Jemand hat um {0} von {1} versucht, sich mit ihrem Konto anzumelden. Falls das nicht Sie waren, dann kontaktieren Sie bitte Ihren Admin. +eventLoginErrorBodyHtml=

    Jemand hat um {0} von {1} versucht, sich mit ihrem Konto anzumelden. Falls das nicht Sie waren, dann kontaktieren Sie bitte Ihren Admin.

    +eventRemoveTotpSubject=TOTP Entfernt +eventRemoveTotpBody=TOTP wurde von ihrem Konto am {0} von {1} entfernt. Falls das nicht Sie waren, dann kontaktieren Sie bitte Ihren Admin. +eventRemoveTotpBodyHtml=

    TOTP wurde von ihrem Konto am {0} von {1} entfernt. Falls das nicht Sie waren, dann kontaktieren Sie bitte Ihren Admin.

    +eventUpdatePasswordSubject=Passwort Aktualisiert +eventUpdatePasswordBody=Ihr Passwort wurde am {0} von {1} ge\u00E4ndert. Falls das nicht Sie waren, dann kontaktieren Sie bitte Ihren Admin. +eventUpdatePasswordBodyHtml=

    Ihr Passwort wurde am {0} von {1} ge\u00E4ndert. Falls das nicht Sie waren, dann kontaktieren Sie bitte Ihren Admin.

    +eventUpdateTotpSubject=TOTP Aktualisiert +eventUpdateTotpBody=TOTP wurde am {0} von {1} ge\u00E4ndert. Falls das nicht Sie waren, dann kontaktieren Sie bitte Ihren Admin. +eventUpdateTotpBodyHtml=

    TOTP wurde am {0} von {1} ge\u00E4ndert. Falls das nicht Sie waren, dann kontaktieren Sie bitte Ihren Admin.

    diff --git a/ansible/artifacts/sunbird/email/messages/messages_en.properties b/ansible/artifacts/sunbird/email/messages/messages_en.properties new file mode 100644 index 0000000000..c2085ec559 --- /dev/null +++ b/ansible/artifacts/sunbird/email/messages/messages_en.properties @@ -0,0 +1,27 @@ +emailVerificationSubject=Verify email +emailVerificationBody=Someone has created a {2} account with this email address. If this was you, click the link below to verify your email address\n\n{0}\n\nThis link will expire within {1} minutes.\n\nIf you didn''t create this account, just ignore this message. +emailVerificationBodyHtml=

    Someone has created a {2} account with this email address. If this was you, click the link below to verify your email address

    Link to e-mail address verification

    This link will expire within {1} minutes.

    If you didn''t create this account, just ignore this message.

    +emailTestSubject=[KEYCLOAK] - SMTP test message +emailTestBody=This is a test message +emailTestBodyHtml=

    This is a test message

    +identityProviderLinkSubject=Link {0} +identityProviderLinkBody=Someone wants to link your "{1}" account with "{0}" account of user {2} . If this was you, click the link below to link accounts\n\n{3}\n\nThis link will expire within {4} minutes.\n\nIf you don''t want to link account, just ignore this message. If you link accounts, you will be able to login to {1} through {0}. +identityProviderLinkBodyHtml=

    Someone wants to link your {1} account with {0} account of user {2} . If this was you, click the link below to link accounts

    Link to confirm account linking

    This link will expire within {4} minutes.

    If you don''t want to link account, just ignore this message. If you link accounts, you will be able to login to {1} through {0}.

    +passwordResetSubject=Reset password +passwordResetBody=Someone just requested to change your {2} account''s credentials. If this was you, click on the link below to reset them.\n\n{0}\n\nThis link and code will expire within {1} minutes.\n\nIf you don''t want to reset your credentials, just ignore this message and nothing will be changed. +passwordResetBodyHtml=

    Someone just requested to change your {2} account''s credentials. If this was you, click on the link below to reset them.

    Link to reset credentials

    This link will expire within {1} Hours.

    If you don''t want to reset your credentials, just ignore this message and nothing will be changed.

    +executeActionsSubject=Update Your Account +executeActionsBody=Your administrator has just requested that you update your {2} account. Click on the link below to start this process.\n\n{0}\n\nThis link will expire within {1} minutes.\n\nIf you are unaware that your admin has requested this, just ignore this message and nothing will be changed. +executeActionsBodyHtml=

    Your administrator has just requested that you update your {2} account. Click on the link below to start this process.

    Link to account update

    This link will expire within {1} minutes.

    If you are unaware that your admin has requested this, just ignore this message and nothing will be changed.

    +eventLoginErrorSubject=Login error +eventLoginErrorBody=A failed login attempt was detected to your account on {0} from {1}. If this was not you, please contact an admin. +eventLoginErrorBodyHtml=

    A failed login attempt was detected to your account on {0} from {1}. If this was not you, please contact an admin.

    +eventRemoveTotpSubject=Remove TOTP +eventRemoveTotpBody=TOTP was removed from your account on {0} from {1}. If this was not you, please contact an admin. +eventRemoveTotpBodyHtml=

    TOTP was removed from your account on {0} from {1}. If this was not you, please contact an admin.

    +eventUpdatePasswordSubject=Update password +eventUpdatePasswordBody=Your password was changed on {0} from {1}. If this was not you, please contact an admin. +eventUpdatePasswordBodyHtml=

    Your password was changed on {0} from {1}. If this was not you, please contact an admin.

    +eventUpdateTotpSubject=Update TOTP +eventUpdateTotpBody=TOTP was updated for your account on {0} from {1}. If this was not you, please contact an admin. +eventUpdateTotpBodyHtml=

    TOTP was updated for your account on {0} from {1}. If this was not you, please contact an admin.

    diff --git a/ansible/artifacts/sunbird/email/messages/messages_es.properties b/ansible/artifacts/sunbird/email/messages/messages_es.properties new file mode 100644 index 0000000000..16160143c7 --- /dev/null +++ b/ansible/artifacts/sunbird/email/messages/messages_es.properties @@ -0,0 +1,21 @@ +emailVerificationSubject=Verificaci\u00F3n de email +emailVerificationBody=Alguien ha creado una cuenta de {2} con esta direcci\u00F3n de email. Si has sido t\u00FA, haz click en el enlace siguiente para verificar tu direcci\u00F3n de email.\n\n{0}\n\nEste enlace expirar\u00E1 en {1} minutos.\n\nSi t\u00FA no has creado esta cuenta, simplemente ignora este mensaje. +emailVerificationBodyHtml=

    Alguien ha creado una cuenta de {2} con esta direcci\u00F3n de email. Si has sido t\u00FA, haz click en el enlace siguiente para verificar tu direcci\u00F3n de email.

    {0}

    Este enlace expirar\u00E1 en {1} minutos.

    Si t\u00FA no has creado esta cuenta, simplemente ignora este mensaje.

    +passwordResetSubject=Reiniciar contrase\u00F1a +passwordResetBody=Alguien ha solicitado cambiar las credenciales de tu cuenta de {2}. Si has sido t\u00FA, haz clic en el enlace siguiente para reiniciarlas.\n\n{0}\n\nEste enlace expirar\u00E1 en {1} minutos.\n\nSi no quieres reiniciar tus credenciales, simplemente ignora este mensaje y no se realizar\u00E1 ning\u00FAn cambio. +passwordResetBodyHtml=

    Alguien ha solicitado cambiar las credenciales de tu cuenta de {2}. Si has sido t\u00FA, haz clic en el enlace siguiente para reiniciarlas.

    {0}

    Este enlace expirar\u00E1 en {1} minutos.

    Si no quieres reiniciar tus credenciales, simplemente ignora este mensaje y no se realizar\u00E1 ning\u00FAn cambio.

    +executeActionsSubject=Actualiza tu cuenta +executeActionsBody=El administrador ha solicitado que actualices tu cuenta de {2}. Haz clic en el enlace inferior para iniciar este proceso.\n\n{0}\n\nEste enlace expirar\u00E1 en {1} minutes.\n\nSi no est\u00E1s al tanto de que el administrador haya solicitado esto, simplemente ignora este mensaje y no se realizar\u00E1 ning\u00FAn cambio. +executeActionsBodyHtml=

    El administrador ha solicitado que actualices tu cuenta de {2}. Haz clic en el enlace inferior para iniciar este proceso.

    {0}

    Este enlace expirar\u00E1 en {1} minutes.

    Si no est\u00E1s al tanto de que el administrador haya solicitado esto, simplemente ignora este mensaje y no se realizar\u00E1 ning\u00FAn cambio.

    +eventLoginErrorSubject=Fallo en el inicio de sesi\u00F3n +eventLoginErrorBody=Se ha detectado un intento de acceso fallido a tu cuenta el {0} desde {1}. Si no has sido t\u00FA, por favor contacta con el administrador. +eventLoginErrorBodyHtml=

    Se ha detectado un intento de acceso fallido a tu cuenta el {0} desde {1}. Si no has sido t\u00FA, por favor contacta con el administrador.

    +eventRemoveTotpSubject=Borrado TOTP +eventRemoveTotpBody=TOTP fue eliminado de tu cuenta el {0} desde {1}. Si no has sido t\u00FA, por favor contacta con el administrador. +eventRemoveTotpBodyHtml=

    TOTP fue eliminado de tu cuenta el {0} desde {1}. Si no has sido t\u00FA, por favor contacta con el administrador.

    +eventUpdatePasswordSubject=Actualizaci\u00F3n de contrase\u00F1a +eventUpdatePasswordBody=Tu contrase\u00F1a se ha actualizado el {0} desde {1}. Si no has sido t\u00FA, por favor contacta con el administrador. +eventUpdatePasswordBodyHtml=

    Tu contrase\u00F1a se ha actualizado el {0} desde {1}. Si no has sido t\u00FA, por favor contacta con el administrador.

    +eventUpdateTotpSubject=Actualizaci\u00F3n de TOTP +eventUpdateTotpBody=TOTP se ha actualizado en tu cuenta el {0} desde {1}. Si no has sido t\u00FA, por favor contacta con el administrador. +eventUpdateTotpBodyHtml=

    TOTP se ha actualizado en tu cuenta el {0} desde {1}. Si no has sido t\u00FA, por favor contacta con el administrador.

    diff --git a/ansible/artifacts/sunbird/email/messages/messages_fr.properties b/ansible/artifacts/sunbird/email/messages/messages_fr.properties new file mode 100644 index 0000000000..3467dec80c --- /dev/null +++ b/ansible/artifacts/sunbird/email/messages/messages_fr.properties @@ -0,0 +1,21 @@ +emailVerificationSubject=V\u00e9rification du courriel +emailVerificationBody=Quelqu''un vient de cr\u00e9er un compte "{2}" avec votre courriel. Si vous \u00eates \u00e0 l''origine de cette requ\u00eate, veuillez cliquer sur le lien ci-dessous afin de v\u00e9rifier votre adresse de courriel\n\n{0}\n\nCe lien expire dans {1} minute(s).\n\nSinon, veuillez ignorer ce message. +emailVerificationBodyHtml=

    Quelqu''un vient de cr\u00e9er un compte "{2}" avec votre courriel. Si vous \u00eates \u00e0 l''origine de cette requ\u00eate, veuillez cliquer sur le lien ci-dessous afin de v\u00e9rifier votre adresse de courriel

    {0}

    Ce lien expire dans {1} minute(s).

    Sinon, veuillez ignorer ce message.

    +passwordResetSubject=R\u00e9initialiser le mot de passe +passwordResetBody=Quelqu''un vient de demander une r\u00e9initialisation de mot de passe pour votre compte {2}. Si vous \u00eates \u00e0 l''origine de cette requ\u00eate, veuillez cliquer sur le lien ci-dessous pour le mettre \u00e0 jour.\n\n{0}\n\nCe lien expire dans {1} minute(s).\n\nSinon, veuillez ignorer ce message ; aucun changement ne sera effectu\u00e9 sur votre compte. +passwordResetBodyHtml=

    Quelqu''un vient de demander une r\u00e9initialisation de mot de passe pour votre compte {2}. Si vous \u00eates \u00e0 l''origine de cette requ\u00eate, veuillez cliquer sur le lien ci-dessous pour le mettre \u00e0 jour.

    {0}

    Ce lien expire dans {1} minute(s).

    Sinon, veuillez ignorer ce message ; aucun changement ne sera effectu\u00e9 sur votre compte.

    +executeActionsSubject=Mettre \u00e0 jour votre compte +executeActionsBody=Votre administrateur vient de demander une mise \u00e0 jour de votre compte {2}. Veuillez cliquer sur le lien ci-dessous afin de commencer le processus.\n\n{0}\n\nCe lien expire dans {1} minute(s).\n\nSi vous n''\u00eates pas \u00e0 l''origine de cette requ\u00eate, veuillez ignorer ce message ; aucun changement ne sera effectu\u00e9 sur votre compte. +executeActionsBodyHtml=

    Votre administrateur vient de demander une mise \u00e0 jour de votre compte {2}. Veuillez cliquer sur le lien ci-dessous afin de commencer le processus.

    {0}

    Ce lien expire dans {1} minute(s).

    Si vous n''\u00eates pas \u00e0 l''origine de cette requ\u00eate, veuillez ignorer ce message ; aucun changement ne sera effectu\u00e9 sur votre compte.

    +eventLoginErrorSubject=Erreur de connexion +eventLoginErrorBody=Une tentative de connexion a \u00e9t\u00e9 d\u00e9tect\u00e9e sur votre compte {0} depuis {1}. Si vous n''\u00eates pas \u00e0 l''origine de cette requ\u00eate, veuillez contacter votre administrateur. +eventLoginErrorBodyHtml=

    Une tentative de connexion a \u00e9t\u00e9 d\u00e9tect\u00e9e sur votre compte {0} depuis {1}. Si vous n''\u00eates pas \u00e0 l''origine de cette requ\u00eate, veuillez contacter votre administrateur.

    +eventRemoveTotpSubject=Suppression du TOTP +eventRemoveTotpBody=Le TOTP a \u00e9t\u00e9 supprim\u00e9 de votre compte {0} depuis {1}. Si vous n''\u00e9tiez pas \u00e0 l''origine de cette requ\u00eate, veuillez contacter votre administrateur. +eventRemoveTotpBodyHtml=

    Le TOTP a \u00e9t\u00e9 supprim\u00e9 de votre compte {0} depuis {1}. Si vous n''\u00e9tiez pas \u00e0 l''origine de cette requ\u00eate, veuillez contacter votre administrateur.

    +eventUpdatePasswordSubject=Mise \u00e0 jour du mot de passe +eventUpdatePasswordBody=Votre mot de passe pour votre compte {0} a \u00e9t\u00e9 modifi\u00e9 depuis {1}. Si vous n''\u00e9tiez pas \u00e0 l''origine de cette requ\u00eate, veuillez contacter votre administrateur. +eventUpdatePasswordBodyHtml=

    Votre mot de passe pour votre compte {0} a \u00e9t\u00e9 modifi\u00e9 depuis {1}. Si vous n''\u00e9tiez pas \u00e0 l''origine de cette requ\u00eate, veuillez contacter votre administrateur.

    +eventUpdateTotpSubject=Mise \u00e0 jour du TOTP +eventUpdateTotpBody=Le TOTP a \u00e9t\u00e9 mis \u00e0 jour pour votre compte {0} depuis {1}. Si vous n''\u00e9tiez pas \u00e0 l''origine de cette requ\u00eate, veuillez contacter votre administrateur. +eventUpdateTotpBodyHtml=

    Le TOTP a \u00e9t\u00e9 mis \u00e0 jour pour votre compte {0} depuis {1}. Si vous n''\u00e9tiez pas \u00e0 l''origine de cette requ\u00eate, veuillez contacter votre administrateur.

    diff --git a/ansible/artifacts/sunbird/email/messages/messages_it.properties b/ansible/artifacts/sunbird/email/messages/messages_it.properties new file mode 100644 index 0000000000..b877b91ab5 --- /dev/null +++ b/ansible/artifacts/sunbird/email/messages/messages_it.properties @@ -0,0 +1,24 @@ +emailVerificationSubject=Verifica l''email +emailVerificationBody=Qualcuno ha creato un {2} account con questo indirizzo email. Se sei stato tu, fai clic sul pulsante seguente per verificare il tuo indirizzo email\n\n{0}\n\nQuesto link scadr\u00e0 in {1} minuti.\n\nSe non sei stato tu a creare questo account, ignora questo messaggio. +emailVerificationBodyHtml=

    Qualcuno ha creato un {2} account con questo indirizzo email. Se sei stato tu, fai clic sul pulsante seguente per verificare il tuo indirizzo email

    {0}

    Questo link scadr\u00e0 in {1} minuti.

    Se non sei stato tu a creare questo account, ignora questo messaggio.

    +identityProviderLinkSubject=Link {0} +identityProviderLinkBody=Qualcuno vuole associare il tuo "{1}" account con "{0}" l''account dell''utente {2} . Se sei stato tu, fai clic sul pulsante seguente per associare gli account\n\n{3}\n\nQuesto link scadr\u00e0 in {4} minuti.\n\nSe non vuoi associare l''account, ignora questo messaggio. Se associ gli account, potrai accedere a {1} attraverso {0}. +identityProviderLinkBodyHtml=

    Qualcuno vuole associare il tuo {1} account con {0} l''account dell''utente {2} . Se sei stato tu, fai clic sul pulsante seguente per associare gli account

    {3}

    Questo link scadr\u00e0 in {4} minuti.

    Se non vuoi associare l''account, ignora questo messaggio. Se associ gli account, potrai accedere a {1} attraverso {0}.

    +passwordResetSubject=Reimposta la password +passwordResetBody= Qualcuno ha appena richiesto di cambiare le {2} credenziali di accesso al tuo account. Se sei stato tu, fai clic sul pulsante seguente reimpostarle.\n\n{0}\n\nQuesto link e codice scadranno in {1} minuti.\n\nSe non vuoi reimpostare le tue credenziali di accesso, ignora questo messaggio e non verr\u00e0 effettuato nessun cambio. +passwordResetBodyHtml=

    Qualcuno ha appena richiesto di cambiare le {2} credenziali di accesso al tuo account. Se sei stato tu, fai clic sul pulsante seguente reimpostarle.

    {0}

    Questo link scadr\u00e0 in {1} minuti.

    Se non vuoi reimpostare le tue credenziali di accesso, ignora questo messaggio e non verr\u00e0 effettuato nessun cambio.

    +executeActionsSubject=Aggiorna il tuo account +executeActionsBody=Il tuo amministratore ha appena richiesto un aggiornamento del tuo {2} account. Fai clic sul pulsante seguente per iniziare questo processo.\n\n{0}\n\nQuesto link scadr\u00e0 in {1} minuti.\n\nSe non sei a conoscenza della richiesta del tuo amministratore, ignora questo messaggio e non verr\u00e0 effettuato nessun cambio. +executeActionsBodyHtml=

    Il tuo amministratore ha appena richiesto un aggiornamento del tuo {2} account. Fai clic sul pulsante seguente per iniziare questo processo.

    {0}

    Questo link scadr\u00e0 in {1} minuti.

    Se non sei a conoscenza della richiesta del tuo amministratore, ignora questo messaggio e non verr\u00e0 effettuato nessun cambio.

    +eventLoginErrorSubject=Errore di accesso +eventLoginErrorBody=\u00c8 stato rilevato un tentativo fallito di accesso al tuo account il {0} da {1}. Se non sei stato tu, per favore contatta l''amministratore. +eventLoginErrorBodyHtml=

    \u00c8 stato rilevato un tentativo fallito di accesso al tuo account il {0} da {1}. Se non sei stato tu, per favore contatta l''amministratore.

    +eventRemoveTotpSubject=Rimuovi TOTP (Password temporanea valida una volta sola) +eventRemoveTotpBody=TOTP (Password temporanea valida una volta sola) \u00e8 stata rimossa dal tuo account il {0} da {1}. Se non sei stato tu, per favore contatta l''amministratore. +eventRemoveTotpBodyHtml=

    TOTP (Password temporanea valida una volta sola) \u00e8 stata rimossa dal tuo account il {0} da {1}. Se non sei stato tu, per favore contatta l''amministratore.

    +eventUpdatePasswordSubject=Aggiornamento password +eventUpdatePasswordBody=La tua password \u00e8 stata cambiata il {0} da {1}. Se non sei stato tu, per favore contatta l''amministratore. +eventUpdatePasswordBodyHtml=

    La tua password \u00e8 stata cambiata il {0} da {1}. Se non sei stato tu, per favore contatta l''amministratore.

    +eventUpdateTotpSubject=Aggiornamento TOTP (Password temporanea valida una volta sola) +eventUpdateTotpBody=TOTP (Password temporanea valida una volta sola) \u00e8 stata aggiornata per il tuo account il {0} da {1}. Se non sei stato tu, per favore contatta l''amministratore. +eventUpdateTotpBodyHtml=

    TOTP (Password temporanea valida una volta sola) \u00e8 stata aggiornata per il tuo account il {0} da {1}. Se non sei stato tu, per favore contatta l''amministratore.

    diff --git a/ansible/artifacts/sunbird/email/messages/messages_ja.properties b/ansible/artifacts/sunbird/email/messages/messages_ja.properties new file mode 100644 index 0000000000..a60ffe3d2b --- /dev/null +++ b/ansible/artifacts/sunbird/email/messages/messages_ja.properties @@ -0,0 +1,25 @@ +# encoding: utf-8 +emailVerificationSubject=Eメールの確認 +emailVerificationBody=このメールアドレスで {2} アカウントが作成されたました。以下のリンクをクリックしてメールアドレスの確認を完了してください。\n\n{0}\n\nこのリンクは {1} 分間だけ有効です。\n\nもしこのアカウントの作成に心当たりがない場合は、このメールを無視してください。 +emailVerificationBodyHtml=

    このメールアドレスで {2} アカウントが作成されました。以下のリンクをクリックしてメールアドレスの確認を完了してください。

    メールアドレスの確認

    このリンクは {1} 分間だけ有効です。

    もしこのアカウントの作成に心当たりがない場合は、このメールを無視してください。

    +identityProviderLinkSubject=リンク {0} +identityProviderLinkBody=あなたの "{1}" アカウントと {2} ユーザーの "{0}" アカウントのリンクが要求されました。以下のリンクをクリックしてアカウントのリンクを行ってください。\n\n{3}\n\nこのリンクは {4} 分間だけ有効です。\n\nもしアカウントのリンクを行わない場合は、このメッセージを無視してください。アカウントのリンクを行うことで、{0} 経由で {1} にログインすることができるようになります。 +identityProviderLinkBodyHtml=

    あなたの {1} アカウントと {2} ユーザーの {0} アカウントのリンクが要求されました。以下のリンクをクリックしてアカウントのリンクを行ってください。

    アカウントリンクの確認

    このリンクは {4} 分間だけ有効です。

    もしアカウントのリンクを行わない場合は、このメッセージを無視してください。アカウントのリンクを行うことで、{0} 経由で {1} にログインすることができるようになります。

    +passwordResetSubject=パスワードのリセット +passwordResetBody=あなたの {2} アカウントのパスワードの変更が要求されています。以下のリンクをクリックしてパスワードのリセットを行ってください。\n\n{0}\n\nこのリンクは {1} 分間だけ有効です。\n\nもしパスワードのリセットを行わない場合は、このメッセージを無視してください。何も変更されません。 +passwordResetBodyHtml=

    あなたの {2} アカウントのパスワードの変更が要求されています。以下のリンクをクリックしてパスワードのリセットを行ってください。

    パスワードのリセット

    このリンクは {1} 分間だけ有効です。

    もしパスワードのリセットを行わない場合は、このメッセージを無視してください。何も変更されません。

    +executeActionsSubject=アカウントの更新 +executeActionsBody=管理者よりあなたの {2} アカウントの更新が要求されています。以下のリンクをクリックしてこのプロセスを開始してください。\n\n{0}\n\nこのリンクは {1} 分間だけ有効です。\n\n管理者からのこの変更要求についてご存知ない場合は、このメッセージを無視してください。何も変更されません。 +executeActionsBodyHtml=

    管理者よりあなたの {2} アカウントの更新が要求されています。以下のリンクをクリックしてこのプロセスを開始してください。

    アカウントの更新

    このリンクは {1} 分間だけ有効です。

    管理者からのこの変更要求についてご存知ない場合は、このメッセージを無視してください。何も変更されません。

    +eventLoginErrorSubject=ログインエラー +eventLoginErrorBody={0} に {1} からのログイン失敗があなたのアカウントで検出されました。心当たりがない場合は、管理者に連絡してください。 +eventLoginErrorBodyHtml=

    {0} に {1} からのログイン失敗があなたのアカウントで検出されました。心当たりがない場合は管理者に連絡してください。

    +eventRemoveTotpSubject=TOTPの削除 +eventRemoveTotpBody={0} に {1} からの操作で TOTP が削除されました。心当たりがない場合は、管理者に連絡してください。 +eventRemoveTotpBodyHtml=

    {0} に {1} からの操作で TOTP が削除されました。心当たりがない場合は、管理者に連絡してください。

    +eventUpdatePasswordSubject=パスワードの更新 +eventUpdatePasswordBody={0} に {1} からの操作であなたのパスワードが変更されました。心当たりがない場合は、管理者に連絡してください。 +eventUpdatePasswordBodyHtml=

    {0} に {1} からの操作であなたのパスワードが変更されました。心当たりがない場合は、管理者に連絡してください。

    +eventUpdateTotpSubject=TOTPの更新 +eventUpdateTotpBody={0} に {1} からの操作で TOTP が更新されました。心当たりがない場合は、管理者に連絡してください。 +eventUpdateTotpBodyHtml=

    {0} に {1} からの操作で TOTP が更新されました。心当たりがない場合は、管理者に連絡してください。

    diff --git a/ansible/artifacts/sunbird/email/messages/messages_lt.properties b/ansible/artifacts/sunbird/email/messages/messages_lt.properties new file mode 100644 index 0000000000..a1b59ade93 --- /dev/null +++ b/ansible/artifacts/sunbird/email/messages/messages_lt.properties @@ -0,0 +1,24 @@ +emailVerificationSubject=El. pa\u0161to patvirtinimas +emailVerificationBody=Paskyra {2} sukurta naudojant \u0161\u012F el. pa\u0161to adres\u0105. Jei tai buvote J\u016Bs, tuomet paspauskite \u017Eemiau esan\u010Di\u0105 nuorod\u0105\n\n{0}\n\n\u0160i nuoroda galioja {1} min.\n\nJei paskyros nek\u016Br\u0117te, tuomet ignuoruokite \u0161\u012F lai\u0161k\u0105. +emailVerificationBodyHtml=

    Paskyra {2} sukurta naudojant \u0161\u012F el. pa\u0161to adres\u0105. Jei tao buvote J\u016Bs, tuomet paspauskite \u017Eemiau esan\u010Di\u0105 nuorod\u0105

    {0}

    \u0160i nuoroda galioja {1} min.

    nJei paskyros nek\u016Br\u0117te, tuomet ignuoruokite \u0161\u012F lai\u0161k\u0105.

    +identityProviderLinkSubject=S\u0105saja {0} +identityProviderLinkBody=Ka\u017Eas pageidauja susieti J\u016Bs\u0173 "{1}" paskyr\u0105 su "{0}" {2} naudotojo paskyr\u0105. Jei tai buvote J\u016Bs, tuomet paspauskite \u017Eemiau esan\u010Di\u0105 nuorod\u0105 nor\u0117dami susieti paskyras\n\n{3}\n\n\u0160i nuoroda galioja {4} min.\n\nJei paskyr\u0173 susieti nenorite, tuomet ignoruokite \u0161\u012F lai\u0161k\u0105. Jei paskyras susiesite, tuomet prie {1} gal\u0117siste prisijungti per {0}. +identityProviderLinkBodyHtml=

    \u017Eas pageidauja susieti J\u016Bs\u0173 {1} paskyr\u0105 su {0} {2} naudotojo paskyr\u0105. Jei tai buvote J\u016Bs, tuomet paspauskite \u017Eemiau esan\u010Di\u0105 nuorod\u0105 nor\u0117dami susieti paskyras

    {3}

    \u0160i nuoroda galioja {4} min.

    Jei paskyr\u0173 susieti nenorite, tuomet ignoruokite \u0161\u012F lai\u0161k\u0105. Jei paskyras susiesite, tuomet prie {1} gal\u0117siste prisijungti per {0}.

    +passwordResetSubject=Slapta\u017Eod\u017Eio atk\u016Brimas +passwordResetBody=Ka\u017Ekas pageidauja pakeisti J\u016Bs\u0173 paskyros {2} slapta\u017Eod\u012F. Jei tai buvote J\u016Bs, tuomet paspauskite \u017Eemiau esan\u010Di\u0105 nuorod\u0105 slapta\u017Eod\u017Eio pakeitimui.\n\n{0}\n\n\u0160i nuoroda ir kodas galioja {1} min.\n\nJei nepageidajate keisti slapta\u017Eod\u017Eio, tuomet ignoruokite \u0161\u012F lai\u0161k\u0105 ir niekas nebus pakeista. +passwordResetBodyHtml=

    Ka\u017Ekas pageidauja pakeisti J\u016Bs\u0173 paskyros {2} slapta\u017Eod\u012F. Jei tai buvote J\u016Bs, tuomet paspauskite \u017Eemiau esan\u010Di\u0105 nuorod\u0105 slapta\u017Eod\u017Eio pakeitimui.

    {0}

    \u0160i nuoroda ir kodas galioja {1} min.

    Jei nepageidajate keisti slapta\u017Eod\u017Eio, tuomet ignoruokite \u0161\u012F lai\u0161k\u0105 ir niekas nebus pakeista.

    +executeActionsSubject=Atnaujinkite savo paskyr\u0105 +executeActionsBody=Sistemos administratorius pageidauja, kad J\u016Bs atnaujintum\u0117te savo {2} paskyr\u0105. Paspauskite \u017Eemiau esan\u010Di\u0105 nuorod\u0105 paskyros duomen\u0173 atnaujinimui.\n\n{0}\n\n\u0160i nuoroda galioja {1} min.\n\nJei J\u016Bs neasate tikri, kad tai administratoriaus pageidavimas, tuomet ignoruokite \u0161\u012F lai\u0161k\u0105 ir niekas nebus pakeista. +executeActionsBodyHtml=

    Sistemos administratorius pageidauja, kad J\u016Bs atnaujintum\u0117te savo {2} paskyr\u0105. Paspauskite \u017Eemiau esan\u010Di\u0105 nuorod\u0105 paskyros duomen\u0173 atnaujinimui.

    {0}

    \u0160i nuoroda galioja {1} min.

    Jei J\u016Bs neasate tikri, kad tai administratoriaus pageidavimas, tuomet ignoruokite \u0161\u012F lai\u0161k\u0105 ir niekas nebus pakeista.

    +eventLoginErrorSubject=Nes\u0117kmingas bandymas prisijungti prie j\u016Bs\u0173 paskyros +eventLoginErrorBody=Bandymas prisijungti prie j\u016Bs\u0173 paskyros {0} i\u0161 {1} nes\u0117kmingas. Jei tai nebuvote j\u016Bs, tuomet susisiekite su administratoriumi +eventLoginErrorBodyHtml=

    Bandymas prisijungti prie j\u016Bs\u0173 paskyros {0} i\u0161 {1} nes\u0117kmingas. Jei tai nebuvote j\u016Bs, tuomet susisiekite su administratoriumi

    +eventRemoveTotpSubject=TOTP pa\u0161alinimas +eventRemoveTotpBody=Ka\u017Ekas pageidauja atsieti TOPT J\u016Bs\u0173 {1} paskyroje su {0}. Jei tai nebuvote J\u016Bs, tuomet susisiekite su administratoriumi +eventRemoveTotpBodyHtml=

    Ka\u017Ekas pageidauja atsieti TOPT J\u016Bs\u0173 {1} paskyroje su {0}. Jei tai nebuvote J\u016Bs, tuomet susisiekite su administratoriumi

    +eventUpdatePasswordSubject=Slapta\u017Eod\u017Eio atnaujinimas +eventUpdatePasswordBody={1} paskyroje {0} pakeisas j\u016Bs\u0173 slapta\u017Eodis. Jei J\u016Bs nekeit\u0117te, tuomet susisiekite su administratoriumi +eventUpdatePasswordBodyHtml=

    {1} paskyroje {0} pakeisas j\u016Bs\u0173 slapta\u017Eodis. Jei J\u016Bs nekeit\u0117te, tuomet susisiekite su administratoriumi

    +eventUpdateTotpSubject=TOTP atnaujinimas +eventUpdateTotpBody=TOTP J\u016Bs\u0173 {1} paskyroje su {0} buvo atnaujintas. Jei tai nebuvote J\u016Bs, tuomet susisiekite su administratoriumi +eventUpdateTotpBodyHtml=

    TOTP J\u016Bs\u0173 {1} paskyroje su {0} buvo atnaujintas. Jei tai nebuvote J\u016Bs, tuomet susisiekite su administratoriumi

    \ No newline at end of file diff --git a/ansible/artifacts/sunbird/email/messages/messages_no.properties b/ansible/artifacts/sunbird/email/messages/messages_no.properties new file mode 100644 index 0000000000..32334e9d8d --- /dev/null +++ b/ansible/artifacts/sunbird/email/messages/messages_no.properties @@ -0,0 +1,24 @@ +emailVerificationSubject=Bekreft e-postadresse +emailVerificationBody=Noen har opprettet en {2} konto med denne e-postadressen. Hvis dette var deg, klikk p\u00E5 lenken nedenfor for \u00E5 bekrefte e-postadressen din\n\n{0}\n\nDenne lenken vil utl\u00F8pe om {1} minutter.\n\nHvis du ikke opprettet denne kontoen, vennligst ignorer denne meldingen. +emailVerificationBodyHtml=

    Noen har opprettet en {2} konto med denne e-postadressen. Hvis dette var deg, klikk p\u00E5 lenken nedenfor for \u00E5 bekrefte e-postadressen din

    {0}

    Denne lenken vil utl\u00F8pe om {1} minutter.

    Hvis du ikke opprettet denne kontoen, vennligst ignorer denne meldingen.

    +identityProviderLinkSubject=Lenke {0} +identityProviderLinkBody=Noen vil koble din {1} konto med {0} konto til bruker {2}. Hvis dette var deg, klikk p\u00E5 lenken nedenfor for \u00E5 koble kontoene\n\n{3}\n\nDenne lenken vil utl\u00F8pe om {4} minutter\n\nHvis du ikke vil koble kontoene, vennligst ignorer denne meldingen. Hvis du kobler kontoene sammen vil du kunne logge inn til {1} gjennom {0}. +identityProviderLinkBodyHtml=

    Noen vil koble din {1} konto med {0} konto til bruker {2}. Hvis dette var deg, klikk p\u00E5 lenken nedenfor for \u00E5 koble kontoene.

    {3}

    Denne lenken vil utl\u00F8pe om {4} minutter.

    Hvis du ikke vil koble kontoene, vennligst ignorer denne meldingen. Hvis du kobler kontoene sammen vil du kunne logge inn til {1} gjennom {0}.

    +passwordResetSubject=Tilbakestill passord +passwordResetBody=Noen har bedt om \u00E5 endre innloggingsdetaljene til din konto {2}. Hvis dette var deg, klikk p\u00E5 lenken nedenfor for \u00E5 tilbakestille dem.\n\n{0}\n\nDenne lenken vil utl\u00F8pe om {1} minutter.\n\nHvis du ikke vil tilbakestille din innloggingsdata, vennligst ignorer denne meldingen og ingenting vil bli endret. +passwordResetBodyHtml=

    Noen har bedt om \u00E5 endre innloggingsdetaljene til din konto {2}. Hvis dette var deg, klikk p\u00E5 lenken nedenfor for \u00E5 tilbakestille dem.

    {0}

    Denne lenken vil utl\u00F8pe om {1} minutter.

    Hvis du ikke vil tilbakestille din innloggingsdata, vennligst ignorer denne meldingen og ingenting vil bli endret.

    +executeActionsSubject=Oppdater kontoen din +executeActionsBody=Administrator har anmodet at du oppdaterer din {2} konto. Klikk p\u00E5 lenken nedenfor for \u00E5 starte denne prosessen\n\n{0}\n\nDenne lenken vil utl\u00F8pe om {1} minutter.\n\nHvis du ikke var klar over at administrator har bedt om dette, vennligst ignorer denne meldingen og ingenting vil bli endret. +executeActionsBodyHtml=

    Administrator har anmodet at du oppdaterer din {2} konto. Klikk p\u00E5 linken nedenfor for \u00E5 starte denne prosessen.

    {0}

    Denne lenken vil utl\u00F8pe om {1} minutter.

    Hvis du ikke var klar over at administrator har bedt om dette, ignorer denne meldingen og ingenting vil bli endret.

    +eventLoginErrorSubject=Innlogging feilet +eventLoginErrorBody=Et mislykket innloggingsfors\u00F8k ble oppdaget p\u00E5 din konto p\u00E5 {0} fra {1}. Hvis dette ikke var deg, vennligst kontakt administrator. +eventLoginErrorBodyHtml=

    Et mislykket innloggingsfors\u00F8k ble oppdaget p\u00E5 din konto p\u00E5 {0} fra {1}. Hvis dette ikke var deg, vennligst kontakt administrator.

    +eventRemoveTotpSubject=Fjern engangskode +eventRemoveTotpBody=Engangskode ble fjernet fra kontoen din p\u00E5 {0} fra {1}. Hvis dette ikke var deg, vennligst kontakt administrator. +eventRemoveTotpBodyHtml=

    Engangskode ble fjernet fra kontoen din p\u00E5 {0} fra {1}. Hvis dette ikke var deg, vennligst kontakt administrator.

    +eventUpdatePasswordSubject=Oppdater passord +eventUpdatePasswordBody=Ditt passord ble endret i {0} fra {1}. Hvis dette ikke var deg, vennligst kontakt administrator. +eventUpdatePasswordBodyHtml=

    Ditt passord ble endret i {0} fra {1}. Hvis dette ikke var deg, vennligst kontakt administrator.

    +eventUpdateTotpSubject=Oppdater engangskode +eventUpdateTotpBody=Engangskode ble oppdatert for kontoen din p\u00E5 {0} fra {1}. Hvis dette ikke var deg, vennligst kontakt administrator. +eventUpdateTotpBodyHtml=

    Engangskode ble oppdatert for kontoen din p\u00E5 {0} fra {1}. Hvis dette ikke var deg, vennligst kontakt administrator.

    diff --git a/ansible/artifacts/sunbird/email/messages/messages_pt_BR.properties b/ansible/artifacts/sunbird/email/messages/messages_pt_BR.properties new file mode 100644 index 0000000000..cfe973767d --- /dev/null +++ b/ansible/artifacts/sunbird/email/messages/messages_pt_BR.properties @@ -0,0 +1,19 @@ +emailVerificationSubject=Verifica\u00E7\u00E3o de e-mail +emailVerificationBody=Algu\u00E9m criou uma conta {2} com este endere\u00E7o de e-mail. Se foi voc\u00EA, clique no link abaixo para verificar o seu endere\u00E7o de email\n\n{0}\n\nEste link ir\u00E1 expirar dentro de {1} minutos.\n\nSe n\u00E3o foi voc\u00EA que criou esta conta, basta ignorar esta mensagem. +emailVerificationBodyHtml=

    Algu\u00E9m criou uma conta {2} com este endere\u00E7o de e-mail. Se foi voc\u00EA, clique no link abaixo para verificar o seu endere\u00E7o de email

    {0}

    Este link ir\u00E1 expirar dentro de {1} minutos.

    Se n\u00E3o foi voc\u00EA que criou esta conta, basta ignorar esta mensagem.

    +identityProviderLinkSubject=Vincular {0} +identityProviderLinkBody=Algu\u00E9m quer vincular sua conta "{1}" com a conta "{0}" do usu\u00E1rio {2} . Se foi voc\u00EA, clique no link abaixo para vincular as contas.\n\n{3}\n\nEste link ir\u00E1 expirar em {4} minutos.\n\nSe voc\u00EA n\u00E3o quer vincular a conta, apenas ignore esta mensagem. Se voc\u00EA vincular as contas, voc\u00EA ser\u00E1 capaz de logar em {1} atr\u00E1v\u00E9s de {0}. +identityProviderLinkBodyHtml=

    Algu\u00E9m quer vincular sua conta {1} com a conta {0} do usu\u00E1rio {2} . Se foi voc\u00EA, clique no link abaixo para vincular as contas.

    {3}

    Este link ir\u00E1 expirar em {4} minutos.

    Se voc\u00EA n\u00E3o quer vincular a conta, apenas ignore esta mensagem. Se voc\u00EA vincular as contas, voc\u00EA ser\u00E1 capaz de logar em {1} atr\u00E1v\u00E9s de {0}.

    +passwordResetSubject=Redefini\u00E7\u00E3o de senha +eventLoginErrorSubject=Erro de login +eventLoginErrorBody=Uma tentativa de login mal sucedida para a sua conta foi detectada em {0} de {1}. Se n\u00E3o foi voc\u00EA, por favor, entre em contato com um administrador. +eventLoginErrorBodyHtml=

    Uma tentativa de login mal sucedida para a sua conta foi detectada em {0} de {1}. Se n\u00E3o foi voc\u00EA, por favor, entre em contato com um administrador.

    +eventRemoveTotpSubject=Remover TOTP +eventRemoveTotpBody=TOTP foi removido da sua conta em {0} de {1}. Se n\u00E3o foi voc\u00EA, por favor, entre em contato com um administrador. +eventRemoveTotpBodyHtml=

    TOTP foi removido da sua conta em {0} de {1}. Se n\u00E3o foi voc\u00EA, por favor, entre em contato com um administrador.

    +eventUpdatePasswordSubject=Atualiza\u00E7\u00E3o de senha +eventUpdatePasswordBody=Sua senha foi alterada em {0} de {1}. Se n\u00E3o foi voc\u00EA, por favor, entre em contato com um administrador. +eventUpdatePasswordBodyHtml=

    Sua senha foi alterada em {0} de {1}. Se n\u00E3o foi voc\u00EA, por favor, entre em contato com um administrador.

    +eventUpdateTotpSubject=Atualiza\u00E7\u00E3o TOTP +eventUpdateTotpBody=TOTP foi atualizado para a sua conta em {0} de {1}. Se n\u00E3o foi voc\u00EA, por favor, entre em contato com um administrador. +eventUpdateTotpBodyHtml=

    TOTP foi atualizado para a sua conta em {0} de {1}. Se n\u00E3o foi voc\u00EA, por favor, entre em contato com um administrador.

    \ No newline at end of file diff --git a/ansible/artifacts/sunbird/email/messages/messages_ru.properties b/ansible/artifacts/sunbird/email/messages/messages_ru.properties new file mode 100644 index 0000000000..135578863b --- /dev/null +++ b/ansible/artifacts/sunbird/email/messages/messages_ru.properties @@ -0,0 +1,25 @@ +# encoding: utf-8 +emailVerificationSubject=Подтверждение E-mail +emailVerificationBody=Кто-то создал учетную запись {2} с этим E-mail. Если это были Вы, нажмите на следующую ссылку для подтверждения вашего email\n\n{0}\n\nЭта ссылка устареет через {1} минут.\n\nЕсли Вы не создавали учетную запись, просто проигнорируйте это письмо. +emailVerificationBodyHtml=

    Кто-то создал учетную запись {2} с этим E-mail. Если это были Вы, нажмите по ссылке для подтверждения вашего E-mail

    {0}

    Эта ссылка устареет через {1} минут.

    Если Вы не создавали учетную запись, просто проигнорируйте это письмо.

    +identityProviderLinkSubject=Ссылка {0} +identityProviderLinkBody=Кто-то хочет связать вашу учетную запись "{1}" с "{0}" учетной записью пользователя {2} . Если это были Вы, нажмите по следующей ссылке, чтобы связать учетные записи\n\n{3}\n\nЭта ссылка устареет через {4} минут.\n\nЕсли это не хотите объединять учетные записи, просто проигнориуйте это письмо. После объединения учетных записей Вы можете войти в {1} через {0}. +identityProviderLinkBodyHtml=

    Кто-то хочет связать вашу учетную запись {1} с {0} учетной записью пользователя {2} . Если это были Вы, нажмите по следующей ссылке, чтобы связать учетные записи

    {3}

    Эта ссылка устареет через {4} минут.

    Если это не хотите объединять учетные записи, просто проигнориуйте это письмо. После объединения учетных записей Вы можете войти в {1} через {0}.

    +passwordResetSubject=Сброс пароля +passwordResetBody=Кто-то только что запросил изменение пароля от Вашей учетной записи {2}. Если это были Вы, нажмите на следующую ссылку, чтобы сбросить его.\n\n{0}\n\nЭта ссылка устареет через {1} минут.\n\nЕсли Вы не хотите сбрасывать пароль, просто проигнорируйте это письмо. +passwordResetBodyHtml=

    Кто-то только что запросил изменение пароля от Вашей учетной записи {2}. Если это были Вы, нажмите на следующую ссылку, чтобы сбросить его.

    {0}

    Эта ссылка устареет через {1} минут.

    Если Вы не хотите сбрасывать пароль, просто проигнорируйте это письмо и ничего не изменится.

    +executeActionsSubject=Обновление Вашей учетной записи +executeActionsBody=Администратор просит Вас обновить данные Вашей учетной записи {2}. Нажмите по следующей ссылке чтобы начать этот процесс.\n\n{0}\n\nЭта ссылка устареет через {1} минут.\n\nЕсли у вас есть подозрения, что администратор не мог сделать такой запрос, просто проигнорируйте это письмо. +executeActionsBodyHtml=

    Администратор просит Вас обновить данные Вашей учетной записи {2}. Нажмите по следующей ссылке чтобы начать этот процесс.

    {0}

    Эта ссылка устареет через {1} минут.

    Если у вас есть подозрения, что администратор не мог сделать такой запрос, просто проигнорируйте это письмо.

    +eventLoginErrorSubject=Ошибка входа +eventLoginErrorBody=Была зафиксирована неудачная попытка входа в Вашу учетную запись {0} с {1}. Если это были не Вы, пожалуйста, свяжитесь с администратором. +eventLoginErrorBodyHtml=

    Была зафиксирована неудачная попытка входа в Вашу учетную запись {0} с {1}. Если это были не Вы, пожалуйста, свяжитесь с администратором.

    +eventRemoveTotpSubject=Удалить TOTP +eventRemoveTotpBody=TOTP был удален из вашей учетной записи {0} c {1}. Если это были не Вы, пожалуйста, свяжитесь с администратором. +eventRemoveTotpBodyHtml=

    TOTP был удален из вашей учетной записи {0} c {1}. Если это были не Вы, пожалуйста, свяжитесь с администратором.

    +eventUpdatePasswordSubject=Обновление пароля +eventUpdatePasswordBody=Ваш пароль был изменен в {0} с {1}. Если это были не Вы, пожалуйста, свяжитесь с администратором. +eventUpdatePasswordBodyHtml=

    Ваш пароль был изменен в {0} с {1}. Если это были не Вы, пожалуйста, свяжитесь с администратором.

    +eventUpdateTotpSubject=Обновление TOTP +eventUpdateTotpBody=TOTP был обновлен в вашей учетной записи {0} с {1}. Если это были не Вы, пожалуйста, свяжитесь с администратором. +eventUpdateTotpBodyHtml=

    TOTP был обновлен в вашей учетной записи {0} с {1}. Если это были не Вы, пожалуйста, свяжитесь с администратором.

    diff --git a/ansible/artifacts/sunbird/email/messages/messages_sv.properties b/ansible/artifacts/sunbird/email/messages/messages_sv.properties new file mode 100644 index 0000000000..5b5ac6d582 --- /dev/null +++ b/ansible/artifacts/sunbird/email/messages/messages_sv.properties @@ -0,0 +1,25 @@ +# encoding: utf-8 +emailVerificationSubject=Verifiera e-post +emailVerificationBody=Någon har skapat ett {2} konto med den här e-postadressen. Om det var du, klicka då på länken nedan för att verifiera din e-postadress\n\n{0}\n\nDen här länken kommer att upphöra inom {1} minuter.\n\nOm det inte var du som skapade det här kontot, ignorera i så fall det här meddelandet. +emailVerificationBodyHtml=

    Någon har skapat ett {2} konto med den här e-postadressen. Om det var du, klicka då på länken nedan för att verifiera din e-postadress

    {0}

    Den här länken kommer att upphöra inom {1} minuter.

    Om det inte var du som skapade det här kontot, ignorera i så fall det här meddelandet.

    +identityProviderLinkSubject=Länk {0} +identityProviderLinkBody=Någon vill länka ditt "{1}" konto med "{0}" kontot tillhörande användaren {2} . Om det var du, klicka då på länken nedan för att länka kontona\n\n{3}\n\nDen här länken kommer att upphöra inom {4} minuter.\n\nOm du inte vill länka kontot, ignorera i så fall det här meddelandet. Om du länkar kontona, så kan du logga in till {1} genom {0}. +identityProviderLinkBodyHtml=

    Någon vill länka ditt {1} konto med {0} kontot tillhörande användaren {2} . Om det var du, klicka då på länken nedan för att länka kontona

    {3}

    Den här länken kommer att upphöra inom {4} minuter.

    Om du inte vill länka kontot, ignorera i så fall det här meddelandet. Om du länkar kontona, så kan du logga in till {1} genom {0}.

    +passwordResetSubject=Återställ lösenord +passwordResetBody=Någon har precis bett om att ändra ditt {2} kontos användaruppgifter. Om det var du, klicka då på länken nedan för att återställa dem.\n\n{0}\n\nDen här länken och koden kommer att upphöra inom {1} minuter.\n\nOm du inte vill återställa dina kontouppgifter, ignorera i så fall det här meddelandet så kommer inget att ändras. +passwordResetBodyHtml=

    Någon har precis bett om att ändra ditt {2} kontos användaruppgifter. Om det var du, klicka då på länken nedan för att återställa dem.

    {0}

    Den här länken och koden kommer att upphöra inom {1} minuter.

    Om du inte vill återställa dina kontouppgifter, ignorera i så fall det här meddelandet så kommer inget att ändras.

    +executeActionsSubject=Uppdatera Ditt Konto +executeActionsBody=Din administratör har precis bett om att du skall uppdatera ditt {2} konto. Klicka på länken för att påbörja processen.\n\n{0}\n\nDen här länken kommer att upphöra inom {1} minuter.\n\nOm du är omedveten om att din administratör har bett om detta, ignorera i så fall det här meddelandet så kommer inget att ändras. +executeActionsBodyHtml=

    Din administratör har precis bett om att du skall uppdatera ditt {2} konto. Klicka på länken för att påbörja processen.

    {0}

    Den här länken kommer att upphöra inom {1} minuter.

    Om du är omedveten om att din administratör har bett om detta, ignorera i så fall det här meddelandet så kommer inget att ändras.

    +eventLoginErrorSubject=Inloggningsfel +eventLoginErrorBody=Ett misslyckat inloggningsförsök har upptäckts på ditt konto på {0} från {1}. Om det inte var du, vänligen kontakta i så fall en administratör. +eventLoginErrorBodyHtml=

    Ett misslyckat inloggningsförsök har upptäckts på ditt konto den {0} från {1}. Om det inte var du, vänligen kontakta i så fall en administratör.

    +eventRemoveTotpSubject=Ta bort TOTP +eventRemoveTotpBody=TOTP togs bort från ditt konto den {0} från {1}. Om det inte var du, vänligen kontakta i så fall en administratör. +eventRemoveTotpBodyHtml=

    TOTP togs bort från ditt konto den {0} från {1}. Om det inte var du, vänligen kontakta i så fall en administratör.

    +eventUpdatePasswordSubject=Uppdatera lösenord +eventUpdatePasswordBody=Ditt lösenord ändrades den {0} från {1}. Om det inte var du, vänligen kontakta i så fall en administratör. +eventUpdatePasswordBodyHtml=

    Ditt lösenord ändrades den {0} från {1}. Om det inte var du, vänligen kontakta i så fall en administratör.

    +eventUpdateTotpSubject=Uppdatera TOTP +eventUpdateTotpBody=TOTP uppdaterades för ditt konto den {0} från {1}. Om det inte var du, vänligen kontakta i så fall en administratör. +eventUpdateTotpBodyHtml=

    TOTP uppdaterades för ditt konto den {0} från {1}. Om det inte var du, vänligen kontakta i så fall en administratör.

    \ No newline at end of file diff --git a/ansible/artifacts/sunbird/email/text/email-test.ftl b/ansible/artifacts/sunbird/email/text/email-test.ftl new file mode 100644 index 0000000000..19942c791f --- /dev/null +++ b/ansible/artifacts/sunbird/email/text/email-test.ftl @@ -0,0 +1 @@ +${msg("emailTestBody", realmName)} \ No newline at end of file diff --git a/ansible/artifacts/sunbird/email/text/email-verification.ftl b/ansible/artifacts/sunbird/email/text/email-verification.ftl new file mode 100644 index 0000000000..0ae601f723 --- /dev/null +++ b/ansible/artifacts/sunbird/email/text/email-verification.ftl @@ -0,0 +1 @@ +${msg("emailVerificationBody",link, linkExpiration, realmName)} \ No newline at end of file diff --git a/ansible/artifacts/sunbird/email/text/event-login_error.ftl b/ansible/artifacts/sunbird/email/text/event-login_error.ftl new file mode 100644 index 0000000000..7835c91464 --- /dev/null +++ b/ansible/artifacts/sunbird/email/text/event-login_error.ftl @@ -0,0 +1 @@ +${msg("eventLoginErrorBody",event.date,event.ipAddress)} \ No newline at end of file diff --git a/ansible/artifacts/sunbird/email/text/event-remove_totp.ftl b/ansible/artifacts/sunbird/email/text/event-remove_totp.ftl new file mode 100644 index 0000000000..8930b64d57 --- /dev/null +++ b/ansible/artifacts/sunbird/email/text/event-remove_totp.ftl @@ -0,0 +1 @@ +${msg("eventRemoveTotpBody",event.date, event.ipAddress)} \ No newline at end of file diff --git a/ansible/artifacts/sunbird/email/text/event-update_password.ftl b/ansible/artifacts/sunbird/email/text/event-update_password.ftl new file mode 100644 index 0000000000..754daac5c3 --- /dev/null +++ b/ansible/artifacts/sunbird/email/text/event-update_password.ftl @@ -0,0 +1 @@ +${msg("eventUpdatePasswordBody",event.date, event.ipAddress)} \ No newline at end of file diff --git a/ansible/artifacts/sunbird/email/text/event-update_totp.ftl b/ansible/artifacts/sunbird/email/text/event-update_totp.ftl new file mode 100644 index 0000000000..3a7b0f7123 --- /dev/null +++ b/ansible/artifacts/sunbird/email/text/event-update_totp.ftl @@ -0,0 +1 @@ +${msg("eventUpdateTotpBody",event.date, event.ipAddress)} \ No newline at end of file diff --git a/ansible/artifacts/sunbird/email/text/executeActions.ftl b/ansible/artifacts/sunbird/email/text/executeActions.ftl new file mode 100644 index 0000000000..a33758f152 --- /dev/null +++ b/ansible/artifacts/sunbird/email/text/executeActions.ftl @@ -0,0 +1 @@ +${msg("executeActionsBody",link, linkExpiration, realmName)} \ No newline at end of file diff --git a/ansible/artifacts/sunbird/email/text/identity-provider-link.ftl b/ansible/artifacts/sunbird/email/text/identity-provider-link.ftl new file mode 100644 index 0000000000..a8c0d54e92 --- /dev/null +++ b/ansible/artifacts/sunbird/email/text/identity-provider-link.ftl @@ -0,0 +1 @@ +${msg("identityProviderLinkBody", identityProviderAlias, realmName, identityProviderContext.username, link, linkExpiration)} \ No newline at end of file diff --git a/ansible/artifacts/sunbird/email/text/password-reset.ftl b/ansible/artifacts/sunbird/email/text/password-reset.ftl new file mode 100644 index 0000000000..3520c418e3 --- /dev/null +++ b/ansible/artifacts/sunbird/email/text/password-reset.ftl @@ -0,0 +1 @@ +${msg("passwordResetBodyHtml",link,(linkExpiration/60)?string["0"],realmName)} diff --git a/ansible/artifacts/sunbird/email/theme.properties b/ansible/artifacts/sunbird/email/theme.properties new file mode 100644 index 0000000000..6b2b6e8fac --- /dev/null +++ b/ansible/artifacts/sunbird/email/theme.properties @@ -0,0 +1 @@ +locales=ca,de,en,es,fr,it,ja,lt,no,pt-BR,ru,sv \ No newline at end of file diff --git a/ansible/artifacts/sunbird/login/login-page-expired.ftl b/ansible/artifacts/sunbird/login/login-page-expired.ftl new file mode 100644 index 0000000000..b266614420 --- /dev/null +++ b/ansible/artifacts/sunbird/login/login-page-expired.ftl @@ -0,0 +1,18 @@ +<#import "template.ftl" as layout> +<@layout.registrationLayout; section> + <#if section = "title"> + ${msg("pageExpiredTitle")} + <#elseif section = "form"> +
    +
    +
    +
    +

    + ${msg("pageExpiredMsg1")} ${msg("doClickHere")}. + ${msg("pageExpiredMsg2")} ${msg("doClickHere")}. +

    +
    +
    +
    + + diff --git a/ansible/artifacts/sunbird/login/login-reset-password.ftl b/ansible/artifacts/sunbird/login/login-reset-password.ftl new file mode 100644 index 0000000000..5d81b0c7ad --- /dev/null +++ b/ansible/artifacts/sunbird/login/login-reset-password.ftl @@ -0,0 +1,58 @@ +<#import "template.ftl" as layout> +<@layout.registrationLayout displayInfo=true; section> + <#if section = "title"> + ${msg("emailForgotTitle")} + <#elseif section = "form"> + +
    +
    +
    +
    +
    + +
    ${msg("emailForgotTitle")}
    +
    +
    + ${msg("enterEmailPhonenumberToGetCode")} +
    +
    + <#if message?has_content> +
    + ${message.summary} +
    + +
    +
    +
    + + + +
    +
    + +
    +
    + +
    +
    +
    +
    + <#elseif section = "info" > + + diff --git a/ansible/artifacts/sunbird/login/login-update-password.ftl b/ansible/artifacts/sunbird/login/login-update-password.ftl new file mode 100644 index 0000000000..434a269858 --- /dev/null +++ b/ansible/artifacts/sunbird/login/login-update-password.ftl @@ -0,0 +1,64 @@ +<#import "template.ftl" as layout> +<@layout.registrationLayout displayInfo=true; section> + <#if section = "title"> + ${msg("updatePasswordTitle")} + <#elseif section = "form"> +
    +
    +
    +
    +
    + +
    ${msg("newPasswordTitle")}
    +
    +
    + <#if message?has_content> +
    + ${message.summary} +
    + +
    +
    +
    + + + +
    +
    + + + +
    +
    + +
    +
    + +
    +
    +
    +
    + + diff --git a/ansible/artifacts/sunbird/login/login.ftl b/ansible/artifacts/sunbird/login/login.ftl new file mode 100644 index 0000000000..1cc22c9e37 --- /dev/null +++ b/ansible/artifacts/sunbird/login/login.ftl @@ -0,0 +1,97 @@ +<#import "template.ftl" as layout> +<@layout.registrationLayout displayInfo=social.displayInfo; section> +<#if section = "title"> + ${msg("loginTitle",(realm.displayName!''))} + <#elseif section = "header"> + <#elseif section = "form"> + <#if realm.password> +
    +
    +
    +
    +
    + +
    ${msg("doSignIn")}
    +
    +
    + <#if message?has_content> +
    + ${message.summary} +
    + +
    suceess
    +
    error
    +
    +
    +
    + + + <#if usernameEditDisabled??> + + <#else> + + +
    +
    +
    + + +
    + +
    +
    + +
    + <#if realm.resetPasswordAllowed> + ${msg("doForgotPassword")} + +
    +

    OR

    +
    + <#if realm.password && social.providers??> + + + + +
    + <#if realm.password && realm.registrationAllowed && !usernameEditDisabled??> +
    +
    + ${msg("noAccount")} ${msg("doRegister")} to access relevant learning material and enroll for courses. +
    +
    + +
    +
    +
    +
    +
    +
    + + + diff --git a/ansible/artifacts/sunbird/login/resources/messages/messages_en.properties b/ansible/artifacts/sunbird/login/messages/messages_en.properties similarity index 87% rename from ansible/artifacts/sunbird/login/resources/messages/messages_en.properties rename to ansible/artifacts/sunbird/login/messages/messages_en.properties index ccca8b5a67..ff12e19966 100644 --- a/ansible/artifacts/sunbird/login/resources/messages/messages_en.properties +++ b/ansible/artifacts/sunbird/login/messages/messages_en.properties @@ -1,13 +1,17 @@ -doLogIn=Log in -doRegister=Register +doLogIn=Log In +doRegister=Sign Up +doSignIn=Sign In +doSignWithGoogle=with Google +doSignWithState=Sign In with State System doCancel=Cancel doSubmit=Submit +doReset=Reset doYes=Yes doNo=No doContinue=Continue doAccept=Accept doDecline=Decline -doForgotPassword=Forgot Password? +doForgotPassword=Forgot? doClickHere=Click here doImpersonate=Impersonate kerberosNotConfigured=Kerberos Not Configured @@ -24,14 +28,17 @@ realmChoice=Realm unknownUser=Unknown user loginTotpTitle=Mobile Authenticator Setup loginProfileTitle=Update Account Information -loginTimeout=You took too long to login. Login process starting from beginning. +enterCode=Enter the code we sent to you +loginTimeout=You took too long to sign in. Sign in process starting from beginning. oauthGrantTitle=Grant Access oauthGrantTitleHtml={0} errorTitle=We''re sorry... errorTitleHtml=We''re sorry ... emailVerifyTitle=Email verification emailForgotTitle=Forgot Your Password? -updatePasswordTitle=Update password +updatePasswordTitle=Update Password +newPasswordTitle=Create New Password +enterEmailPhonenumberToGetCode=Enter your Email ID/ Mobile number and we will send you instructions on how to reset your password codeSuccessTitle=Success code codeErrorTitle=Error code\: {0} @@ -43,9 +50,10 @@ recaptchaFailed=Invalid Recaptcha recaptchaNotConfigured=Recaptcha is required, but not configured consentDenied=Consent denied. -noAccount=New user? -username=Username -usernameOrEmail=Username or email +noAccount=Don''t have an account? +username=Username or Mobile number +emailOrPhone=Mobile number / Email ID +placeholderForEmailOrPhone=Enter Mobile number / Email ID firstName=First name givenName=Given name fullName=Full name @@ -53,7 +61,8 @@ lastName=Last name familyName=Family name email=Email password=Password -passwordConfirm=Confirm password +placeholderForPassword=Enter Password +passwordConfirm=Confirm Password passwordNew=New Password passwordNewConfirm=New Password confirmation rememberMe=Remember me @@ -86,15 +95,13 @@ emailLinkIdp3=to re-send the email. emailLinkIdp4=If you already verified the email in different browser emailLinkIdp5=to continue. -backToLogin=« Back to Login - -emailInstruction=Enter your username or email address and we will send you instructions on how to create a new password. +backToLogin= Back to Sign In copyCodeInstruction=Please copy this code and paste it into your application: pageExpiredTitle=Page has expired -pageExpiredMsg1=To restart the login process -pageExpiredMsg2=To continue the login process +pageExpiredMsg1=To restart the sign in process +pageExpiredMsg2=To continue the sign in process personalInfo=Personal Info: role_admin=Admin @@ -124,19 +131,19 @@ client_admin-cli=Admin CLI client_realm-management=Realm Management client_broker=Broker -invalidUserMessage=Invalid username or password. +invalidUserMessage=Invalid email ID/Mobile number or password. Please try again with valid credentials. invalidEmailMessage=Invalid email address. accountDisabledMessage=Account is disabled, contact admin. -accountTemporarilyDisabledMessage=Account is temporarily disabled, contact admin or try again later. -expiredCodeMessage=Login timeout. Please login again. -expiredActionMessage=Action expired. Please continue with login now. +accountTemporarilyDisabledMessage=Invalid username or password. You can try again after 24 hours or ask your organisation administrator to reset your credentials. +expiredCodeMessage=Sign in timeout. Please Sign In again. +expiredActionMessage=Action expired. Please continue with Sign In now. expiredActionTokenNoSessionMessage=Action expired. expiredActionTokenSessionExistsMessage=Action expired. Please start again. missingFirstNameMessage=Please specify first name. missingLastNameMessage=Please specify last name. missingEmailMessage=Please specify email. -missingUsernameMessage=Please specify username. +missingUsernameMessage=Please specify Email or Mobile number. missingPasswordMessage=Please specify password. missingTotpMessage=Please specify authenticator code. notMatchPasswordMessage=Passwords don''t match. @@ -148,7 +155,7 @@ invalidTotpMessage=Invalid authenticator code. usernameExistsMessage=Username already exists. emailExistsMessage=Email already exists. -federatedIdentityExistsMessage=User with {0} {1} already exists. Please login to account management to link the account. +federatedIdentityExistsMessage=User with {0} {1} already exists. Please Sign In to account management to link the account. confirmLinkIdpTitle=Account already exists federatedIdentityConfirmLinkMessage=User with {0} {1} already exists. How do you want to continue? @@ -158,7 +165,7 @@ confirmLinkIdpContinue=Add to existing account configureTotpMessage=You need to set up Mobile Authenticator to activate your account. updateProfileMessage=You need to update your user profile to activate your account. -updatePasswordMessage=Enter a new password to change your current password. +updatePasswordMessage=Enter the new password you would like to use to Sign In. verifyEmailMessage=You need to verify your email address to activate your account. linkIdpMessage=You need to verify your email address to link your account with {0}. @@ -184,7 +191,7 @@ failedToProcessResponseMessage=Failed to process response httpsRequiredMessage=HTTPS required realmNotEnabledMessage=Realm not enabled invalidRequestMessage=Invalid Request -failedLogout=Logout failed +failedLogout=Sign out failed unknownLoginRequesterMessage=Unknown login requester loginRequesterNotEnabledMessage=Login requester not enabled bearerOnlyMessage=Bearer-only applications are not allowed to initiate browser login @@ -209,7 +216,7 @@ couldNotSendAuthenticationRequestMessage=Could not send authentication request t unexpectedErrorHandlingRequestMessage=Unexpected error when handling authentication request to identity provider. invalidAccessCodeMessage=Invalid access code. sessionNotActiveMessage=Session not active. -invalidCodeMessage=An error occurred, please login again through your application. +invalidCodeMessage=An error occurred, please sign in again through your application. identityProviderUnexpectedErrorMessage=Unexpected error when authenticating with identity provider identityProviderNotFoundMessage=Could not find an identity provider with the identifier. identityProviderLinkSuccess=You successfully verified your email. Please go back to your original browser and continue there with the login. @@ -254,5 +261,6 @@ requiredAction.terms_and_conditions=Terms and Conditions requiredAction.UPDATE_PASSWORD=Update Password requiredAction.UPDATE_PROFILE=Update Profile requiredAction.VERIFY_EMAIL=Verify Email - +user_not_found=This email ID/mobile number doesn''t belong to a valid user p3pPolicy=CP="This is not a P3P policy!" + diff --git a/ansible/artifacts/sunbird/login/resources/css/fonts/notosans/cyrillic-ext.woff2 b/ansible/artifacts/sunbird/login/resources/css/fonts/notosans/cyrillic-ext.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..1d76abd4cda38c17a67f5173eb9ad648cab61c8c GIT binary patch literal 21740 zcmV(}K+wN;Pew8T0RR91095P%5dZ)H0IEa)091+q0RR9100000000000000000000 z0000QI2)u295M!A0C)(2ehH5>5fBQ3h6sV=Rttk_00A}vBm;*~1Rw>27zZE>gc=)v zmL=R6y4|f(HANUY5=EJ&H6szi#sNS-e_;0i-;a9^`RZ8(*!~@d<-EVUr|5HEclT8JGBvkZ!$K9yc%q5bmpd9q=9Xcx ztrR4S{re2he}8sx!im`h;&VKX<3ND9>DcD&Z34bj4G`UD`AqmT}Vp&0-`-9eYBTrv=i% z4kk8=VVZSV&v$LS;~0XQ$q<5;C|q&3w)e*G{U5biRW}f+YG87z+CXMz*Arjygw%&* z@5QYAPeqZD6~F)ASJm}Bd_exRTu4{govw80!_wQZfKCm=}KAnAhlKYR{A$(3$(O_e;RlCpi>*ab0m<*ns}fcKm%#OXf9>NY z>4FbX8?m0@VJQ%pWj+71tYuBW>g;XjxZRdf3Nc2AG|Qgv6W;a?`8ss%QaVf>M2Z|C zNO&BFKV!?EH_^r2uWdi_!T<>s5qN}gvA-JxXuqIf6=-oFA*_Hs8g}N4j@>;(!w)_} zgE~ywkf}7;PCB}S&%C$?ActSvY5<92YL^dy8uZbU1+>W-oLDfRT2UN*=*0sdb88*j zxL*P&K@b2#2iMyx!G4Ag^o&TGc33zMTFguUzCMoEnJ-178(14hb~Q3*HW`H%UPp8A z8ObzS1uY(2`vsxg*{7rFt_eD8vlUjlz)}sLmT#+JL$^+7%SJ)d9SjVaAxPNlm{5q7 z6fkI8f2b>E=DMM`-^V@NF8&5*xt3U}Z0onK>z_DVLqpeQo1v}i7Kq>rQYWETq{PeR zsD}NtDrn6Bd%42;sK9xXd^^`si@fMHAOZ(QOpy3d8-4Yfknb^#c>XIix`PMwF+j@# zD4+s>)zE^0b?$qtSy*qLl?^~(W6$>pgXBkq01@Pg6iT@OdS??W0!=3&OHVE3&EMX@Q$wj<~SZ>N(&v0O7KUopxu=`jP2 zCDzztH-=w}gA$;mi4>*Nn0eziHF?r>-BC5s#)!rMz99}0WTu<7wcc!eTiVBX*pBlm zE$Z2%Rd#BjUaG`Ssp{uyBsD9mP_$j=fle|H3z*O~#>12_g|iaNCTS&;MmibF0#!^k z)VBF@z+{2H1$pGaw)d4FrT#l^r4KWr(A2g z7`JG;*CNYnBJi01obg#KbQWc1vbaqZ)l4z{Lgl%zv8gT6fx0+v2@yWyVu~@Wg_}#_ zqk`nQ(zvC93`;_Lj`}VAYVu@Hc|67#hpm1@Bd$S=PL| zeznG~;jinIMbdWXde$ynFzrvTN9S1M6@{L9p;F}m5APAIe|z&6)!S@khy)38ssIKQ zXw_grcGOOPU9D5<<%Ym(VAR|s(e;+U%@q-zv19Doc8^Zqj77X7Nu^G~uBT=Qr;O*8{CtMF!WoIp|6s>DQFr@JqvNq$(|wF=S<#x-$+FrO`C2r>1+X zaWKK;*;KOgzqE*2%YjaahdnnltRFFq^`oWQhNW)k8Y_&gjwbgps$qzc%rkH-u*3>$ zY=lrRfAmnW4IR#jQ+(c#5xGL@z{H(oU^mXIKqw?i!*E#|&5Ut(z{fEpP85puI`9YV zWsy25dFXeYQu@6DG8&30#fZlkn+L&>l4>$l8f>$QWZFUOA{#wNksK&XD}THH;DiTN=`oT9fI!5KIAp z7Mf+|J7cl})1Y>eRFt>dbqVee6+pOt+$}H?99YU)u_KNIm2T0-2xH(`V_gsG>~pM# z(<5FqS`5Q@%ClsJ8${mTVbTaRy1q}-n6AhFZtdoC>IHay$~GzuBT$!gk*C3c?}g0< z2Ov|@+CRJ9+RSWDtZ#YqRSAFBGd3pnYE9?i&50z^mmOp~UQ};3sr9S%d-SFgAJy+^ zWF)Mf>8{Rp?^JK|_Hj3l{*JY+Vh0P>ntaNn&%wc;9}q8>I>cvft&J0A$f` z$@G=b2ar`;uI8q3XHdYD-1$FW0H*O@>{(-Ze*l1c0P49IH243+0oV>s0>EO>144S# ziWtXei6=J>5OkS#`(bU^^K)93=cn5X)s#rgjaQEs;=gl6V z2eV~|7hu@pDwH*024=$H&%-`=w)fZca)7>w5-n}Hyi84|aOm3QlMcZS+^SNcENyTu zltxNDq)$tIAqM&|a;FZ%=GF4wNRSCk5e@G^LrJ26L%9@+d zvs-z>Z&I!qXLr~dRLV>l0aJ}!dh*dYC4wHZi)=AV+#Vc4tH@@{7yYpGg_HL(bViFN zjyV(e9uZ*l-xHE-PsBcyF3o7Elpi|gVPj^GHv=i&j?hamglMwtF@vY+?ER6-PDs%W z<&i%3Ktzy3>>E7Ts%`n;OOu8plFu&l+QON2-(K%e4AhhJZnWUR;B6n7!%}ZPL@T z$_0()(-fNXE;r@&PiWDVAAoqd^uVglS)Z)i`*2p19Z3_#L4nmQ%Qh~xaJ!7*%>?3p z4b64Xak@FH;uEm_FBPY*lXUm8_p2iyZSqX$*p@y(m>dPpcA?Z4%8Rv;-()Secb=lV zoQ%sDiwv6p>5s-OG}oz&AysC=0;&&+`ZY(4MQb&gyKD}|aA}_C4LuJ6yoVmH3QRK- zn>22^ddiaMX#-Sy4I$IiR+LOq8_W+l8oRRJ0pCut7RisixBJK&+o$sXqi2 zWFK@Gl9LLe2dsH^0}q!tvg;T0rq{~|9cLT1Ya8y)B4|frT@!9k#316AkPe-_WwaZs ztuqq&T{`&|r0Z9hsUAd9M+Txw#jS_4mt2W)vqFM!%k?X@kr`+oIus)sx^rrdG=~JE z2ErgkOe)VEYF(dM3(&JFX2Y1##<}AN5wDaRVRnhhXtd7!EOITK{Wl>s>nJ=teZU|lh05oNtuF36ErjTBVbH(} z7Y#`II$XxMm*2&GQq#mgqfK(-8w8(b8D#-C<|k*7SW?C6#wAf9Y;L2}qn2!ei4f)@*XR_rxaubkb6=m3F8rr}$WpXgz3!ct^)Hi-C z3+9tIQvan_y*UUT&fx4Pa9{%DnTYDiOCun`2i`gDJDKHp+}_Ek$qjm8yT%vkt*^HW z6Hn~gN@mRRIOeO|HCD4_eGzJ_*bwgaS(A5~oJ7s)P+Q#L0gw2reojg+MB6#nHKlKw zXZfbYZfI!Blzgc3L0M9^;Sw?-O%~<8%33bkHpiyyw1O8R?Yq?@XH&$*qfrM`*Q zfGR#F2^JIS24cvti1zcGK*3xx#f9i3fhb)bM^-AqJM}soP|jotDWr#n^e7X9Li925 zPtYjBhm-^esomf!EjNgXcC(B}A1pR2#-iVT)Ivy*u7RK2(8zsPy0knU9H{ zhXb0K@#y3{SV;4qpa>mFPgbAXPN_#v@rymID~iMqvwoNX4=;ohM1N!5mzpR$#+Goo zyANy&CpRwX)l3-PEv%qr#%^LrlruBnOmo!EG0`^C*ae5b+OZOXuM>?+^Zeq+j0zeU zzw8ill(8ZeXtUjq6p>wc^Z+**kuBqFsteq?rvK;>EXkC>u|vLL`nMrtIQSACG-p z99t<1ZBS;sQKzE=&S6_}Fj^X!uVk{k6N@-X(3woy{9F}16(SS=%@i@795uC{QupZp zq$AvH&)#u$sny1giB=1{2YhOGH=D5-dd~SH&UDjq-j-)mpTJZ?D+u~nW*L#|#+%<@ zlpI}qDxlTN6q?WG(%!tnG9_X*E!|4=TUvkR`tX4kpUy`_h>a`e1}9cf544t`8ud>P zg@mlAZv1|OWLjAoe_(BR`XjP1zj&g1P;-WjgvN=CZ9!mz0@`YQiSn`vS3{N!Se{|A zZCFG>f(pzH8oG%K&dk?^@PslenPl2?|1X_V!b-#V=PQY2l6L;>!jJwml_BqjpOb?- zXrhI!Ydjp-{zu8j35Pg=5)G^(SM5Sar%niTv9<0_6L&{WbYOCx@T7+|U9ZI%YUyqJ znQ@%ROboYTvaFc2oVx`LvA*fNe%aCscbkMxz1Rb2+Jd?K`o);8Pu@8G>v^#kQ^@oH zNy{|^LC!ucdLnr)GOhHd2mktlG&ui<{wHPSrsRt3BF)N8o8C^qT4jmf z{uAMU`sxFkiia`!*rY;#3%%0m7$fKnr_>#Evhf)pFP2LTnlHQ};~}QyVoiS(MYyZI zs)=yROv7NS5E#-xz| zmGa}kwcN_f@4pO@2N_3P%<(@IOXD`~;ge^sKOTd5$bXxcuSNKTgC4Z3d{`vV&)_M3 zXp-oh2nL7cmM*SWAD*sdK<4)k$zVC`@o?zyl6(4*URVp_ihNvPg{KU4sfi!#Q^qR^bVk+vb8QWbuQM9mM!xvm=t9NU*;+ur4}enaET zqEov*N*63s#`|83P2_e2y^r` zPz#j6M&J4`gb}>YN*oNT)FNd<6{(P1jm7{N&F7*+KMw;Ns7RMu&$;!cd}56no(dd< zDeN-&tqN|DI>w4hR5ng=5f4vjF&?7KU%SaJ5FI3QJviP@`yY! zWZ|B|%ObErlN8gFJ7mkVS)`UhE@&7X-6UShy3^GK>G>~?oKw>$>I1C;GfLLd8MY@0 zR(iTZWGa5?=I@-W>}xKnw6-H&xT&6WS$A{Px^Z;`Nw)?md8{-Nl^v8H_RysEV3e1U z42c$%jt)O61N2fTAlo6maER1a+5%mY<0@XDTiAJ%9aX?GwNs9P$n}SL??L3?*#rG4 z9gIcG7vH@*WM_d(=cXen&`cLuPx(^yAi$S8${XG6ob`ArK1sn8OXml>x0vK;eK1$$ zi`rXw<|aU>#j{T^~NAo&{yR z1`Foqdg=Vg55{RXHEO=;rh>7x!*pFX5%fLr8U`yMl?VRCn%j9bN{Yf635ogpI(9#* zutumlTm@-0RS2q%{g@R^vCM`$qhisEZ)WIcSVORc_gr|yv8miP(t`$rS3d>DjGeZr zma)mCyKv+Uv8r+`g!%pg#n;r7j}-^wEDlvkHBwJiFRYBb!9TN`1ieGOMVS3actb?; z1QO_jIhXOulph*7l4?>3ad`sWF~X2}z%&g$gZE#{R}t=iLx!KXL4b+A!v^Q?mMB-{ zqYa~AO|X|GDE-yAfdgjPT4A;wLo*!lGuBB|fTC}eoYjPP zFempQy-e)24Ra*Bwn8bF#%rb#vV@&B%5qXG_WwkUo2)Y z3kmmpK4(~1-RFWf8Rcoaq{*Ps$Crje9s1z}tk?8rGdvLbwkLwRyJ9iAGA%hV+b7vO z+Z)z1ZTVO@RV=V~T1m5B{+itYEXbhov297O3nf0x7Y9cbg+K3eGoE~SIgGSz9dnZT zt`2aLIyP;FC}%1D2Z`|s@+CAl5%?>wjRo0dM2Kml9va{m@I^#K81<~o=+K4L*|CcwtI;N)pO z7-@k+GfR04I>OVVvjmb%mn}<&=tkIB6+T{q)HL@Pcd*Bu z?LEgkJGk9W6FHZh?%KO_8`3WtS9;6qPq(ObhcR`BSBk7`Z&i-YlLmnT^_76oCLYDK zvL*BxtIkC5+p8Y|<(EVQR>HQxhluI0x~N`e58$atg^<@0dSw<}!|TXx&uL@G474-( z(QHfRh9D#WOCc7o;}Dx5U*H{+4b(p|OTu-}EhgsL%j|4Hm4a3tslL*Iy46bDJc+Q| zaJtwi?M(Hs2qluaa!eJ z8d)~e4h!c~F^!lgT*?0;2dfDGxb#MW7-^5b?cj zKrckQ01WW*d9KCNb&SwUNgTn1`y-FADmUmc{xLI z3!d$@tUWre%0PFd7bcKkQC2rH_Zx-JX_kH1>PaJ#NM@)lvxdd=Ho!?Eg5m5CIcAOE z#ceq$?s%l|n73SLWL}UVMpDaULqJlwf)AJ~;==PnaamZ4*LA9JaLh@5hwNFWMUe^L zJzXGJla*64lFIz>!dTb}S{}Tb+UE6x`7nX#3$*DC{e1Trp&KxcI2KaAsQvm?@cD z7}oe>_{m3%6_$jYD{u5c`8IoZ*42ja+(C3OE$T=uH=QB|3TaE|F;bX@GlUvs1yMD7 zfWm198=Vjl#H(m4yiOEuZn&vUF`z*Bc(b*&|72jFiXe&|(0ir0Rxt+9GYeJ`5yS`| z?!h$uwq~PpXWmfZT0!>y?$)-52AD?mZ=AS24N!uYQ$*fJ>dvEuv1(@A05HtkB|a?h z21~#YNB2yfjQ6Uvp|8TMO=Ff@%N2bxGEt<1K50}Pq0VTdKB%6^DAbnhMw@!omf>dG zIP0TeSkooRAiH5ZZJZ%PzdW@ZU{^Y|X`uwfiaBfSEsBRHUBY6{_#lYs8{dMU5eS}0 zpb!$#>QBAjyRp3PLKO8E4HWQ<2KJ8EjyVxySAINvHlOJvgixfB+S9+7zUXM{xLSmD z9de#9HN*5p;mw;1!v)2~lSv0734#^~?*?yG*c`0)+0e5W#P<#FPYF7H@sanqp>Q;J$8K(d$BqkMPBtct3fp+hv1B=uKW9)9x@U zdc?^r($;0v74|Cf`P+>A;8OewkHBvREp8;-0?KAfy6WVx>Qza2=DH=53cLPIU~IAv zsYB^_NX!;2h=!Z_2P(JDim9~$T!`x9&+f3pH#*UEV1S@t3h|~3CwhM?* zud0LbYvm?gkP17msZJoMT)Cxag;ca48Eu9Nmi2%Vr-?kb69N>f{5cn8vc2`4sZzMs z-g8Rz^FjlB-_w|>^dKT40ukiOgjTb5Pzh^#P&Xa8vml%m@F<{V@k-Y*6G!IRjbo)s ziPq}Zcm$rRXzQ0hzg0?q6u{inJ^fP|QyI*f;WA^E8r|lR^ilNTBvNhx=1JZq^9sXM zUIpXwZp-=!F#T33ie54ZH1*2ti(e3wA0`T7ZtCY1qLT8EW;%b8|C3dUaZ$Az;a#4q zsF)}9^8u%!8{-u_VkZKOezeH~KFw;D&id`iX^N`B_M2&frNxmmdpf{esigei=AXUi zG>0W~noiVB|5lIgs@hZl36~F8 z`cDT8ESVFXhjbCdSgV(nc*YjGw+Ay{jtY|F|9oU&rJH4=`^drp>3aO>C;00$_}kkb zUY`2D(S8oMHBPeJ&E*OMA6PXt^s;wn3tLA!t|}TiglP^!R`?IZE=Y@zg8|D0u_~bw zi_;zk{W-VBXfrPb4@hI8L{n)z>&YzrvDy3`pa@RPw_+aF7lV$Ic~Z6^ucGTBh~!)r zmEZ>``DVq-7l-`rC6iRqCjDA( zP0NI+-GerHy?7}rl|;8J**4s%wYR2zZBe?Y$>OdeH~TMX2APput{at-sqz7m3NR02 zjA%?6I!-@UGDR^@(t-1}OJ-t4hhW^=|}-^;)Ee^iLYzvY0dy>$OZ0>fQ7c?l(`;;Y)gps#b$x zV6YbLW#4%<%>|h5l(rhkGW=G(ex066bQ(HFJeNBdtr#Sks!$>60m{`CJ|gQ`TI;FG z$qHVYoI~_eB<;WG2`IzJgP-*5Q>64D=O&kevbrjIaBDu}`f8uJU`CXa-HfFppQ9bi zBAW*XDj|g7=06$qoeM&U^L}ruFjsj!0&deGXvzq{iP-`U)+H-~k2f;s> zHR|TKq#6|GM=DtQdzm9q4lxmdC?INx4Le`!!*d6b?Z-M5t&}3n=77nW=>x^I74+Fs zJ^k$)XUbx3o7m zQBaH_rLR!ad8Nfwi&eR_=5=uA!{;xW+KSsg5vBZOiz>XmeR)-7)`!5{cuKfVQd9Vi zs<{Ax5`v!7_$^S)$#e3D5$l&4QV@r{Gni~SP(EF{xa>8-eVWq2##$@3Oaz2>9e+L0 z#Ix5q=J;BU!{uIOY;%NL&M+LxB>AMLYLaF}@~n2PPw8e#bF5otH!AdMw`$wR^n!$| zeAn02haqE{x|(V&wO$b3B0NhyPl=~(rESl#*4lZ#UaYAc{P1(dwS4nszGZv^sb?VO z4M1i?ECq4tYQ?D^-vRpe4qwV53_7C?Z?n{&jBHFe&g~HqLrq`JTv!d+Swtk+uA~qV z_L(;vmZb5yp;2~$ebl+U(2jMkv5dgTle{ZkXFCoK8xU^R-X#t=RhOsZPAlKbDgj!a zs5o&eS!yOBRu4fbU1Xk-EYEl6&Q3%Sc}#wFXQE5>Im#^e%{nNXc^pl;NAFR$rEHe- z;kbi?jiP_>(1cqE%qkt<>iT)qyI*@E8YdWA+AqMSG4j|E_9(yLuul7F-so>1eZ#NI z(Iba8dD2Lu+QdK zoiI!_yF^yIfg7Bf`4i6d{9!xlYF&ZopE?+d@gC|eYo(z-=j(1yiy3N zJC#VlauYIeSMFCt1Ud`}b_Otj$wP0;Z2cAuM0Rl3`H_fO=b%#(z(E5H+w#1fcC6Xz zPB*o;bL2j?3^)}G-Cv0LYPTn6e}DY?_S>mqCS#~8dclC>SYr83ph0JZVeI?*lb($s z>-cRVfr~&yq&>1{)&I(*;Cd6=ceg-29%&|mbX@JeKVeVvFIuAL;00Pi<7Spf9JYlrN zlXq^6JjYmCr}{KEWH^S&rZk?HrqOgmeyP0hvxmx5TY}9R%XglwY-;~rruog{iVY@0%OzlW2wAwvP|7Ij*IuG|?CC{uRo+>yCF~7)>oWi+&A5-6 zBywtIIUT*V8qy+ze4219ZLrrx5zY5K?dl!}ZgQlt!-XxGME0b)xxDkw!abWQ z<&=!%vQVOUgZe62xutSu&#zM}%;f0I+thU+d|E%Me|o5?MVT%!-+|g<4-bizkh8LO z>_esnkzFo^hxua@e)9AE z+HZEsNV$ z2$!zbM4-@KUx2<_!JQ58F~2u3MTLO|t*;}cEDGulmk#F_i7vi;WCDUf{|_ByR+fDw3J$A8?tUro)$5GbkH|_~ zUM0KE>9Sm@B!0Fdfq-Kx#!>5~4mxuz$}Hcmb9rELRyr|%mdET6a`Dnb#1ZPYGhX76j3Av8}h3dvQ01l?qN*#6QkQy-TuYe-?fUUm_3r8s@ z3eR2=X7j-0+v(V11><3^?i#LMCC%o@Vl3iZWL64g&dUJ>@vti7E1rLF8^~0AB%Wg* zUm5J{U7@S2b}Pk76+}zJ$ojHl`x8Cqb>#o+A1wtyP9B+LqB{~TsZChdEERK|=+kL8k8SzaRA8ZJe!T!ajqDnE#oz25M$ zVP7vWvJ&q)%_c|M%e4c<6<|Wsa0Kf*z{|?Ayt?GM>|nVKMi1+nsBK{x=)@Iz8$j!6 zOa~sCMSe$yH4ZgiDe=?8!Y9Y~2x+UiyP01?I-B)_vVCkHaF;>@-)-X<#_t{2=XO8N zY91~7|8L#N%5|V-_7MMQ_EvE@>GsmLz8%+#tNr~)vS$+IXtM3|XQ2t{(Wj(Wgrm)= z%YeREocK)T&U8TyBQ(7*F~ZwvAvYmBw?LBwr*17SWSTaKS<;R6O}FeuSfhGnKFMWx=M5Kq<*R~9yoc4;FP=#krMQx(^K-<5LrIL=~`V}rRgHkaw$1MfZOS-@aNOC4a5Z$_~=}KVv z6semZNa9;0)chn%<8!AwFc$@{H|uw(|5W6mJJa*SrghNf5B>{A{IoAT`?GxGSY;8` zRG+5T=a}o1*xX@lS}|z1v+%H`h(y(8&6bWT3ThnS!e`)|O+&yVx>ScZ&OgdhVl2)0 zTJ((!oTH3*-NZF3eraMN6XH&PQ-~)E54M&lTN^9pMjvwXLNXF}=wU?o#=_FVDwRUf zgX#T9`KCT`5DIl;O_`#(h|*0R6PXkn(=CaGt*sC!<5y{~RZ;Sm?Vd6ZR08M(b$ErCHQ(=_ytv3Vx@*m7 z#S4VU$#HO+DN39UIvJMr+xBfedb;^w^=PhdxV6#Ql13WTXWX}0j!8(0d-j`3I$7A? zTBh!8tkj#Tn?jbisjCLwb?7>jCMF^?F&v#%pf?ULH)h7623c2M6rWqfA_DS4&BnFR z<;}OEGIq)y>@;nkU6tgQt`(BrtlbH|`~kjg&0}pPm;CK~?Hg%)6>6|CE=#M=Krl#p zcX@yE)t_C$LS3Qaz=Y)XFw*b-seQa$)>b}Ix;X7L4{6h7axg*|`tW=8JH?PLo(S#n zG;gN!Rj6&rjPgCaykxJPjEq#$a<)!wIlK{754pIt_F)x$Mbmvwns2wLS8sQ$f%duB zHSq1HllQXo1>%n~Kkn&nWr^l?r#5X5Pj06sm&{zwscjXBdf0AAcZ{9dEF=|$g5v{_N${E>1AMj01c(La>$3+y2$ulB8{;i(c2FhqBG#m>H51g zDcbUTQ?0&pq|OJc6>CniyFNDFh1G!Hob5_#cjn}cG|XnjqiFQAH36_duwPsKTnhX& zpTZwmxGqKK=;7){QJ4`V$jN326xale?f480Im9Ne0FlBlfR85fQ6QZ3ycYdZm&xW_Yk@VfY2?Ogqg#C7jZHZ`YlulRN9{Jy5O@hVQ-WmsG-WF{eTM7G48K6jR@Im*cV0Iqn! z+GQ~AAr;@`^y7N*n0R9WAc11zE!9g>sGlZ_pHROdG;`pVgk#@+e8D3nvAG#$Ke7RK z!1=MDb!%4dC85~z!p}mIyz27cN8R+ZF~V#p3Z|G7*O-Lr8A0ZRP-z|yqr~CnG}>d* z_knfr0V8&J>wBA)H6q_Upeu7RIfW@hweWxuEbNE(TKx#;1QWK3+`{&teUoJp%0l}CU>CRF9dH|Z< z1b|}!Lj8HLFT`8IJK=j&iEq}h?G)m~zmQyNzF_YEi>+7yVr9qS_!^m&Z?breQl&&!>JD}Wx95$%@o)drsGa|7f;fEr)0-uJdnn03p0`{ZuLjSSFWa?KY? zFwM52_?ign;aLaQv@`@8eTEJRR4TW;LiLWfv8uPYtxBC*%RV4x83V9WPcgH8CExHw z)@?6SipFqQueUGVe8-ScFx5Z?HHE>@mHmxbXa}`H9DSjHf#<}X*dxTj0oWI)ZvwFO zPp1IHyj*Jh>OHCs(8l4bmnPkPNgf8eFb`6OCN@;f!Y}Wqn501h)kG^p8KU=Ebd2r~6^_4MWu> zjYNqTxx35jV3o^g8a0w}t_^S^kqbdfzUPXbDR`b|>-}EY^+?EC;qj6}Yd4<}?Z&>V zxI$}NC~bVDO?>eR-mZaOhw{B-yifpq^(7^BEVTK$mG0H$ zmh=*8S@(l!XH3F0E)}6tpGm{2MI6((-K~qSyEratDc(AHI3$nm=XQ6+YOvn!JPwcl zD(eWUjMHoeNU7@w23^q*Lp>7~J_IAx4S|m-I|O70t{);|`8R@q-fDWQe^jf6)BKwo z6v|fI<0gcPC;&$iYl`t_|JBIzg!C6Jf_ZN=qcKDzJWGiPo^>tiGXhD_7*I!lrKiri zqc||z)zdey?yjN7Q}^koC%|ugd!LRTZ$AS+`K13H44)8;Y9%on_tAeSy?mwiX*a%M zcRW6R#j%BkXuFw~aoHuIPyeXt9L39dyw^sgjAMioypDJAl`jOqX)bi|-L*$vYt|GW z@$E_x>-Sose%)t^kOypxu2{uEBNKopZCw+I%T;m(K29QmR3(}`vf z(!o?F*MV0O(6F)K#j{GcxcT0btfO5X7&L~0FUFAZYnBc)I-~L5tpmJ zJM-Uqd7hAZ_~UK=(ng_w-|G_l-f<3RoVnWL@xChhk}P}plJ`=rvk{D&ki4v$kS*m( zc!U&<^kwi=v`j;AHBl zFKIa^^eOs{Uxsh4IC@1uXoc9N^kgf>JIks!+VAQ4^%1#7h4 zvuCdR8Hur*#nsf_TfTlD2?{;~@d&%<8xSz7tpbH@b{2J0pn%al_y=E(m~miQSb=L>Vv%?P}E$<)QkotdEz-`l6!)yoM z3sZR?#2efOwp=x#R?Jl{gnL#w+;N4f+CJ-Xe-LB&Gu8c-o~jqs->Fhn)l?V^CDyTF zv2Apqa(9A*eL1&cqFYIJ+q9b2z20AJSDTPm`S(Kq>FR5@K3@^NA~CMW5m&2CQhg@t zX|tI=XM zn`Dn!rz5@G57U}{l}Hu6Qsk=IFE2Lg`cbH-`ZK20488i}(=C&VAG!!`CgP{B1D!xh zJWiy+X*%d?z)jg+5WGAbE@uvr0j`(MOtAcQZbq83+Z+uK&cx#p@5l%M-HVHkCk6+{ zId``%o8#Pm|5<{k_yCVghFXf)tD@WXTJm1Jb z-~!;EDVP(r!4^rC|ImS(5!Fuo%$Qn@_itb0c58hIpWJ=-rM0_OKUhDhPNz?Puyf6S z>EGXd_~G5mU;0qa34MxwBYK-1Kiquy)rZOA%5=W_xH*n9#~{%7TXrJ zuBYXav-it{bAt<-ml(EHC80|)4P#qH?|*E6x5$5~9r5iTPulOabRL9L=-9MhwJDDo zQ%@y5o+qLX*fw-8bfRrK!v*qO!GnqcsL!d$$>C_1dI2>0{5#-ZE1-xcWBgevJAS0( z=f64MVNuZ>$jwI|ff_&Y?;dV(T#TmB%jinQN7i5No?d3bPq)kdY1#I1+2SmRM>B_o zcM;~HQpXxQE%y_AK<R{DKU%llJa)f9l&0sX}I3O4ej;$^c-1sV3U=f_|^L*<>;h zHp+%skc}3n#Cq8=g%9=cJ@vAW54TuQ6XXLAqZ3|NI28zZJS$@tSlRb*T1xg9#iVo9 z-cw0i*k~vygS4q5HQ1MBXQRGUHcc{HQ&RT+L)8-Wc)cLh5FL6U^j1h03I%~s0sB)3 zAyC5iLYa{uTFI0^5xcV08xA%tTHd|^c*~rA-K}fH$y1&WG{508wAIZ;u)A#bj zRu8WRZP%YA&D#sU9PEePhC!Rg1nhdV$Z(dK6`!+#kll9ebTQJ zHJoP0KP#;4^ii^EN}Y3{kzU_Q*t4yZ6mH|Y@Sz&B(Y?UPkyc?4Z^TDByr4Ts@ zCtasFZrHWCdJd5d*r--^c8XOw9zmo6l|(d~J(F-%6N#z|fzA%VfgZ)$^pvndD^6OV zr70tbIfNEH5<_2I2(D@7u9ZgotZW1tgv@N=%1#c&Jh|2 zdPZ!~7{j`Kg~(duIP!4>kAy{D;ost0JkI;WzJ7}Jb2F7n$*0Fn_vB;cxMT3*M4Npg zFkd?&!nl~>q6?JsMpwajAGUqN_ZOSk|1X>BzF)>dCM+U160pf`itZZ2d>c^9{XceL z|>jYp|IUh?5%f@y|*Qzv6=TSMR17FTN&PPg?k z6`kYh0WEQx-7?H`h+p;Y=KYKP2&B&an|@O*4Wbb8Vpq4-@!0Mr$*&*nF80`OENyEB zK}ER;{Y*%(SwY5~ouz20x_r7Jqfknx2v-=QFxH%5w8WydUga|toKf2;t55phDkEA_ zA*=)@F+{G7{vBvE8$$yc<79DU<{}PpU3&;QG#ZhGfrUjD&X|ZZUUhQL>c}!zXPlSZ zkb;95ABc%WD@kkbLob6|EQ@&~7SdoTF{F+>6XODfwB$TF5?NgdvwI$L^*&EkD%Lei@4Bl+u-;h(cqoMdeUR9SrJ>)9RXFJwOp0R#rnq z%q+cJ2>LL_6f{Na!~`zdqHtb55}D(Yd|tU2i=Y%u&a%e3DRqS)jY2B~1SAA4!-Q*^ zKKhE}E{Tb(yr3cyk=a<+s!6_KthA6Dtf;aYouraE9xGM|72hj7-TEHZs+94*7ggIZ zRoA3(Ra14nWGz5@27s!{Va|=F7#hZyp7Lj!3uq?eTCq}k(x$qKqHg&x*2y$Y$Ze55 z^siw6G(-wuQJD=0xR!jnJo~Rso+qT=*Ad)%rx~5&s^q)?>_edr zSwp*fLuQtky!Qw(7-J}g&&+zIFNJ^YsSJ}h zLP%;6&>jtJ_&J}rbPBh^*%4pl`q7Sgo_)eJiM38r#g)SliD5h2p^wTH6s`a}T70(0 zUrDL~#uWhZ<48E}CbQ~L>}JszE^Oer2+smPC)gEs4#WSAo#v@2eM%J=Qx#mTNB>3~ zzZ%uzIJQ+OZ9UUQRBs>@(jImuHj~ZvPQkLey}&zo^yqGPQSpyI!Mi8iU7E`$55Q%* zq#7?TL(}QmrWwyPENrMC1jfZDhL;YmkIjK*3hr*!H5{JejS#p$)cm85_qbF3X}r2p zzXM#QD_Y}K*ou3y&^5O9_7!%i{+6e>n~80cjW;MS)bnS_Zr@cb2l5~P9>^Zo5_JVm zVU=du66U;~IH4q36tCzkTqYEDPUX?u6m7h7Qia|p1VUnx7^uTY7R!SDoz7!t1Opo7 z?n^|W6;D+ZPB`V=Au8pZJw&e+A+AY8uZNRMzFr=&=ZSfC7Vc6P)j>0@B0pKbWotG zfx~{#`4(u+TaWGM=TLCx%ZKukqD8RIg(7h`Weg+b9Aq1Vo&~X?7JRe&I7*aLTZ(Fv zud0@|z<%$xts1Zjlq-RLD5x&6>2QXglTc<3ZfWg}kxrz9l~vAF9S$R7eN$Dg5g3~W zXHDaDA6+4}j1?NEg;rHoI_tV&{*18gbHo_+|?W!%@x9pB4hr_l#gI`^5ryN~K7x)5S)LdLhyYB0CH?wXj=GoGs7l;Ru>AkY7 z7NGm5PPC#>_x{3&!tvClj4%in|kcV&}@~=xm^94O+^50aU z^&PkEL5ksG921GigdGBbj3*>2{Uw6iU?UrUC=B-C6;1N5w@ZHX)1Z*&~VwrmX z=?Ez$nlL3N1e^)xnrkw+;?ayY_}+Rnvv`8~fb^D?J-lJLO2+J$3MG&)81FAeE{o_t zS2?vl0Qq2iXG#Bwz}0gvANDlU#X3VhsYnxh#26tL#fPy5$PWOBzO-$>q85dFAlU9d z+bQbKGfEt=)kM;2&BjF|HTA1c2syM}*UofNx|v+u(R@UeynFnaa({WESXoEjwA7V8 zyB(;K7v|5l9mHuH$V(kp9PNgkN!WT(i}cCzkV5}RKtlh*k|wnbPmjqE#>d)E0LZos zD;9yq+#l3GYq<&veX75=s|DNSVKI?+&p$KXKRz+q$d3fZL1*sk(_#ceWh6bmd3UYz zwxxe`oFdnwllgV;abqcpZ+$cg``rWv2p@D1JvwH=Vf=>qG(1D z&4*kPKg-gS&U-q4{+nVe@a}QTZh75O|G050WtlRyI=8LYy-bZ9GgTGq?C+4H+c+A~ zIUPb3%UZgv__ZB(??p3mylsKq@;N;jTr#bcv^L&}eyB}KMppq{){Wqodzec0+k_l@y^NCbZ<=R&a%;K*s@3p_)8o%c;aSQa%e(MrBMHiz_ zegy&(7e3qJM)fTvGkycl;9=aq115h4-t&j_r$N2~Il&9~JJK_X2Px8>{lgdA8$e)& zTsPF70ew$3Bc+m|tR9dn(RNqIJ){*HIpr89#QjAF3ep!ky2K>LGgn@x?-jZYY%UoE zYIyOCKF4K(oQ2M0=}g2Q<@I8?5QrBUpFE9>6lAWCWeMeKrX<+SWetsr?_x`eI3X4N z2q?5&SBq)05yZ2b$FTjvN0+#538mygq@*CFH!0}{i5-?_4tAaYuw!%ds2T%&V)Y>CRVWGqg4*no_bH){EtGEz$GMwn4U>7|s}5$7p6Tt%sR);Zeov5X9c9 z%GiLQ9_SIn@yOPwgORaNbrF?POD!N>*6s|Y0LK1+xYe2({4}CFLOTJUnzF|kR zq*@0vdiDjqH_e7o}?mdgw~c6EKIQ>q_$o(RVDJ)K68 z(i+h`K(-zpSl>!qCP){0C8f@|+3JO-um(G(22ADQ4-&ivf8ifk-MT?9GAdlH_23>t zosEO6*i2Sz`LMjXF9sgt+mpsf-dl&m#Yifh=Ps<^ zGs%R3)BJz-S#n9RQx2GRw5pOrQFK&Nr?rrXSxk;0MQ8iD}!|1Z>W*h!R+ z`l*DTjsOeF8DFkA?P<^20SU{k40-Kl#ZK#YAjq`Bsm)DOx6mswjL@bw^`VNTFM+PW z&9Se#&6xn(d_yHF=R7T3F(Fj(Y+NW#F<4tYV66{`(&sQd5D*g3V+{7=HI*y<#@eSU zRqp#k)3yhNSJ#f_(sPKlj$KiUxUk)q2Gixv%l6_ft8NlTKUP$Tl?J7luGo4*K@(9# z5#@0}nr?z!T32?t)Q!)iYq|#-)WUQe-W9@bv31_@D|;tKw}kg;%Ww9ks@Cc8Py!HG!l_j zD%faM)=bn*mK2%eNLYr6tPnAcPK?!@3oyykSa~DPy{`$=D1wYA${kC~XB-T}$a5a| z_~a=q=ja35p~f2>&-8N4H(~iVxH~?uQ`daJ8c_9l4NX&62xWzbBdy*L>4ttq6Uj&C zzLb48vyY4I?_kkN_l8{dn&UP)bi?$LnMSYkck7J^;r#~9tOFU> zip%k|VpBq|#&@Qy`VV`AQr0bxu^n+Y(JV~0tA6H>uWnhX_@NiU&5HQd*Y1wn@8Xq3 zSNF)cSsV%%<$XZ4lE%QqiQdCaSM`j+#qyZe#*6^IwCa-2rLnPL zO1(lw1p3%d zzvzp#zIhCFK;4#fVn>9%bVWUDpRI)E=c_%P=t z5z0ftbxbCJF>E~iRtUh(#kWqx=eofd72W~|0n{MS+9RS~v6bVBZ%CqOU7SrU(RIpm zpkU_+tv!q5NJGtEpxyv(PEi_!Q2@~NKZ}-TEUz_<9%Jb+8p^VXdzek`h3S0FP+UykqM(G+qJ*AGClg0O34FO<_1Gu*u@6_Z| zZcR1hwmQ!NkuinDQdY7w8TFp{oC!}d)O7G&Yvi=y*2n+UVXbb@)^247 zHu&|K0`D~~1eliwku8@ra?#bGZ<-=`hjo0IDylgMFrM0R#ojz}QI5?6v*3m!e0{$f z*-`iU&RqAY0|H*uFJ`kIdT!cjew;}!-U2HUQbz=VyL3(W*Y%@b-{|+d#qZEXJCQy0 z(%cGx6nX|^$s`G{7sr@Skf0gq!|fsG1cQk`6;Eq`&L082fbJ1$AJZrvg^I@@F%}y; z9z#n?MT=Dm6|4eFT3Ko0TuCgogSATdIb~6!7vY~wIIe1%!to;&QnW@mRaBemx9Sh7 zj?2Lume=MslUgi!oWznaqooyDle1M&7F+o|%wMgnqNS+}Br>tgaRwEY1ue1weO%Gz z6^!-F1iV|@q)K<-wM%2v)k`zfl}kbDaua{?5i(e*)Uug+49 z`ZRUEo}%8a!wL(HY>LI2YM)>~W$PaEJo61x-F%n0ujwGt@YNzT2^2%eh?^^u)b$Ox zzQRzo6`rcDxT!VLSEmV{tbDqH-JgG4!A3TRwLZRABY8q2hysC8#5W(c1krve=rIVi zYy$0odyY+l7r@&>9Xug_R`5G&QPew8T0RR9104Xd05dZ)H08QWk04UD@0RR9100000000000000000000 z0000QA{&ZE95M!A0D1_4ehH5>5fBRO0NpDKf)W4$HUcCAgdhYU1%ns|APj^W8%#tM za?@$K9YkT?CC@|=Y#c%X%os(maX^M-Rrdc0$H^GNilI);`Y$VOZs;}}N=3@y#tjw8 zn9&+5g>A!8(Ni{en@qw~^6{?T$1oeOG9~2X!(y=l(T8J*o@|0K+iro;<3pPteMv%P zLXjX{Qi{vG6tCz-abXCD#J@mNV1+%FM&2~K#y`k#D=Oz*4|HKQY&tb|OYYz2G~fGQ zhDCdcEVWvD!4R+)(28YqK(VEm0+unra)7-^r_$WpQ==4f++zW6dn_J-uNlC(jSx;8 z4nJW~RijHzq(Q}zK2ay*96aHLJ5F1)da7?F){R2-Kc}UAu%@7$5&4=Aot>rEkR$nO z`%0Cz+J_D$o!|To15cL@UpZp!|@W z1cwn&L@7{uFTZ?w{`*<&bpCz6Bh=K$89T=8V39V}LL&?q0}h9=oAB%*4^%w9pq|U& za(Nth{(oHE|L6UM-R5jm6r-4+ga${zY0reVaA+ISq!l56b>_DxIJ6r>p8vdC`A?AH zp7(f5D5FK46peHy46Hgafw>L4Ni`cO%2X+nqV?}B4BtFy4*;5-9_%q9+kV6#hW9+( zRK^%(sU7V2ZZGvq6smT#KYnvB2}OZv5{JiW|Nokw_PxC1Z&J)Jez}OkmDrdHQ~BO~ zcV;p(2`?r8@988dB*n=RPf}*RYIV`&=PzVAKMTmJ5&&K6T2&!jYXOB-g{qbr-I6uP zB88B|1eih;-HdGR$hnq0+mSKujYSWUo*7TT(}xaFzl@D?8)Xz&0qQRMAO1ZF?zVmZMpZ=@v#n2mcQ2)N5fL#m$!q2Bjy0{|iEJs&4#bgxZcFmKUH}1LCxuP~C_o7FDvY&!(>qNRoDQP}@ZS4M#Q)cQEMFaRGO)9=rTuS9^3RHnyaf5`&CR-X(I zFaw%(f&JX%s0{-sr)PXVUjZ5AL_r~8 zF>&oWbV^F;k(Sf1ps1v*V%VrLb)HFw>!9r)nV$v|JQ6M;Asp@xQEcDEqV zoFW(4qPD@=gys^y;5=MGA>@_3G;ap5cdnzh!Jr<864TjT4(;;=SCnH&Y13s-(G!vq5s<637FoV7)WDnRwt)(CF|DJ)MV5lP&s}hv)j;UtUU{D%jIA=oWgFF5t zo%5RR3Di$4!9doyr!w36oT%3)(<#o~yD9SmpMwF+hPMq~0AycZMZbsY1pAHFu11TI zC<>r~N+-T(;hWAb$PTc%S}Xn&0Zvnk&y8SM{elG`c|`#bg&9DBQ-7`CISYVLpRWYr zChk%kmjom@xQyH$?EfGnC6BhQ2~2f{KWo42VtdMo=&reo0KR|!v-4;dZ`@V6@b)2D z1||vzA1w+2$7RC~S7s`;hp-)SADPPQQo7cgp!$srHHv)J7 z-r13SE}K#0RI*#@>g;Gw#ADG&I205EZG!*$wX0VyU%GhV{JECqCXd^7*wNK1hX?!H z&1z`sM6vSDn*Y!7YDoYrcu+g{s7dTO?evpn-)mjh-g6Vdsf0Dg!SC#l5l%8G;J`uk zw!4*t&Z-4Mv9POr$ZZu{{4*we?V9)tbEh&VPnrVZxBQNA#zD1f)LM2IAP=;kW*^cknT66AQnt-IV{Itb zcCnie{yh#NzZL`{Ok>my`?KK@x8ZuJk2kF_jMeg($LWQDs<*paX-FU5)Au-WhIj4_ zi+}z86F-5AcOFiG)B9)pcx+$ZFDc>MtxWnKV1fVt`&FnWLC*M(Qy?NRDfVu=X}F2{ zu$`esb*BE>${Et@AF^)j-1+dXj|7ke7<$j-{Fom8l7+R(|ruilZLvs(ppb8*` z(xR7T2b7|Q7sfwqLQ#xtSL5xUi|UL$29cByZ<+qb?+WpAB1+| z83-7;BN!aIv4^8^3XFrrHGL5S7Rld?dUJao(>hyYAmVz@J`($zwueTM_AQ83&XAV{ zf*Xbi$!ckzo156N6q7{f3_1;(_*?AfYYR(cn!9spu5=j_`$a%ulyfvgv6UpR-!>^9 z!~|GY_zm7IlYN}|x^9dI*U)xQ6i|m+yUchBwqVBK3R4neAq1crSSA5ywBtSV1KgRx zUuJV5`{%rW`b^da0StLP7h@0c;38;<9R|B@wwr_L1w+Fn-MWc!&5+~kEihqX;!XtI zM)BnpC1;*h8W^sh`N3Yt`H5=--<=%c<_2mPcLeD{4kCEjY;1rIv92#1g*d5#ZI}@a z@BB?PS7LvfvWuukqv!aQNqEA6TY_*RY5_J+?#}(qAw3{X1Fr1H#iSq(m#tf+{`PqC><6$rCm-`pB*i4yVAoF;4Eeqw{ zjc1YxnE$py!QGeTo*)rp9rDSuQRFuVg;3%mki!=j2ZHo7aG9-Oehb%F!(@KQJX`vO zaNA(^qHvR-RSI+PASG^w2?8nOHnWDji)SztC;%~->9xE+r=&cMonxd=q18eNusj^p ziQSHeko@%mM9(K9G49lfuhiJV2g+Q2x8D^IlLb78H!Wtj3j7e<(LYA5zu_3oRt=x( z`L#a|U;r^VBKp4(cfL`6<>liZ0ys9oH3XpApc)bQ4lq&hAN4)ilyYqkbFFCSN;dGn zGtRLf1Ge%SRW6YWEw!aqYSDDVXeX5j7L#gQ&ESEhl=h`DBjUQOHj5BOC2NNeLTo~C z_KFE^?)z4Y5JTnL>L9$194C~SS-TwPw%8_AHmZD-ed$9JQf0jr-YiOpW^`n%imDt$ zUw6TntYj!5dE`LiHORH*mF#N>=DCrK3pt|D3?xT zW;i`=WY-avj=BNKh`MYN+Zx)A6z+|w;{9Mc>1yr7YM(+}7b6mGjDbgNUp?SPY;H%R z9?1?C(MfK3hcI$PAU1DcNL#XVU?WozQrg|7au+)#wwWgAtV9RTBssN!h-94$j;#`8 zdEY}&WL2iFtmP8FH3lOB;d6ZD*ww$XREPlp9xFT=gUn5kMTFVCKlBybhxnUO+W%s3 z&r#__ydQ|@XDK8WtGmUq1-h&>qNAOK7(>9xP?dy)MZLuhAQ_b3#7hTyP7I`4xr>c0 zZ12$KIx!aZli)QzwS=neM!(7x1@FE4;1kF_*FK~C{$M1C5A9V_#LgnFiP^%7l`;f^ ze*}me4}v6(-Oq7fxW}#`DhWXBGUG;mR{}I{o-s(WP-PFG&;TBr%!&9XcM6i>;R?*1 zH#R?t=c)9by8mU#d3a&(ikJ1%`B{;2;Lfv%mPk_G`W5NnsGXAiq`!(=G*mmQCOxId zN3Z8x4HKDGWKSOBkq_?)9zLSS9{CT6!y{ze4{vojXg*ZN$})n696<)I9p%SmoYLMV za~d}#HrbCqDt7%JbIFP=D-`&qn4AEF8n|3aiZsI~!pM7tk{eAut zvDqivR7T`T_SEG2wCttcOHX;xuMM-d<`Ui75CLFMD=*5b=oxnUnQli0WRZQbuwOv+ z?p2!ym`y;Dt4YUpBAf&hht!gc;g!C=uw9S*Z7ToIu~WXt!x|9O;f*Wctl7+BFFTP= zIUv6%DvG%Gs1dw`LSr9)PrfPSbM8)Gl$Wfq9c&+`-=UL1T(HxzaykG|@{y$|IW*z{ zu6bx=!cE8&=}D5&u4$+)R{Ptq1@+Ti@Q<%miV(OE0a!J*lw8ohg*V#}gV7odIdH+0;jyfD+z`eASm1p@<|TgcSzRzB7YjHeeDRlDSEfTu3k! zacbIJ8dVJHG|sBKNJ1LaaJ`_|0OxUkU!tem5@)d02e-+xhMK^@btbYJDUIl-`G+7m z$=81*sc|EE-E(=wxq0aXdk5!8@dTqjDNzY4Qpsr2$`Nk8bMY%Z{HYtFpBGT21O&hV zYlh!j|dR+lx zgMybW0*a%a_PHC6?Y$oKv}+|fOaD{@PDKr$zU0y6!Jh8v<^p^i_%JXIknxxgG2>Qf zM9iRc&7f?IAhMfVT936LsHN2!=@=H8mH^b90N4w2+aeCaQj9RJ&UdK;070D7B*D%> zB(8FgQSuw$FJZ!k!0c701*35$7UxT&!h?!!j6*7I%|gV#sT{xiq985xS@zwBZ;GzkU2It8ob55ZcW$%`z07;1%WX8IF9K zk8^bW54 zh10gqlYw(9eX4&^n#nZ8$stdFjZoECXIaJXbhh{GtgaH)I!$Cpk+hT!PF+?3 zRVPpnGx5FZd~xSkmJ9w~iQE0Kr+SQGPU2DRLSJdiqow7REmIwwO3Mr4+Wr+w0_06B z&h!S&QhXcrS`08A`q2*9!`9nVcss+&KC7b3iPpx3p-vR5V)Z<4qYL^Ysu_aRGwlNH z_i5KxsZ!-fl}GO@1CsGO$CttTh#**j$-RJw7w-zyJ+&O2X)m|8LsXr$_DT(sLhIrb zk$j0-*|IVnT3R?6+4vmIg3CH^O?q(Bu#DqA->r!|k5k35nwa186orrrAP>rk zxB@5?^Pz+9e>&`>lt%AUAWPCoY5tFn-dcuJxn!9qlqU*grUD!Tz7_lPZ~2fJN9c{y z^9MUK(7hFkE=6bb{u+5^e`kq5T)^lPDpIG5;1e2}d@(;OI}V%vXbiv}_(lA5Eq0A| zn_P8sZp#v>DJ6Hr`t|gir7kK5J2MZRu&meBuK&g{DE~rWYK`l=F<-Eq&dw z9o!dzNDf4LEW^UWBEbOk)f zoyoo3RrvHn*9t||R&8jHX_Ip(Tct4k(9*sj@4Twn>nGF1?5gtXiJP{5Ac2mqRlkF)3f`JgfTz{K&R_WT3o*}0K9`6_#$J!|)QQ~&vkkr#%~H;v4b z&R32?J%X?a!J9X5RITTNtav9PTKTCedSMAylK-UW@p{X`{!VpfOh*Pbfua>>?VYvJ zDD;G3HjuNPG9=;2CSb>=ZaGN>$k5p+I7*gHJ?suu7D<0t_xuG06U-INu4l}vK3n{Z zcvbkl@w>qOhQ2(I*rIFX9Iy~KqkTR_Zun=BrZd@Tv z6^MO6OKJ-=oB>oc(WXl7|Ato;~83m9sc#8wc?0*#g1B24WYd!Uo9vp zBBd{`d)llIt+E{bhmp%XVMDI}rM)8e7M)Bmn7Tl<%Nv;RwlU#p-#xT~r2Tu+;yB`k zpWV_J*%yf5Dx_rGI{}48<*p7m+BaYGr0?rq@3wl95{L7QCkcd!cX{%Y#6w}60<0{H z_<1Ca<-|ApE)DHosjld8fy3F)x3+8$zoxUju)24Jl^9z5xyqBLuN9=Fp36Rc_EIr8 zJ1`?~w>i5-4M*)*Ky2`|wEhn-Xo@yAa;5N0{I*R}&84IAV~vN3yvoAuDZHXr>HuxEQw@nWaF>FLwde7p5i%E(HIyI)a=(;R~yb(0Cuq6(UF{O zqJcy#V<~gKWPZaVP?bX?37p?T{Lx+isHg;i5T62l46-;I8Pw8rGu4cSwUM}(w<`I& zLGIh2P@Gbt(DZ8%Um_l-oXXQv!*kU{I$pU14?aP4O9smGOM=TD%Mb{?@puD)o@fZ{ z0-<4DDSZoaB$-S`H)TqB-j(_$tnj~x;iEq&F@>+cMWmUKlLM0{f?^65h)EFv*?sb;+7B+r=;9g8^zS;~H3r&6Dl^s5NLxtbZhn7T;dtCPo_IgEkyfD zv42n?vOitFt=Xu;g+D^5_ALBrcWYa8gO)n(gdpa?02Alu7M2SPrOR+JDn8vgVTXSf zcmsjZ@@c;3e}1e#WK>gqa%!z&yS=?^dyQJL(b`_Iae=)F7p9*(U|yJ#gXwRY+(b}z+X~ypq4CnfQpkwak6qRAhJWJH z^34tFuB!fAjtt~)Zc$zVUYWlhoud7kwZ$6A9r#W}&)Hfb*jNv#JFr4>uPs$S7_NU8 z`>#*OWwMJ5jB;>W{Y;7lt#I*lEOtqf$wh>T**D9jffoF%px8grv;ds{enf3)aiI|2 zynZtdjxQfCkN5_^fRFlRIoHLvG!&-fUFmNc-$p>&ZCGd9jf^FeeL6WcJt!V=i%YjR z@QEB8N>@OLY)FQ{E?%ZJMjxVS7{X00p;CtlH0!Yc(#1gPLu)PxhU%jO}) zp-`w`3ICZnaN3}~Z@}#*k2_3yaPGT5eR@l3M*>-5xEqKxRzNwjAa-(_m`LNEAU_LH z+|<$p$w@RvWxDf_KGPhKF^kh*W6gvqmuzKfen^+Wo-xl13+B48iYZ2H!xGD8qeXp) zgYo*z><4UMh0VQ4R4`B=fzmh0D70dN7Zd@Q$apP;+7wlJF;ZqW5b@k5)s|18(% zk4%Q-qIBsK4ea=DG_oeNrmuz0C>@iUBJ^d~Yh7@XL!ZyYkBVtETh!x_mn7JJtstv) zAIfMYiSkWm3Zr`@C^~lYn9fS4vk7w2+&dA)71i5;N@jw5qn2u}lc0Fh14BwqsNDif z!4wl^G`;#7Ky}xP2GD7>+Xpy?;*(gZF?b>(oqS?2QA-$lI2?2|n+LK$E>RjQPy^h) zcl)@`?Bt|Au8;5DdEg3dDvacWtoTk<35g&woF1R%liSzp3?~m?P4*}E%w8R9W12LZ zk!bvK*${5`^_bFl!QT@16GKXjWJ&}uTmVS33n;_sbr?>COf%d*|4!%A#1jDEJpw6b zBej-r7z?N=iU?{al+M@|T2$*R=a>L63`3=?vi_#HZ;7o!pe~gem13Mruf>tM^1j*r z$yspXrpYZ+H9|NQTd3Fov|g{rrBqcNRcuYCwnO*CB9HDu^nUMz{+?Xq9!oKx0ERKi(qyCes1r zvOp-|%GI(AAh7G^J34_@d<5VC15(WdrWm5JENc{~h6>cibY|_zQ^IhU^IQt4r!rhv zg-mGtK2Ge_vnjy&=kJ1Fy<`wOFK2Lj`po`3?N^*`_iowWH-0%|Y-#YyRSunBJq-Dk zf92yIdf!3Y(U~sE`5CfsxEgGV>wxY!%~ znQ>r9150WcK&f`>$70d&fZT~3@mAh3fvMKjW4@v})l73@Eu5bI-i@Vg){%SDn257^ z-9N^|HKUpZtSy0@zv^BM-EBNq0SnG3UYujjD*D7kMs%pF*^>P^-ym51TFdSUKVMqf{I1CYH*Fs9yF8FAASm!B45V1gLKDj+j zIzpp|na5vMokfmuZjZv*Mqc48hb8xi?E2f^4sM+vl)D&dZcM|emdjOF?Q~tH+}63? zktZ#80ioK&agKht#0U!52j(RckpG}RXrQXQAZszsQ0@F3xsMD987airG_cc%Xm?^+ zL{PK?GU4Y`)u#P?E?~716&@V+`^x%T&wWemx)Jo3hiB}2(Te#6BDZR%MV~J4%f+2s zGFENswKh~r5YYF+;9_sCyxO6^f%`~o9R&W;o6&nwSu|M`ImjFQR^?jE7Mk!Hb6G(M zl~k%CY+CR;0BMoSg%XKKN}=~YMq6XF>9%Z=1hJ)kcQf1CT$67kN3a$phRP|#tu%mh z9YWMZ;`}=g4YsNT)S~Ws+eX9^OKqdQv>9uK?0>yPQK?!wqbC~kl?;vT*9UiW>)}e5zeOy;E=WL;}r7&e}qpMvmQPvvJ)$^I} zUX2&3rD*OxZ})0jgJ%JPMij#Npt(b#a6WX-`;nT$JYg#h%QZsZHJa*zDK^=>LpvL8 zu^&uTL2Y9v+B?f)?IXF&Y6P)xGR->oo!z4+!a?s>fn6gSAjd{93CEqn%+e zFYg6V)3zjV7_`#HcH61)y_`H;^&u)>GFQp=DP!hY`8KG~^$0CofHt*!gKcXA&z3IO zJgH4<3zWU??rI@XReE7(NP z9ZQkqj1ieGMEkAJxV70SAze(BE=|myOQR};L{3+2fnB!voKoUusCZc}`F0QohqT?_ z-%h-LpN;#>?Ei1yMEk74{r%24v5E9{bK2c`wQ-AA9x*86bkLE|=>pQNpa7zh1Z}Ha z7ybhu`1Z1dW;gcBki9;Z7}J=Idxs_RJu zdd%bt5T?*sax z+s}{zOh_h;m8|9Z5u8?pp9Pa6phRP_Wm3tBqJygXtJ%_Ah|owF25E6`S%I9-+OTc6 zg*0ze6UR_V^SGP(a-XNGLs$w1Rp>M@rg0p$HG-VaA-SyM)6WN1Tjgq3nuwDaozCRi z9TY8sv6&{t73E}lVC}z5uuyHP)0$Nl%IR(7jsyf7ZsM_$-sfrdC6&%lZHg35S`nu*rxd#pzBG;3S3y4%n$}X& z8t@pvs`QnXy|L#&q|s?t8i-dpZAg>x=u!neQHx56cTQ`=ahzdbebchDdhi%^PP=sv ziJEk%HBWf-&|ccia>?iPrVNGGR9J(hY}$>V{A$BslQ!!OTHI_>3syTY*I?gcLP|SK zbF5e+{p8o>n-{XS1?7x(9Bah+g7U;SiJc|yBA;E3=l9Au(TaXd@kj*f)Ww5qjT5X@ z?puWDIDXJCFrO>zIu&uXhFRRC8a0oYIW=a|P)LsxqUX*>&=%d3_kop?jO;oSa5m45 z+=RVJMXL9Y;fh#A|90(Mgp!@e)D?yFe2SXszxO;|`omGz_Sk3eHZ>g@Q`se0Sgkud zD?a#h$%G;B+7GQ+oC!1kU(FcI(ri7$*~~@&o8BS2W0pMclg@9G4DzWn^L=ozLhj9Z zBc-q8w~7-J6U#(D&UKh-E0|ItC@_|t%sW-=9y9%M(eO)@aV6Fn^zo8SHscPvv&JRDB4MDN{eLc{At{DdX1uwT4&m(g;6w8TAZ_tT@F*EadfA)_gO zhz`Du!CMyV=;Z?sZ{I z@sP~DLiKY)JvO!$OWi^auDNsM`au((jTEh>Hf zZ0=&3WMns;Fs-{<{4xwCTc`YBRF7Tp$)~0Tp)1u@InEy=jqO^m2Bd<*XsB_;e)goO zS*(4F^O9B@6Lp@Fg3$&`A=A*7(+KT&Kofc<|MFzu)hl-JD@zKCQ)l40jZscHO=Ecu ze5(d9K7Wv71Yhk(c4HcTdeVn~7);Qy0bzBBtsbLe3B;uNO5$b&qcz6XP>MX?+?Sj- zq><_*ePrTSoB(Kxon=WO&3!S*ci}Q0Gd&Gh$UlijjLcXimow(hB}}p6V!~IN&MHV} zlX?KR_f0+hPBs6v!Zj3Cb8z=HY zH{@Ni?W>6icwT8d&j>v|ItaenTbO1hm#ou7u8EkU8gHJqnwdXQD|F;xyjoZ=sn1wyHA5%08Mp4CpdO|p z3`yrWE%kVnm^n)U9fE zYc)tvm|Wdf6{^Y!J?rHZ;Km=CJSS^h+-j z=8TYu%jp>=E%hi|5B^DpuHDP;;LF^Gb=c!+1OdF zjh)e2+4^CGAS0<)HU~V)a@Si>1p#Sj)Gm-(uO?14e?Nj4~)ctXcQRV61?RgJ{4_e7+&4 zoX*6iX)Bq~w@G;&@9XwdGbeQCbfc^tl$+0NAU@6BdGZ7TE1|chGJ4@eR@1Uepp9zQ u6B`F1a5T;7?APiuNSxv!9IJpvymC8{f~#sze4#BF!i;)XxvFbd{BS?H0(8Xy literal 0 HcmV?d00001 diff --git a/ansible/artifacts/sunbird/login/resources/css/fonts/notosans/devanagari.woff2 b/ansible/artifacts/sunbird/login/resources/css/fonts/notosans/devanagari.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..f228192f296147f3df3b60aca44a812819631e34 GIT binary patch literal 32696 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 literal 0 HcmV?d00001 diff --git a/ansible/artifacts/sunbird/login/resources/css/fonts/notosans/latin-ext.woff2 b/ansible/artifacts/sunbird/login/resources/css/fonts/notosans/latin-ext.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..f330caf6dadef7ee58c8341d2812312af1e770e2 GIT binary patch literal 32276 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 literal 0 HcmV?d00001 diff --git a/ansible/artifacts/sunbird/login/resources/css/fonts/notosans/latin.woff2 b/ansible/artifacts/sunbird/login/resources/css/fonts/notosans/latin.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..22818e7d4c3314490e1566fe3b3dfeb8ab0b174a GIT binary patch literal 15572 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 literal 0 HcmV?d00001 diff --git a/ansible/artifacts/sunbird/login/resources/css/fonts/notosans/notosans.css b/ansible/artifacts/sunbird/login/resources/css/fonts/notosans/notosans.css new file mode 100644 index 0000000000..f8c30bf428 --- /dev/null +++ b/ansible/artifacts/sunbird/login/resources/css/fonts/notosans/notosans.css @@ -0,0 +1,64 @@ +/* cyrillic-ext */ +@font-face { + font-family: 'Noto Sans'; + font-style: normal; + font-weight: 400; + src: local('Noto Sans'), local('NotoSans'), url(./cyrillic-ext.woff2) format('woff2'); + unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; + } + /* cyrillic */ + @font-face { + font-family: 'Noto Sans'; + font-style: normal; + font-weight: 400; + src: local('Noto Sans'), local('NotoSans'), url(./cyrillic.woff2) format('woff2'); + unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; + } + /* devanagari */ + @font-face { + font-family: 'Noto Sans'; + font-style: normal; + font-weight: 400; + src: local('Noto Sans'), local('NotoSans'), url(./devanagari.woff2) format('woff2'); + unicode-range: U+0900-097F, U+1CD0-1CF6, U+1CF8-1CF9, U+200C-200D, U+20A8, U+20B9, U+25CC, U+A830-A839, U+A8E0-A8FB; + } + /* greek-ext */ + @font-face { + font-family: 'Noto Sans'; + font-style: normal; + font-weight: 400; + src: local('Noto Sans'), local('NotoSans'), url(./greek-ext.woff2) format('woff2'); + unicode-range: U+1F00-1FFF; + } + /* greek */ + @font-face { + font-family: 'Noto Sans'; + font-style: normal; + font-weight: 400; + src: local('Noto Sans'), local('NotoSans'), url(./greek.woff2) format('woff2'); + unicode-range: U+0370-03FF; + } + /* vietnamese */ + @font-face { + font-family: 'Noto Sans'; + font-style: normal; + font-weight: 400; + src: local('Noto Sans'), local('NotoSans'), url(./vietnamese.woff2) format('woff2'); + unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB; + } + /* latin-ext */ + @font-face { + font-family: 'Noto Sans'; + font-style: normal; + font-weight: 400; + src: local('Noto Sans'), local('NotoSans'), url(./latin-ext.woff2) format('woff2'); + unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; + } + /* latin */ + @font-face { + font-family: 'Noto Sans'; + font-style: normal; + font-weight: 400; + src: local('Noto Sans'), local('NotoSans'), url(./latin.woff2) format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; + } \ No newline at end of file diff --git a/ansible/artifacts/sunbird/login/resources/css/fonts/notosans/vietnamese.woff2 b/ansible/artifacts/sunbird/login/resources/css/fonts/notosans/vietnamese.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..b28836f20376c17636d8fa3fa2fca8e43d5d9fff GIT binary patch literal 7384 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 { - color: #979797 !important; - font-size: 1rem !important; - font-weight: bold !important; +.w-95 { + width: 95px !important; } - -.forgot-passwordText { - height: 17px; - color: #007AFF; - font-size: 1.1em; - font-weight: 700; - line-height: 17px; - padding-top: 0.6em; +.activeLabelColor{ + color:#024f9d !important; } - -@media screen and (max-width: 900px) and (min-width: 300px) { - - .forgot-passwordText { - height: 17px; - color: #007AFF; - font-size: 1em; - font-weight: 700; - line-height: 17px; - padding-top: 0em; - } +input{ + border: 1px solid #9B9B9B !important; } - -.no-account-sign-up { +input:focus{ + border: 1px solid #024f9d !important; +} +.signInWithGoogle{ + vertical-align: bottom; + height: 18px !important; + margin-right: 5px; + +} +.ui.basic.blue.button.googleButton{ + color: #333 !important; + vertical-align: middle; + line-height: 18px; +} +.ui.basic.blue.button.googleButton:hover, +.ui.basic.blue.button.googleButton:focus{ + color: #024f9d !important; +} +.ui.basic.blue.button.stateButton{ + margin-top: 10px !important; + box-shadow: 0 0 0 1px #2CA58D inset!important; +} +.ui.basic.blue.button.stateButton:hover, +.ui.basic.blue.button.stateButton:focus{ + color: #2CA58D !important; +} +.ui.fluid.large.submit.button { + color: #F9F9F9; +} +.or{ + color: #9B9B9B; + background-image:linear-gradient(#979797,#979797),linear-gradient(#979797,#979797); + background-size:45% 1px; + background-position:center left,center right; + background-repeat:no-repeat; +} +.signUpMsg{ + font-size: 12px; + line-height: 17px; text-align: center; - padding: 2em 0em 0em 0em; - color: #007AFF; - font-size: 1.1em; - font-weight: 700; + /*margin-top: auto !important;*/ + margin-bottom: 10px !important; +} +.formMsg{ + font-size: 16px; + line-height: 22px; +} +.signInHead{ + font-size: 14px; + font-weight: bold; +} +.ui.form .field>label { + font-size: 1.05em; + font-weight: 500; +} +.forgetPasswordLink{ + color: #9B9B9B !important; + font-size: 12px; line-height: 17px; + position: absolute; + right: 0; + top: 85px; } - -@media screen and (max-width: 900px) and (min-width: 300px) { - .no-account-sign-up { - text-align: center; - padding: 2em 0em 0em 0em; - color: #007AFF; - font-size: 0.9em; - font-weight: 600; - line-height: 17px; - } - +.forgetPasswordLink:hover, +.forgetPasswordLink:focus{ + color:#024f9d !important; + outline: none; + font-weight:bold; } - -@media screen and (max-width: 900px) and (min-width: 300px) { - .signInLogo { - width:60% !important; - margin-bottom: 2em !important; - } +.textCenter { + text-align: center !important; } - -.margin-top3em { - margin-top:3em !important; +.mb-28{ + margin-bottom: 28px !important; } - -.margin-top2em { - margin-top:2em !important; +.mt-46{ + margin-top: 46px; } - -.signin-contentPadding { - padding: 2em !important; - border: none !important; +.mt-40{ + margin-top: 40px; } - -@media screen and (max-width: 900px) and (min-width: 300px) { - .signin-contentPadding { - padding: 1em !important; - } +.mt-8 { + margin-top: 8px !important; } - -@media screen and (max-width: 900px) and (min-width: 300px) { - .ui.button.buttonResizeClass { - font-size: 0.9rem !important; - } +.mb-18 { + margin-bottom: 18px !important; } - -@media screen and (max-width: 900px) and (min-width: 300px) { - .ui.form.pre-signin .field { - clear: both; - margin: 0 0 2em !important; - } - +.mt-90{ + margin-top: 90px; } - -@media screen and (max-width: 900px) and (min-width: 300px) { - .signInButtonAlign{ - margin-bottom:2em !important; - } +.mt-65{ + margin-top: 65px !important; } - -@media screen and (max-width: 900px) and (min-width: 300px) { - .signInGridAlign { - padding: 10px 0px 0px 0px !important; - } +.mt-127{ + margin-top: 127px; } - -@media screen and (max-width: 900px) and (min-width: 300px) { - .page-login .ui.container { - margin-left: 0em!important; - margin-right: 0em!important; - } +.mt-27{ + margin-top: 27px; +} +.mb-36 { + margin-bottom: 36px !important; +} +.mt-36{ + margin-top: 36px !important; +} +.mb-30 { + margin-bottom: 30px !important; +} +.mt-30{ + margin-top: 30px !important; +} +.mb-56{ + margin-bottom: 56px; +} +.mt-76{ + margin-top: 76px; +} +.backToLogin { + color: #E76026 !important; + font-size: 14px; + line-height: 19px; + margin-top: 10px; + display: block; +} +.logo-image{ + max-width: 100% !important; + width: auto !important; + max-height: 56px !important; + margin-top: 20px!important; +} +.button{ + color: #F9F9F9 !important; + font-size: 14px; + line-height: 19px; + background-color:#2CA58D !important; } -@media screen and (max-width: 900px) and (min-width: 300px) { - .signInGridAlign .ui.card { - border: none; - border-radius: 0rem !important; - box-shadow: unset !important; - } -} \ No newline at end of file +.ui.text.success{ + color: #33B17B; +} +.ui.text.warning{ + color: #794b02; +} +.ui.text.error{ + color:#9f3a38; +} +.ui.text.info{ + color:#276f86; +} +.hide{ + display: none !important; +} +i.icon.eye.slash:before { + content: "\f070"; +} +.mt-45{ + margin-top: 45px; +} +a{ + color: #024f9d !important; +} +.registerLink{ + color: #024f9d !important; + font-weight: bold; +} +.registerLink:hover, +.registerLink:focus{ + font-weight: bold; + outline:none; + cursor: pointer; +} +.ui.blue.button{ + box-shadow: 0 0 0 1px #024f9d inset!important; +} +.smsinput{ + letter-spacing: 3px; +} +.ui.form input:not([type]), .ui.form input[type=date], .ui.form input[type=datetime-local], .ui.form input[type=email], .ui.form input[type=file], .ui.form input[type=number], .ui.form input[type=password], .ui.form input[type=search], .ui.form input[type=tel], .ui.form input[type=text], .ui.form input[type=time], .ui.form input[type=url]{ + font-family: inherit !important; +} +.loginupdate .ui.text.warning { + color: #333; +} +button,input,textarea,optgroup,select, +h1, h2, h3, h4, h5, +.ui.header, +.ui.text.container, +.ui.input input, +.ui.list .list>.item .header, +.ui.list>.item .header, +.ui.steps .step .title, +.ui.ordered.steps .step:before, +.ui.ordered.steps .step.completed:before, +.ui.message .header, +.ui.sortable.table thead th:after, +.ui.card>.content>.header, +.ui.cards>.card>.content>.header, +.ui.items>.item>.content>.header, +.ui.statistic>.value, +.ui.statistics .statistic>.value, +.ui.statistic>.label, +.ui.statistics .statistic>.label, +.ui.accordion .title:not(.ui), +.ui.checkbox label, +.ui.modal>.header, +.ui.popup>.header, +.ui.search>.results .result .title, +.ui.search>.results>.message .header, +.ui.button, +.ui.form input:not([type]), +.ui.form input[type=date], +.ui.form input[type=datetime-local], +.ui.form input[type=email], +.ui.form input[type=file], +.ui.form input[type=number], +.ui.form input[type=password], +.ui.form input[type=search], +.ui.form input[type=tel], +.ui.form input[type=text], +.ui.form input[type=time], +.ui.form input[type=url], +.ui.menu, +.ui.dropdown, +.ui.category.search>.results .category>.name +{ + font-family: inherit; +} +.height-fix{ + min-height:90vh; + display: flex !important; + flex-direction: column; + justify-content: center; +} diff --git a/ansible/artifacts/sunbird/login/resources/css/semantic.min.css b/ansible/artifacts/sunbird/login/resources/css/semantic.min.css index 8b2670a045..3c9982667b 100644 --- a/ansible/artifacts/sunbird/login/resources/css/semantic.min.css +++ b/ansible/artifacts/sunbird/login/resources/css/semantic.min.css @@ -8,7 +8,7 @@ * http://opensource.org/licenses/MIT * */ -@import url(https://fonts.googleapis.com/css?family=Roboto:400,700,400italic,700italic&subset=latin);@import url(https://fonts.googleapis.com/css?family=Roboto);@import url(https://fonts.googleapis.com/css?family=Roboto:400,700);/*! +/*! * # Semantic UI 2.2.10 - Reset * http://github.com/semantic-org/semantic-ui/ * diff --git a/ansible/artifacts/sunbird/login/resources/css/themes/default/assets/fonts/icons.eot b/ansible/artifacts/sunbird/login/resources/css/themes/default/assets/fonts/icons.eot new file mode 100644 index 0000000000000000000000000000000000000000..33b2bb80055cc480e797de704925acaba4ba7d7d GIT binary patch literal 60767 zcmZ^KRZt~7(B;J)F79w~9o+Te?(XjH&fxCu?l25GxVsF4ySuv$FtFcl?ZaQSwVg^% z=TxUFPpR~&#OMkD@VNv4ApdL7fd6R_fFuaOf1JGX|78ES{~!H-3{trm=l{C@18@M6 z04IPWz#Sk0@B&x>-2R(6{D%MlDnRu=v;uel>;WbK*Z&wwfaZUU>whse|7Q&dzyV+a zu>aRt03ZO{eexJqtnMct)u@3*s3?X{FA#mos?(EHiB~!|8@P zHSlRJs7(;#_>C{=bF-qE5ypoWCp8a4ibb~`lhZnsG|vfL7aUvoGS2-d*~C|XaoBvh z)O~O54lz6Cpp#=U3+W8~m1Jh8i50Z0*3oy3VuiZ5`2+1iW8vld^?2b-5vInw2r)>+ zBk>4J@ryU{&4p#$YBDZMdxcBDJsA;7G>@f)+)zgBLlWL5hewQPFC~yxlnbk9*X( zX6Nyk%u$KnC?+U9G(y2iD+SyylAV&6#ewy1sMOvYn8_8i!Kynzg}H0 z4auYFzNM=OCc=Iv&ODQ{g6!7A7$%nE6ugJnWBI<~x@AL14_)b-BR2^5j5xS%Z>r!+poCp`hi4>|d z9sS!BL~)07L%H$A45}!FIeVD8mA>Iv+YDVss|8qla@15boMWkFNfWfDcu~V;BRW}Q zHbxiK4@ii6{-TFM8V8~H(`(W90xoPe(J*~^m@1@uv-sR;GZ;fq0&I9AMxQ?Vj%|y) znW!EhuS6QM8RtXJPl!X8!v_!0WPYQz2Kb3pN!J}xCaK2iqm;({?@bivA!C@15rM+7 z&G)j>oszdf@qGAJ>EM)Noqiu=aHZvQ`s%TAQzCI z^t-&7(S%JstVz3stdszdF*a}FnFVMn+jW8TWR%lwK!uh-pLG@1-6E)abeJaJKBS-) zo)b#7F_1DGpAWCn8AB+pkf45{br3o&6pprbhCJ7vMUq;vFqGXt!r|5P&xe}~Ab8v` z{flS%lJlHITsGT`+OO>I@)EiKE2yK$&O{)(z?Sm+<7CQ~JEy!94B#r=rfZL)7-<#T zdZRO4^2)@5yT?)5!`*JS2U~bZ0<`U{OtdT!}rzCDXUY|PH<6d~oBIdw@k*ys* zCd-VfTJkXJm!Zl#%AcV}BvG^-S>jkKVz1S*!!X9UyyjtV*o|Te8+`#P&68*9&;eh> zV61v>QV;fMXYCAaE~+B4q7E=E3TUEs;p78YVYUDE(*1*Q|etMpC*bEv$T^WtPR)u&3=mnqXpc1Z>uUM%F_cf?AUM%{Un{jTEyS{Tuyf>|lssBMH8r z(lKw^ft~6)I_&ZCDnm8bs{JBH+MlTj1WC!4P(GR0_%ISZ)JIF_`Q;hPK37yom=XN4 zaH=;q{au8;lPsuw1q8EJ)iOd`zX(pJ_IHkw72{x^g<`7Ob}ZUfcsjYQG@R$rq)kZv zpqwOru@H+~VJ)V2?V_+5^~E2XfJqi$dPYc z!u6};1!o7$;YRm~I8N9)8EVGJ8seK2T&Zo0`gwfpFh_7HQ1*(<%h7W%^Jc2Vr$&`v zLcMdy#71nJVjuBXLQV1?z45kUb3p*RDk$a*;$ZZ`U%oYltOpF3a(Xp<^+`YwE#TC#TLVlES?7)-kVN6kxX~Q{^V~e;AGN-I zsVK!c&bzlPgMWREEQrJ5g$^2RkIh+uUk2dW%W%`X#tn-GewEs`E=hzpO~m;weWc#F zfKaIO!K7Gix2T6*jgEq;FbY+P3W);*e;{1~&F}@Vmm?0w!zHwl)l=Gd)KHj)o}^y| zn&V3(`0{7>$K>N#7qT;YtclZ86!!>NoNqXV?Wgu6)kVg+j1SzNq6 zs39?@@wJ)mkzROo7H?tuo8}==6J5%5$-l|@Ct@9Nf8lWZcBl!@61%|TNN_REs&R;0 z1t+Vo4j#}gVJ?RUdgt9xij}OY2cXs&#wqfIv7^gXp;`wwEh#OLSE>wg>R5lDY$?R% zx~X*^1LM%D*JirmpBuDvaUVxo8T8=!UR&e|WHJNB3i}}RiddkV_^q6*Wj!zy2}L#! z`@WtPC?>_fy{9v0Ef)W~Vcay?_404FPO;Z$jl*0&tZk*~G-m;qBA01OxK#n)NGpSC zkXJXbl9ZcUCz$4i}$d*3ALQ4?sOb)7cn@`N0 z7(MEWHX%`mg~RN_j*Bcg5!!DV$V%zz2Sq*Mq7{arbD^ZBQvQ&}P*TwD{*8}lYoYMp z9Ay%^y*sH%S6R#?j9C>K_BB~FnTux>wAXJAP1Uz6R=ohF(Vuulg2Z3R- z{oL}A_KKvz-O*-+bUw+c#U}?GooWRi4S9nLI_TL@V#>{T9+!Wgu-r~!-(F{obENUu z#@~d&be*nF^H_{cS?jt~NMAu#uY)%J*J5>nnkuie6+&ztH$f7}jo5N%rscJjC_yLD z%Pf{zbPBF1Am0^wjVE;_P7JkfMEe6Y20BKHUJ_8fAZ-}D@k5YtG8vIApZhAxulthJ zazt($#?^JJ4Y-shRpkKsJ4=jlEobY`VCSYO&J)iVL0WZ}er!qFlU~vZhI?A-I<>ui z0*3g@=)u7Ee${zBrcXc4U9j*>EHMb0Ll;-ay-Fk)b@ z5F=x;?*@S)xdR_=NzpBKRlgpNp>uU@tu7ny1KLL6L|AG5^BwM94L?Uy2n`G7G;~l_ z=p@JiHvp%2WAq22q*PJ&VJ@@$mAx3UIw0 zwwm8%==0ikJf||)kPI{7r7p~r4P?;Y zi?Cwwuwx(FD*;-p5VKK0{wjZUh<~o0W*?rhQhG|$&9vloUm!(lH^RU0nVgUaaG%YA z{QF5K^88O2Rw-L8hAx*-1yDQ0d3ehRULceHR8Jf_>Gwk8?SAcZk#T5}Z|H8pP;T2n z5Cz@+$n3+liVJn;Wmj5&#%JwybF5(yEOZRi$jWVl2+a7C&msDxeoB^9DFGXS1*y=K zxK#dRa>b-%sl5t?mtjL6qL}wxHMWn9YcCA^4rfA1S4O*jP+%l3+yf|K)`~B&mdyzj zAM>5dsp;Aq?-FH%{y`UaWYj3de&E{guy&U zSq(Qgn7z11aCUJ~*Nin6D*O$ZLnx#wwdKN^>p%=c9iBjbNgY!)UCd1z7vhM5;VNjN zI_b!HJFB#nszk0ebH)~HiJz~v5FV{GY4>@qybr6tzaeTFM^Q64fhn0Kz1B)NkYpMy zYQn2Dv@l?a2F-7UStSNdO<}OEp`jdaPJq@tljHo-YTb>79%Y4ddpW2-0Rs(KU>CO4 ziNk|G9esRy+&^K!<>a4=Ung1~FFR1{-axStIjGGrK(UWlEW^x`pXcJ9^vYzQ|>ihW@Kis253o+|;8(8#b9DX8JZcx`lL8+=vF(Q)T0F zp{F^5L`84~pHJ})N47Z~Jk;aF=1()Pd$^YTb~EdhOB7_46wXveC;4(#$g-4GmjE3f^jCfY z>R0)#1}pL2ZaA;cO%mr_s;`6MyWb#4*X3e~ubnHeo8rkyhbWzvgbe#&nYY7R9Y+ne zfk-t+qDXRnQ5IhHoAqAE8i@c;hy(Jf_BJr9;`?MM9^IbvBOMq$N2$TWMAfj!&Pqe- zi6yA#2)e*Mh4iNg#Mr&&DpzrGk_8d`A->sV2ZQ_30U7(7foAz#ND|L~r9v)BeiZaa zfbmbor-~yOg&uxskH-sxWZWA1M}oInpSVVD+9FMm#ZG|dsDMJ!WvB$#BB^?9UWc>n|@l)J}16{3SLj0K_pu-g}pSQ zv@mNGLqy413Co_SI=psLkVgP)8(ri4`RnzZOR%M-`Ao7xf);&55$B+YBeLOq@=-l3 z4=OtsgmuauO|KCwOZZV!jC)sHx^k|dcVrZj*;%h%lQLBTM5@Ij2i)d2F;bnn=2(p1 zAy+i>=!1pJ4J~g>m6EfLmKc17;47GyqZ99>M;{J zRsK2ilwk+YVHF#S8lY^%#7+^8VY2I3_uBOECog37U7kjQh>HQy?ABBywy4+#C#~kD z4zkNSHA5Wq8}Hunr!^|>oiX9a@BlwL<`wh;m2fw?xyTktD&o%!)#GGj(oM1p11Ntg zj?T;B9<5!m>OkZc?l$mk?xdM@C3@HZ-Me3 znfzI3Om6^+j={VwJuGO2TeZCCe%wqKCF-T(K79Lfi_8Mi?k=SE!mAi2N4-<;Se%PR zl2g`80j97gXi!k1M<#6hP2XOw>MgYL3^X< z4e?wH8rjgRA{n#Qm8-3ZdrQ(N^q^;57^~VLI1{Nu19}I9bSFe+$WTMpoiv;BO1w+z zsLSX|XjNp7em;#&frJ_`B8ZtjB%Jn_Y$V_Kih$Rnp@)PH`u#VEq~DaXs0|vdwHryu zJyQ|qP5eP|GO6^i1Ayqpd;7A>@LbLB^6xorxyxI1l}^9$*K;JOaoaaJR!Jf)LI**y zw^)48gHJEY_K;J*2cDLH5zEOfZ0VV+hs;j|){@=1CszKzT-IHgY$RS;2W2A2Vj^YtSX5n*x@0El@ZRO)NK>(02e{V$r6NH-bF4w z`F;=?7`!X%0oEq^N%qq38Rhg>A`yI!*+?WI#j_AT9()GWwfkcnQPQ*{pM7Q20(RI z$pl%24%+3A2^xb%`8w#0k={7&;B0F{#jV@_8y(mB5_Dz{Dk;z zes^!qBwHy0tvMtHqaKcd`29#570MgvEB!#mSrwTB`VpdOXzt4}_;zvRL;KvK-Fd%i&WcfRw=lD`Iaa=LV}4A$k!dYa3$iWM*Fk7dV` zyvX*GU>Z)&2yF9JP^F8ZbQGro!n)bF&_!Cr%HDI>3YI=&3@3^cq9O2u$R$c?@(HE9 zEaVzTG#pLPV5YOn&$37IAT$$aqauD@aunA7zcKoFFk_HdXf#b+JTpc(Y+LjnfX&&2 z9A-GdIM;hr7uvMxNO_j%@qQ{X8KPy=L@M-+4*lW!Vk;?yo92Du>XN&MbEp!$HZKEc z%+9H$Cj77rU4B2xzxgKKPTm?d{Sa=oA0ok?TL}yG$}=H-83ba9K|;3!_4{4*bJspg z!OBT)nrNt|&1M>a7v)c|M@~dU+u7Xs)+L>I`{S~=^NO$N} zV7T9rGi;Xfw49A^2u}W(ZN{SfUy7^FUI4ss_HL8J>3CX*@{R1aZU?Xc+TKk!I?7FH zgFVaa%FuHysBI5ynCk5vz=R7wrHB>(4b_s_M`4!AT1A*DOORnSVXouK?i0hLw6~ zmGkPJu%(HjDEc=nfYoZk3!=DZM?@;AyR*3^lD`^+wnY4m9vt;^9U!6;2Yvv%f+K|# zmz*lNivA@wWEP0TbQv!EN6KsmIvCM98IkrMNZ=?#`6yORnv3ngp*4t5=Y41&!99|fug1T7`ZKvP*!&#fXs)Vas{<(g0H{IMl|H09$oB;(2>p;xiR7t!e3dDsQG;vabjjz_H zaU+9-q;)K7!4)Q#(DWmaG4uvo-J5~)U5ft-EXx$c&z8S6Sj6z+X+LZrwN#-l)|~JI zgB1Q`#aG0sNmz_a5?B7=4mh~qkqtW(pj~d?h{LLk4uL6~`G-!=PShanfq{pLoaR11 zv;0ek*e{npgo7D@IsX?)F>>p+cZ91bQ)p)#TRR*Tp4iH~x4*rEf0CVFMK41;CdJ;1 z37yeoPjB@;MVKmH=r3S^Hiq{6{-vDhX_4sm@CJCsc6$}d5s{@?I*t$uX@g)MYsZ+Y zgjAecF8{SmU@!5 zFeoAHPys`G7XU2`jpIWHfuS;(`1Qy#^84-~zb@?CAS+t1bk?yq%>w@P_)n0Vo_Yxe z!9(K_%MfMd9ton@Ve*>tOXUJXliCv5I4n2HNd*+=kK5U0PQSkR9~QV&V{j3^$)U`7 z6yAkHRJ*)E$1LdM(6x9BL9OU4?8@YPw!5$#rZqOQ=|ZG{0(BSx8?+5BaTS;_mMM33 zh)ERJE`wnJoS_Km@+$4{d5KxTN2P(;sLk zxJ8kMARy(szN%V1o(OD2F{9XxI($%28lY|bU3u=g^=iz~i@z%DsDwZJ88L?`T2P~t zgd17|=Kf-6zm>r3pX0At5ak_jrtTzN2Et@5D(0_e6*YrQM+DkYVkvPTD^?GDv#Ioo zhRKh;<5ubIgt9) ztu`jz-fr|;v)DNg@sgV{HU5n?Yla*RW!X1Of|5Xz7`W?8et*6m%tX>Tvw-`&HFn?y zR`gjkud1|-E-A0{JH2$X0p27jW!YICBSn#^5!>WzjKm&aXLM$`tQ;4S2F>R*TtX4i zFi}a&B*Z$filKvl^n9W}Z(YQJR6ER~O)Lo!P*qu9SFFnH6QUxSar zSZDHJxZzY2LqmNyIZRbwk-gk33Z0Z|DR*RUw zs>F^a3YfX9uIg1&ByNndF_o}b<%B(wvZ#zV@;5nVLPZJl_=y&@Y zVG(Tnf_CR{dPu#z zKq6R->NlFYly^nYo6?~AZ@P?>TS~vh@ZjB-8^N@1FhpqM>gf3e?Ih{Y_-Xv`NxfIK zJT;X4LOb7LB!u%vPyRs2L*5Fwn!60g*wEI?(uTf81GgNm(w-NyL};t1~K5ri(Kui%+$Hth@ex_Bzn;n`4ZnLRLZ8P9&sw7 zh*H|v$`ub~={ki?$H`ziD>6wzUX2TLS~-DWlxIS@XZzbx^AB(aAZY&APt3VE?HIKy zVWyr5Q>yfS>z90p?)Rb0!ohxIAapjMp~s?*E83AI4=MG9)>y9o}B-w5-?--y?{AepYBPZ?lQnQRx1TY}p==Jc$%+pI0IlWB0I z8MfHS<~31?uW&V1k{1+<><!ByRM?8C78;tz6=Jv{#(sjohmdSwJp^r zzfjD%@R4mDm2PomY}KQ#%DE2Wli@cq9_7=psCQM9P;O+>`$oulpa#% z5|VVHw1xA%}hD`Sgy8*g%Oauc|XZU6kwf>XX49~13_?iON zabjH!4`C5>v$_Q~Vo2H?J#{ z`E%Hn4MXfh?&&lW1Kv$F;M501;>m)wb>lJ=U*aOl{!cymD=anno|Z0s`c<|$K|To& z4HAW7VBg(LC(U;|O*Sx5IWu=(Z^>w{rlKrkS>mco7LZELWsMX$O zY$WJq=t8XTAJPKJv{wjq6o1iFLr2LEbPrO|yyAe6Im7f_yQGoF3e2Gd-|lGWon)^z zjSKL&UcOyKGR3OR28!-&9%OD}GbFiGQ3(sA5KnQ|T9YD`7&_`+(DR0I#I87JfoEL7 z{g*1t2J7%f&`&tm2_by+AUYXIBC2ynRkz;Adk!;`$!WBv8Ugd+=%2Lcrw^R72_YB) z%cL+Y64Rc&viMqRW3iCp7e!@m9j7IzBH{5l?RZTmUef48F&)ltd#mbYKNTmm_F^;9pwQ%3X6*bXpnGRHC)gO79#r5q3jF;Qd_9=$=EwZwD`h_N6DVHKbe{!j9 z#so)@2FW63M~2gF9T7MGtIGiEQeTJ9J=8?-A$r9^oeoWbJ5I+tdcWHHt6MH#NS|({T8}j-+lYdqMAt$UAoZ za(o&{08ULef;i>HXhcBN>|%)iHLc=Vk54(%-^Q3ZtrTl|#dOZU7Q)Q8*&84MR%ao9 zW<2!MO8l7eXvFV(cGeNfE`*{2_}P`YLu??Z_SGDCcT|>{tO%=79ES=iw1ab9_8rJS z`N=4qATW%j7qNb8KW1A-r5F=n&kAElM$SRO{HQ1o9y}~fh8`sgr_QQ|a_qNorO+a{ zMtdXRpjlH(8`2ajg%B4_pXWmI68VtJ^vK}SE%+^Tk+q7mVA0C4tIN$)36) zPvED16qa||G8Lqf6``cKG)9fBppZf@;*fOR9@w51BwwrxFIMBwTv=F$)~L`*T+9J# zMiq;9SxLr7<4iy}QGq8F4n3Z3q}Q>^S;SFjLY2>V!u!jO|FLx(9+-usB>D1%i~F?= zYgXUx@xT|oFS5WF5M`+(Qg;E2Bwmh&vp)fh1E=K1{(O1(7@5>`i*~5X$D0gL(h~6?H9(TlOL89`tc$AirQO04wH=rt=+-ogOLyJZg zQYQ7i5bDLhY}WbV?7}E9^y;w|_JbrP{+3<`=@0u({pG5kUjqK9T+wlibiX6sUl&ox z{&mOLoj;<$6&=KOVsoVVO9zr5hMyMOfX%yZ|M>X}%PydwA)TnC@+o~AYau5A_m~etP#)m}(a^_h0OH*1% z6w%Nj>^!3`gHQrDD;)nWL7U5gMH2qC&aQXqEDE0K4;^wVbqCEs8Hm3dyzzc__|s-# zBinFNK^)%(+GW?g@tmjnS3Q47<~H;$FsOl5w6}R}3wKcI;h`ZYclct#*V6kU1-&$N3xcuB7OdfaK z1|~V)E7U`Uzrm2tWt&4_5Y2;s_nBOj;h>{2ZM+ub_pdWRt* zn8hbai2^;d$W-XDL3);Dqv7xy)qE|3Y5wsbPG9%p+^)Nv`1=Zfu+EQDLsG$ zuv$_ZnKTAwJ%E(xbUq2PT|;?OSbm{G0QzIzXvM|n3tof>=6k}&6H!!W?V&{Epf1f% zEt`AyC`$}eX*=HJDr8pb;5e%@;6v6;?OUSBFcFRr;4kwn zlLLh*IIo&>DN047291hE_*030@xCbqvPU$YwS17E+6E#g%1KuBE5ARC{?C-o@fuwl zk80TWZi7NbxT38rAMmy*^&tYbRu%N>gFl1@2e$i|rZ+rv+1W`L&WD9*o!_T7hGoBC zMG)FlD$u&_lIS;wO-g4Igso%hTE4>oT7wZmK(<~5@}~-LJ7!r#t}z|mII2RR(Vd;X z)fcBvipXX}SC}YMp6;BS8Xc}QVu~^tKgd`OV^sDU|6^m#Y-lIxmMm{LB*$*VuZ(*I z)~`ELpbB?0`ZupxLDDL7T08q`cETwof;wgdDh-F&&k$kCC&LsrQj=drVDMp+gwj=z zSDE!DdiKO@;;^+YV$d{ViAf>fMPF?iBIA~#l+$7Ha@9~ambDVj`YcHz5(D){c93Le z)5t2&dHd+Ze}1HAbN-M6RV`GK{ghmZoi9)%a$S;_3v8868q6Vj*?b(NWWp(*2h}_)nz~rwFXfhfcC2J8f(!i zS9ld`237-B^*rBwu>g5L7Q)n5Ri%B2vn39s37ENHhyWPi0;4=M-Y?&FaxFU&qqMYl?QgLZwxb8=841cpFFMHPD}P7|u>ol;lT{*1oB=_aPLV$O1^QQMH`=sto-#>H znIiq337b$E21i#^TI+WM2~6{IX%;jHB!L=9UzG-B6noeCy6qTdUUJ~vn>cP-Cs#$b ztY<;~f+JT+O61G9?rC9z>5hpc+j7PM9YPWU1h_kf+ibZd)H%B-eEdDsic+6k-p8S4XZu6JM8u&XzB?pp$D=U9fDh32Acs4OBJemgEdCv$-B`G4_4|{qPciL)gjkl0PRwU!xZr~SkVEtuNkZ`Rw zBNya1A8v7*Lyl=O>5nFiAv*O}>o5Je1j5f~3KH2=<`gms{}8e)k@YS}%mq8>Hz7nSUMqX;gN=PjuN>p8x! zUCL}1qzyH(bRxnMu3j0JYYya*aqPqS(9xQRc~}~8;+ zkeoL@n<nr_b?b|?oVP4VzfrW%(Pw&p;lDC2D!DiCEVgrSJyPSTAGAU zDXYfGna+*(Xh6+Od0^QUXB=##et#IL9kUdMRk_+(C&qp=_RdnnPzv)d)v9O+TM6|6 z!TFgq!TOS-^Sm>(qnb7=lX%HSWpRtq48LZ`q_RDhbr>ZEARz^A`H9icBVT}r znCFPX@Uop4#F10wSmqo~Vgl;?H#zwT1mFPvZdJA}Bp9_@P#hVSS?p!@)eKQ^h9}xD zdW>+^$Rk(C_uPBoPd9Ou((4h+Kivt3u_htDt*@HC?zF<=1pd(0cTe89Bb0X`_n}6Sa&ZNFX=g( zhgqV)EY;Bv96Ht|@tKwDVA?9oQY)+v-QAI1$QK~QG*(&wM zt(_~};}?^W+NH9B@kbok6k;n|_^Tg|f?}_%NHX-CxWznsf|S^b&b(T+KqDw!nc)lcukdBj`JYO42gj*iZDndPlFSuP){bKOoU_Pb)@|wt4TK+cF_pCtNw~Qz zkh}`RjbaB1(AZJ5!GHi}J#v(f(Yv0*RUry22HLE~|)%Fr_FeFrHY|ROC6cLyfn5pj}^YL>M^qFZ}R_ zRVIi@zS>6>l=cdBB^9vwbg*R$0lvm^b1_nyH(8-~>%XjjA=5Z9C;ekO4R6?SR0KJ! z3NaA&tVB2T`9Fdnxj!tR#+6PnL=oV{dEVSK|BU_$KUIr&4rW1|uY#-?)ufy>^irON z>2r$e6D(B(VDfG6-S|9-(XZWdqDiY*rbI@u2Sni?t6fJ18`vV#kgd%mbqeo~?%hA9 z(>G17XE-@+nlMt$0un=AK^!q}arRoTtS348m^tn+|A|s8xRHCPcMKH<|lz2P} z7F|zk&@8BFr8Z59Le;%_8Na8435uPT14{7@rA+5p^5mM6b)&00@2mEUcU3SGG}EQf zCKX&PZoBZ0`0quHG;$KdIN`GXRq~%ciM@jeq^XJ{1wmXia+y%zm8b=9t2jajoa4ay zWa9q(-{xliizqF!Yb<2>xH{v;`j>G7Q6F5yJgS*2g&Mvr{13>#-l3PE#C~6xAI&~& z6YCC2o$Pe=lz%20+dSlDnc~EG(K4Hd;ybsbgXXPP%AolnN~F9YE9;Vant?@Ptq)>= z;W(wNQ(ewICncSr(iq8dTntI=(Y*uXRXz>oIMt-kWwBosf3}q)RvW<=C;+i$)@{Ro?nQzCHI23d4z5q)8Y zBP$RWGo?EJ)+E4p=Mk`KA_bH%6ngdV74+%mp_b#5Bf272^L!lgtY;+{Xe|iDETmqn zkE!Q2lZ>#Zth*8xlnm8x*oLy!AihFbIM`!E{r_~mtJ9v0!d^i4c1hK~GI=B&*0ExV zUL3!C#2L;Wr$!XbpzgsB^|@9!O=ktcMfGPZ#Q$Df3~=b7-7hAusZ6O#(Jjz~B|9Nv zEUE-i9#)Y@LJJCFzB(#0(ZUn5qdDn{vAO09;jw=x(_o+B(09`Dboe9)cexfFh$V3p z8g~>uvq7Z2X<#VKaIM=ix@Ajopn!UPw|`{ca?GZ#%ZT?IfBCp;NB3RcTBh-TDG?70 zLLh{XHAM4u4I=brHBlRdw_-SP;$6bt&*Wx?4^b`aSXa7cjVjTOXNl%UWj~yujVCHb zItLiea)r7rh=$3-q^Hi7!DWyCfwyiUhr3R38C$2!W#3Ik+gU4T4(WzKq!Z6OL@|QTvT0EC`cr{UEp`)d{^V%Uum@p;z1wJ0Q8ZcSsnO($az$v&RtW+s6rroUNq%QY zq$HQbaGi`e{~DI7_24!ihGuI?uV4}?+3cn5!nb=zYG1MqaXei6dp5h@^wBR$w$&4kwy>isev|UHX`v!) zNJAct@bNO{eM#1BXN-ti?S`)NY~P65*W~0u1vYe%?_g?*<9PJi@TUY}z zzi~=8FJ69#g-DTD-%i;C%0 zH=5tuK99qOk24HWds6Gvqo>)3IN@haZUuuOb9Pg8@7P}PZ1%K1w`noWS-cRuT2B7y z5Cy88t4c=RO*XQO^g7FI<|485GiYplp*Lv}^}j_^q!0Ax<^+DkeW{Ys@KjBVdGd-p z!$LT_W_9^6jHq^Hk8uqZ`sQ!XZZkCw<(d}13p<1Xf}?Hca?Rh0arV_Sp?pM zi*Dc8EO-#w$6K*;sn^>S29+^o9jO7$?WrH*&T7@{4apa@(q7a}P8p|)hxDrD4k?l(*Md;f=1~}0#+(U4K&a=DgTL)O5vfe$p>8;mbC05No3yq_F1a+QSEk2p(xc%TMtAZUcIV(ut<&Vhkq3%J z5=rUt74|atvrzz9;#3A0DIt4;mm&DWq6t!=PUDbc;YS}E(s5p{PPE9n(BG9i`O^jF z6>l}=H+1?{!+&G;VTo@uWi?dG=fj?dWf-OCE}F8BPj>|&t#e-1oa=3 z7~9^4RI7Z07kYE^r4GV+WT!;R#*V|FLq)Ffa;+<{N>PsDKQ(RdYc#32v8xAg^eTq{ zH; z=QxLTI7qt#&CM*+EIMru;f(pQds(?WQRkXpU@+)JrRqPN>P@oC;+0?&*@8=!&Sr$+ zK%`FJk3Hh2ly&$LgXRUk-k+2hZvjbM7aT*k2H7@)nTFVfyp97urrKQ#i=34N6@=1L z#ELNCiD7`Z6?|GQ))e&203nwtoUdmxmw1y}VIsYs~ba@)bZDb$vT>H^N zd$xOfHX*a>X{08W<~Cwq~cGDcVoW z?0-T1axN|({VcACJhkqk#G#_r zxphWikMT$!zuHaKFK@`u<22sX7#{8?K zj5{~Ldk&|ACGU7NGsQCfmip@K-;i_z-cGKb?b?=~4&s!VyB#7+n}v>!ws-b6KQ!&3 z>O1df>Im4_aKH(tT=mtax^6M7TG<1U8V;`Mk&ECcRB@55zpZ~kK%mtUK%7(KDhf>@ zQrFRs%DQd2X22C`oRaO(Q*kaVtY;OWQyR4%0M5NR^>gl&TB$=w;hz)0uvPr~#XIEn zv_KdtbSLr2#EYE(dygZO%Z-X|_X}7yTUOo+-y=o|v~VptnH^jo6wh%sZfBR2Ml*_b zn4A4y04YG$zaXYFLHL#>q0yJ$@&Ri=Al50TGR!DVFeTo?{FGTQ1M3#xZblbkW#-cLcR1jP~ak@w?T%O;NvDBJd z2TkA%)l(|G?#q=4+cBuo=?Z@~bAbQ%aI$fE#$oz4tWU|2oJ4LW$8V^|2UtxhZoVN2 zyzH-hL4^h$3r~b*u|FnIt(D+Fk$uqQz$oiievtrPGG)uQV%K-QT327Ndx^!OvLj1D z^^dOOq1kCu{!zdnH=A+atEeYCJ;d1dNc>^~0Pn>jSM}AG;4O$0;4%l0Rg4B&`HG=z zpsp?3W+;KD0~94diRsET&dt&p46~RDOEZ(9W(APWFdxiON4GzG#{F2E_GxD{gy51b zFmkPwzM@ee1s$q2os=2tjCi$V(W5o|knZIf27wJ>lda9Wq+Y~ko)h`*6c-r z#t0o;)H-fCz-4CRvHZd9pZc>y(1^$ZXv`tG2H4lVnRf(&K{s>^W5IwLN=_0e>To8a zh5lp7X9;#Uj*x68c#r_AEC=?((51OT3Eo&h5!FsYGZ$0JAHUpmd~Y}tceaTT724gy z2y1gbf|h1kf9g&N&}C~LBU+%cKUOw*f(j&3XTqGhMuEAYrHG$IUjCB5l8Jn0 zy|aJ;JCsNQ>gP-;-)kaXB?rAkEGG!m+N_oZu=I7}h=*M-SYo1fiN}C^Ns#I25j^7m zhI9#61}_3yQQXgGqO&Pv60o;jDO9Vx>au$hLQ8)^AEhrEDY;Io`F;Vk=MLGYVy8nF z`4n3z5wG$Nv&WXabRbyiDvBAzS#s^D+K2`3u>jwTuuJ$;)z$u9!0>gPtQq^f@M_I_ z?3D^TAv9>4x#$$OGG85>2}Xw0ul`sNOc?u#mCc6mW5AbNEa<)4P{P6Vtbo{jOcYm|WlD3B>HX z@_;J^FwrPR)+w}4oVSMZaP#RgvXaVR-u=-+B0r*bE5darWh4VNN!7HfT@8~(VWFz7 zO8&9oh+EEPTXd5d0CS+&+7#;#nKvs;GnrLV{$8lBNjzkhMzhibtZrwIL{CxT9IFLl zn?7?XNc(#&Tt{WPctUrTQ-PrF7x0q=;5>C+M#+?0i+=t9oy`F?LP@1(lOYgN@aUPT zyA>r@Fo>dosXzvb`WvHscsGElv!sQ^DFy->i$fPXt6T5CW1X4rns6E0T3f6U2r#&3v*jqQMl40SWwFAboRC zECeU9Scw4V8Y=X%_JofRmL`oi(ZnfvDrym}IU@_SMk3x-@}x(_1PblMu#6^)b*gv; z3yBIGfd@b!y#t>_7;~IuNUNWI@Ewveg#8=_a`}z2vyRdgt*)#22WTs2PVcT5ieiGd z5Sk0f6bG?)wr|ggvs8&e$daU>1`<$UVMoEc99z6VUI{qq8D*6eidFzM!{QeYa2<+4 zzSL1c{~BQE0j}Z!1XkxGu=9n=pf>x3+S#&pWICDPM1ZKfho9X&52Y(Nv7da}pX4?U zU9y&0Dv-`%b8$B&CJm7**HD^SOn;5+f#|ge0AOS-2oQ|p5Ed0kzLVhLpyhZ6_w0z( zfC=NZRTPwf(A9`h3fLuC6Qe2<1(X({J{bfut>m8IW()*VZv>MK+khujDf^2#?C}xo zab7w|d^8CL!!62p{jc7(=6rGe@6L)sz%jAe9Cct)z%X6WZ*OZg#N^sM$N1xUUCJ}G4qB)mZJzki?SqM4G6`KM8Z%8$22hIQiVP{%R z4L5g6_(ryhvlL5yXvMsg^YKY)LWGO@=@BiGnOj_hnxH+~7uBMHy5!yYW<_uTH1GeW zmVV&cjeJ0m>lA|8zsFrXl%_5{WHDoGtDaw{XMmOwL?b`hWL#&e5b zppz53?aG-a*`Jq>Vj*ahsj1i8O0(4i@_{D`1E)AKETH{FtO+zCLUh>#3WT)&P(Ew? zEGr!835zHs$X8Xa&O8atpD(W`eGOBNUIBBSd|uwZeTyEY%n|K%pP&3GOf?je#lm~sxk?I8f9A?B zza{XB_u5v|Rg8E6kL2CCuGdUv_dy;&*icnjdQnVpG_x#m?XZISU6}kScwK)rb4-ID z8JVET$gA-t9mcKp<-?S)rVERb(G2z2AUr8B)TApJ26qLIT0Q~s$jeZu1 z2LPSIg9hI4Ju!5o(`Kd;gm3AgZJvn|aiO0J+v?h_Hd9@vn`tSKX@pIP#@Gj0;}iPm zeD#N}T;ieeeeh|XZ4HEXDqBKNQRqO55T8wQZ5}<-`9eJluR{(1$RLW`!n7Q$(znO~E(JiX?TBHg-6$5dJ2R zy9ps#$E2WBwpPWnyhT_-Dc=Hoe6@>9veVow3&dDIA!@|p3;@M{_P+>?+B5~$9z6q2 zd!Rtzz+>)>{p3I=9}ZdH5ugCwts1av95)~!1Rv$qzMMT^FBo|7%w?cEKo*xR)|8ZHlTfl-5`MiLaPejphP>U zA{vV!ki{Pk2XpJ)Q`f`A%r?U61gU_dOo28}y9Q=9PVd;L)eM#BVWgr|76y2m!ig3m zwli}c8TdYHn&n5}k+Ar=EkUP-?dHoMcx*c(5%Y4|iUjENSHWX_JSVdX@NvG?!9T-L zvV7j!=@X(vEL$a0kSFxhof%BRQwzI!QC-O07_k_f`Jr25m;Wt^bW$0PowCe`TprIW z=8zyncwCYK0&7-Pj8Z6Sl|X6f3<~2(w3w#KeT^}rFkBFrq1=bDECTu7ek2DLP$Y~5z{)XVfDjaD%-q`&z^hO-)%nX> zqXG;v7-*=U9u%a?;C{7x+xaXBC~wGQX8+Xi07^CwB?(uk^kfjjB83-K$I$=vsy378 zLK6hV449R22K{H~Z#&~#%4B!F=Si?u| zUr670duU{57H8^;X>q1KTzRfTfnJ+20fwKzQpg1yMilq3#LY`&m5!CgP$&*jl2Y%0 z1_s;+Y8(7dSF!!aZXhgdh&3Bnn-kcY^aL8BRZ=j1btKlt#Lro)4EL+1J<;4WuV0sC zw-@-GZ1g8=>FTb*Dk!J=zy{an6b~6Q9n-Iqi}`%)hqTzbPMFsw=oaS}J8;?8Cb3eRqW#-W46 z1Z`}JW}2j|S!tOivVjw|FE>XIgVC*!pkbs&;+mdOG4$h{rl8nEX35|s2=SsT4??SC zFGyj2zyaLMwlD;e!fnII4BZ6-qJc1#kQ$f`!e+yz>A9ugV5F(=g2zXWrp9bVU17qA zWpmNNBcs$P>xd`^*1Sz_Y&!$R)V+yd2nkSBw$5kcXocw}x~3wPK>0V-X;b0M1K6H( zM?P?F!8>UHjqyhYDrOoSZE<3Yqp`GV0UNPMp=)A^s&@*$mfa|})$v);9@3*CG2gDY zNGl%7(FiVnMHdaI7X}-B(8O9EiIyST9B+3ha)c-eMd>ocO36z0TAfQ4a9M1RP9Idjo)L?5t6Fqk)0d??; zwsa0gK)!Xft_PeC2JQ`lRFt%vINcwJvyXqkLJJUxQ{72~%*0vS2sWJ}!*m2ZNMl-|TNA>6_QQ~d z@i?jZV>O{A+8C1w$rmm!={_!}!w#2Q3l4z~e^=2VSWh}-@CpeiD8l2}&+6tv43fsL z_70AY490m#_8a=#6itvlq>g~j7d=SMECO`piQ zPB((%$OAGGhhD;5L>3Ztgpex|<3L8N5M!1~Yp@{2L;I8u>Z7h=U-?{#zwqv-^<)Pm zrELw!M?9Ay8w&^CidWHA@Dou+AfK~52xNWkfc_*w(j|r`QJ#^z{g5*h%JV#t-=ozs zb{${gXMT*r-|dDVVCKc9+E+7Ospp>rADaEilpE4WCi^)e6Ptl!7>WLn&7ztQHn#EL zJlc-}rq7?D9f{0MqM{M9%PJ!sjfYoagN|H)D+Jgrg4Avy9hK(>fI3c7U_TT`YZ$@O zaEM+lVqQ)!UhGgPnP}5;Igsccs$BYNwht%GjD-z_ zyGu*7=RT@1U&tzs$K+Zs%&zf2(R-O-E*fJ1>1SlF*yO8An zE&aoCaX&Pk)h8p@>>QIruI&Da&I2%OW;tdn)QZOeuX|8Tj#Gqlk%b^lb3Ee$xRqXo z!Iq08^1~#a_60#t7183(e;4g_5Fj1AeuCQ+;L|{;{C?W~TrA_<8qKkZ&Zqq3C1Co! zWa;}cicw}h7-WRK^t|3H3vcfwvF>ColviM>z_A3j5`4EM5(#PnUpV(oG*_sYaU}YH z*Ij9D^@LM~hQB-Q5eALa-w`v!DagW3vn|5-Oaq7sgB+0(+zm+Wj$O%BVU2TanuEBK zmmSc5jbk;&23z>^cWN5KDwb|>7IEZ1 zg{Y1tnYVD>>a0jJpzY>`L?R3VvDqsb$hL64)m^vSZ(nd5{$SH06i`p#$h~lm023?A z@GKK#4-gCyN7Rj?W?S%^Kn*6wZeO-u5eYZ96!8CDc4XC+of2_@=9jD<@(=HjpF4G|&W!NA zFdr|IEfI?k<+;Mqp)>~T8LMF5hp45kfm`y0x}unjQkwRD(!{gTlw6r0NaI6(dA$h8 z3-%x*3MhHF5T~_W4r#jDFwo{%(&l6_s5-Pzs6&K^%~zT>Fvl98gNRzbaf#0JRKMuR zRO2;`3WuR2FB4P*q}*CMUMCLlDKgC%>X~Q`6c(!`V(U_{1^hWiq)mb*ktzS~dVn^GN2Vo6xl29CeVDkx zc1d%ax;AX(KWH2`%oh?Q+joPIRkTxti$dKefs_)(2rL`zWs{wm(rlm{UB|egDE7>x z*xxjfk=^0oZXLVmG15O_u4`(0n_mT^=!c{Zr6Eo} zgc(X*aV{8-Nk~HQcT%-EMHj~4pww#F*Gwl4%_>>MrkE%2Yrf{AD|YWarQ4n&7`Nqx zY*Hyy7C%2fkfBaWCO)Fh({p8KzEyoUowyKfzL5QhCo7SJ_U~w?m>9RHu1cym}FS^A-^_^97zATT>c6)zhU3s!Q$R8 zuRgHX$E|?V>ie_dz)9cg{{vWi_)`u$Iaj1!4RXWq^8MjBL`I}x7_L~F_<{!QA5@dt z(vX78F48hR`?G`INEnb$7;}|G_zeJbj`r%B(HOi);|Fqj@Pg=0mVKv))pqfJtztO_ z_ym|dm^^M_N8HjJ8R1OfPvo9i*$)>eLx3@?$2!O3atwI~r^sv7aU37L6J`2^kP$=@ zEGl($jLeyJjXWS=`T)Azea;1?GF@}>5hRq6AtX19oJ2~QQpr%j6N27+iUlL9F3$>8 z=^LW1|I#L*mBPToM~SnJavDPFyg&|MXLE)bV^Y|g8zMQKm7Tkl-wMn`_sfv715$}{ z`3LoLrnW8u;lWsC7^qe*|Fb`gn#zu=RER5-aPJhDtQ{lsNj}Eg+4XDOY+=c^p$-Vh zO8u2f$6)gXL2c0(T?1>Mp&_jDvIxLn%Av2}9ko(sxhg+J2OcDDP}Z7SHXv z&(>J1SEkC89x9;Vw1xjv3K}qBE*oh)x0?}gZUdn*!vx_B%1l+-^lJrAR0X&;Bb88~ z8xhB@u<7X9feO`|EW5K#`n9wf5IH;Ke02tgdFg*fM8~Ixx~f>ro)v{K=`zeyQPC`F zko~P8jSrysI|(BWoAIqL?X+phB%v2^P^D2tw0g`d3f&<*@|NnsZW&`0?-c~#i^G=v zT?PdKC8g!>m8et74C`U?@?DwH0Yx&(pJ+#D$CPT&imriKbZIi(IoTjiQRK<>$Z&50 z(rap@aa@(FeewAQgEha@Q;v?ap(&RlO0tQiGhKs*92_tSP0xY=u;BF~_8Zr=z-E2L z2=pncgHi-~n%#G3463R0r;N?G*GfZy7tDd0N5WuhBU~yxFQhjqI`t|Y%aUiLVC^*` zEO(I)Ruosq09$<#uDe7L5+!)ha2b^YjbTuUDs=eYQ-wxV1wl`#isT2%eL2sCo+>cD zfgQ1c0IAazC`oZd7YrUXcXjfH_p*5hV<+_FA^)@)A1L2As2b9r1na;edF=RnRMt_b z5-i@`c$rBj#a&CpNGD=2lhwqnh+Huf2d#gRaOP9+x0v&|Ht!pNT7bM(LtdR@~)YsPu)WVApfDkoKFl~;$@)m9A zm`^UH9Plb_+%JY_N0`l|5SZw=AUoa9Suj(YW|If2ojNfy@0@}$z3-yM^QXpM@X zP$rC4uoJ;nTO8)!01?X86;=Mq$h46$4I7xdlUA_dfG4uUYgM!hv+FNBqu`B8dYvkS z@z_)%@YPWvpJXdpOxjtuhd39)`<1azWdNuTZ%` zn~(IbjM*7v&)#3LU?>?WSLg18ly);AU)#KrbR(h$iR_-pXgABFf50z7y6?ib>xPuk zG9ZUC`!dZYmt_i3heJjput>drUbY4UIJMUs@?d|=Tm#zJm{X&aaF7ICd2mPaG}j;$ z5wNdo@lbH?Toc%fLV)RFft+$Moz>*!1Y#8yqcYqTg^f^#XJ+hQW3g;0%+z!mx0V^@ z^$+n)NRJ&qiUX2AAa_W)1y5h2=vbg)aZ$Av(SD_~5I_w0Ny4o(QZ1w8^IH9@P4 zFyawYLbJ7kDahg%F&zy|l!5@kF{nq)GF1uYebk|sq+G5c065?8U7?{Qv&n&1@<5O$ z_{j}%waYJJp<%pujAnUAJ9r2s>(TfGwIt!v;8YnhXj&$HY61**nwQCc?fK77ZYJeZv5j;ee^GEI^xi10FDpkG|-U9=p zMDFbcXb&nBlrCyLbeBu274yTgh|&}j7M8%afNBiGiCZ~ZmQ^F$_+#0@(n2>LoqvH>BSMfDHlUse4Q4pD#oRd1@hlat}_yMga4Vic$th7!TB zq$nkB(L{Sy^Or&R8m8W!Q*vAx)iX0DN+TFTA*<*E0{Xn^Nk-_DWEWiS6Qqx{*sg*i z5a{eN)vR}gbjBMl(RU(dE?c}&W~Pb_})3W9(GYt<32P*Fs3I0+FYhwp@*V8D_aS(d(|;wex?mM>-{IEmOkh_tcT zk2FA2VGZLU*SvHhj!5B0d9%e`yZ}@<@Nnw`nAkHiO0*FJ#couZFSRsJPE;e21Vu8} z`!1yD;27(`qJW);p(HMWNFT>cJ7s@ME?Ra*v-|WYcpuGffgB$pF#r_)2`3KWC23PD*Rn<$0G?^gU40gfzNW9%^nj1{7t zY5&Wtss_wb;^#>CqIqK-sfJ3aX3mw3Sc>wS?juJ>Y;V^z^niO{C-Yco$i6#6fUKhO z2-79ZEpF`Xjm<4M{gGtDXToenI)|d^ORQl&H-Pz|T65uwU250}bS=W0l~H+AcWgbIIo zW?UBK21Jz=WG|YI<{)N|M=6;ktn{;rG5ktc+EzI^Y3`kV>8FKnjSp}+u#HGm(MVG$RE{~MS zaf~>=%#Q}T_Mbu$t^Gl?L=+IrhmwSxQ3*_}Odyz~%&Da6QW8DeXL-LpTp$zz-Z`cW zWlLSPfUc&AX2ZH9PF7$bAiTO|*dD0Lw~Ks1-V{7wdVULnaH1&9iv876_)Yj`XdgE)U#>`WGGs?Qd_ zO3}yiOqxgyqM>nZNWbbO;&XV^(g=58Gf5jFq&L37h~OV=3sDnB!01rxE;R6pP--f& za3AAi0=dF$yxBM`RppiV)?O;jU?+`q5g(6Cs}u}L4RA9t>q;$XNw5_W@A0S#MTUBV zz32=@v+0f9cz?r&j4|29!0wX4XEpiz2E<6J1%t$iG%8^@86|)WZ`pF6@^u$b7}SmN z;7U__f$w0kr*qPts5XgBe~lmEktA#zCEITH%h*DnkODyz+i;D85ur3s1`xa|y>pKc ztEYJCyuQ3BS>U9~^Z|z3r!igIAxNT)Gf5D93gBZ%QYA8zgYZ*t|DrH{jZ+(o1NBJ^ z#UV;}U%NR*>zE=N2?;jD1XM@esshO!KG7d8>n?pQSU6iFu46NxRaA+&ldb?ykDsjo zfUMI-D}!Z)U7sTxc#!%@M8^r(F8mcdDU?z$_)~ceBX~q$EZf&f0G2QPgn6wt#)94{ z69z}ggWCrq5oP1u)SUA#$)#^<%gSG%sjJ( zo+wNuT0)aUG$cw`fq+k#l^R<81fG-x0mPH|L+MUOo)a6daig?|RnqJ;E!|cWq@g?{ z#Wef4)7^mcn~n4V@!_raE-Kxxyq%sl_W|+D8~X@IaiA74K6E0p9w9xJ4mO1U4#|Ab z{=Awl7-(=tNT3rUrRzQ%DuFK{cPZkdKpLvYLuDGiNHbKSCh{1O1;wfT^S_Q?kOzU# zEeAvcp2@jWDa;y1-y|2VI%NB&k!h4dxc|^G?XOM z>BDc`(T0i)-Jvv#c{oax!^#P3T_@rG6JD4SFXHxrc*oR1{~~6t5N;tBv0EV3fgIdc zxY^iQ1(1lPkjGJ!#8IhWpgLmRgY`yClndz5POQrgTN-d=%6~=21GY5r_ePlXzC(t% z`DAGp1<0NGvFNLfyoQ56KaK1k#RQ{AM2&uTfpX+<^nijXPUw(ENz?MfLzQ#rtg@9L zfF_Im6Pw${yaz1thK(KwrupuBwZfU2*{u*+aTMqUVrO$p1LY5=;`0>ossUZXbpyrp zr2qdrW1eYx%FJ`o*K-Q!hNI8S*tGfL)PNk~GMVAEX-B<)LPR-$%~RGr77*&Va7bhb z=Cu){LleCZ0&2#@tQwr&~u!SEZz3>MzAn5!wR0X-zte^!k8e*JW9 zf)r+EZ{n4#4%eS?yk-D zFCa?Ws(0hzH@Bx(YgaV~8}pzrD5RV4;Jyz}bSw*`u;@bvub1)?bGig*o&k&~;U(Gt z(`vzkE|>LYuBKL_w3GH6*7Uj-Z}VRe-0+uX)Q~pkSm&2OOq|UVZI3zE$89v@K(wfm zM%L8n5B<$hiXW4-<1sU3#aB92MF{Mra(XXD1T=0~h=X^M8&I**G^?^pq6j zQOGlB9IovHX>N~t@kC!I*DhmSg$c49#8Wl@4bgk#*TAGe#}ye%vG}#7;f{6(@5}|t zD@XA^c`{X*2oerV1M&SW-t~B(GF272JwKZpi_9kN~0GAiJ-Ue&$b~Krlc|W z7Q$t+K+$5+yiP#7rbiGzDU(8}rbCdYa4>9MXQlT_!`kdo>O^ zeSbh9-BnE?rkb|;ScaL?`nbIeNB|ju>~jZ%t%=&~{n25jvf;T%soc{p=CYl4M-(z5 z0~XcSmap=Q9D2sQLx3&d)Lff1txYuQ-EHdbwq!u#(D&^>1gkgQ#r9_l6=^57 z@F6Fp5GOHI6>CrXQn04kMLTGSX1ezig<*`?*aU~)a-n~u>Z|rB655l6qj?{#8igSN z_zsi?aak5wIZUHUVjt1a%C#tY%(bT$L0P2)16K!Bw=>bKM2|F1T9`H(cVz!NL?H ztQypc+@uQ4%Pvr1XwWcl=_Udq;o)WumeO*D6r$f|KE`=2yIKR^-zlg30m80hMf z9pk|y0;{+SknnHu;3c5pe;DyiiynF$9SD+>9S6*#kV4*=wLKGu0+qB92R_F&E4V6c zebCA+q}inmI0UU9!1a4J0TQXq%*HfneJy=Cj{|ksO;9`AIg~tz+`vCWLU$g}HAp~d zR70i(V`aFRb(k^@!vIfx#-V~sM3SrRK{zS~+tvTgOZk-k1jET9DOK7PSYoQ<(E0~= zX8_`oSU#XZPo_*7=7|1n4yt`??Z;$EX7yOW13(--j^4p7uDzELm<52Bi#14tL=H%b zjx`4wogw9Lqs>Pd0?1iUScMq7^;<}xPzB)7lPaaDavC7NXx=S*4#WyEzFb?uU@bIT z*T;P<00;`=L|mtM)%2nN0&jSLv5S`q0z>Plkkl$wL#Ut<40mY?9G7y=1H>f_{MrZk z6>|^x+)xN$mVa<~(jdM13t_*51L^Gz#2bRTYIm8U;=ky^8x2YDa-nUb6DFZgAPA2` zIb6{g(W~$SPl=%vz1;eYj0VlYv(#W72iProq~e}yC?$Q5>zpY?T_~ELaGbcU0E)mf z$lGn9g)AZm8ePDW;^@`u@#7&+Ah=rH?m`-B%_!L?NX90Touzp0zA=#}*Z>0<1$JKt zzKh{~IOYn81ppLk)dMd`%zVmEkhBjXy5mSt$c)1D+%*=0hIF?J$>aeQS#fK8>nm?} zwK7ryqR?^=cj`byYQFIfgKMLEN>;f)u6OTLO91l zVySfy?{K5R+`bVe+l1#*J`EaOh;1iQh?M^fm;zR1$0?A^ETwe^ zFwxa|$V%*>?%ZS2#0=o%|04BV6PV&O?C}*!CuMb=n`I%N2KGJsVTe^wql|?Wly+ugnY@1w2x3$Q)VQG)t!M&6k%VOzuruf zAmSnqCvRoS-E}P!j*-5wm+EtLq6|?SGm2ZJTL#}JtUQ9vz!nX-;SOj3v(#U6P}%SN z=2;~~f;Y1L)8I=th42j#!5?Z#d?NT9Hb)8193>GD7KT2Bw&S?blgqM?iH!xwGSy zqYrSP5ioAxxUgXHR!|ZX{FdsYn&uG5?CxI7m`rY(`iLvdCa{4}`OX^2J&N+J{y#7r z41m|_wak6xa>Msd5-J~A-rSU5eogtkSo=6+@OuH`96qBr(|bU~^Hh@_!p*5Nb6nT7 z5S-IrIWqrOFRQZ9Qb&4NDrY++J{~QMl;vk_rV~5?4=B&sdSodr4YQYZxW*P>+b><& zd0=7_O$rP|_cQLHi6AUc!ld`2JLS+xcUZVJW-bAZo2uA0f~<*?PkUvbsVGUSX-0UE zNB;r9oR1fQSX+Z{iPwv($N;cL5dk2VcHBX#QXsvZktiXq32xf@SB{-+>Y|?X)b2R6 zt%H_XIx^>kRjKSw+6HbM|weua!@2m$<0ab*I0$6 z{J02#G#oO1hR`FsLYMRK>YD$JaV&m4XeochIT(JF$L5H1UH)_c!15ZdBG?Ea(qY1? zOOhHtM)zJ${;M>HeGmvbNkVFbvr8aSQq}d7>iVAl%jC*^^4mR0MA2h;b^`#8P56^R z856p5A(ToXE-T_bfbBd-AU*WBD8lIswtBK4b>NL6I*<=&{e>)6m%Bt06XUjU3aK2h znoKHr#tM@1(XjL(R2fXl7nAVr7M&u%$@t0N;Y^+Eg@h2*aq&``h0%dX5ic#d&}IVE zHn_CHZB^A6@`+n`o2J4hs1t5thSM=GxJ0|H6@TKyL@C3rgEoJ5U60b}z#`T!f$xHE1(f zxN)YDygtR4zjJ2ZzNUuH*h>jXn@%$6*+9*UwY6$g+h*>xkbqJ(Fm*5y`~4(Rh`}{b zl`<0g7_5G!MDSQbo7!_{lz-qQ2Lez)61Hu9*|lYnFlPQygP3Wow5onO5&&z0Z-QQ!Bzi9#h3X_X&4*oKyTXu!<5UGEqv$6lP9 zodEy_=!nLdWK2UnyDl)dIunYft>*M-Hm01R81m`OL12+hS5N~*qI5BriHAQ$;j(7M zc@}tusKcq}`AbKE2o-WrVDo`rzn)2sP>`THvCXu{+cjG?M8qbQ%L06sK4s5hM0*IT z0rTQHwAu(p;9zX(F7$FNMvD*pK);kC8L{Bl@vW0!EOmy^iv7e99-+aDJ%A5eF}u_7 zS0UB7^>a^ZjrMM1m6pI@0F#z>8N>B#?Ni>kj?iSms`oDEDRVG|jDxEo&7MH36ZF zULcNr+Sy2u1Yj1X0YF(T=N5e*?95@y6Y%K3Y=YO_!KSNzu@g&WSU(!OXWQYp@q3?$ z+kj~F2up25HYAXyNQq@46bQ+j^KQ(;M^^PBYj4C#s$P8%Vio`dof*;e%tjbg7jqN^ zK_uydjuZQ!in!jCs@n9CsohG%`$JNIcuoL}V~uT7A|r7TDROId*f6lQ{PNB7eKQXs0-KrWv2N#EwWF3-@D5I9CvSu>-NATk z>htu2KR(40vJymyQ^3QH!SpwAQ%<^bjI&y8Q=q{{}{KgO>zUxr;0k@bNmw zK0{JS1A2TsFZ41jX#iM`j!$|ZK=($e74cpvN*KB1HtJss{Pa0R6!4)Z9s@H<3yu-1 z56J>c8fz~*UCPD<{6K~Y0Y~|TY)DylfhgeQn)_L7lX5Fu1SjFAHQ8fRQ(g`Gp@nnj z)2)!HjFc9{$HM_V!m#_cm}6Vw0f3oSKBDofP&p!C6v&{H3e0!!BC8!HO0rwY2t|j| zbm|03TVymTCX6ddJN&_S1NGm@_}jNZz|CUh1`I!SV6i5NlM9zY{T!nzjW3eHCKAl= zpU#|vUIPCPk;mUO`y=G0N6V-bm7dwVhC}xs(?a&VC%zPuQc(qwcMCZyDgbJS3kNbV z(N;MHUjx1{i4>4!YDAmFg@4U7$`&k0dZ+j8pVequ!6(W+vb}Zms2i+4@q-Ha!3o#i}MY>Gr&y6%rEov!#ZeC zF0K)nGqMTDgCR)30eV0m7dM4Wj6evq(hK0f-GM^)QhB?N1IgGL&_dmNa0v@d@GoM) z$RCU8f(=iKanOnPg|W~A=pT4MfN2hM_NCJa915tiMNEhpX@#P`l>2Y`Xl2=Ke=(go z4h&eQ*KWcGKsEqCk+Z$`t7*>h_f(%OL8kzx^ z$v(9nsOIp6jr6}jH%+K1eyiX^Et@A$9YfA~@MO@?A>PTU>~c7N(vo+%5hOyW#j`K! ztSix2p6Vks8>+h}gUuhddBB>yD>X<9>4y5rT}ZA2QV)?~gUJpe)8x?Ze{JA_gOz;# z0kQDrs%D4+k}ECmf`cc2U<^{cv5N+O^^^*M8sZi$C19TfT3}5mnB$+!LM4_~R`%!2 zI8a49bz+zeyI9;y{BHD``3VV}XCZj{6IN*xxpL);c=eQ)U~P+W;1hmvfZI>h%rHg7 zfpvfp#7>;ZFkKkLeq3QZiZ#|>`54CCw?m0`qh>GP>p!tu2^}7Yzz--QLIagdSDPz@#KSib=7U|7d+4`jf4 z*(1zo*7%v`GIby5%0Xxej7HqJi`Pf~_uDBf@amoo% zc3Qqx6VDfUD^OH+c@W4RY0H%kRc=H(H$Z>wO(SJ|;zCy2!E0;{tD(3fEh^k)&gMa| z_;;`50kGGk1rIEDh)J2Hkt8kxawHAXMcmpL0%{kcY71Q=GmPkSBqYzy#8*8zT1#je zpjU(*MNC}8?6EB^eRaTeBpM3Z)@+UhGK=y9NMHead;8q-&5(D{Mm3>$zb`=Hu)!c_ zzo%_VGbq3N$laUILVvD9Co*hsaA`Et>?_mHqiKkZWWg0nf2L^;29G9^U)`Jrq{&{? z$9ynk>7~{xsw2{~_3h$(i*mIcDuR;dMTF)jbOCwtd(eI zK=I9@8yrxT>oodg!Ig*DvC6Y6eG9Ekr+F^>Hda(rr5i$30jOCguv{X{oFb_JA$CVi zQAs^3?eT3k=>)5T@2dx2G%VcbgwfCY}WQ&_Ewn8Yakzgsb1w{}=-j z2-OeAs0$kNkAD#F+RnNBS!Kg^FHIW0*xg)RhzSjVd-x|bsigzlKja`;zMh=YBqlNt zP<@H=MIbES2B`&mth#U#Y z+<0*V1qFbnv{smr_O-o%mn7|oF!v~jT9mC~j9?sZGRmzcWz)tp-($52CLW?~nanw+jeXmM5EdHiJXL_%l&~21HXGaEdP2UU*<|tR-P77J!(FG>_VC}9A6t-yQCMI= z-P{PoM~VXYz*ro;$Ew44R=03;jpB5jxE<<|z|8a8B1vXDu;j>ZOx5E{LnJg4BP$c` z!A9cITg5bnnOnhf%^AYyZwGN}KN=?Gfno~-vgUc-meoDxi%YePrpCAWkP{SIPH-`3 zxp*(UKkP2g;>G}9vcJ6}D!U~;A7h+vE?;x!-EoLLSqs^2gP&k0{tDKcYG(!m``}nz zd(Z|4)hha;qS2qKlrA(-J*pn?KPbH&w)5eIYG6&*Er}TyE4o6wxLx5RD*$eyAlfC( z2Ifh`$SD<=iq7O~7>3q#Adr zn27>8*bIFEq~0{AL<-mp4a{x?8IV+U3dKgTelG$GZk(6k9O(38W4g0I-&c@jr7cKK ztcrwGEyKr0*G++?WzhfY*X zR@(qKK*+zlwsVw+5|%{U=Ri$Ap7>)$_V*CjY!K!4^wz@B(RpBv2tu zRard)HA>_!ftbea@6fMH#DjUV_qAA2sPvRml>>o56dK23Q1XkY6Ta`~ zZQObYH}r}?F<6X->8?%BR4_}%RRH&kWJ43gFFTw*xvdC5cN7+pvfT5uIo?7uJZPFLjjV@fhb!APaTfyL7?CK}r^S>UE}P~Br_2F%JW7TE#*GDwt6lD#kV-%jOZ87RO`&>G}RS zLT*m)rPAnA*Y#4Zs9ya-j{-NaiYPp4@aWPR+!BK;iwiR*-9#Z1BtIZ@8)L)90bk^5 z$s3-E`{ih}BI`{=Bi$P#mI#Ot#8$1DVj|IzkVqC_34?)mDlv@+^N!=h91c zY~cs-f8%Cdx@x_AK*tsk4`7@Egh+kD3=yfq&>;#f{DM9ix`GG#z2NO9tVAjmokl?> z*UqR=H2b-u@uUeVKez#V7d%1QzO3p+NE9THszMP?1j%0|78?gJyIBc`^Kl*ut&30R zsj!ir_a#-nrwni}eH{(sKHN?w`2DCvMD(P<54zzb*xC$%YMaVd^&nimdySfSep43DdbRJBL_H5utX!S zDR+_{Xxq4b1)F+yN!IM`%j?^H)3+oL2)PM3Ln^y(&PYgonn{orShhJH37C12jN4F* zNRP*)5NP1&OvBttKw}oWpaE%-%=rR3Df01reCliyN9BW@HKw9-l(#bAIn>zqaiIvv zcntR1uS0-|*Xn{^%meeA(KA57at0Ptt+03*U4fBx5Xy0-+zhtW#JnY2iD;Zb-i5UQ zI+3J18aMT^mEl<0Chq*47+hAEP99DHIdmT=&SOw)H-5poQT>jckXohqAen+}XGJDS zAhf)MZEv_57HL~CDrbWWp^sX+SrTAnHW3{tQiK_c(_>)Fg_-HdY;+3Pv1l>Ip&}|G!ppm0U_GSCoVlAERn_% zxedkb>Ioyl+#-F-uP1|<8;mSmzt}o<5fOxOgj1A0Nc-X*|)sOI?;XUVFMrYENBWIBqu!~6SV&0Gk0Up!n#q1LQo0lY*s3d0VhHU zLU!w#VI?CEVp%91bRc&JYt~u^R^R_ZR8w9mes2W+rkCpyhW`f#LbIStDLmls70NP} z{pkOXpT+^SquWLEuR%WaboNIQLH0{WcP#kBqfZH5Jn2cK-IQmLj@@)$C9g`8l7>on zO+krr;ted((UZYYYE8=S$fs#>SaPq4EnxLTLZ#I#>EPxF;)5{ANKkU4*D?!&sbj+2BbxrAM6j9bstR?U?v+zL_P0)|HVW`lN-%q%R23m;wH{eaSKpw(G z0nu=FVxFTcyw(5hH#ht$-~gvRDUaAUbk-Lh6P1$*rao}?j?BZ%=+HeHkTG7cNFwoY zGA)~mEY0>k5on=Ya~x6Q%pX`VbRXNOiL_6S*P(e#3X6My=9E3N2T&dE&9-dYkH(35K!?Yl6D0X}2H#->TLZUz)H03o?@P2oJH>ec6;Vw z$RrFKm$AF`DvGLM7^=csJu!ZVYa6cwH1}vxVX=y}JeKIZO3SBL|J1ezx$P8yfB_oB z;So`UgmruKDW+q=b=|z&y4r9JY~?`%-`2sp$#-rM0j3=zPkr(ji&QWo$23|q&#M)% z7}r#T1)H7#z}E9q%rC(R7#?XwW1e7k2Hh?W0DRDfH~h@}NEQO&GV-pj$x-7bpdaWr zEevrKmPJ+TKaPOEQ7@p85M*A{u_y=MX=YX^~S)NiP+Gp6SYAD;7*1ztzkDIvk^5AWQD9$Wp}eq!26}d}69y!OJ`3sxT_RZn2kb~0 zYu7krflx@xtFly;frA`o#M`KmO`nIQkqLJADEa=gGqa8)1l4stea~2C``(sk+Fa z#+W0OUi6l~$|`eEXQuaRRMY>5tD#U{$Ofs!OxgewpigU~$HPgSjs52&5CaMMQqy5b zC!H1`b#2i6U={k<+nsJD`~=Ul$Q0KUV*Lr?gYOJYe4Z>&F;_E9aiUEN&o3I;)EV{{ zKrX3&0v*8PeNkyQOydldkwBAnz%&ks8m0Av;YQd z(A-+t_>b^~7K&`X@n`~3w$7V;S`q>xdDb@?X&e?*HX8amjRuRR9G-YBr{$;^~c8x@|BjQMa}*eK9T$AXvnMjb~=g zZiAPDk+jM~evz^GR`@%r@QuL^W*u0|4c0mp$Y}{Khn) zUZEu%?oFsHSu+s=c`j($K)evWxk365_^t|dIW)0Cz&ElW(PLy*D;jZ7^dF3L1o}Q& zT)d*NRnU~IO17y+o>K2yGk}wW(8~bc5**SciNnUdcHcoaJKeu3JK2tktOV2&H_tuwO{+ksWrgi6Ssg`YFDxke1Xfd}Bf2k+Dj- zwlpy$P%^0Y%QH1suf>peca|P$U$q0z5+1 z;Fq1U{lezCNVJ|vCSNWlLav>0lCc7>A%Y$z7c4tSY7s%o=+KpuTxsM+?W$3&3VJFeq$>R-5O~V*xpYR4kH-D7Z;y)okEfzpo?iQT5bYEC3?h z@JNv@*qu=O1WxT?;!@X-Y$qFp3Jl4axH9C@eTm8t_vj$%A}rgCKpG>2>^ikwL_fgT zq&w?GGS;>*N$NxRL9uUW*fdhwG(L9bB$*E+5kI|B-f(Q3x)Ys&Vj&BgQLF+bs^j67 zqi%<{AIjWAMmYAJUc_os7^_s$JBi2H1}ueV1q8L(A&QOdaiy$@bj$!nGgb&c0JDPe zFj*)JfZH+G9Cjg(s@uhp>T~5jbLk_x0CaTO*0GZxPM@*)n3KFhr4sMEbih^ma@CQc)P0n>L)VD>>> z>2B)0u~b6hi5JfTxekXx^*r<-GUCK4as%`B&cY!n*R!1D&GrUq(lY@LZ&QdyAifaG zh(yLqVM@m{YX#aBqdCTgrY+3l$f6P*ci`5<)s>20dLMeA zY{;+*G!giSzj<0^$@=oQ58_xN51(u}!^gT^dU?Pm2mED)SwV#Z^LQM($L=8rbkjCZ z%o4w$ygU*Tg#c@~tfp;MiXEp4XX`PsQo{oS&2GeyIi(5z`YKj9FPx3&!c~f|OO6o; ztW5`ln8&lc2kHL55ss|`{2Q1v&`aVG0xA4^=DlYgUB1n+&%&9VQ^I85Ea0-SwE&?-_5A`v zUB#gbA$uYOk(|zC7}Jo?QWQlRMYl(WHD1lK}GO>s;(w9_N!gO5Az8(h7lZzJQ zj=V1zIUCHC@Z1dYOTwP`TJXQYNXel?&VH#UAEqk#nazCsN{!KBm}l{wO6L&ZCH(S! z5UP4G8MC1t*@_d2UN6f>|gVo{q`%FGa!G?PEPHEd6d%^vFq zi#Xj8#w9#cXq2EBj3vi9lxR`{c}Jv8wYie6yk#2oQ>I~1li$Tj!kgvEI#@C$dZ{xo zDiL}JE{M!#hs50Ov6PPuv_{7QSnHtm096u!9O6p^4HE^Hi(&Xiu>*qPb^8einN48pUln8`zh0-{f}GK z=sj1gV=5D?eZ2^eN>bITGZ2~S(cdz?fSq~2n=@Zh5#B#N=o$vA?SNA1`_(}Nw=+QY zYe|}EVgEY?NlvvC?|0L3nFe`6!m2u2KhmW~)S+W^>3)^3|NNp&%pu5}OsKN$Vk+E! zo-3-J#ZV_nbr70ZcteBgieU7c+Z&=R6k%2KG$n;y4@PfK12l^QFzfkCPvs@q)0(bI z^R2-gbGTA{KZk7yz#RD~uujpO@hi*gv52IU!fIB{5H-uH4G#9(YgPQo#&oT0lLW9O zMPeq~#9@Y%PU+ip~Es=@T^T1V^2*Dms;Bxe~?}n2*9Wc;y@BE;C!Zo%rzeQ`tI5PXI zwFCq&c+f?J_W;fCA;RteXI9PW)EWSE9?EU|O7qJjdq{%{Kt;z14FXJJta3Xz43ij& zO;#T?)IbD(@~i}o?*kogt$2u{4mzjof1%8oBuD|O3C2jQC8WI)>c_37w>g3rz9l`5 z?Ehi8uk+S|HXoz5i|juWotilMvCJub!APpSwr(n6K07Ed82Sb~7&T-#IWG{m-l30B ziNN&J)J%cl>JiSj9H45!vEVYCmMZePtk{WIKfGeB^amUO>P280=Y{UO6axdkXw}m> zZu^65o%>z1wJ!=|m5}Hr8o%$& zzT!G+VG(s(NfpV~RRfL2|L=l9J`?3+aDcU?CV9G7KP>dV3Cc(A1 zOjNyhO#nv(Y_NO!Hbln6@=jM*;3o?Fx5YQ!)L(2an#de+11(wO1aI>46DZS+6}kv7 zkhr*VDa@k})&ufPexQ>o^51EpKX~3|l$U|=!~us1NLC``1HSMB98ItH3}jIh5pwZH zhp0~;p&>Tmgl;8_AJ{U>%m^cea)$$hPV77yXM8Nd}Y($ceVX+>!=6QzDKdJ+=po2dSmOp*>?LyqvU*=Z? z)wnoyPvO*H$Fv=ouonJYhSn)cQ0=FWEntqEIgt-CZeT|YUv9MwlN+^1yvS6qALBjX z?`EQx#}+Hn1*;=5H7k(&Twt+nTmp1tb*xe%ek5FQWSquu3z@OTgbl?U94U!E=0moZ z+l3q~*p15e>#A(?M*(5jC%5rzduwYzF%?b+byNDg6e^_Hl|Y^q7)w##cXeV3h{&@ zLzIBvY?h2LvQ|=kcB+Cnv>$D%)74JBlKtr*-OyNiStsje97^V3y9rR7^{1*CU`2of z))T>whPJO5B*fskkwo%LKu$hL6{IOn=GYEET9w!yu+qj1^cY#88ph&M{ z{{DFgDBzqZJq!j5_(7AO>-btFId)A`UDAA zG>F;|Af5U{0VRl1RIUUKPtjoze+TW9I#o2)&GW&+s#2*M%P#0x0ip7mCizSwjYGlR zf=+$v@l}@2&>oEXv5$)4sy0yMg7D>Uu{Bd8wi{v@YfI7FSUI+o$Vw2s zbEVr(Z(~@%6+)Q3f@t8uFkZkaOH8Vwpm`icRWRXpV;nZdF{Ir@ z7KzGiU|}4W*6{*Z$VfS*8|54f_=5bHTd z#da1WXbu`5p#6IPeu_!ZU>r))wP>hG6BC*oQiKl36JCKKym;6}$nDtUlb!+i0X7DU z(=_vZxJ4V~doZSHIk|FH(g099C^44~&a-F#rV6mlHX;o>1HpxE6SV*16yq7;qLv@g zDPSUFc*##*n41B=_y^!A!%iaE7869iGRInt@0&SjVyjDOPJ?U7-7pKf<1;g9GiRMJ zTH)nqW6D9>qn>fpHga=!_StsVQz6sWiy!?$e`O##EKd{ah#cmy2$kZSOftftGinS1 zC*%U9fGOIhuTZI{q#fhfP>_<8Efrb>AQ7ZUZ~2d0NaU}3!iv4H6)Fjg!VBMsnluEm zss7qnW;X&6db_0{CX!dvpUW>3NO(2_f>*)bCfQubxjZC^ih=s4Bb12?WzGXa_S5re zEt4rA@tQ(N%6!!VEKwdJL@9hcHA*vM;>qP&~(d**`I2cw{blAuNq0d30i4GX>;%w*Nfr^n(zB z3X(PCbrlGXExt93-4iFlvxwlr65|7)p3fl=lC6Y+8D|UYwtV@h-eJ_qUmq$OIxcmy zke#I?1#-xWP|4#islz1 zKH3QP$y;y%$F!_<>PZ%w%Ak2u%J$*cG+2&mo`Ev?Jnn5onH{4^QPM}a+odHpr6oXq zDXZXghHYp)$74+wv)P9TdEdTKF`G22B+%usdKj7zWg?HgWZ4)e-8nBbk&&SCAkm%~ zQ(tz_cJ@%De~F0?_7*G`116Q1p)&X)+e3g&%DV0JW^480(^XZ8@96Jyo&fb>gD_Sk zA)&f-^H%A5>?kK6+FF0r6$(e;(jp6{y{i z1(iA`!PIe@!1CasBH-ayxiKt#@Ba#w!{0BU_B!2wxD6&cJQbk3AFvOsd?+!Kn-?KF z9T|eDf+Ofn#A|?FTW>W?k9!>p545p_W?!lmLGz&G3Kp-I+zpMY935H^`x^$Qk)uLo z@wDH=X_Eb3pjXHoku&9v;o0H+5IpUHn_`-yb#9vjp=a5a8{?q2h4IVtTkYr*l9Uln z8d$z~9&yLnHi+T?1o|Le1I6}@OV{M(yJcFtkA8}0VC^1sAz_tBxC1*My z9tcPSPM0Nj7`ZR5B&3^RdqjoGBMK-uTEVeQ_7d`D6*;NCs3hop2*}#7L@Giz{QA!GMu^5ZQkpPqH zWI$-#1fW9Myjz!mDzFn3Kk={-V#^)Zu*6NSEv(o!#c^>!=woH z)PSdIGQ-BxQxe*p!)l9G@Tiq;!=gL*r_mh%eV7E0PPDxV1N!g}EI^Ch1MEt2m4-A! z*p=-#?1eSN6vf0oPYD`#9i!!efA~KFJ4LQA1H=V}O^Re6n9MyK3D=mW24{#3_BRc2 z4DzE>K;~tb2o(d2mjuS|THN>DNt)D$G~0j~SIEA_jez8we#dd5&MgzAOJLg+kK*`Lq*pFcKtYzi!M`W81}i^g#*1aJqC3vSQ;rl}*32&jn8ICAz<1JxeU zQ>5bz>9KYl1Ws^(H1t#mpHrluM7j0^Hn=t~CE3h;Hs76N(La&L`Q=9hC@e?Ls#wWS z^;X#A%b94q-zdNqMbQMnx$ULF=LyDnvR;YPjo;GNFhcov2^5NKaL~}@Y+GRG8IC6! zIV%hCfX6jDMkSSYl^X35jgXSx+VpXjI*^+#3Fd38xxlXF0db<1!x4O}N&tq}KpPZ7 z38TxFV4Ium)8sjrwk?V-q)=dxNRA;9y8aBsP-oT_bX-FcJYA)tXbWV<tr8FpeQ0}$wz9LlkjcXAqg@C(5*%D36d z_ZG%MW|h7LV@%MZSadjO8VJ7Co+;(`*@g+@<^7w_I5$WxYf$5qwxS1ohoTM0kGY@Y z#77>W?jQy0j_78sa;r(44R@oNCD%pv#;&S*hLfoo8~;2W+eLYOU)ZHE*)m>x*m zm1gHa3BNtu?2^HFcrZeHBS=~Uu*#&cYbmD`BH)3a&qv54)do;jTwN{c7q~c;j$3;W z4drjzH5f9Sd%2hvt?%(6O@Ly96{Ou1Qj#Kym94^D)mKF!N96HgzuVm*f1*mMPdYFV zGT@Qd(qVmb+e;|{9c4Djac_s0E~2jhub36d)XPER+`=MThnkForWMROlJQEaWXQaO zXKq%$BHiSP*0)5;qduKoi7{FxeztnoH@=%ns?xpr9aV@o0Tb)Psrs^u4GP*ad0+;m zS$}_kIuQm7>vuwtdxhveqH)OZJ4)UMe?=e27W}DoY=Hal#zapy!t{@b{M{WfP}@8h5A8!5>N~e?>YiyJ{_oMe6%TxEGX#RnaJDLd~x(yD?JI9dg=@J>QW1DRm!-W%wwsvne$ik>kp%nqZ&H@R!nd04!2P;t8P^^Y% zTOFxV9q5i|0LOKJGH^hns>CCvhy12=hb7nsZZQFNtswvg5QhcQ&^zK16s}E;q5jw- z_a(OGGhwOK)?_rBh1Q+x%>8mlJCR&-h`3YQm-ZEXZE79$O?+_)JFIx-T+!L)0HS&k z6CQg)p!sNg`!9F9`r> zfnsl6Jp}yKtP&MDd$mnmR{22Kg*>uPj|J}YBh*7-G23uZTIU%!PHhn}6&r!Iz69Gl z$uDI$YBMhKB?C_~xz4^dI%H@^J#dfx0>eO171X4?Y+i*JGj2?d;A?m*_sMj3FuaPQV>r(1>+b$cP zx8fs6c|X5V@~<-j_oVaNoKF(cYw}Mz3|x#@2&xM^Yto<@GHiU`cY{gdusMaC^96JR zRtL5{A{Yx>#>yT_@^Dd#gOx|-PsRsd8m{v)Q~!+Zf8 z1A+c{TUm=%h!D6iXXQtaqrf{w*m$w43la}*v0-!2mwqXEsw~%#dH)GiA$R2-Xy7tH z&`o!pkwTQIO;6n$N{~RN%<79l9Xg7V?j{n7T?xtux8SK79ko|9LsKUT&`5A2Wpw#~ zZBFQ&Q`>!RFI7Hcm?mZgXVi#!bXqf9Rgi;SAEJQrw3rQs@ll~=0szt1F5yOP2gTna&!`;HqkL$APAYwa6lS! z?W^m=zJ8q^>L(LG9ad0HGjx#y?~1SrLqQRSkvG?vX<961V9xd88!-i!V^N3`4%*^c zHc}mM!Q_aXMl3Lg4ZyS%bUz7|qoj?;_wTTw>=zenPQyCt@$?dl(A0^Yn=C2M0v%s9 zE9429#({t1R^nt4;0%)5@>Us{lE>$uTU38oOm;DsYLo;x$4BFA5xFyl@--$yH&UKCb~LyhOC^%As# z^KoVyspMrwX3KDd<2IBoILeKPMx#7BiS!^qvzvBy@gL!pdLM|_efyOl+rT)9|ADZh ztPUvIx&fEoy}-CZSU2uIP#mYt{D(~h9g1002Fi-s#Q+$FpjIYHvqp`REejJ#ZCR1X zHkeg^1ZWj41Cg$rjYdSd(bjc(-3jHSehV+?VlO6911Q!H*@ghm!FMEmK`(0i-DJnmq;GZ${ z*stx6cD4hpno&>nr!3D~Vr;j*PWVCjW?oM>%rkGU1YdcLB5}`W4rgMYC65Ip;b}dh zjr^!h#xhD@qEM}i9qYR8i6xx=PFy!o^_7fHsFgsB7NgcxKqzs;{xf8s(j>&yGC2{K zUU>x03Dij&;~Cxr;;fRmUd!5I$hYz=V`th3v;mJ>IUZSxM4=^!gVx9fmI+}xc}HV>OI+~@`bHWZbBWO5^QGV+0+nan$nkQ615X%pDl!F=Qg z_&;36M1P+{*h@g~V% zdnuUFoY{8krt=w22BN818v48cWmJYMe(~pv5P$>{gxd zIzcnX5|e|M6|@njez}DrDt!|YrYW^bNk}GfBCtX91%u0a0nO`HM@k0X+X=`T*mfL4 z!?Yl1J?m<-*SZ-bbPUu48Pxe5885B{npYUCd}qvGx5+Xi>(w?c$^wQ8nNxG9=>PC1 zj~p)2LL6|UQw5(Yst9+)E!?@=!`n0@I%euQK0_BpJ(BS2>2}v2<>(&s0tRe>s|=l& zIm8|F7olwh4S`{wfSVMP88fZx-Fr)&aU48ES_0)5CWiIPCX2SH7hc>C`Z^-20!ry@ zM3ku_-C61gU2_McbFz`dH>eO5b(tOcC6N!_10{JMsN?T|Ufn`%NW%MIZY)Qy!^Ykw z;MBX1t{S96SbZO1J>u+e)g;&h67B)_*X%>ZR|3ihNvQr#G$rRXoh}FqWEU)O%{)`t z1`?Pcu8?^`XlV$^Fey~%deDtZbo(AeB0>lfRfAQ!yfS*DR6}#CrFIDe&O{Tn0c-+R zvg$9ZE}hQ=UqqFJnjE8h1&z*o6Gm#<8nz1;Vi*)NN5WWa_MXJ+oYrX9E&V*pp;ecY zQQgk@7;Jv*x^2cyQ4bM?lANP;9?wLY*{2i{ZcKg=h+j#Uk}EtfC?b44RVsBb(=SjU zZ#oD~rlzgZk-HGO!^IR1Vi|f2(BD_`x?Gc{_To_cfnP^g}RKdlrhF&QQNSvQdK1%nu06k!TmoA+^nl9X-I+3mXqK3BfMnbb00aSCu$X?fJ0=e@4BkeSNo={Oy#e-IB9tc`)dk22 zkw<9*AyY5RB?Jb;gsFwqQIQ(O>E8`4Wxh-f3L48l2(IGyJL_MJF)wYTKikMyKBv+4 zJkHIqW~rpNO1{VeqG7?o7R`3Sxtrhu=6HpuS9>Q7q$MK;AF}UaX3~~Fd|K||uyFcS z?YveqPC@Zxwv69XS2M{TYo$xcIlmB$lOJM&+@TWO81lN0hiv4rC~uWWvYd;Uc_d%L zMzMzH{cOCX@evbd8}1?7ibcio&PZ+$Fdh8$>h?VdaDgCj9_FygzvSDg9;ss%9qLL<4b~Wd?G3h(t;M36gSiTAQ5{5;3 z4~pIK17R{q$-R%{Hx0fQ`L-r8?4W@X%!ZMIx8D1I&(Z?t#nJNjfJys;}HdLY$+(g7cK+qDe03aTj?j z6w1dW0Z^&)t8g5HaA3AX^IOU99qrewk1iGjSGn1Bu~))q_6~gkO&AL;3Xg$uKMA-` zDtTv4IpFNowOV2LPtGk|-M$)E7!Dq=$rbSwrlq)(UZ70JxggrZCYBs8{k>(ZwwrbY zJ(At7$u-Obp}6weA%Yo5RQW^DN{{|j1~#|;dE3)Xv<9(MC(X3~udmmjLl**F+Pw}g*jkTEuozw@KCK1zj-8BC58EphF)>^6}b7Msam~W5y5O zo=_3gFf;6#tDNa+~_WtIll`Al(7(3tVDThvHWY=uZq#)l-a6^Wv z*M@#}{42_2f~K0CZ_iX8iuXIllPmMbcMtjdJP&ms0?`rN=J(l>$zU?7x+*nx=3}q$ zo^u#Eqe_i|)fE_B$rC*bSs2_E$rMxUoG!+Hn!$L5r?(06Df_@Unxa}5rO?Aj@w5jL zcL3yr$573bF4>$n5g%kG)&B?|RsqK0bk)l`n@1u7KHj{A2L#0mC~|8&!AclNxRk8q zV#zY?kIkU@KvbKvX4GR&;KFXaFQ*|4*@*--yaM9FCTvC%0U9(5Xs)5e))Tc1~o z6*+Ye;0e*{)}0|vK$!fuK)xj`Uy#K`q{^AB>7Y!!e50dC-6d;TezL3i>VFizvMl3- zP6G~|9cw`q2HKW2FDrrN^ok}-U1|}r!b+C{D_YnVoZg2)==xa(=%VsNXc4?>>f$)f zT;#^xc_%oqdUm$;3K-}0FH*x*b}N9sh$%XdJ!d8?>l$tT0ZSw&Z6;9u&kEVa@N3Rc zX-i^!5D?4o2|84~OSRAj$S<&Ql8egc!%%j}4++_fHfs3E6OkxxFQBzl`yU8V8Awff z7=~}Xu+Y;Nv3za^XA+oF{gpeWnlT*_G$<+4FmgcqSI30kylQku`;7?sagDU)>_Ns}fqe*50klk- z@%C1wLedd{YU@lW#S?ncb9-0eGlbg`TTR+-ID*}cnN1{B33g&g>WWNxBJR9p7pn}Q z_tqV+u=f>J(>@_`>yiD-G9sJg9ME}<>m0JOt<5AxnJ`q}&r<7cn{RS{4Z2#pkrdm; zeyVk&w+{@riolQ-bznu1CBqk!C>SnQJ3r0iF=CDf7kG9VBhy3NG_Ai$keO8Op%L@j z!TZ%jfF<_ID0W`%u{e0%rB<29{M#gv5&m`PId_IIZ6JEIQ!p+mC8@FjBSCwQ0#W$` znPQyb`>Ya0b3LsQbOQ6>Q9vQ4osv{@C#a`jQ!${QK4JYeaZuH5=_-uTOkuo6k&BSn zBf*%5hry!A#1=)JrWJZ~_jY_Y?bx=r50D1y6<$ptO)r?qNaz!y+>dGJ@c=ul!o5_F zBBlCjJ+N7o_7u;cuwh_TmC-IB8MVV(aFT^m#y$8Yewn>HL<9PF(@@SNG9E*_* zqd(SFLlPu8T!}X>4)WwVU=)3Cm8G0ma*$%Jgjw7%;yxz-l14=0VUv^H0Qko%h`$^S z&@8Rwb&jKh6zw2;v-ff@KnFLog_HJc&1ZN!z|HN8<1I8Xu?a&eYHCqzyZPgY>J0&B zQALjIIyRCaz{fGr#8K9IAE_oc<`7UAAig9l>b=14#CMUJEZ%TDfE1xMC+1|;n-Sp1 zz3_-!d#5SY0QE;oFwGtlwR#O|^GS${VFa7(m22JClfBE4y!G}(YB0ocm}Prn7VR!`CA2VEdyhnTVS_$vgj0e_gu4y z5+b-)hW&HLC}CcDU${=?1J0C9K)B{38kV7bjiQIEsxRck<0c_1O!3t`L~u1LaH01; z;ndK^ir(1s>XT*kYUn zd78_M!~*EpxmU1YL&DJYt8e51F!o;JRj6Yf38rZlBpookT-KH#UEMYKf>{Nnlm#TO zWxm9)ZwJX>QN}_!n`A5XiGW8c`1(2NMF@aF!UGL!ZxLmg)*1kOP4eyipKnBb^e3=z zBA4`33%V@!m-*70@{u*W3A5r)hDEH?B4?boH z28RfoCq#vRZA0yS$GG8RdESR9j%c}@f(=lS5eP2h! zpj^&AK*)f1a7RI4D>cD1o{V62+N=Qx2u94PLgQ%emsWfy3b=s)^hQx(goHqZ7Up~1 zSE@ggjF;yec|N6nCnrSn_n=1yQzu-TkdNSqL#&2F?Iwu8PlBo50(BxjPAx@M#Yhfq zuI4S699a}h3J7t1^TL)0p`W#;GNGw@r_f(Kt_&|AIy|A{>KsX-pVpS*(DEu`<;Q5- zlUH#*R)Auh1W`ZxGLXMSQ34nJGmunL3VvF8l*D3#d6C;RjfPTyOz%p*FAlulIlS72 zCa6wVGhKi6qOBYXhd)PXk^Shkb@t}{JbgQ|R0k;HPlSR13&y$^%>RFVqWFj*$SGo| zGw5r;xfPmec#x1#wN)t0yhC7lFC&T;#8KupX7dw^@y70_p}`T5j{`J~!@{`rnzY9Y zpE!=TU9AsV!Jh)m~>^x*mFIsTFE301-e>*hM zHbgN68Z;8TTHG>Tt;>3OK{Eu?bPI-d4q4HpNp=a9tFD4c&=H{-2K71#1A$)3knCdA zWO4q%yU&;ILDieG4nXQ6QCXQBY|H#8I&r{=i3$E4#PlAV1JSj38=!!#gzeSCMIU7e z&Q68EC`Dp>FEy3j%?LmXE;Z17!c87aAwaAR5DP$!ZODY;ZJJ`bbr+ZwuozS@0^dlm zSt?Azh$y+Clule9xdvQR1y)X&yU0YSSHN1p;zddAtg-rhaKoc5PC2!;-n??@1Ho={ z;)3WRXWU4zbsdrX@(5942GmDZhlwP1=f?VPG#U-F*gZ4 zgFU?BoX!PdTB76xKGKJziI7kM7W=Xnsnje(C6fO-Nj8y=I|!)3`a~(mQOYG(tu+XJ z$&bg)T|}a#{r8*mUKCk!2Dtk(CH_1yD|Y`SOq^k2%?7iC$EHSB@Qy}&aYxO?*0R1_XDM2em=hIJznrQDqnGw z(r394@k)H#;I}CCRWv#d!yA%B1U|K&r-gpSklZ)n2(RP zO2B2CT{7@qKwgx43bENGP$E8YW{mw#QYi5tJT*#t0Jp_2j~Q8n2QUx7aAbGe25{KO zqvL!gUA%s5Xkc1saZ7zO2n9tc!X%JxlT!f|2}CtR66-lew#;}0q>+TB7^R=s1= zv%T(c^~RDg&@Z|BVg2Wlt`kp%xCVUeqParof)XxFb*1 zi0I(><->p=5mb~wmL`f7sc<|F#6(BWXTvlXKsb|Ypd_w=V%+K90M~^K0c^zA;f;Tc zKz3=D30avHzcXw*=kzU@rY{NCB7zyNbG_=?I)r+7fVu_r5f|ENgaO+z4xkU5VJ7J6 z!F_Q^VUGE1iiQSI4)`|* zBk<<#A6ked64W66nI5@{Bt&d{`xTlwTLF0k*+RgpNP@~+)HHbj6`5%wyC`aCr87$^ z!GM&dWPn7vJA@Jgc&0`&WAH&qmHQ_#!@YZ$xU}wL?T_zmS)zA5!0bHY=pR{vhJawD)e<|VJ-%)G7?0R5 z3G0}djg}2iG=e#hw27yB)rJL5Oi8S@|FP~6Ei9kFa3BZfQy>!|6x&Jxv&ybDF-Rd0 z$kEiH6)w6#i!|Q1(6waz7xv>7s8!+wL=qh6nosUgwyHT8fhP-L$Q}nMiIZtV6oX5^<@khj zx-rWaViKfsT$=cpMj9pJ5YV{daqN`SKHq(j=@q2Ni#Ui3wjzUIIHr=2q|A6J<1k`> z!V1cE3YzHGvwEtasWjMHH|snQh31P1jV^H@qa-&XDf39mMq>izO-?Tr=DxQih_NGi zhe-+!{d^c$EhFY$3L_6r+ZL4`PD!bSDw0?ygm`hwQz#uHu0fP@NH{>P=H`%(m6H>P z>@mgGH&|dav1!M*Xkq)Ya)Q7#AOP{A_>&K#S)i-nS2WP?f5`%0+$XNb_QC2wJE{hx zimn1f${MNcs2VUyCf;HPR%la79CH^1Gc%2~HWEb1Y%(N2YNA2_wL!lqM`fHviqdrE zZZe5xER128x1dwF7aIt&euPUGuMeereQkOc1@C8MNMpJoG6_LS-S@h}G*1tr#2}Jc zR+8kKWyJWr?lqF$93v0`VOoeyF@i7n3?0s3NtmQlZioEk9yNxvUiMv(zZ5|wyxhPB z;hj<^TT@f2j4C`M@PvtLw09K{%HK*ItFAUXcxG(9BU!)$C}^MBtOf^sT}zLRN8>vw z;Q|5S5uK}N7qmR5bpmR{ErvTfyJG14{)W%(&(K?-v1cr8eW5L0!^kc)DK>>v^k(x8 z8u!ayPWRV(Yvk7YLz*@mW;4;GT zOc4>(flI*NCpBi5d9i?~&)kflV2!B$5TmBtHW6^vp{7uOjzD(!c;9GJRzyNYW?_`| z^brSKTJs_7^BhlV@O$6%1_s)y*THuOX!<;V>_RqK(HH5#;W7=o4bB`#v^<}Rd&6lV zIRbuJ$W1)S4lm5$gJF~#2jUEr_D2WKN zi6GxP49?^6gw$gymaDQ}BQa@CHi~2}(tsP-1t5rQB$leEHB{s!0!z>WPVW+MT(S!T zfhhpACle%YGij!MYtyKp!orw+FA3XXHyr>lB0Pwn_V`>jIewVvDfA!(mrXI;Rv!l7 zfk}c?W_}!!EBjkR^35KTRKIy3 zS5D@3>AY=+P{JIUQPP)XW-gi}T~GLUNF)yVL>n2RTo!V=NxWsqykJA8@>e?9f9x0n z%Y3Arcv3&3;k%PAYt*f_0?1gk5~d|$;M)iq`H42(8AMkWNBl`^mc()lrah)I6u7Iu zWW5sn5y*j^x7HFV=-VWmSJH(lugEem^j1g*5U|juikXy5f=-3!L5J+?*~eq@Mz##WNjOSMWqAOh{p<31 zVS;vAONVr;19~kgi^PJo3bzn1K_)7dHzpyWS?~u*nI`8B$ktFPO{kY$;8Z1CcrZFO z1UE`X&$+c83h382W_)#vWN~P>ai2jd^{(=1BS??t-Y?@8Onm}ClRXN8AALbBeO?F) zon-W+0xfUO^4mZl0Vngn?JBu1`u4x19NMf;1=9z}%4K~~(2sT^yyOv;BO4X9nCjB0 z_-S=7TP4fqpJ7ro-sU{EE4fHTa->|4I&>^SqQc6Kb;0~AugA4=sSai#Tm_8>&vDOF zqdvO^SQD_UB*YcP#zN+S05g(|Tplwk%aL|$h>E}R%8J&rPPnvLj#xVyJ~+2(JoEwt z)WHY`+XoQ=Ze&4GBHwDk+Y$vi%k|0JBLbXd6|&@52vSz_v^g z-MrCFJN3$gDd4CaaGx|lPXpyN7#yvndx}o2EZX#}j7E)7p0~W;dJX?fs>q^T@^ zY)S}*O9v?Fy`w{nsR>W1!&!oP%m@K#nCrobdM|J6yu2Z&m@!yfp$T9M8otz1L#N5L zm-BjDY!Y?6BZz*Fg;pC$oS;w&JGbEKl?P*^`Mq>*z7~sYUo<&fUzq@dI3)&+hb=gV>O!tJ$W^=fWAyd) z^0Kd+!H-f9Q(RRA(%zsTwRhsJXG3z6KS8F=PR^!aMSJ7BB8-AvH_8D-#SKA@v$m5K zsYDU{3^A0PH#dp2@;8h4Vr^g`hv(imZ3Ef>cn%|dk&GY|KyW^^KByn9>7b)VcIKqt zYpD-Kp!E0&>hJ`WIko~v1<5m}0O26tBe*fs@z4_PVCb7;Ie|#F4xUUtFON_ygaVJfJQXOq4^1n&ZkJ znpv#Ztck!}9Oazq|6rgi;C?OnK&Mh?DJF#E@sI89U9b@d?OX1g$1>+L1-=K0dt2iP zx4bGCERcjRWLB zBWN1R*pPwm-r-=NM$_cfYl1aFb{6tfGD7HFNVcUn?DKna_#!ab-t8I*xA&yDgj99#tVZT)Z|8P>7y> z-fJ%PGfV}XRJ7{!mkqmmG=~o;td<61d2My9KOn=~T}J1(5Y&90X9zabU!Kh44aZoz zzR?IzDRCYtq*!Qxu{@^{Ni0LRJ!Q)yYhbti&YfI7IefT->T{)cLbl=CE%1*6%fvv? zl7HV?hqKxG?6BqlbS?7o-uhXR8J)z%>6X{Sx=a&mUktyLLez8O1)C6{$=QOG-GZw% zUHQv1Gk&0V{RD6Tp*#PZB=VGyp=C!=p~=}Rdyc#q%=DK1MRZ;8rng|%=)Kpj0PEN0 zQ*W(^Et@HZ5M!UJ8pz)|qOr$3swo<2!4d)ILna;*f|$OcaQ^@YKBcGNVc2vix^&^b z1!61^;ykfkqX)yQO+BFGv|w}-ufJdZod6pD1hheP1EJwPR|}>&YID9n*i&ep_09Ij zdf+HD>wJaD@9Bj%ePq@;3Mne95lr6Q0q;?D6a;Fug4FIOkOID7#8U4dN^t3U+0-l;!tPDD;G`L2$&SB3!yZiFulw~;P(ZH2Spf#PY6?s< z0JxZtL)Ma4f#%85D!#3k>-DqBQ2wCD%yYnsnCdp5Vs=N1GjXmpzP+O|>yU^P%7#!A zGc^Hbw6lIFka)HIDiOIX8y+n6?yTUz@Wz&t5(9t^{7UU+6Kw+ba94{;>hmoIiz) zch?`(D$lbq%qFcRVL(7iI7vYVfjk0@mc)Ss)7z-)Fgp0(Vsz-i2_>kng>=DEfCp%` z0_%>j6yviC;v7uNM33n z({ivXbJ20h$3(;6kVyAkpE#Ve95(FTE=eg;laLh8A97d>mni%AOE)2z*Eth;_55ix z{;k3U0eM0`K*+=cvwr^&NQ7*rG8A0MQ ziAZ|7^1JG#xcBPBIdU$CzUJtup=6#`i9NLBN{vMnA=b8lADbRuu8%P&t3;sNd z#K|JC=BXt3Vk!LlQIYQgxz!q$x>(J3`YF2L{~!nPX~%^@h=%MGsMu2<0lkq~qgrxQ z=D^BGtlinuA7w3wt**ryWG*5>i=-47pf4bx%?~c0R(nnF23!Etwb6ht8S#ys|?lbby3ux|* z93eo2axTU!eV`60pjEj*=Ok(q`r)Ya0<^5JB)%1&vA}h{`jIO_QMj{#LKoV*tcr!a z4|a~V-u~gzcan9TV|C*e9Qb!Lf+`zO zrY~L<%g>)KBY-(*Lkf0KzA*S3SS=yb@GYTlFnAu~P_zrnUswA5KCCF(^pwA0djx+1 zksLgMJDwgs7k4=hg^PTivIylvqxueysjgBd;lllTb!Nr0i za)nhw?$&$*-Unl2<%#$()dtLLBZQ3pX(|J~B9k&c$*C^3AvRlwFp|E ze)Jz2+YT#Z_w_M}k(XC7T!lUb-<7nDy6AP!3Ian|)(hG1CwJ{!(Q!o^>wcgWdW^_W zTpZST&6OyQPSiFoq)c?1-S~8dyNUueY`g+D!qIvlv8Wx8Sf<*+8MDXm?D7kP^i=GT z=PAQ#*tZ1^rH~AAEf=qKA_o5`=eIZS@s*fApD54=J6M;U=8X|{*{m79eN?1_* zMqJ+NZX_$9_BYe)Dmw(|ZP84n%W`mm)^is(jFe@Ysj zuPi2UWrVOX5+Yc$U=TwdzR60K$rdqY3BD~>d}0(u^OVU8gO+@%{spwdCl>bY_%&J| ztd6oho={KZ@}!L%ldJ2&&)G#_WPfU|E|&+U6`&IdRotD^(6PsppBX~f+LCaWQzS$Y zF@OOpE98d$JPri!x>w3$MmC}|ZvoiY7_&+H&D2TsQo)AG@mSb@nz~f+@b>&lmoMky z(5kFW2BqgGp3{2!dK%%I1=BZq`hQjiB(PyKP~1L0`QUZ}u_e{3?}6?!!MDVj6G?=@ z`TmJo5h?}_f7(=Y;QvG;%z3FsgK@mVBbxw;+B;;F7uos=(IN~NQG7-pKt=4V+8cnx zhdt%O(8#k>0+>sH*a@lQ>9L6oZY+NpVcBvWS$dx{KxdN?1Eng!^&H%BI1(lXDL`cT zAY9MLf+4H7>wK3z?wOv!^1P-8dZeFW@6l{kc@1}mKJvQ#Tz>jI*a;U?LPm{+(4=Bc z&?qo7VawSop0g_{)Pt6^KuAb-mMRU6D2m#&iRHEdrok2TSyESSsfhX`^@}S?c+FEW zWu=yI%W;i6u>`wnKh!Ib7TPwC3vKX*@DIQb+v3m$D;GJF29&sBOn*YqckQ@nNBMaq z*cM@kY@jCyijpkn2V9GRiN)JSyG$ z&%o44o`GWlv0;&nESFG$qWLg8XJ<65<65n1eP&?Amy!ZOnR{QnsSZ^jXbw@kJ_PTS zG#Lv)Gwr#NaUIA!;3lrpqa1eCm8ZwA)>&GM_tTHh_3MirSn6E~^DHjZ?Zd!?IIFoBGV~a^ za>f$B!^t&6!17-QkK;4NI8QT(1;Zbf7dwR__r@CvYqlLlz46WkmI*6i5+WIBGH#RH zUNLe9xjZ)jG4iQl?Ou9|rUl zXCk{85&-H4V!i9EpcEqey2pv|@5{_FjfBhWlstsOC1V68=u!}1CR5}-T}oA*(kC9Z ziw50g&z43`hzhZ2^o`48NoqZSN*s2?mUd*Oh`}I-Mk}J?xheMV*o;nn8O&59Z;!Jgj_O&7!cVzurCs{ zRU|;QVwXCq()Q*3wQPfW#EnW3#1!Zhe}jFIh@utKO0q%6XSicA%+Dez@&{dJspEgcF%(GWxJ)Cx?2vbt> zPks{tii@3tMyjx2}giUfg#m?d2Ny@P@vL5E`_$jfTZjoGoPFGh!NlDG6fEP~>7 zI5$9yEqe`0eSsXAm1KK#m;y}m)5iWnAHJaY38cI;r;m6UL5d7WszW3-7f=IMgr1@I zR{*CDjwcTc^N++PD)u@Wlp^BYo@Cjp14Km3lDZYExSOfj*^*LQ$ zIuWaVl?8u*YArMGS+oULf zi>5}2K9n*iq)nA&b@gpa7BvAm@KM2SZLvRJ#QTaPa?M0&SN-9rk=Srwljw0!pYXAv zu6I^2dIRlWJ=l*yoew^G3D_Q4Zp{QXL`PkHQFq3V{hlOFJ~u`@&G0Q!IL-%bXNMie|JR zreGA(O*&2mU-4@_QII4=`i;Utu!gSkBF&Wm?5VPGWm6R}vR5E_$X9R;=;QiSW6;-? z!u;O{x(a?;x^~nbjSrO^DefnI;Hc_&EGHmcg!XXzAbBz0qR<9Ho+=pgpIjV664M9G zobpc~9W((iRBPT)UH{rJESF>G89mf5$#F@seB)i?Icw6|N^Y~LbH5uXWtX~(AaQ#V zMu@CP(P7#h%fEPI7vR)@MQP_q>xk9N&QQGsX1L>)2mj4|jK~=*3*=qk^i6YdEpwgsC4S2z7F2)CF4 zQF}dl#CvAMiI;^kw3t*1wroCR=L(7wzDq-Xk#06|(Q9m*=1Mxw2DaeEQ0~Y@QqE)e zS|pdJ0AZ7kMDpJhT^nw4VDLO)A`%?!oTi|%$_)5{)y$w*aw^e9>vsAHqi2rA45y>% z?D=*o>2@&0%J@V^baMk>Py$9<4mAnsffMr}PRCi80EsoL)52O}T-2=F1>WTluchM! zHk_>(5Swt)Z>02Q&RB_RyCK*$kgUo$*-pC&I_p1ElS(j2j3E*bjh3q;n4!jYdm;_xZkdy*V9qCU4=zA^l3Atj zWP!^ZU$HUV45gjXPEg7y1>$n3w8ySXCOpwKdW0ZA$T~E@#(#r(fsLhY6*iK)WUsHj zO7GMoqMdlFQAq%)lvhCnNEmP<2}XiSSZXr>-tU0iAc4MAT>-J51C!{xPejE!1D@;?2cjxG=700FTaS78SS9j%45r#;gF^5y}BYH4*@3yq$o%r33-ChYt*n0vyMG zvrq(o<5ZL{{L!92jaoh#9shEZo3Khh?XA-H*tc~mSD>Q00HeKEE+$jW{ynEKwGkR9 z@^6d8=y7NrNNK4dy2tWhk~yVqc~pnVq`F^_L72uWQR8C5%LI zQ%~=w>YDSQ8zd(Xl+js5z_e4awi2#r$M8bJhGKr0@R{2**<*2wa~k&xv<<;mN&ShO zGJY!BaeI2U?6jsNYJ8IKC6ons7GvBkEdU>OF7;?3U3z`1TBYbw;<`(tOwW+pnS%#3 z$LopEiR*w$WG|MOThxV}i1?_46&Mj47c?jO7wHpzP)}vvtjhcm>^T*E)jR?Nw_VJH z(hyf&8z9CwR@|p!%gwhWkz_rR+lGfiIR&)phPlmsr)V9-;umGc1K39zvfxO6QPga> z03Ql7m=%%3;@M=}+>oZW-B zW7r*f;Gfacn-uIX+FxaKgJYJm)wDDM0%H3FZy!IXV46_!}K!3z{KRynX7 z8P%iL`n8lvs8|?0kI3bLIi5@d3CX5dMj1=lZAr8atH3Uzgp*A5YVnA&WveVSRe_F+ zKBu`{E5o8(9}y_j1tTEv;<7PG?zVX5+Z(9%hbbM9cR2Hb$s=HtEJcW;j<_D)6#)T4 zfLP?iNe$dH2-HJ54VYa+XpAcx*kQoQk&Hta#taSgFbG+$IOgd9G;INp!w?1yi{LHr zree(s>|1cNk#QoT3b0gxLt>7_Op7=c?kkK}z^tKJ1Sk@OBX~}zmN6va5X4*wLlPuN zkuU^j6Kp&n`oj>0_zgrEfIsl#!&C=h4RRVNF#upN!a!I6#*J@CSei3=Y&51QrYwFdP^^pke?7K(&F~03raL06GD^ z0j>h)0YU*A0Sy3v0AB$=0M-E40cZgm0e1s-0cir_03iWv0W=2e1~>&C2C!rRp>L5( zTWCN~w3r0IMuFNZvJHR=ARK^l`#1D{G5?pwKS_MA^54V%0DKehr}RFC`2XTB_?==0w^)u1m5PYii@6f)6_5Ydu zv+NIZ_(Rt}Q++LT5!n8!J4x!>sE&v_3*cXat{Zq5;17w;B6$epw}$Rg`0nFJg5D-L zYvw@(goc5TeJjM($AJAZxZHZN}RzBcP0=_>ZI6WVGU zO#Nk-YqZTa3{!84P0K~GsI#32<+_AsXU43wILwZS(8n%S9)lP!Dg$$e2$$9$E?^Nj zql4do#+a8qEP(bD2)DpP|$dp<`TZ#bY6^~7Xv_Lle)77^OsVhMOm(@ z??8O8kA%}ZWpR&2v!7qFSw@TF6d*=9YT^Rtk(n8p=CQWvt1Om=n&5uP;GiT6 zMRvbm39kbp*KB`qoVg12w52Z)T}`X41P>D|q_%K#zuhwb+BpEogY0E)KnSy#@+(m5 z20@LG@LUEvk`I|OIUV^^0_YtG9AElBS!Dsh%k^P9r0moJ25Lkm-gh#igwBDhAOj0!EF&8MxV^-m1U1MEd?H7} zL;r;tfFIT|ei3-Z@gyM=!%Ba7Pa626JRAA`V<2D<{RLRT@0o=bE)XF)nFtUL67`2L z{?_Qz_`Yy2t+I)?9&z#z__Q%L3pnhN}U z_rN#WU)kD59D4whbSYERHY01jM7id50EuI1ctl?<_IT=Y5vP>(sNNkB&U5&F&^kBhm5y{o!y!F+4wdxXoy;!4$W`?_nL(+bK_QDAMUV1O0AwZ| z6j)s}9YEZbY-C^Y)9Ej`aS&~{sXCG2SS3ce$EY;Yv-c8TlrD$C85ATlLZpGP_YWfi z`RQ?z1@zIfa{yqfsUDMEPpwuX%XHdO+ASb3EPi1fBPocvfgsC0xa^CG2SWBPWQ&GS zpCXPti8b>WkYbf#Vg%A?&_UwUsUQE_t4GX?7QqUpKJ2Iw#%)Q4Ft(`9Ja&Yk{C@38 z@%T`)#wWy(kKfEH;ZBQ(m*Iq&L=<)4D7tNO{SsA4Fp4D?(Ex6nQS&f3TK|atgj`fE z2|OX0(&(ZqxJd~IANX&dvX?U14_<~h2(lP6k^H8ep;2HW6oPo?U%v{M>|{sU~;p zLTv$OTx3H^4zNUn4wUfo>j{CEvTC@C+cw+cW*ABH6u@!M2EdBL?1GbL_#e;7YDBas zic?MTazk(khXSyPeDom_I~wkLv?Wr8<%egEfM!*M9^kl$>zsVzaP}S!gcD3;Czy#58RTm?`p)RTS8I<-sC3+*n{A)P*rU!@Npj`e{x9xsif2v zTW`{q3p^?A!Mk60Q{(FLt(&TVe9z z0-!PiOV02JcNeq?AbJaI+B9xC;LB=}Ho0vH(@;Qe0zq~-8ckOa!(u@Wou`p_TR|QT z38H`lJE$G{q1egUX@&v$x7wNLWD#j*!D58GLv^bT+jpdKBrK#SsQsWK(+RO40VA^w z0nA7MN1Y1Fc#5JkwD5TtHG1t;lo=i)U+kFG?1Jh11h9382!marrRE2eZh;JGh`wNO zQA_~n?%97HOKLA^#oG(5*bgSllS%rOc(S%Yj00cYR;!D9G_90{pfq7D4I*$k?byOV zR|epi%oIJ{ou`5zS!-_dnxOa{uNv)(luMo^5TCOItq}2}sxCztLEzBGS)Mf6dzaw< z!GweAgvFYJu&mH(Vl9HJBV%=Jz~~i%nDGIF9ncTET-AQ=fv{L11&K_;ei!iht(!De;ym|y7ksL|^5Ko~B-vSh80++s?unD}bZaYa@ zPH4M$&fw;xEGN3_H1vHW><%-+dg7dfW)F8$bB+h7sThoOtteO(v{&-+iK}r$%G))# z*Nhx^!ZMj1VeG?EkWg+0CYQSX1t96fV9^3c+9C393LU&CHsFCa1q99$`zTMsEWwLc zxsw1|A?k8-m8HCrk6;K7dhNDJN3R9iws%6vTq_}PtR2CZ8TG;ltZ4I}sU+^s8`P3F5QxrypG1-{ zGlr^7$Wsy(lo=xfC~BpKfg<2z4OEeEF@~x{Pi7O#CvqMJy+f+}=CB_$&IuEslB@s# J000000038FvZ??8 literal 0 HcmV?d00001 diff --git a/ansible/artifacts/sunbird/login/resources/css/themes/default/assets/fonts/icons.svg b/ansible/artifacts/sunbird/login/resources/css/themes/default/assets/fonts/icons.svg new file mode 100644 index 0000000000..1ee89d4368 --- /dev/null +++ b/ansible/artifacts/sunbird/login/resources/css/themes/default/assets/fonts/icons.svg @@ -0,0 +1,565 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ansible/artifacts/sunbird/login/resources/css/themes/default/assets/fonts/icons.ttf b/ansible/artifacts/sunbird/login/resources/css/themes/default/assets/fonts/icons.ttf new file mode 100644 index 0000000000000000000000000000000000000000..ed9372f8ea0fbaa04f42630a48887e4b38945345 GIT binary patch literal 122092 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 +|+&Vdls@0SAya!5R?! ziVniRxeJP4Y;H*nR85uKLQ+b)snu%yXP=4xXp%p*V(|Ms+&!Ts<#?NwEy!5pm*V^D z-Dg(@-2T08jZHJMJ;tBX$}KEx30j?M*HUJ5Mb<~Bq@%FJ=7BOwx*lFd+F$0K&xW1pdHaQkd=Bs^f@3fK$p_V zG9Hv2&)O0|T2OPy!GKHF0X#SXs4z0Taeg=3QC~5u`}}#6=S3N37Oi2%(w*yCCSSO< zyLqvN<$urJ`x3fcQz5`fWSUx3WgYwdE#Xz6*&n-Zbw~V+{iC zvns#ZXmMIqg)QTL7MZ;K`UR~kCQXi&)xL25g^ye`E2@RW`phY`J}1GhPoTK=wg^jS zns~aMSW_T9(k1JEf z?H?bX?7T1k`f}^KrDwT)O2xQ#Ilv(aC0M;dm(kt|>3YmubBNSoB<_T?25ll$8=6Rh z5r8U~Rhl9!p)LqJks|QabdX~_-6T^Vh;0oAU$ux&w zujJkfnis{aOi@)^-BSrwuIVv;KOM6ud(XYJ%&#%7$o2=~I|BZyc%;FVOGX}x;4i62 z#nhmr3{_xm8B?8h#BmmRlFiViv2+8B>%c?Q8O1dDL_H+<36jQ)hFz84vhc zn6)AnaW$~B*0cN8Z{ro=Xh3n4xt!ZC<`EwQQ%qwl3*E+A>3#@s3*(qj!l5yPn88L_ z7(_^#A%s8eICk+?(7#06W3w+ENk(Qvq%6VGX~IBf;(<^An=lx=tdS801ZTsp8Wn^&D$b;III8>|cq?v&%ITV+`EV8j&r1NHBD%&}Fg9G&f1 zB@$7x?VS#%Ta^bTS%o@e%vFW1syAZHIppB6k|AF>n>jVk6?IAb!PfQ{9-DjWA@^+k zw_86a>y;LL{@f*Ps-wd0*uFuG`SGFjxHdW15tQ4;rGts;TFz^$6Twqn6uiqAd4|xe zmC7B)$|*i7uS3T40ob)v1O`<>;P*W4}nzfnD?w$^S>~ zHq8}fG)A;rG)l!$Sn7xz$MJu=-DB+&J}N(Yyh}&BbgXe*wD_MM>3?XfKdOym?~iTs z2)vZSPHFm|8s!g_(~Z>}Q`<=FZEAFyLu2!&g7?z$WABgc>)1S#p!guN_B00#_m7Kv zYS!sLUQ&AWozhaJ>4D*T*;S`X4*qrcsxnfbY(R7AGx|D|8$Y*Rmv^}5Qe(2D4-oO12yVqCYaHdH>)ZkV9?A|Af zcMffTg6;RK&;popG4Lj!uXOmXR7p*^CU}#!X0TKlhJgex3ob?Qws>(WOu#fO7KENG zx212(mOf?6@f^$caZnQmJm^z`0R3rNL71-Im3y528}vY6j_f{Hm6JQ6!WmWtg9 zSuIL}$Ac_mlca&eD~G00inpirU`vp-fSRd~Vw+a|c~y>I z9kS{9-|9H>D!q;M4fY$o>YtNO8of^@+A^s>CsArsPVNg)DO-q2ec$LE>}P#^Ad`HO z^*xbF{Rxr|!7B-RS%c_7oc@7wjse z&9euO$5W}etj*s13L9s8%m!=~2pQ=|0jf%lC~@L-#6KQz6HXovb%R zn`vUze(*aadj+Q>r&Be8qz}Sqr7cN%axzJg!2m!GQzeIC9T8xap{TBa&x=BS9f0@; zQnXi$bBtG(XjhzjS=8Fx+G2@bcJ3A05|&HES!29C?D2%#uEYggFSu z66gc+2e}`T#gyxqaGLLcykqOZt-V}|d5y=sF)v%QbE(| zJQgc^&By^?H1yxH$9Oty=T2A6#l5>aCNA$?ylnd9bVwi=6lpE?{YK37cwsd-8d(&k zmDIB*Pb^_F^k3{##MTuoC`-FLJfk+J4AEQZoZ6h47Wl*9Ps+N>jHP8|m*LEGek)Fw zmGL#kw~Adfr_#oUr_#Vw+GGoR1<#hTFNg=qj1TZARYLR0z#joUVm@aeC+r14h{VZA zKxAlRC3Z9p7%uLzqymZ)gGyVjm^5Nhp*5q7F8PNf=uRM`hU$cpbb!S5 zR%OHU$ENpD+T8uDA)W-yTz;@GWOkoe+dhgWL$;%PxBg4sI6Ta ze%s0KVz;~o3C;PB5Hpm;6y4xFeUaC zf&0l8j&}GG9ARoXOVFWd6Clwzlas(8_%&lVr)J4)0=%0zmZa%D1iQdQSdZ?L-$IrK zBjrccQ+#%(rkP_G9`0Hg@>A*|5I1_O>1WW;@fT?5FfcTH7&?Lwbl8Ec#m-+435*$5b$5>rzv_XF+v9zD9cb4RpaM=)FLWJ1^ixm1HFmk zzgd6^(pU_`BgavgIrd=XRG{$2!ldH>F zZcOX@ickCa7tT4b^k-$h3pK~gva;5AswouRHX}im`=|PS!HMJNPaV@GX{1lYdrdC( zsbEHAHXCF_VM#Q%!AxRQmq%G9N-$F{8ngEH3L`!=uB3zfq{jETd|aZENErR%YvxN8bVKsfz~13CUchHa`O3fzesD>u+~Ivd1!`)v{1o;^71x6v7= zQTdljtS(P7DrMh0^+Uszlz*6!;;6n9?54@dh=^IU2c~8va9RV(dySQ}ynp5QUxYL4 z5OKW7zw^VI%zuh!;Ls~dibv>KGPM2>6YAkH{}?<0eZo%|CIndFU0fA5l>jQ>Mbkf~ z;ODKzR^(lK`Y!+8{<8L{8l)^RI$mdl2Vvv*rjDaM=g+I$N+k4 zR%IJTiV`f<(+UqHmZI@nkmUWix0S||WIPL!N#j=-Yq*h?_-b&+|1I^h_egXwv zE&~MXf(J=h=zYmXfv4eU)$WV8pa~|wW)MR*ulH!23~($Pq_%+gaQC*0;~pYOU^o*BZf2S^4CPyV<=&iJ(*|4G<<8h*|(rENCWLnX)nm%SYk z<%bP&sXU6$6Lz@t0Ln+i11N&#fJSo;-J$+fy$Vt~46MT|WEg-jVk+!4jNXpAemE5L3J-%mkzuggkjZoQq^qKQ z;ayx(VIU%SDDkf18Z_%Yk);Y1R3d5;^}?2wNt>~z{D5!r;H!f3g$srg!_8DR({1Mr zXh^4lbPB7(?M=491_VBSs`~w=ibytcag*`BfOO;iri+oUXks=b&0EZ7E&^NOmhnD& z6Hi=*+aEVx65iG=AIBq?;r@dU7VoeYx?{XFe5Z78BOV2kLs)Ran$h%>Au7F;){_0L zX}SO!)o&8&d^|bG92q8$_?LW8p9BIp__)tzbG_!W*$@)s>n;q*a4BeZ@zjaGJn!-c zoX*f#>n;G zs$)-spz5eQfr;%E)YR9`yXBViHcidtrf#AX`VaK~eRZkOp&ztjl-Hv$rgK;)#Vg`G^N9=rDqatUz*Qn2|s#h#rA-CCf7yo4_|k zlS~;P2rU;(Q$Q_|rEC|_lQ2Ogb2SBjP?~di(nLOIy!N}DSoCGViZy{fO#f~ezqqYic~5t&8gQeY@6&?X4+aZSN-IX?FpY- zwx*M|v^Q*By=$xB^RR9pH*>>6R3aZenhtaKf{l1UAl-CW2sl+>@Nl|HAzjjlW^G8C zcxG?!nGyQ-x($5{RHtv7vcUGd7An+sQH z$U(o+xGOpMW5p#3l9NiqNJJ9yaQJZo*u`AXL^Ojb1DpWIX}C|;32iuswcNosrkXKf zroM6TW9%OG3cDx&Of+!)m!oyjoo5H+O9T6ibpBl@L%rZ*|)ZBxaR8= zbmr^VY}oeJOMm?V< zPdPlTW=LlN^4noS*9sdQ-`I90shuW80#XCT%ofL+g-0pL`2FC8V19&h=I-3#)&qcW2a}_UB}J|1U}AQV9s+_wb^`XBvBQYJ;{e} zW@Q%EA4tzWU~K!%{8!i|*If1KY3Kjjr0?A^t$!2s(=hmDBi;Oq&Y#OW4xj6pjcON6 z|HYo_p6Wj{k9V!d0lyku{K3wJp{kaa1>**2=NdS! zYVhMDeRgbP$I8~8=I++X6;ldD$Q!!o>PJO}qzQ{U8_Hr$mGv{Gt~hVUOtX$L7mH6R z)vKR5qkV3Dr4W-0x}f&%huXWJF8_2ojL!nhG42N@r4SDcS?ob_$Kq#jt5Ax^&dI@V(g! zUNDYNobIhqWR=^tcW!iz8-~QbC&zkdwm7?Y#`DzhfyupB=ii$fKBpp>UqIebaA1%%QuJNcb z*Ld{1AkQIo7~i?HsiA3U=Xf(q!H39Y+ssj5qLCc$&wbB${+VZ3_xD5zKy50dC?R5m z@C3hTq-g15G;kQll~Pc9Qi+j#I0=yj`HmO3%7TvSUJ}@zEDe6?iK2A(34g}V-++|A z!cRv3ROiru_N4r0A#*N~9}H{nG!g`x@@A@hSQ^ZKfjX$Jj32d|f@#!_I!)Rrr{tjZ z2PPZ(y5VXd)SLtpb_|&gIA_?gV=U*6s$h!>QrF71JEDf337mC@}GvhFHx|zPzq=A z7}Qm=TLsfnpkG1nwUec>*&!uN44@gcL;j%%-tohD*@?HDW%5A+nn5X&@^~uv7k?-~ zNb;1s9E#4AFGf8lQ=^a9LaLWHe7 zU}h{_L&Zr^>UOO@kzKuO*J_3%?_0e~?#qk3+)r0yyHG=6PFG+J`K1Qb1Y~CJ%QTy& z)jJD9^p7Aquo?v;L|m?@UtdveJl*(-?i2krnQFEeDJ5HzF%Av(uQ@W+_&1dmUL3>A z=T_GmTU+Kts;X<*KAhR)zVqiATQ$Y2lr)B9ITG*Jgl!G1T>wPH4FLBF=@+&o0y7fn z0Lpkj1dCW&rD|Hr7SyuJuUaWsSc%pa>s9D$@c{k-cd@K4$^E3|6ZoA_b{wEPN>dD2 zHRTLKFMP@hN3^~ruLr4LXdG$>Pz~iQgr{gvcY?wV(wxCQhJHaPtj!d1Jckj$PnG^I z0T|5;IZtu?ho!M}A_t6jJSXS!sEp-KrLCT_LO^3=>2jc=_ISg`>PAN!% zVK5F14Z4y}U}w6(v83C^0uO>SO`lmleb&^~E3Q><`t6yOtHx(8oL3ogMuMAWZoMZ` zcHbAad}rVKiQtVJVD2F7nq=5@$PbrW>lUV*-Pf+D^y^#KHg{Y(m6h`a+gui9+ETVs zUNdL=Ck`$5SUz#pLu#xQn*Jx@YlBT=Jx1nkN*av>XSR=%w!SVoAt-K3De|U)0x8=Xw_& zwg+ArJV5b3m0TgV-{9-yJBP^|{7yE1ot9gWIWECC2eQk|0{*3_Z%sGR19cr15$e4cY@OF>(-tp3car=xOvn~D)cf(UI2)38U96^w9@59ljQ2C%5#t0)c?5$HI3iEk4Kn_dC5Uiqh3lxY1ItDLa%Fuk-$YwtOLs(U2g* z0l=`G0yU0=arf74epXgnKVgQ==FqFQ>nr_^OUIYFZ6CJ<&($p-tFYQ!i$dd4Wz1_I zE^4{)lavoeWM^=!naC>m0GE6t% z1AZQE&8g?J>0Y?fEg$_?o+9`q9DJjog_A;Vl(X#z)r8@Nn>lT?I=fa2X^Vd_;% zxJo0qC8y=IRvV)gn*gi=DN~4`=ZtUs``Ih6doa-~+x;9wJ6C0msR>VI(01LO&#_tT z1~!X#-g%uZSm{Zqa0Z00B8mkZ&4~xETY0u|?0b`|9%Xe~uiqWM>41E@@u#=;c+RP_ zg7bt6k*4S}Hr7-ySywjqC);m-YtNqio*h4)TUM70rZk3|il*tZ%fobQ-8r6J%F5-d zkM3T$V9u+ds6T%jbo{~5a{py0vBi%-#9ZQ6k3H>w# zz2Jh`aZ=`!zJ}yz8MywELvT}TQ zg8I{2uIX2+YJHi2JJy(+Xib4S{oEai^LoE=?beVnKnR!l66+^VEDNU^(=E$)&z|t~ zhJ#O1)hV89SvdIzQ`W7CT>Y`e@JzKimZ?qn@;Oa+TfBVUrz2IKdGlk+3Li( z^W%wyGlHS@3vYk)jK;bJ8J^25D7$4rru>>+4awf$YTSj3t zi~?=I7!Dc}U@hIH3Yw=%B^N&)CP7y!Lw>A84AD>t>_b+g_#ZC{Pf0FGid;Q7Jfg$H z)fjUJGQQd>b=`{GEkA|P)A-7yGZyot>l5S3Q%ZZNK3NvQc(UH+MY)3;o}N%!yL)*{ zx~9%v=ASTSeZqK0j9DzSHTV1_TlRgPb;>F0L`6(S%8+VTGw;;$SzuX#57B#b-X3 zLjYypX<{qOpIdU>ye3b}!Wq#}C^}GPcbxWT5M*d|!{<)_pz_RaDp_dEo#by`- z$yg_4iN^{-ygV|~m|*il!9;a3uaXPYE9`NK0AXs!cn;oIZbXqH!iXYD6|yA#U@@Q| zuVz!^K7W3IOdhj>Dd{JbS*%xy1tU(=Tpc#xlv&fAhe(Dix}7(JX&fL0R?K9CSqx-% zexP8pE?`{-b(JLTN_&g97FbX0*rrB+EGTO9mP~C(h87Qy+tNHLS_$zNZ~x&B@3Yxk z=gpbKrp)E@{;+??ZS(jaWcd%eyK~%D_DU()xs!kO)z+CaTU%z$8vHc7^TCI=t?$n7 zW4ltm+KCVGt4b+N!qJkF!&z^( z-{q3Y;~CO-G1+Jjp-|w_G{rR-ONf)52Bv=47`bTwN##K542uYgy2lagV=fv%6J}ag zoAJ|fnA@lGTTLA#-}f}8kc<|2uL&VC$YxQnXk|>Q5ud!&KpF9zP({*nq>2=6$6P}Y zDP_?Ov4X%Lj)p<&aGzQs4#L#7p%cLK4G6Uk)Fv*4lv9BqyXw$(a$pxQ%S2Bg(KBJT za1B&GRJ*4FMb<*@7Q>Ls`%TETm|!h%a!&Bh8o04}7QyQcS2bDXvn1ekw!mTk7EX0yUS z+`3b7W7qI>;^PNwhwr`AzSODRcoi$pP4)(x-p$P?}hU`nJX*DCC{wS zu3a^$&KjK1Jw5E75(or6nnTw^jW(OJYwipRU=a!p2+MLHzpq&xb_;$Phpt6beLS?c zx+<&ny3G#Zt9_e8Q$mXBf%&|h%Qj1y%;hf<+TfO;_b+SD(8}7*yydKG&RTVawXUoz z60yh5uwJnW7j9nMR;DFDwKmqr>J-`Pa>3WNBOFeRcf#j4b+a4_%O>Lq&J(&)Az$jp zf_Iziy%?9Tcpe>-s)`~Gw6z1az_i7OHKuVe9|g1!aP zOtQ!vk|=l?>qp2w)?aOI;pP#Nc<53Kp|R)Ag{rl;uDBy0bQ$Z16=1dsphoK+u|kJ{ zLnk6u2li9);l?5Wlo0O;ViyWg*j~Xu8>H z^=p>JV*vYrSak!9ebwt-Z-&5R2C{*TR!RaNzYt-)6cf& z_6>gGy6;c=Z3nK+TOTS<%*&m<=)rI8?EJ%Ie@|e^d>dC3D*{XM7slOQQ58KS0uTSB zk69;#%R+4v=l%CzZmR3653d+k8LCd4@pBfq{R!h6C)&qVR$e}@?3{4jqxF~n?8sNA zPno)Cf^Gfs@XD~w>$Qcnx`${?7#&0$189taqtJT{gh{1AJ&70v;1KCU668ribX^t3 zhQ^1I3|>BFcq~f71v?Crh=4t~e$DENmTdK6>$-(G<1c4UsFkbiKE0)*xqL;1OZU~< zQ!%$(>6$cSl1&e?p6~48HLeP)ucNs$;Hqp;$|ueC&(>sCSFxhJxuZq**{kH*31>2I zZs9uX;_7Tm#p*TdgZ2Qtp8T^Xl`9REu0UsVhtFE!s^NRS)5C(g4RyOJWp^xPuk}H0 zV&Z(!Pt!Jj^xkxm1Deu1;s>(kH$~4F+GbR#xW|y+PhZh12n$xgml>x-6ZWhSkhO=I z|3d?oD`661FCVwY?{jU?pULJ}C45vYoSRng|# zEdTpMXLqt>+Axj`NkcDx{$BMx)}xk&bvsSDXX zCw^?2{GjV5eiHOf5*c%Mr_C9HG!Yb#oEt`X4BR zL&i7WD2KIEMD1gVE3UkiI}z3+dRHXL9AAP#>-9e`uMPMjGSk?9J^PJUnMZip8sCiu zg7NY<*sKswl;2wE^Ez+6@(Sa%$0`DW+VY>XTUh0noGe*>7nlv_tKWFmh|^e-fD|X9 z9jXzj2;4%kFGc+n+;Tuzk8letE;pH>i%YOkNu*cBGroKL_-=+D{vIiH_&w3AeDWcs z%r*F~t4vY8XpXe!yWZ99va5Zy_q!gpmYym69W4echN_*t&3^0jdY$?4UVqB4?X3juAaWchB-l(S+N z&&yw}28{P7to-=1A742^=|@MhSYSpLTK}czOilmkc?&GmEYJTbJ@uTWPsh%h;_=M8 zm`z~gc%bFdbC3C4-oB!pwPyNgSWr?nR{2G z{cPy(LpwB!x<~Lga770JPsi~@n}Ir^GleIoBU#6r$99OXiD4i^Jo6Za!6Pvc^faDV zd-qn^9CgoS9MzTe&rYz_JM`+nt+z%S>TMIAt*@+hWS*;Y*sAu9DOF#2>#ddbqs#Ez zn8$dC9<$evRNfFBU3I<9QGNUERd(B`GA2JK;7W(gVZ&H?q%g`O_Y?EKDPaRGRw|Dy z%GgX%>3BKb*(S$*|6R(HOANCuxSwK)y;86q#k7&c7 zYg6PVLK|^h9HG}I8W#pHQ0(`{Vztvd>nb@!({t-wWz6pj1ub*V#fatmn-?Lh;Q~`S zsjOYG{DtS)2EmOyxgcWBNT$VMyBpU+N9Z!X)&S+egnG{$ETiRjqWLfO2rP-{>?@-*y%z`Pi zKCw^jxhNEz)OGNZiw}0r+_}3p+qE>7g*$*`O9#WF z>4ba<_hMAVSkhvl|6+R+!fq1d6nEJswZIjCd?9yAA!LC12)Q3uG^;5T(`}?=GHNDEkw~%X7MZ_ac%){Ey`)Yww7e- z%367<7~1?y6I8484+qr(U}M-!K3dSD)q*l2A}HS8R&d|bHFy~^iqKD2fSgMG3(20? zupRcpcMq}m55R+O72Aj;5{KFQ z<^-JC*)Mn*u9W%?KvF}21xel37RHxKx?t3yrP2Y|`e@{BBbZ&{d{bD>C=5ZM-j+(Y zh+8_ue!&p!5OfQ1`=FTskkF0-BPA+{A5>hZme+<*cY7OzS|LPa6(zKA$^{0RrE93l zHl$Du2|y^cpBB=I?_^3AcyBDc}_p;dmGc$W7WqdK)2JJcftcfl~A^ z&Im>!1TL_72~n^_A!C6Y6q_DPL(zjikPN1lf~}AwhK_`p+E7)yc`pnmHv~UmEe(o8W#$c2Xelv|;b;;BkYBb#;Ye#XFgJgv-3|?EB#)!@-xs6zIo z-jwNR3H1dnLtI7t@iAT?@=Wg5xC*_o$Caw_@-T!DGI!XS2D@gP4S^5coXN7PS@022 z4V$ZMm)#zlW|ei7xdXDL6=$6}qlz4nRbA&yQxPiBujtmWrY6ecnx;D-O0_bFF4wwM zr((7FRhMjaSXJ5Kw%C~0V_{a+Vv(aZe}!Iw2%L7Clf#hOX~P>;)gtRLn^NXg6@|$# ztZtfsmiT;A%*fofs$1tQxmN1j9&eUZW%S78LRhM4Lq8F^o)a)ZDtt)iSwU zmC-ZR#_bl}f*6R5xpnx2xx7jcU#4XkZYw0zsuj{|wOZD>tc18%mVHi}M|N0cFL#H$ zhmYJN`(+>W^j43|ZHisfX{tC2x>bi2!Av<8lPbHdF2%_)cQEc$WZhrEAzO!O!5DOB ze3yBd&B1hwrdj+v!~hl{=5Yd~IELO@CaZRe+)nip;O>=0n3nRJsPMt9i zx?pEfuYx&qVH#O1tuV(KvRsFl&UUM&)@oW5A5C)6Gd$2xuBbsp#@qCuC&aaifX$N7 zbf<p8wz${B-7w04J^;`tTQ$2A`s@my4C52btm?8salpNH-2%;s>_gx+)uQ-4R=mlM zuYg1HZP5|#6{D(Jm|cN}0uBm|Hat$lj z&aE;&Dvmj^H9M=leEK>O*BDAp7ZHHP1HlZZ@M2L3K zsT3kq4Tgoi6EjIG{+ayQlP`2vIHcaAUufIySFJMEV;!1;&&dawLSJ2Q~H45fpPMOMioq3YgZrII=fSmm&Te zG0ov~A_-eh#3e6=iUVD1eru^&y%yh3@{0&@ur4+H^bsXhYEXWO?;{}$hzJfR`6KL2 z_BOsFgQ0*9iN-_B9N8{n#zv0;DKSZFgfLY>#E64HjrcOboE40AVG|%3k^<=&eTSM< z*$iU7UZ};T4mFf+ zXvIbb<2Q3oNTNXAHQ*IVGD2SiA;%hG9mPk0Xue3UU=L+paP(P
    6YuX1v{q9=vI}{pN+P4FW!CI?#11< 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 z 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 literal 0 HcmV?d00001 diff --git a/ansible/artifacts/sunbird/login/resources/css/themes/default/assets/fonts/icons.woff b/ansible/artifacts/sunbird/login/resources/css/themes/default/assets/fonts/icons.woff new file mode 100644 index 0000000000000000000000000000000000000000..8b280b98fa2fa261aa4b0f8fd061f772073ef83e GIT binary patch literal 71508 zcmZ5nV|4D$*R5?Ex4gZzZQRDW*e6!Y`lf83hk~Nu?WKPbw z$cl;r0RsU60b?owA^c}IF8;@VcK`n-Dyk&?;~@N_0s@oxffm+O;DEKhs~r$9)PHpee?SD11cGOyZ*Bae z4g6eR%Fp?I83BO{cD9aAK)^6sKtOOeKtSkOn_2=~F2)8XKYb?}eDah2Y!_cIIg6f>yjDm`nA8I88jTK`Etu#QEh}Z80tget%U_elKV2rT2HKk-F?ythpkmrA%jOJ?v$L#hV~Mgd5*Wf!EI$l(g+8dJ zU2TXWntYJ^!9UE;oD|7;mOmz|)Ttu%a+j4_$_V4ng~@ZXg9TC}EyASK`Ha8%8A$^e zi9S&hSfNA727+-vhN?gMrauOvKYE_Ej=8#wqkG5LJU7|qI}Wy!7X@e%&~M0YcxF5= zeM+XH>{Q>?Tx1W1g>O_nwt>lya{e0?Klk%zEP}YMb$CI0DlIO)v_E$lKc%wSHc64k zr%t4S#nD?rsR!4@`&xm37zoRQVJaaF1j+w~*@FmEDi^I(YV!ireya@Hww*4ESZG?X zeSZ!&HGP&fc~|mj65rqPJ$I#!l9J|qer*#nUT=EwJa0Kp@f>p_IBIf4tq8l?p$r=b zIK+$yxIv*WY^ZRzC_`neQ8^T|zaiQye;3JrzmjCU6vP~#_3X#Q;7PUM8BneuNgKxr zV2jL`+9be{fBf~VYjuSjbIX^%w#(v`uW}W0WWU0=yK+@a!Sz4+g()qv8*S%m>NuiZ zKEGJUnTvpMW(E;`QL___k#ROO8mNge(Z1lLlX1np{a0^(gvD zYFanA9@KN%JFsU`T<>-}coVjp<`TwK20AkSC=R;!0zjx|J;;Se!3?ZgZvpxwKCuvj z>m|V(Wc47&+tCJ4zy*X)mlKw_loJv`YYP>8DUnwYypNqfmlQ|qIxpIj67iu#={l2W zp!dcAiE9|JWS>RnC9*{owVbuMzhy0V=MjX@tnP~5p-|XmB%kkL*lP)6km=Ozm|y{; zg^T7ftnT{PPK{)?1ohyB%7m;RKHW3f<)s@jt=c3cHjavqJGtxS-1&vRZRL+{pj$&V zYR5|QmUUr5Q<~)Jsl*VaITbsY9L})mqI2QY(I5ok(X0j|+%DRhOifo`^CX^YcXz2$ zK2#wh(O&S?7PnfjH8dUZP<-tEGF3t2jk1sy?6?BNxNByJ$i?b z!8EhUO3IyNxYW$Lx5q;iTI(y$4T9zaxS*!UaTXoqCUm-16EAG9mLWKAJ1oZ8xsEC~ zJ0X_ZVqA}}-{NS$_=jI-J-+d!V;=PFZulShbbWPiQ}b3PeuAg86ITfY$b*OF-(w)} zKm(;IQ>K`ZNRaQUfMKClzx7BQI8n+pie36aJMSf)eX?Ahe6l6T9Kt_%bG2?ADibP8 z$E~WHy1!d1W-2!1JkJDcmzG_xWOS&n_~EqAPM%e6o=q<{(sfJ09h#8y79=)A0f0x>#qVL$i}L z-UPo@vTgBiHeYt!Pi3A)uG4ktsdR8`!ui~)V`_DHk-X+(d_xRlpQgo`b*hxKCZ6w3 z?b7a4?ExI0?V|0!hwKG8(XB<{4e%XWOo)Ka>tA9s!Wc{FXh4~HzYL4`G`;pQQOCqO ztxVGodL89$WAh0>ruA)@MN7s?kIEG@E2Y$e32TB#`vk|7^JaulIl^@&U{p@y3E}y8 z&PW%<7eb~Kb{vb}u|{3-Mgs z%R`3kd6Z^3ZThh)c25_7p=?9yP(F{vc0&Qah%onBYWl+lf>Q`)>+(x0yscho zLkh(FGZQPmBt8>WP{RDnm2kt7B)-uDz0E4B6~cn2&E7?zriND6;Mgn?IcbQkZA^Na z;GzS|5qbpzB~mciu#W~E!`%KdfUYruQI3>2!tpL8XTcHn3z;4iOz|lZn@`(ZrGtr= zU&SXnI$E3ZUy51!)bd*nwni^oENw+^%+0mZ%^fa{6#g~|6yXJ`6feG5jTpZ~A%ktm z(g(7;8Pq`9iMC13yjopDkiNaprdZf6|IYpT8mJmZWYtw6tYNiYsdM_iRgJ#ZZ8H{% zXOZh}J>A(K^!zUJe(8UeolR($A=)nP3U;rCQcFvxg{Ahqe3OpBbFgmvY7FulPfMfm z`?G*~+xKfdhhaTuH(Rb3S?n2{Rsk3j{_n54qvFf-k?5(T!X_jeVg(Gf?rO7SimO$i&9tp<{Gh9! zH1V8LK+QIu@wj$Oois$2~9n%JTF%c1!( zDo~cyXY*(yk4-0@Aw^pBcr9(9LF0nCzJZ2jJ~>Sa!tsTmKj~~B7+*Y7L~`S(Uj_h3 zuv3Q@HLBL*-IP*%vF;qaF>5ONu_SyB0Bm%SqQv;wIP^0YvHX4_<@rZ^9N z8FY^tEjgdp0Dn`~aNZDT;&ij>;mLub)fR@*;s|mJb}Qt&9trX!-AwFtpCc{NF)y6m zP*p#NY!`VcvUx?`0XK9e%G83O(PwA^HBQ+>6==o<%wlD5XwdoB-T2dO5%3L8DaA!2 zzC7h*Ld3t-L2DNv0PXePdU%4~&b#5z^{wJRPpVv(Fy)>WDFO(l0L&v;gavi1_%$xF z*n?J$Ud3Rn8I|DR)FVe?esHG!HR*jz2wYr#(t_*A!OV78+^!OzgQWqGvbit6ohG3l z8Js)cR{o)$2tI(d#lV%Kx8&ByDG@LBDj;|YIM1O{tZ1x2O=fllRg zC^8UDV9_J+JNB1iyO#3|Q(tGB+~NKNxTHoQ{YEi6{H2AdM_Jfe^Pw^%)xMs1l3R}0 zN*XqtW0q8x#q4W0)*F~(pD35m83n>lPYVC}@)RZOyy2%4*<3z7{%A3kRa@Tbu5Kg9 zpGGX29mNmhS-#Y1&zYq;eVxPgoaZW)`Z)Rj)^Uh8JZJ6I2C^*n2DK# zM-b{R+bgPkk14b!>9EzXOUJ@41_#zzzE%T`nI-ob!SuR*MT=K$ZdUU9E3e!lqC$)2 zFh-6$1HY}I4=!SobUcd?4lSgjZW03u?A(4w2$RR#B3GN{#90FDm?TVF9+vN=Mmd_w zT0-S1Pptt`LtA-d3YW&0-J^>Q1{vV8kg3ikCr9_yl`JfA}m`41mGrqixHu2AK zfyZi18+iq%Hoe2&??+ybeVsmOmR2Bk%zs!Ke2`!^|A2Q{shH%2#5f>vG;P4F&cygG zJ}*>jxsB3(7lWse83~5xSV|=L=h-ND1BVRh7o66= z49^$-l!^9Qe-7bj6GWk;o_2`6Q{13Pn8*P_d5RN49KD9Fon|=-8`~6i=-*$vv*LXl z{SCa{@+_z+mG(OOwafD?Sw-!g^=V?l<^t?KzsXMg52fT);{Kp+0v8Br#?m6$QfTSl z@AjuJ=Kfl*W)Q~gigG&R>(((VwoCmpi_Dm8Y^T0@qt`xewn8*mrfF9qus=EHEMsrN zpBf)Q4AXe57UJNQ{vIeOeK}2d)@Ht$2@7-9UN?zb=>q8ZjHH>~#FI7xWOr{|M8a%* zoS4I2vVS+9d^qWDKjq0OTCTE^u^i^`o(=jywa_?oahXs`mlm15W(Cd0dNl;8z=d`@ zQb%b(@~I)6q6Jq%aN$2buvh1p7-NCr01H)1fEA@&J9+ju+CEaUa$dIuuR2ec@TqoJ ze0`+0t->!);znwAPCvqn9d8jQ2!2wsG+kI_l`5{f4(vC&&PN&qBr?Cu+Cr$bT0+{^4i$hO%RCvhA%^^V4QG(*m2a5cv#q z54-IDr2!_HNXRX%%B}%Mj5euNP$>XI2h2M?md0ssp1~TMkSeV}6R7>Wg`xuVa5~en z#yvkP7y|KAq*JAT1DZR4Tr-rfUiAd> zQu!>!?qMchl%(0keY)-@-T;xoc%6^tg;9SD)W{$f?qm?lWVt_B&Yn;^$7AsQ!q!z( zJiBT{LIvELbPcs*tjd9`F1cIwoFfRuHD>%nenmSvC__0u5`lQ*S0i|C~4JrQ;?dKs2XbRirOv|Nb1pVFucw&cw;s|rmDX0DWX}lja z0*4Ogg$Q%Keq)@Jhe*j`e|a-kvZP0JK(bHs%p9R_3~sRcs^y4NCtUd-W=Qw0MVhoT zXb#E0;a&Su&eGJK|?D~k&Z4#e`fofr>XMU}wci5@?&k>+{mKQAQJP>U>9op&v3=T0j&c({KTvZYgq}4et2YP&!%pWOa$`!58birqP4JA{S*Jz$o@-N3$JWM{ z{V_TiP*3ZdrJ@R1syh>)tGhLRpVx$$>U(s3&?0Khr0T=(Cb%6gHL-jem>U9d2+~u`^LB$nl_ctl9VbQmVy7Wc#)vg;Ou^;U<-(LHIy0y|$Rq-j*dQv>p-|Wq1pkX0G}52GYH3FV>g*QwgWVo9Ej0W*Tgk&H!#Nb9^^4*P7Y3x+#6-Cry!s{G+!; zzTubk7|r8_^q?!_zn4!o50jx!sDWHx^+K4$k|WWJHUyX<)m&nXI0=)|NxQQHy1Ivprd9|u_f1!#3tvegQQgmn)uf$EP^!i)@t%+rYb zZTourqdlQ@$Z_#lFdUixVh?>M`tS8sshus0q@VqdhK3O*FxDT zKCtXbAtbH$MH~n3Y~gGXw|4eC$CSFDdIx2aO>ZqVnKW_W7R}!oA>{sehXRpOKbtLL z&gr@ry%kf@c2*MEWdjjt@7toNrbw4pu<-A!&?(Y0`^!g0z$y*Ys4QxI?W$VyWU~+8 z?wl<<-0(@R`ezz|RmOk|?(lmF)}LS)B{)>s93GHzP1jW`*sZ_Xs=}qqMJ9>2Qq_Al ziQ@OPqqfEC3i3ElfnK**6S!3C{o!*UHn$uVSK5;P+`;k^K? z=zEX%z#j(v{^&yh=JFJk(U+Kz$1)YJ0v7_Pd$O3hY+Ri9X7jWdi8mex5SmKS^=AZK zL+6K{uyN9~k#F@H604{xidmVErlFN0jAN2vKt6t|sR!d*F0e&sZe#znhk-}LDQ9*_M97b^7lW6|vQNy?gV^?bqUILC}4&37BH#Y=a>x?!6*O?QiToE0?&5gcK$% z!ajB-LVyg`h&lH%!v`Fo{%N~aH@T(c8I=6@ucQJE8KzMbKL(ZjEyW26heGzGxDZo) zrI~}cdiHO=Mom;z(pQD{R9Q;NGkU@=LbK)%hEKzFZJxD7!%w>Chwo(8?9ESx^$%jt zwp+I0JM|CL-pP=`?8@s<#R<5|%mZS5DQviRoN2ijs$rkEf<^JRA^BCnLUYh$`*g4%{gY< zohsTP0ITL7q8gttCrU^e8Ic>VbW5X}oFjM=8o1ugitlX@;4zk@-b0AFy z6q*h^=5C7~D>+BJOacfTKCn9iGi=P}3@(O`tOlf1gS*2}N$Y5AAB*a1zvDqEP*^_KTGL3)B z2fQ1Gt#}y1uh{ZK59DdS5S(~Q*UgU;*R^FK{$?=lIMT#qtuR+%t^LLRvt}`&j@9h{ zib^PkM-nKN3_AQa6(d_Sj;@NIr4GLA*%UxMW!k;^zMYRcbBD^013_lE5}sia5dMka zVo6*F4w?RX$jV@(hDHK{=HCfj58{9JbPs+D-Bs^M(KeKo|P`Ew2uX;E| zEiIUGIdoGEmz3wl6Q1m?ST}Jr4Va|Fl6ijQ@lXiz&g{5W`HXk@y7TlA3i$re-FhwX zZf?>U^bzC}@vS}8Vq+uJD4Zn63~F^Uj%CDXDE$aegke?EE$W#AbJ`YJNsy%9mHLXj z*Z>%<108|Xy#?aM%)S*41K^k_DO$545|QSa!#6K+O!WQ&4LopIdIEumfu13C+hlS! zOf`f3b!G+{Y(U%*EX>%8)>)8PwXYDZ8WRk1-8dI!8`YjX8(i2C88`TXTY?h8!mp!KKH>6XY9EAtj7J=ymLbWq8p z>5I_T6$nsqg~P7v;8q)Bg@8NZd5Lz{qk*|hsoAT&VF~sqKr>@L1QYV`RB11DSQH<^ z_rUzQe6kz2Y9Frn3&2(TwD)|`HZoHJv`VTFM$w#z(+TCyeFjqyg0EfAXJ!1spD_Xwd@?FBzTROhmHM@G z?~!T{fk&6@cQs~}vecF$N40n_-6{Mai*W`n{S}L7rb?IaxGjP17wKY+aB78G>E#6H ztz_79L>d>lIS47MTR46NO}i-IpPQNFB$&0hvV~67Vg>4nqP&^4zfIqoo|9O(saL1y z3eAQz3;DxeqfG-#r}yQQ8l^^63ZKf1QHd^dCZ9j_}>2z z@ZsR_d9gS-9cJ`V@fAtD|8eLY?C9U^CBwZ*yc)A};z|5W_yTOZz3O5sYdOaUkOdNR51lI_I0?mZGF) z({Z9u4dY-!wBS{YDwRkoS*UWboU#&1B$x?oOfuU#f;Ivfe`K!rm{ zEESfu{cF=S%)D8lWGz>5BkctaB3!;#UW2MwtLz=+2?MVSIMiqhZFKC@{zZ~s9sRj4 zc`4jg8NwbD4j+^sUL<&kh8`VPt49r*!S~TmRIpFr&-{DoiC;sGTF|k9fI{3a{)KC? ztFW-YY;!M+NV?*%uT;iP`Br2!2LX&PbXo$KbLf77lppHjH$%ry;J5Ad~r<-Pd)yB%~esz&IVxqEXSrwLD=^S z1T5Fs5^^KpoUGGNeUF8RljU7YXO!+$zuL_nFdY^>DzCWkP~qdm!^jaREYBQ%{t;;f z+X_M2JfM>Yc$E+x$`VKW=TVc53*KkFgUJAEo{sCQLLb>$#4F7X&QdUs64LZdR>-vUX$nPrnN)lInlZPzJr*%g-5}lg~=EW+F+d@j$j;u~v!m^aYhh-SBFeytB ziZyG94kJQq7W?%g<4!n-8Cljn6tp0fF`6+4 zCh=(AK?8WmgNc?%rxZno3HodAL7f;O@JgvLQD`zHwd?<8S;ChlA$FUIoG~tJ#`Km0 zf_5q?bV&)*C=|R0Xv=jp$J*y57GpV)Z#6`(5aW80+$;!{Buo%y$?_fyGr;%DyUEP8 zA{Q)|^!cl4rpdDLi|3AdA(igjI~lTmp%Ugw8Ar1u;fWDm7VGyJ|Lm6%?_zYG)5qJd z79jie6ITTSSzXe+FPNdW?(8WMv^N6WMPoWSSGrjTrKGiAJ;XODN5jXk2u3eB}8{VPmeCn>x%z>)Y^Ws@KZQ0vaV> zItz&5UpRY3Hjm{C*7P}F9+GqQC-`)dy2vAir^K%y$eFs1u_D<)NW3rsM0ir7JZD zQbp4v;zTsZ_Xy`wdzI3{IU`2~;|x<29cG#Qs`AWLQcxE_vsdlG`!h4dJRefq*Ncg} z=!PmRZEZ@G;m2e5)EXq=L4sWd4RPRq^O>Y!JLO>>{>B^N^!S-1*{i$m54W?B7bBnv z7Oar)#`^{erVBlrt)#1Ou`ntt_>ze9JtK68m0*;%TCHSIHVrC~FJ+99@pKo(r}Ldf zS&9V@gr__!Xjk53oZRgBVcg!T2VmdP9|i>U-n9+t#o#B|s_Fe5!iOvVe#;ZFPtj%O zLUV%d>LWdK$}4pp(Q8b)ZpzW-n3`zy)zJA{OUi-oG&Y5@m2AW|fuPDh7;|hSIFDVv z1UXMhZSoqJIVC=cCebGXu_(BrdK0wxWV?M~9h}4 zuQ*EsjIMo%!q5dv2H+upI~5+m2V3$7eH@D7ce45cGXYUv8|cFjw`idPOQEcLdsOL+ z44Z7E0F>{6r;gXBOS_(%TSntK{(H;=3tbea#zM3A=i1EYdnM#%)6&rur%$}l5T{@p zCg8osdoh4cC-(D9wd;d_0?CnifV(!!H&R$}Hau$c>Y*p?zCzVzBX9tg6|Quxm-z5^B9tm@pj6piZ;fW}0=9Hk|)8N2Ls!IHFtM zzDAnu$OKLX7+~izF+Ja2FzZo=Y_rAz3VJM+KA6t}`BXV-(WR633h^iIyra%_`gQzx zS~neUgk+(`V4Ws=TMj|p$MSbUpyZ7GajBeE+dy#YW+m5#R*zOmpPX#0+pE zeW39DK|WuKpHRZxlvTdl)}p@A3iP^)F_30KxIG1BZThbr=6A^oxV1ffFSEq&XkB0p zs8-h@@1xxU1k?OlYNE9kx7#xKndIpmul!E_=KS#m=k#Liiz4l&-_IY*79sobCuByv zw$?*>m>v2)F)P2Kx5BtNmFxzN2vnNCO?JhdRv(wWi;n$$(!V;}-C;D%_>|FgIo2k- zC0>H^PG8)bTIH;^Cv-2$ud97vR}WyV$p@?S0@eV>>Cg{f3p|dv4w8J|dj#*gIxl05 znvS|%zLT3HTy}sza9RFndB03I9}6X+BH@ZCx(_IkLIe3$h9bcO`EX~ zvP{H~5ciE{I&u+)M2gqWK&}ON>%~Qgj^>%bn=rW@DRmVWSLNnLgCnzxM}U!;JZb2O@$O_nM8yeF<`vV|E&r`K^p0>x{H$8;5@g_BEB2boIx5`9iCX5!)zrIM8gAn-$?)s-zPkU{1i;>Tp00nXTZR(iK+lG2F+eo8B z2C_eFi~{?D&pYmfJTd;VV&mhwEV}%Dak#tO+`0ikYiVwwzO-8AR(eaUT;Hd{D8+o% zAN29OfSK)u@#rmU$WZi_Pn+c;FBp0kLWeD_ky$xFsMF6enD6O(=Rl&+s2qETzeqfU z!yAD6F{WsIb)_hw(Q8X3QL7@J{Ms+HCx54s%I7(BndusO8#28Ev9HUI-B7`dR%RA) zTCA3fW0MfV#3{&9!JMv2Q-JE6%b-!6Hsuqu`Ibz#H@7C8AzI0pPcQ&kz}s1l%3dZ^ z%p}1Lq0txSAW`h^uvF6Q>&W_<6L_!ExN~Ax0*<3XJwsn+t2za2nZXuXcfucFh9pOg zeW*>#Lg!IZlUl1M9KutV=F*M~E9j;uV2d}IhoE#Dedk}qw<&PhZZ?PEc`D5ULFTuG ztQzsiz#J`sV~M}FDRt(reo4ep|UWwsz8iJF*u42e=i?Y{! z5LuK`htA&D z%8|JpcnFxn^J8vyU3iu;Y%2lB(7pax!~=1PuU-lEzMX*SQ2tZGii+N4c->@uCE{OgMR&=cYvRzvRTL2gi6d>nux z(n6?Y zi4P*LPW-h4jHXs$TJIC9EKJ8vm72~0cH_3wrJCz$U9JL|;}_00shyX+)yH3SHlI^| zk@LQ+Hk?g{DWfd0KM}TrSsX7<`GpOS{xVLHHGqEJXBw?iz)%tUKiz-QzFK&Yh}UOG%|5Dld0cQwt!G(LumV*MedpR&BVb(d@(5R1V9HV8fx zsvYtZ&xNw~r(InQP_iG!*L*(0L{dqA~H=$ z+q+BnI^LxjDF~fs8k?~9Fic*@k5N?};eWjpx~=fq%={WSAh<^L0$O!@9j6DWy_K5D z%q&zt6%*sxz;^6>CvJ-dc|TUHtGPKsQRuqv4sJ~s#324M;W^wv1hkl~rs+gR_C%@` zcHGcT#K7IxrE^VXR>hsqy+QKC|EZ$F<(ooexVyiV{!qex5s)Ge6^D?g;aI^lsb zFpJxm#=accoN>)GV#T>igxh3oJ`L?v5I1_N#RE!_O~yOx+@_}- zLA9_-H>OV^{YEg4G-&HsG-UCd+u@d-^U71Pt)T`;|8tMAsvu=Klji((p2KNByh~yb zxBjeZf?!Ju7lO1}T1zXpbY-;dL^V8qa|?vDtz3jacDBLs>-W1Sw$LHTlHA{LR=KQsk>wr|1jqavveWe=VS=FX2n~A_8NsWX?ez4B|8x3{0he zsemd#S2F$mKE}evizb7V?+S%Yo$%d2R+*IQ$TviS> zidQ83l8d`sq4a(3f&Vou@3}7RvDu7A?o#IC?U8Nmtc93B5i1;<428aKC%TvQ%C~BN zy#D@#{(Sjy>nY2<7ZC>a%S}EZbTF9I%d^oMvD;*@&E=W)Ed5yn{My9bF>?bwKgk5C z6JOf+1WK;slL~7^07*_Gi@tQNHcBX^R${SBg#~2tCw} z5|324*GQa)^bNk!i>qhMOWd_UP{TL(7@@OLOYFWZ7EEt%q%}YQv#K4sNl2s2c4iUf z*1?ixj#10tt2<3?k~6ywGpZoAd7!jrVhvvGu3>;}X*$&HusZjn%aK7@l-+0flt_fF z6mn3V%n;Vw1xerbxT*tJTT&;hO=%7hI^`EkxwQEjaNc^vHTlRfl;4{p!OZm8yx?FW z>4hIx+1(MGe4-y^aL2nTV50tv+i;ca>YFLO&N44+ z{xz*!7t5WwCD()`S~xFnRfELN=tnS?WH({|6hG*BU*YGR4zS6%u60@Gxo5lDXt2>! zxxaTs$odrgn%whx61VyjKTX$ZFAz@CYL+y8csHq$(9lTTVt+b6jj20WNyjY>PrXjT z*vUffcZ!>I1K+n35d99-F65WS?WSP6QNc zV_#D7UB2780D(Rev08xVuN|GavK9%Hm}3?bcN!D!n~vW%bxV1|<@2%sZg$lKeqWT2 zeShoEN3h{G4Dul+_(iGCRcs|hQ9e7R{bE^NXfiEBc07Uo1=seTE7oj#K|{drk@qyy zAa>KZm_okq!KC?Hlu9<5SxL~O1$NCm~29JGm~zV9I)GXrIw5rZmtYfFwml?>=POr`AM*5n3=`*IA#*fhF0 zBtA-pluQV~ofvScm<4(19cVqe5cT(8X+l+A=Uk%1NokYe0T-eh;YpU zm?IlbUigJ9i9Z!Ke0d{`AAb?^k{_*zBXLyMs+m$BIpcrlE}vhxduhyILor}^<_XaC z+G5%UDfTa!$6Gr5vN};78F%?+L`Qg#FlnV)}Fl5W!g&WDzcF|$QWMr zHO}w5n`&N5H8b|_+N}wr?zB!q1hjg5QCsx%9pX^YeN>-Ii{gLGk&8dTD3p^z#qkG< zj_RQaciOj$A82>zF&We&qXtX~(Z8bP6FbYiR%6Pb^Q1c3a6P{{F6&fAdvNPiGtevh zJZeC-IExRF1Or=I+rSODuC zrIHY`0U=c)^5Mp0tm{S?Z@kAHC9w9|m>jdmDY0GTRC?ltf5g}=I^fVRu(_xf#3&f% zmU(|(Gh76r$;pOzHM9PCB^*A7+~}e}OGWmW^Y;m*go+u_+K-Hl9zpeqzOO ze!ookFlu1=iZtO^P^Fw3K82a0MKV(?44~XXW?St)+t!S#y#IOk=XJa-JFW>1*fvOx zJ_%2jX@nagV&?<@DXo{vX4xd-kpFgh+J%s;+}g@IaZ)==dr3QWOla=M2M%o!e%rtMas=ASR$7}mkOlB0wSo18D z1&Jm2LgBTeY~|nKRFUrxV#JwW#rI@M*+`Tjh$^q4*~X4pAVAa-AR#t_t=%&SELWF;d^n~5&IJ(kInL>{*3b!%vgRG5(s9GfOQ zZ8njNbt=Y=_LR`P^=_J|NBWETvXz-Uuc4?G!#T*p_l@P5EN}JKGH&h>TUP6Znb*wnM#JOG#b9T6 zu~zg_R{>Yob59RCXzcjUMBF;X@OHBd4rq?R(L&I>9wUw#H3cbeR%zc(>cTqqlTao>s%RIXvU-oNsaIqx?9b z`APPydR#D(-AAL-B6g?t`$3n_nU)w3T?4i0@;00{GQHC7KY~?0CC`~MTH9npDcTQC zfLKw5q23jXp_SXvxBolS;zWPA*d??5p8tN#$#u`MJW*T@J1QHS8yhhj>y`}{VY-V^KZ*%kw-c9*|BbyZ$MGZwNsMxTubrqD8T8O=P(1qI5?Dn zBWPVTFzoqaKNky0J)?T4)Q5_{(gWI3V?3;xrr@>Oa$GZaz|k%wNuBF|!?DLOi|07rnrmD|%_~J6Z>e#w%U7d;)Y8 z^K&m-huYi~--233ceeRxl?^v9o0nOlqyz5v>+~@vO|0-Hmkw|>o$`B?e2z1{^Yx|D z#@M<}IAtBvhwe#I)47Ig5&u*{09h9K)EJoy;d640w~vO$48c>A2>2wDOl_-$wc>9MxTD8(fwzrbx6FUySsRTQExc3MzIPQy5T6J89g{^eNuou&oHu z^6kSP`eI^xHqG!N`{Z5-3O0?*Ts;{}cEOagCND9u*O-u?0!;uz=k&-oA1#9cXzk;r z=`I8jYPB(H8`*+hI4*JBc8g)jI>PD95=C^C2$L@l;qBMn5V^D{2hrM3JF(IyoXhcS zA|4vJdq*=;7qttVJT{;(1@Cw4*W%3J(8#xQ8L%~1dJCH@xVEM$+wtT}PPG<;a zJ>OvN%%{D9dGAw7yNX#}#1(b;_;}!}v1p)Nbi1RnVTwU#g)i2{M+3~$h!DYVO;`9( zI|Y*gJ&mH50$3Hi$K9|)h?R6?~s*U!uSqqNFwY)3l;B71LWJLeBlJ>0pRB&XV3nyDrJMLI9`k|ZDx z>P-1*dXl2~l*xpJXVO{uXr#s&S)rj*b_F+sMLR9|C583(kma>Y%UP5E12sU(zi@)% zIC`IIRZgV!cwAHVqv;{3dKhwn{mu*COEO+}m6BJ=pBZOpLNmm1?8Z78HxC)IT0?jE_b z0=mfQq9+865@ENqU@OfI|0VjPsk>2{Ugd>cOm-fQT~{XNVkty-)PiUY4YbG%Es$Y= zE^3fYbV-!%q{LU0u_~z;i=-9e&br)Dda(}lT8tj+l&6w)Ng0Nr&~~}9u%$?Dc#9>5 z3jz-{mdJQ4*^FigI^lQ zi_C5kW&AEG_ekmEZp1>7iwPQpT+ps;Dw=g=S>>?n(ROwtK)zCG$e`VH#uC{Ez}GW0 zE7ZnbnG~ClOo#^1F{1A%$uJS}Sf*qWx_G*kWolr;i(H+;%68iwW|n!W*q9~aNCVFI&NXROfdA&gqEJSb83&dpA8IWw#A-$l} z5uZV+m1;!+84YG^5wY0-H41``NC5-ykp-Sdgtw5EHc=F8xIrgaL4}W3F8TP0`-np9B9inrf(^V;l;~7p(6qMJ^v)x=u` z4~(UODk#{Y0zHh78{n=6S#=gj~nqq=Ny4;kJ6A33_Ca z1e=~GqG%F{1x9ko-4a4J=z$w5)#)TY}AWFNECf~*vx1i>}aat z1t(9SHpyvoVX@X>(1k_GEE+HjIuCtq;1wM*+l@rDi@c!oU{YrdB0a#3Wao7rqQ?Nm z00Dq2*vuwqfkLc0LNKpuvKfN14O4Sy2q0c62MTdRX)6OLq;whvbpVsU|2sw&6i^AU137XEerA&~I!o9vj+1*3NTq)!($#bRlZtbe#dz zOE4Wo<=?X67FLhI3`s7d0XAhsivY{(f&HFB}j! zChO^vDyHJ7(k}bfQbM>vu2&UiA#Q|IRE2&-N#L6JUpCgMO3}-V!*Pli{QgO~_Ki)DwRNy2PO?e+`|N4pD1A11ShHGV`rauqb5Lz^TG{F7o!WCn%$AQ zJByY{J~1sMn0%gEU;5H?@v+5AZxFWMSr>6PH=)feQo|>0Bln71g?G6iH;cQhWN`#Y zVL#8vHXy}DjiY2x*?3AhEL#?_A?^&PX|rqlOsu3wUsAxLd=@uz3D5Xm^~Ia~Bw$pe z_PDjiYpN$f--+7BxbKj!IMa8+7mw8)^7&q^Z5*G9>^}F<@}1W&Ke2rE>Xo~8u6T9D zI6un8q4WT$H+gHU@pefug1ag1`%$g;pb!5E9KPCvz8EB`tsk4H_{O`-4=z9VN6UBK zuyXZkD0!^6WG6Du>|=8pTyWIL2{lVdKPaVLb4q?B<==ShbOE-@ySHI9<>aFX&6qo| z`EcVcPow-}Z@?b9=hqpZ^(30|%-!9GH~01Ue+=}-Qdo1XOh-LPt)?@m%WBf`C5e@0 zdJF_nEG>s*r|^&VIh#-CH_vHD|HzfiQ$@Ww^=eUg}m67*H@)BV@=*8SRZZo%&+shpowV5v<#$#lA97E16rKQer_9PQ- zWpa)U>>DiXx|d6F2kVWzAZIgw0|Zf14|%A!7Mu>=ZXR?v|IxnjsEF=P1P z&eB?m#ymrpqtiYj`159)Y$-0jQpW>MykYsC`|en|#wcxAw&&pT*?RM?U1t64*dk3wncZPS1ev} zL;v0B74>HQf(3eW{fhM6{WC6)owFi!_oB9Gi0?(W>7<-36n5-y+LN3SrjO!`?gc-7o(jU^;`oN;ga;r3}fzM zN+)Dl%b{O=KwNxa_@8`U^Rc@u zeq@huqi`d$r0ghLrqHZkl!V+%nh%IEn^IMN=eYF3jgM}>{o>(&T>biEk6w$Ln1@Z9orotzLEw6t-cEj2zW-o}+yu zgUQ9Q@2`yN#>>ev%WJ$I=Xkv}H^tKE2X#1-&pQn29}R6*?N%-i!%bkg)qIt9ZNBnt zPd5A>Uz~m1CvTZ%Ks5$OSvmeRr&(LTT-6PaGR$HH_SH}IPriY(+p?>^y5aj;vofl|M;1z}y&ygN1vZ&$}ukJgGM>v~sDt@Gt{?S@&6c7)SMR$psch;xsH z?a39X<|*!)+Kw5?>C5LOmbYYUI@ND#V`i}{8W4Tk=Wg5k3B)J1_g-Z%S_IPyOCr5`*EO?e_4fX3&ZdsY+vs7b(cKoAzhuFZ z8?IS;V7gUD>BdW}eyb3g+T1;3L9TDn)Yhd9I6wOBx?E`Lg=?S9?^aCV=#m>c?X^Ht zKG42)M#t&}vu1TWT6~@nE|$J(V|H4orOobi$89E^#e8|2KN^{W8x}@&(<5Q0tJd4u zHG9Q^x+=ctMfBE5iMDFSWLcjQS;_4bwE=NC-AYw&wH~)XqU~MZNvoSM;~c?3f-1wzT&3?^yB(TJ%Cq_|&cCxv_Jcp(4jI-Y)+=++&*6h3dY` zdiH9{15xR=X*=%j6LRDsEP>3yAKnIMq=nu}l@|#jf@zIilJkRp}EJO1`)(p*Sf9XCJ z>EECZvwWT3DXuStV1LQMcn{k5KPmoi<2>A=s#|tyPnnW<71b8mVd0}8O(=pr0Rhtp zKR{%<2{o$3OiUz46{gi6qWq&~{kQdkCL)jeb&4fuiV;ebQc5;QVy2))(E;I(c)enN zN$IH_jCy&XWHgz249FtnHy6LiynJDpv$`#Mf)JILpg)9&-r}}WyP&#^tF^WP3h@>+ zCHzqwW?{va0o{lwX;0O3n4up+b!fFqh|*UiHI$NmgDzdtA9WMaO>G{~+Z~bK#QpfH zEi)ATRLAD7>tEcoo0lx|>#zxna`OK&_a5+Z6nFpd&g|~(^|E{Yr0YfX zWa)Hw>N-nuk*h5CCJR?tHdt<$W^>r4*mMJ?V?iKP2SVqG^W>61LP94HLIR0+LU;(F zC3y&7=~nN|>@^kJv3bSK@7{ahq0g5#`*tsP z)wJzc+*vL5Oy9B+T=dsBBr8z9Y;y|a{%q-ZiCimFI5PO2ws5{NF}UgS#TG?{X>-$4 zf0=&a)BSx(G*?a>t7~*z4(?*m-LuTnvzGm ztLg(y^X3Md&hKw4X=o^MRaCetYrwh5WCHyM$uW+dEps}BU`Iu`!>5D5#TDzEW*0Ox z&0oB=wt2~lfmaiWgG*OmNEh2GYSfY9Ws&k}6;8FQxo>Lqg4*)Riqc@XGu$*kA|~*& z2jMtjo1xsOzUHBEXbM_)^df1H!T=d~US&v>B34ku0uqjqL{tsTQh{CT2)T zrg60iQng_|0MdY*5JXH^l=MX-(FpugV&#g&l$qiu#}59bKCpb&0bp>uOkwklFU@S7 z`RO{Xy3MlvFY3Q z(p%nsd-GdwZH6EEr?qz_=dDTWvX_UhuLMBh`gjo+q=_hyGIJZoL zb+2V}_Z{6gw@li=vi_sPNjx?&$)leH?cWlu42OY>lf58ys4HL;hd#RMx{Kz`yXZP; zBbGr5-yo7-I+5ok3T7}37_+$#7G319D8pDLIG<(@-Jc%h0hVP zoXts?U<&dq0Tx;SOprWF@4}%z*~|ws?;RV*Q%q425Ah)lV9v>j@(1b<>7>A(ole4D ziJm(r6EMl)L5<*MdWVw&^GYG#36^0~jD&IL7+9|AM$%hz^_SFBP_EpLulkO&iNE}yDgDL&+FIcMQq zHZ^q(-7xYIi2|@!2miIMtg5=Ys_eo)hQN~f*G0tP1Xoq;=Xrl|6_@zTT6RP0yuKdt z%^yQ!{#FuWSf0VrFiS4Y*z1y5J%Z8*W$^I&D&R5sNH`~0Ej|s_fK7{F_xerWU(Z}C zKC@s+>td5idwIfZ-;WP3SaA5qeQTebeyG5Dv40B?Zny&!y-F8}FNz<&dcpMvl{Wcd z1yru-Lzlmf?wZkdxWKw`$%btgyo&NzGHR0jjr|?Qw(^Vt$HjrLP8kj?W;4fH7!r2P zS~5*2EW-!|Y(~GPWk_fX8^Rd7S*m_tF(7UwIC_@+N zl|gia%B)ZjZK4J}O65Qgm7|B7AbJgY*ThRvt|qy3-zZg%$`Z-#RtFul31N#!( z0X_zIFv%-FJv8vrteW1H3tG1ZW%4UO1^lPK%maj(43pr4{Q!g>&ftSdm<&cVwyiHL zMXn6BLHrd?gVq2}kJEreWO}*ys`#%v`+Lvwd5bEd^Jd=)ly}~lz6;|soHzrD1KaSO z&>OB{l6{YF?7pS0Zjn)NDYbo%zx?>ehdw<6q{HwxXGU|l@VqxDFgh|y(U+q!%p=*V zB_mB-U?l@iCTIYS5_A9u-0bF6=?^u~ROi?UKn%!a#^oc-FvXGhhmOIr2C< zdCTj!1Z#uy*3a{_&>lgfQdci)=s2&OGchUyuVPGG`JOBGkX_zDcF*f*SXQl8X#`M7 zje^Dhc@@wM-RA*ms;r_6yGK8tKGAo}Eqz#oshKyg26m`|8bKKj&uUWoWd?)HuWXuC zm=1@Pf`*090K*ksH~jf9gm12ea4i-}nVjuOPFaxz6-Uc9k7RH1Oi(C!a`EELW64*D zg@Z*px%f7u@&>885(cGAIy@I7vAF{b0(TCRHhng_esP+7 z^Fhg!fz3}E9hwh%b8;o&meW%u)GD&3Bq8jQeH904W}-ig5*v3UCJ{Cpu@_(tg9ERg zNe~(Na@jxZa~~y32MC7*yRfwu=c{Jj?7?Z!BzV6}e zQ>Si!n2i4t#;u*i>JU|a-hL+WRT7sHeF6SuFdq~z!KP_W4hkBzTKuU(0TP6gvKNys z5;V(`g9J^uS3;``tiBf=`EGQ*WzvrMQvsi@a8`%hocZQrpvXW)( zeVB-lJ&o<1rFiWSdGHV>z3j!Lmur+TYmvX|Tx^lQ1JI2#*7P4O-G4vq)$*X1*un-0 z)8-&5)*AI@8ey|`2J7O42abuCBx=d`%qn3%^9aqgC|Fmk@ikqr98Df5V5gKFV! zWkF_7lgB|VE(y9`t=94)sbkP9h@YJzlT;xOJ4Y>}dh=E)7K}PIc9m3A&X#kM5&?mvMT@#kWg!F*h&i z#nJM|U}W5WOpKDDG9{)l(j(BfbjPH41)?{Tz8(%&Hc4lQBvF$K?U+$7!BpS-UeGR6 z8k&4KG{ECJ0purK9-Q_y8I&@6@V$HSq52u9c4)~lBhj+fB{kf$wno zkrc;^=MW9&5gzUMoe=YoUH3cVL2~d))7lnPH5pD($@Yv_vjNF}jLpNaqqS2c=Ps7P zYL8^S#>7E_9?1-jP)W&63{nSICD1`8iNWa(uA)(T7|C0bci7NKYSlrOI*95tA4?Y* z7fJWsqvzOP62X~4KI*HV~K;SFsde2!W^Tg3=W9NbPBznQJ^;E#`OhOA=$>I7#{)61`^ipLc*M28t;g}89bPK6=Y_30~iBk6O6Ls zET!Wur|b#r3zG3pNS5>#9R%ko)#5MJU>$J*p)j~{7T!k7!=Y@d@F=fk4i@#63@7nZ zWW-aUL%gC`4eHe=d4|H`z)6bk%^KFUgLw<+D3wp+i1Qpy{zQA*qts8R*Qh^HUmyue z2V9^MG*9Hmj*i=B$L$9u;ln=N`N03r?myG@GJ)Cssxn7=wFrsZ+LseF30 zAWfg*_~`$|>)|PmkIgg2X~ktDAY4=-%luHTr2m{)@PcFMe@=4npZ^Ch6#seJoSnP@ zgPRUX0$hR1G}b_#rq4V>{ek-G|9&s|-?Y-4?@B>?wSg?JfiF7NBdZxiOcQbRBc9v} z=Ko0R{;sWW6t9HQIEd3yDiRfQ?{ zHES|3SYwRXL1MvOf8H@g%q(ZWKnxu$nNm@)2>4!-Trv~%Vq8l9qgOiu$^V15ESsW9BKaVXH zG7aE-k_cW-MA?vW9w}+9YZg+1A?-OBY8VDpX!v$*xFyTi3&^k=3aD%}icgiidCarR`9Rh=H z1zrgz+zmb&%Xx{6kB$trLSmi3Vy?*(jg$He#XWHk5|c2l_v|QxCWd74*arzW7;@7o zcLK+xj8f6rVj`7FeQ*q5LvG4FGBk#p6*H{lX<5hlhDtCh1Z!~u3K8*j6sbHvF3d8t z7FwZGlI;ppZDeg&ct8-brv&{U9zt&*4+U?cd`)&3&Xw{? z_6~tVnH-0elOM+UnoC{HM3{wR>T4_y1wYwACUT}yk2(C=gskHCgL5Z6OiB4Vj`Fp$ zu)fA|S@4q`MEN>paVI$pk5Bx#=n9;%Ne<(&2(>S`lYB>x>#w=ISx+hW>2w z$|B<%Y8!B2?wQ}Y5uEC4lV{Ea8YV(7l%Dx-d_ZvaslEw*W+i&&&U`+M@1 z9a@qbt0ZjJLNp`EmTz?CR^+uUAX+enU{&L{L`0A!h;2VT~43OKuO7Pz?+*U zGQ|k-pPq}|^a2Z-HFylsHgyH_E_($&AUYD&kH@yLmIfavz`nzI#UfxvW{j{kwP*x1 zM!;as5wLA|P|z^s^}{Kw2pyE*tp@1GRB#akupH^CKkzK z|5R^>qzW3rc&Y^OIsuNNMv+uUkusv+6t03nFlA1yNJ-j<+Bs_^d?``|lD?mw>vp?G z$OR1kEu4Q;C_faHVZ?0#l5sM}CVgX${PxI^3G}zjU;#Pqk0-;!$js>;!ZMUEPYY}W zSwiI;-B}^6(Bv1;)IgV*>>9u(elnXS`j6I?40R3A$y1zw34C~<3#PDZ0GaxZ_9Nj} zx_px3)TH^=!h&TElJ&?uT}X#?`U_}kLdFKVKoaNs6epNeIx#-SfaLfT$0>qmn;1cR?0(oR8P~5Q8zxOC z3HoP`H1!T2Q{BKEGmkjCYYw!bS&!+#5Z|zBc zPdX`uZHPOhI}eWa8Bs~TrrB018;{(Q@&7DnjAM9mfsw|r6B!^??3%}xkM+MY86s{0 zjgA-7IyI-(>kKUGYgxPf*4x)&a$J!T@EQ_zc=)S(qG0g*;-5LMU12cl6h2u;e8b@G z#W9x}$2F77@DE0k70-n`aLaII3io`-EzY{Hy+%4@0N(;3eeZJsH0=i*q@8ed%&bp znI1TA*@4-WT5aX*13>=TMRNz5d>;VWq>i}8pv z4XBFi*!r;eZuyb+;Z!c)Xl0j*tuX80YG1iayveHfRk*+w^OJ-5qC5;5qtm|E(jeXx zot7`ms=?~8n;PTKYov-OKUGWEjED&}NFZ69XiSQ?04Ep^en{!V(5;1fCqyGZUr2_2 zPT<$#uLE+c-Bu;HUH-u3Hu;nqtEiNGX=Y2lG_yB8{FylN*~1&r7BHVZ{Ly$q_gBup z@y7Gf1JGl-)~)NZTlH1owSMVt()C4r+s6E3&~QDj-%egOGl4sl?ETo|0(X~xqik|( z&6G^3s%&ey-3NRJx$h| zFliTq|6WNXqab+d-^zSO&O;k%mTCWP8WLulf0tiR`Me>YOoGYq)X)iDo8q-eEiXld zWRozFDNJS~zV%k>$a_apZ;5Y#inr+GTOc*z9-Q1nij(p1dP`g;zLiXZ3h)5HZ0Wk3 zUIdTDJ|vUjxf1)sZ=v>32Z-kNd(;!eijT^Kh67ZNctJW;kVe;_?}pN-6oFG;bH?MR zO0$J&LoOY~`vPG>8*dZP_v+FAq<%<`{%7_WN7-rZxCl7oFoK40gN*nW~_tR2tw>=%H$9>;>7JW8&!t}_vC|zx?9&j z&~yBwuTI3zS{IKORn(t1e73Kc*t?2-sBN(+pOX9i&C8}2C8iHFY!ts*qvQ2@x68Nm z>U%o}el`${TyVmyaJgLIZ?JEryE=Yx`oZnGfX$&b)7yOwhG8wSzx~6|fQ{O_(`<-m znO#1u$62(jK_M3c@FSnmRNfqHi3kmis5(rfP!i{@|fX&yB;6{IBW?T2uNB&-H@GUXY*r<85Nyv%4yXWD2@SX5|E#ieczK zHbfP&69&lrc%}ULGVuBTt|GB+3CSfyf8du`Kga10%*OFCy0CLHg@Tf)l2XxeYh(-CL(N0J$Apci)Wpn&ENRi6@JGdYs6rqu-7m zmtD>dQA(-=m7x;VJ#DbCbVvaNf^!=n{7RTzDTc|FkOVHUPQcs)fOton^H?KjX;Oo) z#G96|W{bfhwu-H2V`i6#H@f*s@UIVy#YLtMz`rVa*nYBB*#z1~nq3cob!{Lj-X*F% z0rjV!sskR(%jAx8n3kzjtncLF1fw`Tnq&_UA7d&H>hJMlP&^>vgRtkPlZFyjX?CPj zW}lKbvXn;e;B_4HynB)X)X%>$Z%jOV`CUt~CKmk0G1u$pk^JIJ} zq=jyt>^hEGAJ*d$rZGvTohiN$O* za{yq!sqBCFEZN*rTLFhUE>AA3s70&M+KS93wmv>}PFcu6cCF+V=2^0tNq&24m)pb- zE)JHLv`n+xme=BiJ32(y=F_6i?lRZ{Wli%l2eW)MSeK`z>{O7NO0A|gQ@fEQlKILR z)uY*Hk(^?QlS{BbU}SSa3L%U@hDHVK{U67~E`ZA+3RwUbB;JUvnMeet;1QtU(JaYjag*r_U~qIhZYU}eKj(cW(6uOi^B3Y5 z8PFlXqhsP@8C)SS&jhb2cue{q(xbu6qm;^;dm&JaQlu>avWXM~Ef10F2hYP`LSVkh z$BUmkfCNDVgfC3!RZCzG5BLl$k@)$SCX}Tm=aL)5ADT8x6jfBgBkvpYGHLzVgF4Cx z(QP(KzMW&N-*`mR79J(e?imPeGM|Dt@4*hNDJzm_tmFqYxk584LZxxEr!(!J*I2W< zd1|?DriNE*?$xmJK`^E3p8egxn!UjaXU2LOn;d4#BAdY#5Gohm;Bz!ol_iR8EA;Zc zN~Z=WTl#L!uD2oX(@xCWRfrHGQ37WtGZXH&^!OPrDd~ZO_Cz8}yNwb_i4#WxY|Fue zfMmuvmQDqkjl{Sl1qegxEcD~bai5HPi9kzh>JS~w#JU$g-dO}fcsB%!Kmc231He6m zPvRd&mL?a{1UL?lS`;g?TPQEqcLhv7jDq09&`O?YM4)|94*`aV#9E=p(@(_n& zCi{g#5|a*z)rmyuOTIZ~mD99Bsk>bilP^4X2pF$~CUk_B+pYp&@3Sw%PtqdI)XrNm zuePx?64shG+XD+XpL0d^>}7M}^vCz#KT@Vpn~c_z_X8i$Kky+FRHzl|vJW2+zY>23 z?|;=%#3%aOTf;4$V0B34SQRLqx@TQoPh&%Qlc!5+Z!Gp7qxYjSP5&-sVozNr`a72C z)3nIYW6RXF^_(lFty@2fIYW`&ebrG3CYGpeb9+NasEf?0BWS&Kkd<)wr~vj`H)GWc zX#qhpcVTU55_F|0@iEy~I+blC8Ei;X!B#y=(BUDAH7i}4|m2`aX zk@2%H7tid&?vk9z%W0v6ik*we#$-a7Sb-|w4SAymj2(i7TO6vJ4df3{-x#$&x_ZGDd9cS3pgo+F}>zFVne-XvS`g7gh14sN^;&flCEo_rF9m~9%MwD( z97a2n5EFZP{+4QAcWBqXs9s&9)<^g4I<&4`a&mzQm>j;gb=I@=V`*y1g9k3^?zD3< z8E5b8zUaV%OQeA?BO_5c+zcNc4=o;pCos-Y_vsu{e5&F!M>jbI5oxOnl0RkgPW+ z?^7Pgz+K{idyi?XGi^MI1L`x~8popLoT5GGWPrfvK*^h&{=QnSW@s^?(vDKwu9qge zz3beK12dY9jG;uYu^7~>P&ajRovr6!j~0ZrDv+WXbQddq^IkEfS8$*g@~VxN$99g8 zsfl*?Kj_?6)i}!|_i^ePtI|Dt>NLKr0+-6;Qt_}Ca0=WetfOw3WQ(jUV7E15iItXd ztb}ZYmKV7c&VM}S#|EcCBAf#2&5tkGVT4*S$tl#Tgoa%#{Fz2KA6q4=(KO zIsp~|R%>J=DHSBY6>oZ?t5>{KuN-0&_@fztZ81fB8A6+BlxQ{-P));{H z2(b`qENJUNf3%0-e#_ptSA6_&O_8JS!I#CyUl#uh|K7@sZ1`bgQyCmivvi`)?HQRt zKZpOoj0K&YKN;)$f(INb5RcWORaF+lUq&KO3e7w8)f)vtd<8@VVIy9}H3$Oug-{DG z8>h*<8lMFbbX~20?`V)NhVPsbcV2owdUYrR)NfH_K=BLT4_`sAlOBg23nJnxBqQ|n z@$bjE!da8D`3kxY-*Kk*gLo_(;UZB3D8{{?xw@bY*bl^ijl7qhJ_D2%gYScnI)-O9FwX^tXQJWl zCGjhu0_$(M`);rhl>Q`BS9(t3GFe>ESEX^N3dm3`g(l$hI)SBNsa&w=G)1zOZ9@x) zXF+`Flr$=BG|Cx`a`hf@yI3o3-?LhwW#mRQV)mNla^3p&uWpir>xSt^-#R+ILE5?L ztM>Iex!eqTwLJ3?8Jk81#X++iDpp^6|NYmlRzT^bQP8hnxz`9UC(`=&yt}7k56J1e zz274T(&roZu3WDdjJ(wUiQM3uz(0n4I8md?EOeq08!+R}6P~#w|P3fu3->K{%60|QcXX2f}St3#T6P5oXXE21o zPb4Vcvp~xS_H0Kc0oS;%S4Q4T7KEv-3!7fkL+Y(s=Q0ub3F2*bdS z*)7O%Gs8UXjVw?q$x-eN@!pp;yi!5GGTuir zZ?|)dV+J8ZIUy|~Yl#W$5szcHDwoIY*6R(r35){ioB3HhNC>qW!X%jcB3Jlzv`(9&CpFXh6oCEa{_Y-0tUN z^pzvK16u<7>IMeu_67pVu-gFJ{k_5k^`Jrz5~&j2UVhTM}OxX?Sm10V(8q_EhEG1}1?w;iq(Q`r4 z6%4?nDy20FV`Tw>Q_u#GA$ihG^ozUkmfE^r@TS%vzHiWI4Zvp*hoM^> zN)OS=RYgU&6m=D?f`elK!ydV%wzm%ahX&uG)!Z;C^(cNMzhmZG9ny{GE; zHtbWI@wMb+t}K&M97qa;Nj!vlYeM6ieJ?2=3a!ZBCyt5I z)o{(YDLK#Kgi)?4GZ-CGr$N;)exw**OU(JaMNA28f|#=Kh7y=8xh3Ppp;c$SI%jZkG$2fwH8^6ZoNg6IPgT$HhWGG1|OANdP%@S<_NLY5CI#1wxKA+D8 zQVxfhaEZVF?s+1<$&$@CW&vl+QvyHVC%x+rh4#;Jjr;C`sx;ubO@B(0k(k^;zgn0l zB7f5VLV4;%Ba+1|(*Z5#^HQOlNF9vlk}--fgd?Gwm`GU+{2>Y9D5Elql*Ec=f-A+e zVgn=nx{p??SVkjQ9q0oHpNRLguE7=52I+R3skQCktf7soR0EKbTRLD6`Ax5tI??ca!hT)^ffY;Wf=(A_XW*% zjZi;@*Y42rZvx7K-mf`^O|pPyXc{I5)N1Vxd!R$D)(xn1yARO}x)DH@<1*`UdIZ%+ zYu=M~tR`PVcEQF!9I}OZ$RyV1Y^bmytI459P?dLRc|mj58eGyfU;pH}qiBh+Nukjw z*|Ofs#eJZf1dqK2?&7ugpbvSics;)IC~9IC3z`F3{!b78aj)E_yjTUGf-Um*%z1~` z9?%HlrB6v<&wvVyQuLc>{jgTzcF&2J*mJQJgFRWMNYKSt-%5wVa%`N->6$Pvc%~Q` zmQ4&NM8EmVW4!iqjnH;sSBH%?=r(bBodRy(9|$bC&>85ejfE=bRkf9dZHDLX6f~D> z`T8yGO}xyYULe~K}It~Wj{Uayq+?>j5i+90a{7(zGBOg4tqt& z;S+eHr7GAmby?<{VIJj{tPHLNoH@gy9HK%whv9fmfC*;h@ND>ZIWSwWb!I=WeZcb8 zL-zx}Rw+0AT(1yc#rPfr2k$nEi-}I{&idb6kF!RT{`c1^!^3DbShi8iU-zW(aq%`i z&#S?El(7??R4tL7q%Mcu7ph zNSpg3@Jd@$6fld|Zqf*gd2OFYfNgrco)?z}ms*z@z`cTAYe@fC(DZ5f#e!y&mKUGa z2$Icu~u)iNia`l64=@-REz_&zU$qAbKvu5e6 ztr|LBq&K~Ik(dB?i~IiP-0{w9=)g@V@4K~p0WXuBQX^@{hDO_SP|FZ}g4t-PjR|p& z#S;nn@By?4k`72~M4Gf1+DA()+jK6s`SFm>eix50W^3l?oWg;__IbGA*lYm6E}!_G z8{B=RZ#pB>J6EE1~2MHaU=y9B0--4J0)6b;?amH7C}Ewnyw8qUIIK?(;~w=Xlg(^ zEi&d>{-)i#G+bofu8X^G>ngjApDDcP+Eydi%aocq+ulleZtE_&ZTW;89U znJz44c2Hrn7u1$2NM~DjI`+o=!eJr|9UFGqz5zGBcyYV1yb4&qTlx z09+mS0xi#XhasT~aqZltp=vcusQ9 zEkXTeCazP9$AH21$HrwF&B7Vr%g67tC(t`f%-W8^tkk_Y8T`cfG~?HrahB81=W~m3 zs?zS<+6-tXOJe!cj>@!GhSA^sR2$WeN)*AANj?ruMnJ+|$}XRzNr$YeSWEyGYXz9v z0eik+b_alj4->vHDq!Y@kdKSttq>8I`+qo7jVS_|^p{HUr`S6}Okqu2iukW!SC@|T zvtYYgfyw05{Kx0PxOlBhr_w4+-@GXf&93@q)ok&D=^x$m5!3hkDm`NaUiGju3;d)P zj4XlMI625)`qvfEz$+9qpm+XddHQoXuYwTnp)cw0zwWyJet0z9FWG(y%Uz4h9mtoP zJ!QGUxRTMQt%vVW?mNenPB>*PwO@M%D-Ey9>ZwkQ z8y7guCmyRYp#RN%I5c^Y8F!&(0WbBFq#-BCjwlgOq{z-FMRw3{?_{MefW-gD8Isa; zmo2|8U;go>44mfEkJF%>VV@aO0MR{pZNR~CWgb%-`Fe8ain3#}ssKCATmhubv#(~_ zd^`364iF)Ji7C2ZwGI(;CxXoDV_7F6_KcHP+*-s=?0?+1{R^DW(}3;)#GKWoRF z*pkW09B?5`J=@8_qf2qshb;fE$G{mA%YvXM#aBa0Q8$mn5LWxu-QurXfm z$6{nbGiN3oYcdYwF#|$pOw7gvh7d!rLJ7s!WW;1?ki+UFDrk2E0uFm{FlZNvjTgA> zL1r+nqr(P+E~IEkTq$a@flO2-x8zwg7}X5=%XNQ=lwV(PR`% zu9^TvK)Sz@CZ{zxr@||<8nrv99G`rG#FaTR*o(Q3H+}^lFq_C~7+SCs41qAlq{vXB zcg|D^u8&3TMYa;y@sSZeeJlec$-VUwNDhrg%4O*Q|B{eRSU~H-g zl?9r3&(g#W2m>~Fi9G;7x!vJ{bEXXh>QTkbabx89tS&=A>`3KQGpddC)Wy_Q)Lqo$ z)Xxat3-*S`TCxa+Qwt!05&es@=r3c$i)7UI1~%g(gf7A2Bi1sQj9K;^G$0bk*J9u^ z8PV0Xv0BXagab2bKrNx`^SB8jX$J7pP1+d}@41kV0AQLTm;jdeY9Vn+Qruzi4MQd$ zzDzzQDDZABHt6++;%D31(l2z)ng@Q^9twCAvNiy;Ml)#T)TKU8d%N3Ts^*3vt#(9f zi%rJjjSkbLUaJg{uP>=A z(g%T8{D&3lT)?{RNUf=?)DJ$pyQIwYw4zvR=1YQ(#!DISLf|-C=LdT8_34d1a^pj zap|EI=*2$-ct<6WkJaI#-hsx;zmOQ&Z2MSAt)uo*hp5}BN69)JBNL);%_5!iSAx<{vNGts%_7oXky{2!;tqt-?)O2#C<= z=@>9MB4pd1)Xs3*3rx~N>6bzlv)K{?-78j%G;9%H+`JyRmoIlZcp5C1tHV=b;JCsN zt0`Z;ymCs+pa9(~(XbYN!Vzlk2o)8Frp-hP6__4evIM?n*Dh;#Hf?{lVY$YR(v8o+ zk4SpNzVZC^+NwZN{|xYSQD9nou&5~5J}poL=C6#_gf;S&faV=e;Qvj#8C04(!r_ji zJw54Pg3rav%1pEyY!%P1wg#GeUg)&f#okSCo)V8c7HT3&|For><_98?!2IKA6LmNg z^v~X$Hto&n>7}3SYV4AkOtP-VfzNT8Ga5ORX0+mV@$W!4>+q&U;*oz+;m@c=9l^Dc1L33xbK3S+EyY9FQZx49H$A1dteR znP7a`XL3Eu%Q^Yp=M@UM{yCRG$2r4~oPxLkEw_#CXL(Mp5J$kR@;{7GQq$mluS#wB z9T2~-)oT3o0<|w4f}+QV7TDlD0Dq&uVj@lrCE=M9dx^1RK_}Gd^!+pbII{1LGq&ipI+)p~_h`WyWRRCDLE>m? z>wQx@*UN1-`TEYO_iY`!OG)@uvJ`um*hewDvkP@?#so|uE{fLu=zrX#P@_fn=i)=6 znXM4bXiaUo0W1LkEKM%}OGIA$0UHM0qD6cVECqiRe<1R7v-q0$XV5BsxK;cE;hGO@ z?FB`c2~PZw`JMP@@pYgT{~`We{3$4=_lZ9h{{f~D+>1O&#FnpsAoKFvq{0^ox>DF%ea45a_*YK>l>0{t2 zaLq;HcG!0QP3K>JGq@S7Otdj_(Hs8Kj;Imq@P&~XZ|%k z!w#P-u*H}%*m4vaNw9M(rYA?^k1rz^P&vslAI2&92FAxrQ{9&vlke?+LHyWwwa?B} z+Wg{&PbDvY>Zyy9;Ej^v9~766pC9a6FnoByu3Zb5a~JG72VT+IvG47RfG*Y1nm*6& z^MNP6dGyh59)&mDS5#VBbRW9uv;5_|3i^wVU}lW>Ly6>~NVAb2gjz{z!Qi%w9=qtG z$KYdR!;aw#8hHR8%lt3wmk`Ygn0H+8un`4_#64qNpr~Jo=fGHx7!{*EeNYL8$DLMuRGgcHaF8No0Jpu-G4gZU@oeir*w&{gu?(NJ+w(BB!~rv1g* z*4Z?3!>W}Rd}y3mQ7yhNepVh%@Xl57rVrn1jjmcE*J&#JOI~|nQ+P&q!f12L_&>q; zkV&S0%D$MbDEEwrw|#R&XVS17RQODG1zqf|^E>yR02hMN+ne+N-q$+EZRqYc@ajgx zmK_yE=TBRil*?~{7dU(hc~v#1^xBJj3a+?FF87V__6_Zw#wk^_L2mR$eZ9}?6*t}} z^VZSN-Y;66wMB+~LC1i)xYSXrsCn_iM`qe9olc!9%m&DwQU zcYgbX*QvW)VJIK?o%r{IJ;Cw_BRBhHKrZ7oo1XymQ&yLYnF312SjlcH51Wmfc}uLh z?Hu*0_UdIuS2t)d*=4NJDC2BK!O9_lo#kw4nhV*O{(hPIwz>t5@H$~?Km29X9QU+3 z)Lxx&inHUYU;EiwqgT~sELy2C22DT(YQ~N4fa)0C$KY!9Vmlii%EL60aH6O^5wt#! z$zw1&Q4P|Mby*%;-gkUpp67v?J36KqS->&>1Llg4YuxQq=DqfruLZ!mRp*`80NwA{ zm#*Hnw36k-Wh3d6&f2IGz(V`E#8?}W`D9@jHF%=fQG!FQ90^+ZT`gdOjd7r*qS0S# zQvxtbosa|87TwUXzkKQK>!w`}?kTLl+0U4PrKHpXuK5|5uB=$nx5Rdz*i*l&e<}o1 zn5r>0MkE^~Xcm?^q;y%utiUSs0fqcmP$! zU0Qiz5l{u?{M@&r`V5i?!pt%W3&B1w4Wk(;7R$n9B_(l^f-IM-M672qn%V84MVBP2 zS1y^_ykJ4(mYZ(aKJduQ&3)d=wHs&b>8Y)q@0)s9{Giy`8jA(m>DjX$12meUr|#YR zyxZ;Zq8;`hA0D~R>GXQ1`V;Mup6wU?g1Ml1_UzUeuae!gbxSF&rx|t5PoCgvKzZhK|Z~^2Uf!WPM-~<={+N#?}azf=Zt&=?<9Pc1jCg* zNPHNJkc2lEtt}|3CPwBbCbMOwSxjo&5-cPMPHe`@NU~@T5!)LMTEt%K*hAEX-2-sY zHAi|zreoBY!TWBD#cc*B+-9@eGBRA&)VQRniJ70MoZYmf>2OndSreEQPQV{*Nsg>b zZk@rYHQdZKZ>^chY1AAziqAKdl{YcP7W^FP|7%TUVt08{Q#trSS(A|77*6~d@BLZ& zO@!fX;HLNsyLZ13KcL}c>Vsuv2h}o8lfEf?S9xP2nn!_{W>3lh8mD!X7jVD`{Gb}l z0ACPn5+9~VsDTC9`+A*_BtC$W4+nJQF^rhFL*;4-#?TD%nWY0)wSz0!;yP!j`Ah%*BS$O%ngfY2Zr zk}3i}A6EepxT7S4=xI)xGva6B3}S5-(QyUwNuu3CrH)IpV}!uMaG7h(_$4%XEUF<~ zshJ07>e(lp1(7y|)-wb8&^~oJ;Si&d0otexpLc16MWu%5 zl`<1;fzSZWIzMQim%f`;$rO-Q(zJ>O--8N+j8(8QNNdY@h3ZMAn$~gsFLBHg`s+s6uX!ht>kE z&aQVb8-M_0s3<^3t28pP8^{eTD_26GSJHC)xuJL)Z`Iix`eLP*D`%&iV>Gtjv#SI$ zl^29VO)g#yTDqNnvuUbVPCEgpsReYKP0(>nf_0Xd6tsMwPC+wVeH#GvE?tES(kcZg z7R*ji=4W(TwFPMHtlXkg0cZefg+ZZ}p`6e%7b7r8`eYcL1pu{P&?y)NWLZW=b3of< zSF2iF3YxREPU$F?Jy6eYlv_=%)}kT-uv0gv-HhdOg)Uq|>l&-W)(*K|4p{|PtJlp8 z%4K0&yQLTiyWFPD%k6x?t)j~eb_f+L&>4Rw=V*pj$~XY^aR%^1DuWyV832rfWicjA=bq4FH_SsOeY%0~P z8ERL==}_siapqVK(^76ELx-svs)bsDJ#_*>+J_D4n5&Bph8Pc?p)C^iFd9kFFyUr{ z93J6-my5A@Zbv(e5DekF$XL<>YMhKEHpVNzY%PTP*p2(H@adlY=y3jX-^`hRVCS?8W;E$Oq>liFv3>U5 zX*K~WX#d>l9Zk`4r}BbvYcM~)Q)ZgG^qRSR_M=<3E$$9njWLLF_^o9 zGcz}Z8kWti?sFEE@w)5EJ4*Z&_Nw}UM|wMw+uDP(mNXq%VRm;-jV!1xt0}ID{Lh1( zmu+hUTRu3pzi)2mwc_xPx9PhwJAlPI;N6;qu?nlo%5i$V-7wec@mdp=@#SGx>$cA3 zl}!Py->fy3gd*lVstO_0f`T3 zr8-CyQ`W{1Cph0Vgc3PeU^$G%WlHR(L7Zj*CWgzwkkT3wrIkV%`2`6S}voIN=&*4L^Bi`6d`*A<$R`F+4-Smg z(PjM00~5R-&wv$*ZM{TZ216MuXl`#XXg^8J94z`xF~o*CLJ<;lNUWp8MoMe*7X@>i zf-J=j5gtX!vJ;|xCc#X6gT|1Y)W(IVkIt~3k$7q($7kbcSgNihQvB!2uN6Uisx3Si zZcEvNimxmGTpTH>(*vq=6G(3A1e9LvJ@6j~4*UlgDyb_6iw}w$bi6$%ei?3S3j=-7 z&g;PK2gQfW>q?5PAh~6Wn6%Qp_=W>gUKyO%0P$|k2)e#gY^6HO;ha%*U3H1JRc+)C zr3boTvTHybBDtXxqQp1XJ2F6W^13($Z|Unqf|Umby9NfpEBSn6bzUCq)82yB0$FxA zh(s#0#b2o0VL^}HP+V2Aq}l3kYV=#1mz0K!4SHtTxB=!9@UD4Qugi|4m6DPoFR;6M zXPK{=WQ+)*wZ*&aC~8NYSZ_**&(MHS(*go$Si!Mlp#X_nW{In9Ac)-}v5XlH5WibC zPKfOZ77k0CTP~6-+ZId zqqCq!I;&PoXT?|1S-s|)Z`7G}-%r^~C?2&?DuBl|Jgmvc2pFmH2MD_>;kJzViI_~- z!vQgOIRW!|tnO*?*H8BSYINhnpY6X6O_;$R@zS9?Fjec$7XW{2g@N}hS$X8-jpv?I z>e6z5MWu;7ow~0{{J}f>KYMuNg+G7kpBKCeite}-SYF;MgQcaed9Urf@#K*R@6wh? z7-6zh#!g(G@d_l0PR|72_zCeMi2_6lxUsMYqcbPT85!o2`o09CM~x7)3}V>?-_K)N z5G)M$=%B2ZO;K&w!-^t237o}jB+USgi>O<8!>}q#Vb}^Xw>_?_+PNbMBCaa$;gJzMy>7{W06%5Xv41?B*={8La@r8$zuh2rsbuQnww0tT{p9pD&-_wAfq~Q&w=znxajSeK=Bbi=i(8_slSxca)ia}C2lo^%4 z9jcMh-y}YAN7uVbOH9ou69-nXx}ej>utv4ov}9V99I#g3v~rzI#tJl3Ic z2xM35&8$p7@+L#8Of_4Iikp^I7qLL@Z|LhRY162^3TPHob_mq0!R2YFT^>}mc&l6r z$k@wQw)CB^)X_9R{~@bWNW8lbae8(Gr6i+X6}6b!OkIq6WNuB2XJnE@3s6fII}=rF zAPoFyEr&Z}JmwFebuStjam*@@cJYGHiJif)u^V+=vbcm!kOAL}q4lM-s0@%}iU0HV{wtFYg5|TORx&cJPA0qZx8cf4$ZD19`c)mf7TE-Oxdmm+ zxUAJ$#;|s46Ii@75>nK}?D8UiOUolmi>9buMHl{K#5-N5wR^nN+>YBd4whAETv}Gu zv$5CjeQwR_RgU7PntE@XuC;u2MA}@_aqWS=mi9f*Y~2Z%%L)|MaPJE*1C6q^+#aZZ_{Ps$M38I$40vH1X??iIsn7N=Pkh(*IJTKO|tw9G+66xNMsaaWe%Bzu8-Sx?`( zp7~9B!*=o5>w?`b90%na{WE)(tzELvv*X3fceL7~cFsJbV@>yxM5S!{#cP)|M?7Yh zQOg}O>T0#YNaxv2epY7W3PtrSe1ZTVM~`z}qLZyj)W;Yu~~uqi^1viUWgyhP0u$Zr0A}MFyd?v9+~Yr@x?6 zW}G%_VEfe_w$82<%N92&N$J7;N)Hn^Z=-o@R`P9F6i`i3hwOJg_)tC8qpLh{Ss zSc-UP8%f*}k+Oi~3lB^l1O5w`vg}68-*zsj7e~@xEZE8XcDOA2w{rnKZ^2IBXj{BT z{3p=tS=fp#PzC)Z9hx)!NAK%WO z0)0Od&R%vp4E{{iI&hyBia+B!z8cBpCMt#_EQv^lC9=2$&#qJi3#Jw_8qpFUSDX-a zVoQVIF?nzll|YYfY!F}n(H-K~x4-d_;esQ8dv4#`yP>0Dl+x%+3}1*P)&SiL<=Q2& zww}I@0JvY=tOvg=F?1>ZwHDyo&sep2V#G^^f~d{{qNg%Bsm{=-(#g!dV8d` zr)}Cqt#ljfs_-kf>CNEfD>iV98@X z(g$iUH%w`7sn>V4b8J<4QAN3>SfQdVDs`2ketPV_61|`{wO1QdXtXf+{id?!@LZbLcD2bgckoIO0l_hrIFRF}z-wtEWTYis&H<*TQveK&I3uE%F(w zbE%Vfh5FPk)`<7cU!6^eHVrWTC-%h6$7cI7h|s1?7?4z$+@O}Tu6@UNZBb&H6bH#d zx>t%3={;lg_Jr%nlTH`SorznOV|@M)@s#M2tawprK^+DX)iCyfN5is*NJ1GGm^hjw zEjSX_BjdbC&;?ph4(Lb??GrF;E^smt))RzV&$%m!h6b)-?%W1W&?J&~ox?0IyF|bI zg38JZmg_GmlSQKoIy#0I(_g>)Mg4%INF1^+uk2l2eCM6Tt9!%C?7+=vt7`zW!y~BYBitC0MDU{5aKZq zpjq~dmW8VyspA$kR?XGL#b3wei<+wD=;F5)o0=EIEAH5Qhuz%N9j~}EDxHY^KeW9E zU>imDKfW`&t5xq^vSf9++ma=@TQ0F3$4(qOP8_E>z4zXgMhgiL(ttn=38A+n1OkCG z^*A~gjyw1Pm%D?zgM*`&B-Z3Vvnx4H;J$GG@9*bCyVG`OXLrhb^WOVB5RHmEN#V#H z24h8MMeeP$51ae@L3B2H8U8r3a>#ru1^OxFZxQqJW|LCU>+ zAk|~j9XN$&AqrKoF<%uJtc*gRak|_uM5ff%PRajGfjnDU5~Sn7l2}%MU$CUoSMX?n zwkz#Avq5h#>u`t$GEeoTIxFYTfa4y$af5frkj&MYV!s%*5C;d-v&u?>z7dwpC03}D zXfWr(O7TetA2f}i(lSZjHh{&wxse)4O{Nx8ln$?ie#j$M(!3DKuM+l02p6UsNOJo< zQ7>_;Etp_pu7TAVP5fGlzb)i+(MU0s$>1d)5)d3eUbdoCrZ`-@5B;mW{|+z@w0ya9=a=X>+KrBr5a?kZW~HAV!ZPF&$5*_C7hMXJkxn*4b1JxtE=L zI=NcJ=4LYO4?g!6IyeI!xo2)REWV`T7XD$*K6cf|pz^Y381TcnzSF7vaELO|%aKqYa-7k>g=DDg6v zNc(S2NCew*LU-tld`F4tSYs%b@`2?eRr%UNz;#@M>Mq|FTuPxEPwaoqK9dsDI zb3dbnRmNf?(`G#1%gCAJvYZl8by*pdN>qI+i4>NV)yT%6V@4y>gR_|)cnUo~WW^Bt zA5=WbaZsHvMwrKZ-F?e+@6aKBG(suEe@gI(f5=e(8*68Y^TnVC0Mv`yKmS64y;0DO z0Xib=(D^AyWFwee)0(R27zq{;z&U!HqADjVt_Y$F4^Joy<pnZ`sX>gal0F&@RqH5RQd1L~R%ocYb~@#!NY3<727G8V_sw z4@y-)U#hO7)vn0Qg&om?VN<7v%jS-YEq7PViD!?r=Ie7R#}@lWS|W?U?N@Id)>70k zq$u7!E?(4#{?)tn<1+8q<}E;z=``dUcfZn9-SYMemO^iVDPLX)q0(D2p}b^#d6vdn zJdxgCzHNPbz*Rmyf9A~gVwbH1Hg#2B+ugLZu{`ef4ykKP3?J9NW@$%HdDF;i^4qmp zHCe$t=9%5?H%DvZf={DS7bx-lypE2G%Atxeebh>grFQZbUPOU0wd4p+PROD|4fr}@ z20}i;FvNrzk^q^RIFZ_9#2qol8_RG;Q(ItWl}Tu6+Eea+OMBPJTYRvSMu48u*@YK7TM!R68*m5&iyb z0-Zz;qm!G?p4|i*K^tgHfCUq4Lpj$LS6)A)uxQATqQW76t1V$~+jK3u6YWKZuibQ; zC{np|`nY;Ldo90S>M(;@=4ln}D^|33EC=X;^MT&1eKaIQ+JvB-vV3`a8(OY9TzwriNH@=j`Q~h@jG9L+ zBXoO+Y;op59!r|+A(g`rOgooK+o<5zO<%s`rs0$Q0iB8L7DxGS#E}gwTEwNkmx&yh zaL9|-A}{$U_`dWB&Y%V^OH7DdeqC{Y|2wC!M*~TN-W(xVYWag?)Re3%k)ua+hLoHK#Ok zgxumdE)0sBqfwkVj=!@bBOA;-wXJ{iwo|9J(Hpj%>VI2V9S9FCoGS*BqEJKQw5BXq z6iTG%_ssm9prGGTUe>$J?zin*+CFlrO|P?otM`&qcg3XAmqH{Ur*Pr1v z*uG>OWlq=v`@oqATjGPsuU>El_HCJfGL!KwOva^3lw$m|iYeyrn8uRedNjOczmLZV zB1^5y0z4XkS6$i=j_3#u2ma^N;IzTvrdN}nfu^J&&hr->0e7RbjvLgXh5w6P_UW3y*R(08c--0<*vz0MRHv+i`bcKuzCtZ%M+;&iNX zJ#D%~v9&(YtpWxO7?~JH&dDMmf0`a%Hc6D+n)SL4&c;!1|Km6ae!TSkN~x?167DrT zy=X!kleCotluUoe&_j#WW^lfWa` z{4uGu5R(^p3FoJBQ<__Wq7)(t5nu%fd_HdvXo@LmQ!Jkg9V!(u5>YPaWVN&i0Kkbgv}bE(zy)bo9>XKiyRXtReUV*cKn|zctWko$ zi)99#jb%(Cm6bar(O5L969C+4EV#ZPRv@jpB;_Ow zr?P4blpDsWgZ0%JjbeFbrcrMEVVylU%i>mgWI19EW{v1St}Myb&^bQ@PDUlR43h<} zURxPQXA9>K1-H|l(r^jG8AjCD(U2aIG*7NO?UZKGs{thcCeZ~ADMMkyCM9)zg6;g(U zK#{5O88s>+9aLK%>n-xSX}wvk)#VPgW~ynW!t0FNEx{m^sor4?VwDIpLy%@bj>Bcm zw{=J)d3J!w^+}Tq-he4jQ>trGNg|`~d@+ZXNF}-`C+i<&&2dKaOV~Ua?Ug@Lh~88I zP9+m_AO|WqxJ<7B^5nV>xu^&L{?5XFffkRke`ES2N=+cX8d!gdE+IP2M7Y9Rmh!6R z!YJd_968)cczypU;ORM{5=o?FL?@4jDH8P2c|AORio1#w<9^3?*;tC#WUga%jwQ{T z;;dMv;(*vacS=E1ZcQ)Ew9_=>vT^dQ1xl4vo@>^NIXzS`Qbt5Wl~Sb< zF>+8~%*(TPi~_;3vLFDrOkY&2*VMGe0jL~`$y0ZJ)~eSJqksHn-qPO!d+*r0)-4_u z&yb3J`k>i9cH}MojNvwgc}UZW4fj!lamE~YmF%Wg;rT!Xl^~F|U5@#q)xgAw^d@7d znx;*ddT@*MPMRx#`5;Z!;qh-23}ypF#1X?~qs0Yu%t@qN4nPxnkhhX18oVkxPz|ey zq7%N5$?x6gsCl4My=Z9Xsk%jej4`_uCMa^I|GU&j94eYfv()aTk7 zx>t3!ER~PCkDj@zvw4Yf^po|neS8_m{$BhqBVJ%=nGR>PSo7=TIHP$MpK<&CjJn51 z%a#uBTm|0f-S3F!8ydP-cQ!3jkAAR5zF+2><@b?-P)llTo=s}R{~UEE$Efgwt)9}X zFF3!abM?eVdu}~nWLBy|NBn_K*;2;Tx=hyjSY7IQQ(1L+)?qVN3;JRLKFAQNiyB8w zqGnQasH>?%WN*x0z`NoL2nx1=l-_8}Po_hWUQn*Z|9Asyq7aM60+H46dbffeEzR%e zdPu1lFQJTuSW^J_G%PUD0X*%R0IR{DkW|5=-v|^Ve=T8u@ZbU(Ud13#9MJH)zA+6O z%Eg%m4crM#dVOvVSI^YdjWjb(TGV3Lq}0?y@eFam0U=C`FfU7yg_qvzr$fQDH%Y!^o3rX20mTA{rr#cM6#KAcgCaB{xl=+G|GpS z=-h45;O1Rru2CbtsuoMdjNQcyeV}pD^_?oGPYU+*pHn9DIR#6U)KznGU_Jzupq$Zz zmuXHc(Pyv`ICJl>y?)qDH@}_?>;!l!MC%nO#{HJq44PE{?Sa(jN=&kLr z$cN{15z%V`WECUO3E-;2Ic0LVloKtvYQ#ET2&8qh@EwmOY7LF^YBsWG@G ztfa1__EC3Hk5PRCyJiEL)34m zH>f{jO6&qq0VgN`)jzX)I^YCSc<-A3GEV=O-}Be>kIO-e{rf$ z=wji2J|uo^!HWk-4f4D6tFHpoe_xY`@>|dHdxj!>M1$aUzy77*(O-aj`uX5_ zUP0;cee{0+OT4;c0ws8L#}eSh`Sy=K!lgeJv>ns<=>jft1}}XZN#uwE&x7ek!jk~O zCk{w0pKOTH5(^hR^LgAjgE+_W4Ju9SgMFctnJ{sk18BLwtFmQX1wOW}tw8sVYHiul zz#qUhD}eTKcXe$}{TJ1>$>zrv-SsADs_gPttZgO7bzoZSsD>>q zl04nEV&Q@2wv`KSEqD%nvNXRkL)JZZ*XYv^t~fn>ZbkDgOYw2&fu*xnwlyDExT3B3 z)`i3#?g9mgpL2tNEvYl6jQWL#$IlM?mQ2cnUTdG#3-cx|>D+to-cI_<8(#4Bzrt(h zMSL&Zkoe}-Tfe!8oszZ#bK;i?G;AObD98sC5MxuADEwwLrdSd%kxazl6Ul~T1AETv zOvdfC_GH}Y&G*ATW3CbQ`ST}$32@yfixEOFNqH(XD4|w^gr>qnQ^8s#pv2+}l(JSZ zugCR^1%EAq9U8G6$62h8e-0L;&Vh8CJQquL&N00z1X2&^;}7^L`GprBAnzGMH2*9KaHuoFm$;w<3kBOl5^>eK36DG>~Te0girUl ze8i&~&Ji}iJua>U0dS$edyxq2*B+@}q4{7MI{8i#u&-b9+H{y)u=IQs1Yi3t`aQ4= zANMrsNB@HDW3F0WegBeWMIB2L4ar-X2iBqA&+dLM`B*%LUIXGkz6o?!eR#FTv2bS__x0ggSobiR>$oO$OQ% z!Bna~bz*TDS2S{QCz?Po(IJxu4?X-+21^uAqa9$w^4{y_2AW5;K7459)5ug*jOdnr-=buV9c-OI@xyJp#Jvs!DM&iyThc75iG##!{6$2M#{c5LH@ zV|&qer_eC@vs+g`Vfj1QHe#Z}NN^ZrPo4rY#!0Tf?)=kl?h<7?_qDXfonn``VkrIR z4ae~HM~`lN3Vn~B*>rUOvhm=7TMHrB_aqRb@2E@oMlo(r9o3rh>p`|o1pz`pP$9t& z9lf{-R+(lxe4*5L;%L%(U)oMwcqfE0d~Zqb;>Ep4y{x@tqNO;$VwJ@lu535z+v$Gc zOWd!&anh`trC{vd)2H|D{yqGQL^rGo{ZaTpKkR&I$Bt>!chFhAihvb3yF zugCYOSY>vxaK7*{ZyGXw)wMJGPw&}#`mNpQY2aH4-p1*uciN5}FYVkxP}MJt7JVzC zDFyDAd6-8Y#-l^goR1e`W9G?d!`w2h0yNP$j>ZCjSbzb{ozXh-27rk61$0D9lqJ$T zPRVk9oD!pbF``JwMlnTir0Z1>jmKkO#;GK3I6U|Gjn$J2oiy{b26AH0h-*cOQ}QC6 zwsE)k@29zY|5}<16ugI?)BQ!?7Bm-m3eAOZ-`iT5Q4#c3x*BBee}K|;JKskW_PN`K zRA@9{k25Nl1;9ddy)lC>_1Q|Az2iAKEJNGIH{CFMl)(U|TPrl$>h+_OpQ4*GJT$|x zhrvQH=K;0RNFS|6*FGr+)0}n&>W#UUD0%_y@eTLr-A1ESOE-ae&wbv3w(Ccay?H{N zLIG%-N>wTJk+@js^JGuA?xOD(oeRG$LO^l@DT57pU1@{fw8Iqq{z&&Q5mgXyX5!X~ z6Sr=re;fa%#I0EMi69oY3Te|&))69oP~q4Qf`0K4$+m>uTzu)hZ1J_lv#Wd!{Pf~)q9c?r@ju7W9OkbBI26;xTnvTYG6NH0b9Xw>X;5HB zpMdi?4Dy(_l216%WC!}f0SaKF0~~Y!jRTK84gOs#p_pZq60fiYxGz^wP1GoA3N@8l zjJeSrm><2Bx)1ZCr-@fF(o5aMj+e~XIEr5*dAA&`H>I5xUw#SCXk0SZTOjs)m9J?{aE$b^lt%VR=Bu+uN1NiJCeb;J*pX&{El zRiln8;$u)3iKeg-c$jLQs3Qp!FQ1^*n1WPDB}%0dC?rOZEt4z6YOw-HWg>}ECXt-~ zOs|JZsL?=Wm(>cz5|c?H2G&y+i%bd)1}K$HG?}1WVK6A}ksL}TGBKxw%#0(;`~R)b+BAnST>tvZo^tHk8H8>|xD3TiZDS}@}RZ7_x z0Lhd}2hx8gQ>$g4fzRY>H4^_rq17suEQjl8m4su(+T`x#cS5a#-eQuv(b+!Zk&Av6 zNuO3=nt>p#QdFilhNl{`J6{Qm|8tDtLAZrzaTMynd*Hyz*U@dL2i^AiN^sy8;wM2b znDTl${yI&K9(Avv*K+Tu{(A>SK=z;rlZ{UaA%;(b_HuQUmGV#%@z_~TC8(?Lob=PZ zIuoaH5m(W?@;edV0$x%^HgH9pLD(2BR8x3G^#}LeG*+cB16ImNCUz<%usBxlH7gV{rvaGcS_#1?kjId%xHCKy zY*H!k^YD-%a{n*Hd6v!$v;b+B7?!I2PfwKr2QSg zuKmO$!$Uwzi3AurfrrFt;U#c<%W)?y0DN3W|6=<=9%*labT7Q!yghoEG$9{Zr5WidXRIoH@61Ix!<+I0t8^D~T;CCET7zDWzcr;|h60NXbZgVDRoN#qZcHM~P>cVz( z{dmBxTvhBWsdE0h2HvGICE7=>vgzg~{{YNDu64DKb*g@@P1#iFSI#&ZS0rWv49{vB z^}pBzCecszkxh@b-bI)e{T0s*`cPjVxg@cOTtbjR)6bgTk0H++qnddX`H08BMm!m* zv*DN9;344Y8o*m?^IGIlT_jALK*ALH3=>4jlKkk3|FLz61ft-Mx#Al>yg_W3niyep zpW=PlF^NHc;FnsQNZ=XlEp*6c>6kyi!(yujt%-ycS$Y4H13JTlzEvsJ!s8tLs`bH; z_KG>+m?9P>K$hx&fN*D2^YAx;5b=7N4@iohPx#fO+RLgHtL7E;$j`t>3_}4lrJ_W&k$Fcckz40cd3$%=7V7WL4!!6 zi5S+RXV)4cYSnK2g#HOS=#A)0cbDoTTFuY&>F}=|r>qLiQ?fJE}EmM=Pyz82sk#O?1R?FZ6sAeH>g_m5G-2#(dSYFQPr;swNdfY|!- zW<)L{NArG}05KIHW~7+B#RP&*C`&Q}zx?rg#8z2YMvG6J5Ysqd75`O<8>>|Q_40JI zLZO1!K%=5Mb^cXv1mD4r@AS<#_zr%2Cy=MZf9Uk(=}8g3BTa5C#ex23Z~*fXO0}xJ$2j@e@w~oIbmKCQBurBX)#A?Avg^> zpz*P>fCTu`8_k$!)382FnP~JWr)h*25m@Ix!Exv)di0rR=r9g_gO0WWHD0{F+zy5( z?_^$k20aQC$vf$=yZ<#quA%=mx0?>*08Ri4(E>2@&)!X&`rik;j{o_J6DLkg_%oP^ z7N9RS0q8vrcA=Yck{@Q7k{>D*&~3_s?kp2@V-o&D(*Pc=m||Dqe%USbNq)D^ z;pLNBhk?McBfxwJoO|`|byv?+SIg^KW38=`+>tdkLq{&IS$)^tYpa*+H+v~HhTe*7YWVJU}9Zzg9VNO2(MFOCI7 zYAO>S-2qOU8RdQGvL-wcb4ERU`KKlnun%p$@7eZy+n+uE)w6c{v)!;3tP>JmPPxRT zr#;)<{j6O?{fq^KvYT9lFC`b;hqfl4<`aPbFT%y*XYUhkC)gu%6#D}~<^UI!o3!4T zMnnUj*zGfO+jTmpTVLQBJF?Mes2FNyGP8@alnNy$4d#s~ zs?RC3>j3>BT5#bcI{vS1aPPZd4IVAx@QjuF_Z(>q1=LQBI=p4cG)IP|$Ym9YmTDTT zw!(#(&c`0jU+i}I8a0}w%BGBrl3Py3^PGB@MjctVa^0et9hDl5g3fT)hT58E%-YX=Ey z5mjtrS;|GCu|PCtiqaf0iW3pl9TV<`F@J#b2l%c@a`7>QZ-8%uC(Tr`K-5dA@lnvd z#23WKCHz%^h>@WN85S{uq0yke&lu@BZ=&1glx5`B?0#QUll*Ik(N;QTN~uHF?qS7c zbI@&Xmegq8-(8ct<`bpzpU%3IrQLAg-Y+v9W93%dquJ9IJo(^tE9v}ZP9%6Pxt+Ah-!g+bne}yAvmrr zdvtc&_|`k>v|mZ3Uuo;^XdTZdO=!8JUi+m~`lYu1juz;zg|gAv_mpIpxbA-=c^{f_ z+*Mp*pE-ZgG&8@9o|B>OPp^DKf%5(i$i-YwoIcIu?+lq=> zyQRLyt0BCa2Im}j%9nT~v*~M@3NN75n3K~wOZ;*4Qejh3sG$f>8!Q(4sJ1!|_H>Tw z4*S+;WGopSnx&#O^$|1en~_)NQJ<=dD_N&GSFBnv!fcnI$+j5Sl5a89 z;PQ68*;%lh2Jl^9wA^oo?|EZUpEnZixD0n!MAhSY=oIf$Ud``g&ZAZmYafrB_>$nQ zQAmJ{4BixlN6cXjYL}Z=O^y&oB9gXB2>}n$st<&Ts=d#^qm4y0;fR~}PC#4{;GD35 zxJA?GQ<~qxS_nJtyzTydZ+S2J$-FY z`xJ2ELx%Z~ffE{MR&|Fm#E>(K4E`R`-$eJRN|l{sDwAIhFD+{uQC?=8HfuUPzOwy> zE5U0o%cVJ48;_a9{(v*fWN_qll%h8+rE{C_tYES_=i3?cJtMcDEa-naZ!DZV(d`z-!NjawMyvN2=I%DXPH4c8LuED7)^Y0i_+1Ux_! z{t0?>DHyZY&>60`(uRUkZoU*;VaLVGwYpls*sFnWeCs_EU z7bxbp_?u<$m`(zS8wZJ0jJLNE@HKhMBQ;qLQt&D~1 za8=}oJYX}hc-SZn{)YNsWutm=FZlNX^v!MYI)jO2y@qh<r=zAA?>PDa)$ZT{$n|{MLzj<_XMfWgIcH827JkY;Apk#fxW=4^^9G@mH znWYcvmAbV%SN`e1_yc%d)Z+g5Z`?M5rkzrpjS=`4Vp=6~5-oNzu7M#%aS^Og4@WRi zO#-S`%AF3cc#C_V;8cg~vGZ^~M0_En3iT* z#{|3*gT^3J15AFE57l?X#E@a*|Bfsj8CQvwadFlI?VkD-qiXa{S-GB(LRh#;!7^g) z&@8|(v}#wz)CkW*0`GepaVH%x6SV>{}U#d5&1V9D?1_ zefimpSu|N|)Ul8OATLO(tWjSukO7SVLP*P=s-pE-b&Lc=^MNi+i&bG7^jRLu-G%Ar zp*+s-MS^~?_#6IwGQdHG^ap;h2Dq4)AiodZl2AamkYkQJmFsEW_0$z@MfBpG8(w?y;p$q9$-JT z^^;`v@;{7ubiQxL*TC`hjve1n-~z(*0>RRDr2H)N{H%`_psXU8pCAZlJpP90BbVp` z#oCk_nF5u6t#v9SIuqS<{xn+dqoG@rP~jEgJ9F?Hm7x~1C(*kmhI8q`1jf@p^$ulL zP)GMk`0;ol$=4~zTx#YewSsi5sXBoUuo5u1-sD&49c_kEqBEkPkET7Mga^Iy!MPcr zjh=+u7i<3`I%(i*fBqR|RzOep8O|x$ocHHu;B&*qlq!G9 zVv}r#r{*Od(wYCb?4{0p1!x2jwdQs7(SiHX%kw!PzFMkMb3@-=IqRuwMvlDZsaaEw zH(X6zaih4^9}GA)&jq?04*>h?$#ZFCzB9a18f`}}5e&5(wn{DHYa~!QX%@cxO?;Qe z+G`wvAki%(UdcC2U%2M={b)eDuP3d~c2TFrMtBV+RP(gCIv-qOUA7tZ3&b{0me05k z+;EvNk)?3v;6muJpU4ZVa9z*hy0&5ZGNqBm&ysisA)-4TG}1upO%6K6@eM8!!0(Nq zLl2k};t|I4bwmr@pd;cw7nzH6#esbI^CkHEigx8bl9&5%uG#9&EmOMyQ23G){0abk z>UbzQF-u%R`{d^U+B?} z3|lPtmO1z5SS+5rGMwpFR}^^7369IMI30{sYFG)bG)NgnYCt=78l@tT;k4#*T(;Ta zV5L&is!}?S&bNi!0kcTT*!jF%tHTCGQp0xCXOPjf%mCusalqtHW!eENHC@v`a-~7a z!3>8rm*;)V7ZMD@?>IMw&B2?aTvXWh41|a>zF>nL%_3ML$Y%~QRuS#B%(Hl}^H}Fu zJvUC-P#f>+TD=g2z@IH%wr*%f9EdEk$oYiD>$Nb?p06Tj@TI(%K@_Bi_ zg7hhBkiQn9QCvqg5zw!>)+V;E9m)PYgsa-$%pch>K3pgL)zFS}cXX*W2HF z=8T9+W}dm2NGC3aVf@UQ{$8?sItc8~4{#h(i9|pCF_+{ZYH%!7Optl=mS|#zpCoMfv%3Kui%DrWvkRm^{TQB591=7 zdR6KAhu4>`QgdDF=`({#CvJe3)ZlMjMYT{})HKXZP*lF)Jc#!E=Wh!_(jc9Vd}Ut(X@q2f^nZ8`tUTL2l|od}rGi{87TEJjvg?H&vBZJ0x8{exelS19`U$r6*q=_*mKn zFWVLZQDPRXGx-B1))y0TF&!}yHpN&SXAH#xIv<=2oWMCB-OB!SUx=B%XU3P+SM2>F zg8qX368U29l~rHP*y8{V+m|i>e)+QPpaH)5=9}nYCh;>2@A;-z&eLPhfI9i>E$a>* zT-Wlt96fbrEPei!twHq8kU(Gv$PQAx-@cS@?6i%+P~Ni(*>SjoI!c`)vqRczcgl_Z zWpVHe`M$KGlL!1S??mRJVwT}SGpZQ80y-GYWkoatPEAyaUZc`*p%KbxF<*6xSU zZ-W>9o2x(~iO^=WIf*pkwjIZS0#pI{@f~ep&BZc)8%o&xXD<3sz35pLE%~|BU4Gl9 zO*Vh>zqkZkqma&mV7gSHDQ+3oTITbWwGL}3Mq@6P7=>?%Z#*CqbD|1A)n>U@Sg;RScu}8{BASX|1N=%0+|Gq zIUQp9k~lxfFBOoYXPc67*w>#xsYL-V5|jzV&Rlf(p5D8}&uk|?WAq%+AYuXlFHnAM zH82Ta2jna|(dwUNl4Ejve&-*JhP-VQ=C_#)EB|c4m&c~;N#gt8y$3TmkLJnBP z;t{VEEb(G=glGb!{8{LD=NJxPO3nWUO)P4pXKy^Z5&s9@Z|EMoapTzT4S$J`IDdCX zdCs`TapAG{PFQafF;)+^kgYb=`y0bUE1O?jeSXy3+U2u`k7j__#Q|o_h*`^PW_O%l zZOIPMYIBcdT65F>1w%QK>Wf5#BOpX#M!)B$L~y!dC*jh_+bA5zhv+ zNTxP9&3k5|za3xf$t(yj1`Pm;0eWyrs36n3XRP7WbTUgp@~U|P zO5lKbfYpFV1sLAO(U0SJAtItLKo-A%pXR|+Q=T{ohA!`f$VyPPuL;>50_W5 z!Nq76u<}6kf=9ssmZ{hW%2h=cvu!V3v1T9Vx1Y7@|6w;XkH(Z*nNe2MelAz z?<+FJl8MUdVyZwFbX!6#kJiK146R#|gHA=?(JKv7U}!aj3^^JQ zsI_rMIC6$w(*;L+Y&jEDQja$I%u4~iv_&O`m>4Mtg6a3wigX&&2c^8NzaZa9Tw)7h zqdb^qB|e4l*W)QX4G+T^x#UOaSAN6LrO|Vjz&p4i426hV-HDXW?oQ2^ut)_7bo0`w!Kll^QyUFS|g)?Aj( z=!3h~x38ZCTQ+XqIE>crlMesv@1G5q?xQZqN9h5Gxh62_;0UPA#LsIYLzOqdx2U!dunb~ zRqkG`T)K7FuB}ozPE<*5J$Ud|2`Tu*tFJym3KFe2-j0Uf(;O_Ns-}if9n@56F0~d9 z&dYrEQUB$cV0Q{=fxN%MfwaLGg6cs!*@Nj@kQhevCBQ5E2?-~9*x=aDCep)NX0_n| zD1Cj}G>^qcKIxT~;&Z%2oyEt<9N}v6AH2e!&?|#uKbx3LfQwRnctObO+^=p7*`G5=E#thb1LEZ_x}%CS(zE-hKg%^e{kk1_PHy>L&fFp zN^k`@8h-4t58gv7D)1#k#c|&|&KwAGaY1mZe#ypZ6RLbn?ZF%;`izyCoz{}MBhU|r zZpZQGz2Tr!8Y^&t3RfYB19sE!@nz`8!?));(F@*iAX6-74c@TW=&$Zvlb+vq^KH(j zDtLPa2NZGq1_0S_^*NX{(m(IS2nsHba0d`^{s2K@-~mE)4q8hbQUIY~R2$8w(aVD}2HYdlMV)&6u=?i5lbg4|?8aRW~PEihtz0xfmaz+qY99&6LJgfk0F-VmxXd+psbNLAWWo0d7{? zR!p4HWbzsunJ(G&Zm??FoO+AfU~~bC_?Bq$c#pA}e)c?nGnOAS>VbE|QCiAMd8s05 z1T~M^Ozoi#Q75TCP#;m>fDAzVR|ry=s4pCe<})5Qn~oRr8@YTA?TK-o0O!$#O+Es6 z;E4@TWu{^x`@*kGaDB(|LLGj#54Z!xgf-{&^oShI6y`icK7bivzUPv?m#|6Cc?cj4 zpCr(En3nUCI&dzBKO=Y1R*bt??d6XV9rO?vuh)|skjKARkl;-7cxWD?lIw}a2=W}k zCdT*o2f{>?B`o6j{p-ucat9R!dW{iWTLlQ^CgJQ*FE1o1afi-q*IUkw85`wn?#UPu6yY1T(xPn6M4gO4F+nyU`i6SqwI*-Iy0?EU~`8 zD42Yp518!X0!(+{%EbPRp*xhENuw#Db<$!+WxBN_CqkPtoW7XPXXw9?+asbUTKrdx-WlRyR5sNupRud4x0&xPcv7q}J75aH;u*@#LtF-puT&Y!akv%b;>zNNv5U3l5$@FeIT3$% z+U$p+S;|?HWSG9sMdx&;!eC^0#>)gwdcm^0_s*QT_wHp21oY?y3vaq+(xhu{TDV{r zqZ~YBc0)YO1@RxHC{Gh~?ES*5uZ-h7`}XEzp_vU3~5 zabWai6;)T~=lFxc=9x2^vzZ@i4x;DLJxGs`$Yu5SKQL$SoH=^|yuPt}Y~#*1A78n2 z>B`5!m2II+Co2ko>V$V3`U$VmBdBrI z>(pPVvw#H>;04uS3PtI{0T2s#3`7?1Geu08pfH3(KH&s}6B`Z?XY_d9Gk5|XGWY2; zVN(p~m5kf(!D$>O)J>Ss@EJTBawGB^Fv`;41;iANn8Gnkw#PzbAH@Nq=|qjk5Fr2E zT*PA_YZM>j26$9H1OHqG{JF`G<86xYwYaAl$dSjPkCBJgi#P|K$vu46AdeE_#cO<8 zF<$QZL=)N38T6P0jZNsl1ida_K-)I(Q+Lz>Vg^w59 z6&B;)PGsfSJXq7*aA@aFP&xIf;HZu);L2_vnS(whNASwn+!7(AIH*0!&-`8}rcz@4mZ#_ipxWp>Hj;#4PXW7VBY#R0>R{cvh#x zQeyd=`^0g}Nz>UO!TZfc$!l|RUNqh_T>$Q~(va0KnsqC*RgP z^a>7waoycOHFj)&2~d^d>ymGM92+qr29H!$=I0j_Oa;o(Cb=BI%F41buqGG(8S&rb z$+@}5z?GzAvfG&YD=R}+l$VcH%$UlE$C%CMO+ksooe|A*8Kwf21Ke%KahD?^@u-Ya zZVFI=jN~$0YYDCu-h;jZs^qfKWfrxR^Lqo?r53dWhKXFc4HFxekP4@k9gXLDbk-8JrXN(*3G$<99|E?0z@iNLWLYbi{;G-V*;;G#Z&`4 zhqA=f5OM)b^oa=8oq^w$;HCd~d=bRw7?B$hQl*S0*IZH$kIc`P6zU-!OE1>qphNh< z_-bOjMI&d>n|N1oI!~vZY(xmZH1U|4#TOk8DA zsVoH}+X^xwQ4sTcp@NmNVwPo~M8djghrL-U)|*8BNQJZ5Z_Y8i-OV1q2I3|6YXlYY8MD-+=%s$dm3mt%kdYGeboSquGAjuDGN zkW|A&Qk7&|Ei@w`_R`{PQ6BwB%p#UX)M`*F)xZt_WZN&H93IiyOI4DhEZ^-JRdm-u z9gc}{tk+RRj|B_GoP5S6>J$Qv?=dqfaG$S@)?o1vEiu~$Y+QUD{jg?;`U zg+jxL#WKJ`R>VH5(2QhFT-Pwbw2s9MWNhyV_YCvt*mspBaQ-pV$RLb8lq+%VuXM5*foynrYW{s|tasM4Tw znY0=9QgC8{C=@>XS#7;H(_dDrt!r=1FRZBxI14k{o!X|Jk%eK*MD=Xa=4+~Q{X;Vg zGUeIeYLz0hKq}p`*IJ@3*t-`l$O|^cBjT-ly_p^1N|c*lo1b4xKU^4^*t4)YHfMUd zy0kGzZ(@IhmvTR=hxj~_Gmg!f{BTWaaY;dPt!1CAqy{`sYA!(kT3j99x+GB% z3(j=vbOlQI$R#u%O(`!>+}9#9LzxKT1JIht3nKf^0X9_3lWJsD1V#drLXhC1#AjI* zL)?m_H@om+Ya%NDB4g#}EyXCl_w79ZP-=B~XXZ>MEC$jaAC}t0qj2B}U8udQGVtls z;*z!!@w%rY;0~Mv??(q-DsGvxch8)MGCRxF>Y+15aj8vm_FgfR_TU1yXS%b;-+1rW z+xG+3uG14ef4xq-X#$vw3kY_b7u#XPbkA_I3pMcYVF^gN>r{h**2P?YI;JI748Pbg zMrg{=_@jvxT(94=}R|s5B%;(<-$r(H|iG~`f#do;9u~^uI1HJ=7muL#f64% zdJ?E7qXW#{J-@c$Y57WmO$^A?Vnj=c__HKCL}agw%)Gx82QEA`Tq2H5`!<6iNGkNgoEh zK0h=(2alUKUIA)}EvqSSzFOUoQ}o!beJ>PdH*gXOo%2f?GlOORO5(ehZv)vv;FnvL zD7LtTnJu-|tmTm|s|D|@CZn)N7{;AiO}X5BTgeLNM_!$s7r$px^s93xRqj=3M>n}8C;|4@*PyNezel{h z&O;G7vr$cKlk_S;bO(rM7dD_H`<*ET0phnr0s_Dwsy{XHFSDf5-%G91*~vS7kykEI z@q`bKn=Pcx`tyYT7ht?E*(ah-p&usvc@|Fmy_7GThy&`C2w#>@oAsB8=i+?XzLXy( z#LGOhQodF=iW_j)$~)jNQXZn^OZ1>)Rg7pv!|XhCeB0#J8y+1GHXQxs=Jcg*N!{6F)<3(MbCfVGSArf2lVZPJ6>JEh5~M1 z?Syi#>Jr&&4ql1ZQP)xj1a#~WkKY+0CbT@&M$}YEL`WCHI?UPx1khTJ#}E7Y2w}U3 zN}FropTK?zYFkX?q5$)!5so@b<+b_kj+}<9%nWZ^eqNi`VK4>Eo*akW-`34%dE9&? z&%+nV%Wv~$7>z+vuu>^8H_ zXtY_Z_6&1@9R=0Kxi)7@QGo5Ar z-7WtyB8+ujF2)jm!DS#`JS4z{e`4xK3Qq%oI-3A}Fph)g5)9R!fVj^k`v!d5^zrMT z8n1v9W>a|YUwAeP>s-W-3;ynmmZqS44*K}kw}g4-ttV-A)x5(=>McCqz$=m;&Rdn9 zeUj9z=;Jx?4w}Lf+a=HDOg|f0D#!>U!z{p$EMojemJ0rPIVzxDoxBnckWWxg9~?>o z;LX))jR71}YK1nOL9GT2Un*TlC=<}8{AF1r;K(GM*g-dPCb zMhCOWYBx0(HPCU9CnL+IkdFIm*E7E8q_&MCuCR}s-4$GTw5RurN!5}4ZZFt>8vwgz zzr1g}ziP^~E0*qxzBIWlyCTzR$}6AUpw=un%+RK6nJtfg{VaYo(8H71MHUO8*4{$F0GuZh1KlONn5(XA|qZ**s zO$bO`L&9zApnCGOj9|zHI?5+Em`VdfMkG3>pO`~46CRxZ#00&pB74c$rTY)hTC^-* z>@j9}V%FmMUPJd^G+;YU^CBeYkF|`?7Qc#G)yWRS6UyiZHFIUs<2O|WXS?mq7WoC`;_YCL%n;|ewIC9aSIFo~3|tZ<@v&0Dl#<@W6>!RA>{UGo-M(~?wrb)!iL znlE0EK6RsS(W~g&?vdAkyDp;(2H7)GJVHNZ214yH^)!GPFdfi4z(74S2I^*xUQ#1K zsavOMhZ`<=7=GR-swDVCtUt||Dk9P|{GF?bLb^yz#zr8F$$Q}9j3$P61VHQ?c)x&z zUdY5#NG9x>TCncp4wVb`JhT_R2e+l2Pd2YVo-t3qMhjMh=v+;Q0scZ)PMI$bQW+YmrTE! zSKkB)aIEt~LHW|92eNU~Pl7~4=6UBS^y8@;zUZvp4H8>t?s*=FPnl7_saPq?0L-M# zTTcQ0zW7d)AE=&!a;%5n2OL-exY%Rvu4IhyNdTeKMi9+x0M^ z2ltc0NeUklmYI@AfDMcWwnrqhO+YqC&J5)sVamubp@btpA1(;m?Lm8TT=LFDWZ1As zLO8;4ixz?xhp(upSTP)x&EVICt8m}@5w8pRM0QLGL!SS3n0FTNv%)TdKE<0VxCBdC z7jd^z1p#3Q1Vv5U2Li(UQ4V-Q(@QXmh*O-$Lf&MpHx%;1r@cUI>dz)&`r0n^-UE-I z(+`>GcSu72vMvyKVC&Zp&H_tA-YuFf@1r;F`X0@l`V`6CisPW@?(e{!si(Xl__u~| zxFI}x^r(=>8@lf9htS)Pq{A~G`U-6IggQI#LT`Mq1xViwdHEP9`d|zC{@oC<-H=_N znD0{G)`t84avsN=Hff2BjJMVP|2n%8z$U8n|K1##Bu#Tojy7%6CTSY%1vE|5B5hMn z5u{KSkh>t2bD>aya;$_xp^C0h4uL|cvK$sf*}sYiD+O2O7EoM4(Bdj9uDbqpU7<}L z|M%V`ZOY|;Z8I}(-kW(d@A|%PzW2S~mx+r;Fr3T;+E2z(N9ANSBH=4CVu4N_m+P|0 zikD*SroTPf*sXaPN4AB|M zg8;)Gm_28EN*;Q~$~x_;R0le}RiCKoKEHn#(NH{TnO$v8icZPvkzjDw$3A#-%irrZ z;C9MI$19vFRa&p%kCr58g&3`di|>`67#EMIqtTaMl|!gqS+2FeG?Q)3xH zV5=vf5lSA8yX*-3oV?>1i#ldt(x3^x9JJ+u!qtCjdTEfw#f3ZwP1k;o|!VJEO<~S(=MK| zy6m9|{idTnnu4)oeCtu*?HQ?gFuL7eBjJA*kVCQQ0dz+)Ge?N~5k}{{XG)HfD4iHr ziYTu{d~Dv&D)ZSIJH{Q z{XO<%3n5!!zQUK{dPx8eN>-I2Q1+AvkDPR*Q_s_C7-sfi&zw2o6SkT925l%uKhOaF zP(Qok%WCMa{&EHCLe7alQEhnx4X~?_mR|Eic|$7&6X)^gc=eaCUtkr!ORr|7k9W{e z&X!B-Ot^@3CI!?|2;6Rg%S-s!LKq|)$Ay#bcINc783fU^5XSp$5=~-U%!!!zc)W{4 zrXo*uulV?0Rh}ZF7mMy=W8#fDrudlgSh)8ZnMZnf&<#%y984@c?CJ4jO=;`d(wdr5 zu1jeR^TuqF3)!I-Pf>Puk*CFEx<=xzwH@bf@)Q+$(BnqqYpF%dmiD`AB7ILXm^Bk? zMOz%Sk$=So8~scql_!?JeK|e?8fY9 zk8dR1!Q6%e`3M*aCW2|898Hi;5Lw9S@7HVO7Zr1-sfj|=92I0e#J;>W?ObIAl~ zGdpp%1c6j=cv)zMUeN|~csKsYF`HPM7iyr}Bbamsa-Uh})tO;uDCoQ{nbX0WjS9x; z((!^Dn#Ilx?l^3UOTl%E?A8kpF@psvOYC13NmLIUd9|c z7_DV?p+#>qspxBMI`azTd^)QsfIcaN^Rz{1D11a7DCglYw35SPrPhZ|ZaK1T7YF6L ztsCJ3pMTDsJ}hJBX@hGnpugc(?G#*C1FxkHh0gDnvCt&{gqNfKFelKo4gYcZU8*{L zz_7cQJi;?ejENlDtWX&6;T5^uY}XqM23w3=1&g^vgF*o(@`(m~4SW=GFj)hqDdjOX zBmT3+$W&+(w3(vS=n$6}I1MMDdMz8zDU>|gz_9RrIO?dJflbGbXW!PoDT@vyQ7EZTA9FZ<-I2Qp9_y$?o5q2pU%w{Jg_qZFx{6x>|GO8OG& zdw^i>0XhuY1_f^L2*bbqOPOo1bpO)8znAXk&c5o)MDdxvq73%YrHA3;Ej^aK{r0lt z*WgP8Lme41drEX?DIRx!07~lVo#NdbR{k9Mcyq48A*aOhGx5gSJ&LI`~*8HM)#^^Cqz$9ND{~?)UKFQ^r9> z{M7j<0Ua4J{45-Q`st#Pvw}y^!iPq}DyCa&cQ}zT%pEzg)RhYb4PC1t6_}6N_Xf>tD%g9@eWR;9c)~HwP+0I-sTCK*QgIvgnWFP#F?BUB~kA~3j zR2p87_d9lc`|XY=-p#VRX1&mJ|2Jy_>w4tcJ_W>^G`LkDlh)}-KH`kjOPr1RiOT?8 zfd}M)d{6{>gMOGk55^RF1Q-LxE2^Al9h7i+c&RSh}?)fq{s~te6ss&B;9TF-Xqma>~D<1T{dTgYe$HstQ-@W!gDzU zQ)s>z%2Fg>117WEn<*p8YZ(aK2+H}*EytL3%(j+egPq~OLd_ISBHpa@I9XFXMKh%m zZ}UUPK+$YysDQ=_XqZiZp>XS)&WaarkN;s{MO((sV9k;@-&|6)e?PkD>fWont9-nL zP3$=?!JF&w4l4FO(8*};r@>Nrvcjsim{bW~k4*+zR-wJHq=>B#OhA|TPREa8+cNF;Ok3x%nf6Swjp=O9C;mD1S4nRR z|B(EEf`_89tGh5&X-ZGb>@2`2gE2;CGIxU-Hj0%oN^?fozd;2af6r2^iPYP^W$(5S zFys!H2pr?KHrLlTv#7p#>(*x2T$pj=lZ?W`4ERdAkNMG;4qwSAgf%3so?KWytDehk zIh0;ln9lbi`xjoo`;a`^3Dd8O_(*V@_%P^_(2f&NRm~yqwM3c#kx)$`!!VCD$q_c4 zmu|@6*F$dY`AhXfH!YYwdD8644MR4)b9U>*PlobI@p84Xdl~w9arM;|Fz!s{h5FUi z%eRkwyn4wv>m;2aQTMm4-KOPd$u-8<2VWg~7;$;*fm83+ZaL>2U0J=Xa+>fD?j)62{W!LPwE$c%Xg_Y}C=LP4d9uWy87^D@Q)Z zIpS!UXfLQQW*P`ylWf){)Af@{v8~@ifsbJ~kV^u-tO5UICm!e;x_ z`R+O!N`F4#x!hJar1S zpk_9RWBw92$~2xr-!n7eNYsp4;0WkfGunVp-%TIzX&E*2>usFh#)9A^W@8}0a@5~P z;2+FJ8i4-C5zu$m1%Sc80bOT31IU_DTu9+N%!~Sg=RpHz&_q2ixF{6%{dZnzA?`hQ z&d7^&ESWafxrvKYBY`3%J|b9M`_;epNN9BO9>Qh>5jV1bv9u9D-m0|Fd|FxwM_wKO@dpnvW%~^lvISj6at1( z4(l^sh!@898KxvYV3;WUV^w@~lumDsPRe%VnQW zW$2Wfms+qY)mc#BOkGuwnwQ&YaPd{!;)dra-)vDRFfAK^CDw9+FrsG2YKas&VM0}* zjtB*KO56H#D`U2~iAK~*=h{hk4=E?GsBR{6PQ>QTCb_z&YWGes=MG)FJgDkbb#T%P z-)U9F#eGX>IOA@C-fime0Rv(dzD}2)`3Ek4EIok%6+=I>rtn-!OweZNGh2)+BZ>c0 zv2@jQCvJRH@v0fU=P>AXYdWVdJ9LQmL;0bOx_9{RNr!6&2vJ`)%zVG^v_W51#ks;7 z^0oTF?j#N(?6q@pHDCB z@kC``OFG9VTDq0yb<#k#%Y>@KA04im(1nGXPI;x>EQvgqZs}Y3L=WUovG}AVRk-&0 zd!XObzm)pgDlE%SOw2DU>{^`TP~og_hRV1YvzCiWbXW}rYjUEBQ^%O&lsG4xpURO_ z%oZc!%*-#%OOVaezdzh1dF5i-eCEVa>nR(750tPpT{hhQaZvIlBbrSR^E?8OD-)tH zMbfgB1H(UnN|?O{OPmpPsat*dMp{2#aq+6{uY^PgLQ^UE|?o^cbc5D;|kaIbDt z*tOyQ>M|iiJ>PQrWHM)jH_nePUTkg$sF8x}e_Eo7T6wj)5vJ}90IA23IUu&_3Oa!M zQpBZ_IT5Gb3-xu&uhnYATJ()xn$;n9k$3zF{Y32=h=)o5!$#v_jVCne1sM=z$tn27 z0Dd(F!Q{f2R z&c|PXn9}HtxO$EEsa{VCpw?)Z8WD3IE1@Wq%HZ-zlXP0PVD&y+;SzELEsYesh%WA1 zy}eK->UtaH=}q4@rOOlYb)u{=_@{8)qnq4cA431!Nm^i8#H}>AEC%+yvJ)B~D&41z zGfb_jnrevC?rXi=-gHu5p?s(Zc=(QX$cF^f?pMl3x({h0li5keez;H^X`Q5S>pXe4 z@~!)+N~MKKC+A*%6x>>ln`uRRu|jP`yVLSp^~djCK-|G}b*EsOS>2-#(yLobBZ?NX z;UQ(4Mo>(COW8=WN5cA3JW?4pE6m&Yk9%9qogAAYZCV?zm#_FwO6cs3iILrntk~{BU`P+a9MuFc19i!?Y!($(QYce~I-;-B!7Lmm ztJ;XjB15VrKdq0TCJ5X{igeI*`poX#XHG*`U=0>)nkpu3+BB(xa$V-;Q}gCM#rO`8 zQXHTO?7!;J_j|P+$kd(0>I}>fjTIF}5q%guu@p{Ux)iNN|H<3_Mf1))smigi&S{E^ zH7J0^N?K2OJDb1Qo`+?+TQ|{lf%LaNU=SD!rr)j4VbPk>HCHC=#?#UGk5D&+GfDT$+X>xT?3^pfZGQ=Vl_UZ)8oO`uJ+ILXnAy(dNhQ%4Z)7Cx1owtzMnffpHR_vSD_6 zZL`vXFI8-rcvrUjSSWe(SM;&19XU7QSLlB!|IMR5C{4gGoX8aeSYcKk^vHI%DC_-`Q#A(B5=_O9!@5d8T!A467H`{41yC?=7xUv&{ zQ!8p}uPv{G`n_7IIk%6N?l~@s$EA!$ZI7Nn1c>rCa&t0mTvFqxB*U*Q%l=3|=_Qf60 z_J($;ME6n-D3uxb^47r}ER>j+aoN!&DeZtnDCd2=apW5?_w^T{VH?LikN&ewia#Jd zE%0(jBc^s)iRhRlIkXM94v?=3EH<}^3q<6kZ-g0QsJ(+iL~Tn?mIl`x>&g~^Ou5K?i9V8&eZe1G~-EK!#mIKXy-}+VOUJD8?>UL%v>{n+rcsG}P|?I`}e980N?Vp=a@A%ncwjUPS)qOw_rlJ;kM#X&^OR z)O*|2>yphkN0p-#KwX-p&1Cy8+w`DE|Bg+FwVD`>yEx6n?w)@5kCU^jQA6pQjY}T!<+|3SJ(gC| zFN;@hNgVwZ9BD0@JfwDTL64S#!Xa71CeNAD`Q;-h_f1c>#X~OMcHx)cO$80#W=T9Kl9n=L%kvJ`8O}F!V%fY{Z_jyu>p) z?TpTO)e}|?cnGq6W8!5of~b+pvwHLPUb*8`N=^CV>$@gS+;tt{LuK)g^_WCM^NGsJ z6X^QJcN)>Sn(37%n5;(?ywaBD@)Ts$mQNclAJx;uMjH(^g0Y`ckoWU>x(KK^lnFj8 zKDqt+Ba`{ZNhatFx_+W^>~gs7&mV5YIa5C}Axtv~he)KlU>B~1&H#9A9-9ttZA+3O z!umG+66*hkZp5S)kWH49J194IP)kh2iS*lW6A-g$viT|4%?6slC51zbbY(D!C}AKz7&$TKI*Q&kcq}l#ld84V2I> zBz!?nb|D>N1i_W+ZpfbWSDu)9CBn#pnv!TSsUX!}&ev}$6g7%ywc_SYg*qAsN#M4a zpz(F5bBNL0p}?Eq!kEKZ7=+S1v*(=rY*-AVFxRr zT>wbM9?2v>)P&)#XKS;Zfq?MnTc8CKTdM3~eCt12zy2eB*ww8;A3i0#*9QqHrub>d zL{iuLwqC_yf7{v%I_GJkRxPaCXcKHkn}YOpm(Am5sfml|kb$Nq^t~7MLuIHA|Chmj zUi5ua69lj)TmX9_F#Qu5K)xn_Q=o|@2iO$E#cK7zcK_WV#19;VK68XVWBG(ORiWg* zJK3!ddoac2=7W3Z5mfQ62qSNzbNZ`(DpyBAyR^^YcoH}=ot#4h;%?wO9ch03}XX(?=1p)XK2kK6;o^$E? zz;k;1r2hk<$x=lC004N}V_;-pU|?Z5>gBAzE1uuxD+4z>0|;Dr_Vg``{{QyhOHNKU zAt0B7fe9oE0GBuq2>^K7V_;-pU}N~tz`(%C@c-@q|D2o*KoMlXqyYeVcLg^9004N} zja0F26fqE;yj%VyQGoGm}eIk65BckeifT3~JfUc69Kvou@0P_BiA&-Led(yvJ z^zya#{$kIsJ(Snkd=K~x{Rg(u>_fpGx;r}l!}k%}jKTXg;q1=a)$xD0JDmfaTPWr! zY#MRDxeAd>LrKbbO|JW*BzLi|CvF8U-+<%GVjDph&)N4dNk3C|$lZy|jmq-wekki) zR;M73dsq=i$Ytkk+9Kba2XQ~uR^%boWQbcz=Bm>E9&++li`pog-G{i{Z^`*mSlSG6 zyG34m+KBQHd058WG&vI+NlXIO421FhdPqdVt#;82sB34?1!|Of&9J_^u$g#_ApOa-Dmhb(PKX{e<-mxfSr|s{RtS zyH|gOtlhcdJ|cQ5>VMY*`W~7g<{7Zv#~|LYvg>igdk^{^0#A>aPwr>7s|G)!y(ot{ z1p8f0!yLr>bWYAx*lv#W%FwIcrY+_%_x?24pWuv-Sih3>*J3`HB|RwnDe~mm+{ZPQ zK1pu0Nx#GOnEwB4^w?$2qSt2Pj)TbO8P>Ogo%;)12+q&3zoo}!UXBKMkNv~Q`(f0- z@cL=wUIKPEJd_g^)FTM=J%)t|F+=7d+GZJO8cu$004N}ox*KQk_i9+U^FE(O!5o~Q4vj% z;YWz1&Nw2E6wQ!%sAQayBBH)hnt6!i3`vp9IP(h0^URPV;uOhqoGB4Gjy&@Wl{x3! z&E1@H%sJ+obMAKAZTJ87JRlGV{=bBS7$7Cc=|%MtdKtVy-WkWDkG1(^`ONzq_-6QO zd=J3|VB2xt@k2-fLn4Kt2ls4)pS{A*07Jv4yn6?;eY)mX8RusF1rC`gkI_yRqJdPHpiCe=_ za9TVBFNqJ1H^e&=@CovS)kI8UYvOtm?HuBqm;fe-2ztU!GB4Sb>>{#=J;cQnQi>{N zm&72=o@br+q)OA!X+WAe9h_cpfqTJ7hLO|BQu6+nVhW5xrZin-U7Vt#s50s>b?XxI z(ov@Jt8^Ni)Dl~jS@v+YHQPhS(rNT^`c#fj4l8FbSD3qag?D8z z50=-P=e{buYGDL1c#NHVc79*}1{1+-WbPFxzP7WNEOQ~WFtt!xxKM;D;uo2ULB+V@ zf?`Rrws@CKW{cT2_Wm{IHA6{wNk&O)$?yfGu!VL#u&m zW3{J-Tl1vGU5l>e*Q#nA00iIwLx87_RM%SP5C#j?LeI^{oAbAlZb|Af^#k>e24chL zZQN~LBd$?wy9?a) zv{~h*gXnQT>V34UOjQb$6W<|w`H!)WSNqn#UwsNZ)vGWnx=P*;?yu=z zQ)j9tpRt~q2XF(T0nZQNgPcLjkIJE-A?48FbLR8KVcziK3&D$N4O*if@gAX!IJM57 zq`GJwM>qG9`*KGgqvz|FUqN3@8$brYpf?=+tR01pfyYY6o)`&6-Z*T$Vcc!fzQ(*Z zO;CSXn>3r{zaC62ze#^HF`YWCnMs{#ov~Te7PDphZS-5Mm1OO(THZ0=&DtpMvF}Z@ z{~Ywe3#j^|DV4B-wEZz004N}V_;-pVA5rhWKd@S z0VW`31VRP|2QZ%j01Z|Ew*YwBjZr;I13?gdcZr%P1O*9Vb%j`1% z4a9l#v56S^8i$a;t;S)j<5A-otl?ebS>}FeJckEkQR4_!j3L*QkDZA}=A8 z{vVm-gnTu&bezN~&q|=Xv`qS#oCDtWMU9$!Mtm98$YP6U4%>nMaHMy|Q5rKH;gTF} zdel#Jz5%Pbi+Fh2eOCpPBgYX{{Sm|7?V0U><1jc`!APs{+2;#0qcR$`G;4Je@!%(n)kOokFM5 zX>=93DqW4PPN&l~=nT3hU5l1^EinXV5e0S@djr4n3EiN6)7h&38&d`UCxu{zQMKztCUlZ}fNi2mO=&MgOM%pa243 zpokL6sGy1(>S&;e7FMtad$EdrI1b0-1e}PI3TNPCoPtwv8m@w?;%c}$PRBKH2Cj)~ z;o7(ku8Zs8`nUmZh#TQd+!!~(8rtZfiyln$F~B;8xG8Rio8uO^C2oaVV?WNq**Ji6 za1gh_ZE-u?9(TYUaVOjvcfnn8H{2cfz&&v<+#C17eQ`hB9}mC-@gO`HBRm8a#)T_j zV*-UKW^mx*5a#f(fR6wn4kJR01SvMKi7jm72p)=u;o*1$9*IZc(Rd6Vi^t(yJRVQL z6Y(URhx2g(F2qH+7?P2Cv2I@Or!fZ^WDMX1oP&#oO?9yaVsVyYOzj2k*uE@P2#%AH;|7 zVSEH1#mDe*d;*`ur|@Zf2A{>}@OgXzSKy2I626SD;H&r=zK(C;oA?&Kjql*Q_#VEG zAK-`h5q^xH;HUT*evV(@m-rQajo;u({1(5%@9_ux5r4v;@fZ9Rf5YGL5BwAV!oTq! zgHwY6!!U|Q$tW8YqiWQQy3sJ2M$1?+_85DORb!uVoN>Hyf^nj8l5w(eigBuOTH*3a z>bq-e``4uHtgS8EcHVaKwwt%TyfyQ-pSOd&UC-NL-tN!Z&cUoTv(`L#c4_8Waa>xY zv1^xOWkt4ARsM$Zf>4zl?kB}Kv7)+&ky?bwb}@}rRGhlrqMA4(&x&RWiBl2XjS~d( za-J1g2l-7tGW%+#0aL-a_r80%QNg?R!Sl(c8X50P*q+{jVv!IChkHNqrjRp zC&8xgu_D9OWv85m(v)0(9Beg0&)Oc@Ze)9k_Y9SlR3bHvRP0p66uqDq*z@Alvu1TZ z%p`OIU&Zx}z)Kfu#P&3DRW_*QdK#7wM|Ln#m9eE;Be7;h{vQ{|K`^h1SXj}#6h^L} zlx=IFBC9wJ{Di-Ild_vwo@+M}wUvw<<<6X>uJuiKk~nq#HuFcGnkLOmwUwW!sF8Id zncm9uLus72)9s?1rQ!M$o|oZrUC&*aTDB6ejW*ng3M!#%CuyY0q4I6lt1ql@B(|!k zY)xcA_AuM2CT>!S9V=2L+fnQxxv*B8sBkp4?D?h@O?C6#9PDve7cGBd1HliRqd289xN2rBf8jpk+^@Z!_Y9k|&)+@nWx2?me zVwW&ZdNtRd1{o~2Bc=S<36fS0%UDrkV5Zf_mcLZ3C<->U9gR%YR#Y=R4fF4s5!yw< zBQ_^?kEqc!^}J@T#|z8z_Np!0vliBlS;d(J z+8nUWDYH;T*=CKrBPQ(04c|~v;_{BGdEW^l_XyM1@@mZZk?qJL$)=kyFEhsr$%OX0 z*UT6{;?1MLn5*p~M{``wO^#cMlP<DP23aV&4z(Ag!+DHU0lQ$)*i z{W+5}b7dt=V~3B`;^)M>=Q+rY=owK7rhoXbYpvqEV! zQIh5&7|XeIG&Xa7YrfSFr$Lf0ovGP9^J#sb50lL;arO7M>v<|*$L!sm0(BbNl?J6> zS6iV(VRpNGfnheU6ffA2(v(BXHx|mN%sAJD)}+d5PV=HFZwZ;Xq7|K5n9Y+a`JM7Vj zlbw>nvt>^>LFLsZUOrm(9W#8GEpU*Q+Wd}I6^V5$V=DW_#m6-7t^Pu$RmQ@PrHzal?w z+zn-n(-}7ArA_6I1ODOQ^B+$bbXN4)N6W*@Snq_)q-D+ZvYI2G`YV$l+4Vuj)|(sr z6z5l|wuwj9*IHR+(*vVGhB_j;BIK^tO%Z(&0}<;Y^v||~?fq-)Ypcy8LjeuD(iPB9 zKtlly1vC`Ua9AAm)-+-)T1P}zL@!(IthRLeA_gMXMF^<9CPKcp1=JQ$yC=dFA&9mh z+Jb23ww=9}w}R^kt|PdP;5vfq2(BZzj^H}7Q&)EC3Zg5Bt{}R(c?a?Z547`E&k$%g z-|~Q&xBa}8#e1?wPj>Ceu07ecr#}d^mqX8yjZN9ulx0l;nF2BeWD3X>kSQQjOzjJz zFNnS%`hw`^rXJMa1k@j}zo+_}fClnmAfSPO2J&Gb+YDrzL0=}@qRBP`L97d6T@b>H zp75e4yyyupdcupI@S-QY=&cK4D2SmTgcQA@Acno-w4<+)Nx_=_AP6Ca$)sS>7SR#W z710x6is*|Nh*%dfENv)Go2&{YOj*kmN|-_kQz&5yB}}1&DU>kVvPnla=?Fr|U#O0Nrc=1OUYV00000000000000000000 z0000#Mn+Uk92y=5U;u?e5eN!~<79=jS^+i!Bm600*lcKX+wfW(HdY zfN_R#dm&NLolxqx_tG1O83no>L_x*xw{C^(d@;VG{rRcc|NsBLAX$vz?hm|2KvZ=) zOIuYlvYz^cEXd)e6i3QlvtuZ5)HY)BifjsIEo;AS{=hCrH3#ONR4X&pisNaE6`o9R zCg{jzY$xUj)qIF1h0WrhL?M}8W@&a!Gh9f-773A;`E>=NG$e zQTTn4msXK)xyWnukjC7{D2KVM!UQovQoLP36Ms;#ZSl^uAEd?X=VDINb45_R3pZqZ zIDSR`c&6ED?Z#`2le(q2iuYd=Deu&3#!ySRI&|~R$j+|tJ$mAaCVzKi3FX+15)CaK z?^A^5Yb|>{jf(*U2|VQkK$fsP2p<{aQXcs3gg)c<56{o7w;~tKHezFpF`~wZ++PsA zQ6Zy3Qd-?4S|ue6Kn!eDRIr#CC}$KHb!MG6|39a_XFm_-F+9N)48sVKRv;92e@dZq z3YA@yv1(m6ZfXYr57K@4GMS(GyWsVkN_>l!YT+WE#05TdA*wOmxw#-Y7h}V%1=M-B z1r&~@FDu>7ms9_LB*#grv5IN>kYK=2N({OLNe$YJ?$SDcr;!Xv(Mb$RN&zgv<=hSw zHtpvfQMYB4sWI4hAGuziRDN$t2H7T-1ref;Esy{I{hwOWEKA8^>;Pf`_)03Lsb>q6 z0y+9I{Q1R0fJu?Vg4o$J6Kb+ZsU7SInvjTJgRHY6l9FePiTiL0BXY(a2@WXNhh_td$RP;vh>mu z*hwnjT2OSUf`g%Rfx!dOs^V{1!}D|N0V8@;kI|#X0tOrGuL4$#1*~9WW7J?oZ-9t^ z5+;ZzQ&c=LP{G2$x-{xey-+SH8Qf;b9WfnZdO~`~!^_ui2Y`6_R@(ma&*`hS-i)+( zca>ilGaBKoOl@>rg9tImoI0frXaIPxqa~6AxSv~?DqAncbiVO$ug*S=6lXUx zl9MCg>dNcLvI9%-krFqfR&xvxIH(AU>c4funC_(m^LQ=&Zfi;vRp|(ddV!I!nB?F0 zof@J6XslaoY%~_^QyaC`Me)zcRtJYSu-)E~h=34a00$$t^KYtU3y{Q#m$KF&>q2)f zx?MS?_T1&7pC4wx|NnddGXs#E8Gs}JQX&9K;tU9h0Lk3}21%|yX*X}s9cpUUD~Bxw6*`%>`@byFs}U)yRIPFsr*bG`L`T?WetqF{K(Ig(TPtf-PXpyZL|S{QN}g>q$2cUuk9$ zMuapT8EZ30AxP^G`6y&NV$KQ*nsok5LOg?t9i-Sn>bBY4fqNYz zQ=n@|#Joqj(KX1nx=r-b1O>z)vB4z-vi^ zQhnAu^R0O0=d&W&Dxdc(f_$*Yv#Agn(E0&x5h5fQ6rxW>FX z)O-g)e<4;w#t47|5R_&tBWz@s#AA`#O((TbFqnhrS!$Rht(6d^J~~Ix~WyEyba@TfgA#-$bRZ9rYaa zZpQb7i{kWut)CQcn3+G9GxphJ{|iR<>o-3ct})Uhn_8~!Ppv_O0%bI0xC>I4w5-zO zu_LZCX}TfZ#K?cWv=R(2j1r7t38TalXOSGSvEy9Qa+!IR5g0F(iiTAzT4jkN!ATyh zdXZcu7Z#@2gzHxk7Rx{}NHbm{GW20br{)`XBkoTayP6pU%fZDEJ77TAj-;*USj}G! zDnaLAQdRJvX=X!aa6*^?9%IULU8{3~cs&!t(#=2iWj$W2V(Kid=4~*-?F)$x?6Zt?#L3xW;Uy>L9<`j1#9Vsg zSpQ+EdBNh`@PGJyf~UIKb2;x(_j=JWq_QU!!@x6)wv|tXe;^$R4`yLhn2V%mn5~xYV-86RT_{^9xL)C)pZ(k_HmcQ!Ud!VL}*IY6`w)Vo6>g%u10iI#U3Q(~x z3>NDY?|i*Kc`Cox>`OuIq1-ouJRbzI7bn0UL4+{1_s6;Gf1Fq0BRuusQ z-{-N&1yZRGevvn@L=9I=`7#OBZmYV=p|r12VuVKp%5WNdb?cj(5BPLQRLbjf&C-_! zfF6|%Hqn#-Z_T2z&7v}E1-G4+I$)EwJfEZn@BIyz0&NrM^idp6n$=%;YfnieW;TS8 z$y)RsG+SS#WbcW2GPiN4vj4)w{+rB7kvO^84V7;eoZ*qJ;0oV{xEuTfL*mg`-Fd%G zh;%990Q07^h&{Z9`vb6MOy3g9F1W%P$ihjf<4s@Xr=8XzLOEZs*oR%V{nnY-GoPGxHxbui*F~%WR3Fx4mUFByJ!Ezq72Rc=SU){(smx4&mn(*ejEX$ z%{U@$l2|11aR{4g=wt>xrK#4nmgNx<>mnCgnkaKa(YADKekz2)NEdBd$6csGT14Q8 z^`xn77TYRGwuqFbK95+*1YYQ=+Qc)t{B8=N`MjT~-01T1x;teM`MphO$^}H$5@8L1 zha*VxZt$nG{cQk2ApW}PlUW7!~&OV2^P;xcw zd5s%lo{IQgY3rv08Rla2?xm0b=G1ZvMoyG04Q;5bO2x3!+lv>-sz$4}`@+Bf?sa z`C|q>2AeDd$roR*51!jr3_~N z0`!Lco1wLu1getp<<6^}xTed@^|LF9T)Z`8FjwnZWq1>Kd@G&Wwj*I#2nA!+N7ZIk zq#?ANj>lZqoJ(bK2XM8o4f=(RA`~KA9bfS?&t(^^UN< zn1f)zc>?&W=YdE&3-WNc5z5HpEP$18NTrH>t|RUpz3G{1I-^QKEhkvJoQJ$3dYNBO zQ;wO%+k2B|IM|Qs@t*zu?FM{ zP&$dBc?`8ZHd5%i?X>4@$ro7=g8kr1E#&;cD(HlDIi8M@%e#umoB&`3Um7wvZjls# z)Bf{~`UA>=_vz{$VyDJ?^q8zK`TBbD3y<{sI$yb`UH2MUi1?^;0&q}3XId{a?h$|^BLX8xS z)M6eoM5{+-uWipjqn{0g@Z?8^oOT{ci9jePbqCFSdBQ{|PeFPE>&EF#l8FR+oZq2CI&x(GJtdV^T89-tlsuQ zcim}R%}mi$N+6sVOvnWu;Rh^DNfi(z@XhH#HpoVHeKq|0gh$(VmJ@l!Jii@#3;Slj zl-}M9`UD%>8ylUi4c=_yq2_fu`B#(ooE?Dl1?7R?^lh@Qx4bCZ3U%4^*gkKkijWBV zf`y8UNLH+4JS2$WA@l}RtBm%xug(qvXM{S;{+F-!rR9aJ4MKRYGl-(xO6s^uc z`(-k|i1oasBZI0Q$aXn=BcGzmh2)-rklvjZpQ1>uWpGSm{|;z}F;ps4&6}?j5FUje zAfPNu_Re7G*3H)#+@V;Bq*V}MuM!GIT0XV2XWrISl&xX`c!!d~lrJHnSew|Yo)*BT z^QgwSJ=*@`L8OYWT4pD;z_}I~Ctpz*EDO|^%-&#u#7S0`d!*;vHXis0wP;?3$jrWSHeY)tj7y2B-2h>F?A_z5 zciF}o@8;A*Uz&77uWQ~hEuhB4DS{m+QU-4?!V-2PiJflXU>&&)#OID&5Xhc-FJ^tV znILx~Y(<-M5#mE5@tH9$L+K2&o5oeGdq|GLqeLBO-&!SostVdXYchjYM#v#rZ(qbb7b0G& zFxmjwOC#PGhz#Wo+-~?-dpLPsb!%)#rm`i#NM2I6mM*}6ktz_BAvB|~TYUR{2An=` z3iL%b)YcaEKi(pB!T$b}g7_T-xFfFWnEC)}1hRnVB$0j&s>~$a0*)HSJWO%Johle)zi z*)x{0cm5?@Dw?#-(8GGtrx7Qx#^P}d_Bh-eoSz#9J)rfo8{q~0#dc@U5^EyN#G>E#W zEL-{i16l59%I+KhGH#o|>Eyr3#k%mPpmBQps|l(yZN{+$`LEH$-uzev!4p<$RvKoe zUvq$@fL5_GK>kqBG-Hn%rn+*Mx7ivryiyUH>ee6@4)e;pI8bSD*)w6a1wYr#Hws7?;rj4WKagTxywU+ZbT0MrPO!{a*in(GK)E&$JZp>< z2hS=#7<^OkF+KQ&#Umg^u3>~SD#jiW32T%HS8bViOqiTh9%(hAsiTKtw8gU#+Jn=t z>moLzuWJKa@Yi*)?6hVtOQP#(&P@K3&Y%&}xWW5&XC zXm;BzmH6unu{a|$v+^k)%Y!77Kp_**1UtO!8}!Yl&?9*Io8G<3`KOCzs{Z{aQhEs5(+mAOXt0_>Eh zXqlciCX<-XDjqEA(q88c4U zj)d?1muWF%%KVs36`HcJ>kn1dMt&(G&X0msMqAc`bWh-@_A z7EXlSZrCUiWe5w~)be$Dt?D|}HBT@TWn~Rot(ufkV5?4_&qT=O0y=G^^fREz|1fW5 z^zp2EqGoYgN@*vh~wB|1D`m7DIY#cfVX1pxXT#ctV8*VNo?c&M5~= zQ6?|Ht0FBw=!=(rBf|`lF^KbG)n^(UO5;ubO#36a#V>F3Kr%Jq=Ai2Faq^l zE>seE2r9l^RJzf?xFAnz*QxFa3LcZ%T7xWx$4Cj=J7nZNqGl$QVD7!SbF)*(D`)W@=PM-omz)a%^q8@k@m<91F3i(W%8lMLi84v!T? z#vnfGEntC@Ju1OebUdiAM$@Iz{QL7RT3n)wdTXTPDn-Q!@j*mIH%;gQ^H|9OSJOj} zAcm;`_#me7nQNphyCQYNV}srhAw_MEch``^spG|?L2PG!m*{y~StuCnJGdc9fvvA5 zD47cO#(dDhg+P#>%7F=BVpAwgusC^}wx=Q73r%2z3IrT%U0;~x*a{UmZkD6_V<9ap z3~%N*<1ADBVHqljO`ky*EK%- z+I%&@vRMF30wB1eCy+up68T452-0%&-X?FGd(_Z$gza8s=q(8R?yEc+mLr3K88IGj z)RFgYN-CGre3~?EV<9D6GI@kK@Aj$}Z78jA535LDD`@oe`F!Hu*nD#Jz*Vgan_Tpn zL?8XvU;&*w^tnr~^4d>2D|3nh4t0Y~S4^b;XavK<;G}u)SGByi^d?9g?N=A~nd?Uj1civ%c#?{2Q@{qkS zdKyC4D`se0n<=$UKd?@OGzr1NRA&#)4lu?vie zjCcC(L5JeJ`Prp;QplG7CQQc<)k+xm$0b!GHS8DA_UjiR!fDCw(kSgmd}DcC>&awsbdsv1QdMco4wwnYXlx&vGhgtcz{49va0 z=hP9yDH`*?xoqNiy}3=4m@jGmbQxN(_i!BHu#6l;u8B^JK6m|U#4sztM7*nWssd2o z>{(Rj9@nRLM4k%Wv-#Aa^QSmjz2}5MSK#g^{nyT0O3%uY&zH|{KSRvyF#CcTTZ^>G zZR%A=e2TVXf9x=So#Nd}Jq`ZIt?obm2vk-@SKOWzH#uaY@{ecSaz`{ER!)+tsmmRy z6^(JHW?~bE_Pl*wiem+ZsX;`2-@v!+WRipa+*RC6|o*F^4p;k}A4gObSDB9M{wf+oLuwWs}U zvflQogb7C0f1y1jA*uNdYoeT&mooJ7=b*cArS;Zf;D>D&%@1x4iCcOi?_;m1y(?nh zOVn~Dr_mdrSp>Wz3{3S@ecVw}V=?}qX6f%S!iVKg?G^w$P$2vCJ#Vq6#}-}}(Ww*+ zMEb;lYK2v4=!z6QTaz8NT`f4@F-3u`2ij7(V<922cUCY)ffRm|7>WVxbsYM4c+V>k zp8G9GO=l=pDnbu_a~sbKVEM4xc`PylB&-BoaAYze;CAeUXO)grC$cobVwB7t1q>X) z*Rc@|Mgs6mv}DjME6kzfUw~9E5thstFesxgC{9bjM0zp=J{%rQs`%yN1;>qbrTxjL zMumJy9qb=R!87GF^P~+rlu?yK4t=C42)HSA2u@K|+QCs*T1ca>9i^O_tENyScqjk@ z4v5>3LIy#*BGAWTfk4`3%63frH=H;Q z@PKfz&vPQB=f$U5Jt;vGtuR))92~H?#&yNfnOzczp)|2%%h~}u$q=+jPd4TZ_$Q6Z zRt{;}pvoH=)D)yFPu2H|Ky*DoX;$sClvY_7n1frSW~HNSW<#e0H73$)khVH0QPW1_ z+{XhRscQJXpkIT8rr2RR8n8A{Bn*&YjtlHdMl`@{XyLF-lY$w?!4>96YTEpj0S;Q! zqEem!v0MKCI9YMBV`RbuV7e$^*{^DAe4KIYfDMBLw(F&VyPOshCx&;4+~;OVk}gbM zCTjDEAER<%?sm;LgYb+zEn3~J?*r))#Jb+~+)@hwp+w~pmEjAGu zbwpq-p0v3`jl4sOLjEkc_*q2(R%G}g>iVek3814Fprn?Iy#XO^why_+sH2lHs@sX& zuv$Yl2w{vt7-wI>6}xq$_j#hjmQBI{av7Z}mLVgq{{f1bYzk2rI$4^2om$y45~<*T zxdJiq5Q7USaH;4j3M7#iA}Z0NOt>*K0UL}5?yhHYJC;6U#89i1Ef6W)c~OQ9O*39X zfpDTmsB)7^Xj>YMOvp_7nKt|+pA*fLnoT~=Mf|cIicE2`PD&RUSA-oKlu4@H+RiRN zTt=u_C9EG{Bkb6xed-o0z_>_W0NFmxHX(l6K}#g=#pQK5L`x|cAzU_v;%xddiV;1S zvv-Wya$;svOR3aN;61AF20RB*Y89o(RLA)Vk4Q(ji&ox(^2SF;x>Pb|OFl^}yn}0e zI4=DVT*`1Pj7o*Dh{(ax)r2|_@(f%J?b*gwJKFE#wf>^4x4`?>ZW_{t)p~VbAYWi1iQCf@TUQ@F z^TLL5+oi}2w;#5uJvHh-2myRmiN@=2YxgYkOpD#Xq7-%A3$Ig6bYYVem$@gz#!w0b+*u+`B8|C3lg)kLBB>a%jf5~UhebK zm4geH&8Zl&x5Vth!E*ZAGt37DAGcsr2^A^?1OgJnzZNu@;foe%;_vfQiEtmf`@cqO%^ol}# zhivKxy)Mnz`EiS}V=~a##apt`XK;SS>+n`Wx@mfDkQHh!;xpx?D`pe?7G4<`a5X)2gUry3e-2*uY|6_# zx+`9TT-z~18ue7$GaTAuFXc@x5liIh=l3X4mOuI8!kACxnyDBe zTylOltLSn&=6Y%5;0I1pih1tMw&bJWlX%35haB!3A$n4fG+FBL41CNER1C$Zh%e}dF%a3Z34C@^Ltq^VCva^C=YxBkN_sLd!{Dsql=0EXBmQst($WoIP;w)@KgL8l1 zaPNBe^+vRrjD|T*k0RH$d9^s;>odv(08;*(#X#Mqf2Pc3jxFWgE>u<6h_zQOp&7(s zZ(5FKVcH-@MqHEhx)kxOm0Lx~d??UR0S@Kr;8x*f2N6T1p{x1jP zF3tu2T><|aB>?`NQhCFg7`kM@wbbBXT0Ng7eKFCp)^jK*d91cxyWCy2Um#;E z>F@Ogb>>cT%?E1se^mo^{1^f?>aY$L=t+m6k@6^T9A~gnV{i`^fl%*_`vjCz5Xeei z6hRdjlG!KGlmMx$3{SN&J2dSv3(lwh&)afyS=)aYSqo4mT;phv4`eX2PBh@~t8=3; zP(KM`L=1>93KpRsc~tKELV2}Qx&?azE#gw?a%va5@UQyI0V`f4HOoNN@)xe_ptN?m zP>;J>`|ywc%_saR@WuT=z2cv_OUUIP?U4WHe?Rmu0YrNL3bE!1`Qv^45e&b<2lC_4 zp9z(;=z|Dit(NC?TAu$YdHzBcb^kwesAu}QzxG)eGY?AE^`h%6Ni8RCzl&yeIr?_sG%m6{x?2`XNy$6_U z9r~9EWBin;2x+xKLT#BsO~P9k=m^yeg#*#q;0Uab_;Rf*{T-=D84ov!K`^nu;U(Tc zRbHlxztRl0A>K40%^L-{9Fnirb?!2@ozl5#z3c^0PKjqERArQhjIbB-MxkkDx>{-# zw6U3UA3r=&{3i}n7=#wIfOU%f-m=%TXU~|GQBzA#HBRR(M`5}CxUn2d4TxxX@&a9G z1}imDq{dC|y}*4!&7wCqoctqzkw<6&SEW9=wdQqnkN0HqKUrSyA+I9i)`zRq{yr1A zAF*ek*I&vU!P;jg-Y0xZkeKz65=L$>`}it{ooud1=C1$o1q-sM(uCS4-uzhcV^C|v z#Ac{?*IJ*EXIeUj(FZWv^5yYP;>N>`;ZjE4DaI#FAX>qi`cwmW`Uu@;^a;0sL2!$F zad%ynyA%}{IhI$%xyvXu?ec#UhGjQOh`)v+&Ff3#1W>g=H!dLKQ#f6u+%wf@LgP=h zJfJa`T;(anuT0A9DEUgd|B{h3adN52tW3X>uOBF5TTP0M^x}w7n)PKy9_BO_2Man3 zejQr)z_A_4w&M1#sy0l}BAvuG-6bpyP166{xaYqq2pe(M9N$mUIwMWDsD@J%VwIwL zxld1#{SwX%m*7E zD}ebILdkkp&4dy_owNnc^ENKRNdBU3D{Q8UAU&{A4+PQi+&rNpXeOt3(5xS=>P^Fj zAKqub(MO?K;Oxw~lccDZDrLKtF~~~|DwTYdfOzo>j1WlEKok~8jupH}aD;sHMs{o< zYT=|b?1=?#Zi-Ea&nG^A5n^<~P%1@%BP(wNHwOEKH^?DTFZV2&A_3nAptYl?ABEur zCQnSj9)urFGM#-)+H>?{VY(lwg_@D0gr4vgl2ng8=GmQJJwSGq0+a(|yMg-#dZ>(% z(3u;w)msS{jk;tENcn@6=yR#=wqBMSvfRhO!%{OmVVEpjU!KuiSkyqH>LAkvE)1e4 zPd3@9oWw?vb~5*8R{2#x>S#_)MzFHfrK>im(Y?aj6GdFlC$w@KNhc) zu|H9svdtskl_(RVg7hArGN~p1zQ5qG^??b@%HI`jwAEW;=JPz0zPP%==|a(4u{&E= zJ?i;=_V1#^?$eU)Jg|c{znRq>V+6jUT1wtN< zKM<=`{x1Nrzvsb6;VJ>}?g?lWV_>q*3^AOK{`f>(>D{}EqUa`s#tfB zJ_yL^j}}z-)Wc!g`vK_sGjk|h!1&@I&gpeU&uh9s&ETI zU6phAq>9rW<#8b;7&GevdQtvE^-?iF&Hs8yYbGKnQ(* z)-RN}1tKzxuk@CN4v@myro0bU`%v6mA=K5X8%;yt@VGz;EKqJ`&{;bTCwKRaeWt_) zORwyHsT=($k>%Fv)VhS+{_Aia<6w@Z9oS2)6KmD#GHP{2f*BP^R34R5VZhI2l{$OObL@C?wA1C^C4mf3AZN+Pb5Ibw>wBZ5On6OhGW( zvQF+2bQv%Sn@^lwe;IP+&JhK06P6Akc)*!LjRs-XL@kpq1X-aGg!U`mp;-WF zGsa);St2LI^Lvlp&zN$YEEJDuH%t!0&`IC))}9#Zf{N~@WV&c{7Sg|aR+SrTuN;vjK5 zBsR#eu~y-;SU)evI~Lb)NR5&%S-!@k)bnT`QwDCSgn&ftw7JW^dF^j^ER0_%O3~|! zq_}z0dTYcsO+*>K#7ut$A~=6=_KPic(X8b`P(Kf z{;ox``YFR>O;dE*G#7H~ypwze*IU{IFlFUSldL2%vsxRrIB{v4Hx!mcyEZg*QN)=P z>(QX6WS^$(5U?)Y z5f|s2^gq=P`or(zo|KdSoH9xJ#Up7 z^+SU#Z6!*JTUrWvLJ+((mxJvfs9|U58d$b!&Mjn!1U+GN0b>e^1eH6qEdF3!*S@bk zYmCR_SbjV{m#H%32V;59*h=E@HF0y2PddC}tbzYYo?5Lnvo^O;(^lDANJ5!1)8LIj zPTy(MOKmtB3zTmLcGBU^4mcaZkE8Mu3r0k6{sNEv++aVBVVZiv24qA$0ZkEYU* z_$mszD5%T5>DGt+qSMa{yI&bEGN8{Z_-E0i7^ zW5gNS?z}KlfWNP7zqTX`I3ENR`b=&KJ&E+#AJ5f+ID%uT8s=ennJdAr0NSU^+javf=O>ytU-#8S^rrWAQboA;)3kwEb+@<(X zkld1-jqa~eT;>kFe*Np1h@9c#v3_F~lj-;*0Pv1j^n7U=YX#y5Ou^AbSmrCs=CbY! zON2KhNn|UOiuG7xHVb002w;7dDJf|)|5}g*b(Wo8qTa5{I(ODVIczqgi^0L9U@)7! z_?9gM2iwHGL|(ecw}3- zUX$k#AwHr8&x9us4im*RX_QK*9u6u4nYmDE$Z0+q}-yx+^FQB{x}O#$ICcmzjxDEUo(@_yUiKH?4k_ zCXYJ4-0790K;cWyk21HEe=W54nqFgaQOX@3aGfLw_kn?w$YV1VzCeqpSq<(OZL-Vf zT*pqchDlPErP>SJCpL`=?FODuh2qKxZ5dXNGNT}d$1_HR9`i7wbes@#Ab~rkQ2ztg&k?PfX87Pg9JMqbmK9;u;r@y-_(ZTu~SR`GP9No#M4aM4ys z-DdJF0PHm%^S+{}C{BZsh!nQRWZiK$l5wEwgOkS=W{KIvqci1P1W~s*bm{B6{JFT7 zMxfk_JQp2au?H7O9Ks^R8I}0jbm9@V$ezUn}hr zP$fl_Fc(6+4W-lSKsg5&?kio=^xRG*kJzY!aQ#ldCPO>?H;h{K#5Ik2+8`u2c%0Xy ztJz+d&K&u{Iwi#!d$Z}om12DxdorVJyHXH?sI9T-{<37U<;2hxt~?uam(aB7fzmd8 zF?+oU2*3S=WY>AKrHCsvs(ne&So$@w4)>;ZY(sL)M@D1cUDJ}%) z`f-&rZ(`_Lj840o_&9E5_rMLpR}QI(D8P2IE_H-mwG#2`1ApCkl3Y?rL_*4O9$l+V z2%S=3dgXRe^(7!^yNBIs-I!#;+t?8>dq`|)ha{ z5US{WeK0T0<`(0wv+QTYpxhF~gAE%-9WiF$txiW~)Fhg(WWTWlO6f-f%q#>s$|A$b zX-F&P&&3gFb_#ojJ++h;>p%wX>F(+k$2thX>VLa*6@z+hA0=%-(ArT=!GWEhbx!Dt zpNYm;4-0*Wpr$ZR9%@p5R&tlA}>kA z6%JItKXkI6ButW)+(HOTv@(zqZ@y$^Oo`w2P}m2gUOjXNZe&olPhq91^=CFPDWIX+ zA&jGZ{>*kMauLGp4N9up=LC;biP$EbS#LKE!N3Uj zaEGGx=t#2$LF*sIr1bo@b!B{z?8g*Wo{jAacPjzch)1?Mguvb6qIT~sGBdI}*bDxj zQ1Ya0s?C?ujaAS3_r|C|=ri#7itQVzyRzvOuC>+FRZo@s-}A0@d6#bFNTtMUl$tET zOQKYG<>h?Ly_`Eku^^+CLoMw`{7?M)e2Lm>My`2wm8GtG#c9EI(ep0*?wb9KNP{7( zdXH+@9a{X=2y*Tg<_SuRm7aAy$W$Kx8>c{GeKVn4=bMKu?n=PimG|ZNI`aH;&y@Rl zuIL|Ip2nBD3-`?{Hy)euHaxpX4`yRCBs+Sz>;#BAW%69z{&hhO5Ht(n55O_;Cf4%_ zwoHvI&Z97{MJAMMRtea{tv;{CcjI_l$pVIOE7NvH+iZbA1)Ok)%w7F(eo#T7uGyEs z%wvh_in0d4%-v`K3Gka7U13eV1?JFK(XBhlW?!`);G1n_OX&3X3pFcdeZ6-+%?d^+ zl~Jf?1iMcz9=Il)#AY>BgQG*tA86+?sdN8q{Aw#MO}k`k$JlZ*lk-YYwlyi0$e4(ap7vj$o9fAXRu_D+WU79*O@YQ~w*jkBTGv6lY*veW=_<0a!YC z>NjXuRa#$&Ck_^J?-jV7O%W;!x6XEI(p2gcRz~-pQE?vKrLL!*Tj?UBEB3dtZ<m>;pTV`>=ZMEj=mp2mu&RFcmOgGI9i0 zO!-LC$g9`bTEfHB!#b44h#{}FSgM65)Nhf%D!osoz=vukRl-$$`YWrMaIJ*zd&bnz z@c5-EfuQ>Cjf`E$sJ;p4RmVg9OqU1Gw1EyA>8X}6fF14A!jIp1ZFBALFGHWwa&*c3>Bmmg}-VG(`Lx9gzRIA4@J*&+i< z`&7e}Ha+gwy64ZGFWK^a@aDI4c8xL{EFl0hm*6%iwP28I7QQ{8q|x64Q6Lni+3$k5 zlx|q|giOiGp!SE5T$vk@{}{!@C!oRP=j%bJa0?go$!~+IiEu(yt7w$lgGfX(Eh@WM z&*J%msOP*X;knBtx?YUU9j2uG@@W28u&In=Guf9+m@_H8u?l#HxH+O(UNwreNrZkh zTcTVzAkep9oj(&n278OFH4WzGZzG%2qU0=v=SrfaIqHGeS}|gP`L}k38PlXhm0u?! z@SA>Rg*5aa%thrC2R>hSLDJWCQ)Wz<{qY7h3(Eqk4>{GZQL`QrK72q3=9E;k0y?yJ zQ{_c#Oo}#MZ5Wr!l$RL2`6t){?B?dk%trs*)z^ERoqrA;e#RYBJ)DP})@ z34T$ceflBF?hTTHpLH)7j`BaAeUVCrEEfK{`)iQu|PV0FNVSRL=Y|T)$M4~ zRf9$8dm6qLdW|ZMCP9z7>z4?)lV$H_BpH?aK!4#XyWV)=4|;4$${)^eBpO4b=QjND z3%|QEdyDhl;KpF&4+IlX&xeA7#kkRPTNxq*R;M#%UKoAy&8fH7gI9su!C#DxWoLYP z3FGzSw!L|I7rY&&V6o~TxZ8M?$DNT0Y&e^TrC!1EVFxf4?YT=--}e^CN1*;(QowDa zRu2(~<@DH3@(6fw6WM_-fF3Bdqv+x8=5R2AE*zQei)=1>PGK=Lv0ps;@L zR*4|S5jPnS9)2|~70(mbjP*wem~rE2>q(+kg*q5{YboeSlW3kQVb-76RL@!^w-se= zdBG*k9jR_Wcs|^mX}GS~E=mv|t@lq&nvoEut?q9?jLD6GgzQl&_4f5~v22kdhk-sH zxN*#QI^Efab+3R9?Mly%Q5wiy9!lYP_iTEwV-)Ps<-$VyDeYfkIg-aTOX^V7FP(!A zt?}lqJLK@L0Y_F`kIuXG@#L;)#7>3W77!=Tzr)-L{adm)2rtzbqB7+Rg~ypfr{AOPP049Y1w(#*ER$293f6s1k{Ck`!_g7kPfDZiH44^s;E&58`}c# zVuQ(XARH~>=TM!1$+v&SVzR#O_;GZNiOG!|v zf7OX1XQUYr3Gfk^yVSrXbNV_ukzox`?V$2R4OM01oL^)|k_k$1Cti&$BN?nXK0HbV z&=lHyP^BZE3zUvdGFipmgLT$(eA(}mpH$1x>WXL49ljJC0V#z257DBF zKh`>osJa2sKq6>YEI*aYCLRzrg54=FA|2d3RsptN57T_uv9nz>|J>X3TYl5twMgwD5OLv3 zq>Y;=rKFq)*taM?zc|g;+J&gNX*q6vUYe*x+bNn!ITk|J$QK z35+P+iH`4Ktv|TS>PH+gn)VoV_#bCIM~pIBRgiTq;mGrU_NuiHY1<+_uCBrNT@5tiMy8j=0_@+{Q~RI6_HHDm26 z>8a<~opBI^2r+Cy87SX9%2%vo(Y@<6<(exl*<`J3t`Aa?!9kccY+IBOddSkgkboFA zQEAo2^<5BH`|qO$iRPm(CZQ*iBmIBl)Z8SH|smVg&!>++GLzgyvHuSW0p^*a4? z+1{)b*YAe~yiJ9e=EUOU-=)L>` zuwebJMh@GXs|Newz4|fSp1;GO z!C9~T)-=liEY*Hk7CFh3HZO`(?3LTMe{Y^@rNwyj-V%G(SSwD(9r3;zmh8A(eSc&< z;LMyBg@7dFJcV*V)D-&_>8kxa(M)H-FGJ%L_(f2M{d|B851sp( zdkkI-4fNDMF4b*@r5;CpMqFVOi<}K5#%5zg5(}ss%B6p~7sapmGla8B!PnJ%fE{87 zB%iRXbts#H`dOl8#yNl;FXqD?rxuGo%OUq z4TH&BNMFVx;&#m$UAoay-Bj(fvxS-q>x{frQz3{(g@v=XJ_BBzVsT9BcyA*lG-)kshy)w|lPaWmqS=_AM_USIQF(BOLSr7MIVe8770yfpl= zoc`B=C4=eSfSS zU`jYwL)9MKr2*Bba5aCj$bZQlODE>N_oIP;VoAaN8Zd?5y^!FshaSdp$2ygM{FEQ_ ztF1zG96f_R^&s}8piZD*nb$tHfjs*QMSXR&6BW{@Z{aZj>T6R- zQFP2W?M7oHw5@~)S|(kS8G|LpvfQ$4jbv)M5??!B90vk{<807VyTmz^odc8~aq+0h zQ&N`$MvfE@Lee2&K_c?Kvf6s?($||Gk$oa2h4>>fJLcZ0RVP~ak~lJHCDKt?S3k)M z^0NvLm+XN_Jqz(vPDJNyMi-GtPg|NSn?3)-2G^+?tf@A7#VyZuIYp`2)WoHa0VfDy zr=uv)Fazg!pl9Lv8dOw+eu7@sT|w4vhRBx?FGOyYl;(>9wxJ9Kyy41%W{}&r0UaC% z^^&S7YC_yc^|3hPc9Cfy$fg_)*N-@fOtSy;oWvWc`pIUuYD*s{HT+0cGz)_Zl2aHH z^$bT;+MP{IxqN&~TJoCeh~R5Zd|$dzi~!Js$7?9E54)Q47;qcdYj@BeW_S(Zus z00XgCx+*)u$w?>MHG}nPS`lV@#X&L|2(59xk~cQ8r%kK=0R~yg%^-V)K$+LJYoQmb zx?bB>ZWUcQMg)20{O|z11TN<2^INVRq3UMDZyni3 zXeuh<#nErwuLtE}c2OOhZ{r@1%@274#?PNt3P^g%Gk+eB#l+3k_-Ar9k|0HbRJFo& z+mL@CBW1jM_;?knUuDuhhxnp`>PKY5$wCAdhI1^!G6T+H{3|zJkTqJ5m3_L z##t*to$sYO|8c3MTQ0ri>R$PE-0T`X&{7C~^u`~=@B8@oqV)ZUS6b~Z%kb{HC!~rc z&-2D&nXzI+)a=k~7b~69H#>od)!CMk>cZWN5Z8>l@vm2;MU(MYwdhj6`tO6z-a5CI zxgpwCWtq`pR$1;A0gX?UBfN)7!#CHW44_Q&13+HTR6-ow3r6Z{;smyy4BogsvrtVp z#lKaD@|_8=#K5&s$bk=GB){&G%#&S*heE^Cjd2tBiMuEe2Yj|$gEyIf*RgN>sj|C0 z&mzsB0# zu_hWLaPg=+lJ-+0%}Mj5H5U}zE?h7_Yapbm-XY}4LkJyGIiW0#QB@eILLC)d;{)1d z0hrZ}HB%Uh;4ZBbxoIr9a1!~C4z-6+9ie1eR}lC-gvFK6&+|D1U}z@WHfc4m!vvVA zYHLyf+l9$kL4+diIdkFY7Zn*6gizhtvI7>yfQta!Fm?{~uq>~c)TiaUGq$chvsCoc z7?Z11j*rwx1MT{ki9oah9E&;E)UA#_flq7Mx15zje{o5Y1~Dv%v{CnbK_?_r{KPm} zem(ot?sNioisfRq{TWNhZkttE>2{w^2d` zr){3($U5j>M&W9NccZus7BMo;w2g~i-7#UW)wYdM)p59lWiaskIGkpNe;uc2gH*Y|3py$(@t>$m%d5=*MqKjnQx%KL3& z!b4$lHKbcd3KP8dkRNP}?q5;>j#&85-=U7HIk%bVK*aSbJDyu0-T>&G-H6$0A8dw&Gq3{9yXpdR2NgdRqE#O8X3e5t`$0 z)%vwK(4K0W`64xNWvR7Moxlx@@L;rEo-@`*e zQ0V~_D3*dx3pJvu$w~+mQr3Td&@yvlk|Q*4&lo(3*O?J_1u(E5pIQmnaP3kpt;r4@ znp6T_FfP|QCi+b62dj~VM~@c5Oq#$bve2aS3|2p=-4|0v2PS|3UqZdFtgpA)C~!c- zU=B01VI@uUuY`U9zHCeq05f@TqAu`{U)BLT#Ef^Bt@U5q6g5fL&yry<@@xiuGU~CZ zx<8>}QmKKcDiswA&Ya3K1oK|oRb9y8t|VwK%C$p?RbEcmFb8Uh4ltkV!~BX+Bz zh4aoIJbd=7Fcz2))zq0ho%9zi3?+md6s&&Zp+sWtfZ}Ex{Uu*FN=d5v7O;Mn=fw-n zuy7rKMGSW2ZT7yr%wWQ{ZosDM*Q(AMmFZFFAm5U6m4m^mskUl!XCz#OcgrBRFsq!^ zzEpimp{~eEEZAhVxnTxrZ1ZgNl)sIcViG-1c}_h z22;(ei$GT6-J;uXbu;`LAj zP77D9tB$&R#jx6K;DT>5`wotXrV38w`2PC~n=_osF~3utBfQ+&dQ|qHp>1TBb2`oM zJZ)hPoAc}6T+DD+fkR~DsFB8`PAb#-!YOJj0gDaF66k|^gj9ZV1uThQ^a;2gl@!&v zf;!jN=ge}!3-q_WQ-(l4CE2%zrTJz7n$2FhGH-3SI(1wR_4IO#YIPCUi zO@sWgzy8`4>GQQ#iaaz8l5)$aAg%$IE&Wn=;>TV^}W!VXAQJ6Zwn4Ht*XEn zvBnWo9}XJU00e>siB91TX)vy-C?8L%CaF&r5D;Qv&I%c%wqKGn?`(t0EMKKwv z>X??xTO=108C;!xw>%4VN`-iv{`4Ey*^dC?;H(8kG{dd}cGbgX9fpAU+zl4?2=eAs zT}NOl_CsYnKXIb!K3H|+o~tpx;{N(_=~OEwG;r@gKLaG5Za8A0;n{iZyix#e2Ldf9 z5j#&~v05+b=-79}jc|mDe-9i1S_hah&+LX+P*+5=Ae+lDjMw$+R~K*KQc#x?^}#C& z#odh!tw17xQ5p?15Tf~*!x%pLjE~f3qQ9b<-_8cwtzn30k|r<%k01^aqqYlld4&;7 zF7*tK^x9!(Fa*pN%wcB|lthw=rNPeYfe;)KNUwQG=1=WmW)(6ksza zq+v@g*DlnP-g_jh`C%Q5#OzN8Fyzk=$=MQq^TTOu31$uRS~LS`4m@E*GvvUp*pGcW z-dPNYA|VE4V12~V0l4tZK|e8tuL$@bpUqX~Kf|6dg~JzjM~)V?2?koT($;#{+S=1{ zA?Ns3Uq9MMXKH_(9iXoH2|M1>+N@JuFz7tFbKM0(O}Jc4c3ls#Ay410x~ftDb;&vk zCe-f_3EYma&okInY#iN820w8DvZck3a@JqB`Q-}VCWmEJMd%ua4eKG9k#2kZ$X;)V z(T4N~LxQ%G97mM80=AU%-6{Ek<^;fd8g*ZzHf?IBNO>8GR%K)49_b)MqfOOh4N&Ku ziO!OTb7EcTY!K=xZS7(dPN`W^7X+g~z_-s7?LL1Cz;lDn&OZoLfYv|swq3W%hP->M z%biB8Ici*&4xSOs_?-13blscE>HLfCy&htI?sCftC$Xh3BN~|CZCgBdI9ylPEt842n(6 zO8++fj(bhQ2##-HT>dkdla)vWKO2EfY43+9H&oSbE*h0m&etdfLx3|dQQ{~U4vYf; z56D7*QVCtYDG>lQN?e~Snd0G0&wny}@_gL&5Q#TLAVZiX1PFM8rLMHMWGwPq0spx8^MU_f3XiI$pdKC9pX=qH}L%4riM{dhvoES*{Xmz$M;q#$t0) zXPn=~3(-m(eu2(yvw8`#gTf+U+w7ZTD6^sCc~Qj%)I?Y^M!N>Z*dL@Yq?^mrSO%!Q z<}}MjM~}q<5?^3xx5U}Klooa~KDHaC=DML22jFp-UqOP#5Dp=s&8*Fjt};ZO+%sgr zsG2oaR|np_pGj1U(6L_ounJ6_mp}|<6sn|wfHNusHaeRPP`d1Fv<2P4erl`3^wiJ? z7=W82bn^Cvc52qWD@0wP1H;BFj2x+)V*zm-3Ab1T5TZ-m{;A6~*(T@KLuCTuA|QW)LDG)#)j*-arXL{Tk@q?&XnrJ;69c%=t+7m;Qt7 zJ7@Yb82gtP_DdHGD{M}oZ1TD&U^%{2zMGq~4=vKFcB;{X)0bWhMY4%muw6P!ksb~i z$PS&oeh=@i;*^wLm5mrh_Eg2fBWWS21Q8|*3qx#Wq@UH_sBc_Gif)BToz4@$VqiB7 zc3(E?UI5P(Y$^jn^k-=0S53m?Ih#EQ8_p__Xs&gAMEXHZC(;24D_W3+)Zc73lJNXP z(NZ9rV(Zj!LK?t?BEIOzv=$+PNAa*iq<`m<1uL?@9@Y*Y3^OE&_-_)N*yW`^K5@)i zdatE4)3qnF)mhKL(8+8^ziGQcp^b3`tGa7&Rta1wN_XF1KZTP9R3Jc6uU!bn7q$*1 z@{U~wljXbg_C9o=Uyuho0}ccX_f+Ij2H)Kb77^MZI@%x*uz=7Px7cs_3*)!7_g%(+ z+~l9Z&*y!MV;Rq9u~MjBO{B>EI3OyZ{Bg6 zHzlt(75(pPKY&IgNyRjaSq$n;t&h(Go-a^uYL%+RPpqxSVFj8LXlIzbJ9p}*-e@+I z95lEnJD5dA3bPK%-U4V&L@{?`l7fV}E?Iw^=O2@uP=AgYHCu1fdxJ!Kx#B>K{UfY z%4JCV>q9*T;O$(-o@D@(nz5FB`%H`bk;{Vtpj7h39q||j^#mvTHA3#pnI7|+jT0O8 zsR~@l7O+kG3#tTVb*U2PCk2R4EuuhK#Q_Qw?c2CY!L0y``;j#&hJZ9G|bno$7&V>+qQcOL#k{SuDgF>!?OxXqh|{hmK3 z7At`-e@8DMo1_$kz#&&PfNO#jPKY{M71k77Q*i89vl|%5$B)T#vVvXP=iUJITXFSzX6?vGe%vA?NV}P}Cfd?;xYh*6@$bJQoC#feLZI%? z8EKM<0HAkW=;|6|%(RTqthq`g?$9z>^c?=y5u`XagwG8t!2 z);(CE6k!8s)8Q1;G1E`@#Zvd)?skTgG58Z(?;8RLSbq z!Mxw@VoI8FtbwZ5GlV?`8$zRYf9`g+6vz>*c%?FV*|?;@@#J?7Dn?)2Wn`@v*00Zs ze6Bm-v_WWW(cR5rXzszNrU$+GIA;aOZ>qzGlm)F53CFQSj2h#FInJj{jUmD^33cec ze(VEme;*oOpyz{~#@Yc7FzNP04XNkc=pIIDqlT}~yt!;-gLP`9to^BLYnYn8VX5OJ zZ_jYbwPqyKE6edyHI+P2cNjLwwIsgski*pEtM0HDumm7Oa0Stf<7Sml#;Z4T!Wq$w zaPih;6=qAVTlPUl5-NqHvwcbSzE|*1{z7l7-KSlFVek)D!Slu@eeOP_W#$>$X5Jxz z_~#^~p@cr*Y>j!iX2Y?Hx&+;R>^}HjonEefFbf@;Lrd{VWDerWfE+lWsIgN1#K9v; zVGe^~6&kUIRl-6mowQ;b8pQL)BDa(&>@JIGCNHQK^|Sf~COFjp=GhW2WA(+DK095V zP~lkBaJlpI9E5@hsYl4Y`}QphUX>CmtL`id&OKo#<&QnTL&n~rv_Ip2($9nhg8 z7m-iybyEWf95{{*9c!>+d{{lvOXL}-~@CfC1nd1{!;WD6xv&4k0WDmu zx^P;wXn6|2>S`i*7W}Q{|MQe zv36__PSeX0%<(}9-Q97_B}_%^n{s3 zG+>RNVl?+8pDe!V*IuFD>u@wG(BrKoOdTt)1SKeyYT}n8UpIdFyw~juX*Ib2s;p(> zaQBY$ug*u3O&vi2e4kMO_88;*2vRS+N}k^*?YOkP%b1TA02Ln<0ArTt&^dmEr^_>B zJ;#bRFS4>BXARB3IVcFPCT8A98NeYXG6!Bph)S)q5@r?1;Y@j903kIsz_W;Of~`q; z|NapkDl`<8dSt_fJ$1*%E?*uSIp&yiY($QEtZq+QrAC8%kMLcW{I2;9Mho~7kz7Hb z07Blh!95ieiOXZ}t?|g$xUKP`-VN1|!NGvIJaMiUI%{!TTafpfQU$f!EB|^1>_>@$=2m>kSCy$Vf0oOnueJOyTmRZ=W zuUOXK3y#ndP{gN{l{)MePnL zqSO+yupMK%7(t3HH2~EuKYIAEG@E9(dPKRvJa&o$N}3G;Y$-4%GVm=1xX5tzy>=4 zB26ve-U6DksvRrkZz(^I%_~dH~nRvp#Jc&Od%tYjT+l(Bl zTD{mjrsptutf@R=Q&SkTWhXbWyLT#PrY%D{-B#T~{0ve4^y`d19)@{q*iHY#_46mM z^u245f^|GBwwLfjs@G6LnARBzOC5;rEGbP?+E}J?Q;e|{5wGDJ%-`Wn8E;q@bChAF zozm2Pp+JFG8Vr?rhy(u;LnxE|f)j@FGx5Y_=XjAuxS85imERQw9Vhtgis$2p9BQp-vF>t0NmTs7gy@Sytm+XLeB2L zQf07MeX@n06)%K(Hr|Wq4!KhB?%V@O@s%#)t6VCHw-eLcF)fHToL--2qWRMGBSky( z9en2`-R^Knz#FN|5YI6;!kDM%6Sbp30C(?}6qmwX+)w$RPX?)ps#DW_jp~A(hu-~j z(6(+TZlTjG{qdgG9H-4oW3@;l>!G61?GxoNiFq+xWL>;6Ql8GO+L>_XjBYt+^UzDD=LUGBO5o<(KO04sq|CI3Ix5`m;xeE!)UXn z;-)6cW;35r29{*BnnBgkzqPl{D7tR%EwqXgvDzqyz(AnTkN%lHe0chwM}PuL6@NdD z*kwtpZTL{CXL`uvck9+Y_A18qvx>cV#DNQ9BPimh)5*w0QJ$Y`#9^nCKWz)H3az2^ zluw2uVU)F9q;koNLAydkuUE+zHaRXbo@d$Ets~3fk-EjG8cK=v{g;*GJM=(2INWO6 z%JZwT1nyvh1^0}KBEq?&z^rP{h`k5`p4Mb1`}}y_w9h37B4pYrI0R;6EwHxv;lkDt z@SP<||uM1t4lz1eUzYx;9v z_4WYgX*?>O_aH`)t^=W$Qwl9UswF~!$+s-z#y>paF5B2xLoaXZ>Se%Ad(R1w!RhKX zBHNe1lG)x_2Iu0V{XG2RNHpu12*EQl6#YS&VHLa()P7f1wBm%)+rnc)<2hYcdbTUi zF^?-!+xVU#FoyIB&I(P`@!l3h7=hYDTRFY!VB@mnk3Se&$WL>jz`*WDJD_Hh7wcmT z2!YZW-7DQ|RbThX-vA`{6Zv^Jv2h$WBy=0?-zE{q^m@rHqoVU6f5^J#Ha9vTLh#ti z=ppH4kNNfAw8;W?_}w8>4phk(r9AxKuJtx<>{{tGyJpXt+*fa^#G!@|;wW(J0CG4K zMP4f!uvzwE02%H=- zS`UQx^)CO&s-ZpY0175un-a;8+cuZbHux$jw{!Ex-+k8qvvLc58V8C$|L!o-qDe2n zQ$0P#q*s72FU0u$=+PVrJs}{MLo*??ni>GWJ9zZycSf`(kL2!z5eB@)81zo-^VjN~ z6j!@e?7-=L|ATeu-4v;w&i8*fe@5%iRRP5lz954K27|I6|3n)&6Ea!xOE@7Dd(iM` z?G-oi-2<`Co6~9OdflRVVufG) z*;i#f!0k^B*aCShx46=2eKP$(6w_l%&nf)fNc^oHm|3KR-jQJX+=(oM`MDAiru+w{ zkABHSlt1yt71Eb+>6Q49d?P9#JD_p)U3qr@4_cbSgMOKj2S=e7VCr{xXZsCHr zMxQ*X9gB}=OgZEBm50>oz)WG>mFCXIu5!}MD-uUaaxSfp1j)Vg&V=aSI=YeZEJ;Y{ z43M*&cyJ6J zZexI0ofLIsf>jCkiH)cXs5)nf*Moq@^eP_?IbadMlnqN8kN&y<29dcX$U$*@n`x!= z75YM1WfSny($>}0ev;Zf0G?<&iBsI&VCCsf4S7@nWo$ZI#{Aqo)c|fLh{b!EAqba; zewrU#!2*QW(MbK9%dePq4zQ7?RGC(O<1bS}KmV}Yoy8JI1On(8G}SN~y^258j61&O zA2;4}JWn)BAqH^}bVr*))=?Au7wzBLT0nULO1%1X+qS$8HMh1PL?0jLKCtd0_uDN( z#dbsgZdsY7+}@*)b>%nvH)ni7ohROr(8bL4&;WEz9aY+ZovBe~-NJ*Wd{HDX$BX4j zKsI?-=WUl?Fk65WC57=~v4M`3l?(tYz(dJ-Re+5E3*}&A>mwtfh9(Y$9oQkK1ywN) z)OO|tfW;ILI(?EhI$>hsFYmgsuif-Kvuh!RmK-FPg(`E!jSkDf&!7_!>ZI1}WyUTYv%e&)>@=hVkpO@BLl zVrp2UP`o*->i|-=WXzZ@3Z;3rTX8MjmMUw=I{@V{h_`y}+7TXVp8fw0OA~Gb?9RWb z`|t-g){1xJ%GK?bsngwEM~=T-xa9~h>8yN>lT zOu2_Xs0xl`-jeYjNA9Kv=^rI1_G{92I3?ekgSZ`LH^Y7@Az;9*S1HVwLZxtHcgbAJ zFoEXu(rM7e2~v{X`zKn7^T3Q$<-w^DWkB~zN#Rmb=EChfwj_n5oU^jBR&Ez+P9=I0 zM_5WZ0EjBQ2X$2FJdmmT%U@YvKAc{K-l0=mx^MXY!{H63mI~Dj8h;s&8BA7}@T<*J zeR(xJ9(qvseFP+tK;rME(mm{$Xk$d%;NTbk5RVq)yp4-!Y7)!uNu^afU>_F}V5nHcffbvMtL+ZA`}Fsi&+?2gea5l;-U0Xj|yq) zu>@>jKENu{1y!|aV3g+rFYfi@4KFwETy(u2$9JF%g>Y56h@k)gIn^hH`wFtPi7SoD zP0L~YB}9sTq1i6Ia7>L?V9>ru*ICD2f0?qYnN~n`mj_a){)fmDZz;)WJL~_AW^ER} zk*Cl4QOwE|*s}=&a(AgPbj)JnO(hmn!1P6tZ8BkxjRT+i^KOmJZ4QLEk$n2wZ>3Q} zb~HesOhqNmv1&svr+O`RjNG{laouee!_=LENU2vUFj`vR8O8urYg25s7Hg--DT`_v z`J(TtOAc5U?v{$}Mn!wT#GJs9bf+7z=%_oo!SG5nAsVCYdPx!B75$!}ZJ}R^sY0D3 z7hr?en?r&5TsJebj3MFt3V~O{K;- zny7W6vDW33ry{661-tNmveA&3dZAIk7Mv^fAh0$S*pF#Bd9no~gGcBM8hlF){3~pq z!6y_hNkolZtPi;;Cg68$D{wbsdmR+Yr_Jvy*GkB`-F zZ+VyR&58M-l+!|$GcnF0eo=IZlw(gjfM+1`t|a`e{VG+#I|t~d`c71JsBDGxNk3B_ z>A*AYlPKSPH61GfX4A4;Pl}=owMkrEG8+JHF*@j ze~s6@m5r+c;UrNQ5g#6ftQ8arqrLF5cw}Sl-B_V#bic5=K2~L~QHN45(``z2>&yAy zy2U!BbEHQ?WBB@9uPT!oFG@BgCq>pXv^3+(1IJ9*b|jlHV(W|wvQN%&1hQ!^qCb;f zJmmrEYztFni~T!8nui;nMYw5#St9vJVCH}v9`NgfB?r1m?Y*e(jbP0@4-q{Q z7H@2g9SkhuwI{IA%~B?#z`x5oIh?gOpt>Nw(WfU@1fhgn`@flXL0MMSUZOaxOL}gB znXYuoP4grpDUQVn+rCS zDurEL+S3vu*m(-hQfZ!dSWbj=_ZII~Af)%F-#c|3lyVMsETNZex%iWCO#mSh1jv~g zwm|5X0|=H-&tCC$7LbaBP=pl)$bC8IFE9xWEbBO2%y60iY zr1)MV=A=)3_0McUcrc>4qLE9DxxY1~jre7?I$&WirwQ9Mk8G=9eb{6r4cAQsVA_$1 z!rf5T@l$dGCzyf!)J`aCcLG`Z*5K~qZedA;v6#xNix#Os$j#OBLGz0oK|q$S)Hxzu z$Kh6MkECnaznHlN5^H2_W#m#R^@LMeAZ*n~94@dEE*$pDt2QC;xc21K%`&QU_kpz2 zd9q+I*Q2tfbpZD%m#u!BU0H8$)0Joa7?drok!t4^syuyQLr?v^dZ1wf;H7!BC9hO@ z@s25M*Jze4`;hmLAaVZDz1ZH1dyIWzdmn8Y!;1nX!1HZg5r6C+`#x9ivvvRLU<<026y&9+xc;ut_bQGXzn4q=ax(uPQb_p7pv6dd(94;u zOHzGFf^l!zU15pTQK4(cLmRW$5s+Zh@j&a~%HSV91g|Ur5OV5(ep)q`BSfx*{VKp?%^Y|6EY0q*ooBd{ zS{b5jqMf}g(3Fz<#?iCXgQw0ao=uk@>nuJ8T~#0?`X$KduPz3F4r1!5B)4F&rG${y z*3FM}&;XH(joVnG-Z+mfQ$VzgzEdRF;3Hu%_e?f1)FVlYp&4!+A{ z!mm(s0)N{IlOs_=_=t^wXvZR{sHh*8kJmT`8uH)ktpev#6* zdwi=3Sut?JLT38lC7)IG*-YrheIO?|nu>p|GQ4A`|Kf90olAe}bb8wXJpf^y21{vv z*$Mg0oLzd$$S!wU{Xk5HXx!+qu*ffUQ~R*iLMg5|+%QIZ|8^&cjApoXVfLG)_fL+0 z+?}`Drz2x|+aH@QrxNyKy0l0_p!3hMG14ZpiLnMhU6G&1K`K%O`~-~>xB`f+hd7Wb zkSvQjH1j4RPU(Ds`vvFZkp6F&5DwdJ7G#HnI%lZ3ULq6D5=&sZKD#N1U{^wI2iS%| zDoU-|*g^fWqapA5Di^kevjoTVn1&9tAX1dq^I^?uIC7)`L`F9$unr!fXaZs#?EG+e zd_C-pMs;t1a=y;@sv0y{=Fg^Ils?-($t#w`qZX^!zW~n{w9aCo6u_=~uvYtm6h=jyeL{bGzj%#-(42pe%uQ@%^}1-=fl&NtpQFLclm zj=-^l4mgA}5oU!wBZ#B%jg({K7}^mC0ga5z%qui%7E7fwV_?T*4;2fc)+jF6hzU~= zr5GFy^wMGy=H3l2MTl7IX0c&vwMwm=$z&YaU@8|dRn45yuz)NJ3G(Ye0Adk!EZr^M z<#4=7%tZ=7cFK?z*A&-ZqIoA{hA_jJnVl6lp~A+UY5-M0s=w9MT@Q#umc*etJ8Pkg z&O-s3!*?I3f2VZI;X?u%|AhN+4sDdtc}QU4^v)sFFVp7_6VM#%ees=g$~*>&;Vh`e zq+br}AW}$j5J^ngf0)996a4-#!?}nQlOFwwIZXk(UtW*tqNw*dD+aM^M3Jg;wbCpv zRWafU6nF%FgdYOR%qw@Td3bj^h%2Q_V&MLw;{TWa|3NKSv6T3?wouPbY|va>{hHy9;{2M(qT!i7^qLa zv?x-Td~7U13v6V|^62Ep(>Y7{>N?}n6>A|St_Jp;cS~xi1wU=FS3j-Jjvu?SkI045 zZov?+WedY4UbH9x6>^w?$YtzQZO6#ginJLrQ*Wmk`^o7Q6<;MM52SLZY=$rq;}HRi z)dd~WH?MuotJa*~RJ7f5joqh{6lQbXLLA`@d)K5RAn&g0@0vF-L~$(`L&1EQS+bpd zu(zIRlFx_M-rw0JvPfa`FwlZ^b;%e%sNkTT$}h@>3pPfm67UdDX|>H|os@t9mKl}wKLJm=XOnR$5aR?>QKAHJE%SY=Hn}zstY~;1Bk2Y z+td8AnkHyUJ1QW(RR6(T{_X0H^M+6Egv@-qef!%?Bxsw=Z;^1%g}-6%%*Reu%j5oV zxaN!I{^cFsJ{->LxKYf8-D{HZC&A8mK1tJrgQ-=wP9W@-Dcu=imRt03z3UNmm+}Mf zwOZJ>Q_TTekroaIitWRUEiCjbNN`;UjwdMtE(1=t2z;B34+q8JplHP(?ab7uasW^j zyQs=*$fm2ed*!KIZNLP3lQW($67fU2!-9)?*YoAEzZPG1)nd~)ro1Z$+&coXO=fB8 z&(ZKReO6nVwPQ4F3)9~8=VkqI4CIxMzA=r41zCEri}JrDwo5f{Uzk1R#8_?hnm6YZ zU-vF@5j%AqDJtLe;qg;|gVWTLxQiLnms9rbIkQ9iX8EyOg+5c~r~WPLwOM!OiED2g zaBuV-HaklV>wZManshe{Qk{=>I(F>TIu^{IQnv1=dn_5E?}OA1Ht%YBaf1x%?9Ha@ zdH`}-A{09tWF$tJhDGap73{x$>a3UCu8w}nl|XsMulSuf6B7C5JfmZ!@`S<~1sa?H%K}0{HlZ>xw!^g`iN>T7!HU zTy++2NPL$AGBlBqwj^$STJMmxd`h z@4P=Z<~=DmY}^#gWPZ6MX|t8hLhQ|8TyT;LvIz)-Kmzp6e~Pb))k5Js&P+bM1h|89 zIvULY20iX6k_gZBb9{)Eo1Es)&&vp$Nyc(i6{rtbTtcUQPrwtl%fYdH`j~`3!h4Q1 zTp*E}RJtBH_%xxbKfnNOwu86jI30}9c-rflO&ZNOEl9nC8G|43m3V$OJy|ZX$$3oT zrOeGP5_-UL{Es*(DKm0KcPR20J=-ctSSZ@bW5wSmqR)*jeKU0FoUVgx)Vn`hv>Qao zJ?o{nfm9)IBJ5nOgUn)EmW$4W-$H}8lNxnMYS>)BWwm*f9FFUVy$>Q~vt8gn%BIHyPN>vmU z+ZLK~M=Y_o?j_`u?+g(`H4VcRRRnZ$P=U;yXI0DkQbv1^H+P-`4;$D)0;nzqm2Rq} zR^@Xfxm*=ch1&ogQe!FpBfX$@HyB9t0Nhuf7SKg-&K#7>YXxa+_8Ss*QsL5+xPC1Z zb%fZ5H|pAXM+)-I*^&-6+ftA(7nQau#pyBO&@-y-eX&fl%b;Jm2K>TJ-LB22tu8@du1Zk!&G z&VZ(frLQesp(pK@_6;1`ymPpd8>vv+28 zo0xL!`s+5hic>UNOx?7#lV-RgwA5#@*@fF6lEPM2Xr{3 zQkPT|sRF+~ghot&GV#&0ftFgUsF%(8{eaQR_rL`O4sc-*AB{N-tAI@@2OaVG%9%Fl zC^3``-8KUJwMC=uIOw)DZ9(sPQlC^k+wBQV=k7#S~B?X&0#Z6K4Ch zChznsU}EMA`q?~j@*XA^1))_ zKV!ecyv?9F@sq z`nnTFg@LID_3q!-8${y=2{}ECiE|H zaGdbVl}wq&%g35Lk-49mFwJ=a>oxp=C%gg>(#vz?oUxj|^76j5S(dw??vs4;A8ikfE@xJQTEfU?oA3i8`NJaeVK z4jg}b^pG9q#z>(Muv?e(CO>a|$BzDfCxSvjcsTt4Alcx`RF9ltjw)Gha7Cj{^y=1* zxs+74JrxVzNo%X6r&uK*SU2*+C_O9 zR;O-;*UFYhYjN5UaVhDkxowZP+HD=NvP_~G<};2MZ8I9Bzj-K2VmCAT~x za$tk-nibW``dS$1%v169G{6=fk2w5vtgbO!KWD2EXi2gqK!=Zt56%cbH)VbI4Pp9X zM))47HJxtph^sK+Lhziu!FqWN%DG{_WD}BGL4PEvAHj3NbBPf+b)}=Utlk zp+d8el^A-kJs|_N!KUJrgToW2x{Z&q%g-qt8|U!tYi+|y0;9gy*rRXE8prKZl^Q=Hrkn(TM@Ept0Q`goR zFWZ}!%~%31Y~HW8$ae^;>*|84nV7t{fM{5}0gLEh}2i$eHXdNMy6k5pR&XZjGBK#`N=KimPL# zA=e0VD~k!#+rT~tYl>knFz99yeVd@ zl&4-;(k@iUOy36O7Ro!44bKCoC>d%lC>=Iht{E_QNf59eoUaIQzjGmhWNNR(;1=949N;w-!IbV8t7a zTB0%Z(Tu6a`U)c}as)rSE=(zFd^2{L+V)EtLBJOkVWl^?CCb`|ZqxGP*M>5zS$z}{ zLNoM7Hu>L>hUgE1&YK)8!Zdf|g?dc1B&6}sO#p%GwEd7f@xBfH7v@%NV)P&>uBUOH z?)M8{jdkUR!E_>YI=M7B64Ia7owfD*VOr;Kj?PAnK)~H;jt@_PAKDdD6aye6xRd;_ zzyIMsu}s!mucAW+k*i2^eqiokgpqiDBUPw#^KtQJiNgRvOH8NzpC4z!kY=z{&v@jM zX1a-_A=UbKK5%_UGMc4S05!f2NU*?9w~Qm;D#SkGmt|F-xyBa<$R2Np&#s{SS?O!G zA`f8>&YJjwCkr;mnf*TN+t>+ki(To6|6{H@_gSO^J%S089v`_4aYMBs;AM)VA;o~v zv0&y?mX}_7-W^gA+N;%fNe5(j;Mc?Rmk3W#F86vpNfao&NYY#trM zaMne8@B`617aw|sYhAdg1Q%E*s^W^M-1v zVPw>B^hAS*rXcZ0(?K9IrtljUJote&`c;Nbkvm<;Yk+Y=2-LMEWeh&O%L>sM71>Y6 zttc@z`AcFzz}kk^ti>ZvNQPYi`Fq&Qb_|V647Lt1zg^}X5?0a#;0U#Asq~xNQy>S$ z#Z4t4g=M$R$p)klZaAj>CG33wIg7z|IWn)Rn(U8*(eM)UB>8q$V#jywoBP5g?d3d{ScFB}N)1xvk}RbiJ%OZMldmSIbMy5q z#ryc0=Y~WMoK+A%?AShOhfdm=d^@mJ+l9aRZhU_{`ZWg^tv0#XH_<5~-89QL_H4G` zP#TS1xg35X{8pMT8y9Is<04Mp@QqI04( zB<)Sw{dW^SdTdtJI4%Q+3A7vGR2xe2m~IDrPsx|X44QaFc1pG!L1R#t!$iL%<`wg^ zPFFgOCN{=9nG+4~EdxoBnN!~n?Bf1FaqRwY1_nl`E4x=2{J>l1bs*!^CR3L!u<)$; z&JENbtd>U9$010oIxK#o0;`({*s=#A<^^I`zNP0W>{R^9l}q6lnF&s1^4fq^6Xehx z81fOHHASplI*zyx8@Qpo*BmAlO$>UV5k4irxGJvG4;=Y!kzm}XhUH^7VIf>VZWYu0 zA+64UY+ibOC1W7$CRn~nNbljivWz|$Ky`=(3Sq&}CKJ?|bC--aX&KO|TQlD)t z3?##r&Ntlmb8@#z*$|AUv|sPuY}8?V(zwIuuyK3$^=RMqwnA>TiUe=AY7bB+Vm@xE zwtEt^r&hrNG@|>wW4H6mMHlz^E4auwr}x_-KA-;2o0qrn1lnkkp-7g)*3T=1`{tb~ zNlpJIsLEN2Na$9UyC-N@_dl)nV6iV~v+aluTkd|M-%n(l4n8%yZ}`%G`=3eI^!L@+ z47Avq?Ig9oXLlN&g@5Wt5}E$Wr=>7&rqEvWxW4T175$+fIYmDb^+o9Z9pIm3hNM3j zT}9u7oDWJ5?`OYGuAwjL_*>pFUgq=OQrlHR7bi7l$d(xV1p}PnL)Ic&{1`BeW=ZfI zFLzOF{h)qsqO%yE8+*#vWL&=DjuX=jlS8DVq?H(IIPK(Z>f9OjtSQok=K7!ZmVi%2 za;HagSArvEUfRjlG5)mOmlhZUVRM_#HlVf?A)fkR8TI?=c4W>y2#tbPf{BYey zcT`zS&0eU|NeVXGM{?|4ebB#ZzWqs7&S0>EX}0^Nbz~Nivx4k7lFFZgR}L)j1)ZZ( z{!^-|mAd~dc%)|m1@L;b6_#ih1~LML+Y{MiKc#Y1GNnw4w~!??#SZksyOE!t6?YX) z>$v(sip=~R;3EUlEcJED7mR;;b1Lw^;{2A(ZtAk6Kp#+wL5{}&_=^i z-o=D`1Y*(3+G=n&u=jS%hV8PC6!_Wkj{(~@i&0zmIkQa$_w_WyOd$~eH+6z?rt|K& zn>08%D)MmJYpi2oL`5R^l|`w}+Vn@)&=Mm<*g{nR$c$~L|LbgZdT$Nu-5*W3kQrnDB`9h2pL+&494fc;^IHzAjQmL zJ@YSCtZnjsT{270&P*S%@q|GWJW@R3TLzDxUqiBw?w{B1Jj8mCiHG0xKrC_n2JU;# z^u4YsBqIc|j*RD*-!BF5n`Y&1#5k&8}3C6+>b`+&X%x)1E60x#Ez?U%AsJq7tT~-i=a8HXes6C zaS$eL^A58B$YrwX$`=Xe`nYR03T-@}x+KvMokVl0Uv*Qz2yq4$@6;8J(u<&)=z>=1 zexwAsh}~vtNi&({_pvd>u6_mwx<)r8!{J+rV-Ltt$pMn@Bwu2WF67FLhZT>U44_fI z?#cOEj}-{_yN|u`Zs_-J0D(lykEy^J|1D}qNN?HjN;d!BLw)}?cx{LNb4ki`!!C_o z50A@{cMr8DchOXQba2)`m2raXin+UTvFK6t`%rmD*w(e5i$-!lZ;i zqLg!`%S=I0ec@Sz^C?b3rq4QN4By%|=}XwbGFZx}o#hiXT&HMuWLKTsdo8LYT0cuwIOM;oJzql}fr$mj2{ z0U-n41c&IT^24Nf9HzDEz_Yjjx2a4%aIJIYEfRNV$TgH2-KSIsZ?}*-aBT(*Gz*Cp zBpQZSs#Fx{ksbou+;vcPKZ}k(S2l!JUDbJs{0{~Ip`*@G!D-0so#t*J zmVEK_oC}X8(4nk$*3L?#pHvT*6wOU|()wb8fmv7`~*Y-E6euc)BBf9eDU9u#;HCI>u$D}M9%2+E}wlOmyde9`{1fgsZsI0p8YEl^JzI& zwL}%(Wzn`d%c!g_lBImRWYCp0u;g-7Ntp)oFSoRfF6yd@5}BR#rg_tM2+9a6{~vmP zpeEv{Ai%uN-kyB>^l%x8x$(nvHG5)8p+z6dWelDd)uZJJTOzEOR69Z|}A%ML3GBYRf| zw$A&}^Egh8m}2v-d|E(wT>w#Fra;D`B1jBMUm+|}mwW4dRBXQ5#14~CokF>NUZPM^ zsj-B>0|()7YPaKXOdGdAVB2PHg{^b|VS5d!(amk5d>1r^AYU$0YO#*FaZ587vF#LF zCGSe2%$O4WGXXYyRjm(YH4H_Kk4TJfPcvuO;XN-)ty?HYVi?fKfe__-Ey4OT!h`AI ztT$OU0^Y?V4c$A3EFzZ7`{GUIQ?lW0_kH#s9$BX|G^Dfcz;(-Q-tf9={M4hyJnShh zf3jl92MoGo#`SNo=FHucoH z|1jGtriMD9M_;`N!I*WJO^MSgFYJg64z3Gno68<;;is4vFS)5_j!I~kXGVGtHT{-| z<)+to0k1MJzVb^(G`}0jw;ZUje%hmsYN=AqYkhG9jUXL2Ruoy~DHPo%NG(>3C0;wc zn7m&FLB4jTw4AOGcsL|a<%GxEVIau9VKG^;Mn(BK&aayPHs?}^%CVnSl-;O55(`Zj zL$lv0$#C~t{c*?qy`_7R{lXz;++bW%rXuOS@%nZ1#+(&}oy>fO8Rzt1ffhhcJQx0> zj0_fi{^=7TE7T<+7CrK|WJD4pqlwue&fmIha;|ZiuM9&EBxMH=f8&7Q4T`rcyfE7( z`1o3Z$!*qo50xaBk=`1v6W}&fhLIwp$c)az&ZdFvsiK_ul;iS^U}V&VK_x|n5i>ml zj<0hzdCt4GJ5aQob8-ssd2wmcA{cA(34(HZnM6mY0wA7iygXj@!=b+Z$sFL4%(NQI z*^QEyTK{FyrwyiRE_y*hR2&OTGGUEHED(5IXi@1p+l?$n}pWwL%9lHZ$J zhQf=dA*6de>NR~}!@8^+1p0I)^yTdDCc@n-{TF@^>LKm-uJ%X0oZ*N|XM6N=b2MJA zfwDXwSN`EeF}0D2MR~t&ylp}WmRa`~o8s~&Bh)8O&0bUN&is0_$I*Ng{)wQ%W9z!= zk0gSl!~`ly!_S^Idno~g^y=sU?M1bmbl{XvNo8aI{MX%a{(I8=9s15Y=G6Js1A@<9 z8v~Tg&Ra;qtvwbM zZ5#OM60A>Q$6K|hr8H#nReX2l9lMxhJYhXJC#YOzQ!7eeV zppvJ@V{2O1)s7tSjBoI+jr}x}_XfwA%UGlSjjRJLv73TwaUbBzq&u=XLTNlzSsVN* z%F!af&fw;e|TDFK$fW?T|QX!_!Rm4lGXYh_qb|r_%GRf6-%fh_`m6FGQH4j z>Ue`AR1weANTr3OxENAlY;4!_Sj57FZ_mp);l zpps|WXNOJZaSN<}0G5=pChw(ogw7QQn4fPB#@|oRVqp@e7M?h-(6L-(`x3FPpdcR$ zn^b_!F|O>{^1ouwngO>}X;E7mf;>wF$YoE*M;3*bH9E=~1X00IL?C zO6(SiG`_LmgBxC4zD=GE2x+QqnwA8vOkXy>eC4v-IAk|vK0wT7&FjUOAqVd!&-;s6 zOk^y8l18@&EAZ*NDN9y(J(((4*-K*CRrH=?%Yu>A(A+Y0x9idyysK>SvLiV@6W^G* z)Pzd`s#h@0yVtSlXCVHF%umyBom=cGeXH9bEsCX`kb6!_`mZW?)`vXlIm4&qv*kmO^%gMJBiuYO);M7z6)yQ zcaneX3?)GU%tAE#@!u(slSqh8*~cDNetW@XvvzSc=2i z)p@&ugNxob>CSrL4re2r{(71cj&=Eb+-3>YWv{%{Iq)j9`(mcaa%Xz%Q-j-0I%Dw- z$T-2%>(ElT;lp~g^RNYFMZ^?s*0ePI$I$O8bajSwkjG(;0i5Fwtdt3(QnSw&qK zl`C5D{h!&-+L#a+%!LPhpXIVos%&q=y%u|zkz~q75QtPo@;qc`HJI=6ZDrI7R%umT z05|Zk)AB5&N|i3s68ytj^9j2sWhH23D^!$LHC0Lpb&XkWt3|=-sSLI36LiT!er7mW zpZp^UkN6zCx*$mMfti_G_LIR5*<~ET%(&6o&4b!|G`rHcBwZ{2nPV*>(6R#x=bz7!Tu{~cpf9B^RfxiF)=CcYN< zbx$+EvlS&@)5O}y8l9Xmfi1;$&BHb(Z0y+yJ10}EsKvTnc}S1bP925VlT`! zt%%rR!xnK-Z{o@hc~hKqb2Sg$6(MQLx6zsDv6ma_qr$SFzVf-!rv0ld%}y5ghnD`tumGy5xr5i504`9d*s?$C|EqA8#8CNI@?y@v8pc z)mK#GDGU{Yv}eqVt5!{m-*%U z_AR&Z2kce$O?Th&D|)&|Cw;tCC-yc}U+kw@pC|5WSQnP9#>fqK!w&0dA33V02SUdz z9VHe=aY<>~!jH)Z*DYnuVuH$j!s+p$O3c<;O#3-GtCTDj-dMbviOlSf29<4mthsTcud|~yy|dS0Jqscgi8sfqm?O0Ro}%B@alT_xxH7}QKT7~kRODAgnK#1R z`MN#ZFR_1hYc$9ZJ0(1@EQ&bM`a2?tGC zFY?`P)V^IA@&1yHq}|c+a`}w3f=ET9d%?#E$9ETim&@v1KA08rKjZXa&ALFh)IiAp zLUXOZ8Wom+Rj6vd6xe~xDD+gS&>|+Q2+t9K|JW|Z~<%Eo^ z9V2J$e3ysK{W-Q0|DmnDo!_!A3~&USa367cx>r#6P!HphKk8oArCK`a-OvxjzrFK$8PexMzP`?zxwaU@6wEY-*`QJ4OOG3|3+V$6CdV&U|s-U0)v1? zm7tdB*CI>?n)G!tZWH{{>RJzPDi6F)z|)#&22mlr>LJwK2 zKQP$tF^!7Hovj75LHFV0>e7s7s|e0cQ7(;=VY6NX5qjvvR%Qsy;5d1l5&%b;z-siR zF7wZxxkfcwuw%o6YF?w`wW1K&2r~eKfkhpQ&!}tHG&%2Nz-3Y%6;sEMx;EUd(5qa+ zi$Y@^V1AaO)uYO1&i4*0KTWrc(?MFmMZAHS*d{i8v zc=6szy8xIP0&7=uGzvPUtc_j_QjyPdpp+u!be%R~g`kh=xSp5P6(Q*?cmX>}L|0fP zU(+=_G~&qfyr3kU5Yv_pw1dehJ69^Jwn`0peDjw2Gb>%6F8}YJVy37z4B*MXMx!Aq zEWM@(2a|@!UhXl(#w7jQ?zaO)k--UWy>1C)QwL9rc?eajJsyHXt{U!2g@RIrZPC$9 zz{YODA}PzLt~J}YnlD&(9r)~AP1@YHyXGUC8#j;!Y(#s=kzXgC8|jP*qZgfcEiVY5 z>OONegQ|mu&tpbMUWeO=?3W;%sibPWbUj5YW^v>_L;Bs=oDO*BnXr_j^6+FnyXFsMO7H!S8q&o50AvXMJTdF0pyMp4n{|Ym= zoUPgP=G9i@0%95lM{U!6^I~&h{l!H5Icw|KXt{=;&mH8h?%!hI*hre!(vB3tySA=e zI+9iSi%-BYF;tw#7w6(bB=`)OB_x4FY>|*=NuyLBSykD&u(Ea{Rr~U3;#v`zFA#{Z z`GL~>^e~bP%DqxVYe*y4Z0i6STR;XcW(Ko#d;Ikia>HW)7D8WfQD`XNuAmo*-@cSW zF$lU~UP(#s0_m6nNYb+b7PzVfy@z`4(FN6_KW~{JAK0){UewiMvaNf;PI+L1`~iNP zM;BBeuuuEW?dsDi6oA1hOUVY;Hr5_wZ@^)HW`L2)$36O}Ni!V4mN2TWJQz@^2md*f zU8*f+hx> zsAV=IkEv464k2x-+ZJ*|WO{MEu%9-SyO?_K8cJLYdE=w+ zTlZ{*2&b!+Uxwd}x%)EQq+HCuFzQB)56J%Lp5z{};sXfcsZlXMw)~~(qrD1eRfu>8 zc+g^vAEpZ~3L8r(0#lGc_I--ZK$0)I0EjHlw{ zS~8SYov<^STU@FvP84tE^oB;~8+pZ)H?#uYBk_)*$=X?)vHRq81Q0Wm_hJVWyQ}mlRs^sjsO-?QuaoH zb#e*EGYk>F>3A_!^LB7UmHz@}R|c8waP^9(N= z8le}S^_%w*F#T0KMvRCST$(LBb+JjppQe}X1I0ZCldv-+eU}o_RpZf_qWGRe1UQUA$x8U z^iQ9j`oyI&G4)(6S>*yV6W?6lHX525M$AE|UlGWdkB+@%=|_&ix(ms-ZmUCi$!0iz z0^*ROKV$x}jvwv z+0X{)amM=xe<3TuW{T%2^D*vCT?!~&<@?t+{8DCQJ1u)k%g%b6mX$#(E%seQ{8w64 zI<^Rm9zj&`wDI+RJ0g=&OUp9f!)ko$^maxpW3>D$PCFn|^iDF4&~NBbfUuntDT8yl zjCQ(bChHwq)>zYHt?qrzZ397jDue$z_}I&YQ40jmC4n&l8pfe74ux0IvGf9dW=^g? zNjGB@FcRn=yY*A;dfh2iv{zpG=Eur7KV}rZ85LLEmX`J`E$flHcll?LaUUSOT=LAc&^>OMc5Co>;d1bK zoESOe_)BYk`r*yiwFAPD)B08hrjaUDWc;XS|E`B$K1*mwJX;eta&YyFI;l+%^Xh{m zaT|uimq`A$9z9>|1)VNt8B%<^>UUuEdvHUIEH}W2ZwXFhMaNt;rQrt_Pb}F1Y8UcvCW1m%5BEZ zpQ#^YAn%+;fX(81a;w9?RD(4Lq1yjQ1LtvCHNVMqy*U&at6&&2mkjbVv>c9^F}b?0 zZ+Lj)#?y9FwKX*>2Zl}e1-n}tH=Z$leXBd8%p6WF{f2-2x^s0D$n7zbEN?r56C|a5 zt!HZg7Afg%Q!3Dfs!;Z}u4}K2C9}ijk^)-Nfh`H~Oo|fAjRVn92)G0+Mq{Qe-4Y62 zP)`&RAog>$3c#HWG`Ve1)%!b35^dfuva}$L%wjt!-=!EZU?tiLAVQSH%Cv#sOl z?cet9^;^Gy?%rM1RDb{uvb#!<5Hgc3|35kHo#s2C6(bfaiw4TgU{uNdkJCTYobyH6K=d)| zKJO~;SvaAukLWX4Utc+;Qc#gWG_kMmFIIni-#XQX^8%tD*C$Y^Iy{ZI#86NYMgg0k z_I^9w3Ti65C%Dtjn$5=ubw>59U%|Hjz4M=GPE#TKCz^HE0Ig;`ypUZSFdD>j@BCQi z!lEFuKFx&Y>{}60<4Vd)Eb+X*@!m+QHzJ{sO|(Loq<@%)m|kc5*;k9%M9Us_Vbflr z>k5AH!Nha!9uLOujf7J#S3nv6m7G?0kXz<;;*uB>gS;BwI7*iwzvo zL7Z$-#YY1x@|`mB{RzJIEGn6h-0oR~Kp=Iv(e>I!q(HQTMgqbdOA}Hh6Jxdd}GzC5LTv%F}YfW$4?Z+_?tV7#1G(SQP?^fRQ=IcaixCG2FF? z;)tLqf=;tmsUz_J=S>JFeN1~*Uu`UwT=5)lRU^j(=C&-LQCp|m{VNhv>cNmPyRkT_o^! zex_JwO|U{av$Krj!g+X?Q1iH?nm2i!zkYZ19_U`&XH8$=r}vdqJ4~AYHNkr8N0SOWK8ojTXWS0M)NJVvZ2#s8XddgZ}WujP7W8m2oDI}hkY7>uK*$$$mG21 zr9o8{0!^`odwZX;TvSXUf5B@{e^Z3TZ=%H17;bXUILJ$In-3{Z4<#R_qVxM_{IUO1 zc%jm?93O~}_7U5qM~7Ndxmo({nR+ftP|ER#EcV9|r(*1H+F|x-c)*Bu#++W0TQf-u zOnY@SOYt&p-hXBEeVr+{_5>@z8q}VDp(#XY8VmLhvw!TC8cG?`Wtn|-3kl7$sX!k6 z3Cc7A_p%s8MlICIDPfe%JC3`KyO2WD>YpF=jORu9O41M(##RyDBI}S(qRdO=E%SKm zS|5kKzj!YBrn|kT=Nj6Z+x@J5ip9VwFY0{A`F`u*U5KLM+blIx z`gJ^ARUXz$`fX4dw}lYnBC?HN!e*pX{D&M~AurH| z1ExW&vq%??^_|WNWTrv>10ZJ|e$4F|?v7i3uzwx|j^o6*@9i1wAg|xOjT1rc33Kfc`6X4qb*W)(Q+sfK zV_Tz;sNJ>jWExbElDBeV66aD2Hb8pG>QO+Mz>$bXyfC-GP{*{>mLv8tKDBIE?2!#P z5=m=si=cys?PDdyB~2CCbw@SkArdT4q?xf4=*dt1|Ky6~!QRQuAA z@dmVoD@N`Iq8nUO`PfwGD^C$b3nzWUGPoWhRzQ(BP8|BqcfSG%qK4JKz%w0;<+P6o z#r~;U`L8@Kn^>qAR*?frZsW6j-jCX!%t3rz@f~f&Khr`RdxBwoSl?fNdkufT8{AH| zW+lA%!sf&|?>C4M;mRQ*Wo=|m~{pSeiUFj#7Tla*&!z-6uS zPsgN%{b{V6Sc%njX~(^)-kxiVep9`@phmMB-&VZ{Ef=cx8Yp**=^w3@X!26^PmkCm zfm?0B6_uc3G>z*Rx_r{%RLj@D zpgQebL)2?d_@cnY8r>M53)5n0r#zbwVJRD8)dwby?_OW8`*^4^cGyo7xPWR$RiJ95 zk?onR@RU~8(m-r7#Vfl!EU`Q>aUc-Ce|66$R*!ep*lWFw1~SEe#}7RX-c{okwgSB$ zSUsYfoV5NZJG&`NdyYw|q~qUi<7Y&3$yr+ZO(yNe*~S+ONy*q1wNN-SGd`EpK>r;u zb1InRjM(6oO*L9&XW#Oa(w->kr5+ZQeN%KDT(ou4u(54Bjm^e5vGv6`VPo5FY@3a3 zHRg%U<^*kWV%?1KKm0HE<*xm_#+dtU@3kh*?m7mQpAIngA~Tnk`i*>9s-A*gHgO4C za@+KBk4cnawVaVqtYlai;O~Xhcw2A@n9#R3FZduYJ-+vrE9Ej_LI=gqf5T=T&}h#N z=NbvI608tctfY#Rx|3(c$deb5Pue4t2lr{k`9-js~Hqdd`? zvT*cEr1PqT@+~A~cQDl$fFdhm;z8w|JwysFU*Hzy6KnE+yC9qQxo?DT?c;3X^$fs) zs#6Eu#+V|%FzPF>AlhFOHW;I#&rQQNp56mjtE+ii7~%)~d@L#`>aN^9g?qk~O%`-H zRlW!-=bBmX6q5uS6u3kW&!d&k592TcRWO+WI79$u64&e1YgV3z4;+%1t=mT&g0sjw zKciigw$t?9_0AJ}vwHiXo{er6p8iSmiKcb`YWCwhZSQ97D5ehzKE{$sdww!+0iV8m z=uy-UBSHaoa*@d7I^{4K&yIg`$uC}Zi-Q>*yO!gfOT+H#m;${+c0=n09jtJ|FGIbz45F1*TRpZ4V{5 z4R9vqO~U~%K2dkHRc;k>v#9bK6+JExtfBL8mZ|!i6>V_(O0a_3W6RHU)i@`myG{i> z(UD^RnCfokd7oGoY6YF^<7W$z%o~0|Cpm8mxL#52c11zB)3I3tzUEw<%^B^jZ)y(N zeHC?6KS;lDr1-;)r|WD}vFaR}OSE+FR5ZR%SF^nJKq}{VgzpakojiNAnXsjgq4Zjj zU6o@en@^m8mlnrF=mHb!0tH*@0!bWaXb^<-4V^7dGU$|(%zsvL7Nbzg<_-XtM8#YL zsiHgH4xP3doea&YXm2u`QPuZcn$Wsg53A^5>GH2v)YbR^OA$0kUW$v_Rp zdd+j>4YaO}Wr#r9LC9ZO8$lt8UzPQ#NjJT-IEdGj&c2M_xh!v5o#F4xJPShGI`yCr zgZ;)+wjAqCR2+>PaSZpaBYKXncyd;7H`}y=mcI!3!CCe%<+`1 zOCe&^V4}bXE01fCo^S*1kBsE;ogXQ?^NeG|DgPr$0efGOarZ!nZv9(11~YNy)3DCf zWW|tIWsXMDem&d~%8e*?$Ih%N=TDU_O^&T6d(!7M#DO*u$?UE14s!jR%kf zJaqRlU`nxu3+>j2)lTW;y}<%@Px%&mbD73@Ic=IF?p3sffBo&v{vJ7a(Ppr=^hCv! zv`Q{){6R&F-9hHW?^R1?WKIr5gp2mQcWS1Ny%5Fq$Z@))aH0D3Dpa_CuIa?vyKuMjjOTC^Ur z*|;7V+if2Y6t?51JcOZ3(n}ar|TEiC2T-Au0*Kk+3V z4M?2%;4LYTt$^fnq2v7d)1dBSt>W3x@9X~^5~pZwrqS)90V>=v+n9Rjkc$A2kr)O# z`0yXvs^Uc7?~0Pv;wa`!CwU(;N8(LpzuR^V4H(sB$Lj5ZI?GIf=9}dNmUrbup=0&S zBigQCCax!>{208iK&__eT&E6AXn+{%R&Uh@*vf{tH~+2N7NoxgB}{YmU92zJPqG%9 zZB*Moue;^~co0AI=|j4W)wFcs!WIW`Yu^*@p>tV#&Y5} z6v{6jHk>uf^U7M~g(H-eN{kJvQLuvYm zD?mp@jV4qh6ZqhDOVJawy|tV=VyD)h6>5r-_9NBSvym+I2kWR6^=1%(Udfg-4d%0X z=7xA)GTRRObf!oc#h3Vwa3XFqmxYfLJb!h;2-nDMcVqIpz`oeGxKMd|Zzq9cF^7GM za7W4ruIZoGvl)Ixve658n?70TC0-xeNJrlVP4`bkfziqJ9v>@XG`l&l=Cw0A5BlL* zt!|z#`(R1MF@{cB6Wu6-eBMX{I6ABTb8GqfdK*y^!%N=chkHgx-TrSEt>47T^{6X9 zN@tU75&fvsfnk5CeC^J43OyehDP_tIkGTej#wP7YN4Qi_YE%W|3-(9di`*>OU~Cdw^PVM^J# z)JV+-o9jw%JBL@fd?KNY$-}r}6t(Xv()YwBv?6Nr?ef<5{X7RomKq92N^?2l4>i33 zJ8AYcT(m4(v^|#o(p)c0a;n0b)Vj^8?q;l%B>c~4f3b~&PZilGRcMPCs+=CviYB5| zkwlunSwKt(>_7Q{P&-8My57?)p6!avF_MMU=F0a?TmDtiS>%VlgYfJ(Y{yQgnx1Uqr#+t zr=qjSr8z6ZoF~51s%mnJuJ4D}ThpZtH^GDE;S&1ucc!7a?q_GAm!pvFgu&h84MRF( zN+)*r&)NFy*l|Q`Q$3X2fYB1`6xFo7Pt&)K8X-(w~j=1GNh_d%my_S36t3GloknA|VF|*2jG6 z!BKb~*HKWZ)AtonV{pDf{k6vTy&{lp1!T^uXA0l^Y* zwM>iDg_()@*EmSjH=_6l`u+sW<$GL+=E$Nsn5mn=)@U;-rxDr6VeXFTp-eo~gp)c4 zd#a*So*I9)8SVmO8?!zna;CyB$y>{mlS_t{tIjzkp%rhzixdGoX z83&=<2Lq?uocQXM*v&4trRFD$Dc{5jY*dj}1y zxfXD@COAVmNxeeITX{C>G;<&x@_Mt4ywXH_WtUEq=}887mIX`0xXKLuO1oV=Z&M$X zs&Y>sb9s#HT8>CBHyRVn>$4|%uk(}0_)Jv<*h=442Q@Z-lE%;UK2Eg{YXDog-GnIm_bhsTnTT*4D94zn^TEvzBa~4ON9)0PGeYINQ6P-B zQxEBX#o3;nt6g3CQc#E=?4YO{lU08)?4vvztjG^UM{TzRRW%lsE$F+MK>D6rn?1=~ zEa(-{@0vy1(FRbu7vgVJl~pEQJ2PKMP`dLat5@p}3>;5gy5;x12mV-YkgU!lLn4R* zvf2S&|Jj$g5Ee~73bF|QCubEkdz%(vC80H~d z)izq6wq^xgPD-26`G`=l9nm{_^K7V6HBh-;Vg9|0@}u1C%!SwcRehUO5?|!`%Rj8u zif%5bGMH&mfgDIUjo{nTuw`J|$;F-~+Qrpgof+BB?#XLLBbHwyF$Zf=9y9MVg<keo7X3%{6w}iJ>)XWx9lR^dFngSlo^0>>F%oSMk z9iW;%h$=ikIN&v8spbq5Bw$>KyM3yla7eOw1mH9U;9x% z>z8btwH^wac#%x1UAr0?G1CZEW@k zC<~hDv`OxA0T`YU8X>-!Z^8{NZMk~658ysV9(+lDh6fRx9i#h8_x0D_!!&WnrlIvt z^fQ#-o=W2u6Z4bmLcJabJ3gC_ry*@YA=;gPS^Hw_RtCYF3YG(nLf7eRLzk?KK-a9- z!2qgu5qjvu#V}IGMT2!+3{znk^ZuQQgC^z${-RZW_t}Htj|+n-fRZAPY4Ex9!mjn3 z8^BFZ`OS7TM0)x3`z15xP`)pq21Jnh-1=V40>@EUbApZ$N=QH7ylP^6Ur=qS|Qr$mToM>$gWfU?PpJo zZCDx`y*zFW17fV{oXOL^`!|p(z#pD{o871A4eq5>1Ty<%>2S@79I-YWRfXtxH(tP{ zSj6_$z#Eu48O}EygwujVraXiTd@u9t{eUE;X6?`32j7o!qv+_Hts&dUZ!--qjt?gxoqv@;M?7~mp4gMehGE%;U7H| z3Qfg!U8eeNhd!c+LkxgVU(v~G$BlaOF-)63IY>Dg`F(X)2O7*JM%S3emr*GNQcr`Ou&RtOA7zAI!2QlSvh(bsA zze-_cNtP`TD&ge}AOC|JqWJh+m7n(2T#3QQC^eg3(I<&mk1Z3SbhwV2eJiS z1a5mvKLKyZ#Ial#fiCrg^AKcSZbZ90yR;qU2KJ2MAyRHeO^#Ug)^HvA502phyPE;+ z=Z2phA43FCK;I!=I%YLdEmB6PQ}3C`Zcm~4~AuXU0#!cd=mayXK3!&4RCAE`i}DA*0pf00}`3(mjT zOFo)ZtQCh*!}B>xn*6TWs#@|LE|e)TNf`Kon^&k{$M#M%X6)nApqq|zrypDMi7+p? zcnF(VCV3jVMHw48A7G<%BvW->JVYO{7T0~YHI+=w{#MC=ax^smxWN4*C;jGMUIY$X zgJ2Ln{KWTPG2Ct6^OVoyJ7FC~@B^DTa9pvNiO;}{?cqe1(Mys3X2Te*E@F;F(VE!; z5&5}iazhcBHfDJ729QF2z(L{qSsLY5i$OT>eqb!AV8e@9=S@hms^&UU%MJj2>*aAV z-(vPc)FfuFE}+OP8N-<*y(Nr8(u#+U*-e^m$9uV!WvR^5GU8m!ePKt?Da}3ErGe25 z-Ro?h6X8g^*NhCnI)j{^&4J+b4x)YJs$V#A2_Ba!CTvo)C4nunPD|Bd2>9AKEIuWb zzpwvxT(n?!?VAX6>g&TCdRkyD>rcKht2g7{{fC0sc1EDd&IXS`irCedfVLvcZf7Ht z47rfc#{S+kDKtM{Ndo-xHHB$d$}eEa%&3Ag$pd2)`A6W1RuW>Zh8l@h(B+oC?d8h? z`GC+)Hs2l|yZ8Hue%H$t4UT8{SHe5F(TX?`;qz4=c@-2z;5KI)>H?y=E}lGhhWNk3 zqh#&Lor-1GDaVpb1eLcZpr$_u$6=S=?Q$p%UakFVWBC3=qn0K+2`tVZzc9b2qS%@W> zuuM4}7|P{8?y@H#{!H*uSaTx^KjeS4mPp9&x2{GtA%B49%5uIjvY11BSVHV(8ZmG3 zx)SZij`Whgoo{2^-u*M@h?Ua(NucW-q^s@d&3ySI$R<_l{K@{I z=?=)xC>&0d*#WX3C=mappA~F)dK{P&e=@Cl-=~Z{j$_SaKQqk@|&1quk>gHeo%bQ}THuYnNBAgDrH^}mE z|FA=ZWd=L!36?1H%oJpMryr8Sxf+v;SnPBKNc7EYCchShcU`j0=$@XG&et-`I6d+1 z16|jvN70r0S5)AY6^G{( ztpUa(o8;A?R;(rR_8Iyf^j)WMdpGVQKBMN;Rft~FU;*{&P9xPzqS2n6bctA56*aMK z3^`2~$g1Ef1Q<|9v(!sMca5}zU->WGU&~eMZ21vp@?WiQ_)?En7g1;_K`qj1ViefL zNIM|*PmT+YCgX<=hW%0!gG)3!1vib=wIY!#%r&UrLR9-!*3a~N--mFDzd(Hzs?})> zqtulG`JJ(`-u^Zu(8Vf!Q`*RJD3DW(=ti(-?)fq~>(@_ua&+SBSpD^ehQ=zYIOHm~ zr>XnDMS6RHY*G<0wdUotw6dz;j7;Llr-lo~$3hnp0?O!FrcscM89^Zk0=r?j$QTwI z8ZZmrSgry4Gt}5Pxh-ra<}s33uu=Xq+SET>u#8^b{v*R@(0XO{gEF=uAE3i$7>)tn zFHcg4%v4ucp9yzpBw5MhK9ws6kFA zfDthN@4&-wMn!xYE#$sLme2$9Xhu4c6c7-oKC4<`n!r4cV+>^f9{T<+h643J$naE} literal 0 HcmV?d00001 diff --git a/ansible/artifacts/sunbird/login/resources/img/bg.svg b/ansible/artifacts/sunbird/login/resources/img/bg.svg new file mode 100644 index 0000000000..c5d85d8920 --- /dev/null +++ b/ansible/artifacts/sunbird/login/resources/img/bg.svg @@ -0,0 +1,33 @@ + + + + bg + Created with Sketch. + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ansible/artifacts/sunbird/login/resources/img/diksha_gov_logo.svg b/ansible/artifacts/sunbird/login/resources/img/diksha_gov_logo.svg new file mode 100644 index 0000000000..fd3c8c70ae --- /dev/null +++ b/ansible/artifacts/sunbird/login/resources/img/diksha_gov_logo.svg @@ -0,0 +1 @@ +diksha and gov logo \ No newline at end of file diff --git a/ansible/artifacts/sunbird/login/resources/img/favicon.ico b/ansible/artifacts/sunbird/login/resources/img/favicon.ico index 4b2d8aa6de5db3be532e3eff383f7149da6a7e66..4efa5f58112409a2caeaab80c6852655a5a413e0 100644 GIT binary patch literal 1150 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�FQUj01XYk9{8imj$=XuYq+JT2(j? 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 literal 68091 zcmbrmc|6qXA2)n`$BZnA^dmx4mLlckL?Saz8&O&;*>$p1)+n;hw{&t^$u1S=NGe&f z%Q91)k}XbTXQnb`%`}Z|%*^#%qu>2Juh;#0J+J$Ip1XgBFuvFJ`MkHw)x(GO%Sf$} z0szQZS?)Os01llio*3$8zmlXB&;W_mm*xd^ym7y zV9Cpu<&qLrtSl`p@vpS7klCjGiKi8_=Ib;rG8Up6vO_N^y|n86YStdP1zPVBu0{_6 zz>fOwnoA#02um*@@#hQp`M&^2{`~xZ@ny^Z{*?UBS6nn$^iKo(`TD>3^8eoN_ z4UC@r^SAsTzRmyEqyE2)lqPt7i{`k(x-n4Zz{S#i5l)$Z4;J$&HT!BTO{^F8vl1eT zmUg=)Fn5hfHD>+8&`m9TO!lkfWQ3%1^jX)sdcG^OI-AwM$1HtcBG~Z@Z=-bEqZq%1 z6A>XN3;DA{XOyAEO&f-*&X2IJmiI$4r4Or*gnXcGeRBG?*v_ zi+W)iw{iB^(Ehc%>1AD{(~%37-Kj=a?)GIVYt7cnwB5_tBKO!nOt&B=Cx!+ zZhUKkOML@vMks!samH#ukf9Zj(0D5FxT|*6=Ao@*k0a}75%~w+)H~|i20XgGx~jV= z$!(_e`DmhlA44;0#jn;ge{FalF(mQsL_FEP$Z^Y&$c<2Ux#?1gl?Uocq`)&06R6k5a3T4XhkbaceehHv2AX%HK%N{W-=QLsHCi zPhRtIXI0MASgY7L{$ycuauV@RJMqgeXzp0Bsw8k(ufd*i6coAHy^o~k^6JUQpL=|Z zDEMuyv)iWR9*36JgWEaHvpXZA!t4Dvo=$PIkI&ko*6gUP<7!>3DJYADoM8{}At7Wb}txemm}T{-q1Ho&}4f@Schs^7$a?*&sGi z7)hX~OGwBAbC0OJq3zOh6}*1E#Sxzw6KZL>&9|5W*R@V=n>x)OrL8vZdHbm@t~Am% z&VN%t%HLvbM>{X<*?BhdVnFZ5pj35Tk7MFi1J~YC<$rE}4GizH3X$8~@OXc^Mb2|{ zI%8)JeXz1740PQnNuF1gNs}FDd$JcGe4OZOrXGl==Db^y>rPjwQI{t@SAQ zMk{EzHISa(6vWU?mz;KJ=AQqsja=oBHf^@iZ*Fap8tdRu=YjR{cT6kP{&Mass?!pl zh^JbeUpgYFR?*BKcaFRbh&i2XR`QT{`5ocy4uSCixa1!D**uF*+h7G8JBkhCsBW5= z=P!{KS;g<#e~lEnE9c!flKpwHIQ8vT^t-1W(^?+P>3V;;BF1U1?5_;F925T_XS~F& zJDgYYD&|F%yVFw}N1;Z*E6v7@yYpgtKW2ZQ7C{#vi5KZ@RLjoPC0a5n)6~=A8DtIP z@GoOjS7s0wPACB53zw)K>*+mk`U&x^jf9uD&{0Q1_$tRkR_JDhcRaG&<~dSVKi0@A zt`PF9_ij5d#CRmUp}uv?Z4dpe$e8|%Z=O=twOwtj zb(|2|`%#nC(>#|_tSgqXRhO#s^CVaTW(rrC)zo!0m{(c*+)2BrplRny<{6`s}*s!c18XxVaY3KyAayH zQZz^MU`LH`ud-f1+}HP2pZXOuE1x+uMAS)w7{HW|BGF~`ktj(rpw9tZ<|Y`%#fGz~ z6|uZ&OHlm;xJrV0f<~K!uuYS0zv-+MuJ^T4N31CN-*0-MQZ8oxz%!dUy8E9BL} z=FbWXMU`9=beIT@?EBqv_n%svNO&9SGCq>VQgG4%+)`>8!Slw3dE0HkU_c0~E${{m zFA_pOGeZ!q58lzq%Y|xIpp3xOwPhABgOx;zUq`VPuyL$o9@W^8!kim4D7K8{9(Xob zR&KX8){kZrQT3bqaS#3Cpn}xxq?yvf@*@Y%+{ydMmQ)Gbu|G3sFgMzz=IBBx$Ane< zXp3kHErG^xeoD6Wz%Y+HMfrRr;_QG$4XUS;K4>{HW2FLEst>DDg*t_xLW^`e&-pNElzw_Hy}ke5i3dC? zZ9B~}w(`;OZ!Qk&KQo56b}|Z5B2)@kH>WB%FYZV7ISp&Fmbo}P+K0U_+`H+B(VtPh zCu~`a%O~PR&nbx;y2|}0M#ui|dkr6q)sxeIjI$~gQm-b1qL0){47aKRqgJ>9me@8% z9n=Ov(v(YM@T@+_jg|xha+E?Y)YYFiEevJDu$iq@WO>bz%PD#^8t8+Z0`RFWndy?&W>f*3c z5!Va_TqfC2@~~VMQR##o_F&q#QVVl^L2JuvuVTbsX*)$VJGal%aYCRl{#oVAf8NTv zZ%K+$T;1|2D6KgqyqWcf>=UoC?lloXa~6H>k(LMi?y%TbmBXrC`zz1fIQGr1;V;*s zyTyDmYwM}~OY;uSZGZ9jt7D4n`t#lU6Pm8Q+#RwwkUFc0$MS+yh#5O)dg7=aDtL`} z$9dj#7C$Hm>rLMwnd3;jjM0?&wYs2H8RYJg1db3|#v82k6o+T+fsjbC@F!?2pPeDn zg9}OYrvwRGUVs(YHQEyg6W8)(KbSX+)I3_p`|KND8Ea-Ylwe1FW9+^;F?-AAB#*6q zIthgvlYNH^6BksTjI>Qvlm^ZgF;CMtbCg;fvB^Rq6(?{=WN3RD|o87?5&8=jqj(e_}& z*S)K-=LPaBFdKQk&h+A3IZ)Dp=@DN*hCPUEqF(rBO@WD@#$O#} zbfH2byU{eIDs^@0)n@p>Ii&SOy!yvGA^?Iaoigv?pnf#c(&OtQ5WUFoDW z9-u;bza8%j1b=2>%qN8Ee#2#`E0+X_DFxWTgcKNc2pWoGYxKcc7PJxv+G>Q}oq$cE zLYh7%*F!)*f{wwWJgB6T?|}|6=$re3dO=+&<+-f-ggCiAcSgAWJlQ|;zN@jGM_`uY z#<|V9N%3h@$(!_AM*gTsE&X*4ucIyIjHIe12`buj&h&niXF0LfomLr%hzoiA-g+UN zwaT>&jREn7M!nt-=6d!Li46hzA0sMdKUg|H zq**=13N5)oDQ^u6=2|Yz*q8nub<=;N*+vrU=F!kc$KutxuTy(JQdqQ9nxpxf3K=vW zO~B+RdtZD1bieAthqi68Qy0&zr-yNZti@H^0o{Ndu7$l^hyQy3_lki%|JZ@c7}ZsU zvTuy`hu5){pr-_EvmEmHF?eX6Lx8mQL?1wG27S`IwZu;5XCBXy! z^=%G_7_5r&bMb1vvZiL?{M;IPHItD_G|&U3DuhuF?9@FHGebD-LQo5r*+F7>CQ(8xR=}lRF5ogUFgbC-h8yUN>thDdX;CvCNlfx{Oe0jBQW*ezI)c)K zS@s~V+yS_#;A{C4R`}f%1Gcdq=6V%ZHB>h6cHs@5`|BZ0cJa;$dCY?}^OO0})OUe3 zejnE^yqb8ujWx9`v$pcLw1CHH6}1yyzGLeiKlMvH*|@V%ZJlaZwS&_Gvplm${NoGH zL!O0Ha@w1-gYTi^gvvo@3qzOYaE80_1XZvyv*EEr!?Rx%=KUn`3DakgyvSs95EBy{(#}^O2qi7b zeA%mhV!@hN>t%eJOD>Yp`1*L`F1GA+=nYLeu-2j^(cy2_>vOW(MhZhL_5@B$3z|Cz zSYN(|Hz$1kmgYe#-M`kQ()MAoZZc^?msJ?Bz4WYY{p90QDbL>=3fRwEM6@ff0Mh-wCYep{jbiX;Fuel7isrFiI&()MZEeW^<$$W zss?34L{Dk{D^!+CGqA)51p0Yike^sboNzW_KrGf#0r%rkmAD@FnOt%pV0PTtj!zYU z7=5stYmZB=0%v2O4?9R3<90#|XSVv_#0y#kNBur;A|IY8nU0*aCK53!wCiBBOYm|N za(RcE&k0w#jPSbzd&fg>#rniYM|E$hiE+PZ#y)e~?EAi}t*-SR?gPiQroTN+4M2T0 zj9G#>O8NLDjUR`f_}jTV-aoeXXH!iC^i6sfP6~(YGJ|iy^ zWk{$w^e92EM{i(*%s={#UfH+^PB@SY}df;7^9T+9aU=A#i2Zh3X}Q@HoMK)R07QatRz+FyJ|j50aT8`6YJ?!7)71uYYi^Hpq>NFqCJLS z%XcDNonU6wJ)=Xqo)XzV(_Om&~$>U(}^8DuqFxHpr!&^=^k4JvT?9Po?gi- z{;UJjjPSlp7vLHI(i_V$%}gvuhj7K&8LMN#H*)mrYWc7z0K}=~3wce@(|Un6F~Tq+ z2IEExj2@}Pb8?>KGAWAQLbwc}ON=_8ivK9{#}F=9CW#NkG7VBX9bb5j3EKJ}m2VHuIy5X9gaONYGr%UOPqOa`dQg_X(e>;u6)y51q=aM`f zKXp>4*U)`GN5RkH*z<=_cH0$LGb)LfaLHLj`X6sTvqwCp;dD?R=-B#@l#`&vo}Sn- zQ>BGP=fN>uTyjbQoRH7SPXiqV;3X4vXiXX3t43e)^L6X_6`^k`#)?c9Z_k7@@Tgm} z%l8IG`_%GJbst)oxkQLK*W?}%=KXjxKj$}xKvRvHs1*lJpHKd^>Mr|4Jne9x-IYyW zb>UypNj=g_qtCzo?XmmdThj^s#jKIJf&wp_O9$`~J&@}MOpju6!}(${jdGM-m_dK{ z3QsG!vn(!YRL zJA5xSp7rnC6Bf^L2vu+eJW~>%=RkvA+M6k%K9ElY!6byUD3EwJSshs)S55nR#@i*ewAYD`4jUXkEO; zg;{05RSyir!NRc$>WOJujkv)!{??BGZND5@SY{8nT|79W2cqA9 zxi}!CL!F*D@^(KIICDYz5fik#o5}N%~?YdVH@V2c~h40fkNS-ib>Dw zX7zvV3v|6Z#3s9taD9w9E(n*wxc1;ia|p<(A$dO7n}PH)+UVCaVkP!qPc!r#_zG?W zFNZ4k_iEum?CfDFx%>QqZ=dDCSSQTD@Hmmy@(OZgz*#*Y;uh?x3ZxI<)pQ!|B!^12 zou&oMdw3YGWS%0G*kip$fcst?yMqca5r3SYM*P!MfYgxzgdyy~32D(3coSjK9t4Bu zKUsCfOzvz_rXATw&eUVXhSd)K;+xJFrv8>$S9ko&(=Ex~Sx-jd+$u_IClkAj%0(C; z_~7v4r`MFj=8Z*w937FwLfbs?lc^Kalmc0`+fG@2BU#s5?kWJ(gXR%?coXF^=tV$Xgj?IltM^W z8_jwF%Vv>?!lVXY7@t-aR}vSPq|Knu8Q~npZ7C2VMxi#Yp}0)bgvYlE65evS&v&%qEuc_An6>yHt~ zty5`duU{X@tU55ls$i9d_*MA#g&sce zCOv#n8Mz8V#c>k>BMnH1p+krp%vWgvS1Ww$eerik8=l@TF3=9R9b{g1FxDt4pFhhY zL`09dXVyHiQw&12a%WKQ$BSJv_j*i3kN_x~7r7Qsb}%f~o-xtB9@f<~mzMTA1*TW) zf!}>V?-fjY3(WqyLfEE&=awoFlpKZAQo@06((41j234fikHPdPo^XbUFxpcf(E^di zbc#TC5>97|c@_{Y`xn)f!Kvk9UGZRC5@+_rT%;*a=2u}4F2yj`&{54B1UWjyEgAmJ zZE~}M0cWh#M1Yn$@?fhfcvK9`!Y{?h<@6Ecj6sJZ#vB051BA;e;GNMS;b(Dhzep1I zzqc#Q&8zpLTj&qg$GuTr<0^|IdD|DgKU9i^EToX-S(m)rr@Nb0>_+0;Q+LI^w~VI1p+!0bdgF8mW$* z+#u&KO$hDhEQ3DGplmF0!Uk}k5d|@2j|e3*qPo~Bq#9zL6N}TgU#~&$))Nn&i-S9J zkt!5p)G})@N)U$7;oZjoCN>NX2$i<0rf zw8FtK%9=a3Mrqs!oW{Cam`KGL{Zl$+@0XRG{q^x9REHEDYr^O&SbiCIA~6quQ43mu z0+J?ro8kU5SMdUQJA#)B=E)#>P77%MVZW}-DF&*6T%l|`sw1%^&jw>e_`w#dYC=aU zP@1#^myysx&<4<7oEqWO3TW5^W@l_*Pcr5sPoG?z zlOdS(91$`MuOs>fsYw=i1W~!|I5L#lcfjk&?3YsQ2v7Szs30eoK<|+f?eR*IXUY*I zdV*8hBKr7I5$sa-G!@JhgBvTvx>{h|qUBYp?tDU)7^2s1Vqj=D5V(LVy*@xw31oQ9 zX9ujH@4aP&8?4O97JgOAhho3`VDq||zda~oiiE4RKnb0rGni#5;w=D;voj8^{ly+w z>0;Zu;aC86zmr-oLsys|NCK5Iz&CQeM(?j|?zN=1f6NW3ZQnNe{orke@wrdhO+%rF zX=XvkgjJhtit-9Lc>KE)z}I;mSIZm}^yhEJtPjT(5tTK3&Yx&8uzO^`VV3A7#&(aV$slo}C>z>5QFH0i$SP3Zb-m0@okmCBo%|_tk$PwZhVbw_Vw7_>8>S9O+cwLB<%V4cxAg4f{uE3u_SZFtJLkciDbeC}x{??-; zPd6+h>oyquykns!E_Og0I1=cU7`zSJr3dpM%aqh?1G?4fN|cPRR@9gzWfK=Bnp9SiFx!dqqKMSCB{ z9M%O~Y>{KOIT zKs30q5ZIt?G!1Q!lH`o}w#6WrB>b`*FCigoZuwnBHQrZi)Iq=sHWxNJ0ApQhiZ zvw~$j2iauD1*)yJ3PrYE9Jq|p%=zsinV1+{h)wz+e20L}dJPG#GO_o|wwV~})?)1# z{aqp4;}hew90iT6_E31~Qa5z09lE!M-8`Wv5=!yUij#MRf5suU1_wVj(fl~5)XUu$>R1zxcf;3D3FQ?)a}2fziqnfM7ih&K z&p(3{a(u;c{gs|+!uXd50IFYWz-T{#sUl22CykpdqpX(U4_U9~WkCvcf$x7{%`W`sZ&>trAGLsIaoy z{U_L8>t<@y3SSW_20{@mja-7IIc3qm)!1)(&p6+W;E2fIu5#CZmL^zq#`e`dgzZ(f zunO&{3NSAYc=F);E1;hbol*5g^@&5>g?YyK2Z&jgVDwVqR(bw}{5vc-70S-0zzHOb zDo`Rvv(qHdxnsW6v;tFIw0e@K--AiUQ?&V{guAS8f8?tm*%2wl1dS|xfYkpTjYoKl zgDRkR=n+989%>B{f*%s0$!Fu{_cw13$7I&}&|GuwfBh^N^oZH!IGbWTo*kLWsj74M zS<-FP9p7v;<%Zvnzmw3cH!wcZ{W?$0SquTB8>Qu#t9LnY^>z}ZpCfrDN#Um!XffjW zFoC&7=xa^vjf4RLh_V3Y{H^3L5>sm*iT+w`5~}+n!Tyd|jw8}v8ZwDWqfXf988J(F ze!L;r)(?<)UlvjQ&j6UMWd;vB?=x>5!ltcVT8A+3gD}oQ7-ay8_;`5m^%T(_8x+Woe4%52nHm9Kb6Ht zbp^5oKpX)G?LGwbu#j?`v0aQ_MF_^dfv1-=C4-o8H&Z10-;D#i@}ZS8;3|W9{fo4N z)x50;Aq78$ro#up2?A3!cMgHYjv+(PkuEX+=`_lx{OBBb5KLVpq~=V+;fPw7ui);e ziJ0wXz3#0qUeGUQMZ_#M+~DnfC65`p)M-oZtsYcebSUxDLT80TtxCL*|5@}_ZKmdP2%|u zEs!R-zE=0%8lU4TA7i02$V$d15OVtm)dt5MwsIro>3 zJ|qc|mTa{QyMOB<)u4&m%=z^8oUp>w&-iW|ccw^|x!0`{BFF^QPk9iUrLHGkBjw?Dz^$z3UanvQqd z6_r&M6{^XIg*{m8mHj#)St)JTy?r8mI07Z`+RRs7GSu33kvs zjD3&qdkjnTBIURX8EysQqk)f6lq3dG{|FxSxgCLs33p$g-E(NLYPvAJ*tSj3L95ie z-@Cc?fC{(e+p=c(aXU&&$^&{6ySRCWR%zLj5|mh}bLn$l>A3=^vaAS~bzrXQ1YDos zG5EP|&K{Jf3-{X!16074EVXQ+QqjKym}|bU$O-&w0y0^!VGm{BG)V8CSE4TZ^pwF(t?z7l;>-GMB*Kiol$=)mZuv5 zgRB|qmoeH}es~$m^CYx2!F+2ydP$>k)A-c(F+Zon<6H#ox*hOiEWf(LF}5?sM}{t~ z!-gVu{amC{{=JZF`92qW6k@V%@X+en5`0$}l>|hjSA~+qWH<=PFVFJSE5U;(VcQq-ivcy%a0nV>+5q*K#60LhYyU+TE42di2qqnX3BJJ7 z!n`?vm?{IaIk1kn4^7H)!VX(C#>h` z*K_T`z7A?CI=|AqnW!IJvXeB$;(-huf$z%&Ql38NlyXcK7!EvjG6;5b*bU+@H~=3z zu^mX`{YGITCqB`z?GYhk%@mybevh9O00d?QAYcN1>IUP67`GHYV8MDbKltvvrij$J zn9{$a%^3$>4Z-t>Zg4-O@>yu3CZ7lx>Loa=6!PhA}Tjv`w0SV@bS{LTU zP7g3&PM`=9LN>`?R-uqoJuhp#|IG%@%Qs>noiBg?x*Wf~q6mp3Y;_M|b`E5$;>TOS z;C2m4%nCe6Ow>~R<~<%rQA}rSvxVe|Z-OcrP_Bjf>w~!aA#*Ux8yYpx8FdLN1SJPz zFG8#G;2lz8lss)ncp(W{0;2)S!tkOa!k{8>ZbqnckkH!=GxJ3ekuo*Jb0;8o55;k< zFnr*K+EM4Bl!kqz-Lpt?@J;8L55z5g;E;G zW={o?3KXUJMF;H54j+&)1rR1~bHHPZbisZV+)t6B#75Y3d5bXF0n2znYY^|aE7oya zlM>$y)!Y2VES)hqb8|Ik@J_wT-KYMTqREWMvpnZ3Hod)CtCV|e2i915JsS9(b*xT& zX%EdC5Eq{mAMKu)KAe@Hn%q;>(=_KXwE8hpNR_}TMA$7wIR}H6$d|t>MC;5|1Rkh} z5lTCq&E5Sd71hf0dCu7hGq;jHKxzqt8{Me9;Z9r;tKvHaQWUL4ZC-I8R z=74Vl8lb2YG`DTltaXIfi;g*@vUv5{0sikCZ-tx==8x;d>bjICf zan&JJNonikYPdd zBQfb2s1F}4tS*n1*A(M7fad%glq)H6(% zX?*Eoq=Jq(DnpL0inJRPD|#oUl(?6K2qle%B;C?tDYW4jjqk;o2gLtDQ56Jz!@$6D zd~KQxXh5>#2zh=xQmAzZu5qwc7Y}^HBZp3TAQd1##54NCh<@p_oGmf;PMbv9XxBAV zZQms7g@1h;pXN>ukIE>u`K?$w%g0{yHA}DO8Tj3nc^yA8jG*%i#6>(Euz$3$ zZHq8B02G-3-WoJ@)lMxDiWY(%nvo9h_$mKK(HkVNS= zL~RD1$Wea>*zYjQM8v}2*k9Cy+7=kK2H99~plk@_P@m56YvsXN0W4C)i?)erY@DEa zp7=|3=b*V}5He4c4Fe`lub$6Zd!a_-=u}Q%xTFeUNm;tP-aOw%dc{|6_|t(o^@@Ay!EhOH4!Iau~w-geUaG1q~b-MMRCHir6U#p8fKU61DLQD06VsSlORW3OqO z5_E6!YP&Bzd9^LjK4PF7w2#rYva8y`#&c-TC$uGtxWP+(P^5_$BD0#4{fk7$W@uX? z+}Z>vWqbtEmvq`s2Vj{p$T%X*-aAGMScMmJ$yO>Nzg`bSy2yhf8Svus+WTX$&kn18 z2=jGd6e?iG&LG+kv`OK|e!+ql@46j5Ut$s?*!cKNl1ui$**8Stb41S%9N9Y(!mH#M z*L5%XbURY{^&zyQ`Ls~|$EVY*P@H)5GBOG2(;nDyrCoxaFW_<>;tMeN=2~ue7=hkc zLtyuL<-<6&SI}P%1R!07pfL&2NxgxDQl#4*KLB4{#segB0tDIm^WlMFmWN496dRcl zBJ_7h0IildekF$cs8Dtg4F+V;#-ksr;KSc$!rkUA_KtK>Z}Y0*NtJhRndEcd=WiB@ z$yT_;J{iB(vu5cu=BL=|g>SqaKBF+B&uQ(~UFfg-`v#qyWr2Sgg9^^mP@)C(bjieX ztB{|Vtt`XOMK;KL=!LS8GR#k(k7J`Qg8XIh1cVw$hrN}@r&2DVoTWC*vY_rjcaCler>XMPn}7~@dCuA!$`%R7MTBoOzz>qswAZdTZc zB%NoL{R9L0QDHW63H&j31=z6&5rwWs6Tv3;AW3A9p-SjAM5X`z3A}QKiZUWzYB?x# zR!O*EzJe^byu;-Z6#c64h6G(DfE1*5^M-&@}v-L~I*_{*AwH<#+WiTLo3Y%d;^$d#v?Erhp$VASXl@nr+bnRGiZynFfSvH&6u6^6L2a7Ph| zZoG`13Je^jjB8=l=^oZYupIptAc=&@9Xx`v;})SDDlxK;8=>`Zv+3*m(E zkMWWC;%`3?Ks*F*Hc%be$o70mXDINIg!=041mq+ag03F$WKn~j&1LIv6GJVs|Jma{(%m9vhY*`{s}6<-gMk^>>59uD0w0ao$wUTY`Jc?ugy zr1u@?GzCFX;eG3BzCR8i{%Bm+o5=olYmFdDxz)+!de48BPJ`QPlV(*`hOj71Ff3l< zd-}2K=@jVkQ3+hgMEtz^Gnb*rUqmJF1$FiS-f9Ady^w(6S&7U`7=sX}KSAjMNhq@H zbNL>{gtsQQ6oDTTdY$7?Y3G=%)ZA-7vEo#Tx9sU*nJ zlbm(6O|G=+85`(+zi(lRQ@IBZLWj3qie4h+IsbHiJ6=h|{lqBmmBDVaIFR5=LVAIL zFBmz6xScqnP;?^!!yZGuRh@|n;ybZw4GVvM{>uO#dXTxfQve`m)gRNH=#To)vO+a&;C}mtU^1ql_*rrFm{X_c0p{GX z5B7EUmv;Qxs!9%80=JXvLJwTZRb8)H*RHa?iS+iyQQf z(WXYo14Oz;y9V6=3%;EzMVVd<55Sb<%7j}tFCs77V^o=NssIJDg^S9sAmT`&EAX|G z6Y8~B!1I3KkJw%)Krn0V=ONUjY+<23_&j+P=Q7Dt&k7-;m(dyez{9~~jz8DDAzx^1 zWY1CuG+Ajif z5rMvjuW}V{kZcwiW{8YzJ&9O2fsSa#h87NFK10kaNdfmoP=I)`VOR3?6FjdlyzeI4aDvS(s-nletixajGZyBN42zH#N}bYDZ9^)I{8>0rGTm2Z#v>5h!A zmaf+aC)nBLd`1PKWEWPVmn%cB;33J~zy-W_0l(`4@dy;WKDgx4AxWJbB+UZe6{(*(Q!5kPeHqf!(11D?ez&~+6gEvTVAlUPnd&I|S3jwor0u|9j+$7G?$1@rd< zwq9(;F+qfF@y4smr;jH)Zb*OpHIvRCSu;DY-S@o8owg_Ni11#I?9a3KLFd@6qSw6I zLDWr`?y$_%L~Uz^o%)#JP#i$Lxl{6@GHO6mqP9wxLrTW@*}-udB1P{zVO&CXvnzJW z8X%L;)e3(giA$sI87p}OjC03e!**QF38o{4uE?K|1cENqOEadHg8?2HMNp9b*iAr( zfqcXYFFx3m8sJQisAfI75pzD_oVvAv@I(zou)Ofk6&}mANwZ%n#E`p)>tLhJ=0$^# zCc7A8Mylqzp~h#)fTCfj zfV41hcTy0P|M>d-YzbCpZ;s1gcyhMJReB#x)X)MWxV| zz&)o)bj^dj&jxJSz2eX*3HxY358Z5qtlM=s!Vzb6U}F?dJ!O`b-qR2#eEaXoZ8JAx z3JU>|k)O6~wPIx~wcMp+-)pp;QN;sp?(B!N^4_V!K;sKP7T?@*UJ$;lzsiGdD9E5f zIVVnuEtLX@YogRyk}l5fVpNjo{$g*>mScM^#cr5K0asXc`~e= z?7$9`$3!;`qW(sn^g(D_DqfN+@^$Hz!s4ua$Z#MrtwHqTIK8j2Gw%Z*`NLytLfaBm4t}mlXxJREs-&}uxqR{-KaSJ6_q9_SC_!$R zGx+obthb=eet)fo4Et1A>j3T`Boqgd?JyCON5?YTmq(qiZr2Rgqa>l^ng_FPeh9Pl>+E0224@j*O$M~>G`t*P)94YXEJEYSm&+z45?80 zb?QN0)wDjVIHLaNY@-5zMoQ(B+6?pWtjK ze6@$}bZ=0cotqhP)V;I8y{N9zDfVgXP5N^`WwR5x{=I5_57)HXE^IDdC4v&*ka4!- zeW{%UZaA$*D}Kb-+PcmP46LF1i-Q&4mt!{12^|OwAe-h9K%U`%JTP$eK41glr$D zi5!YYAN7kI-R-J8b{oS{CgT_6M+k#TyyqF7EgdMLio!;+I&k6z_10M)8DV-d{g`C% zU-4xm$^ein1ig2*EKaWq=czBrH*(@a#G?Fn1JnnQ&C|eSq=OwgKC5t43-sp`28hg% zC6@yJ#iiZOiRb^cDda4}1u~fJmIVJJ0Y~1jc}ql_d2U9wIVi4rA9b~>Ys~RCw0e)C zbDD&0Ey4lyM$rKUmoHKkcY|e4OY?z((}*jOwG=h7KSmI?$NGryu(*{|PTeWdo;iKM5)vcgvl@T~zwf1cc;#7B`FRa+7T84=f{ zR?IYg_Y3cC{!_EqQU7tE0^ z|JQ4H2-S!$K32cpTd4Df*qWa&YO+t_+IXz38JQeOca^2;dH0?9<3Yv$V58HQ{Z^>m z{yJQo;^)4xgbQ_~g#q<&x9Tfcx=TQNEArSd&qOUrPZhA^u(WVP0C3_87JY!LL7zRT z4^Mhm# z?)QGj)2$J{zBGyWq&^TqMRB@@t-NQ+N#H3rD$7|;Xg&KBcA{%DLxc{r)aq%_*A5$T z9soN_QEWhTXW`FQv5Z6$BFdJ~w=Wgi7P_1c26 zwg0(HuK)W%g#yl;Z~f)4;BG^@W3I>SwUn*j@BDl~8}7Y({4gk|4!fny&nQ-U1;N(!;%s8UMe2#1QC*I{au3MJ5A#C+xs8W1}i zgzDNL($pECD~8C|d?mr3X*|K6-YH1P!aP-kzQgM6Y#Or*7S${q9q4#(E|yzr)gYJ* zBYZNnOXOxk_nO!yX`aQFk26c?iJti>A?2@TQ(o;SQOv8aa!t+o;ro`-D4>RXQfu%J z(&A}fo`8-;_zJ1#=(027Ue@b1nxyE+oD+7h!)v-ZDES|9FH2;3uH|Rt!J-dTWCqsH zkpsnW6xB>Zcj1bFS!3rSwelp2`-*|kH$lHTzNiq7^>Cn?Uu0+M_j1_1N%g#heI2Vq z^omKKV;y|znrm}3wmACk*UP9h6(viI=5Ow1C@*8ZF9_>yO7PfnZ5kroC<(<9P=2fh z&OC-+P9hnwW92+zUv6l<5Ml$Kv?k#}fM`5QAvf&XE=su=fl+iFS&mtQB3$Td6AJWv z9tvI3)e+s2#t~!o7aRR{T1?{J%%7(7w5bKNO@)DsOHNKbn-K>{X0BdY)!wIdGd^KF zy>@?U!gpr?t`dYzKBlL~jsE=lr|4nx<2ipv?1ecc?%ys{9N#k2h6M+J;HQ{PzZ7!c zP*%iWl;x%(`|#~%(5{H!TNzld0F=?65tvmcFJnfF!kr3e?y{XoIql$2Ka>oEYn@hL z<+B3QW;kO4zMgso+Aw@bEm{mLK593dxL5kNee#7k9(iILkL;m<0#PV~d!rON zC1e8&X7)K0Uy+aygF>XLR|=`VV>DkLO`knykCop^L{UB0MI=e_koN0D6!xJ!Q8G5R zidrbI5h#)4x0WLJmX)q{ZFxl<)xyHB#`xlv=q<;f!=;;Y{Q=3GVpoXCu^Ywtyz`-! zPwu3AO%ydDI!*6$sA-bNCLA zJBx);1+p!<==S-xLMi5_lyy#a7{UiLdnmmGQTPP`Zj|Rgq*yDLrP$D=fbr4mPj78@+^mlD`dQtY<{)5Bo zRiww)$LZ>i=+djvQRdD)tH3UZi*Uvq=Ptid^w$H1sUGr7Rm3Uy{})eR9uL+3 z{eNfdStENwM3JSCy&3JuzGZ8aBxDa+XVPAl?0dHCp_DylR4B4!&o*S=8M`rae=og1 z-`}4-9zD#xujQQQd7kI<+#9+;rDKW!B}lvZHa;-Nkj;r^*mv3G&6(~B&L4lPC^sqh z=eSSIZ!x!6AyQ8vK;NV-Y7P^8BbTMdps)RgsMl#PO_qSAWs~!b>pDn?kTe(5;;QqJ zI&bJb`{FvrL^S*Ebe=TgR|8fXs1eW7AJn?PSfTMT)H=wItA2p{D(58pf$>VdY-mjD z95(tKco}yPqkkTl-@$7F;IsvLT2%q?Hv+Nm5Jx|d*dt_vgJRwf`-+fq9hzE<=ZdN7 z4bp0@?CBjbdrd!PW1PM^OG9~{1bCKr`Hd&M%bfIZS(CK2WAQGhz!F~4YSO&1zKwkt zq79NE4mQN)-TAT9JHgrqJj4BSh^~WNPo=% z_e$(PL)!`bD?sQA8mg?&j1}NYI0*M0!3+dMkSjEO2o1Q}(`{*T)2)D$ol7r`E|jPS zdMDcVDxxK6(b8loF?)kiQ|hY)OF?P+Z9Q9sopq2nzPYS%C+cM+-7CaqJ@54oM zQP(-vbHVC>Qsi-a9}nE;4;c<{>$DW%sO}hGmOjwI#efgYui}Sz1D-)!-tS>=R|I1q zTnG5YUF`5V9PpXmrvpN@KcMgU7zX9jgA>qwNtmX|J=UVn?9yoX>Aj2#d#H*>Xl_Z< z4;Q>l#(^8d zc)w^>-Mb&FC1Dr#p(_$B)r06`EjH`D)07d0sTt$ArS`Z8FdqZm47w9*qaEU4S6+L-{#ki*H3A*aYi$J^KW52s)8qQhJR+7c4xw{g%&_2DFC&hw@DdH1Jl&8L6Aio}i$ns7{=9 zL;&^i;raf6LNZh7N;vHeEqF8kr#0hw&z7C7PeWqgPWHNcnh|eA5FLf$)>G(z4UTY`9l(kWqYp*7v;v0!2H0SoqE_NM09qm4vn4tPCQ@ zoI#iK4h_zmZp?fELa%TT5=mI#u~4PSs5GMM>;|sHI9e6ZyNa?y#X+;nhu=~ogU(v? zt(54(M`;5GBxR)Iy_?EL+4J5ONw`OaQl4+<_Sd!$y=@shq-gguU)C+hb5Goi|Mr|M zB`vW#7CRMq5gfYnEO3TK#-%H+ykE=0_L!aMn34VjV(E@D&U|ctdEL2+= z=%Wi%yZ|qP+6mOgV?+zUY90v20<7twK|syXq6dI+kOm!%z=1g%noY$C3_LtK7rTFN zY=`_GIh?GL!)gk%jS?-3FcpX5~YP(fwfX7jeWpC3Nhp;-(Y!Z9v?SvqeKcH6(%0AGd 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 { + const curUrlObj = window.location; + var redirect_uri = (new URLSearchParams(curUrlObj.search)).get('redirect_uri'); + var client_id = (new URLSearchParams(curUrlObj.search)).get('client_id'); + const sessionUrl = sessionStorage.getItem('url'); + if (redirect_uri) { + const updatedQuery = curUrlObj.search + '&error_callback=' + curUrlObj.href.split('?')[0]; + const redirect_uriLocation = new URL(redirect_uri); + sessionStorage.setItem('url', window.location.href); + + if(client_id === 'android'){ + window.location.href = curUrlObj.protocol + '//' + curUrlObj.host + redirectUrlPath + updatedQuery; + } + else + { + window.location.href = redirect_uriLocation.protocol + '//' + redirect_uriLocation.host + redirectUrlPath + updatedQuery; + } + } else if (sessionUrl) { + const sessionUrlObj = new URL(sessionUrl); + const updatedQuery = sessionUrlObj.search + '&error_callback=' + sessionUrlObj.href.split('?')[0]; + redirect_uri = (new URLSearchParams(sessionUrlObj.search)).get('redirect_uri'); + client_id = (new URLSearchParams(sessionUrlObj.search)).get('client_id'); + + if (redirect_uri) { + const redirect_uriLocation = new URL(redirect_uri); + if(client_id === 'android'){ + window.location.href = sessionUrlObj.protocol + '//' + sessionUrlObj.host + redirectUrlPath + updatedQuery; + } + else{ + window.location.href = redirect_uriLocation.protocol + '//' + redirect_uriLocation.host + + redirectUrlPath + updatedQuery; + } + } else { + redirectToLib(); + } + } else { + redirectToLib(); + } +}; +const redirectToLib = () => { + window.location.href = window.location.protocol + '//' + window.location.host + '/resource'; +}; + +const viewPassword = function(previewButton){ + console.log('Show Password'); + + var newPassword = document.getElementById("password-new"); + if (newPassword.type === "password") { + newPassword.type = "text"; + addClass(previewButton,"slash"); + } else { + newPassword.type = "password"; + previewButton.className = previewButton.className.replace("slash",""); + } +} +const handleSsoEvent = () => { + const ssoPath = '/sign-in/sso/select-org'; + const curUrlObj = window.location; + let redirect_uri = (new URLSearchParams(curUrlObj.search)).get('redirect_uri'); + let client_id = (new URLSearchParams(curUrlObj.search)).get('client_id'); + const sessionUrl = sessionStorage.getItem('url'); + if (redirect_uri) { + const redirect_uriLocation = new URL(redirect_uri); + sessionStorage.setItem('url', window.location.href); + if (client_id === 'android') { + const ssoUrl = curUrlObj.protocol + '//' + curUrlObj.host + ssoPath; + window.location.href = redirect_uri + '?ssoUrl=' + ssoUrl; + } else { + window.location.href = redirect_uriLocation.protocol + '//' + redirect_uriLocation.host + ssoPath; + } + } else if (sessionUrl) { + const sessionUrlObj = new URL(sessionUrl); + redirect_uri = (new URLSearchParams(sessionUrlObj.search)).get('redirect_uri'); + client_id = (new URLSearchParams(sessionUrlObj.search)).get('client_id'); + if (redirect_uri) { + const redirect_uriLocation = new URL(redirect_uri); + if (client_id === 'android') { + const ssoUrl = sessionUrlObj.protocol + '//' + sessionUrlObj.host + ssoPath; + window.location.href = redirect_uri + '?ssoUrl=' + ssoUrl; + } else { + window.location.href = redirect_uriLocation.protocol + '//' + redirect_uriLocation.host + ssoPath; + } + } else { + redirectToLib(); + } + } else { + redirectToLib(); + } +}; diff --git a/ansible/artifacts/sunbird/login/resources/login-reset-password.ftl b/ansible/artifacts/sunbird/login/resources/login-reset-password.ftl deleted file mode 100644 index 5232e86d99..0000000000 --- a/ansible/artifacts/sunbird/login/resources/login-reset-password.ftl +++ /dev/null @@ -1,43 +0,0 @@ -<#import "template.ftl" as layout> -<@layout.registrationLayout displayInfo=true; section> - <#if section = "title"> - ${msg("emailForgotTitle")} - <#elseif section = "header"> - ${msg("emailForgotTitle")} - <#elseif section = "form"> -

    - <#elseif section = "info" > - ${msg("emailInstruction")} - - \ No newline at end of file diff --git a/ansible/artifacts/sunbird/login/resources/login-update-password.ftl b/ansible/artifacts/sunbird/login/resources/login-update-password.ftl deleted file mode 100644 index bb2fee49c4..0000000000 --- a/ansible/artifacts/sunbird/login/resources/login-update-password.ftl +++ /dev/null @@ -1,48 +0,0 @@ -<#import "template.ftl" as layout> -<@layout.registrationLayout displayInfo=true; section> - <#if section = "title"> - ${msg("updatePasswordTitle")} - <#elseif section = "header"> - ${msg("updatePasswordTitle")} - <#elseif section = "form"> - - - \ No newline at end of file diff --git a/ansible/artifacts/sunbird/login/resources/login.ftl b/ansible/artifacts/sunbird/login/resources/login.ftl deleted file mode 100644 index 9115c346f3..0000000000 --- a/ansible/artifacts/sunbird/login/resources/login.ftl +++ /dev/null @@ -1,72 +0,0 @@ -<#import "template.ftl" as layout> -<@layout.registrationLayout displayInfo=social.displayInfo; section> - <#if section = "title"> - ${msg("loginTitle",(realm.displayName!''))} - <#elseif section = "header"> - ${msg("loginTitleHtml",(realm.displayNameHtml!''))} - <#elseif section = "form"> - <#if realm.password> - - - <#elseif section = "info" > - <#if realm.password && realm.registrationAllowed && !usernameEditDisabled??> - - - - <#if realm.password && social.providers??> -
    - -
    - - - \ No newline at end of file diff --git a/ansible/artifacts/sunbird/login/template.ftl b/ansible/artifacts/sunbird/login/template.ftl new file mode 100644 index 0000000000..23e7579f51 --- /dev/null +++ b/ansible/artifacts/sunbird/login/template.ftl @@ -0,0 +1,114 @@ +<#macro registrationLayout bodyClass="" displayInfo=false displayMessage=true> + + + + + + + + + + + + + + <#if properties.meta?has_content> + <#list properties.meta?split(' ') as meta> + + + + <#nested "title"> + + <#if properties.styles?has_content> + <#list properties.styles?split(' ') as style> + + + + <#if properties.scripts?has_content> + <#list properties.scripts?split(' ') as script> + + + + <#if scripts??> + <#list scripts as script> + + + + + + + + +
    +
    + +
    +
    <#nested "header">
    +
    + + <#if realm.internationalizationEnabled> +
    +
    +
    + ${locale.current} +
      + <#list locale.supported as l> +
    • ${l.label}
    • + +
    +
    +
    +
    + + +
    +
    + <#if displayMessage && message?has_content> + + + +
    +
    + <#nested "form"> +
    +
    + + <#if displayInfo> +
    +
    + <#nested "info"> +
    +
    + +
    +
    +
    +
    + + + diff --git a/ansible/artifacts/sunbird/login/resources/theme.properties b/ansible/artifacts/sunbird/login/theme.properties similarity index 84% rename from ansible/artifacts/sunbird/login/resources/theme.properties rename to ansible/artifacts/sunbird/login/theme.properties index d5c984f74f..20358b79fa 100644 --- a/ansible/artifacts/sunbird/login/resources/theme.properties +++ b/ansible/artifacts/sunbird/login/theme.properties @@ -16,6 +16,6 @@ # parent=base -styles=css/semantic.min.css css/login.css - -kcFeedbackAreaClass=ui info message \ No newline at end of file +styles=css/semantic.min.css?v=1.14.b css/login.css?v=1.14.b +scripts=js/login.js?v=1.14.b +kcFeedbackAreaClass=ui info message diff --git a/ansible/inventory/env/group_vars/all.yml b/ansible/inventory/env/group_vars/all.yml index 2c75fd7e05..38768a6322 100644 --- a/ansible/inventory/env/group_vars/all.yml +++ b/ansible/inventory/env/group_vars/all.yml @@ -19,9 +19,13 @@ sunbird_app_name: "{{env}}" azure_account_key: "{{core_vault_sunbird_azure_storage_key}}" # Keycloak -keycloak_api_management_user_password: "{{core_vault_keycloak_api_management_user_password}}" keycloak_api_management_user_first_name: "admin" keycloak_api_management_user_last_name: "admin" +keycloak_api_management_user_email: "{{keycloak_api_management_user_email}}" +keycloak_api_management_username: "{{core_vault_sunbird_sso_username}}" +keycloak_api_management_user_password: "{{core_vault_sunbird_sso_password}}" +keycloak_management_user: "admin" +keycloak_management_password: "{{core_vault_keycloak_password}}" ## Learner service sunbird_url_shortner_access_token: "{{vault_core_url_shortner_access_token}}" @@ -32,7 +36,7 @@ sunbird_keycloak_required_action_link_expiration_seconds: 2592000 sunbird_es_port: 9300 mail_server_port: 587 upstream_url: "{{azure_account_name}}.blob.core.windows.net/{{sunbird_content_azure_storage_container}}" -## Mailing list +## Mailing list # !! Override for specific alert groups; Default will be alerts_mailing_list monitor_alerts_slack_channel: app_alerts_mailing_list: "" @@ -46,7 +50,7 @@ sunbird_user_profile_field_default_visibility: private # Player sunbird_external_content_whitelisted_domains: "" -sunbird_portal_user_upload_ref_link: http://www.sunbird.org/features-documentation/register_user +sunbird_portal_user_upload_ref_link: http://www.sunbird.org/features-documentation/register_user # Content content_service_whitelisted_channels: "" @@ -54,7 +58,7 @@ content_service_blacklisted_channels: "" # Badger badger_file_storage: storages.backends.azure_storage.AzureStorage -badger_admin_email: +badger_admin_email: ## Below passwords are used by DB install scripts when creating databases. Please use strong passwords. sunbird_pg_user: "{{core_vault_postgres_username}}" diff --git a/ansible/roles/sunbird-auth-deploy/defaults/main.yml b/ansible/roles/sunbird-auth-deploy/defaults/main.yml new file mode 100644 index 0000000000..b686044496 --- /dev/null +++ b/ansible/roles/sunbird-auth-deploy/defaults/main.yml @@ -0,0 +1,86 @@ +--- +sunbird_auth_version: 1.0v +keycloak_pkg_src: https://downloads.jboss.org/keycloak/3.2.0.Final/keycloak-3.2.0.Final.tar.gz +postgresql_driver_src: https://jdbc.postgresql.org/download/postgresql-9.4.1212.jar +keycloak_pkg_file: "keycloak-3.2.0.Final.tar.gz" +keycloak_sms_provider_build: "keycloak-email-phone-autthenticator-1.0-SNAPSHOT.jar" +keycloak_subsystem: ' + + auth + ' +keycloak_cache_container: ' + + + + + + + ' +keycloak_default_ds: ' + + + jdbc:h2:${jboss.server.data.dir}/keycloak;AUTO_SERVER=TRUE + + h2 + + sa + sa + + ' + +keycloak_ds_driver_path: "/opt/keycloak/modules/system/layers/keycloak/org/postgresql/main" +wildfly_dir: /opt/keycloak +keycloak_download_dir: /opt +keycloak_download_url: https://downloads.jboss.org/keycloak/3.2.0.Final/keycloak-3.2.0.Final.tar.gz +wildfly_user: keycloak +wildfly_group: keycloak +wildfly_standalone_config_path: /opt/keycloak/keycloak/standalone/configuration/standalone-ha.xml +keycloak_ext: +keycloak_download_file: keycloak-3.2.0.Final.tar.gz + +keycloak_ds_driver_url: https://jdbc.postgresql.org/download/postgresql-9.2.1212.jar +keycloak_ds_driver_name: "postgresql" +keycloak_ds_driver_module: ' + + + + + + + + + + + + ' +keycloak_custom_driver: ' + + + org.postgresql.xa.PGXADataSource + + org.postgresql.ds.PGPoolingDataSource + ' +keycloak_custom_ds: ' + + jdbc:postgresql://11.0.0.6:5432/keycloak + org.postgresql.Driver + postgresql + + keycloak + KeyCloaK#2 + + + + true + + + ' + +theme: "sunrise.tar.gz" +dest_theme: "/opt/keycloak/themes/" +theme_file: sunrise +keycloak_home: /opt/keycloak +login_theme: artifacts/sunbird/login +email_theme: artifacts/sunbird/email +tenant_name: sunbird diff --git a/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/PKG-INFO b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/PKG-INFO new file mode 100644 index 0000000000..e71b54e3b9 --- /dev/null +++ b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/PKG-INFO @@ -0,0 +1,19 @@ +Metadata-Version: 1.1 +Name: python-keycloak +Version: 0.12.0 +Summary: python-keycloak is a Python package providing access to the Keycloak API. +Home-page: https://bitbucket.org/agriness/python-keycloak +Author: Marcos Pereira +Author-email: marcospereira.mpj@gmail.com +License: GNU General Public License - V3 +Description-Content-Type: UNKNOWN +Description: UNKNOWN +Keywords: keycloak openid +Platform: UNKNOWN +Classifier: Programming Language :: Python :: 3 +Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3) +Classifier: Development Status :: 3 - Alpha +Classifier: Operating System :: MacOS +Classifier: Operating System :: Unix +Classifier: Operating System :: Microsoft :: Windows +Classifier: Topic :: Utilities diff --git a/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/README.md b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/README.md new file mode 100644 index 0000000000..c6b0940b08 --- /dev/null +++ b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/README.md @@ -0,0 +1,210 @@ +[![Documentation Status](https://readthedocs.org/projects/python-keycloak/badge/?version=latest)](http://python-keycloak.readthedocs.io/en/latest/?badge=latest) + +Python Keycloak +==================== + +For review- see https://bitbucket.org/agriness/python-keycloak + +**python-keycloak** is a Python package providing access to the Keycloak API. + +## Installation + +### Via Pypi Package: + +``` $ pip install python-keycloak ``` + +### Manually + +``` $ python setup.py install ``` + +## Dependencies + +python-keycloak depends on: + +* Python 3 +* [requests](http://docs.python-requests.org/en/master/) +* [python-jose](http://python-jose.readthedocs.io/en/latest/) + +### Tests Dependencies + +* unittest +* [httmock](https://github.com/patrys/httmock) + +## Bug reports + +Please report bugs and feature requests at +https://bitbucket.org/agriness/python-keycloak/issues + +## Documentation + +The documentation for python-keycloak is available on [readthedocs](http://python-keycloak.readthedocs.io). + +## Contributors + +* [Agriness Team](http://www.agriness.com/pt/) +* [Marcos Pereira](marcospereira.mpj@gmail.com) +* [Martin Devlin](martin.devlin@pearson.com) +* [Shon T. Urbas](shon.urbas@gmail.com>) + +## Usage + +```python +from keycloak import KeycloakOpenID + +# Configure client +keycloak_openid = KeycloakOpenID(server_url="http://localhost:8080/auth/", + client_id="example_client", + realm_name="example_realm", + client_secret_key="secret") + +# Get WellKnow +config_well_know = keycloak_openid.well_know() + +# Get Token +token = keycloak_openid.token("user", "password") + +# Get Userinfo +userinfo = keycloak_openid.userinfo(token['access_token']) + +# Refresh token +token = keycloak_openid.refresh_token(token['refresh_token']) + +# Logout +keycloak_openid.logout(token['refresh_token']) + +# Get Certs +certs = keycloak_openid.certs() + +# Get RPT (Entitlement) +token = keycloak_openid.token("user", "password") +rpt = keycloak_openid.entitlement(token['access_token'], "resource_id") + +# Instropect RPT +token_rpt_info = keycloak_openid.introspect(keycloak_openid.introspect(token['access_token'], rpt=rpt['rpt'], + token_type_hint="requesting_party_token")) + +# Introspect Token +token_info = keycloak_openid.introspect(token['access_token'])) + +# Decode Token +KEYCLOAK_PUBLIC_KEY = "secret" +options = {"verify_signature": True, "verify_aud": True, "exp": True} +token_info = keycloak_openid.decode_token(token['access_token'], key=KEYCLOAK_PUBLIC_KEY, options=options) + +# Get permissions by token +token = keycloak_openid.token("user", "password") +keycloak_openid.load_authorization_config("example-authz-config.json") +policies = keycloak_openid.get_policies(token['access_token'], method_token_info='decode', key=KEYCLOAK_PUBLIC_KEY) +permissions = keycloak_openid.get_permissions(token['access_token'], method_token_info='introspect') + +# KEYCLOAK ADMIN + +from keycloak import KeycloakAdmin + +keycloak_admin = KeycloakAdmin(server_url="http://localhost:8080/auth/", + username='example-admin', + password='secret', + realm_name="example_realm", + verify=True) + +# Add user +new_user = keycloak_admin.create_user({"email": "example@example.com", + "username": "example@example.com", + "enabled": True, + "firstName": "Example", + "lastName": "Example", + "realmRoles": ["user_default", ], + "attributes": {"example": "1,2,3,3,"}}) + + +# Add user and set password +new_user = keycloak_admin.create_user({"email": "example@example.com", + "username": "example@example.com", + "enabled": True, + "firstName": "Example", + "lastName": "Example", + "credentials": [{"value": "secret","type": "password",}], + "realmRoles": ["user_default", ], + "attributes": {"example": "1,2,3,3,"}}) + +# User counter +count_users = keycloak_admin.users_count() + +# Get users Returns a list of users, filtered according to query parameters +users = keycloak_admin.get_users({}) + +# Get user ID from name +user-id-keycloak = keycloak_admin.get_user_id("example@example.com") + +# Get User +user = keycloak_admin.get_user("user-id-keycloak") + +# Update User +response = keycloak_admin.update_user(user_id="user-id-keycloak", + payload={'firstName': 'Example Update'}) + +# Update User Password +response = set_user_password(user_id="user-id-keycloak", password="secret", temporary=True) + +# Delete User +response = keycloak_admin.delete_user(user_id="user-id-keycloak") + +# Get consents granted by the user +consents = keycloak_admin.consents_user(user_id="user-id-keycloak") + +# Send User Action +response = keycloak_admin.send_update_account(user_id="user-id-keycloak", + payload=json.dumps(['UPDATE_PASSWORD'])) + +# Send Verify Email +response = keycloak_admin.send_verify_email(user_id="user-id-keycloak") + +# Get sessions associated with the user +sessions = keycloak_admin.get_sessions(user_id="user-id-keycloak") + +# Get themes, social providers, auth providers, and event listeners available on this server +server_info = keycloak_admin.get_server_info() + +# Get clients belonging to the realm Returns a list of clients belonging to the realm +clients = keycloak_admin.get_clients() + +# Get client - id (not client-id) from client by name +client_id=keycloak_admin.get_client_id("my-client") + +# Get representation of the client - id of client (not client-id) +client = keycloak_admin.get_client(client_id="client_id") + +# Get all roles for the realm or client +realm_roles = keycloak_admin.get_realm_roles() + +# Get all roles for the client +client_roles = keycloak_admin.get_client_roles(client_id="client_id") + +# Get client role +role = keycloak_admin.get_client_role(client_id="client_id", role_name="role_name") + +# Warning: Deprecated +# Get client role id from name +role_id = keycloak_admin.get_client_role_id(client_id="client_id", role_name="test") + +# Create client role +keycloak_admin.create_client_role(client_id, "test") + +# Assign client role to user. Note that BOTH role_name and role_id appear to be required. +keycloak_admin.assign_client_role(client_id="client_id", user_id="user_id", role_id="role_id", role_name="test") + +# Create new group +group = keycloak_admin.create_group(name="Example Group") + +# Get all groups +groups = keycloak_admin.get_groups() + +# Get group +group = keycloak_admin.get_group(group_id='group_id') + +# Get group by name +group = keycloak_admin.get_group_by_name(name_or_path='group_id', search_in_subgroups=True) + +# Function to trigger user sync from provider +sync_users(storage_id="storage_di", action="action") +``` diff --git a/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak-realm.json b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak-realm.json new file mode 100644 index 0000000000..72416d4de4 --- /dev/null +++ b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak-realm.json @@ -0,0 +1,1999 @@ +{ + "id": "sunbird", + "realm": "sunbird", + "notBefore": 0, + "revokeRefreshToken": false, + "accessTokenLifespan": 21600, + "accessTokenLifespanForImplicitFlow": 7200, + "ssoSessionIdleTimeout": 1800, + "ssoSessionMaxLifespan": 21600, + "offlineSessionIdleTimeout": 43200, + "accessCodeLifespan": 60, + "accessCodeLifespanUserAction": 300, + "accessCodeLifespanLogin": 1800, + "actionTokenGeneratedByAdminLifespan": 43200, + "actionTokenGeneratedByUserLifespan": 300, + "enabled": true, + "sslRequired": "external", + "registrationAllowed": false, + "registrationEmailAsUsername": false, + "rememberMe": true, + "verifyEmail": false, + "loginWithEmailAllowed": true, + "duplicateEmailsAllowed": false, + "resetPasswordAllowed": true, + "editUsernameAllowed": false, + "bruteForceProtected": false, + "permanentLockout": false, + "maxFailureWaitSeconds": 900, + "minimumQuickLoginWaitSeconds": 60, + "waitIncrementSeconds": 60, + "quickLoginCheckMilliSeconds": 1000, + "maxDeltaTimeSeconds": 43200, + "failureFactor": 30, + "roles": { + "realm": [ + { + "id": "7b955d7f-0a1e-4935-8391-642886d34612", + "name": "offline_access", + "description": "${role_offline-access}", + "scopeParamRequired": true, + "composite": false, + "clientRole": false, + "containerId": "sunbird" + }, + { + "id": "96adf368-c8e2-4b39-b2a5-2559573edb63", + "name": "uma_authorization", + "description": "${role_uma_authorization}", + "scopeParamRequired": false, + "composite": false, + "clientRole": false, + "containerId": "sunbird" + } + ], + "client": { + "realm-management": [ + { + "id": "3f8bf7e5-5d66-4394-8f06-1270529c605f", + "name": "manage-authorization", + "description": "${role_manage-authorization}", + "scopeParamRequired": false, + "composite": false, + "clientRole": true, + "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" + }, + { + "id": "601fa2c9-29d4-49c1-87ac-939a1260f6ce", + "name": "query-realms", + "description": "${role_query-realms}", + "scopeParamRequired": false, + "composite": false, + "clientRole": true, + "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" + }, + { + "id": "9aa1dcd9-cb93-4496-af5f-41b9ecacc1da", + "name": "view-authorization", + "description": "${role_view-authorization}", + "scopeParamRequired": false, + "composite": false, + "clientRole": true, + "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" + }, + { + "id": "98999987-faf5-4c4e-958a-e5463bc4edc6", + "name": "manage-events", + "description": "${role_manage-events}", + "scopeParamRequired": false, + "composite": false, + "clientRole": true, + "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" + }, + { + "id": "f898fca8-5361-49d5-900a-ebf5b775a939", + "name": "impersonation", + "description": "${role_impersonation}", + "scopeParamRequired": false, + "composite": false, + "clientRole": true, + "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" + }, + { + "id": "698dfeb0-b8d2-4240-b8a8-acd4b7a12ad3", + "name": "view-realm", + "description": "${role_view-realm}", + "scopeParamRequired": false, + "composite": false, + "clientRole": true, + "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" + }, + { + "id": "3ff462fc-b33c-431a-b54b-861c3298d910", + "name": "manage-users", + "description": "${role_manage-users}", + "scopeParamRequired": false, + "composite": false, + "clientRole": true, + "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" + }, + { + "id": "be1802b1-558c-404c-bcb9-b9bf77af9788", + "name": "manage-identity-providers", + "description": "${role_manage-identity-providers}", + "scopeParamRequired": false, + "composite": false, + "clientRole": true, + "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" + }, + { + "id": "387b44e4-e901-4431-b9af-6abd9377ed46", + "name": "query-clients", + "description": "${role_query-clients}", + "scopeParamRequired": false, + "composite": false, + "clientRole": true, + "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" + }, + { + "id": "a408b6e8-03c9-46a2-97ba-305d09db0c3c", + "name": "view-events", + "description": "${role_view-events}", + "scopeParamRequired": false, + "composite": false, + "clientRole": true, + "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" + }, + { + "id": "41c2f39a-3008-4f9d-9e1e-a7738c118570", + "name": "query-groups", + "description": "${role_query-groups}", + "scopeParamRequired": false, + "composite": false, + "clientRole": true, + "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" + }, + { + "id": "26d3289b-d2eb-4cf2-a501-f1e3fa07344c", + "name": "manage-clients", + "description": "${role_manage-clients}", + "scopeParamRequired": false, + "composite": false, + "clientRole": true, + "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" + }, + { + "id": "e2077ab0-6efb-450d-9cba-89cacd887b71", + "name": "create-client", + "description": "${role_create-client}", + "scopeParamRequired": false, + "composite": false, + "clientRole": true, + "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" + }, + { + "id": "46019462-3dc8-46a8-9786-ffcbad293f43", + "name": "view-users", + "description": "${role_view-users}", + "scopeParamRequired": false, + "composite": true, + "composites": { + "client": { + "realm-management": [ + "query-groups", + "query-users" + ] + } + }, + "clientRole": true, + "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" + }, + { + "id": "d269f220-e93f-4b43-96a1-9f2c117a2dfb", + "name": "view-clients", + "description": "${role_view-clients}", + "scopeParamRequired": false, + "composite": true, + "composites": { + "client": { + "realm-management": [ + "query-clients" + ] + } + }, + "clientRole": true, + "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" + }, + { + "id": "0c998f1b-7363-47fb-a493-4b6f4aacb0ba", + "name": "realm-admin", + "description": "${role_realm-admin}", + "scopeParamRequired": false, + "composite": true, + "composites": { + "client": { + "realm-management": [ + "manage-authorization", + "query-realms", + "view-authorization", + "manage-events", + "impersonation", + "view-realm", + "manage-users", + "manage-identity-providers", + "query-clients", + "view-events", + "query-groups", + "manage-clients", + "create-client", + "view-users", + "view-clients", + "manage-realm", + "view-identity-providers", + "query-users" + ] + } + }, + "clientRole": true, + "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" + }, + { + "id": "d77bf5a5-5877-450b-b11e-5f874f410e10", + "name": "manage-realm", + "description": "${role_manage-realm}", + "scopeParamRequired": false, + "composite": false, + "clientRole": true, + "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" + }, + { + "id": "d97009ed-d0c7-4afb-b9a3-6ee03ef01a74", + "name": "view-identity-providers", + "description": "${role_view-identity-providers}", + "scopeParamRequired": false, + "composite": false, + "clientRole": true, + "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" + }, + { + "id": "57118202-c5e5-4c49-829b-c2ed796bfdea", + "name": "query-users", + "description": "${role_query-users}", + "scopeParamRequired": false, + "composite": false, + "clientRole": true, + "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" + } + ], + "security-admin-console": [], + "android": [], + "admin-cli": [], + "trampoline": [], + "broker": [ + { + "id": "19ef58ac-2d90-40a4-a158-0e2f8893264a", + "name": "read-token", + "description": "${role_read-token}", + "scopeParamRequired": false, + "composite": false, + "clientRole": true, + "containerId": "c3950efa-6684-44c2-b50a-c7b3d16df04b" + } + ], + "portal": [], + "account": [ + { + "id": "1fef7ac5-b042-462b-8298-0446044788b3", + "name": "manage-account", + "description": "${role_manage-account}", + "scopeParamRequired": false, + "composite": true, + "composites": { + "client": { + "account": [ + "manage-account-links" + ] + } + }, + "clientRole": true, + "containerId": "c2d24d3f-65ca-46de-9cd8-3eeb71a7f83d" + }, + { + "id": "f8786348-6fa4-4b13-828e-9f080c9c6824", + "name": "manage-account-links", + "description": "${role_manage-account-links}", + "scopeParamRequired": false, + "composite": false, + "clientRole": true, + "containerId": "c2d24d3f-65ca-46de-9cd8-3eeb71a7f83d" + }, + { + "id": "91c5c738-9c39-4c4d-bae8-75f18fd7c5e4", + "name": "view-profile", + "description": "${role_view-profile}", + "scopeParamRequired": false, + "composite": false, + "clientRole": true, + "containerId": "c2d24d3f-65ca-46de-9cd8-3eeb71a7f83d" + } + ] + } + }, + "groups": [], + "defaultRoles": [ + "offline_access", + "uma_authorization" + ], + "requiredCredentials": [ + "password" + ], + "passwordPolicy": "hashIterations(20000)", + "otpPolicyType": "totp", + "otpPolicyAlgorithm": "HmacSHA1", + "otpPolicyInitialCounter": 0, + "otpPolicyDigits": 6, + "otpPolicyLookAheadWindow": 1, + "otpPolicyPeriod": 30, + "clientScopeMappings": { + "realm-management": [ + { + "client": "admin-cli", + "roles": [ + "realm-admin" + ] + }, + { + "client": "security-admin-console", + "roles": [ + "realm-admin" + ] + } + ] + }, + "clients": [ + { + "id": "9a901d18-377b-4615-9b89-677b544be3c5", + "clientId": "trampoline", + "rootUrl": "", + "adminUrl": "", + "baseUrl": "/", + "surrogateAuthRequired": false, + "enabled": true, + "clientAuthenticatorType": "client-secret", + "secret": "", + "redirectUris": [ + ], + "webOrigins": [ + ], + "notBefore": 0, + "bearerOnly": false, + "consentRequired": false, + "standardFlowEnabled": false, + "implicitFlowEnabled": false, + "directAccessGrantsEnabled": true, + "serviceAccountsEnabled": false, + "publicClient": false, + "frontchannelLogout": false, + "protocol": "openid-connect", + "attributes": { + "saml.assertion.signature": "false", + "saml.force.post.binding": "false", + "saml.multivalued.roles": "false", + "saml.encrypt": "false", + "saml_force_name_id_format": "false", + "saml.client.signature": "false", + "saml.authnstatement": "false", + "saml.server.signature": "false", + "saml.server.signature.keyinfo.ext": "false", + "saml.onetimeuse.condition": "false" + }, + "fullScopeAllowed": true, + "nodeReRegistrationTimeout": -1, + "protocolMappers": [ + { + "id": "12134027-94cc-401c-bbf6-be565078ddfb", + "name": "role list", + "protocol": "saml", + "protocolMapper": "saml-role-list-mapper", + "consentRequired": false, + "config": { + "single": "false", + "attribute.nameformat": "Basic", + "attribute.name": "Role" + } + }, + { + "id": "6a956bf1-6c40-4549-b335-9fe8c788b18f", + "name": "family name", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${familyName}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "lastName", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "family_name", + "jsonType.label": "String" + } + }, + { + "id": "d32ba1d4-3fef-42ff-aa2b-98cb4bfef6f9", + "name": "full name", + "protocol": "openid-connect", + "protocolMapper": "oidc-full-name-mapper", + "consentRequired": true, + "consentText": "${fullName}", + "config": { + "id.token.claim": "true", + "access.token.claim": "true", + "userinfo.token.claim": "true" + } + }, + { + "id": "9e899fc7-1ddd-447d-810c-d91333d6621c", + "name": "username", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${username}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "username", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "preferred_username", + "jsonType.label": "String" + } + }, + { + "id": "74e4d13f-bd02-4f17-bbbc-d4b79bab1971", + "name": "email", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${email}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "email", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "email", + "jsonType.label": "String" + } + }, + { + "id": "48fe23c2-a6fb-4c5e-8930-28ad1913829a", + "name": "given name", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${givenName}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "firstName", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "given_name", + "jsonType.label": "String" + } + } + ], + "useTemplateConfig": false, + "useTemplateScope": false, + "useTemplateMappers": false + }, + { + "id": "da893beb-6ac7-420d-b51b-f05dadf56bbc", + "clientId": "android", + "rootUrl": "", + "baseUrl": "/", + "surrogateAuthRequired": false, + "enabled": true, + "clientAuthenticatorType": "client-secret", + "secret": "", + "redirectUris": [ + ], + "webOrigins": [], + "notBefore": 0, + "bearerOnly": false, + "consentRequired": false, + "standardFlowEnabled": true, + "implicitFlowEnabled": false, + "directAccessGrantsEnabled": true, + "serviceAccountsEnabled": false, + "publicClient": true, + "frontchannelLogout": false, + "protocol": "openid-connect", + "attributes": { + "saml.assertion.signature": "false", + "saml.force.post.binding": "false", + "saml.multivalued.roles": "false", + "saml.encrypt": "false", + "saml_force_name_id_format": "false", + "saml.client.signature": "false", + "saml.authnstatement": "false", + "saml.server.signature": "false", + "saml.server.signature.keyinfo.ext": "false", + "saml.onetimeuse.condition": "false" + }, + "fullScopeAllowed": true, + "nodeReRegistrationTimeout": -1, + "protocolMappers": [ + { + "id": "ff7dac46-16b4-4ab6-a054-dd03d5411fa9", + "name": "role list", + "protocol": "saml", + "protocolMapper": "saml-role-list-mapper", + "consentRequired": false, + "config": { + "single": "false", + "attribute.nameformat": "Basic", + "attribute.name": "Role" + } + }, + { + "id": "32fad9c0-0dfe-45b2-94a1-3e2f74d756ec", + "name": "family name", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${familyName}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "lastName", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "family_name", + "jsonType.label": "String" + } + }, + { + "id": "4fb4d644-c609-4a27-a407-d451bcd83e16", + "name": "given name", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${givenName}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "firstName", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "given_name", + "jsonType.label": "String" + } + }, + { + "id": "84e7c6e5-1afb-44d8-b507-1ed31fa0f351", + "name": "email", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${email}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "email", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "email", + "jsonType.label": "String" + } + }, + { + "id": "e7ca189f-94de-4996-a192-e93ba960bbba", + "name": "full name", + "protocol": "openid-connect", + "protocolMapper": "oidc-full-name-mapper", + "consentRequired": true, + "consentText": "${fullName}", + "config": { + "id.token.claim": "true", + "access.token.claim": "true", + "userinfo.token.claim": "true" + } + }, + { + "id": "16bedb3b-7571-4106-9a47-66151915ac31", + "name": "username", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${username}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "username", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "preferred_username", + "jsonType.label": "String" + } + } + ], + "useTemplateConfig": false, + "useTemplateScope": false, + "useTemplateMappers": false + }, + { + "id": "8891d8e9-35e6-4a1c-b32b-027be03b0f24", + "clientId": "admin-cli", + "name": "${client_admin-cli}", + "surrogateAuthRequired": false, + "enabled": true, + "clientAuthenticatorType": "client-secret", + "secret": "", + "redirectUris": [], + "webOrigins": [], + "notBefore": 0, + "bearerOnly": false, + "consentRequired": false, + "standardFlowEnabled": false, + "implicitFlowEnabled": false, + "directAccessGrantsEnabled": true, + "serviceAccountsEnabled": false, + "publicClient": true, + "frontchannelLogout": false, + "protocol": "openid-connect", + "attributes": {}, + "fullScopeAllowed": false, + "nodeReRegistrationTimeout": 0, + "protocolMappers": [ + { + "id": "32d6a3a4-8635-4a36-bd14-8ac5b73a49cc", + "name": "full name", + "protocol": "openid-connect", + "protocolMapper": "oidc-full-name-mapper", + "consentRequired": true, + "consentText": "${fullName}", + "config": { + "id.token.claim": "true", + "access.token.claim": "true", + "userinfo.token.claim": "true" + } + }, + { + "id": "900fa741-d1b2-467e-88a6-b454a9519568", + "name": "given name", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${givenName}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "firstName", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "given_name", + "jsonType.label": "String" + } + }, + { + "id": "8ea14714-d160-49b8-b612-59102d50ef53", + "name": "family name", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${familyName}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "lastName", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "family_name", + "jsonType.label": "String" + } + }, + { + "id": "bd167b99-5d23-49c1-90c7-85c2b088fed7", + "name": "role list", + "protocol": "saml", + "protocolMapper": "saml-role-list-mapper", + "consentRequired": false, + "config": { + "single": "false", + "attribute.nameformat": "Basic", + "attribute.name": "Role" + } + }, + { + "id": "c4fe56a1-8d15-455a-b87b-cf051454b57c", + "name": "username", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${username}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "username", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "preferred_username", + "jsonType.label": "String" + } + }, + { + "id": "26e3bf4c-8f9a-4548-b0db-5bbb7c398991", + "name": "email", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${email}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "email", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "email", + "jsonType.label": "String" + } + } + ], + "useTemplateConfig": false, + "useTemplateScope": false, + "useTemplateMappers": false + }, + { + "id": "c3950efa-6684-44c2-b50a-c7b3d16df04b", + "clientId": "broker", + "name": "${client_broker}", + "surrogateAuthRequired": false, + "enabled": true, + "clientAuthenticatorType": "client-secret", + "secret": "", + "redirectUris": [], + "webOrigins": [], + "notBefore": 0, + "bearerOnly": false, + "consentRequired": false, + "standardFlowEnabled": true, + "implicitFlowEnabled": false, + "directAccessGrantsEnabled": false, + "serviceAccountsEnabled": false, + "publicClient": false, + "frontchannelLogout": false, + "protocol": "openid-connect", + "attributes": {}, + "fullScopeAllowed": false, + "nodeReRegistrationTimeout": 0, + "protocolMappers": [ + { + "id": "54c3bbc3-850b-4636-82d1-ed4f3a46a00a", + "name": "username", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${username}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "username", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "preferred_username", + "jsonType.label": "String" + } + }, + { + "id": "0f0d9b74-c476-4981-a783-dd4bdbe041ec", + "name": "role list", + "protocol": "saml", + "protocolMapper": "saml-role-list-mapper", + "consentRequired": false, + "config": { + "single": "false", + "attribute.nameformat": "Basic", + "attribute.name": "Role" + } + }, + { + "id": "d6f625cc-eac1-49d0-bea5-17e6f9d3860c", + "name": "given name", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${givenName}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "firstName", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "given_name", + "jsonType.label": "String" + } + }, + { + "id": "bbf35056-9bbe-49a0-aefc-2bde2379ccdc", + "name": "family name", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${familyName}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "lastName", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "family_name", + "jsonType.label": "String" + } + }, + { + "id": "38b04951-1043-4dc6-9504-7b0f31ed71a4", + "name": "email", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${email}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "email", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "email", + "jsonType.label": "String" + } + }, + { + "id": "88bb836b-7feb-45eb-b004-fb3be8436908", + "name": "full name", + "protocol": "openid-connect", + "protocolMapper": "oidc-full-name-mapper", + "consentRequired": true, + "consentText": "${fullName}", + "config": { + "id.token.claim": "true", + "access.token.claim": "true", + "userinfo.token.claim": "true" + } + } + ], + "useTemplateConfig": false, + "useTemplateScope": false, + "useTemplateMappers": false + }, + { + "id": "b2f45201-1362-4b10-83c3-207d470f44bf", + "clientId": "realm-management", + "name": "${client_realm-management}", + "surrogateAuthRequired": false, + "enabled": true, + "clientAuthenticatorType": "client-secret", + "secret": "", + "redirectUris": [], + "webOrigins": [], + "notBefore": 0, + "bearerOnly": true, + "consentRequired": false, + "standardFlowEnabled": true, + "implicitFlowEnabled": false, + "directAccessGrantsEnabled": false, + "serviceAccountsEnabled": false, + "publicClient": false, + "frontchannelLogout": false, + "protocol": "openid-connect", + "attributes": {}, + "fullScopeAllowed": false, + "nodeReRegistrationTimeout": 0, + "protocolMappers": [ + { + "id": "71605238-bf41-400e-8c03-a5d78f54b00b", + "name": "email", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${email}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "email", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "email", + "jsonType.label": "String" + } + }, + { + "id": "a0cb6f3a-30ef-4475-b73f-ca6c2f1f3675", + "name": "given name", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${givenName}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "firstName", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "given_name", + "jsonType.label": "String" + } + }, + { + "id": "3a7708b1-63b9-4116-af7f-969fc1bf61a4", + "name": "role list", + "protocol": "saml", + "protocolMapper": "saml-role-list-mapper", + "consentRequired": false, + "config": { + "single": "false", + "attribute.nameformat": "Basic", + "attribute.name": "Role" + } + }, + { + "id": "c393d7b7-fa22-4e90-9ad7-07d520632c20", + "name": "username", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${username}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "username", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "preferred_username", + "jsonType.label": "String" + } + }, + { + "id": "2d8cbac4-e4dd-4fa6-bf71-98adf826b9dd", + "name": "family name", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${familyName}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "lastName", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "family_name", + "jsonType.label": "String" + } + }, + { + "id": "e77aae69-8ea4-4ee4-bcd6-ba7ef3958c02", + "name": "full name", + "protocol": "openid-connect", + "protocolMapper": "oidc-full-name-mapper", + "consentRequired": true, + "consentText": "${fullName}", + "config": { + "id.token.claim": "true", + "access.token.claim": "true", + "userinfo.token.claim": "true" + } + } + ], + "useTemplateConfig": false, + "useTemplateScope": false, + "useTemplateMappers": false + }, + { + "id": "8c12290d-d62f-48ce-913b-c93bf995ca59", + "clientId": "portal", + "rootUrl": "", + "adminUrl": "/callback", + "baseUrl": "/", + "surrogateAuthRequired": false, + "enabled": true, + "clientAuthenticatorType": "client-secret", + "secret": "", + "redirectUris": [ + ], + "webOrigins": [ + "" + ], + "notBefore": 0, + "bearerOnly": false, + "consentRequired": false, + "standardFlowEnabled": true, + "implicitFlowEnabled": false, + "directAccessGrantsEnabled": false, + "serviceAccountsEnabled": false, + "publicClient": true, + "frontchannelLogout": false, + "protocol": "openid-connect", + "attributes": { + "saml.assertion.signature": "false", + "saml.force.post.binding": "false", + "saml.multivalued.roles": "false", + "saml.encrypt": "false", + "saml_force_name_id_format": "false", + "saml.client.signature": "false", + "saml.authnstatement": "false", + "saml.server.signature": "false", + "saml.server.signature.keyinfo.ext": "false", + "saml.onetimeuse.condition": "false" + }, + "fullScopeAllowed": true, + "nodeReRegistrationTimeout": -1, + "protocolMappers": [ + { + "id": "63071ff2-a5e5-4d38-b534-a9f25a075403", + "name": "full name", + "protocol": "openid-connect", + "protocolMapper": "oidc-full-name-mapper", + "consentRequired": true, + "consentText": "${fullName}", + "config": { + "id.token.claim": "true", + "access.token.claim": "true", + "userinfo.token.claim": "true" + } + }, + { + "id": "9bf9cad5-dbce-41e9-aa36-d84cc5a768a2", + "name": "username", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${username}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "username", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "preferred_username", + "jsonType.label": "String" + } + }, + { + "id": "238e55b7-6545-467e-856b-f95477afe1ff", + "name": "role list", + "protocol": "saml", + "protocolMapper": "saml-role-list-mapper", + "consentRequired": false, + "config": { + "single": "false", + "attribute.nameformat": "Basic", + "attribute.name": "Role" + } + }, + { + "id": "edb1ff4e-b452-46bc-8c3b-d6075f6ee579", + "name": "family name", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${familyName}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "lastName", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "family_name", + "jsonType.label": "String" + } + }, + { + "id": "7a0118e2-57ff-4d23-bf74-cbfe1f545d1d", + "name": "given name", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${givenName}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "firstName", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "given_name", + "jsonType.label": "String" + } + }, + { + "id": "b59a913e-118a-4dc4-a8d7-66c44ced5345", + "name": "email", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${email}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "email", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "email", + "jsonType.label": "String" + } + } + ], + "useTemplateConfig": false, + "useTemplateScope": false, + "useTemplateMappers": false + }, + { + "id": "79c518d7-b41a-4e6f-be42-4ef365824100", + "clientId": "security-admin-console", + "name": "${client_security-admin-console}", + "baseUrl": "/auth/admin/sunbird/console/index.html", + "surrogateAuthRequired": false, + "enabled": true, + "clientAuthenticatorType": "client-secret", + "secret": "", + "redirectUris": [ + "/auth/admin/sunbird/console/*" + ], + "webOrigins": [], + "notBefore": 0, + "bearerOnly": false, + "consentRequired": false, + "standardFlowEnabled": true, + "implicitFlowEnabled": false, + "directAccessGrantsEnabled": false, + "serviceAccountsEnabled": false, + "publicClient": true, + "frontchannelLogout": false, + "protocol": "openid-connect", + "attributes": {}, + "fullScopeAllowed": false, + "nodeReRegistrationTimeout": 0, + "protocolMappers": [ + { + "id": "c989a8c8-cb8b-40ff-b4b9-86122bad7aa9", + "name": "role list", + "protocol": "saml", + "protocolMapper": "saml-role-list-mapper", + "consentRequired": false, + "config": { + "single": "false", + "attribute.nameformat": "Basic", + "attribute.name": "Role" + } + }, + { + "id": "b180fb8c-997c-4f6a-b774-af677f903139", + "name": "family name", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${familyName}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "lastName", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "family_name", + "jsonType.label": "String" + } + }, + { + "id": "c373dc9a-49d7-4d28-9b94-06cf20fb1955", + "name": "full name", + "protocol": "openid-connect", + "protocolMapper": "oidc-full-name-mapper", + "consentRequired": true, + "consentText": "${fullName}", + "config": { + "id.token.claim": "true", + "access.token.claim": "true", + "userinfo.token.claim": "true" + } + }, + { + "id": "24c7b1c4-62c2-4d92-ab19-49bfaedcc3d4", + "name": "email", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${email}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "email", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "email", + "jsonType.label": "String" + } + }, + { + "id": "883a39a7-37b4-46ef-a761-3e51b95ccc35", + "name": "given name", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${givenName}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "firstName", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "given_name", + "jsonType.label": "String" + } + }, + { + "id": "95ed8e44-38cc-4f09-8adc-19c12d5eada0", + "name": "locale", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-attribute-mapper", + "consentRequired": false, + "consentText": "${locale}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "locale", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "locale", + "jsonType.label": "String" + } + }, + { + "id": "c66c6a41-eb22-443f-8a77-e68d404ad26f", + "name": "username", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${username}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "username", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "preferred_username", + "jsonType.label": "String" + } + } + ], + "useTemplateConfig": false, + "useTemplateScope": false, + "useTemplateMappers": false + }, + { + "id": "c2d24d3f-65ca-46de-9cd8-3eeb71a7f83d", + "clientId": "account", + "name": "${client_account}", + "baseUrl": "/auth/realms/sunbird/account", + "surrogateAuthRequired": false, + "enabled": true, + "clientAuthenticatorType": "client-secret", + "secret": "", + "defaultRoles": [ + "manage-account", + "view-profile" + ], + "redirectUris": [ + "/auth/realms/sunbird/account/*" + ], + "webOrigins": [], + "notBefore": 0, + "bearerOnly": false, + "consentRequired": false, + "standardFlowEnabled": true, + "implicitFlowEnabled": false, + "directAccessGrantsEnabled": false, + "serviceAccountsEnabled": false, + "publicClient": false, + "frontchannelLogout": false, + "protocol": "openid-connect", + "attributes": {}, + "fullScopeAllowed": false, + "nodeReRegistrationTimeout": 0, + "protocolMappers": [ + { + "id": "a64118ab-33c8-4060-9f3e-3ed817ba8e0d", + "name": "role list", + "protocol": "saml", + "protocolMapper": "saml-role-list-mapper", + "consentRequired": false, + "config": { + "single": "false", + "attribute.nameformat": "Basic", + "attribute.name": "Role" + } + }, + { + "id": "1f4a0c5e-7c8a-4693-8be5-14681b243868", + "name": "username", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${username}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "username", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "preferred_username", + "jsonType.label": "String" + } + }, + { + "id": "8d88a133-a399-4e75-b051-5b0d4ae850ab", + "name": "full name", + "protocol": "openid-connect", + "protocolMapper": "oidc-full-name-mapper", + "consentRequired": true, + "consentText": "${fullName}", + "config": { + "id.token.claim": "true", + "access.token.claim": "true", + "userinfo.token.claim": "true" + } + }, + { + "id": "45593258-916c-4158-8577-d9806c16415a", + "name": "email", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${email}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "email", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "email", + "jsonType.label": "String" + } + }, + { + "id": "027be48e-b7dc-4c3a-a648-414a466b67dd", + "name": "family name", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${familyName}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "lastName", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "family_name", + "jsonType.label": "String" + } + }, + { + "id": "c93937f9-0446-4be9-8b47-3c6de857497e", + "name": "given name", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${givenName}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "firstName", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "given_name", + "jsonType.label": "String" + } + } + ], + "useTemplateConfig": false, + "useTemplateScope": false, + "useTemplateMappers": false + } + ], + "clientTemplates": [], + "browserSecurityHeaders": { + "xContentTypeOptions": "nosniff", + "xRobotsTag": "none", + "xFrameOptions": "SAMEORIGIN", + "xXSSProtection": "1; mode=block", + "contentSecurityPolicy": "frame-src 'self'" + }, + "smtpServer": { + "password": "", + "starttls": "", + "auth": "true", + "port": "587", + "host": "", + "from": "", + "ssl": "", + "user": "" + }, + "loginTheme": "sunrise", + "eventsEnabled": false, + "eventsListeners": [ + "jboss-logging" + ], + "enabledEventTypes": [], + "adminEventsEnabled": false, + "adminEventsDetailsEnabled": false, + "components": { + "org.keycloak.services.clientregistration.policy.ClientRegistrationPolicy": [ + { + "id": "84078bbb-e005-44c8-9c7d-a1b4821558da", + "name": "Max Clients Limit", + "providerId": "max-clients", + "subType": "anonymous", + "subComponents": {}, + "config": { + "max-clients": [ + "200" + ] + } + }, + { + "id": "346d857e-4385-4f8f-a2fc-072fd11a10ec", + "name": "Allowed Protocol Mapper Types", + "providerId": "allowed-protocol-mappers", + "subType": "authenticated", + "subComponents": {}, + "config": { + "allowed-protocol-mapper-types": [ + "saml-user-attribute-mapper", + "oidc-usermodel-attribute-mapper", + "oidc-usermodel-property-mapper", + "saml-role-list-mapper", + "saml-user-property-mapper", + "oidc-full-name-mapper", + "oidc-address-mapper", + "oidc-sha256-pairwise-sub-mapper" + ], + "consent-required-for-all-mappers": [ + "true" + ] + } + }, + { + "id": "eed64f9f-4b66-45ad-bdb4-4070e3802366", + "name": "Allowed Client Templates", + "providerId": "allowed-client-templates", + "subType": "authenticated", + "subComponents": {}, + "config": {} + }, + { + "id": "17ac4eaa-9139-4b3a-b1db-c82d44c1531d", + "name": "Allowed Client Templates", + "providerId": "allowed-client-templates", + "subType": "anonymous", + "subComponents": {}, + "config": {} + }, + { + "id": "38532936-be91-40e4-b65d-c0abfaf9547c", + "name": "Full Scope Disabled", + "providerId": "scope", + "subType": "anonymous", + "subComponents": {}, + "config": {} + }, + { + "id": "8c1690a2-6eea-4d61-ab66-7a015e3bea3c", + "name": "Allowed Protocol Mapper Types", + "providerId": "allowed-protocol-mappers", + "subType": "anonymous", + "subComponents": {}, + "config": { + "allowed-protocol-mapper-types": [ + "oidc-usermodel-property-mapper", + "saml-user-property-mapper", + "oidc-full-name-mapper", + "oidc-sha256-pairwise-sub-mapper", + "oidc-address-mapper", + "oidc-usermodel-attribute-mapper", + "saml-role-list-mapper", + "saml-user-attribute-mapper" + ], + "consent-required-for-all-mappers": [ + "true" + ] + } + }, + { + "id": "3dcc314c-07f8-484d-9535-29424dbaddfc", + "name": "Trusted Hosts", + "providerId": "trusted-hosts", + "subType": "anonymous", + "subComponents": {}, + "config": { + "host-sending-registration-request-must-match": [ + "true" + ], + "client-uris-must-match": [ + "true" + ] + } + }, + { + "id": "ab52b781-64b9-42a0-99f5-cbeba6710763", + "name": "Consent Required", + "providerId": "consent-required", + "subType": "anonymous", + "subComponents": {}, + "config": {} + } + ], + "org.keycloak.keys.KeyProvider": [ + { + "id": "bd30c46f-9ee3-443d-9faa-6ed8075aac87", + "name": "rsa-generated", + "providerId": "rsa-generated", + "subComponents": {}, + "config": { + "priority": [ + "100" + ] + } + }, + { + "id": "a93cc73f-b070-48cd-bf08-9b290707c2f5", + "name": "hmac-generated", + "providerId": "hmac-generated", + "subComponents": {}, + "config": { + "priority": [ + "100" + ] + } + } + ] + }, + "internationalizationEnabled": true, + "supportedLocales": [ + "de", + "no", + "ru", + "sv", + "pt-BR", + "ja", + "lt", + "en", + "it", + "fr", + "es", + "ca" + ], + "defaultLocale": "en", + "authenticationFlows": [ + { + "id": "6c9d3423-9956-4d08-a124-41cd17aceb5a", + "alias": "Direct Grant 2", + "description": "OpenID Connect Resource Owner Grant", + "providerId": "basic-flow", + "topLevel": true, + "builtIn": false, + "authenticationExecutions": [ + { + "authenticator": "direct-grant-validate-username", + "requirement": "REQUIRED", + "priority": 10, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "authenticator": "direct-grant-validate-password", + "requirement": "DISABLED", + "priority": 20, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "authenticator": "direct-grant-validate-otp", + "requirement": "OPTIONAL", + "priority": 30, + "userSetupAllowed": false, + "autheticatorFlow": false + } + ] + }, + { + "id": "a7a49eb1-4386-499a-8a8f-13454b428f98", + "alias": "Direct Grant w/o Password", + "description": "Grant user access using only the username and no password.", + "providerId": "basic-flow", + "topLevel": true, + "builtIn": false, + "authenticationExecutions": [] + }, + { + "id": "c7b2f9c2-525b-486a-b2a8-148606caac0e", + "alias": "Handle Existing Account", + "description": "Handle what to do if there is existing account with same email/username like authenticated identity provider", + "providerId": "basic-flow", + "topLevel": false, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "idp-confirm-link", + "requirement": "REQUIRED", + "priority": 10, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "authenticator": "idp-email-verification", + "requirement": "ALTERNATIVE", + "priority": 20, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "requirement": "ALTERNATIVE", + "priority": 30, + "flowAlias": "Verify Existing Account by Re-authentication", + "userSetupAllowed": false, + "autheticatorFlow": true + } + ] + }, + { + "id": "c4674fef-8631-43c5-8f44-deb8867fa866", + "alias": "Verify Existing Account by Re-authentication", + "description": "Reauthentication of existing account", + "providerId": "basic-flow", + "topLevel": false, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "idp-username-password-form", + "requirement": "REQUIRED", + "priority": 10, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "authenticator": "auth-otp-form", + "requirement": "OPTIONAL", + "priority": 20, + "userSetupAllowed": false, + "autheticatorFlow": false + } + ] + }, + { + "id": "35016b3a-a041-47fd-8a85-a131c6f7b745", + "alias": "browser", + "description": "browser based authentication", + "providerId": "basic-flow", + "topLevel": true, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "auth-cookie", + "requirement": "ALTERNATIVE", + "priority": 10, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "authenticator": "auth-spnego", + "requirement": "DISABLED", + "priority": 20, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "authenticator": "identity-provider-redirector", + "requirement": "ALTERNATIVE", + "priority": 25, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "requirement": "ALTERNATIVE", + "priority": 30, + "flowAlias": "forms", + "userSetupAllowed": false, + "autheticatorFlow": true + } + ] + }, + { + "id": "8e85927e-349d-4a0a-a7da-efb352ba78ce", + "alias": "clients", + "description": "Base authentication for clients", + "providerId": "client-flow", + "topLevel": true, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "client-secret", + "requirement": "ALTERNATIVE", + "priority": 10, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "authenticator": "client-jwt", + "requirement": "ALTERNATIVE", + "priority": 20, + "userSetupAllowed": false, + "autheticatorFlow": false + } + ] + }, + { + "id": "b62ac783-8af6-429e-a8ff-7c8073195675", + "alias": "direct grant", + "description": "OpenID Connect Resource Owner Grant", + "providerId": "basic-flow", + "topLevel": true, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "direct-grant-validate-username", + "requirement": "REQUIRED", + "priority": 10, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "authenticator": "direct-grant-validate-password", + "requirement": "DISABLED", + "priority": 20, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "authenticator": "direct-grant-validate-otp", + "requirement": "OPTIONAL", + "priority": 30, + "userSetupAllowed": false, + "autheticatorFlow": false + } + ] + }, + { + "id": "e16e69c8-a3e8-480c-8201-8474d614e172", + "alias": "docker auth", + "description": "Used by Docker clients to authenticate against the IDP", + "providerId": "basic-flow", + "topLevel": true, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "docker-http-basic-authenticator", + "requirement": "REQUIRED", + "priority": 10, + "userSetupAllowed": false, + "autheticatorFlow": false + } + ] + }, + { + "id": "487ab3f9-33bf-49e2-8b03-5c45c85ea8b5", + "alias": "first broker login", + "description": "Actions taken after first broker login with identity provider account, which is not yet linked to any Keycloak account", + "providerId": "basic-flow", + "topLevel": true, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticatorConfig": "review profile config", + "authenticator": "idp-review-profile", + "requirement": "REQUIRED", + "priority": 10, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "authenticatorConfig": "create unique user config", + "authenticator": "idp-create-user-if-unique", + "requirement": "ALTERNATIVE", + "priority": 20, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "requirement": "ALTERNATIVE", + "priority": 30, + "flowAlias": "Handle Existing Account", + "userSetupAllowed": false, + "autheticatorFlow": true + } + ] + }, + { + "id": "a6d19ee2-387a-4db8-9ecb-2e9f806a88a1", + "alias": "forms", + "description": "Username, password, otp and other auth forms.", + "providerId": "basic-flow", + "topLevel": false, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "auth-username-password-form", + "requirement": "REQUIRED", + "priority": 10, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "authenticator": "auth-otp-form", + "requirement": "OPTIONAL", + "priority": 20, + "userSetupAllowed": false, + "autheticatorFlow": false + } + ] + }, + { + "id": "43fc7877-ad15-4c93-b327-15d4ca83f3e1", + "alias": "registration", + "description": "registration flow", + "providerId": "basic-flow", + "topLevel": true, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "registration-page-form", + "requirement": "REQUIRED", + "priority": 10, + "flowAlias": "registration form", + "userSetupAllowed": false, + "autheticatorFlow": true + } + ] + }, + { + "id": "8a77377f-60eb-4a23-8bfe-b7c360d7b48f", + "alias": "registration form", + "description": "registration form", + "providerId": "form-flow", + "topLevel": false, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "registration-user-creation", + "requirement": "REQUIRED", + "priority": 20, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "authenticator": "registration-profile-action", + "requirement": "REQUIRED", + "priority": 40, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "authenticator": "registration-password-action", + "requirement": "REQUIRED", + "priority": 50, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "authenticator": "registration-recaptcha-action", + "requirement": "DISABLED", + "priority": 60, + "userSetupAllowed": false, + "autheticatorFlow": false + } + ] + }, + { + "id": "30bd3dd1-f2f1-4708-a07d-08cf759c7b28", + "alias": "reset credentials", + "description": "Reset credentials for a user if they forgot their password or something", + "providerId": "basic-flow", + "topLevel": true, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "reset-credentials-choose-user", + "requirement": "REQUIRED", + "priority": 10, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "authenticator": "reset-credential-email", + "requirement": "REQUIRED", + "priority": 20, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "authenticator": "reset-password", + "requirement": "REQUIRED", + "priority": 30, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "authenticator": "reset-otp", + "requirement": "OPTIONAL", + "priority": 40, + "userSetupAllowed": false, + "autheticatorFlow": false + } + ] + }, + { + "id": "226a50b1-059a-44ef-8cfe-082dee5d60b9", + "alias": "saml ecp", + "description": "SAML ECP Profile Authentication Flow", + "providerId": "basic-flow", + "topLevel": true, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "http-basic-authenticator", + "requirement": "REQUIRED", + "priority": 10, + "userSetupAllowed": false, + "autheticatorFlow": false + } + ] + } + ], + "authenticatorConfig": [ + { + "id": "aec72381-3c1d-4a96-b436-ddb72b3737b9", + "alias": "create unique user config", + "config": { + "require.password.update.after.registration": "false" + } + }, + { + "id": "51f3fa48-bf74-4df9-9724-c0a9d6fe7c80", + "alias": "review profile config", + "config": { + "update.profile.on.first.login": "missing" + } + } + ], + "requiredActions": [ + { + "alias": "CONFIGURE_TOTP", + "name": "Configure OTP", + "providerId": "CONFIGURE_TOTP", + "enabled": true, + "defaultAction": false, + "config": {} + }, + { + "alias": "UPDATE_PASSWORD", + "name": "Update Password", + "providerId": "UPDATE_PASSWORD", + "enabled": true, + "defaultAction": false, + "config": {} + }, + { + "alias": "UPDATE_PROFILE", + "name": "Update Profile", + "providerId": "UPDATE_PROFILE", + "enabled": true, + "defaultAction": false, + "config": {} + }, + { + "alias": "VERIFY_EMAIL", + "name": "Verify Email", + "providerId": "VERIFY_EMAIL", + "enabled": true, + "defaultAction": false, + "config": {} + }, + { + "alias": "terms_and_conditions", + "name": "Terms and Conditions", + "providerId": "terms_and_conditions", + "enabled": true, + "defaultAction": false, + "config": {} + } + ], + "browserFlow": "browser", + "registrationFlow": "registration", + "directGrantFlow": "Direct Grant 2", + "resetCredentialsFlow": "reset credentials", + "clientAuthenticationFlow": "clients", + "dockerAuthenticationFlow": "docker auth", + "attributes": { + "_browser_header.xXSSProtection": "1; mode=block", + "_browser_header.xFrameOptions": "SAMEORIGIN", + "permanentLockout": "false", + "quickLoginCheckMilliSeconds": "1000", + "_browser_header.xRobotsTag": "none", + "maxFailureWaitSeconds": "900", + "minimumQuickLoginWaitSeconds": "60", + "failureFactor": "30", + "actionTokenGeneratedByUserLifespan": "300", + "maxDeltaTimeSeconds": "43200", + "_browser_header.xContentTypeOptions": "nosniff", + "actionTokenGeneratedByAdminLifespan": "43200", + "bruteForceProtected": "false", + "_browser_header.contentSecurityPolicy": "frame-src 'self'", + "waitIncrementSeconds": "60" + }, + "keycloakVersion": "3.2.0.Final" +} diff --git a/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/__init__.py b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/__init__.py new file mode 100644 index 0000000000..cf1f955408 --- /dev/null +++ b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/__init__.py @@ -0,0 +1,19 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2017 Marcos Pereira +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with this program. If not, see . + +from .keycloak_openid import * +from .keycloak_admin import * diff --git a/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/authorization/__init__.py b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/authorization/__init__.py new file mode 100644 index 0000000000..4a1d86dbeb --- /dev/null +++ b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/authorization/__init__.py @@ -0,0 +1,87 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2017 Marcos Pereira +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with this program. If not, see . + +import ast +import json + +from .permission import Permission +from .policy import Policy +from .role import Role + + +class Authorization: + """ + Keycloak Authorization (policies, roles, scopes and resources). + + https://keycloak.gitbooks.io/documentation/authorization_services/index.html + + """ + + def __init__(self): + self._policies = {} + + @property + def policies(self): + return self._policies + + @policies.setter + def policies(self, value): + self._policies = value + + def load_config(self, data): + """ + Load policies, roles and permissions (scope/resources). + + :param data: keycloak authorization data (dict) + :return: + """ + for pol in data['policies']: + if pol['type'] == 'role': + policy = Policy(name=pol['name'], + type=pol['type'], + logic=pol['logic'], + decision_strategy=pol['decisionStrategy']) + + config_roles = json.loads(pol['config']['roles']) + for role in config_roles: + policy.add_role(Role(name=role['id'], + required=role['required'])) + + self.policies[policy.name] = policy + + if pol['type'] == 'scope': + permission = Permission(name=pol['name'], + type=pol['type'], + logic=pol['logic'], + decision_strategy=pol['decisionStrategy']) + + permission.scopes = ast.literal_eval(pol['config']['scopes']) + + for policy_name in ast.literal_eval(pol['config']['applyPolicies']): + self.policies[policy_name].add_permission(permission) + + if pol['type'] == 'resource': + permission = Permission(name=pol['name'], + type=pol['type'], + logic=pol['logic'], + decision_strategy=pol['decisionStrategy']) + + permission.resources = ast.literal_eval(pol['config']['resources']) + + for policy_name in ast.literal_eval(pol['config']['applyPolicies']): + self.policies[policy_name].add_permission(permission) + diff --git a/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/authorization/permission.py b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/authorization/permission.py new file mode 100644 index 0000000000..94eca77954 --- /dev/null +++ b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/authorization/permission.py @@ -0,0 +1,98 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2017 Marcos Pereira +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with this program. If not, see . + + +class Permission: + """ + Consider this simple and very common permission: + + A permission associates the object being protected with the policies that must be evaluated to determine whether access is granted. + + X CAN DO Y ON RESOURCE Z + + where … + X represents one or more users, roles, or groups, or a combination of them. You can + also use claims and context here. + Y represents an action to be performed, for example, write, view, and so on. + Z represents a protected resource, for example, "/accounts". + + https://keycloak.gitbooks.io/documentation/authorization_services/topics/permission/overview.html + + """ + + def __init__(self, name, type, logic, decision_strategy): + self._name = name + self._type = type + self._logic = logic + self._decision_strategy = decision_strategy + self._resources = [] + self._scopes = [] + + def __repr__(self): + return "" % (self.name, self.type) + + def __str__(self): + return "Permission: %s (%s)" % (self.name, self.type) + + @property + def name(self): + return self._name + + @name.setter + def name(self, value): + self._name = value + + @property + def type(self): + return self._type + + @type.setter + def type(self, value): + self._type = value + + @property + def logic(self): + return self._logic + + @logic.setter + def logic(self, value): + self._logic = value + + @property + def decision_strategy(self): + return self._decision_strategy + + @decision_strategy.setter + def decision_strategy(self, value): + self._decision_strategy = value + + @property + def resources(self): + return self._resources + + @resources.setter + def resources(self, value): + self._resources = value + + @property + def scopes(self): + return self._scopes + + @scopes.setter + def scopes(self, value): + self._scopes = value + diff --git a/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/authorization/policy.py b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/authorization/policy.py new file mode 100644 index 0000000000..66512bac3a --- /dev/null +++ b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/authorization/policy.py @@ -0,0 +1,107 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2017 Marcos Pereira +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with this program. If not, see . + +from ..exceptions import KeycloakAuthorizationConfigError + + +class Policy: + """ + A policy defines the conditions that must be satisfied to grant access to an object. + Unlike permissions, you do not specify the object being protected but rather the conditions + that must be satisfied for access to a given object (for example, resource, scope, or both). + Policies are strongly related to the different access control mechanisms (ACMs) that you can use to + protect your resources. With policies, you can implement strategies for attribute-based access control + (ABAC), role-based access control (RBAC), context-based access control, or any combination of these. + + https://keycloak.gitbooks.io/documentation/authorization_services/topics/policy/overview.html + + """ + + def __init__(self, name, type, logic, decision_strategy): + self._name = name + self._type = type + self._logic = logic + self._decision_strategy = decision_strategy + self._roles = [] + self._permissions = [] + + def __repr__(self): + return "" % (self.name, self.type) + + def __str__(self): + return "Policy: %s (%s)" % (self.name, self.type) + + @property + def name(self): + return self._name + + @name.setter + def name(self, value): + self._name = value + + @property + def type(self): + return self._type + + @type.setter + def type(self, value): + self._type = value + + @property + def logic(self): + return self._logic + + @logic.setter + def logic(self, value): + self._logic = value + + @property + def decision_strategy(self): + return self._decision_strategy + + @decision_strategy.setter + def decision_strategy(self, value): + self._decision_strategy = value + + @property + def roles(self): + return self._roles + + @property + def permissions(self): + return self._permissions + + def add_role(self, role): + """ + Add keycloak role in policy. + + :param role: keycloak role. + :return: + """ + if self.type != 'role': + raise KeycloakAuthorizationConfigError( + "Can't add role. Policy type is different of role") + self._roles.append(role) + + def add_permission(self, permission): + """ + Add keycloak permission in policy. + + :param permission: keycloak permission. + :return: + """ + self._permissions.append(permission) diff --git a/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/authorization/role.py b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/authorization/role.py new file mode 100644 index 0000000000..8d398b09ee --- /dev/null +++ b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/authorization/role.py @@ -0,0 +1,39 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2017 Marcos Pereira +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with this program. If not, see . + + +class Role: + """ + Roles identify a type or category of user. Admin, user, + manager, and employee are all typical roles that may exist in an organization. + + https://keycloak.gitbooks.io/documentation/server_admin/topics/roles.html + + """ + + def __init__(self, name, required=False): + self.name = name + self.required = required + + @property + def get_name(self): + return self.name + + def __eq__(self, other): + if isinstance(other, str): + return self.name == other + return NotImplemented diff --git a/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/connection.py b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/connection.py new file mode 100644 index 0000000000..503b688a7f --- /dev/null +++ b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/connection.py @@ -0,0 +1,199 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2017 Marcos Pereira +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with this program. If not, see . + +try: + from urllib.parse import urljoin +except ImportError: + from urlparse import urljoin + +from .exceptions import * +import requests + + +class ConnectionManager(object): + """ Represents a simple server connection. + Args: + base_url (str): The server URL. + headers (dict): The header parameters of the requests to the server. + timeout (int): Timeout to use for requests to the server. + verify (bool): Verify server SSL. + """ + + def __init__(self, base_url, headers={}, timeout=60, verify=True): + self._base_url = base_url + self._headers = headers + self._timeout = timeout + self._verify = verify + + @property + def base_url(self): + """ Return base url in use for requests to the server. """ + return self._base_url + + @base_url.setter + def base_url(self, value): + """ """ + self._base_url = value + + @property + def timeout(self): + """ Return timeout in use for request to the server. """ + return self._timeout + + @timeout.setter + def timeout(self, value): + """ """ + self._timeout = value + + @property + def verify(self): + """ Return verify in use for request to the server. """ + return self._verify + + @verify.setter + def verify(self, value): + """ """ + self._verify = value + + @property + def headers(self): + """ Return header request to the server. """ + return self._headers + + @headers.setter + def headers(self, value): + """ """ + self._headers = value + + def param_headers(self, key): + """ Return a specific header parameter. + :arg + key (str): Header parameters key. + :return: + If the header parameters exist, return its value. + """ + return self.headers.get(key) + + def clean_headers(self): + """ Clear header parameters. """ + self.headers = {} + + def exist_param_headers(self, key): + """ Check if the parameter exists in the header. + :arg + key (str): Header parameters key. + :return: + If the header parameters exist, return True. + """ + return self.param_headers(key) is not None + + def add_param_headers(self, key, value): + """ Add a single parameter inside the header. + :arg + key (str): Header parameters key. + value (str): Value to be added. + """ + self.headers[key] = value + + def del_param_headers(self, key): + """ Remove a specific parameter. + :arg + key (str): Key of the header parameters. + """ + self.headers.pop(key, None) + + def raw_get(self, path, **kwargs): + """ Submit get request to the path. + :arg + path (str): Path for request. + :return + Response the request. + :exception + HttpError: Can't connect to server. + """ + + try: + return requests.get(urljoin(self.base_url, path), + params=kwargs, + headers=self.headers, + timeout=self.timeout, + verify=self.verify) + except Exception as e: + raise KeycloakConnectionError( + "Can't connect to server (%s)" % e) + + def raw_post(self, path, data, **kwargs): + """ Submit post request to the path. + :arg + path (str): Path for request. + data (dict): Payload for request. + :return + Response the request. + :exception + HttpError: Can't connect to server. + """ + try: + return requests.post(urljoin(self.base_url, path), + params=kwargs, + data=data, + headers=self.headers, + timeout=self.timeout, + verify=self.verify) + except Exception as e: + raise KeycloakConnectionError( + "Can't connect to server (%s)" % e) + + def raw_put(self, path, data, **kwargs): + """ Submit put request to the path. + :arg + path (str): Path for request. + data (dict): Payload for request. + :return + Response the request. + :exception + HttpError: Can't connect to server. + """ + try: + return requests.put(urljoin(self.base_url, path), + params=kwargs, + data=data, + headers=self.headers, + timeout=self.timeout, + verify=self.verify) + except Exception as e: + raise KeycloakConnectionError( + "Can't connect to server (%s)" % e) + + def raw_delete(self, path, **kwargs): + """ Submit delete request to the path. + + :arg + path (str): Path for request. + :return + Response the request. + :exception + HttpError: Can't connect to server. + """ + try: + return requests.delete(urljoin(self.base_url, path), + params=kwargs, + headers=self.headers, + timeout=self.timeout, + verify=self.verify) + except Exception as e: + raise KeycloakConnectionError( + "Can't connect to server (%s)" % e) diff --git a/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/exceptions.py b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/exceptions.py new file mode 100644 index 0000000000..27d8b14c15 --- /dev/null +++ b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/exceptions.py @@ -0,0 +1,93 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2017 Marcos Pereira +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with this program. If not, see . + +import requests + + +class KeycloakError(Exception): + def __init__(self, error_message="", response_code=None, + response_body=None): + + Exception.__init__(self, error_message) + + self.response_code = response_code + self.response_body = response_body + self.error_message = error_message + + def __str__(self): + if self.response_code is not None: + return "{0}: {1}".format(self.response_code, self.error_message) + else: + return "{0}".format(self.error_message) + + +class KeycloakAuthenticationError(KeycloakError): + pass + + +class KeycloakConnectionError(KeycloakError): + pass + + +class KeycloakOperationError(KeycloakError): + pass + + +class KeycloakGetError(KeycloakOperationError): + pass + + +class KeycloakSecretNotFound(KeycloakOperationError): + pass + + +class KeycloakRPTNotFound(KeycloakOperationError): + pass + + +class KeycloakAuthorizationConfigError(KeycloakOperationError): + pass + + +class KeycloakInvalidTokenError(KeycloakOperationError): + pass + + +def raise_error_from_response(response, error, expected_code=200): + + if expected_code == response.status_code: + if expected_code == requests.codes.no_content: + return {} + try: + return response.json() + except ValueError: + return response.content + + try: + message = response.json()['message'] + except (KeyError, ValueError): + message = response.content + + if isinstance(error, dict): + error = error.get(response.status_code, KeycloakOperationError) + else: + if response.status_code == 401: + error = KeycloakAuthenticationError + + raise error(error_message=message, + response_code=response.status_code, + response_body=response.content) diff --git a/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/keycloak_admin.py b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/keycloak_admin.py new file mode 100644 index 0000000000..79f5c2c6d3 --- /dev/null +++ b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/keycloak_admin.py @@ -0,0 +1,670 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2017 Marcos Pereira +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with this program. If not, see . + +# Unless otherwise stated in the comments, "id", in e.g. user_id, refers to the +# internal Keycloak server ID, usually a uuid string +from keycloak.urls_patterns import URL_ADMIN_CLIENT_ROLE +from .urls_patterns import \ + URL_ADMIN_USERS_COUNT, URL_ADMIN_USER, URL_ADMIN_USER_CONSENTS, \ + URL_ADMIN_SEND_UPDATE_ACCOUNT, URL_ADMIN_RESET_PASSWORD, URL_ADMIN_SEND_VERIFY_EMAIL, URL_ADMIN_GET_SESSIONS, \ + URL_ADMIN_SERVER_INFO, URL_ADMIN_CLIENTS, URL_ADMIN_CLIENT, URL_ADMIN_CLIENT_ROLES, URL_ADMIN_REALM_ROLES, \ + URL_ADMIN_GROUP, URL_ADMIN_GROUPS, URL_ADMIN_GROUP_CHILD, URL_ADMIN_USER_GROUP,\ + URL_ADMIN_GROUP_PERMISSIONS, URL_ADMIN_USER_CLIENT_ROLES, URL_ADMIN_USER_STORAGE, URL_ADMIN_REALM + +from .keycloak_openid import KeycloakOpenID + +from .exceptions import raise_error_from_response, KeycloakGetError + +from .urls_patterns import ( + URL_ADMIN_USERS, +) + +from .connection import ConnectionManager +import json + + +class KeycloakAdmin: + + def __init__(self, server_url, username, password, realm_name='master', client_id='admin-cli', verify=True): + """ + + :param server_url: Keycloak server url + :param username: admin username + :param password: admin password + :param realm_name: realm name + :param client_id: client id + :param verify: True if want check connection SSL + """ + self._username = username + self._password = password + self._client_id = client_id + self._realm_name = realm_name + + # Get token Admin + keycloak_openid = KeycloakOpenID(server_url=server_url, client_id=client_id, realm_name=realm_name, + verify=verify) + self._token = keycloak_openid.token(username, password) + + self._connection = ConnectionManager(base_url=server_url, + headers={'Authorization': 'Bearer ' + self.token.get('access_token'), + 'Content-Type': 'application/json'}, + timeout=60, + verify=verify) + + @property + def realm_name(self): + return self._realm_name + + @realm_name.setter + def realm_name(self, value): + self._realm_name = value + + @property + def connection(self): + return self._connection + + @connection.setter + def connection(self, value): + self._connection = value + + @property + def client_id(self): + return self._client_id + + @client_id.setter + def client_id(self, value): + self._client_id = value + + @property + def username(self): + return self._username + + @username.setter + def username(self, value): + self._username = value + + @property + def password(self): + return self._password + + @password.setter + def password(self, value): + self._password = value + + @property + def token(self): + return self._token + + @token.setter + def token(self, value): + self._token = value + + def get_users(self, query=None): + """ + Get users Returns a list of users, filtered according to query parameters + + :return: users list + """ + params_path = {"realm-name": self.realm_name} + data_raw = self.connection.raw_get(URL_ADMIN_USERS.format(**params_path), **query) + return raise_error_from_response(data_raw, KeycloakGetError) + + def create_user(self, payload): + """ + Create a new user Username must be unique + + UserRepresentation + http://www.keycloak.org/docs-api/3.3/rest-api/index.html#_userrepresentation + + :param payload: UserRepresentation + + :return: UserRepresentation + """ + params_path = {"realm-name": self.realm_name} + data_raw = self.connection.raw_post(URL_ADMIN_USERS.format(**params_path), + data=json.dumps(payload)) + return raise_error_from_response(data_raw, KeycloakGetError, expected_code=201) + + def users_count(self): + """ + User counter + + :return: counter + """ + params_path = {"realm-name": self.realm_name} + data_raw = self.connection.raw_get(URL_ADMIN_USERS_COUNT.format(**params_path)) + return raise_error_from_response(data_raw, KeycloakGetError) + + def get_user_id(self, username): + """ + Get internal keycloak user id from username + This is required for further actions against this user. + + UserRepresentation + http://www.keycloak.org/docs-api/3.3/rest-api/index.html#_userrepresentation + + :param username: id in UserRepresentation + + :return: user_id + """ + params_path = {"realm-name": self.realm_name, "username": username} + data_raw = self.connection.raw_get(URL_ADMIN_USERS.format(**params_path)) + data_content = raise_error_from_response(data_raw, KeycloakGetError) + + for user in data_content: + this_use_rname = json.dumps(user["username"]).strip('"') + if this_use_rname == username: + return json.dumps(user["id"]).strip('"') + + return None + + def get_user(self, user_id): + """ + Get representation of the user + + :param user_id: User id + + UserRepresentation: http://www.keycloak.org/docs-api/3.3/rest-api/index.html#_userrepresentation + + :return: UserRepresentation + """ + params_path = {"realm-name": self.realm_name, "id": user_id} + data_raw = self.connection.raw_get(URL_ADMIN_USER.format(**params_path)) + return raise_error_from_response(data_raw, KeycloakGetError) + + def update_user(self, user_id, payload): + """ + Update the user + + :param user_id: User id + :param payload: UserRepresentation + + :return: Http response + """ + params_path = {"realm-name": self.realm_name, "id": user_id} + data_raw = self.connection.raw_put(URL_ADMIN_USER.format(**params_path), + data=json.dumps(payload)) + return raise_error_from_response(data_raw, KeycloakGetError, expected_code=204) + + def delete_user(self, user_id): + """ + Delete the user + + :param user_id: User id + + :return: Http response + """ + params_path = {"realm-name": self.realm_name, "id": user_id} + data_raw = self.connection.raw_delete(URL_ADMIN_USER.format(**params_path)) + return raise_error_from_response(data_raw, KeycloakGetError, expected_code=204) + + def set_user_password(self, user_id, password, temporary=True): + """ + Set up a password for the user. If temporary is True, the user will have to reset + the temporary password next time they log in. + + http://www.keycloak.org/docs-api/3.2/rest-api/#_users_resource + http://www.keycloak.org/docs-api/3.2/rest-api/#_credentialrepresentation + + :param user_id: User id + :param password: New password + :param temporary: True if password is temporary + + :return: + """ + payload = {"type": "password", "temporary": temporary, "value": password} + params_path = {"realm-name": self.realm_name, "id": user_id} + data_raw = self.connection.raw_put(URL_ADMIN_RESET_PASSWORD.format(**params_path), + data=json.dumps(payload)) + return raise_error_from_response(data_raw, KeycloakGetError, expected_code=204) + + def consents_user(self, user_id): + """ + Get consents granted by the user + + :param user_id: User id + + :return: consents + """ + params_path = {"realm-name": self.realm_name, "id": user_id} + data_raw = self.connection.raw_get(URL_ADMIN_USER_CONSENTS.format(**params_path)) + return raise_error_from_response(data_raw, KeycloakGetError) + + def send_update_account(self, user_id, payload, client_id=None, lifespan=None, redirect_uri=None): + """ + Send a update account email to the user An email contains a + link the user can click to perform a set of required actions. + + :param user_id: + :param payload: + :param client_id: + :param lifespan: + :param redirect_uri: + + :return: + """ + params_path = {"realm-name": self.realm_name, "id": user_id} + params_query = {"client_id": client_id, "lifespan": lifespan, "redirect_uri": redirect_uri} + data_raw = self.connection.raw_put(URL_ADMIN_SEND_UPDATE_ACCOUNT.format(**params_path), + data=payload, **params_query) + return raise_error_from_response(data_raw, KeycloakGetError) + + def send_verify_email(self, user_id, client_id=None, redirect_uri=None): + """ + Send a update account email to the user An email contains a + link the user can click to perform a set of required actions. + + :param user_id: User id + :param client_id: Client id + :param redirect_uri: Redirect uri + + :return: + """ + params_path = {"realm-name": self.realm_name, "id": user_id} + params_query = {"client_id": client_id, "redirect_uri": redirect_uri} + data_raw = self.connection.raw_put(URL_ADMIN_SEND_VERIFY_EMAIL.format(**params_path), + data={}, **params_query) + return raise_error_from_response(data_raw, KeycloakGetError) + + def get_sessions(self, user_id): + """ + Get sessions associated with the user + + :param user_id: id of user + + UserSessionRepresentation + http://www.keycloak.org/docs-api/3.3/rest-api/index.html#_usersessionrepresentation + + :return: UserSessionRepresentation + """ + params_path = {"realm-name": self.realm_name, "id": user_id} + data_raw = self.connection.raw_get(URL_ADMIN_GET_SESSIONS.format(**params_path)) + return raise_error_from_response(data_raw, KeycloakGetError) + + def get_server_info(self): + """ + Get themes, social providers, auth providers, and event listeners available on this server + + ServerInfoRepresentation + http://www.keycloak.org/docs-api/3.3/rest-api/index.html#_serverinforepresentation + + :return: ServerInfoRepresentation + """ + data_raw = self.connection.raw_get(URL_ADMIN_SERVER_INFO) + return raise_error_from_response(data_raw, KeycloakGetError) + + def get_groups(self): + """ + Get groups belonging to the realm. Returns a list of groups belonging to the realm + + GroupRepresentation + http://www.keycloak.org/docs-api/3.2/rest-api/#_grouprepresentation + + :return: array GroupRepresentation + """ + params_path = {"realm-name": self.realm_name} + data_raw = self.connection.raw_get(URL_ADMIN_GROUPS.format(**params_path)) + return raise_error_from_response(data_raw, KeycloakGetError) + + def get_group(self, group_id): + """ + Get group by id. Returns full group details + + GroupRepresentation + http://www.keycloak.org/docs-api/3.2/rest-api/#_grouprepresentation + + :return: Keycloak server response (GroupRepresentation) + """ + params_path = {"realm-name": self.realm_name, "id": group_id} + data_raw = self.connection.raw_get(URL_ADMIN_GROUP.format(**params_path)) + return raise_error_from_response(data_raw, KeycloakGetError) + + def get_group_by_name(self, name_or_path, search_in_subgroups=False): + """ + Get group id based on name or path. + A straight name or path match with a top-level group will return first. + Subgroups are traversed, the first to match path (or name with path) is returned. + + GroupRepresentation + http://www.keycloak.org/docs-api/3.2/rest-api/#_grouprepresentation + + :param name: group name + :param path: group path + :param search_in_subgroups: True if want search in the subgroups + :return: Keycloak server response (GroupRepresentation) + """ + + groups = self.get_groups() + + # TODO: Review this code is necessary + for group in groups: + if group['name'] == name_or_path or group['path'] == name_or_path: + return group + elif search_in_subgroups and group["subGroups"]: + for subgroup in group["subGroups"]: + if subgroup['name'] == name_or_path or subgroup['path'] == name_or_path: + return subgroup + + return None + + def create_group(self, name=None, client_roles={}, realm_roles=[], sub_groups=[], path=None, parent=None): + """ + Create a group in the Realm + + GroupRepresentation + http://www.keycloak.org/docs-api/3.2/rest-api/#_grouprepresentation + + :param name: group name + :param client_roles: (Dict) Client roles to include in groupp # Not demonstrated to work + :param realm_roles: (List) Realm roles to include in group # Not demonstrated to work + :param sub_groups: (List) Subgroups to include in groupp # Not demonstrated to work + :param path: group path + :param parent: parent group's id. Required to create a sub-group. + + :return: Keycloak server response (GroupRepresentation) + """ + + data = {"name": name or path, + "path": path, + "clientRoles": client_roles, + "realmRoles": realm_roles, + "subGroups": sub_groups} + + if parent is None: + params_path = {"realm-name": self.realm_name} + data_raw = self.connection.raw_post(URL_ADMIN_GROUPS.format(**params_path), + data=json.dumps(data)) + else: + params_path = {"realm-name": self.realm_name, "id": parent} + data_raw = self.connection.raw_post(URL_ADMIN_GROUP_CHILD.format(**params_path), + data=json.dumps(data)) + + return raise_error_from_response(data_raw, KeycloakGetError, expected_code=201) + + def group_set_permissions(self, group_id, enabled=True): + """ + Enable/Disable permissions for a group. Cannot delete group if disabled + + :param group_id: id of group + :param enabled: boolean + :return: Keycloak server response + """ + + params_path = {"realm-name": self.realm_name, "id": group_id} + data_raw = self.connection.raw_put(URL_ADMIN_GROUP_PERMISSIONS.format(**params_path), + data=json.dumps({"enabled": enabled})) + return raise_error_from_response(data_raw, KeycloakGetError) + + def group_user_add(self, user_id, group_id): + """ + Add user to group (user_id and group_id) + + :param group_id: id of group + :param user_id: id of user + :param group_id: id of group to add to + :return: Keycloak server response + """ + + params_path = {"realm-name": self.realm_name, "id": user_id, "group-id": group_id} + data_raw = self.connection.raw_put(URL_ADMIN_USER_GROUP.format(**params_path), data=None) + return raise_error_from_response(data_raw, KeycloakGetError, expected_code=204) + + def group_user_remove(self, user_id, group_id): + """ + Remove user from group (user_id and group_id) + + :param group_id: id of group + :param user_id: id of user + :param group_id: id of group to add to + :return: Keycloak server response + """ + + params_path = {"realm-name": self.realm_name, "id": user_id, "group-id": group_id} + data_raw = self.connection.raw_delete(URL_ADMIN_USER_GROUP.format(**params_path)) + return raise_error_from_response(data_raw, KeycloakGetError, expected_code=204) + + def delete_group(self, group_id): + """ + Deletes a group in the Realm + + :param group_id: id of group to delete + :return: Keycloak server response + """ + + params_path = {"realm-name": self.realm_name, "id": group_id} + data_raw = self.connection.raw_delete(URL_ADMIN_GROUP.format(**params_path)) + return raise_error_from_response(data_raw, KeycloakGetError, expected_code=204) + + def get_clients(self): + """ + Get clients belonging to the realm Returns a list of clients belonging to the realm + + ClientRepresentation + http://www.keycloak.org/docs-api/3.3/rest-api/index.html#_clientrepresentation + + :return: Keycloak server response (ClientRepresentation) + """ + + params_path = {"realm-name": self.realm_name} + data_raw = self.connection.raw_get(URL_ADMIN_CLIENTS.format(**params_path)) + + return raise_error_from_response(data_raw, KeycloakGetError) + + def get_client(self, client_id): + """ + Get representation of the client + + ClientRepresentation + http://www.keycloak.org/docs-api/3.3/rest-api/index.html#_clientrepresentation + + :param client_id: id of client (not client-id) + :return: Keycloak server response (ClientRepresentation) + """ + + params_path = {"realm-name": self.realm_name, "id": client_id} + data_raw = self.connection.raw_get(URL_ADMIN_CLIENT.format(**params_path)) + return raise_error_from_response(data_raw, KeycloakGetError) + + def get_client_id(self, client_name): + """ + Get internal keycloak client id from client-id. + This is required for further actions against this client. + + :param client_name: name in ClientRepresentation + http://www.keycloak.org/docs-api/3.3/rest-api/index.html#_clientrepresentation + :return: client_id (uuid as string) + """ + + clients = self.get_clients() + + for client in clients: + if client_name == client['name']: + return client["id"] + + return None + + def create_client(self, payload): + """ + Create a client + + ClientRepresentation: http://www.keycloak.org/docs-api/3.3/rest-api/index.html#_clientrepresentation + + :param payload: ClientRepresentation + :return: Keycloak server response (UserRepresentation) + """ + + params_path = {"realm-name": self.realm_name} + data_raw = self.connection.raw_post(URL_ADMIN_CLIENTS.format(**params_path), + data=json.dumps(payload)) + return raise_error_from_response(data_raw, KeycloakGetError, expected_code=201) + + def delete_client(self, client_id): + """ + Get representation of the client + + ClientRepresentation + http://www.keycloak.org/docs-api/3.3/rest-api/index.html#_clientrepresentation + + :param client_id: keycloak client id (not oauth client-id) + :return: Keycloak server response (ClientRepresentation) + """ + + params_path = {"realm-name": self.realm_name, "id": client_id} + data_raw = self.connection.raw_delete(URL_ADMIN_CLIENT.format(**params_path)) + return raise_error_from_response(data_raw, KeycloakGetError, expected_code=204) + + def get_realm_roles(self): + """ + Get all roles for the realm or client + + RoleRepresentation + http://www.keycloak.org/docs-api/3.3/rest-api/index.html#_rolerepresentation + + :return: Keycloak server response (RoleRepresentation) + """ + + params_path = {"realm-name": self.realm_name} + data_raw = self.connection.raw_get(URL_ADMIN_REALM_ROLES.format(**params_path)) + return raise_error_from_response(data_raw, KeycloakGetError) + + def get_client_roles(self, client_id): + """ + Get all roles for the client + + :param client_id: id of client (not client-id) + + RoleRepresentation + http://www.keycloak.org/docs-api/3.3/rest-api/index.html#_rolerepresentation + + :return: Keycloak server response (RoleRepresentation) + """ + + params_path = {"realm-name": self.realm_name, "id": client_id} + data_raw = self.connection.raw_get(URL_ADMIN_CLIENT_ROLES.format(**params_path)) + return raise_error_from_response(data_raw, KeycloakGetError) + + def get_client_role(self, client_id, role_name): + """ + Get client role id by name + This is required for further actions with this role. + + :param client_id: id of client (not client-id) + :param role_name: role’s name (not id!) + + RoleRepresentation + http://www.keycloak.org/docs-api/3.3/rest-api/index.html#_rolerepresentation + + :return: role_id + """ + params_path = {"realm-name": self.realm_name, "id": client_id, "role-name": role_name} + data_raw = self.connection.raw_get(URL_ADMIN_CLIENT_ROLE.format(**params_path)) + return raise_error_from_response(data_raw, KeycloakGetError) + + def get_client_role_id(self, client_id, role_name): + """ + Warning: Deprecated + + Get client role id by name + This is required for further actions with this role. + + :param client_id: id of client (not client-id) + :param role_name: role’s name (not id!) + + RoleRepresentation + http://www.keycloak.org/docs-api/3.3/rest-api/index.html#_rolerepresentation + + :return: role_id + """ + role = self.get_client_role(client_id, role_name) + return role.get("id") + + def create_client_role(self, payload): + """ + Create a client role + + RoleRepresentation + http://www.keycloak.org/docs-api/3.3/rest-api/index.html#_rolerepresentation + + :param payload: id of client (not client-id), role_name: name of role + :return: Keycloak server response (RoleRepresentation) + """ + + params_path = {"realm-name": self.realm_name, "id": self.client_id} + data_raw = self.connection.raw_post(URL_ADMIN_CLIENT_ROLES.format(**params_path), + data=json.dumps(payload)) + return raise_error_from_response(data_raw, KeycloakGetError, expected_code=201) + + def delete_client_role(self, role_name): + """ + Create a client role + + RoleRepresentation + http://www.keycloak.org/docs-api/3.3/rest-api/index.html#_rolerepresentation + + :param role_name: role’s name (not id!) + """ + params_path = {"realm-name": self.realm_name, "id": self.client_id, "role-name": role_name} + data_raw = self.connection.raw_delete(URL_ADMIN_CLIENT_ROLE.format(**params_path)) + return raise_error_from_response(data_raw, KeycloakGetError, expected_code=204) + + def assign_client_role(self, user_id, client_id, roles): + """ + Assign a client role to a user + + :param client_id: id of client (not client-id) + :param user_id: id of user + :param client_id: id of client containing role, + :param roles: roles list or role (use RoleRepresentation) + :return Keycloak server response + """ + + payload = roles if isinstance(roles, list) else [roles] + params_path = {"realm-name": self.realm_name, "id": user_id, "client-id": client_id} + data_raw = self.connection.raw_post(URL_ADMIN_USER_CLIENT_ROLES.format(**params_path), + data=json.dumps(payload)) + return raise_error_from_response(data_raw, KeycloakGetError, expected_code=204) + + def sync_users(self, storage_id, action): + """ + Function to trigger user sync from provider + + :param storage_id: + :param action: + :return: + """ + data = {'action': action} + params_query = {"action": action} + + params_path = {"realm-name": self.realm_name, "id": storage_id} + data_raw = self.connection.raw_post(URL_ADMIN_USER_STORAGE.format(**params_path), + data=json.dumps(data), **params_query) + return raise_error_from_response(data_raw, KeycloakGetError) + + def import_realm(self, payload): + """ + Imports a realm from a full representation of that realm + + Realmrepresentation + http://www.keycloak.org/docs-api/2.5/rest-api/index.html#_import_a_realm + + :param payload: Realmrepresentation + + :return: Realmrepresentation + """ + data_raw = self.connection.raw_post(URL_ADMIN_REALM, + data = json.dumps(payload)) + return raise_error_from_response(data_raw, KeycloakGetError, expected_code=201) \ No newline at end of file diff --git a/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/keycloak_main.py b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/keycloak_main.py new file mode 100644 index 0000000000..bb859c405d --- /dev/null +++ b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/keycloak_main.py @@ -0,0 +1,87 @@ +import json + +from keycloak import KeycloakOpenID +from keycloak import KeycloakAdmin +import urllib2, argparse, json + +# Import realm +def keycloak_import_realm(keycloak_realm_file): + data = json.load(open(keycloak_realm_file)) + realm_import = keycloak_admin.import_realm(data) + +# Add user and set password +def keycloak_create_user(email, username, firstName, lastName, password): + new_user = keycloak_admin.create_user({"email": email, + "username": username, + "emailVerified": True, + "enabled": True, + "firstName": firstName, + "lastName": lastName, + "credentials": [{"value": "12345","type": password}], + "realmRoles": ["user_default"]}) + +# Create the user and assign the role to access the user management API +def update_user_roles(config): + realm_json = json.load(open(config['keycloak_realm_json_file_path'])) + + # Get the id of realm-management + for client in realm_json['clients']: + if config['clientId'] == client['clientId']: + client_id = client["id"] + break + + user = keycloak_admin.get_users({"username":config['keycloak_api_management_username']}) + user_id = user[0]['id'] + + # Read the role from file + with open(config['keycloak_user_manager_roles_json_file_path'], 'r') as data_file: + json_data = data_file.read() + + roles = json.loads(json_data) + + # Get only client roles + clientRoles = roles[config['clientId']] + + keycloak_admin.assign_client_role(user_id, client_id, clientRoles) + +if __name__ == "__main__": + parser = argparse.ArgumentParser(description='Configure keycloak user apis') + parser.add_argument('keycloak_bootstrap_config', help='configuration json file that is needed for keycloak bootstrap') + args = parser.parse_args() + + with open(args.keycloak_bootstrap_config) as keycloak_bootstrap_config: + config = json.load(keycloak_bootstrap_config) + + try: + # Get access token + keycloak_admin = KeycloakAdmin(server_url=config['keycloak_auth_server_url'], + username=config['keycloak_management_user'], + password=config['keycloak_management_password'], + realm_name="master", + client_id='admin-cli', + verify=False) + # Import realm + keycloak_import_realm(config['keycloak_realm_json_file_path']) + + # Set realm name to sunbird + keycloak_admin.realm_name = config['keycloak_realm'] + + # Add user for user api + keycloak_create_user(email=config['keycloak_api_management_user_email'], + username=config['keycloak_api_management_username'], + firstName=config['keycloak_api_management_user_first_name'], + lastName=config['keycloak_api_management_user_last_name'], + password=config['keycloak_api_management_user_password']) + + # Update user roles for access user management API's + config['clientId'] = "realm-management" + update_user_roles(config) + + # Update user roles for SSO + config['clientId'] = "admin-cli" + update_user_roles(config) + + except urllib2.HTTPError as e: + error_message = e.read() + print error_message + raise diff --git a/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/keycloak_openid.py b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/keycloak_openid.py new file mode 100644 index 0000000000..f1dcde44e3 --- /dev/null +++ b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/keycloak_openid.py @@ -0,0 +1,390 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2017 Marcos Pereira +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with this program. If not, see . + +from .authorization import Authorization +from .exceptions import raise_error_from_response, KeycloakGetError, \ + KeycloakRPTNotFound, KeycloakAuthorizationConfigError, KeycloakInvalidTokenError +from .urls_patterns import ( + URL_TOKEN, + URL_USERINFO, + URL_WELL_KNOWN, + URL_LOGOUT, + URL_CERTS, + URL_ENTITLEMENT, + URL_INTROSPECT +) +from .connection import ConnectionManager +from jose import jwt +import json + + +class KeycloakOpenID: + + def __init__(self, server_url, realm_name, client_id, client_secret_key=None, verify=True): + """ + + :param server_url: Keycloak server url + :param client_id: client id + :param realm_name: realm name + :param client_secret_key: client secret key + :param verify: True if want check connection SSL + """ + self._client_id = client_id + self._client_secret_key = client_secret_key + self._realm_name = realm_name + self._connection = ConnectionManager(base_url=server_url, + headers={}, + timeout=60, + verify=verify) + + self._authorization = Authorization() + + @property + def client_id(self): + return self._client_id + + @client_id.setter + def client_id(self, value): + self._client_id = value + + @property + def client_secret_key(self): + return self._client_secret_key + + @client_secret_key.setter + def client_secret_key(self, value): + self._client_secret_key = value + + @property + def realm_name(self): + return self._realm_name + + @realm_name.setter + def realm_name(self, value): + self._realm_name = value + + @property + def connection(self): + return self._connection + + @connection.setter + def connection(self, value): + self._connection = value + + @property + def authorization(self): + return self._authorization + + @authorization.setter + def authorization(self, value): + self._authorization = value + + def _add_secret_key(self, payload): + """ + Add secret key if exist. + + :param payload: + :return: + """ + if self.client_secret_key: + payload.update({"client_secret": self.client_secret_key}) + + return payload + + def _build_name_role(self, role): + """ + + :param role: + :return: + """ + return self.client_id + "/" + role + + def _token_info(self, token, method_token_info, **kwargs): + """ + + :param token: + :param method_token_info: + :param kwargs: + :return: + """ + if method_token_info == 'introspect': + token_info = self.introspect(token) + else: + token_info = self.decode_token(token, **kwargs) + + return token_info + + def well_know(self): + """ The most important endpoint to understand is the well-known configuration + endpoint. It lists endpoints and other configuration options relevant to + the OpenID Connect implementation in Keycloak. + + :return It lists endpoints and other configuration options relevant. + """ + + params_path = {"realm-name": self.realm_name} + data_raw = self.connection.raw_get(URL_WELL_KNOWN.format(**params_path)) + + return raise_error_from_response(data_raw, KeycloakGetError) + + def auth_url(self, redirect_uri): + """ + + http://openid.net/specs/openid-connect-core-1_0.html#AuthorizationEndpoint + + :return: + """ + return NotImplemented + + def token(self, username, password, grant_type=["password"]): + """ + The token endpoint is used to obtain tokens. Tokens can either be obtained by + exchanging an authorization code or by supplying credentials directly depending on + what flow is used. The token endpoint is also used to obtain new access tokens + when they expire. + + http://openid.net/specs/openid-connect-core-1_0.html#TokenEndpoint + + :param username: + :param password: + :param grant_type: + :return: + """ + params_path = {"realm-name": self.realm_name} + payload = {"username": username, "password": password, + "client_id": self.client_id, "grant_type": grant_type} + + payload = self._add_secret_key(payload) + data_raw = self.connection.raw_post(URL_TOKEN.format(**params_path), + data=payload) + return raise_error_from_response(data_raw, KeycloakGetError) + + def refresh_token(self, refresh_token, grant_type=["refresh_token"]): + """ + The token endpoint is used to obtain tokens. Tokens can either be obtained by + exchanging an authorization code or by supplying credentials directly depending on + what flow is used. The token endpoint is also used to obtain new access tokens + when they expire. + + http://openid.net/specs/openid-connect-core-1_0.html#TokenEndpoint + + :param refresh_token: + :param grant_type: + :return: + """ + params_path = {"realm-name": self.realm_name} + payload = {"client_id": self.client_id, "grant_type": grant_type, "refresh_token": refresh_token} + payload = self._add_secret_key(payload) + data_raw = self.connection.raw_post(URL_TOKEN.format(**params_path), + data=payload) + return raise_error_from_response(data_raw, KeycloakGetError) + + def userinfo(self, token): + """ + The userinfo endpoint returns standard claims about the authenticated user, + and is protected by a bearer token. + + http://openid.net/specs/openid-connect-core-1_0.html#UserInfo + + :param token: + :return: + """ + + self.connection.add_param_headers("Authorization", "Bearer " + token) + params_path = {"realm-name": self.realm_name} + + data_raw = self.connection.raw_get(URL_USERINFO.format(**params_path)) + + return raise_error_from_response(data_raw, KeycloakGetError) + + def logout(self, refresh_token): + """ + The logout endpoint logs out the authenticated user. + :param refresh_token: + :return: + """ + params_path = {"realm-name": self.realm_name} + payload = {"client_id": self.client_id, "refresh_token": refresh_token} + + payload = self._add_secret_key(payload) + data_raw = self.connection.raw_post(URL_LOGOUT.format(**params_path), + data=payload) + + return raise_error_from_response(data_raw, KeycloakGetError, expected_code=204) + + def certs(self): + """ + The certificate endpoint returns the public keys enabled by the realm, encoded as a + JSON Web Key (JWK). Depending on the realm settings there can be one or more keys enabled + for verifying tokens. + + https://tools.ietf.org/html/rfc7517 + + :return: + """ + params_path = {"realm-name": self.realm_name} + data_raw = self.connection.raw_get(URL_CERTS.format(**params_path)) + return raise_error_from_response(data_raw, KeycloakGetError) + + def entitlement(self, token, resource_server_id): + """ + Client applications can use a specific endpoint to obtain a special security token + called a requesting party token (RPT). This token consists of all the entitlements + (or permissions) for a user as a result of the evaluation of the permissions and authorization + policies associated with the resources being requested. With an RPT, client applications can + gain access to protected resources at the resource server. + + :return: + """ + self.connection.add_param_headers("Authorization", "Bearer " + token) + params_path = {"realm-name": self.realm_name, "resource-server-id": resource_server_id} + data_raw = self.connection.raw_get(URL_ENTITLEMENT.format(**params_path)) + + return raise_error_from_response(data_raw, KeycloakGetError) + + def introspect(self, token, rpt=None, token_type_hint=None): + """ + The introspection endpoint is used to retrieve the active state of a token. It is can only be + invoked by confidential clients. + + https://tools.ietf.org/html/rfc7662 + + :param token: + :param rpt: + :param token_type_hint: + + :return: + """ + params_path = {"realm-name": self.realm_name} + + payload = {"client_id": self.client_id, "token": token} + + if token_type_hint == 'requesting_party_token': + if rpt: + payload.update({"token": rpt, "token_type_hint": token_type_hint}) + self.connection.add_param_headers("Authorization", "Bearer " + token) + else: + raise KeycloakRPTNotFound("Can't found RPT.") + + payload = self._add_secret_key(payload) + + data_raw = self.connection.raw_post(URL_INTROSPECT.format(**params_path), + data=payload) + + return raise_error_from_response(data_raw, KeycloakGetError) + + def decode_token(self, token, key, algorithms=['RS256'], **kwargs): + """ + A JSON Web Key (JWK) is a JavaScript Object Notation (JSON) data + structure that represents a cryptographic key. This specification + also defines a JWK Set JSON data structure that represents a set of + JWKs. Cryptographic algorithms and identifiers for use with this + specification are described in the separate JSON Web Algorithms (JWA) + specification and IANA registries established by that specification. + + https://tools.ietf.org/html/rfc7517 + + :param token: + :param key: + :param algorithms: + :return: + """ + + return jwt.decode(token, key, algorithms=algorithms, + audience=self.client_id, **kwargs) + + def load_authorization_config(self, path): + """ + Load Keycloak settings (authorization) + + :param path: settings file (json) + :return: + """ + authorization_file = open(path, 'r') + authorization_json = json.loads(authorization_file.read()) + self.authorization.load_config(authorization_json) + authorization_file.close() + + def get_policies(self, token, method_token_info='introspect', **kwargs): + """ + Get policies by user token + + :param token: user token + :return: policies list + """ + + if not self.authorization.policies: + raise KeycloakAuthorizationConfigError( + "Keycloak settings not found. Load Authorization Keycloak settings." + ) + + token_info = self._token_info(token, method_token_info, **kwargs) + + if method_token_info == 'introspect' and not token_info['active']: + raise KeycloakInvalidTokenError( + "Token expired or invalid." + ) + + user_resources = token_info['resource_access'].get(self.client_id) + + if not user_resources: + return None + + policies = [] + + for policy_name, policy in self.authorization.policies.items(): + for role in user_resources['roles']: + if self._build_name_role(role) in policy.roles: + policies.append(policy) + + return list(set(policies)) + + def get_permissions(self, token, method_token_info='introspect', **kwargs): + """ + Get permission by user token + + :param token: user token + :param method_token_info: Decode token method + :param kwargs: parameters for decode + :return: permissions list + """ + + if not self.authorization.policies: + raise KeycloakAuthorizationConfigError( + "Keycloak settings not found. Load Authorization Keycloak settings." + ) + + token_info = self._token_info(token, method_token_info, **kwargs) + + if method_token_info == 'introspect' and not token_info['active']: + raise KeycloakInvalidTokenError( + "Token expired or invalid." + ) + + user_resources = token_info['resource_access'].get(self.client_id) + + if not user_resources: + return None + + permissions = [] + + for policy_name, policy in self.authorization.policies.items(): + for role in user_resources['roles']: + if self._build_name_role(role) in policy.roles: + permissions += policy.permissions + + return list(set(permissions)) diff --git a/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/python_keycloak.egg-info/PKG-INFO b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/python_keycloak.egg-info/PKG-INFO new file mode 100644 index 0000000000..e98a1ee3c0 --- /dev/null +++ b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/python_keycloak.egg-info/PKG-INFO @@ -0,0 +1,18 @@ +Metadata-Version: 1.1 +Name: python-keycloak +Version: 0.12.0 +Summary: python-keycloak is a Python package providing access to the Keycloak API. +Home-page: https://bitbucket.org/agriness/python-keycloak +Author: Marcos Pereira +Author-email: marcospereira.mpj@gmail.com +License: GNU General Public License - V3 +Description: UNKNOWN +Keywords: keycloak openid +Platform: UNKNOWN +Classifier: Programming Language :: Python :: 3 +Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3) +Classifier: Development Status :: 3 - Alpha +Classifier: Operating System :: MacOS +Classifier: Operating System :: Unix +Classifier: Operating System :: Microsoft :: Windows +Classifier: Topic :: Utilities diff --git a/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/python_keycloak.egg-info/SOURCES.txt b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/python_keycloak.egg-info/SOURCES.txt new file mode 100644 index 0000000000..e69de29bb2 diff --git a/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/python_keycloak.egg-info/dependency_links.txt b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/python_keycloak.egg-info/dependency_links.txt new file mode 100644 index 0000000000..8b13789179 --- /dev/null +++ b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/python_keycloak.egg-info/dependency_links.txt @@ -0,0 +1 @@ + diff --git a/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/python_keycloak.egg-info/requires.txt b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/python_keycloak.egg-info/requires.txt new file mode 100644 index 0000000000..d6eafdf657 --- /dev/null +++ b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/python_keycloak.egg-info/requires.txt @@ -0,0 +1,3 @@ +requests==2.18.4 +httmock==1.2.5 +python-jose==1.4.0 diff --git a/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/python_keycloak.egg-info/top_level.txt b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/python_keycloak.egg-info/top_level.txt new file mode 100644 index 0000000000..26c07c1da4 --- /dev/null +++ b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/python_keycloak.egg-info/top_level.txt @@ -0,0 +1 @@ +keycloak diff --git a/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/tests/__init__.py b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/tests/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/tests/test_connection.py b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/tests/test_connection.py new file mode 100644 index 0000000000..97ec1792df --- /dev/null +++ b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/tests/test_connection.py @@ -0,0 +1,148 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2017 Marcos Pereira +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with this program. If not, see . + +from httmock import urlmatch, response, HTTMock, all_requests + +from ..connection import ConnectionManager + + +try: + import unittest +except ImportError: + import unittest2 as unittest + + +class TestConnection(unittest.TestCase): + + def setUp(self): + self._conn = ConnectionManager( + base_url="http://localhost:8080/", + headers={}, + timeout=60) + + @all_requests + def response_content_success(self, url, request): + headers = {'content-type': 'application/json'} + content = b'response_ok' + return response(200, content, headers, None, 5, request) + + def test_raw_get(self): + with HTTMock(self.response_content_success): + resp = self._conn.raw_get("/known_path") + self.assertEqual(resp.content, b'response_ok') + self.assertEqual(resp.status_code, 200) + + def test_raw_post(self): + + @urlmatch(path="/known_path", method="post") + def response_post_success(url, request): + headers = {'content-type': 'application/json'} + content = 'response'.encode("utf-8") + return response(201, content, headers, None, 5, request) + + with HTTMock(response_post_success): + resp = self._conn.raw_post("/known_path", + {'field': 'value'}) + self.assertEqual(resp.content, b'response') + self.assertEqual(resp.status_code, 201) + + def test_raw_put(self): + @urlmatch(netloc="localhost", path="/known_path", method="put") + def response_put_success(url, request): + headers = {'content-type': 'application/json'} + content = 'response'.encode("utf-8") + return response(200, content, headers, None, 5, request) + + with HTTMock(response_put_success): + resp = self._conn.raw_put("/known_path", + {'field': 'value'}) + self.assertEqual(resp.content, b'response') + self.assertEqual(resp.status_code, 200) + + def test_raw_get_fail(self): + + @urlmatch(netloc="localhost", path="/known_path", method="get") + def response_get_fail(url, request): + headers = {'content-type': 'application/json'} + content = "404 page not found".encode("utf-8") + return response(404, content, headers, None, 5, request) + + with HTTMock(response_get_fail): + resp = self._conn.raw_get("/known_path") + + self.assertEqual(resp.content, b"404 page not found") + self.assertEqual(resp.status_code, 404) + + def test_raw_post_fail(self): + + @urlmatch(netloc="localhost", path="/known_path", method="post") + def response_post_fail(url, request): + headers = {'content-type': 'application/json'} + content = str(["Start can't be blank"]).encode("utf-8") + return response(404, content, headers, None, 5, request) + + with HTTMock(response_post_fail): + resp = self._conn.raw_post("/known_path", + {'field': 'value'}) + self.assertEqual(resp.content, str(["Start can't be blank"]).encode("utf-8")) + self.assertEqual(resp.status_code, 404) + + def test_raw_put_fail(self): + + @urlmatch(netloc="localhost", path="/known_path", method="put") + def response_put_fail(url, request): + headers = {'content-type': 'application/json'} + content = str(["Start can't be blank"]).encode("utf-8") + return response(404, content, headers, None, 5, request) + + with HTTMock(response_put_fail): + resp = self._conn.raw_put("/known_path", + {'field': 'value'}) + self.assertEqual(resp.content, str(["Start can't be blank"]).encode("utf-8")) + self.assertEqual(resp.status_code, 404) + + def test_add_param_headers(self): + self._conn.add_param_headers("test", "value") + self.assertEqual(self._conn.headers, + {"test": "value"}) + + def test_del_param_headers(self): + self._conn.add_param_headers("test", "value") + self._conn.del_param_headers("test") + self.assertEqual(self._conn.headers, {}) + + def test_clean_param_headers(self): + self._conn.add_param_headers("test", "value") + self.assertEqual(self._conn.headers, + {"test": "value"}) + self._conn.clean_headers() + self.assertEqual(self._conn.headers, {}) + + def test_exist_param_headers(self): + self._conn.add_param_headers("test", "value") + self.assertTrue(self._conn.exist_param_headers("test")) + self.assertFalse(self._conn.exist_param_headers("test_no")) + + def test_get_param_headers(self): + self._conn.add_param_headers("test", "value") + self.assertTrue(self._conn.exist_param_headers("test")) + self.assertFalse(self._conn.exist_param_headers("test_no")) + + def test_get_headers(self): + self._conn.add_param_headers("test", "value") + self.assertEqual(self._conn.headers, + {"test": "value"}) diff --git a/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/urls_patterns.py b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/urls_patterns.py new file mode 100644 index 0000000000..b57212950b --- /dev/null +++ b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/urls_patterns.py @@ -0,0 +1,54 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2017 Marcos Pereira +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with this program. If not, see . + +# OPENID URLS +URL_WELL_KNOWN = "realms/{realm-name}/.well-known/openid-configuration" +URL_TOKEN = "realms/{realm-name}/protocol/openid-connect/token" +URL_USERINFO = "realms/{realm-name}/protocol/openid-connect/userinfo" +URL_LOGOUT = "realms/{realm-name}/protocol/openid-connect/logout" +URL_CERTS = "realms/{realm-name}/protocol/openid-connect/certs" +URL_INTROSPECT = "realms/{realm-name}/protocol/openid-connect/token/introspect" +URL_ENTITLEMENT = "realms/{realm-name}/authz/entitlement/{resource-server-id}" + +# ADMIN URLS +URL_ADMIN_USERS = "admin/realms/{realm-name}/users" +URL_ADMIN_USERS_COUNT = "admin/realms/{realm-name}/users/count" +URL_ADMIN_USER = "admin/realms/{realm-name}/users/{id}" +URL_ADMIN_USER_CONSENTS = "admin/realms/{realm-name}/users/{id}/consents" +URL_ADMIN_SEND_UPDATE_ACCOUNT = "admin/realms/{realm-name}/users/{id}/execute-actions-email" +URL_ADMIN_SEND_VERIFY_EMAIL = "admin/realms/{realm-name}/users/{id}/send-verify-email" +URL_ADMIN_RESET_PASSWORD = "admin/realms/{realm-name}/users/{id}/reset-password" +URL_ADMIN_GET_SESSIONS = "admin/realms/{realm-name}/users/{id}/sessions" +URL_ADMIN_USER_CLIENT_ROLES = "admin/realms/{realm-name}/users/{id}/role-mappings/clients/{client-id}" +URL_ADMIN_USER_GROUP = "admin/realms/{realm-name}/users/{id}/groups/{group-id}" + +URL_ADMIN_SERVER_INFO = "admin/serverinfo" + +URL_ADMIN_GROUPS = "admin/realms/{realm-name}/groups" +URL_ADMIN_GROUP = "admin/realms/{realm-name}/groups/{id}" +URL_ADMIN_GROUP_CHILD = "admin/realms/{realm-name}/groups/{id}/children" +URL_ADMIN_GROUP_PERMISSIONS = "admin/realms/{realm-name}/groups/{id}/management/permissions" + +URL_ADMIN_CLIENTS = "admin/realms/{realm-name}/clients" +URL_ADMIN_CLIENT = "admin/realms/{realm-name}/clients/{id}" +URL_ADMIN_CLIENT_ROLES = "admin/realms/{realm-name}/clients/{id}/roles" +URL_ADMIN_CLIENT_ROLE = "admin/realms/{realm-name}/clients/{id}/roles/{role-name}" + +URL_ADMIN_REALM_ROLES = "admin/realms/{realm-name}/roles" + +URL_ADMIN_USER_STORAGE = "admin/realms/{realm-name}/user-storage/{id}/sync" +URL_ADMIN_REALM = "admin/realms" diff --git a/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/python_keycloak.egg-info/PKG-INFO b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/python_keycloak.egg-info/PKG-INFO new file mode 100644 index 0000000000..e98a1ee3c0 --- /dev/null +++ b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/python_keycloak.egg-info/PKG-INFO @@ -0,0 +1,18 @@ +Metadata-Version: 1.1 +Name: python-keycloak +Version: 0.12.0 +Summary: python-keycloak is a Python package providing access to the Keycloak API. +Home-page: https://bitbucket.org/agriness/python-keycloak +Author: Marcos Pereira +Author-email: marcospereira.mpj@gmail.com +License: GNU General Public License - V3 +Description: UNKNOWN +Keywords: keycloak openid +Platform: UNKNOWN +Classifier: Programming Language :: Python :: 3 +Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3) +Classifier: Development Status :: 3 - Alpha +Classifier: Operating System :: MacOS +Classifier: Operating System :: Unix +Classifier: Operating System :: Microsoft :: Windows +Classifier: Topic :: Utilities diff --git a/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/python_keycloak.egg-info/SOURCES.txt b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/python_keycloak.egg-info/SOURCES.txt new file mode 100644 index 0000000000..d948eb4a5d --- /dev/null +++ b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/python_keycloak.egg-info/SOURCES.txt @@ -0,0 +1,21 @@ +README.md +setup.cfg +setup.py +keycloak/__init__.py +keycloak/connection.py +keycloak/exceptions.py +keycloak/keycloak_admin.py +keycloak/keycloak_main.py +keycloak/keycloak_openid.py +keycloak/urls_patterns.py +keycloak/authorization/__init__.py +keycloak/authorization/permission.py +keycloak/authorization/policy.py +keycloak/authorization/role.py +keycloak/tests/__init__.py +keycloak/tests/test_connection.py +python_keycloak.egg-info/PKG-INFO +python_keycloak.egg-info/SOURCES.txt +python_keycloak.egg-info/dependency_links.txt +python_keycloak.egg-info/requires.txt +python_keycloak.egg-info/top_level.txt \ No newline at end of file diff --git a/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/python_keycloak.egg-info/dependency_links.txt b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/python_keycloak.egg-info/dependency_links.txt new file mode 100644 index 0000000000..8b13789179 --- /dev/null +++ b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/python_keycloak.egg-info/dependency_links.txt @@ -0,0 +1 @@ + diff --git a/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/python_keycloak.egg-info/requires.txt b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/python_keycloak.egg-info/requires.txt new file mode 100644 index 0000000000..d6eafdf657 --- /dev/null +++ b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/python_keycloak.egg-info/requires.txt @@ -0,0 +1,3 @@ +requests==2.18.4 +httmock==1.2.5 +python-jose==1.4.0 diff --git a/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/python_keycloak.egg-info/top_level.txt b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/python_keycloak.egg-info/top_level.txt new file mode 100644 index 0000000000..26c07c1da4 --- /dev/null +++ b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/python_keycloak.egg-info/top_level.txt @@ -0,0 +1 @@ +keycloak diff --git a/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/roles.json b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/roles.json new file mode 100644 index 0000000000..cc5e0b3241 --- /dev/null +++ b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/roles.json @@ -0,0 +1,41 @@ +{ + "realm-management" : [ + { + "id": "3ff462fc-b33c-431a-b54b-861c3298d910", + "name": "manage-users", + "description": "${role_manage-users}", + "scopeParamRequired": false, + "composite": false,"clientRole": true, + "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" + }, + { + "id": "57118202-c5e5-4c49-829b-c2ed796bfdea", + "name": "query-users", + "description": "${role_query-users}", + "scopeParamRequired": false, + "composite": false, + "clientRole": true, + "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" + }, + { + "id":"46019462-3dc8-46a8-9786-ffcbad293f43", + "name":"view-users", + "description":"${role_view-users}", + "scopeParamRequired":false, + "composite":true, + "clientRole":true, + "containerId":"b2f45201-1362-4b10-83c3-207d470f44bf" + } + ], + "admin-cli": [ + { + "id":"30ab6b4f-b17c-4fff-a5fa-1181686bb409", + "name":"admin", + "description":"admin role", + "scopeParamRequired":false, + "composite":true, + "clientRole":true, + "containerId":"8891d8e9-35e6-4a1c-b32b-027be03b0f24" + } + ] +} diff --git a/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/setup.cfg b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/setup.cfg new file mode 100644 index 0000000000..9f88734b50 --- /dev/null +++ b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/setup.cfg @@ -0,0 +1,7 @@ +[metadata] +description-file = README.md + +[egg_info] +tag_build = +tag_date = 0 + diff --git a/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/setup.py b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/setup.py new file mode 100644 index 0000000000..bf6a505f0a --- /dev/null +++ b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/setup.py @@ -0,0 +1,25 @@ +# -*- coding: utf-8 -*- + +from setuptools import setup + +setup( + name='python-keycloak', + version='0.12.0', + url='https://bitbucket.org/agriness/python-keycloak', + license='GNU General Public License - V3', + author='Marcos Pereira', + author_email='marcospereira.mpj@gmail.com', + keywords='keycloak openid', + description=u'python-keycloak is a Python package providing access to the Keycloak API.', + packages=['keycloak', 'keycloak.authorization', 'keycloak.tests'], + install_requires=['requests==2.18.4', 'httmock==1.2.5', 'python-jose==1.4.0'], + classifiers=[ + 'Programming Language :: Python :: 3', + 'License :: OSI Approved :: GNU General Public License v3 (GPLv3)', + 'Development Status :: 3 - Alpha', + 'Operating System :: MacOS', + 'Operating System :: Unix', + 'Operating System :: Microsoft :: Windows', + 'Topic :: Utilities' + ] +) diff --git a/ansible/roles/sunbird-auth-deploy/tasks/bootstrap.yml b/ansible/roles/sunbird-auth-deploy/tasks/bootstrap.yml new file mode 100644 index 0000000000..9389b39bdb --- /dev/null +++ b/ansible/roles/sunbird-auth-deploy/tasks/bootstrap.yml @@ -0,0 +1,77 @@ +- name: start service + become: yes + command: /etc/init.d/keycloak start + poll: 5 + async: 5 + ignore_errors: yes + +- name: Create admin user + become_user: "{{ wildfly_user }}" + command: "{{ wildfly_dir }}/bin/add-user-keycloak.sh -r master -u {{ keycloak_management_user }} -p {{ keycloak_management_password }}" + when: keycloak_management_user is defined and + keycloak_management_password is defined + ignore_errors: yes + +- name: status service + become: yes + command: /etc/init.d/keycloak status + register: keycloak + poll: 5 + async: 10 + +- name: stop service + become: yes + command: /etc/init.d/keycloak stop && Pkill keycloak + when: "keycloak.stdout.find('running') != -1" + poll: 5 + async: 10 + ignore_errors: yes + +- name: start service + become: yes + command: /etc/init.d/keycloak start + poll: 5 + async: 5 + +- name: Waiting Until Keycloak is fully functional + wait_for: + host: "{{ inventory_hostname }}" + port: 8080 + delay: 5 + +- name: Install dependencies for keycloak + apt: + name: "{{item}}" + update_cache: yes + with_items: + - python-pip + - python-setuptools + +- name: Copying python libraries + copy: src={{ role_path }}/files/python-keycloak-0.12.0 dest=/tmp/ + +- name: Initialize python library to run keycloak bootstrap script + shell: cd /tmp/python-keycloak-0.12.0 && python setup.py install + +- name: Save keycalok vars to json + template: src="keycloak-bootstrap.conf.j2" dest="/tmp/keycloak-bootstrap.conf.json" mode="0644" + +- name: Copy realm json file to tmp location + template: src="keycloak-realm.j2" dest="/tmp/keycloak-realm.json" mode="0644" + +- name: Copy user manager roles file to tmp location + copy: src="files/python-keycloak-0.12.0/roles.json" dest="/tmp/roles.json" mode="0644" + +- name: Pausing for 100 seconds sometime for keycloak to run completely + pause: + seconds: 10 + +- name: Copy the keycloak bootstrap script + copy: src={{ role_path }}/files/python-keycloak-0.12.0/keycloak dest=/tmp + +- name: Run the keycloak bootstrap script + shell: cd /tmp/keycloak/ && python keycloak_main.py /tmp/keycloak-bootstrap.conf.json + register: out + until: '"404" not in out.stderr' + retries: 2 + delay: 10 diff --git a/ansible/roles/sunbird-auth-deploy/tasks/deploy.yml b/ansible/roles/sunbird-auth-deploy/tasks/deploy.yml new file mode 100644 index 0000000000..de5127b5b6 --- /dev/null +++ b/ansible/roles/sunbird-auth-deploy/tasks/deploy.yml @@ -0,0 +1,109 @@ +- name: Create required directories + file: + path: "{{ item.dest }}" + mode: "{{item.mode}}" + state: directory + with_items: + - { dest: '{{keycloak_home}}/providers', mode: '0755'} + - { dest: '{{keycloak_home}}/modules/system/layers/keycloak/org/postgresql/main', mode: '0755'} + - { dest: '{{keycloak_home}}/themes/{{tenant_name}}/login/messages', mode: '0755'} + - { dest: '{{keycloak_home}}/themes/{{tenant_name}}/login/resources/css/fonts/notosans', mode: '0755'} + - { dest: '{{keycloak_home}}/themes/{{tenant_name}}/login/resources/css/themes/default/assets/fonts', mode: '0755'} + - { dest: '{{keycloak_home}}/themes/{{tenant_name}}/login/resources/img', mode: '0755'} + - { dest: '{{keycloak_home}}/themes/{{tenant_name}}/login/resources/js', mode: '0755'} + - { dest: '{{keycloak_home}}/themes/{{tenant_name}}/email/html', mode: '0755'} + - { dest: '{{keycloak_home}}/themes/{{tenant_name}}/email/messages', mode: '0755'} + - { dest: '{{keycloak_home}}/themes/{{tenant_name}}/email/text', mode: '0755'} + +- name: Copy login theme + copy: src="{{login_theme}}/" dest="{{keycloak_home}}/themes/{{tenant_name}}/login/" force="yes" + +- name: Copy Custom Validation theme html to login theme + copy: src="../../sunbird-auth/keycloak/sms-provider/templates/" dest="{{keycloak_home}}/themes/{{tenant_name}}/login/" force="yes" + +- name: Copy email theme + copy: src="{{email_theme}}/" dest="{{keycloak_home}}/themes/{{tenant_name}}/email/" force="yes" + +- name: Create directory for sunbird auth package config + file: + path: sunbird_auth_{{sunbird_auth_version}}.config + state: directory + mode: 0755 + +- name: Keycloak configuration XML file + template: + src: "roles/sunbird-auth-deploy/templates/standalone-ha.xml" + dest: "sunbird_auth_{{sunbird_auth_version}}.config/standalone-ha.xml" + mode: 0750 + +- name: Postgresql Configuration- module.xml + template: + src: "roles/sunbird-auth-deploy/templates/module.xml.j2" + dest: "sunbird_auth_{{sunbird_auth_version}}.config/module.xml" + mode: 0750 + +- name: SMS provider configuration file + template: + src: "roles/sunbird-auth-deploy/templates/Msg91Creds.json.j2" + dest: "sunbird_auth_{{sunbird_auth_version}}.config/Msg91Creds.json" + mode: 0755 + when: "{{ msg_91_required|default(false) }}" + ignore_errors: yes + +- name: status service + become: yes + command: /etc/init.d/keycloak status + register: keycloak + poll: 5 + async: 10 + +- name: stop service + become: yes + command: /etc/init.d/keycloak stop && Pkill keycloak + when: "keycloak.stdout.find('running') != -1" + poll: 5 + async: 10 + ignore_errors: yes + +- name: Keycloak configuration XML file + copy: + src: "sunbird_auth_{{sunbird_auth_version}}.config/standalone-ha.xml" + dest: "{{keycloak_home}}/standalone/configuration/standalone-ha.xml" + mode: 0750 + owner: "{{wildfly_user}}" + group: "{{wildfly_group}}" + remote_src: yes + +- name: Postgresql Configuration- module.xml + copy: + src: "sunbird_auth_{{sunbird_auth_version}}.config/module.xml" + dest: "{{keycloak_home}}/modules/system/layers/keycloak/org/postgresql/main/module.xml" + mode: 0750 + owner: "{{wildfly_user}}" + group: "{{wildfly_group}}" + remote_src: yes + +- name: Create a directory for SMS provider configuration + file: + path: "{{keycloak_home}}/bin/sms-provider" + state: directory + mode: 0755 + when: "{{ msg_91_required|default(false) }}" + ignore_errors: yes + +- name: SMS provider configuration file + copy: + src: "sunbird_auth_{{sunbird_auth_version}}.config/Msg91Creds.json" + dest: "{{keycloak_home}}/bin/sms-provider/Msg91Creds.json" + owner: "{{wildfly_user}}" + group: "{{wildfly_group}}" + mode: 0755 + remote_src: yes + when: "{{ msg_91_required|default(false) }}" + ignore_errors: yes + +- name: start service + become: yes + command: /etc/init.d/keycloak start + poll: 5 + async: 5 diff --git a/ansible/roles/sunbird-auth-deploy/tasks/main.yml b/ansible/roles/sunbird-auth-deploy/tasks/main.yml new file mode 100644 index 0000000000..3c5bbefeb3 --- /dev/null +++ b/ansible/roles/sunbird-auth-deploy/tasks/main.yml @@ -0,0 +1,7 @@ +- include: deploy.yml + tags: + - deploy + +- include: bootstrap.yml + tags: + - bootstrap diff --git a/ansible/roles/sunbird-auth-deploy/templates/Msg91Creds.json.j2 b/ansible/roles/sunbird-auth-deploy/templates/Msg91Creds.json.j2 new file mode 100644 index 0000000000..d584b8be72 --- /dev/null +++ b/ansible/roles/sunbird-auth-deploy/templates/Msg91Creds.json.j2 @@ -0,0 +1,7 @@ +{ + "auth_key": "{{vault_auth_key}}", + "sender": "{{vault_sender}}", + "country": "{{vault_country}}", + "route": "{{vault_route}}", + "sms_method_type": "{{vault_sms_method_type}}" +} diff --git a/ansible/roles/sunbird-auth-deploy/templates/keycloak-bootstrap.conf.j2 b/ansible/roles/sunbird-auth-deploy/templates/keycloak-bootstrap.conf.j2 new file mode 100644 index 0000000000..32b567707b --- /dev/null +++ b/ansible/roles/sunbird-auth-deploy/templates/keycloak-bootstrap.conf.j2 @@ -0,0 +1,13 @@ +{ + "keycloak_auth_server_url": "{{ keycloak_auth_server_url }}/", + "keycloak_management_user": "{{ keycloak_management_user }}", + "keycloak_management_password": "{{ keycloak_management_password }}", + "keycloak_realm": "{{ keycloak_realm }}", + "keycloak_realm_json_file_path": "/tmp/keycloak-realm.json", + "keycloak_user_manager_roles_json_file_path": "/tmp/roles.json", + "keycloak_api_management_username": "{{ keycloak_api_management_username }}", + "keycloak_api_management_user_email": "{{ keycloak_api_management_user_email }}", + "keycloak_api_management_user_first_name": "{{ keycloak_api_management_user_first_name }}", + "keycloak_api_management_user_last_name": "{{ keycloak_api_management_user_last_name }}", + "keycloak_api_management_user_password": "{{ keycloak_api_management_user_password }}" +} diff --git a/ansible/roles/sunbird-auth-deploy/templates/keycloak-realm.j2 b/ansible/roles/sunbird-auth-deploy/templates/keycloak-realm.j2 new file mode 100644 index 0000000000..a8d199ed53 --- /dev/null +++ b/ansible/roles/sunbird-auth-deploy/templates/keycloak-realm.j2 @@ -0,0 +1,2388 @@ +{ + "id": "sunbird", + "realm": "sunbird", + "notBefore": 1548955037, + "revokeRefreshToken": false, + "accessTokenLifespan": 86400, + "accessTokenLifespanForImplicitFlow": 5184000, + "ssoSessionIdleTimeout": 86400, + "ssoSessionMaxLifespan": 86400, + "offlineSessionIdleTimeout": 15552000, + "accessCodeLifespan": 60, + "accessCodeLifespanUserAction": 300, + "accessCodeLifespanLogin": 43200, + "actionTokenGeneratedByAdminLifespan": 43200, + "actionTokenGeneratedByUserLifespan": 300, + "enabled": true, + "sslRequired": {{ '"none"' if proto=='http' else '"external"' }}, + "registrationAllowed": true, + "registrationEmailAsUsername": false, + "rememberMe": true, + "verifyEmail": false, + "loginWithEmailAllowed": true, + "duplicateEmailsAllowed": false, + "resetPasswordAllowed": true, + "editUsernameAllowed": false, + "bruteForceProtected": true, + "permanentLockout": false, + "maxFailureWaitSeconds": 900, + "minimumQuickLoginWaitSeconds": 60, + "waitIncrementSeconds": 60, + "quickLoginCheckMilliSeconds": 1000, + "maxDeltaTimeSeconds": 43200, + "failureFactor": 30, + "roles": { + "realm": [ + { + "id": "7b955d7f-0a1e-4935-8391-642886d34612", + "name": "offline_access", + "description": "${role_offline-access}", + "scopeParamRequired": true, + "composite": false, + "clientRole": false, + "containerId": "sunbird" + }, + { + "id": "d6e505fe-c3c5-4689-946e-7f69d3f64c6c", + "name": "admin", + "description": "role_admin", + "scopeParamRequired": false, + "composite": true, + "composites": { + "realm": [ + "offline_access", + "uma_authorization" + ] + }, + "clientRole": false, + "containerId": "sunbird" + }, + { + "id": "96adf368-c8e2-4b39-b2a5-2559573edb63", + "name": "uma_authorization", + "description": "${role_uma_authorization}", + "scopeParamRequired": false, + "composite": false, + "clientRole": false, + "containerId": "sunbird" + } + ], + "client": { + "realm-management": [ + { + "id": "3f8bf7e5-5d66-4394-8f06-1270529c605f", + "name": "manage-authorization", + "description": "${role_manage-authorization}", + "scopeParamRequired": false, + "composite": false, + "clientRole": true, + "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" + }, + { + "id": "601fa2c9-29d4-49c1-87ac-939a1260f6ce", + "name": "query-realms", + "description": "${role_query-realms}", + "scopeParamRequired": false, + "composite": false, + "clientRole": true, + "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" + }, + { + "id": "9aa1dcd9-cb93-4496-af5f-41b9ecacc1da", + "name": "view-authorization", + "description": "${role_view-authorization}", + "scopeParamRequired": false, + "composite": false, + "clientRole": true, + "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" + }, + { + "id": "98999987-faf5-4c4e-958a-e5463bc4edc6", + "name": "manage-events", + "description": "${role_manage-events}", + "scopeParamRequired": false, + "composite": false, + "clientRole": true, + "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" + }, + { + "id": "f898fca8-5361-49d5-900a-ebf5b775a939", + "name": "impersonation", + "description": "${role_impersonation}", + "scopeParamRequired": false, + "composite": false, + "clientRole": true, + "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" + }, + { + "id": "698dfeb0-b8d2-4240-b8a8-acd4b7a12ad3", + "name": "view-realm", + "description": "${role_view-realm}", + "scopeParamRequired": false, + "composite": false, + "clientRole": true, + "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" + }, + { + "id": "3ff462fc-b33c-431a-b54b-861c3298d910", + "name": "manage-users", + "description": "${role_manage-users}", + "scopeParamRequired": false, + "composite": false, + "clientRole": true, + "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" + }, + { + "id": "be1802b1-558c-404c-bcb9-b9bf77af9788", + "name": "manage-identity-providers", + "description": "${role_manage-identity-providers}", + "scopeParamRequired": false, + "composite": false, + "clientRole": true, + "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" + }, + { + "id": "387b44e4-e901-4431-b9af-6abd9377ed46", + "name": "query-clients", + "description": "${role_query-clients}", + "scopeParamRequired": false, + "composite": false, + "clientRole": true, + "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" + }, + { + "id": "a408b6e8-03c9-46a2-97ba-305d09db0c3c", + "name": "view-events", + "description": "${role_view-events}", + "scopeParamRequired": false, + "composite": false, + "clientRole": true, + "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" + }, + { + "id": "41c2f39a-3008-4f9d-9e1e-a7738c118570", + "name": "query-groups", + "description": "${role_query-groups}", + "scopeParamRequired": false, + "composite": false, + "clientRole": true, + "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" + }, + { + "id": "26d3289b-d2eb-4cf2-a501-f1e3fa07344c", + "name": "manage-clients", + "description": "${role_manage-clients}", + "scopeParamRequired": false, + "composite": false, + "clientRole": true, + "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" + }, + { + "id": "e2077ab0-6efb-450d-9cba-89cacd887b71", + "name": "create-client", + "description": "${role_create-client}", + "scopeParamRequired": false, + "composite": false, + "clientRole": true, + "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" + }, + { + "id": "46019462-3dc8-46a8-9786-ffcbad293f43", + "name": "view-users", + "description": "${role_view-users}", + "scopeParamRequired": false, + "composite": true, + "composites": { + "client": { + "realm-management": [ + "query-groups", + "query-users" + ] + } + }, + "clientRole": true, + "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" + }, + { + "id": "d269f220-e93f-4b43-96a1-9f2c117a2dfb", + "name": "view-clients", + "description": "${role_view-clients}", + "scopeParamRequired": false, + "composite": true, + "composites": { + "client": { + "realm-management": [ + "query-clients" + ] + } + }, + "clientRole": true, + "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" + }, + { + "id": "0c998f1b-7363-47fb-a493-4b6f4aacb0ba", + "name": "realm-admin", + "description": "${role_realm-admin}", + "scopeParamRequired": false, + "composite": true, + "composites": { + "client": { + "realm-management": [ + "manage-authorization", + "query-realms", + "view-authorization", + "manage-events", + "impersonation", + "view-realm", + "manage-users", + "manage-identity-providers", + "query-clients", + "view-events", + "query-groups", + "manage-clients", + "create-client", + "view-users", + "view-clients", + "manage-realm", + "view-identity-providers", + "query-users" + ] + } + }, + "clientRole": true, + "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" + }, + { + "id": "d77bf5a5-5877-450b-b11e-5f874f410e10", + "name": "manage-realm", + "description": "${role_manage-realm}", + "scopeParamRequired": false, + "composite": false, + "clientRole": true, + "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" + }, + { + "id": "d97009ed-d0c7-4afb-b9a3-6ee03ef01a74", + "name": "view-identity-providers", + "description": "${role_view-identity-providers}", + "scopeParamRequired": false, + "composite": false, + "clientRole": true, + "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" + }, + { + "id": "57118202-c5e5-4c49-829b-c2ed796bfdea", + "name": "query-users", + "description": "${role_query-users}", + "scopeParamRequired": false, + "composite": false, + "clientRole": true, + "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" + } + ], + "security-admin-console": [], + "android": [], + "admin-cli": [ + { + "id": "30ab6b4f-b17c-4fff-a5fa-1181686bb409", + "name": "admin", + "description": "admin role", + "scopeParamRequired": false, + "composite": true, + "composites": { + "realm": [ + "offline_access", + "admin", + "uma_authorization" + ] + }, + "clientRole": true, + "containerId": "8891d8e9-35e6-4a1c-b32b-027be03b0f24" + } + ], + "trampoline": [], + "broker": [ + { + "id": "19ef58ac-2d90-40a4-a158-0e2f8893264a", + "name": "read-token", + "description": "${role_read-token}", + "scopeParamRequired": false, + "composite": false, + "clientRole": true, + "containerId": "c3950efa-6684-44c2-b50a-c7b3d16df04b" + } + ], + "portal": [], + "account": [ + { + "id": "1fef7ac5-b042-462b-8298-0446044788b3", + "name": "manage-account", + "description": "${role_manage-account}", + "scopeParamRequired": false, + "composite": true, + "composites": { + "client": { + "account": [ + "manage-account-links" + ] + } + }, + "clientRole": true, + "containerId": "c2d24d3f-65ca-46de-9cd8-3eeb71a7f83d" + }, + { + "id": "f8786348-6fa4-4b13-828e-9f080c9c6824", + "name": "manage-account-links", + "description": "${role_manage-account-links}", + "scopeParamRequired": false, + "composite": false, + "clientRole": true, + "containerId": "c2d24d3f-65ca-46de-9cd8-3eeb71a7f83d" + }, + { + "id": "91c5c738-9c39-4c4d-bae8-75f18fd7c5e4", + "name": "view-profile", + "description": "${role_view-profile}", + "scopeParamRequired": false, + "composite": false, + "clientRole": true, + "containerId": "c2d24d3f-65ca-46de-9cd8-3eeb71a7f83d" + } + ], + "google-auth": [] + } + }, + "groups": [], + "defaultRoles": [ + "offline_access", + "uma_authorization" + ], + "requiredCredentials": [ + "password" + ], + "passwordPolicy": "hashIterations(20000)", + "otpPolicyType": "totp", + "otpPolicyAlgorithm": "HmacSHA1", + "otpPolicyInitialCounter": 0, + "otpPolicyDigits": 6, + "otpPolicyLookAheadWindow": 1, + "otpPolicyPeriod": 120, + "clientScopeMappings": { + "realm-management": [ + { + "client": "admin-cli", + "roles": [ + "realm-admin" + ] + }, + { + "client": "security-admin-console", + "roles": [ + "realm-admin" + ] + } + ] + }, + "clients": [ + { + "id": "9a901d18-377b-4615-9b89-677b544be3c5", + "clientId": "trampoline", + "rootUrl": "{{proto}}://{{proxy_server_name}}", + "adminUrl": "", + "baseUrl": "/", + "surrogateAuthRequired": false, + "enabled": true, + "clientAuthenticatorType": "client-secret", + "secret": "{{sunbird_trampoline_secret}}", + "redirectUris": [], + "webOrigins": [], + "notBefore": 0, + "bearerOnly": false, + "consentRequired": false, + "standardFlowEnabled": false, + "implicitFlowEnabled": false, + "directAccessGrantsEnabled": true, + "serviceAccountsEnabled": false, + "publicClient": false, + "frontchannelLogout": false, + "protocol": "openid-connect", + "attributes": { + "saml.assertion.signature": "false", + "saml.force.post.binding": "false", + "saml.multivalued.roles": "false", + "saml.encrypt": "false", + "saml_force_name_id_format": "false", + "saml.client.signature": "false", + "saml.authnstatement": "false", + "saml.server.signature": "false", + "saml.server.signature.keyinfo.ext": "false", + "saml.onetimeuse.condition": "false" + }, + "fullScopeAllowed": true, + "nodeReRegistrationTimeout": -1, + "protocolMappers": [ + { + "id": "12134027-94cc-401c-bbf6-be565078ddfb", + "name": "role list", + "protocol": "saml", + "protocolMapper": "saml-role-list-mapper", + "consentRequired": false, + "config": { + "single": "false", + "attribute.nameformat": "Basic", + "attribute.name": "Role" + } + }, + { + "id": "6a956bf1-6c40-4549-b335-9fe8c788b18f", + "name": "family name", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${familyName}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "lastName", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "family_name", + "jsonType.label": "String" + } + }, + { + "id": "d32ba1d4-3fef-42ff-aa2b-98cb4bfef6f9", + "name": "full name", + "protocol": "openid-connect", + "protocolMapper": "oidc-full-name-mapper", + "consentRequired": true, + "consentText": "${fullName}", + "config": { + "id.token.claim": "true", + "access.token.claim": "true", + "userinfo.token.claim": "true" + } + }, + { + "id": "9e899fc7-1ddd-447d-810c-d91333d6621c", + "name": "username", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${username}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "username", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "preferred_username", + "jsonType.label": "String" + } + }, + { + "id": "74e4d13f-bd02-4f17-bbbc-d4b79bab1971", + "name": "email", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${email}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "email", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "email", + "jsonType.label": "String" + } + }, + { + "id": "48fe23c2-a6fb-4c5e-8930-28ad1913829a", + "name": "given name", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${givenName}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "firstName", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "given_name", + "jsonType.label": "String" + } + } + ], + "useTemplateConfig": false, + "useTemplateScope": false, + "useTemplateMappers": false + }, + { + "id": "da893beb-6ac7-420d-b51b-f05dadf56bbc", + "clientId": "android", + "rootUrl": "{{proto}}://{{proxy_server_name}}", + "baseUrl": "/", + "surrogateAuthRequired": false, + "enabled": true, + "clientAuthenticatorType": "client-secret", + "secret": "", + "redirectUris": ["{{proto}}://{{proxy_server_name}}/oauth2callback"], + "webOrigins": [], + "notBefore": 0, + "bearerOnly": false, + "consentRequired": false, + "standardFlowEnabled": true, + "implicitFlowEnabled": false, + "directAccessGrantsEnabled": true, + "serviceAccountsEnabled": false, + "publicClient": true, + "frontchannelLogout": false, + "protocol": "openid-connect", + "attributes": { + "saml.assertion.signature": "false", + "saml.force.post.binding": "false", + "saml.multivalued.roles": "false", + "saml.encrypt": "false", + "saml_force_name_id_format": "false", + "saml.client.signature": "false", + "saml.authnstatement": "false", + "saml.server.signature": "false", + "saml.server.signature.keyinfo.ext": "false", + "saml.onetimeuse.condition": "false" + }, + "fullScopeAllowed": true, + "nodeReRegistrationTimeout": -1, + "protocolMappers": [ + { + "id": "ff7dac46-16b4-4ab6-a054-dd03d5411fa9", + "name": "role list", + "protocol": "saml", + "protocolMapper": "saml-role-list-mapper", + "consentRequired": false, + "config": { + "single": "false", + "attribute.nameformat": "Basic", + "attribute.name": "Role" + } + }, + { + "id": "32fad9c0-0dfe-45b2-94a1-3e2f74d756ec", + "name": "family name", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${familyName}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "lastName", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "family_name", + "jsonType.label": "String" + } + }, + { + "id": "4fb4d644-c609-4a27-a407-d451bcd83e16", + "name": "given name", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${givenName}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "firstName", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "given_name", + "jsonType.label": "String" + } + }, + { + "id": "84e7c6e5-1afb-44d8-b507-1ed31fa0f351", + "name": "email", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${email}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "email", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "email", + "jsonType.label": "String" + } + }, + { + "id": "e7ca189f-94de-4996-a192-e93ba960bbba", + "name": "full name", + "protocol": "openid-connect", + "protocolMapper": "oidc-full-name-mapper", + "consentRequired": true, + "consentText": "${fullName}", + "config": { + "id.token.claim": "true", + "access.token.claim": "true", + "userinfo.token.claim": "true" + } + }, + { + "id": "16bedb3b-7571-4106-9a47-66151915ac31", + "name": "username", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${username}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "username", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "preferred_username", + "jsonType.label": "String" + } + } + ], + "useTemplateConfig": false, + "useTemplateScope": false, + "useTemplateMappers": false + }, + { + "id": "647aa742-d849-41d2-b174-c06b59e6d5b6", + "clientId": "google-auth", + "rootUrl": "{{proto}}://{{proxy_server_name}}", + "adminUrl": "", + "baseUrl": "/", + "surrogateAuthRequired": false, + "enabled": true, + "clientAuthenticatorType": "client-secret", + "secret": "", + "redirectUris": ["{{proto}}://{{proxy_server_name}}/private/*"], + "webOrigins": [], + "notBefore": 0, + "bearerOnly": false, + "consentRequired": false, + "standardFlowEnabled": false, + "implicitFlowEnabled": false, + "directAccessGrantsEnabled": true, + "serviceAccountsEnabled": false, + "publicClient": false, + "frontchannelLogout": false, + "protocol": "openid-connect", + "attributes": { + "saml.assertion.signature": "false", + "saml.force.post.binding": "false", + "saml.multivalued.roles": "false", + "saml.encrypt": "false", + "saml_force_name_id_format": "false", + "saml.client.signature": "false", + "saml.authnstatement": "false", + "saml.server.signature": "false", + "saml.server.signature.keyinfo.ext": "false", + "saml.onetimeuse.condition": "false" + }, + "fullScopeAllowed": true, + "nodeReRegistrationTimeout": -1, + "protocolMappers": [ + { + "id": "4b3632c9-8055-4f9f-9702-3c975d93bf8d", + "name": "full name", + "protocol": "openid-connect", + "protocolMapper": "oidc-full-name-mapper", + "consentRequired": true, + "consentText": "${fullName}", + "config": { + "id.token.claim": "true", + "access.token.claim": "true", + "userinfo.token.claim": "true" + } + }, + { + "id": "bdb4cdf5-0ee5-475b-bb47-25a5f90f1305", + "name": "username", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${username}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "username", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "preferred_username", + "jsonType.label": "String" + } + }, + { + "id": "702df96e-686f-4b68-bafd-1cb820fff7fb", + "name": "family name", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${familyName}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "lastName", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "family_name", + "jsonType.label": "String" + } + }, + { + "id": "03617f2e-6b45-4844-a81c-0df09ea89988", + "name": "role list", + "protocol": "saml", + "protocolMapper": "saml-role-list-mapper", + "consentRequired": false, + "config": { + "single": "false", + "attribute.nameformat": "Basic", + "attribute.name": "Role" + } + }, + { + "id": "b38527eb-dbed-4868-8075-69038ee3072a", + "name": "given name", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${givenName}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "firstName", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "given_name", + "jsonType.label": "String" + } + }, + { + "id": "93b57ddf-9f32-4c0e-95eb-258ad19693db", + "name": "email", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${email}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "email", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "email", + "jsonType.label": "String" + } + } + ], + "useTemplateConfig": false, + "useTemplateScope": false, + "useTemplateMappers": false + }, + { + "id": "8891d8e9-35e6-4a1c-b32b-027be03b0f24", + "clientId": "admin-cli", + "name": "${client_admin-cli}", + "rootUrl": "{{proto}}://{{proxy_server_name}}", + "adminUrl": "{{proto}}://{{proxy_server_name}}/*", + "baseUrl": "/", + "surrogateAuthRequired": false, + "enabled": true, + "clientAuthenticatorType": "client-secret", + "secret": "", + "redirectUris": [ + "{{proto}}://{{proxy_server_name}}/*", + "{{proto}}://{{proxy_server_name}}/" + ], + "webOrigins": [], + "notBefore": 0, + "bearerOnly": false, + "consentRequired": false, + "standardFlowEnabled": false, + "implicitFlowEnabled": true, + "directAccessGrantsEnabled": true, + "serviceAccountsEnabled": false, + "publicClient": true, + "frontchannelLogout": false, + "protocol": "openid-connect", + "attributes": { + "saml.assertion.signature": "false", + "saml.force.post.binding": "false", + "saml.multivalued.roles": "false", + "saml.encrypt": "false", + "saml_force_name_id_format": "false", + "saml.client.signature": "false", + "saml.authnstatement": "false", + "saml.server.signature": "false", + "saml.server.signature.keyinfo.ext": "false", + "saml.onetimeuse.condition": "false" + }, + "fullScopeAllowed": false, + "nodeReRegistrationTimeout": 0, + "protocolMappers": [ + { + "id": "32d6a3a4-8635-4a36-bd14-8ac5b73a49cc", + "name": "full name", + "protocol": "openid-connect", + "protocolMapper": "oidc-full-name-mapper", + "consentRequired": true, + "consentText": "${fullName}", + "config": { + "id.token.claim": "true", + "access.token.claim": "true", + "userinfo.token.claim": "true" + } + }, + { + "id": "900fa741-d1b2-467e-88a6-b454a9519568", + "name": "given name", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${givenName}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "firstName", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "given_name", + "jsonType.label": "String" + } + }, + { + "id": "8ea14714-d160-49b8-b612-59102d50ef53", + "name": "family name", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${familyName}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "lastName", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "family_name", + "jsonType.label": "String" + } + }, + { + "id": "bd167b99-5d23-49c1-90c7-85c2b088fed7", + "name": "role list", + "protocol": "saml", + "protocolMapper": "saml-role-list-mapper", + "consentRequired": false, + "config": { + "single": "false", + "attribute.nameformat": "Basic", + "attribute.name": "Role" + } + }, + { + "id": "c4fe56a1-8d15-455a-b87b-cf051454b57c", + "name": "username", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${username}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "username", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "preferred_username", + "jsonType.label": "String" + } + }, + { + "id": "26e3bf4c-8f9a-4548-b0db-5bbb7c398991", + "name": "email", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${email}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "email", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "email", + "jsonType.label": "String" + } + } + ], + "useTemplateConfig": false, + "useTemplateScope": false, + "useTemplateMappers": false + }, + { + "id": "c3950efa-6684-44c2-b50a-c7b3d16df04b", + "clientId": "broker", + "name": "${client_broker}", + "surrogateAuthRequired": false, + "enabled": true, + "clientAuthenticatorType": "client-secret", + "secret": "", + "redirectUris": [], + "webOrigins": [], + "notBefore": 0, + "bearerOnly": false, + "consentRequired": false, + "standardFlowEnabled": true, + "implicitFlowEnabled": false, + "directAccessGrantsEnabled": false, + "serviceAccountsEnabled": false, + "publicClient": false, + "frontchannelLogout": false, + "protocol": "openid-connect", + "attributes": {}, + "fullScopeAllowed": false, + "nodeReRegistrationTimeout": 0, + "protocolMappers": [ + { + "id": "54c3bbc3-850b-4636-82d1-ed4f3a46a00a", + "name": "username", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${username}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "username", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "preferred_username", + "jsonType.label": "String" + } + }, + { + "id": "0f0d9b74-c476-4981-a783-dd4bdbe041ec", + "name": "role list", + "protocol": "saml", + "protocolMapper": "saml-role-list-mapper", + "consentRequired": false, + "config": { + "single": "false", + "attribute.nameformat": "Basic", + "attribute.name": "Role" + } + }, + { + "id": "d6f625cc-eac1-49d0-bea5-17e6f9d3860c", + "name": "given name", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${givenName}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "firstName", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "given_name", + "jsonType.label": "String" + } + }, + { + "id": "bbf35056-9bbe-49a0-aefc-2bde2379ccdc", + "name": "family name", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${familyName}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "lastName", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "family_name", + "jsonType.label": "String" + } + }, + { + "id": "38b04951-1043-4dc6-9504-7b0f31ed71a4", + "name": "email", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${email}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "email", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "email", + "jsonType.label": "String" + } + }, + { + "id": "88bb836b-7feb-45eb-b004-fb3be8436908", + "name": "full name", + "protocol": "openid-connect", + "protocolMapper": "oidc-full-name-mapper", + "consentRequired": true, + "consentText": "${fullName}", + "config": { + "id.token.claim": "true", + "access.token.claim": "true", + "userinfo.token.claim": "true" + } + } + ], + "useTemplateConfig": false, + "useTemplateScope": false, + "useTemplateMappers": false + }, + { + "id": "b2f45201-1362-4b10-83c3-207d470f44bf", + "clientId": "realm-management", + "name": "${client_realm-management}", + "surrogateAuthRequired": false, + "enabled": true, + "clientAuthenticatorType": "client-secret", + "secret": "", + "redirectUris": [], + "webOrigins": [], + "notBefore": 0, + "bearerOnly": true, + "consentRequired": false, + "standardFlowEnabled": true, + "implicitFlowEnabled": false, + "directAccessGrantsEnabled": false, + "serviceAccountsEnabled": false, + "authorizationServicesEnabled": true, + "publicClient": false, + "frontchannelLogout": false, + "protocol": "openid-connect", + "attributes": {}, + "fullScopeAllowed": false, + "nodeReRegistrationTimeout": 0, + "protocolMappers": [ + { + "id": "71605238-bf41-400e-8c03-a5d78f54b00b", + "name": "email", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${email}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "email", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "email", + "jsonType.label": "String" + } + }, + { + "id": "a0cb6f3a-30ef-4475-b73f-ca6c2f1f3675", + "name": "given name", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${givenName}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "firstName", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "given_name", + "jsonType.label": "String" + } + }, + { + "id": "3a7708b1-63b9-4116-af7f-969fc1bf61a4", + "name": "role list", + "protocol": "saml", + "protocolMapper": "saml-role-list-mapper", + "consentRequired": false, + "config": { + "single": "false", + "attribute.nameformat": "Basic", + "attribute.name": "Role" + } + }, + { + "id": "c393d7b7-fa22-4e90-9ad7-07d520632c20", + "name": "username", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${username}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "username", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "preferred_username", + "jsonType.label": "String" + } + }, + { + "id": "e77aae69-8ea4-4ee4-bcd6-ba7ef3958c02", + "name": "full name", + "protocol": "openid-connect", + "protocolMapper": "oidc-full-name-mapper", + "consentRequired": true, + "consentText": "${fullName}", + "config": { + "id.token.claim": "true", + "access.token.claim": "true", + "userinfo.token.claim": "true" + } + }, + { + "id": "2d8cbac4-e4dd-4fa6-bf71-98adf826b9dd", + "name": "family name", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${familyName}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "lastName", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "family_name", + "jsonType.label": "String" + } + } + ], + "useTemplateConfig": false, + "useTemplateScope": false, + "useTemplateMappers": false, + "authorizationSettings": { + "allowRemoteResourceManagement": false, + "policyEnforcementMode": "ENFORCING", + "resources": [ + { + "name": "role.resource.30ab6b4f-b17c-4fff-a5fa-1181686bb409", + "type": "Role", + "scopes": [ + { + "name": "map-role-composite" + }, + { + "name": "map-role-client-scope" + }, + { + "name": "map-role" + } + ], + "typedScopes": [] + }, + { + "name": "role.resource.d6e505fe-c3c5-4689-946e-7f69d3f64c6c", + "type": "Role", + "scopes": [ + { + "name": "map-role-composite" + }, + { + "name": "map-role-client-scope" + }, + { + "name": "map-role" + } + ], + "typedScopes": [] + } + ], + "policies": [ + { + "name": "map-role-composite.permission.30ab6b4f-b17c-4fff-a5fa-1181686bb409", + "type": "scope", + "logic": "POSITIVE", + "decisionStrategy": "AFFIRMATIVE", + "config": { + "resources": "[\"role.resource.30ab6b4f-b17c-4fff-a5fa-1181686bb409\"]", + "scopes": "[\"map-role-composite\"]" + } + }, + { + "name": "map-role-client-scope.permission.30ab6b4f-b17c-4fff-a5fa-1181686bb409", + "type": "scope", + "logic": "POSITIVE", + "decisionStrategy": "AFFIRMATIVE", + "config": { + "resources": "[\"role.resource.30ab6b4f-b17c-4fff-a5fa-1181686bb409\"]", + "scopes": "[\"map-role-client-scope\"]" + } + }, + { + "name": "map-role.permission.30ab6b4f-b17c-4fff-a5fa-1181686bb409", + "type": "scope", + "logic": "POSITIVE", + "decisionStrategy": "AFFIRMATIVE", + "config": { + "resources": "[\"role.resource.30ab6b4f-b17c-4fff-a5fa-1181686bb409\"]", + "scopes": "[\"map-role\"]" + } + }, + { + "name": "map-role-composite.permission.d6e505fe-c3c5-4689-946e-7f69d3f64c6c", + "type": "scope", + "logic": "POSITIVE", + "decisionStrategy": "AFFIRMATIVE", + "config": { + "resources": "[\"role.resource.d6e505fe-c3c5-4689-946e-7f69d3f64c6c\"]", + "scopes": "[\"map-role-composite\"]" + } + }, + { + "name": "map-role-client-scope.permission.d6e505fe-c3c5-4689-946e-7f69d3f64c6c", + "type": "scope", + "logic": "POSITIVE", + "decisionStrategy": "AFFIRMATIVE", + "config": { + "resources": "[\"role.resource.d6e505fe-c3c5-4689-946e-7f69d3f64c6c\"]", + "scopes": "[\"map-role-client-scope\"]" + } + }, + { + "name": "map-role.permission.d6e505fe-c3c5-4689-946e-7f69d3f64c6c", + "type": "scope", + "logic": "POSITIVE", + "decisionStrategy": "AFFIRMATIVE", + "config": { + "resources": "[\"role.resource.d6e505fe-c3c5-4689-946e-7f69d3f64c6c\"]", + "scopes": "[\"map-role\"]" + } + } + ], + "scopes": [ + { + "name": "map-role-composite" + }, + { + "name": "map-role-client-scope" + }, + { + "name": "map-role" + } + ] + } + }, + { + "id": "8c12290d-d62f-48ce-913b-c93bf995ca59", + "clientId": "portal", + "rootUrl": "{{proto}}://{{proxy_server_name}}", + "adminUrl": "/callback", + "baseUrl": "/", + "surrogateAuthRequired": false, + "enabled": true, + "clientAuthenticatorType": "client-secret", + "secret": "", + "redirectUris": ["{{proto}}://{{proxy_server_name}}/private/*", "{{proto}}://{{proxy_server_name}}/","{{proto}}://{{proxy_server_name}}/*"], + "webOrigins": [ + "" + ], + "notBefore": 0, + "bearerOnly": false, + "consentRequired": false, + "standardFlowEnabled": true, + "implicitFlowEnabled": false, + "directAccessGrantsEnabled": false, + "serviceAccountsEnabled": false, + "publicClient": true, + "frontchannelLogout": false, + "protocol": "openid-connect", + "attributes": { + "saml.assertion.signature": "false", + "saml.force.post.binding": "false", + "saml.multivalued.roles": "false", + "saml.encrypt": "false", + "saml_force_name_id_format": "false", + "saml.client.signature": "false", + "saml.authnstatement": "false", + "saml.server.signature": "false", + "saml.server.signature.keyinfo.ext": "false", + "saml.onetimeuse.condition": "false" + }, + "fullScopeAllowed": true, + "nodeReRegistrationTimeout": -1, + "protocolMappers": [ + { + "id": "63071ff2-a5e5-4d38-b534-a9f25a075403", + "name": "full name", + "protocol": "openid-connect", + "protocolMapper": "oidc-full-name-mapper", + "consentRequired": true, + "consentText": "${fullName}", + "config": { + "id.token.claim": "true", + "access.token.claim": "true", + "userinfo.token.claim": "true" + } + }, + { + "id": "9bf9cad5-dbce-41e9-aa36-d84cc5a768a2", + "name": "username", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${username}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "username", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "preferred_username", + "jsonType.label": "String" + } + }, + { + "id": "238e55b7-6545-467e-856b-f95477afe1ff", + "name": "role list", + "protocol": "saml", + "protocolMapper": "saml-role-list-mapper", + "consentRequired": false, + "config": { + "single": "false", + "attribute.nameformat": "Basic", + "attribute.name": "Role" + } + }, + { + "id": "edb1ff4e-b452-46bc-8c3b-d6075f6ee579", + "name": "family name", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${familyName}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "lastName", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "family_name", + "jsonType.label": "String" + } + }, + { + "id": "7a0118e2-57ff-4d23-bf74-cbfe1f545d1d", + "name": "given name", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${givenName}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "firstName", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "given_name", + "jsonType.label": "String" + } + }, + { + "id": "b59a913e-118a-4dc4-a8d7-66c44ced5345", + "name": "email", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${email}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "email", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "email", + "jsonType.label": "String" + } + } + ], + "useTemplateConfig": false, + "useTemplateScope": false, + "useTemplateMappers": false + }, + { + "id": "79c518d7-b41a-4e6f-be42-4ef365824100", + "clientId": "security-admin-console", + "name": "${client_security-admin-console}", + "baseUrl": "/auth/admin/sunbird/console/index.html", + "surrogateAuthRequired": false, + "enabled": true, + "clientAuthenticatorType": "client-secret", + "secret": "", + "redirectUris": [ + "/auth/admin/sunbird/console/*" + ], + "webOrigins": [], + "notBefore": 0, + "bearerOnly": false, + "consentRequired": false, + "standardFlowEnabled": true, + "implicitFlowEnabled": false, + "directAccessGrantsEnabled": false, + "serviceAccountsEnabled": false, + "publicClient": true, + "frontchannelLogout": false, + "protocol": "openid-connect", + "attributes": {}, + "fullScopeAllowed": false, + "nodeReRegistrationTimeout": 0, + "protocolMappers": [ + { + "id": "c989a8c8-cb8b-40ff-b4b9-86122bad7aa9", + "name": "role list", + "protocol": "saml", + "protocolMapper": "saml-role-list-mapper", + "consentRequired": false, + "config": { + "single": "false", + "attribute.nameformat": "Basic", + "attribute.name": "Role" + } + }, + { + "id": "b180fb8c-997c-4f6a-b774-af677f903139", + "name": "family name", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${familyName}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "lastName", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "family_name", + "jsonType.label": "String" + } + }, + { + "id": "c373dc9a-49d7-4d28-9b94-06cf20fb1955", + "name": "full name", + "protocol": "openid-connect", + "protocolMapper": "oidc-full-name-mapper", + "consentRequired": true, + "consentText": "${fullName}", + "config": { + "id.token.claim": "true", + "access.token.claim": "true", + "userinfo.token.claim": "true" + } + }, + { + "id": "24c7b1c4-62c2-4d92-ab19-49bfaedcc3d4", + "name": "email", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${email}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "email", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "email", + "jsonType.label": "String" + } + }, + { + "id": "883a39a7-37b4-46ef-a761-3e51b95ccc35", + "name": "given name", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${givenName}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "firstName", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "given_name", + "jsonType.label": "String" + } + }, + { + "id": "95ed8e44-38cc-4f09-8adc-19c12d5eada0", + "name": "locale", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-attribute-mapper", + "consentRequired": false, + "consentText": "${locale}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "locale", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "locale", + "jsonType.label": "String" + } + }, + { + "id": "c66c6a41-eb22-443f-8a77-e68d404ad26f", + "name": "username", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${username}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "username", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "preferred_username", + "jsonType.label": "String" + } + } + ], + "useTemplateConfig": false, + "useTemplateScope": false, + "useTemplateMappers": false + }, + { + "id": "c2d24d3f-65ca-46de-9cd8-3eeb71a7f83d", + "clientId": "account", + "name": "${client_account}", + "baseUrl": "/auth/realms/sunbird/account", + "surrogateAuthRequired": false, + "enabled": true, + "clientAuthenticatorType": "client-secret", + "secret": "", + "defaultRoles": [ + "manage-account", + "view-profile" + ], + "redirectUris": [ + "/auth/realms/sunbird/account/*" + ], + "webOrigins": [], + "notBefore": 0, + "bearerOnly": false, + "consentRequired": false, + "standardFlowEnabled": true, + "implicitFlowEnabled": false, + "directAccessGrantsEnabled": false, + "serviceAccountsEnabled": false, + "publicClient": false, + "frontchannelLogout": false, + "protocol": "openid-connect", + "attributes": {}, + "fullScopeAllowed": false, + "nodeReRegistrationTimeout": 0, + "protocolMappers": [ + { + "id": "a64118ab-33c8-4060-9f3e-3ed817ba8e0d", + "name": "role list", + "protocol": "saml", + "protocolMapper": "saml-role-list-mapper", + "consentRequired": false, + "config": { + "single": "false", + "attribute.nameformat": "Basic", + "attribute.name": "Role" + } + }, + { + "id": "1f4a0c5e-7c8a-4693-8be5-14681b243868", + "name": "username", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${username}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "username", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "preferred_username", + "jsonType.label": "String" + } + }, + { + "id": "8d88a133-a399-4e75-b051-5b0d4ae850ab", + "name": "full name", + "protocol": "openid-connect", + "protocolMapper": "oidc-full-name-mapper", + "consentRequired": true, + "consentText": "${fullName}", + "config": { + "id.token.claim": "true", + "access.token.claim": "true", + "userinfo.token.claim": "true" + } + }, + { + "id": "45593258-916c-4158-8577-d9806c16415a", + "name": "email", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${email}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "email", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "email", + "jsonType.label": "String" + } + }, + { + "id": "027be48e-b7dc-4c3a-a648-414a466b67dd", + "name": "family name", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${familyName}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "lastName", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "family_name", + "jsonType.label": "String" + } + }, + { + "id": "c93937f9-0446-4be9-8b47-3c6de857497e", + "name": "given name", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${givenName}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "firstName", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "given_name", + "jsonType.label": "String" + } + } + ], + "useTemplateConfig": false, + "useTemplateScope": false, + "useTemplateMappers": false + } + ], + "clientTemplates": [], + "browserSecurityHeaders": { + "xContentTypeOptions": "nosniff", + "xRobotsTag": "none", + "xFrameOptions": "SAMEORIGIN", + "xXSSProtection": "1; mode=block", + "contentSecurityPolicy": "frame-src 'self'" + }, + "smtpServer": { + "password": "", + "starttls": "", + "auth": "true", + "port": "587", + "host": "", + "from": "", + "ssl": "", + "user": "" + }, + "loginTheme": "sunbird", + "accountTheme": "keycloak", + "adminTheme": "keycloak", + "emailTheme": "keycloak", + "eventsEnabled": false, + "eventsListeners": [ + "jboss-logging" + ], + "enabledEventTypes": [], + "adminEventsEnabled": false, + "adminEventsDetailsEnabled": false, + "components": { + "org.keycloak.services.clientregistration.policy.ClientRegistrationPolicy": [ + { + "id": "84078bbb-e005-44c8-9c7d-a1b4821558da", + "name": "Max Clients Limit", + "providerId": "max-clients", + "subType": "anonymous", + "subComponents": {}, + "config": { + "max-clients": [ + "200" + ] + } + }, + { + "id": "346d857e-4385-4f8f-a2fc-072fd11a10ec", + "name": "Allowed Protocol Mapper Types", + "providerId": "allowed-protocol-mappers", + "subType": "authenticated", + "subComponents": {}, + "config": { + "allowed-protocol-mapper-types": [ + "oidc-full-name-mapper", + "oidc-address-mapper", + "saml-user-property-mapper", + "oidc-usermodel-property-mapper", + "saml-user-attribute-mapper", + "oidc-sha256-pairwise-sub-mapper", + "saml-role-list-mapper", + "oidc-usermodel-attribute-mapper" + ], + "consent-required-for-all-mappers": [ + "true" + ] + } + }, + { + "id": "eed64f9f-4b66-45ad-bdb4-4070e3802366", + "name": "Allowed Client Templates", + "providerId": "allowed-client-templates", + "subType": "authenticated", + "subComponents": {}, + "config": {} + }, + { + "id": "17ac4eaa-9139-4b3a-b1db-c82d44c1531d", + "name": "Allowed Client Templates", + "providerId": "allowed-client-templates", + "subType": "anonymous", + "subComponents": {}, + "config": {} + }, + { + "id": "38532936-be91-40e4-b65d-c0abfaf9547c", + "name": "Full Scope Disabled", + "providerId": "scope", + "subType": "anonymous", + "subComponents": {}, + "config": {} + }, + { + "id": "8c1690a2-6eea-4d61-ab66-7a015e3bea3c", + "name": "Allowed Protocol Mapper Types", + "providerId": "allowed-protocol-mappers", + "subType": "anonymous", + "subComponents": {}, + "config": { + "allowed-protocol-mapper-types": [ + "saml-role-list-mapper", + "oidc-usermodel-attribute-mapper", + "oidc-full-name-mapper", + "oidc-usermodel-property-mapper", + "oidc-address-mapper", + "saml-user-property-mapper", + "saml-user-attribute-mapper", + "oidc-sha256-pairwise-sub-mapper" + ], + "consent-required-for-all-mappers": [ + "true" + ] + } + }, + { + "id": "3dcc314c-07f8-484d-9535-29424dbaddfc", + "name": "Trusted Hosts", + "providerId": "trusted-hosts", + "subType": "anonymous", + "subComponents": {}, + "config": { + "host-sending-registration-request-must-match": [ + "true" + ], + "client-uris-must-match": [ + "true" + ] + } + }, + { + "id": "ab52b781-64b9-42a0-99f5-cbeba6710763", + "name": "Consent Required", + "providerId": "consent-required", + "subType": "anonymous", + "subComponents": {}, + "config": {} + } + ], + "org.keycloak.keys.KeyProvider": [ + { + "id": "bd30c46f-9ee3-443d-9faa-6ed8075aac87", + "name": "rsa-generated", + "providerId": "rsa-generated", + "subComponents": {}, + "config": { + "priority": [ + "100" + ] + } + }, + { + "id": "a93cc73f-b070-48cd-bf08-9b290707c2f5", + "name": "hmac-generated", + "providerId": "hmac-generated", + "subComponents": {}, + "config": { + "priority": [ + "100" + ] + } + } + ] + }, + "internationalizationEnabled": false, + "supportedLocales": [], + "defaultLocale": "en", + "authenticationFlows": [ + { + "id": "976a6147-7a63-48cd-ab6d-ac3a2f0ffa42", + "alias": "Direct Grant 2", + "description": "OpenID Connect Resource Owner Grant", + "providerId": "basic-flow", + "topLevel": true, + "builtIn": false, + "authenticationExecutions": [ + { + "authenticator": "direct-grant-validate-username", + "requirement": "REQUIRED", + "priority": 10, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "authenticator": "direct-grant-validate-password", + "requirement": "DISABLED", + "priority": 20, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "authenticator": "direct-grant-validate-otp", + "requirement": "OPTIONAL", + "priority": 30, + "userSetupAllowed": false, + "autheticatorFlow": false + } + ] + }, + { + "id": "fe01a5ba-9b8b-4211-8a71-273800b0309d", + "alias": "Direct Grant w/o Password", + "description": "Grant user access using only the username and no password.", + "providerId": "basic-flow", + "topLevel": true, + "builtIn": false, + "authenticationExecutions": [] + }, + { + "id": "797d8e90-1fb5-48bc-b6f0-e44766721af0", + "alias": "Handle Existing Account", + "description": "Handle what to do if there is existing account with same email/username like authenticated identity provider", + "providerId": "basic-flow", + "topLevel": false, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "idp-confirm-link", + "requirement": "REQUIRED", + "priority": 10, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "authenticator": "idp-email-verification", + "requirement": "ALTERNATIVE", + "priority": 20, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "requirement": "ALTERNATIVE", + "priority": 30, + "flowAlias": "Verify Existing Account by Re-authentication", + "userSetupAllowed": false, + "autheticatorFlow": true + } + ] + }, + { + "id": "5f70fc7a-42b6-41cd-aaf9-a3837fc05f43", + "alias": "Phone number login", + "description": "browser based authentication", + "providerId": "basic-flow", + "topLevel": true, + "builtIn": false, + "authenticationExecutions": [ + { + "authenticator": "auth-cookie", + "requirement": "ALTERNATIVE", + "priority": 10, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "authenticator": "auth-spnego", + "requirement": "DISABLED", + "priority": 20, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "authenticator": "identity-provider-redirector", + "requirement": "ALTERNATIVE", + "priority": 25, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "requirement": "ALTERNATIVE", + "priority": 30, + "flowAlias": "Phone number login forms", + "userSetupAllowed": false, + "autheticatorFlow": true + } + ] + }, + { + "id": "b886ae3f-e90a-4309-bb05-5367c3ec977b", + "alias": "Phone number login forms", + "description": "Username, password, otp and other auth forms.", + "providerId": "basic-flow", + "topLevel": false, + "builtIn": false, + "authenticationExecutions": [ + { + "authenticator": "auth-phone-password-form", + "requirement": "REQUIRED", + "priority": 20, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "authenticator": "auth-otp-form", + "requirement": "DISABLED", + "priority": 21, + "userSetupAllowed": false, + "autheticatorFlow": false + } + ] + }, + { + "id": "8dc1276b-946b-4c49-97d2-ade016fd9df8", + "alias": "Reset Credentials Via SMS OTP", + "description": "Reset credentials for a user if they forgot their password or something", + "providerId": "basic-flow", + "topLevel": true, + "builtIn": false, + "authenticationExecutions": [ + { + "authenticator": "reset-credentials-choose-user", + "requirement": "REQUIRED", + "priority": 10, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "authenticatorConfig": "Reset Credentials Via SMS OTP", + "authenticator": "sms-authentication", + "requirement": "REQUIRED", + "priority": 20, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "authenticator": "reset-password", + "requirement": "REQUIRED", + "priority": 40, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "authenticator": "reset-otp", + "requirement": "OPTIONAL", + "priority": 41, + "userSetupAllowed": false, + "autheticatorFlow": false + } + ] + }, + { + "id": "14838047-af17-4104-a714-bf51bd0aa699", + "alias": "Verify Existing Account by Re-authentication", + "description": "Reauthentication of existing account", + "providerId": "basic-flow", + "topLevel": false, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "idp-username-password-form", + "requirement": "REQUIRED", + "priority": 10, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "authenticator": "auth-otp-form", + "requirement": "OPTIONAL", + "priority": 20, + "userSetupAllowed": false, + "autheticatorFlow": false + } + ] + }, + { + "id": "7ab0a65d-641e-4ba0-8793-35e363ba8362", + "alias": "browser", + "description": "browser based authentication", + "providerId": "basic-flow", + "topLevel": true, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "auth-cookie", + "requirement": "ALTERNATIVE", + "priority": 10, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "authenticator": "auth-spnego", + "requirement": "DISABLED", + "priority": 20, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "authenticator": "identity-provider-redirector", + "requirement": "ALTERNATIVE", + "priority": 25, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "requirement": "ALTERNATIVE", + "priority": 30, + "flowAlias": "forms", + "userSetupAllowed": false, + "autheticatorFlow": true + } + ] + }, + { + "id": "b2aedbfb-9432-4f47-8114-c6031c884b5f", + "alias": "clients", + "description": "Base authentication for clients", + "providerId": "client-flow", + "topLevel": true, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "client-secret", + "requirement": "ALTERNATIVE", + "priority": 10, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "authenticator": "client-jwt", + "requirement": "ALTERNATIVE", + "priority": 20, + "userSetupAllowed": false, + "autheticatorFlow": false + } + ] + }, + { + "id": "78809b88-19c3-4351-ac1a-e1c43dd71143", + "alias": "direct grant", + "description": "OpenID Connect Resource Owner Grant", + "providerId": "basic-flow", + "topLevel": true, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "direct-grant-validate-username", + "requirement": "REQUIRED", + "priority": 10, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "authenticator": "direct-grant-validate-password", + "requirement": "DISABLED", + "priority": 20, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "authenticator": "direct-grant-validate-otp", + "requirement": "OPTIONAL", + "priority": 30, + "userSetupAllowed": false, + "autheticatorFlow": false + } + ] + }, + { + "id": "025a77cf-895a-4622-95a0-fdd9912aeb9a", + "alias": "docker auth", + "description": "Used by Docker clients to authenticate against the IDP", + "providerId": "basic-flow", + "topLevel": true, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "docker-http-basic-authenticator", + "requirement": "REQUIRED", + "priority": 10, + "userSetupAllowed": false, + "autheticatorFlow": false + } + ] + }, + { + "id": "1ea8d8e5-7997-43d0-9ce4-0ec187d9c5be", + "alias": "first broker login", + "description": "Actions taken after first broker login with identity provider account, which is not yet linked to any Keycloak account", + "providerId": "basic-flow", + "topLevel": true, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticatorConfig": "review profile config", + "authenticator": "idp-review-profile", + "requirement": "REQUIRED", + "priority": 10, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "authenticatorConfig": "create unique user config", + "authenticator": "idp-create-user-if-unique", + "requirement": "ALTERNATIVE", + "priority": 20, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "requirement": "ALTERNATIVE", + "priority": 30, + "flowAlias": "Handle Existing Account", + "userSetupAllowed": false, + "autheticatorFlow": true + } + ] + }, + { + "id": "5ae10869-08a5-489b-97c6-b6f65a40de21", + "alias": "forms", + "description": "Username, password, otp and other auth forms.", + "providerId": "basic-flow", + "topLevel": false, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "auth-username-password-form", + "requirement": "REQUIRED", + "priority": 10, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "authenticator": "auth-otp-form", + "requirement": "OPTIONAL", + "priority": 20, + "userSetupAllowed": false, + "autheticatorFlow": false + } + ] + }, + { + "id": "1be582c9-b469-4092-82d4-365fb6d02963", + "alias": "registration", + "description": "registration flow", + "providerId": "basic-flow", + "topLevel": true, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "registration-page-form", + "requirement": "REQUIRED", + "priority": 10, + "flowAlias": "registration form", + "userSetupAllowed": false, + "autheticatorFlow": true + } + ] + }, + { + "id": "e71bd4ef-a33e-4a75-a8fc-8cfaf6a1119b", + "alias": "registration form", + "description": "registration form", + "providerId": "form-flow", + "topLevel": false, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "registration-user-creation", + "requirement": "REQUIRED", + "priority": 20, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "authenticator": "registration-profile-action", + "requirement": "REQUIRED", + "priority": 40, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "authenticator": "registration-password-action", + "requirement": "REQUIRED", + "priority": 50, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "authenticator": "registration-recaptcha-action", + "requirement": "DISABLED", + "priority": 60, + "userSetupAllowed": false, + "autheticatorFlow": false + } + ] + }, + { + "id": "6c4e8128-0eb4-4303-bbec-3e5baec31022", + "alias": "reset credentials", + "description": "Reset credentials for a user if they forgot their password or something", + "providerId": "basic-flow", + "topLevel": true, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "reset-credentials-choose-user", + "requirement": "REQUIRED", + "priority": 10, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "authenticator": "reset-credential-email", + "requirement": "REQUIRED", + "priority": 20, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "authenticator": "reset-password", + "requirement": "REQUIRED", + "priority": 30, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "authenticator": "reset-otp", + "requirement": "OPTIONAL", + "priority": 40, + "userSetupAllowed": false, + "autheticatorFlow": false + } + ] + }, + { + "id": "ec7bae86-99e4-403a-a041-1039bacba45e", + "alias": "saml ecp", + "description": "SAML ECP Profile Authentication Flow", + "providerId": "basic-flow", + "topLevel": true, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "http-basic-authenticator", + "requirement": "REQUIRED", + "priority": 10, + "userSetupAllowed": false, + "autheticatorFlow": false + } + ] + } + ], + "authenticatorConfig": [ + { + "id": "7d7aa155-54cd-4b62-bc7f-558ce934e0a5", + "alias": "Reset Credentials Via SMS OTP", + "config": { + "sms-auth.code.length": "6", + "sms-auth.msg.text": "Reset your password on PREPROD with the OTP %sms-code%. The OTP is valid for 5 minutes.", + "sms-auth.code.ttl": "300" + } + }, + { + "id": "cc029554-f8bc-49c2-81cc-f0f7141bf178", + "alias": "create unique user config", + "config": { + "require.password.update.after.registration": "false" + } + }, + { + "id": "6a2402e1-b718-43a0-9b65-2a7b62d3b935", + "alias": "review profile config", + "config": { + "update.profile.on.first.login": "missing" + } + } + ], + "requiredActions": [ + { + "alias": "CONFIGURE_TOTP", + "name": "Configure OTP", + "providerId": "CONFIGURE_TOTP", + "enabled": true, + "defaultAction": false, + "config": {} + }, + { + "alias": "UPDATE_PASSWORD", + "name": "Update Password", + "providerId": "UPDATE_PASSWORD", + "enabled": true, + "defaultAction": false, + "config": {} + }, + { + "alias": "UPDATE_PROFILE", + "name": "Update Profile", + "providerId": "UPDATE_PROFILE", + "enabled": true, + "defaultAction": false, + "config": {} + }, + { + "alias": "VERIFY_EMAIL", + "name": "Verify Email", + "providerId": "VERIFY_EMAIL", + "enabled": true, + "defaultAction": false, + "config": {} + }, + { + "alias": "terms_and_conditions", + "name": "Terms and Conditions", + "providerId": "terms_and_conditions", + "enabled": true, + "defaultAction": false, + "config": {} + } + ], + "browserFlow": "Phone number login", + "registrationFlow": "registration", + "directGrantFlow": "Direct Grant 2", + "resetCredentialsFlow": "Reset Credentials Via SMS OTP", + "clientAuthenticationFlow": "clients", + "dockerAuthenticationFlow": "docker auth", + "attributes": { + "_browser_header.xXSSProtection": "1; mode=block", + "_browser_header.xFrameOptions": "SAMEORIGIN", + "quickLoginCheckMilliSeconds": "1000", + "permanentLockout": "false", + "_browser_header.xRobotsTag": "none", + "maxFailureWaitSeconds": "900", + "minimumQuickLoginWaitSeconds": "60", + "failureFactor": "30", + "actionTokenGeneratedByUserLifespan": "300", + "maxDeltaTimeSeconds": "43200", + "_browser_header.xContentTypeOptions": "nosniff", + "actionTokenGeneratedByAdminLifespan": "43200", + "bruteForceProtected": "true", + "_browser_header.contentSecurityPolicy": "frame-src 'self'", + "waitIncrementSeconds": "60" + }, + "keycloakVersion": "3.2.0.Final" +} \ No newline at end of file diff --git a/ansible/roles/sunbird-auth-deploy/templates/module.xml.j2 b/ansible/roles/sunbird-auth-deploy/templates/module.xml.j2 new file mode 100644 index 0000000000..bcfe36a406 --- /dev/null +++ b/ansible/roles/sunbird-auth-deploy/templates/module.xml.j2 @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/ansible/roles/sunbird-auth-deploy/templates/standalone-ha.xml b/ansible/roles/sunbird-auth-deploy/templates/standalone-ha.xml new file mode 100644 index 0000000000..c774e2c0f4 --- /dev/null +++ b/ansible/roles/sunbird-auth-deploy/templates/standalone-ha.xml @@ -0,0 +1,571 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + jdbc:h2:mem:test;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE + h2 + + sa + sa + + + + jdbc:h2:${jboss.server.data.dir}/keycloak;AUTO_SERVER=TRUE + h2 + + sa + sa + + + + + jdbc:postgresql://thisnotwork:5432/keycloak + jdbc:postgresql://{{keycloak_postgres_host}}:5432/{{ keycloak_postgres_database }}?sslmode=require + postgresql + + 20 + + + {{ keycloak_postgres_user }} + {{ keycloak_postgres_password }} + + + true + 10000 + + + + + + + org.h2.jdbcx.JdbcDataSource + + + org.postgresql.xa.PGXADataSource + org.postgresql.ds.PGPoolingDataSource + + + + + + + + + false + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {{groups['keycloak']|join('[7600],')}}[7600] + + 10 + 3000 + 2 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + auth + + classpath:${jboss.home.dir}/providers/* + + master + 900 + + 2592000 + true + true + ${jboss.home.dir}/themes + + + + + + + + + + + + + jpa + + + basic + + + + + + + + + + + + + + + + + + + default + + + + + + + + ${keycloak.jta.lookup.provider:jboss} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ansible/roles/sunbird-auth-deploy/templates/standalone.xml b/ansible/roles/sunbird-auth-deploy/templates/standalone.xml new file mode 100644 index 0000000000..c1959c7f25 --- /dev/null +++ b/ansible/roles/sunbird-auth-deploy/templates/standalone.xml @@ -0,0 +1,471 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + jdbc:h2:mem:test;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE + h2 + + sa + sa + + + + jdbc:h2:${jboss.server.data.dir}/keycloak;AUTO_SERVER=TRUE + h2 + + sa + sa + + + + + org.h2.jdbcx.JdbcDataSource + + + + + + + + + false + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + auth + + classpath:${jboss.home.dir}/providers/* + + master + 900 + + 2592000 + true + true + ${jboss.home.dir}/themes + + + + + + + + + + + + + jpa + + + basic + + + + + + + + + + + + + + + + + + + default + + + + + + + + ${keycloak.jta.lookup.provider:jboss} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ansible/roles/sunbird-auth-provision/defaults/main.yml b/ansible/roles/sunbird-auth-provision/defaults/main.yml new file mode 100644 index 0000000000..f43f6e1b42 --- /dev/null +++ b/ansible/roles/sunbird-auth-provision/defaults/main.yml @@ -0,0 +1,10 @@ +--- +sunbird_auth_version: 1.0v +keycloak_pkg_src: https://downloads.jboss.org/keycloak/3.2.0.Final/keycloak-3.2.0.Final.tar.gz +postgresql_driver_src: https://jdbc.postgresql.org/download/postgresql-9.4.1212.jar +keycloak_pkg_file: "keycloak-3.2.0.Final.tar.gz" +keycloak_sms_provider_build: "keycloak-email-phone-autthenticator-1.0-SNAPSHOT.jar" +wildfly_group: keycloak +wildfly_user: keycloak +wildfly_dir: /opt/keycloak +keycloak_home: /opt/keycloak diff --git a/ansible/roles/sunbird-auth-provision/tasks/install-keycloak.yml b/ansible/roles/sunbird-auth-provision/tasks/install-keycloak.yml new file mode 100644 index 0000000000..9dd5e22540 --- /dev/null +++ b/ansible/roles/sunbird-auth-provision/tasks/install-keycloak.yml @@ -0,0 +1,51 @@ +- stat: + path: /etc/init.d/keycloak + register: keycloak_service + +- name: status service + become: yes + command: /etc/init.d/keycloak status + register: keycloak + poll: 5 + async: 10 + when: keycloak_service.stat.islnk is defined + +- name: stop service + become: yes + command: /etc/init.d/keycloak stop && Pkill keycloak + when: "keycloak.stdout.find('running') != -1" + poll: 5 + async: 10 + ignore_errors: yes + when: keycloak_service.stat.islnk is defined + +- name: remove sunbird auth package + become: yes + file: path="{{keycloak_home}}" state=absent + ignore_errors: yes + +- name: change build script permissions + become: yes + file: path=/opt owner={{wildfly_user}} group={{wildfly_group}} mode=0755 recurse=yes + +- name: Paste sunbird auth package on server + copy: src="sunbird_auth_{{sunbird_auth_version}}.zip" dest="/opt/" force=no owner={{wildfly_user}} group={{wildfly_group}} + +- name: extarct the folder + unarchive: src="/opt/sunbird_auth_{{sunbird_auth_version}}.zip" dest=/opt/ copy=no owner={{wildfly_user}} group={{wildfly_group}} + +- name: move the folder name + command: mv sunbird_auth_{{sunbird_auth_version}} keycloak + args: + chdir: /opt + +- name: remove the sunbird_auth_{{sunbird_auth_version}} + become: yes + file: path=/opt/sunbird_auth_{{sunbird_auth_version}} state=absent + +- name: start service + become: yes + command: /etc/init.d/keycloak start + poll: 5 + async: 5 + when: keycloak_service.stat.islnk is defined diff --git a/ansible/roles/sunbird-auth-provision/tasks/main.yml b/ansible/roles/sunbird-auth-provision/tasks/main.yml new file mode 100644 index 0000000000..be0290407a --- /dev/null +++ b/ansible/roles/sunbird-auth-provision/tasks/main.yml @@ -0,0 +1,3 @@ +- include: prerequisite.yml + +- include: install-keycloak.yml diff --git a/ansible/roles/sunbird-auth-provision/tasks/prerequisite.yml b/ansible/roles/sunbird-auth-provision/tasks/prerequisite.yml new file mode 100644 index 0000000000..235cd386f1 --- /dev/null +++ b/ansible/roles/sunbird-auth-provision/tasks/prerequisite.yml @@ -0,0 +1,11 @@ +--- +- name: Add group + group: name="{{ wildfly_group }}" state=present + become: true + +- name: Create user + user: name="{{ wildfly_user }}" group="{{ wildfly_group }}" shell=/bin/bash createhome=yes update_password=always + become: true + +- name: Copy service file to init.d + template: src=roles/sunbird-auth-provision/templates/keycloak-service.j2 dest=/etc/init.d/keycloak mode=0755 diff --git a/ansible/roles/sunbird-auth-provision/templates/keycloak-service.j2 b/ansible/roles/sunbird-auth-provision/templates/keycloak-service.j2 new file mode 100644 index 0000000000..f3549f89b2 --- /dev/null +++ b/ansible/roles/sunbird-auth-provision/templates/keycloak-service.j2 @@ -0,0 +1,117 @@ +#!/bin/bash +keycloakuser=keycloak +keycloakpath=/opt/keycloak/bin + +# Normal output log +LOGOUT=/var/log/keycloak.out.log +# Error output log +LOGERR=/var/log/keycloak.err.log + +## script start here + + +function echo_failure() { echo -en "\n[FAILED]"; } +function echo_success() { echo -en "\n[OK]"; } +[ -f /etc/rc.d/init.d/functions ] && source /etc/rc.d/init.d/functions + +FINDPID="pgrep -u $keycloakuser -n -f standalone.sh"; +function _is_running() { + $FINDPID 1>/dev/null + return $? +} + +function stop_keycloak() { + _is_running + if [ $? -ne 0 ]; then + echo -n "$0 is not running, cannot stop." + echo_failure + echo + return 1 + else + echo -n "Stopping $0..." + + $FINDPID | xargs ps h -o pid --ppid | xargs kill + sleep 1 + _is_running + if [ $? -eq 0 ]; then + echo_failure + echo + return 1 + else + echo_success + echo + return 0 + fi + fi + +} + +function status() { + _is_running + if [ $? -eq 0 ]; then + echo -n "$0 is running." + echo_success + echo + return 0 + else + echo -n "$0 does not run." + # echo_failure + # echo + # return 1 + fi +} + +function start_keycloak() { + _is_running + if [ $? -eq 0 ]; then + echo -n "$0 already running." + echo_failure + echo + return 1 + else + echo -n "Starting $0..." + # Make sure log files exist and are writable by $PDIUSER first + touch $LOGOUT $LOGERR + chown $keycloakuser:$keycloakuser $LOGOUT $LOGERR + su - $keycloakuser -c "cd $keycloakpath && (nohup sh ./standalone.sh -b 0.0.0.0 -bprivate=$(hostname -i) --server-config standalone-ha.xml 0<&- 1>>$LOGOUT 2>>$LOGERR &)" + sleep 1 + _is_running + if [ $? -eq 0 ]; then + echo_success + echo + return 0 + else + echo_failure + echo + return 1 + fi + fi +} + +case "$1" in + start) + start_keycloak + exit $? + ;; + stop) + stop_keycloak + exit $? + ;; + reload|force-reload|restart|force-restart) + stop_keycloak + if [ $? -eq 0 ]; then + start_keycloak + exit $? + else + exit 1 + fi + ;; + status) + status + exit $? + ;; + *) + echo "Usage: $0 {start|stop|restart|status}" + exit 2 +esac +exit 0 \ No newline at end of file diff --git a/ansible/sunbird-auth-deploy.yml b/ansible/sunbird-auth-deploy.yml new file mode 100644 index 0000000000..67f9eff57b --- /dev/null +++ b/ansible/sunbird-auth-deploy.yml @@ -0,0 +1,8 @@ +--- +- hosts: all + become: true + vars_files: + - ['{{inventory_dir}}/secrets.yml', 'secrets/{{env}}.yml'] + + roles: + - sunbird-auth-deploy diff --git a/ansible/sunbird-auth-provision.yml b/ansible/sunbird-auth-provision.yml new file mode 100644 index 0000000000..3142f079d5 --- /dev/null +++ b/ansible/sunbird-auth-provision.yml @@ -0,0 +1,9 @@ +--- +- hosts: all + become: true + vars_files: + - ['{{inventory_dir}}/secrets.yml', 'secrets/{{env}}.yml'] + + roles: + - sunbird-auth-provision + From 5422017cec0345289a8fe526f1b64c1523ebf985 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Fri, 8 Mar 2019 15:44:04 +0530 Subject: [PATCH 1328/1345] feat: DO-620 Updated keycloak role --- pipelines/deploy/keycloak-realm/Jenkinsfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pipelines/deploy/keycloak-realm/Jenkinsfile b/pipelines/deploy/keycloak-realm/Jenkinsfile index 478f38dc56..3cb499eeca 100644 --- a/pipelines/deploy/keycloak-realm/Jenkinsfile +++ b/pipelines/deploy/keycloak-realm/Jenkinsfile @@ -19,8 +19,8 @@ node() { envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-3].trim() module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() - ansiblePlaybook = "${currentWs}/ansible/keycloak.yml" - ansibleExtraArgs = "--tags keycloak-bootstrap --vault-password-file /var/lib/jenkins/secrets/vault-pass" + ansiblePlaybook = "${currentWs}/ansible/sunbird-auth-deploy.yml" + ansibleExtraArgs = "--tags bootstrap --vault-password-file /var/lib/jenkins/secrets/vault-pass" values.put('currentWs', currentWs) values.put('env', envDir) values.put('module', module) From 4f5749f6f236af13f7f2fcb51f20fff874a25994 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Fri, 8 Mar 2019 15:48:09 +0530 Subject: [PATCH 1329/1345] feat: DO-620 Update keycloak deploy script --- pipelines/deploy/keycloak/Jenkinsfile | 61 ++++++++++++++++++--------- 1 file changed, 41 insertions(+), 20 deletions(-) diff --git a/pipelines/deploy/keycloak/Jenkinsfile b/pipelines/deploy/keycloak/Jenkinsfile index 3b9317c9cc..59fff51d4f 100644 --- a/pipelines/deploy/keycloak/Jenkinsfile +++ b/pipelines/deploy/keycloak/Jenkinsfile @@ -10,30 +10,51 @@ node() { stage('checkout public repo') { cleanWs() checkout scm + sh "git clone https://github.com/project-sunbird/sunbird-auth.git -b ${public_repo_branch}" } - - ansiColor('xterm') { - stage('deploy') { - values = [:] - currentWs = sh(returnStdout: true, script: 'pwd').trim() - envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-3].trim() - module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() - jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() - ansiblePlaybook = "${currentWs}/ansible/keycloak.yml" - ansibleExtraArgs = "--tags deploy --vault-password-file /var/lib/jenkins/secrets/vault-pass" - values.put('currentWs', currentWs) - values.put('env', envDir) - values.put('module', module) - values.put('jobName', jobName) - values.put('ansiblePlaybook', ansiblePlaybook) - values.put('ansibleExtraArgs', ansibleExtraArgs) - println values - ansible_playbook_run(values) + ansiColor('xterm') { + stage('get artifact') { + values = lp_dp_params() + currentWs = sh(returnStdout: true, script: 'pwd').trim() + artifact = values.artifact_name + ":" + values.artifact_version + values.put('currentWs', currentWs) + if (params.artifact_source == "ArtifactRepo") { + println(ANSI_BOLD + ANSI_YELLOW + '''\ + Option chosen is ArtifactRepo, ignoring any previously copied artifacts and new artifacts will be downloaded from remote source + '''.stripIndent().replace("\n", " ") + ANSI_NORMAL) + ansiblePlaybook = "${currentWs}/ansible/artifacts-download.yml" + ansibleExtraArgs = """\ + --extra-vars "artifact=${artifact} + artifact_path=${currentWs}/${artifact}" + --vault-password-file /var/lib/jenkins/secrets/vault-pass + """.stripIndent().replace("\n", " ") + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + ansible_playbook_run(values) + } else { + println(ANSI_BOLD + ANSI_YELLOW + '''\ + Option chosen is JenkinsJob, using the artifacts copied + '''.stripIndent().replace("\n", " ") + ANSI_NORMAL) + } + } + stage('deploy artifact') { + sh """ + unzip ${artifact} + """ + ansiblePlaybook = "${currentWs}/ansible/sunbird-auth-deploy.yml" + ansibleExtraArgs = "--limit keycloak --tags deploy --vault-password-file /var/lib/jenkins/secrets/vault-pass -v" + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + println values + ansible_playbook_run(values) + archiveArtifacts artifacts: "${artifact}", fingerprint: true, onlyIfSuccessful: true + archiveArtifacts artifacts: 'metadata.json', onlyIfSuccessful: true + currentBuild.description = "${values.artifact_version}" + } } - } } catch (err) { + currentBuild.result = "FAILURE" throw err } } - From a00211eff1611768cd5e3ae768d3dee969c3438a Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Fri, 8 Mar 2019 16:17:16 +0530 Subject: [PATCH 1330/1345] Issue #000: Change clone branch to static value --- pipelines/deploy/keycloak/Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pipelines/deploy/keycloak/Jenkinsfile b/pipelines/deploy/keycloak/Jenkinsfile index 59fff51d4f..30f157ff65 100644 --- a/pipelines/deploy/keycloak/Jenkinsfile +++ b/pipelines/deploy/keycloak/Jenkinsfile @@ -10,7 +10,7 @@ node() { stage('checkout public repo') { cleanWs() checkout scm - sh "git clone https://github.com/project-sunbird/sunbird-auth.git -b ${public_repo_branch}" + sh "git clone https://github.com/project-sunbird/sunbird-auth.git -b release-1.14" } ansiColor('xterm') { stage('get artifact') { From 4febf89c7d730d9e23308f2aad093108ac40c056 Mon Sep 17 00:00:00 2001 From: kaliraja <34502260+Kaali09@users.noreply.github.com> Date: Fri, 8 Mar 2019 16:54:42 +0530 Subject: [PATCH 1331/1345] Issue #0000 fix: DO-584 updated the cassandra_server_private_ip variable in order to take ips of cluster (#305) --- ansible/inventory/env/group_vars/all.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/inventory/env/group_vars/all.yml b/ansible/inventory/env/group_vars/all.yml index 38768a6322..73e2e12e97 100644 --- a/ansible/inventory/env/group_vars/all.yml +++ b/ansible/inventory/env/group_vars/all.yml @@ -88,7 +88,7 @@ keycloak_address_space: "{{groups['keycloak'][0].split(\".\")[0]}}.0.0.0/8" postgres_address_space: "{{groups['postgresql-master'][0].split(\".\")[0]}}.0.0.0/8" ## Cassandra configuration -cassandra_server_private_ip: "{{groups['cassandra'][0]}}" #Private IP of cassandra server +cassandra_server_private_ip: "{{groups['cassandra']|join(',')}}" #Private IP of cassandra server keystore_password: "{{core_vault_keystore_password}}" #Password to use for encrypting cassandra keystore. Use a strong password. truststore_password: "{{core_vault_truststore_password}}" #Password to use for encrypting cassandra truststore. Use a strong password. From 95620d8deb24154f7b6aace7a99655a6676598c6 Mon Sep 17 00:00:00 2001 From: Amol Ghatol Date: Fri, 8 Mar 2019 16:59:56 +0530 Subject: [PATCH 1332/1345] Issue #SB-7680 chore: Keycloak deployment script (#304) * Issue #SB-7680 chore: Keycloak deployment script --- ansible/roles/sunbird-auth-deploy/tasks/deploy.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/sunbird-auth-deploy/tasks/deploy.yml b/ansible/roles/sunbird-auth-deploy/tasks/deploy.yml index de5127b5b6..a6ab554521 100644 --- a/ansible/roles/sunbird-auth-deploy/tasks/deploy.yml +++ b/ansible/roles/sunbird-auth-deploy/tasks/deploy.yml @@ -19,7 +19,7 @@ copy: src="{{login_theme}}/" dest="{{keycloak_home}}/themes/{{tenant_name}}/login/" force="yes" - name: Copy Custom Validation theme html to login theme - copy: src="../../sunbird-auth/keycloak/sms-provider/templates/" dest="{{keycloak_home}}/themes/{{tenant_name}}/login/" force="yes" + copy: src="sunbird-auth/keycloak/sms-provider/templates/" dest="{{keycloak_home}}/themes/{{tenant_name}}/login/" force="yes" - name: Copy email theme copy: src="{{email_theme}}/" dest="{{keycloak_home}}/themes/{{tenant_name}}/email/" force="yes" From fd9df2bd1a7ecd70e44a9098c89cbaf679d4b89c Mon Sep 17 00:00:00 2001 From: SMY ALTAMASH <30286162+SMYALTAMASH@users.noreply.github.com> Date: Fri, 8 Mar 2019 17:07:54 +0530 Subject: [PATCH 1333/1345] build parameters for jenkins job (#306) * Issue #000 key: rotating keys --- pipelines/bootstrap/Jenkinsfile.rotatekey | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pipelines/bootstrap/Jenkinsfile.rotatekey b/pipelines/bootstrap/Jenkinsfile.rotatekey index 36bca5a1d3..5ef41daf4d 100644 --- a/pipelines/bootstrap/Jenkinsfile.rotatekey +++ b/pipelines/bootstrap/Jenkinsfile.rotatekey @@ -20,7 +20,7 @@ node() { jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() currentWs = sh(returnStdout: true, script: 'pwd').trim() ansiblePlaybook = "${currentWs}/ansible/rotatekey.yml" - ansibleExtraArgs = "" + ansibleExtraArgs = " --extra-vars bootstrap_user_public_key=${params.bootstrap_user_public_key} bootstrap_user=${params.bootstrap_user} ssh_user=${params.ssh_user} ssh_private_file=${param.ssh_private_file} ssh_public_key=${params.ssh_public_key}" values.put('currentWs', currentWs) values.put('env', envDir) values.put('module', module) From 79b1d1301e59d1eb832ecc02cf439e50daf8c94e Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Fri, 8 Mar 2019 17:17:51 +0530 Subject: [PATCH 1334/1345] Issue# 000: Check copy path --- ansible/roles/sunbird-auth-deploy/tasks/deploy.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/sunbird-auth-deploy/tasks/deploy.yml b/ansible/roles/sunbird-auth-deploy/tasks/deploy.yml index a6ab554521..a91a1cb549 100644 --- a/ansible/roles/sunbird-auth-deploy/tasks/deploy.yml +++ b/ansible/roles/sunbird-auth-deploy/tasks/deploy.yml @@ -19,7 +19,7 @@ copy: src="{{login_theme}}/" dest="{{keycloak_home}}/themes/{{tenant_name}}/login/" force="yes" - name: Copy Custom Validation theme html to login theme - copy: src="sunbird-auth/keycloak/sms-provider/templates/" dest="{{keycloak_home}}/themes/{{tenant_name}}/login/" force="yes" + copy: src="../../../sunbird-auth/keycloak/sms-provider/templates/" dest="{{keycloak_home}}/themes/{{tenant_name}}/login/" force="yes" - name: Copy email theme copy: src="{{email_theme}}/" dest="{{keycloak_home}}/themes/{{tenant_name}}/email/" force="yes" From 5901428ed859ab719f6a68dddfef4350eda9cafc Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Fri, 8 Mar 2019 18:36:43 +0530 Subject: [PATCH 1335/1345] Release 1.14 sprint3 (#307) * Issue #000: Typo in directory name * feat: DO-620 config file updated and new jobs * feat: DO-620 update branch names --- .../Build/jobs/Core/jobs/Content/config.xml | 2 + .../Build/jobs/Core/jobs/Keycloak/config.xml | 6 +- .../Build/jobs/Core/jobs/Learner/config.xml | 2 + .../Build/jobs/Core/jobs/Player/config.xml | 2 + .../Build/jobs/Core/jobs/Telemetry/config.xml | 2 + .../DataPipeline/jobs/DataPipeline/config.xml | 2 + .../jobs/DataPipeline/jobs/Secor/config.xml | 2 + .../KnowledgePlatform/jobs/Neo4j/config.xml | 2 + .../jobs/SyncTool/config.xml | 2 + .../KnowledgePlatform/jobs/Yarn/config.xml | 11 +- .../Plugins/jobs/CollectionEditor/config.xml | 2 +- .../jobs/ContentRendererPreview/config.xml | 2 +- .../Core/jobs/FuntionalTestCases/config.xml | 9 +- .../dev/jobs/Core/jobs/Keycloak/config.xml | 115 ++++++++++++++++-- .../jobs/CassandraDbUpdate/config.xml | 2 + .../DataPipeline/jobs/KafkaIndexer/config.xml | 2 + .../DataPipeline/jobs/KafkaSetup/config.xml | 2 + .../DataPipeline/jobs/Monitoring/config.xml | 4 +- .../jobs/CassandraDbUpdate/config.xml | 2 + .../jobs/KafkaSetup/config.xml | 2 + .../jobs/Monitoring/config.xml | 9 +- .../KnowledgePlatform/jobs/Neo4j/config.xml | 14 ++- .../jobs/Neo4jDefinitionUpdate/config.xml | 10 +- .../Neo4jElasticSearchSyncTool/config.xml | 12 +- .../jobs/StartNeo4jCluster/config.xml | 2 + .../jobs/StopNeo4jCluster/config.xml | 70 +++++++++++ .../jobs/ValidateLearning/config.xml | 10 +- .../jenkins/jobs/OpsAdministration/config.xml | 2 +- .../jobs/dev/jobs/Core/config.xml | 2 +- .../dev/jobs/Core/jobs/Bootstrap/config.xml | 10 +- .../dev/jobs/Core/jobs/KeyRotation/config.xml | 94 ++++++++++++++ .../jobs/CassandraBackup/config.xml | 13 +- .../jobs/ElasticsearchBackup/config.xml | 10 +- .../jobs/InfluxDBBackup/config.xml | 10 +- .../jobs/CassandraBackup/config.xml | 15 ++- .../jobs/ElasticsearchBackup/config.xml | 23 ++-- .../jobs/Neo4jBackup/config.xml | 23 +++- .../jobs/Neo4jRestore/config.xml | 31 ++--- deploy/jenkins/jobs/Provision/config.xml | 2 +- .../dev/jobs/Core/jobs/Cassandra/config.xml | 10 +- 40 files changed, 465 insertions(+), 82 deletions(-) create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/StopNeo4jCluster/config.xml create mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/KeyRotation/config.xml diff --git a/deploy/jenkins/jobs/Build/jobs/Core/jobs/Content/config.xml b/deploy/jenkins/jobs/Build/jobs/Core/jobs/Content/config.xml index 2238e2cb8b..5e188b455b 100644 --- a/deploy/jenkins/jobs/Build/jobs/Core/jobs/Content/config.xml +++ b/deploy/jenkins/jobs/Build/jobs/Core/jobs/Content/config.xml @@ -28,6 +28,8 @@ + 0 + 0 false project diff --git a/deploy/jenkins/jobs/Build/jobs/Core/jobs/Keycloak/config.xml b/deploy/jenkins/jobs/Build/jobs/Core/jobs/Keycloak/config.xml index 1230da2d8a..19f208676c 100644 --- a/deploy/jenkins/jobs/Build/jobs/Core/jobs/Keycloak/config.xml +++ b/deploy/jenkins/jobs/Build/jobs/Core/jobs/Keycloak/config.xml @@ -28,6 +28,8 @@ + 0 + 0 false project @@ -62,12 +64,12 @@ true false - 0 + 1 false - Jenkinsfile + keycloak/scripts/pipelines/sunbird-auth-build/Jenkinsfile false diff --git a/deploy/jenkins/jobs/Build/jobs/Core/jobs/Learner/config.xml b/deploy/jenkins/jobs/Build/jobs/Core/jobs/Learner/config.xml index df078ed65f..7effd5e779 100644 --- a/deploy/jenkins/jobs/Build/jobs/Core/jobs/Learner/config.xml +++ b/deploy/jenkins/jobs/Build/jobs/Core/jobs/Learner/config.xml @@ -35,6 +35,8 @@ + 0 + 0 false project diff --git a/deploy/jenkins/jobs/Build/jobs/Core/jobs/Player/config.xml b/deploy/jenkins/jobs/Build/jobs/Core/jobs/Player/config.xml index 9a25124412..91415a2d42 100644 --- a/deploy/jenkins/jobs/Build/jobs/Core/jobs/Player/config.xml +++ b/deploy/jenkins/jobs/Build/jobs/Core/jobs/Player/config.xml @@ -35,6 +35,8 @@ + 0 + 0 false project diff --git a/deploy/jenkins/jobs/Build/jobs/Core/jobs/Telemetry/config.xml b/deploy/jenkins/jobs/Build/jobs/Core/jobs/Telemetry/config.xml index 81b7a4bb83..ae99c15c50 100644 --- a/deploy/jenkins/jobs/Build/jobs/Core/jobs/Telemetry/config.xml +++ b/deploy/jenkins/jobs/Build/jobs/Core/jobs/Telemetry/config.xml @@ -35,6 +35,8 @@ + 0 + 0 false project diff --git a/deploy/jenkins/jobs/Build/jobs/DataPipeline/jobs/DataPipeline/config.xml b/deploy/jenkins/jobs/Build/jobs/DataPipeline/jobs/DataPipeline/config.xml index 92c75e67f6..aeadd32be9 100644 --- a/deploy/jenkins/jobs/Build/jobs/DataPipeline/jobs/DataPipeline/config.xml +++ b/deploy/jenkins/jobs/Build/jobs/DataPipeline/jobs/DataPipeline/config.xml @@ -35,6 +35,8 @@ + 0 + 0 false project diff --git a/deploy/jenkins/jobs/Build/jobs/DataPipeline/jobs/Secor/config.xml b/deploy/jenkins/jobs/Build/jobs/DataPipeline/jobs/Secor/config.xml index 49a47d606b..dae00811de 100644 --- a/deploy/jenkins/jobs/Build/jobs/DataPipeline/jobs/Secor/config.xml +++ b/deploy/jenkins/jobs/Build/jobs/DataPipeline/jobs/Secor/config.xml @@ -35,6 +35,8 @@ + 0 + 0 false project diff --git a/deploy/jenkins/jobs/Build/jobs/KnowledgePlatform/jobs/Neo4j/config.xml b/deploy/jenkins/jobs/Build/jobs/KnowledgePlatform/jobs/Neo4j/config.xml index 023e334637..b0d44a4447 100644 --- a/deploy/jenkins/jobs/Build/jobs/KnowledgePlatform/jobs/Neo4j/config.xml +++ b/deploy/jenkins/jobs/Build/jobs/KnowledgePlatform/jobs/Neo4j/config.xml @@ -35,6 +35,8 @@ + 0 + 0 false project diff --git a/deploy/jenkins/jobs/Build/jobs/KnowledgePlatform/jobs/SyncTool/config.xml b/deploy/jenkins/jobs/Build/jobs/KnowledgePlatform/jobs/SyncTool/config.xml index 3b0d548ed2..d057b1b82f 100644 --- a/deploy/jenkins/jobs/Build/jobs/KnowledgePlatform/jobs/SyncTool/config.xml +++ b/deploy/jenkins/jobs/Build/jobs/KnowledgePlatform/jobs/SyncTool/config.xml @@ -35,6 +35,8 @@ + 0 + 0 false project diff --git a/deploy/jenkins/jobs/Build/jobs/KnowledgePlatform/jobs/Yarn/config.xml b/deploy/jenkins/jobs/Build/jobs/KnowledgePlatform/jobs/Yarn/config.xml index c867761bea..4b67a7fe79 100644 --- a/deploy/jenkins/jobs/Build/jobs/KnowledgePlatform/jobs/Yarn/config.xml +++ b/deploy/jenkins/jobs/Build/jobs/KnowledgePlatform/jobs/Yarn/config.xml @@ -45,9 +45,16 @@ - + - + KnowledgePlatform + + SUCCESS + 0 + BLUE + true + + diff --git a/deploy/jenkins/jobs/Build/jobs/Plugins/jobs/CollectionEditor/config.xml b/deploy/jenkins/jobs/Build/jobs/Plugins/jobs/CollectionEditor/config.xml index d44ffddc2f..4c72168f2b 100644 --- a/deploy/jenkins/jobs/Build/jobs/Plugins/jobs/CollectionEditor/config.xml +++ b/deploy/jenkins/jobs/Build/jobs/Plugins/jobs/CollectionEditor/config.xml @@ -62,7 +62,7 @@ - Jenkinsfile.build + Jenkinsfile false diff --git a/deploy/jenkins/jobs/Build/jobs/Plugins/jobs/ContentRendererPreview/config.xml b/deploy/jenkins/jobs/Build/jobs/Plugins/jobs/ContentRendererPreview/config.xml index 1978c4ee6c..5256477d20 100644 --- a/deploy/jenkins/jobs/Build/jobs/Plugins/jobs/ContentRendererPreview/config.xml +++ b/deploy/jenkins/jobs/Build/jobs/Plugins/jobs/ContentRendererPreview/config.xml @@ -62,7 +62,7 @@ - Jenkinsfile.build + Jenkinsfile false diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/FuntionalTestCases/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/FuntionalTestCases/config.xml index 452ab52906..1e97feaa5a 100644 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/FuntionalTestCases/config.xml +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/FuntionalTestCases/config.xml @@ -2,6 +2,12 @@ + + + + + + false @@ -31,6 +37,7 @@ project false + 1 @@ -43,7 +50,7 @@ - */release-1.14 + ${public_repo_branch} false diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Keycloak/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Keycloak/config.xml index de2b8ee1f1..44631971c4 100644 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Keycloak/config.xml +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Keycloak/config.xml @@ -1,13 +1,6 @@ - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - + false @@ -24,7 +17,98 @@ false false + + + + absolute_job_path + <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> + ArtifactUpload/dev/Core/Keycloak + false + + + artifact_source + <font color=black size=2><b> +ArtifactRepo - Download the artifact from azure blob, JenkinsJob - Use the atrifact from Jenkins job.</b></font> + choice-parameter-9600649228560 + 1 + + false + + + + false + + + Keycloak + + + PT_SINGLE_SELECT + false + 1 + + + build_number + + choice-parameter-9600651313765 + 1 + + false + + + + false + + + Keycloak + + artifact_source + ET_FORMATTED_HTML + true + + + artifact_version + + choice-parameter-9600653373369 + 1 + + false + + + + false + + + Keycloak + + artifact_source + ET_FORMATTED_HTML + true + + + + 0 + 0 false project @@ -32,7 +116,18 @@ - + + + + ArtifactUpload/dev/Core/Keycloak + + SUCCESS + 0 + BLUE + true + + + @@ -45,7 +140,7 @@ - keycloak-deployment + ${public_repo_branch} false diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/CassandraDbUpdate/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/CassandraDbUpdate/config.xml index 49fc435bba..18e57478a9 100644 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/CassandraDbUpdate/config.xml +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/CassandraDbUpdate/config.xml @@ -25,6 +25,8 @@ false + 0 + 0 false project diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/KafkaIndexer/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/KafkaIndexer/config.xml index b890e64adf..9e446e5f2a 100644 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/KafkaIndexer/config.xml +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/KafkaIndexer/config.xml @@ -25,6 +25,8 @@ false + 0 + 0 false project diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/KafkaSetup/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/KafkaSetup/config.xml index ad29df38a3..daa463c469 100644 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/KafkaSetup/config.xml +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/KafkaSetup/config.xml @@ -25,6 +25,8 @@ false + 0 + 0 false project diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/Monitoring/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/Monitoring/config.xml index 79740ffe84..c17fd285d9 100644 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/Monitoring/config.xml +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/Monitoring/config.xml @@ -18,6 +18,8 @@ false + 0 + 0 false project @@ -28,7 +30,7 @@ - ../Core/Monitoring, + ../Core/Monitoring FAILURE 2 diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/CassandraDbUpdate/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/CassandraDbUpdate/config.xml index f73ce21760..5109183f59 100644 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/CassandraDbUpdate/config.xml +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/CassandraDbUpdate/config.xml @@ -25,6 +25,8 @@ false + 0 + 0 false project diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/KafkaSetup/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/KafkaSetup/config.xml index 34321776af..9271927d86 100644 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/KafkaSetup/config.xml +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/KafkaSetup/config.xml @@ -25,6 +25,8 @@ false + 0 + 0 false project diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Monitoring/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Monitoring/config.xml index 8945d48949..7ddf1d3e35 100644 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Monitoring/config.xml +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Monitoring/config.xml @@ -17,11 +17,18 @@ false false + + + false + project + false + + - ../DataPipeline/Monitoring, + ../DataPipeline/Monitoring FAILURE 2 diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4j/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4j/config.xml index f86ce0bd7b..25b009260b 100644 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4j/config.xml +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4j/config.xml @@ -39,14 +39,14 @@ ArtifactRepo - Download the artifact from azure blob, JenkinsJob - Use the atrif choice-parameter-13436883643465 1 false - + false @@ -64,7 +64,7 @@ ArtifactRepo - Download the artifact from azure blob, JenkinsJob - Use the atrif choice-parameter-13436885688258 1 false - + false @@ -91,7 +91,7 @@ return "<b>Not Applicable</b>" choice-parameter-13436888536349 1 false - + false @@ -114,6 +114,8 @@ return "<b>Not Applicable</b>" + 0 + 0 false project diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4jDefinitionUpdate/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4jDefinitionUpdate/config.xml index b5224eace1..8eaf214ccc 100644 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4jDefinitionUpdate/config.xml +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4jDefinitionUpdate/config.xml @@ -24,12 +24,19 @@ false false + + + false + project + false + + - + 2 @@ -48,6 +55,7 @@ true false + 0 false diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4jElasticSearchSyncTool/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4jElasticSearchSyncTool/config.xml index 2000380273..277ab59d96 100644 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4jElasticSearchSyncTool/config.xml +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4jElasticSearchSyncTool/config.xml @@ -39,14 +39,14 @@ ArtifactRepo - Download the artifact from azure blob, JenkinsJob - Use the atrif choice-parameter-14175006770414 1 false - + false @@ -64,7 +64,7 @@ ArtifactRepo - Download the artifact from azure blob, JenkinsJob - Use the atrif choice-parameter-14175008677110 1 false - + false @@ -91,7 +91,7 @@ return "<b>Not Applicable</b>" choice-parameter-14175010584707 1 false - + false diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/StartNeo4jCluster/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/StartNeo4jCluster/config.xml index 9e81000e2b..9385b056ff 100644 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/StartNeo4jCluster/config.xml +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/StartNeo4jCluster/config.xml @@ -25,6 +25,8 @@ false + 0 + 0 false project diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/StopNeo4jCluster/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/StopNeo4jCluster/config.xml new file mode 100644 index 0000000000..fadcb50b63 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/StopNeo4jCluster/config.xml @@ -0,0 +1,70 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + 0 + 0 + + false + project + false + + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-learning-platform.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 1 + false + + + + pipelines/deploy/neo4j-stop-cluster/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/ValidateLearning/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/ValidateLearning/config.xml index 0af53c22f8..599982859e 100644 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/ValidateLearning/config.xml +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/ValidateLearning/config.xml @@ -24,12 +24,19 @@ false false + + + false + project + false + + - + 2 @@ -48,6 +55,7 @@ true false + 0 false diff --git a/deploy/jenkins/jobs/OpsAdministration/config.xml b/deploy/jenkins/jobs/OpsAdministration/config.xml index 6fe3ca0b64..68477b8ac7 100644 --- a/deploy/jenkins/jobs/OpsAdministration/config.xml +++ b/deploy/jenkins/jobs/OpsAdministration/config.xml @@ -3,7 +3,7 @@ - + diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/config.xml index 6fe3ca0b64..68477b8ac7 100644 --- a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/config.xml +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/config.xml @@ -3,7 +3,7 @@ - + diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/Bootstrap/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/Bootstrap/config.xml index 3982ea310d..8e9ca19f1a 100644 --- a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/Bootstrap/config.xml +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/Bootstrap/config.xml @@ -34,9 +34,16 @@ + + + false + project + false + + - + 2 @@ -55,6 +62,7 @@ true false + 0 false diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/KeyRotation/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/KeyRotation/config.xml new file mode 100644 index 0000000000..b42a47c733 --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/KeyRotation/config.xml @@ -0,0 +1,94 @@ + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + bootstrap_user + deployer user + deployer + false + + + bootstrap_user_public_key + Deployer user public key keep in single quotes + + false + + + ssh_user + ops user + ops + false + + + ssh_private_file + location of ssh key for ops user from '/' + + false + + + ssh_public_key + ops public key + + false + + + + + 0 + 0 + + false + project + false + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/bootstrap/Jenkinsfile.rotatekey + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/CassandraBackup/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/CassandraBackup/config.xml index c861a2c2ad..8b27f18cbc 100644 --- a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/CassandraBackup/config.xml +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/CassandraBackup/config.xml @@ -35,14 +35,21 @@ data_dir <font color=teal size=2>enter cassandra data directory.</font> - /data/cassandra/data + /var/lib/cassandra/data false + + + false + project + false + + - - + + 2 diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/ElasticsearchBackup/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/ElasticsearchBackup/config.xml index ec3ce736a9..3f12269864 100644 --- a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/ElasticsearchBackup/config.xml +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/ElasticsearchBackup/config.xml @@ -34,9 +34,16 @@ + + + false + project + false + + - + 2 @@ -55,6 +62,7 @@ true false + 0 false diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/InfluxDBBackup/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/InfluxDBBackup/config.xml index db7d1a4a84..7723d1b63d 100644 --- a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/InfluxDBBackup/config.xml +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/InfluxDBBackup/config.xml @@ -24,9 +24,16 @@ false false + + + false + project + false + + - + 2 @@ -45,6 +52,7 @@ true false + 0 false diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/KnowledgePlatform/jobs/CassandraBackup/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/KnowledgePlatform/jobs/CassandraBackup/config.xml index f55022a82f..37d9df3199 100644 --- a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/KnowledgePlatform/jobs/CassandraBackup/config.xml +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/KnowledgePlatform/jobs/CassandraBackup/config.xml @@ -28,14 +28,23 @@ data_dir <font color=teal size=2>enter cassandra data directory.</font> - /data/cassandra/data + /var/lib/cassandra/data false + + 0 + 0 + + false + project + false + + - - + + 2 diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/KnowledgePlatform/jobs/ElasticsearchBackup/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/KnowledgePlatform/jobs/ElasticsearchBackup/config.xml index 6a596bd083..dff07e183b 100644 --- a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/KnowledgePlatform/jobs/ElasticsearchBackup/config.xml +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/KnowledgePlatform/jobs/ElasticsearchBackup/config.xml @@ -17,19 +17,18 @@ false false - - - - remote - <font color=teal size=2>enter any one host name or ip if it is a cluster</font> - - false - - - + + 0 + 0 + + false + project + false + + - - + + 2 diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4jBackup/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4jBackup/config.xml index 08d200a985..6822d1ba51 100644 --- a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4jBackup/config.xml +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4jBackup/config.xml @@ -17,9 +17,18 @@ false false + + 0 + 0 + + false + project + false + + - - + + 2 @@ -33,7 +42,15 @@ false - + + + true + false + + 0 + false + + pipelines/backup/neo4j/Jenkinsfile false diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4jRestore/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4jRestore/config.xml index 79b8319556..a8fada98db 100644 --- a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4jRestore/config.xml +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4jRestore/config.xml @@ -25,35 +25,24 @@ false - - neo4j_restore_azure_storage_account_name - - - false - - - neo4j_restore_azure_storage_access_key - - - false - - - neo4j_restore_azure_container_name - - neo4j-backup - false - hosts - learning-neo4j-node1 + false + + + false + project + false + + - - + + 2 diff --git a/deploy/jenkins/jobs/Provision/config.xml b/deploy/jenkins/jobs/Provision/config.xml index 6fe3ca0b64..68477b8ac7 100644 --- a/deploy/jenkins/jobs/Provision/config.xml +++ b/deploy/jenkins/jobs/Provision/config.xml @@ -3,7 +3,7 @@ - + diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Cassandra/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Cassandra/config.xml index ca3d7874c7..ff598501a7 100644 --- a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Cassandra/config.xml +++ b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Cassandra/config.xml @@ -17,9 +17,16 @@ false false + + + false + project + false + + - + 2 @@ -38,6 +45,7 @@ true false + 0 false From a24295896d3170f808abf32675140cdd33c67d88 Mon Sep 17 00:00:00 2001 From: SMY ALTAMASH <30286162+SMYALTAMASH@users.noreply.github.com> Date: Fri, 8 Mar 2019 23:04:40 +0530 Subject: [PATCH 1336/1345] Correcting spelling mistake (#308) --- pipelines/bootstrap/Jenkinsfile.rotatekey | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pipelines/bootstrap/Jenkinsfile.rotatekey b/pipelines/bootstrap/Jenkinsfile.rotatekey index 5ef41daf4d..98375f633f 100644 --- a/pipelines/bootstrap/Jenkinsfile.rotatekey +++ b/pipelines/bootstrap/Jenkinsfile.rotatekey @@ -20,7 +20,7 @@ node() { jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() currentWs = sh(returnStdout: true, script: 'pwd').trim() ansiblePlaybook = "${currentWs}/ansible/rotatekey.yml" - ansibleExtraArgs = " --extra-vars bootstrap_user_public_key=${params.bootstrap_user_public_key} bootstrap_user=${params.bootstrap_user} ssh_user=${params.ssh_user} ssh_private_file=${param.ssh_private_file} ssh_public_key=${params.ssh_public_key}" + ansibleExtraArgs = " --extra-vars bootstrap_user_public_key=${params.bootstrap_user_public_key} bootstrap_user=${params.bootstrap_user} ssh_user=${params.ssh_user} ssh_private_file=${params.ssh_private_file} ssh_public_key=${params.ssh_public_key}" values.put('currentWs', currentWs) values.put('env', envDir) values.put('module', module) From 6c4ed56416b308528ed43993c487744621ebe35a Mon Sep 17 00:00:00 2001 From: SMY ALTAMASH <30286162+SMYALTAMASH@users.noreply.github.com> Date: Fri, 8 Mar 2019 23:19:47 +0530 Subject: [PATCH 1337/1345] Release 1.14 sprint3 (#309) * Issue #000 key: rotating keys spelling mistake --- ansible/roles/changekey/tasks/main.yml | 1 - pipelines/bootstrap/Jenkinsfile.rotatekey | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/ansible/roles/changekey/tasks/main.yml b/ansible/roles/changekey/tasks/main.yml index 7a56212c65..92253778df 100644 --- a/ansible/roles/changekey/tasks/main.yml +++ b/ansible/roles/changekey/tasks/main.yml @@ -22,4 +22,3 @@ - name: Remove existing authorized_keys from the "{{ssh_user}}" file and add a single key to its authorized_keys become: yes command: bash -lc "echo \"{{ssh_public_key}}\" > /home/{{ssh_user}}/.ssh/authorized_keys" - diff --git a/pipelines/bootstrap/Jenkinsfile.rotatekey b/pipelines/bootstrap/Jenkinsfile.rotatekey index 98375f633f..9ba9bce981 100644 --- a/pipelines/bootstrap/Jenkinsfile.rotatekey +++ b/pipelines/bootstrap/Jenkinsfile.rotatekey @@ -19,7 +19,7 @@ node() { module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() currentWs = sh(returnStdout: true, script: 'pwd').trim() - ansiblePlaybook = "${currentWs}/ansible/rotatekey.yml" + ansiblePlaybook = "${currentWs}/ansible/rotatekeys.yml" ansibleExtraArgs = " --extra-vars bootstrap_user_public_key=${params.bootstrap_user_public_key} bootstrap_user=${params.bootstrap_user} ssh_user=${params.ssh_user} ssh_private_file=${params.ssh_private_file} ssh_public_key=${params.ssh_public_key}" values.put('currentWs', currentWs) values.put('env', envDir) From 094d3c64f1d7eb1c8d21e39462b5de2d61ddeaf7 Mon Sep 17 00:00:00 2001 From: SMY ALTAMASH <30286162+SMYALTAMASH@users.noreply.github.com> Date: Fri, 8 Mar 2019 23:38:24 +0530 Subject: [PATCH 1338/1345] interpolating extra vars (#310) * interpolating extra vars * interpolating with spaces for ssh public key --- pipelines/bootstrap/Jenkinsfile.rotatekey | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pipelines/bootstrap/Jenkinsfile.rotatekey b/pipelines/bootstrap/Jenkinsfile.rotatekey index 9ba9bce981..f6ced312d3 100644 --- a/pipelines/bootstrap/Jenkinsfile.rotatekey +++ b/pipelines/bootstrap/Jenkinsfile.rotatekey @@ -20,7 +20,7 @@ node() { jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() currentWs = sh(returnStdout: true, script: 'pwd').trim() ansiblePlaybook = "${currentWs}/ansible/rotatekeys.yml" - ansibleExtraArgs = " --extra-vars bootstrap_user_public_key=${params.bootstrap_user_public_key} bootstrap_user=${params.bootstrap_user} ssh_user=${params.ssh_user} ssh_private_file=${params.ssh_private_file} ssh_public_key=${params.ssh_public_key}" + ansibleExtraArgs = " --extra-vars bootstrap_user_public_key=\"${params.bootstrap_user_public_key}\" bootstrap_user=\"${params.bootstrap_user}\" ssh_user=\"${params.ssh_user}\" ssh_private_file=\"${params.ssh_private_file}\" ssh_public_key=\"${params.ssh_public_key}\"" values.put('currentWs', currentWs) values.put('env', envDir) values.put('module', module) From 344b754c2c1ac0a98f18daafd0198e0ed7c53cf1 Mon Sep 17 00:00:00 2001 From: SMY ALTAMASH <30286162+SMYALTAMASH@users.noreply.github.com> Date: Fri, 8 Mar 2019 23:53:52 +0530 Subject: [PATCH 1339/1345] Release 1.14 sprint3 (#311) * Issue #000 key: JenkinsFile for rotating key with multiple extra-vars --- pipelines/bootstrap/Jenkinsfile.rotatekey | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pipelines/bootstrap/Jenkinsfile.rotatekey b/pipelines/bootstrap/Jenkinsfile.rotatekey index f6ced312d3..db3deb07a9 100644 --- a/pipelines/bootstrap/Jenkinsfile.rotatekey +++ b/pipelines/bootstrap/Jenkinsfile.rotatekey @@ -20,7 +20,7 @@ node() { jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() currentWs = sh(returnStdout: true, script: 'pwd').trim() ansiblePlaybook = "${currentWs}/ansible/rotatekeys.yml" - ansibleExtraArgs = " --extra-vars bootstrap_user_public_key=\"${params.bootstrap_user_public_key}\" bootstrap_user=\"${params.bootstrap_user}\" ssh_user=\"${params.ssh_user}\" ssh_private_file=\"${params.ssh_private_file}\" ssh_public_key=\"${params.ssh_public_key}\"" + ansibleExtraArgs = " --extra-vars bootstrap_user_public_key=\"${params.bootstrap_user_public_key}\" --extra-vars bootstrap_user=\"${params.bootstrap_user}\" --extra-vars ssh_user=\"${params.ssh_user}\" --extra-vars ssh_private_file=\"${params.ssh_private_file}\" --extra-vars ssh_public_key=\"${params.ssh_public_key}\"" values.put('currentWs', currentWs) values.put('env', envDir) values.put('module', module) From 72a4f23310d4e52e2c17ad1ba2d1d9514b171f3f Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Mon, 11 Mar 2019 10:47:10 +0530 Subject: [PATCH 1340/1345] Issue #000: Disable cron --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 1c8dc2f814..cbba181959 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -29,7 +29,7 @@ workflows: nightly: triggers: - schedule: - cron: "0 17 1,5,9,13,17,21,25,29 * *" +# cron: "0 17 1,5,9,13,17,21,25,29 * *" filters: branches: only: From ee11aba1b4fec2a70efc50101d55526b4abbc7d9 Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Mon, 11 Mar 2019 13:07:43 +0530 Subject: [PATCH 1341/1345] Merge release-1.14-sprint3 to master (#315) * Issue #000 feat: Added default channel * Issue #000 feat: Description for graph passport key * Issue #000 feat: Overriding cassandra backup container name * Issues #SB-00 feat: doing private api onboard for portal to test it * Issue #000 feat: Adding ekstep domain name * Issue #000 feat: Changed default_channel to default_org_hash_id * Issue #000 feat: Removing unused variable secor_azure_container * Issue #000 feat: Updated comment for secor_azure_container_name * Issue #000 feat: Updated environment Id * Issue #000 feat: variblized content_media_base_url plugin_media_base_url dial_service_search_url * Issue #000 feat: Moved neo4j home to env.yml * Issue #000 feat: Compatibility of instance name if sunbird_instance_name is defined, it'll take precedence over {{env}} * Issue #000 feat: Seggregated unknown vars * Issue #000 feat: Removed unnecessary comments * Issue #000 feat: Moved valut azure key to env.yml * Issue #000 feat: compatibility to Lp-Dp sunbird instance * Issue #000 feat: Rearranging variables and created domain_name * Issue #000 feat: Removed core_vault_bootstrap_user and key_path * Issue #000 feat: Deleted sunbird-system-init and ekstep_api_key var * Issue #000 feat: Removed mail server port * Issue #000 feat: constant mailserver and es ports * Issue #000 feat: Added default mailing list * Issue #000 feat: Updated unused variables * Issue #000 feat: Adding api proxy name * Issue #000 feat: Added sunbird_app_name * Issue #000 feat: Removed ansible_ssh_private_key_file * Issue #000 feat: Deleting actor_service.env * Issue #000 feat: Removed unnecesary spaces * Issue #000 feat: Deleted duplicate {{env}} vars * Issue #000 feat: Removed message 91 From address * Issue #000 feat: Variablized learner cassandra varible * Issue #000 feat: removed azure account as, it's not secret * Issue #000 feat: Updated azure account key * Issue #000 feat: Added keycloak admin user * Issue #000 feat: Removed ansible_ssh_private_key_file * Issue #000 feat: Adding url_shortner_access_token * Issue #000 feat: Updated variables * Issue #000 feat: Removed url_shortner * Issue #000 feat: Removed keycloak admin username * Issue #000 feat: Added keycloak management username default * Issue #000 feat: Updated skeptic vars * Issue #000 feat: Added assets storage container * Issue #000 feat: sunbird_portal_user_upload_ref_link * Issue #000 feat: Added user profile visibility * Issue #000 feat: Moved keycloak link expiration time to sunbird/defaults * Issue #000 feat: Rearranging keycloak vars * Issue #000 feat: Seggrigated variables per service * Issue #000 feat: Removed env_short_name * Issue #000 feat: Updated skeptical vars * Issue #000 feat: Added badger variables * Issue #000 feat: Added Keycloak default values * Issue #000 feat: Adding skeptic var * Issue #000 feat: Variblizing sunbird_installation_display_name * Issue #000 feat: Added config_cache_ttl to player defaults * Issue #000 feat: formatted variable structure * Issue #000 feat: Added jenkins slave var * Issue #000 feat: Updated Not mandatory vars * Issue #000 feat: Added sunbird_telemetry_dispatchers default kafka * Issue #000 feat: Added unused vars * Issue #000 feat: Updated comments * Issue #000 feat: Changed variable precedence common.yml -> env.yml all.yml will have all defaults * Removed depricated vars * Issue #000 feat: Added ekstep_api_key, lerarner service is using that * Issue DO-528: Change vault file location * Issue #000 feat: Removing sunbird prefix * Issues #SB-00 feat: adding get user type api * feat: Updated to Jenkins LTS, adding new config files * Issue #000 feat: Refactored subird secrets * Issue #000 feat: Refactoring secrets * Issue #000 feat: Rearranging secrets * Issue #000 feat: Removed deprecated secret * Issue #000 feat: Updated non-mandatory vars * Issue #000 feat: refactored postgres secrets * Issue #000 feat: Removed msg91 varaibles * Issue #000 psql: psql data update for postgres * Issue #000 feat: refactored msg91 variable * Issue #000 feat: sms defaults added in defaults * Issue #000 feat: url shortner comment * Issue #000 feat: refactored tampoline secret variable * Issue #000 feat: Updated google signin comment * Issue #000 feat: Updated comment for kibana and portal oauth * Issue #000 feat: Deleted duplicate var core_vault_google_keycloak_secret * Issue #000 feat: Updated not used variable * Issue #000 feat: Updated variable for msg91 secret * Issue #000 feat: Updated msg91 auth_secret * Issue #000 feat: Updated unnecssary vars * Issue #000 feat: deleted duplicate core_vault_kibana_* * Issue #000 feat: moved kibana oauth and updated comment * Issue #000 feat: Rearranging variables * Issue #000 feat: Updated deprecate vars * Issue #000 feat: Adding sunbird_installation_email * Issue #000 feat: Deleting sunbird_cdn_url as it's not used * Issue #000 feat: Adding deprecated config service var in defaults * Issue #000 feat: moved captcha secret to correct position * Issue #000 feat: Removed deprecated var * Issue #000 feat: Moved player google oauth secret * Issue #000 feat: Moved fcm key to not mandatory * Issue #000 feat: Removed not found comment * Issue #000 feat: Removed duplicate captcha vault key * Issue #000 feat: Deleting core_vault_postgres_replication_user_password * Issue #000 feat: Removing deprecated ekstep_api_key * Issue #000 feat: Updated sunbird_ekstep_proxy_base_url from content service * Issue #000 feat: Removed sunbird_blob_env * Issue #000 feat: Adding swarm-loadbalancer to proper place * Issue #000 feat: Added upstream url for assets/public * Issue #000 feat: Removed duplicate var * Issue #000 feat: Updated ekstep apis * Issue #000 feat: Reverted ekstep_s3_env var * feat: DO-528 Adding node install, removed deprecated job configs * Issue #000 feat: Deleted ekstep_domain_name * Issue #000 feat: Added content-service-log level var * Issue #000 feat: Adding sunbird_response_cache_ttl * Issue #000 feat: Moved content-service log level var to content-service * Issue #000 feat: Removed duplicate var * Issue #000 feat: Changed vault_storage_azure_name with azure_account_name * Issue #000 feat: Removed config_cache_ttl var * Issue #000 feat: Removed config_cache_ttl * Issue #000 feat: Adding default value for sunbird_cache_ttl * Issue #000 feat: Adding default value for sunbird_cache_ttl * Issue #000 feat: Removing portal title name from all.yml * Issue #000 feat: Adding default value for portal_title_name * Issue #000 feat: Rearranged proxy vars * Issue #000 feat: Removed deprecated var background_actor vars * Issue #000 feat: Removed sunbird_app_url * Issue #000 feat: Removing deprecated sunbird_app_url * Issue #000 feat: Added image_storage_url default container * Issue #000 feat: Deleted unused var sunbird_content_service_producer_id * Issue #000 feat: Adding sunbird_plugin_repo_api_key * Issue #000 feat: Moving cassandra repo and key to defaults * Issue #000 feat: Added postgres replication user password * Issue #000 feat: ADding prometheus_storage_retention_time to defautls * Issue #000 feat: ADding prometheus_storage_retention_time to defautls * Issue #000 feat: Removing duplicate var logger * Issue #000 feat: Removing actor deprecated vars * Issue #000 feat: duplicate learner value * Issue #000 feat: Updating logspout reserv mem * Issue #000 feat: Updating telemetry reservation memory * Issue #000 feat: Deleted commented var kong_admin_api_url * Issue #000 feat: Adding keycloak build value * Issue #000 feat: Adding enc password * Issue #000 feat: Removed telemetry_proxy_url * updating script * Revert "Issue #000 feat: Removed telemetry_proxy_url" This reverts commit 73c883e36e7973b570d859d37dd88868eb68fce0. * Issue #000 feat: Removing duplicate entry for channel * Issue #000 feat: Adding enc-service container constraints * Issue #000 feat: Moving url_shortner enable to all.yml * Issue #000 feat: removing duplicate sunbird_lock_expiry_time * Issue #000 feat: Removed analytics service var * Issue #000 feat: Added swarm load balancer as domain name * Issue #000 feat: Changed variable value from default for postgres_exporter_password * Issue #000 feat: Adding default value for sunbird_cassandra_port * Issue #000 feat: Deleted duplicate account key * Issue #000 feat: removed duplicate postgres password * Issue #000 feat: Removed sunbird_http_orgin * Issue #000 feat: Removed duplicate sunbird_account_key * Issue #000 feat: updating sunbird_data_service_api_base_url * feat: #000 Updated plugins and job configs * feat #000: Adding staging config files * feat #000: Adding upstream configurations for jobs * Refactored dev deploy (#292) * Issue #000 feat: Added trampoline secret * Issue #000 feat: Adding deprecated config service variables * Issue #000 feat: Added config_cache_ttl * Issue #SB-10220 feat: content private APIs onboarding. * Issue #000 feat: Adding sunbird_time_zone * feat #000: Adding staging jobs and config script * Revert "Issue #000 feat: Updated sunbird_ekstep_proxy_base_url from content" This reverts commit a4d5149d3a16b3016eacedb8ded31acc5e887dd2. * Issue #000 feat: Adding ekstep api url * Issue #000 feat: Updated ekstep proxy base url * Revert "Issue #000 feat: Updated ekstep proxy base url" This reverts commit 0ad54b69ec4a6ce5f000c6af59a7405c67f6a98b. * Issue #000 feat: Dynamically taking sunbird_base url from ekstep.in/api * Issue #000: Removed jenkins config bin files * feat #000: Updated warn message * Revert "Issue #000 feat: Dynamically taking sunbird_base url from ekstep.in/api" This reverts commit 5e2d6a995f6335d6cc59b0eaa685b42885363d2b. * Issue #000 feat: removing incorrect entry for ekstep base url * Issue #000 feat: Updating keycloak sudo pass with admin password * Issue #000 feat: Updated commenting for sunbird_es_port * Issue #000 feat: Updated kong_postgres_database to be dynamic for env * Issue #000 feat: Updating syslog group * Issue #000 feat: Removed Jenkins slave creds * Issue #000 feat: Removed jenkins slave creds * Issue #00 fix: "ansible hostname fix" * Update api-manager.yml * Issue #000 feat: rearranging kafka vars location * Issue #000 feat: Removed deprecated container_name * Issue #000 feat: Added default value for content_base_url * Issue #000 feat: dynamic cloudstorage urls based on ekstep env * Issue #000 feat: Updated proto for device_register_api * Issue #00 fix: nginx config rule changes * Issue #000 feat: Updated sunbird_cloud_storage_urls to have trailing / * feat #000: Adding verbosity * Update Jenkinsfile * Issue #000: Updated warn message * Issue #000: Fixing braces typo * Issue #000: Removed staging dirs * feat: adding bower install * feat: adding gulp install * Create Jenkinsfile * Create Jenkinsfile * Create Jenkinsfile * Create Jenkinsfile * Create Jenkinsfile * Create Jenkinsfile * Update Jenkinsfile * Update main.yml * Issue #00 fix: wait for prometheus to stop (#293) * Issue #000 feat: Updating the service stack for 'with-registry-auth' * Update logstash config * updated logstash * Issue #000 feat: Adding max kafka partition size for telemetry logstash * Issue #00 fix: wait for prometheus stop before backup * feat: DO-579 Updated install and config scripts and xmls * feat: DO-579 Removed flag variable * Issue #000: Adding pipefail and changing to bash shell * Issue #000: Adding set -eo pipefail * Issue #00 fix: making keycloak admin console private * Delete ansiblePlugin.groovy * Issue #000 limit: increase the upload limit to 60MB from default 1MB (#296) * Update Jenkinsfile * Issue #000: Adding colordiff and ignoring build status files in diff (#297) * added es backup variables * added backup_azure_storage_access_key variable * Issue #000: Removed --color for colordiff (#298) * addedd log es backup variables * Issue #000: Typo in directory name (#299) * Issue #000: Check for not condition * Update Jenkinsfile * Issue #0000 fix: "reverting proxy changes for keycloak" (#300) * Update Jenkinsfile * Update main.yml * Issue #000 feat: updated azure account and secrets for db backup * Update Jenkinsfile * Update Jenkinsfile * Release 1.15 sprint1: Rotate ssh keys for sunbird and diksha env (#301) * Issue #000 limit: increase the upload limit to 60MB from default 1MB * Issue #000 keys: rotate keys * Creating JenkinsFile for rotating key (#303) Issue #000 key: JenkinsFile for rotating key * Issue #SB-7680 chore: Deployment script (#302) * Issue #SB-7680 chore: Keycloak deployment script * feat: DO-620 Updated keycloak role * feat: DO-620 Update keycloak deploy script * Issue #000: Change clone branch to static value * Issue #0000 fix: DO-584 updated the cassandra_server_private_ip variable in order to take ips of cluster (#305) * Issue #SB-7680 chore: Keycloak deployment script (#304) * Issue #SB-7680 chore: Keycloak deployment script * build parameters for jenkins job (#306) * Issue #000 key: rotating keys * Issue# 000: Check copy path * Release 1.14 sprint3 (#307) * Issue #000: Typo in directory name * feat: DO-620 config file updated and new jobs * feat: DO-620 update branch names * Correcting spelling mistake (#308) * Release 1.14 sprint3 (#309) * Issue #000 key: rotating keys spelling mistake * interpolating extra vars (#310) * interpolating extra vars * interpolating with spaces for ssh public key * Release 1.14 sprint3 (#311) * Issue #000 key: JenkinsFile for rotating key with multiple extra-vars * Issue #000: Disable cron --- .circleci/config.yml | 2 +- Jenkinsfile | 26 - ansible/api-manager.yml | 5 +- ansible/artifacts-download.yml | 10 + ansible/artifacts-upload.yml | 6 +- .../sunbird/email/html/email-test.ftl | 5 + .../sunbird/email/html/email-verification.ftl | 5 + .../sunbird/email/html/event-login_error.ftl | 5 + .../sunbird/email/html/event-remove_totp.ftl | 5 + .../email/html/event-update_password.ftl | 5 + .../sunbird/email/html/event-update_totp.ftl | 5 + .../sunbird/email/html/executeActions.ftl | 5 + .../email/html/identity-provider-link.ftl | 5 + .../sunbird/email/html/password-reset.ftl | 5 + .../email/messages/messages_ca.properties | 21 + .../email/messages/messages_de.properties | 24 + .../email/messages/messages_en.properties | 27 + .../email/messages/messages_es.properties | 21 + .../email/messages/messages_fr.properties | 21 + .../email/messages/messages_it.properties | 24 + .../email/messages/messages_ja.properties | 25 + .../email/messages/messages_lt.properties | 24 + .../email/messages/messages_no.properties | 24 + .../email/messages/messages_pt_BR.properties | 19 + .../email/messages/messages_ru.properties | 25 + .../email/messages/messages_sv.properties | 25 + .../sunbird/email/text/email-test.ftl | 1 + .../sunbird/email/text/email-verification.ftl | 1 + .../sunbird/email/text/event-login_error.ftl | 1 + .../sunbird/email/text/event-remove_totp.ftl | 1 + .../email/text/event-update_password.ftl | 1 + .../sunbird/email/text/event-update_totp.ftl | 1 + .../sunbird/email/text/executeActions.ftl | 1 + .../email/text/identity-provider-link.ftl | 1 + .../sunbird/email/text/password-reset.ftl | 1 + .../artifacts/sunbird/email/theme.properties | 1 + .../sunbird/login/login-page-expired.ftl | 18 + .../sunbird/login/login-reset-password.ftl | 58 + .../sunbird/login/login-update-password.ftl | 64 + ansible/artifacts/sunbird/login/login.ftl | 97 + .../messages/messages_en.properties | 56 +- .../css/fonts/notosans/cyrillic-ext.woff2 | Bin 0 -> 21740 bytes .../css/fonts/notosans/cyrillic.woff2 | Bin 0 -> 10540 bytes .../css/fonts/notosans/devanagari.woff2 | Bin 0 -> 32696 bytes .../css/fonts/notosans/greek-ext.woff2 | Bin 0 -> 8516 bytes .../resources/css/fonts/notosans/greek.woff2 | Bin 0 -> 12872 bytes .../css/fonts/notosans/latin-ext.woff2 | Bin 0 -> 32276 bytes .../resources/css/fonts/notosans/latin.woff2 | Bin 0 -> 15572 bytes .../resources/css/fonts/notosans/notosans.css | 64 + .../css/fonts/notosans/vietnamese.woff2 | Bin 0 -> 7384 bytes .../sunbird/login/resources/css/login.css | 375 ++- .../login/resources/css/semantic.min.css | 2 +- .../css/themes/default/assets/fonts/icons.eot | Bin 0 -> 60767 bytes .../css/themes/default/assets/fonts/icons.svg | 565 ++++ .../css/themes/default/assets/fonts/icons.ttf | Bin 0 -> 122092 bytes .../themes/default/assets/fonts/icons.woff | Bin 0 -> 71508 bytes .../themes/default/assets/fonts/icons.woff2 | Bin 0 -> 56780 bytes .../sunbird/login/resources/img/bg.svg | 33 + .../login/resources/img/diksha_gov_logo.svg | 1 + .../sunbird/login/resources/img/favicon.ico | Bin 0 -> 1150 bytes .../sunbird/login/resources/img/google.png | Bin 0 -> 6739 bytes .../sunbird/login/resources/img/logo.png | Bin 68091 -> 14389 bytes .../sunbird/login/resources/js/login.js | 171 ++ .../login/resources/login-reset-password.ftl | 43 - .../login/resources/login-update-password.ftl | 48 - .../sunbird/login/resources/login.ftl | 72 - ansible/artifacts/sunbird/login/template.ftl | 114 + .../login/{resources => }/theme.properties | 6 +- ansible/bootstrap.yml | 20 +- ansible/cassandra-backup.yml | 2 +- ansible/deploy.yml | 1 + ansible/docker_image_push.yml | 17 + ansible/es.yml | 10 + .../sample/group_vars/postgresql-master | 5 - ansible/inventories/sample/hosts | 88 - ansible/inventory/env/common.yml | 0 ansible/inventory/env/group_vars/all.yml | 546 ++++ ansible/inventory/env/group_vars/env.yml | 1 + ansible/jmeter-provision.yml | 6 - ansible/monitoring.yml | 11 +- ansible/provision.yml | 2 + .../application_elasticsearch/meta/main.yml | 4 +- .../artifacts-download-azure/meta/main.yml | 2 + .../artifacts-download-azure/tasks/main.yml | 8 + .../artifacts-upload-azure/meta/main.yml | 2 +- .../artifacts-upload-azure/tasks/main.yml | 12 +- ansible/roles/azure-cli/tasks/main.yml | 5 +- ansible/roles/bootstrap_any/tasks/main.yml | 15 +- .../roles/cassandra-backup/defaults/main.yml | 3 + ansible/roles/cassandra-backup/tasks/main.yml | 12 +- .../templates/cassandra_backup.j2 | 36 +- .../roles/cassandra-deploy/defaults/main.yml | 4 +- ansible/roles/cassandra/tasks/main.yml | 22 + ansible/roles/changekey/defaults/main.yml | 5 + ansible/roles/changekey/tasks/main.yml | 24 + ansible/roles/curl_es_command/tasks/main.yml | 1 + ansible/roles/elasticsearch/defaults/main.yml | 1 + .../tasks/elasticsearch-Debian.yml | 6 +- ansible/roles/jenkins/defaults/main.yml | 333 ++- ansible/roles/jenkins/meta/main.yml | 3 + ansible/roles/jenkins/tasks/plugins.yml | 70 +- .../jenkins/templates/basic-security.groovy | 19 +- ansible/roles/keycloak/defaults/main.yml | 7 + ansible/roles/keycloak/tasks/deploy.yml | 133 +- .../keycloak/tasks/keycloak_bootstrap.yml | 21 +- .../keycloak/templates/Msg91Creds.json.j2 | 10 +- ansible/roles/kong-api/defaults/main.yml | 99 +- ansible/roles/kong-api/tasks/main.yml | 26 +- ansible/roles/kong-consumer/defaults/main.yml | 2 + ansible/roles/kong-consumer/tasks/main.yml | 24 +- ansible/roles/monit/tasks/main.yml | 1 + .../postgresql-data-update/tasks/main.yml | 4 +- .../templates/tables_postgres.sql | 11 - .../roles/postgresql/tasks/setup-Debian.yml | 1 + .../roles/prometheus-backup/tasks/main.yml | 10 +- .../roles/prometheus_config/defaults/main.yml | 2 + .../roles/prometheus_config/tasks/main.yml | 32 + .../templates/stack-api-manager.yml | 4 +- .../roles/stack-badger/tasks/.user.yml.swp | Bin 0 -> 12288 bytes ansible/roles/stack-badger/tasks/main.yml | 10 +- ansible/roles/stack-badger/tasks/user.yml | 8 - ansible/roles/stack-monitor/defaults/main.yml | 4 +- .../templates/alertrules.process | 2 +- ansible/roles/stack-proxy/tasks/main.yml | 9 +- .../roles/stack-proxy/templates/nginx.conf | 1 + .../stack-proxy/templates/proxy-default.conf | 3 +- ansible/roles/stack-sunbird/defaults/main.yml | 26 +- .../stack-sunbird/tasks/actor_service.yml | 2 +- ansible/roles/stack-sunbird/tasks/common.yml | 7 +- .../stack-sunbird/tasks/config_service.yml | 2 +- .../stack-sunbird/tasks/content_service.yml | 2 +- .../stack-sunbird/tasks/learner_service.yml | 2 +- .../stack-sunbird/tasks/telemetry_service.yml | 4 +- .../templates/sunbird_actor-service.env | 56 - .../templates/sunbird_content-service.env | 2 + .../templates/sunbird_learner-service.env | 6 +- .../templates/sunbird_player.env | 6 +- .../telemetry-logstash-datapipeline.conf | 2 + .../sunbird-auth-deploy/defaults/main.yml | 86 + .../files/python-keycloak-0.12.0/PKG-INFO | 19 + .../files/python-keycloak-0.12.0/README.md | 210 ++ .../keycloak-realm.json | 1999 ++++++++++++++ .../keycloak/__init__.py | 19 + .../keycloak/authorization/__init__.py | 87 + .../keycloak/authorization/permission.py | 98 + .../keycloak/authorization/policy.py | 107 + .../keycloak/authorization/role.py | 39 + .../keycloak/connection.py | 199 ++ .../keycloak/exceptions.py | 93 + .../keycloak/keycloak_admin.py | 670 +++++ .../keycloak/keycloak_main.py | 87 + .../keycloak/keycloak_openid.py | 390 +++ .../python_keycloak.egg-info/PKG-INFO | 18 + .../python_keycloak.egg-info/SOURCES.txt | 0 .../dependency_links.txt | 1 + .../python_keycloak.egg-info/requires.txt | 3 + .../python_keycloak.egg-info/top_level.txt | 1 + .../keycloak/tests/__init__.py | 0 .../keycloak/tests/test_connection.py | 148 + .../keycloak/urls_patterns.py | 54 + .../python_keycloak.egg-info/PKG-INFO | 18 + .../python_keycloak.egg-info/SOURCES.txt | 21 + .../dependency_links.txt | 1 + .../python_keycloak.egg-info/requires.txt | 3 + .../python_keycloak.egg-info/top_level.txt | 1 + .../files/python-keycloak-0.12.0/roles.json | 41 + .../files/python-keycloak-0.12.0/setup.cfg | 7 + .../files/python-keycloak-0.12.0/setup.py | 25 + .../sunbird-auth-deploy/tasks/bootstrap.yml | 77 + .../sunbird-auth-deploy/tasks/deploy.yml | 109 + .../roles/sunbird-auth-deploy/tasks/main.yml | 7 + .../templates/Msg91Creds.json.j2 | 7 + .../templates/keycloak-bootstrap.conf.j2 | 13 + .../templates/keycloak-realm.j2 | 2388 +++++++++++++++++ .../templates/module.xml.j2 | 10 + .../templates/standalone-ha.xml | 571 ++++ .../templates/standalone.xml | 471 ++++ .../sunbird-auth-provision/defaults/main.yml | 10 + .../tasks/install-keycloak.yml | 51 + .../sunbird-auth-provision/tasks/main.yml | 3 + .../tasks/prerequisite.yml | 11 + .../templates/keycloak-service.j2 | 117 + .../tasks/main.yml | 11 - .../templates/system_init_upgrade_commands.j2 | 82 - .../roles/sunbird-system-init/tasks/main.yml | 23 - .../templates/system_init_commands.j2 | 415 --- .../vm-agents-processexporter/tasks/main.yml | 5 - .../templates/config.j2 | 16 +- ansible/rotatekeys.yml | 9 + ansible/run_command.yml | 3 +- ansible/setup-dockerswarm.yml | 14 +- ...ongobackup.yml => sunbird-auth-deploy.yml} | 10 +- ...-deploy.yml => sunbird-auth-provision.yml} | 8 +- .../swarm/acs-engine/common/azuredeploy.json | 1059 -------- .../acs-engine/production.sample/README.md | 80 - .../azuredeploy.parameters.json.sample | 48 - .../swarm/acs-engine/production.sample/env.sh | 8 - cloud/azure/arm/vm/azuredeploy.json | 162 -- .../arm/vm/azuredeploy.parameters.json.sample | 48 - cloud/openvpn/openvpn.sh | 15 - deploy/cassandra_restore.py | 9 +- deploy/jenkins/butler | Bin 0 -> 8166370 bytes deploy/jenkins/envOrder.txt.sample | 4 + deploy/jenkins/jenkins-jobs-setup.sh | 103 + deploy/jenkins/jenkins-plugins-setup.sh | 21 + deploy/jenkins/jenkins-server-setup.sh | 70 + deploy/jenkins/jobs/ArtifactUpload/config.xml | 29 + .../jobs/ArtifactUpload/jobs/dev/config.xml | 29 + .../jobs/dev/jobs/Core/config.xml | 29 + .../dev/jobs/Core/jobs/APIManager/config.xml | 108 + .../jobs/Core/jobs/APIManagerEcho/config.xml | 108 + .../dev/jobs/Core/jobs/AdminUtils/config.xml | 108 + .../jobs/dev/jobs/Core/jobs/Badger/config.xml | 108 + .../dev/jobs/Core/jobs/Cassandra/config.xml | 108 + .../jobs/dev/jobs/Core/jobs/Config/config.xml | 108 + .../dev/jobs/Core/jobs/Content/config.xml | 108 + .../dev/jobs/Core/jobs/Keycloak/config.xml | 108 + .../dev/jobs/Core/jobs/Learner/config.xml | 108 + .../jobs/dev/jobs/Core/jobs/Player/config.xml | 108 + .../jobs/dev/jobs/Core/jobs/Proxy/config.xml | 108 + .../dev/jobs/Core/jobs/Telemetry/config.xml | 108 + .../jobs/dev/jobs/DataPipeline/config.xml | 29 + .../DataPipeline/jobs/Analytics/config.xml | 108 + .../DataPipeline/jobs/DataPipeline/config.xml | 108 + .../jobs/DataPipeline/jobs/Secor/config.xml | 108 + .../dev/jobs/KnowledgePlatform/config.xml | 29 + .../jobs/KnowledgePlatform/config.xml | 108 + .../KnowledgePlatform/jobs/Neo4j/config.xml | 108 + .../jobs/SyncTool/config.xml | 108 + .../KnowledgePlatform/jobs/Yarn/config.xml | 108 + .../jobs/dev/jobs/Plugins/config.xml | 28 + .../jobs/Plugins/jobs/CEPlugins/config.xml | 93 + .../Plugins/jobs/CollectionEditor/config.xml | 93 + .../Plugins/jobs/ContentFramework/config.xml | 93 + .../jobs/ContentRendererPreview/config.xml | 93 + .../Plugins/jobs/GenericEditor/config.xml | 93 + deploy/jenkins/jobs/Build/config.xml | 29 + .../jenkins/jobs/Build/jobs/Core/config.xml | 29 + .../jobs/Core/jobs/APIManager/config.xml | 38 + .../jobs/Core/jobs/APIManagerEcho/config.xml | 31 + .../jobs/Core/jobs/AdminUtils/config.xml | 63 + .../Build/jobs/Core/jobs/Badger/config.xml | 84 + .../Build/jobs/Core/jobs/Cassandra/config.xml | 84 + .../jobs/Core/jobs/CloudStorageSDK/config.xml | 84 + .../Build/jobs/Core/jobs/Config/config.xml | 84 + .../Build/jobs/Core/jobs/Content/config.xml | 77 + .../Build/jobs/Core/jobs/Keycloak/config.xml | 77 + .../Build/jobs/Core/jobs/Learner/config.xml | 84 + .../Build/jobs/Core/jobs/Player/config.xml | 84 + .../Build/jobs/Core/jobs/Proxy/config.xml | 75 + .../Build/jobs/Core/jobs/Telemetry/config.xml | 84 + .../jobs/Build/jobs/DataPipeline/config.xml | 29 + .../DataPipeline/jobs/Analytics/config.xml | 84 + .../DataPipeline/jobs/DataPipeline/config.xml | 84 + .../jobs/DataPipeline/jobs/Secor/config.xml | 84 + .../Build/jobs/KnowledgePlatform/config.xml | 29 + .../jobs/KnowledgePlatform/config.xml | 84 + .../KnowledgePlatform/jobs/Neo4j/config.xml | 84 + .../jobs/SyncTool/config.xml | 84 + .../KnowledgePlatform/jobs/Yarn/config.xml | 91 + .../jobs/Build/jobs/Plugins/config.xml | 29 + .../jobs/Plugins/jobs/CEPlugins/config.xml | 70 + .../Plugins/jobs/CollectionEditor/config.xml | 70 + .../Plugins/jobs/ContentFramework/config.xml | 70 + .../jobs/ContentRendererPreview/config.xml | 70 + .../Plugins/jobs/GenericEditor/config.xml | 70 + deploy/jenkins/jobs/Deploy/config.xml | 29 + .../jenkins/jobs/Deploy/jobs/dev/config.xml | 29 + .../jobs/Deploy/jobs/dev/jobs/Core/config.xml | 29 + .../dev/jobs/Core/jobs/APIManager/config.xml | 97 + .../dev/jobs/Core/jobs/AdminUtils/config.xml | 97 + .../jobs/ApplicationElasticSearch/config.xml | 58 + .../jobs/dev/jobs/Core/jobs/Badger/config.xml | 86 + .../dev/jobs/Core/jobs/Bootstrap/config.xml | 61 + .../dev/jobs/Core/jobs/Cassandra/config.xml | 163 ++ .../jobs/dev/jobs/Core/jobs/Config/config.xml | 86 + .../dev/jobs/Core/jobs/Content/config.xml | 97 + .../Core/jobs/FuntionalTestCases/config.xml | 65 + .../dev/jobs/Core/jobs/Keycloak/config.xml | 163 ++ .../jobs/Core/jobs/KeycloakRealm/config.xml | 68 + .../dev/jobs/Core/jobs/Learner/config.xml | 97 + .../Core/jobs/LoggerElasticSearch/config.xml | 60 + .../dev/jobs/Core/jobs/Logging/config.xml | 60 + .../dev/jobs/Core/jobs/Monitoring/config.xml | 60 + .../dev/jobs/Core/jobs/OnboardAPIs/config.xml | 67 + .../Core/jobs/OnboardConsumers/config.xml | 58 + .../jobs/dev/jobs/Core/jobs/Player/config.xml | 97 + .../jobs/dev/jobs/Core/jobs/Proxy/config.xml | 90 + .../dev/jobs/Core/jobs/Telemetry/config.xml | 97 + .../Core/jobs/TelemetryLogstash/config.xml | 60 + .../TelemetryLogstashDataPipeline/config.xml | 58 + .../jobs/dev/jobs/DataPipeline/config.xml | 29 + .../DataPipeline/jobs/AnalyticsAPI/config.xml | 170 ++ .../jobs/AnalyticsFetchLogs/config.xml | 93 + .../AnalyticsGeoLocationDBSetup/config.xml | 67 + .../config.xml | 99 + .../jobs/AnalyticsReplayJobs/config.xml | 113 + .../jobs/AnalyticsStartJobManager/config.xml | 77 + .../jobs/AnalyticsSubmitJobs/config.xml | 76 + .../jobs/CassandraDbUpdate/config.xml | 67 + .../DataPipeline/jobs/DataProducts/config.xml | 170 ++ .../DataPipeline/jobs/KafkaIndexer/config.xml | 67 + .../DataPipeline/jobs/KafkaSetup/config.xml | 67 + .../DataPipeline/jobs/Monitoring/config.xml | 74 + .../jobs/SamzaTelemetrySchemas/config.xml | 77 + .../jobs/DataPipeline/jobs/Secor/config.xml | 170 ++ .../jobs/DataPipeline/jobs/Yarn/config.xml | 170 ++ .../dev/jobs/KnowledgePlatform/config.xml | 29 + .../jobs/CassandraDbUpdate/config.xml | 70 + .../jobs/ContentTool/config.xml | 92 + .../jobs/FileSyncTool/config.xml | 83 + .../jobs/KafkaSetup/config.xml | 70 + .../jobs/Learning/config.xml | 170 ++ .../jobs/Monitoring/config.xml | 72 + .../KnowledgePlatform/jobs/Neo4j/config.xml | 159 ++ .../jobs/Neo4jDefinitionUpdate/config.xml | 68 + .../Neo4jElasticSearchSyncTool/config.xml | 184 ++ .../KnowledgePlatform/jobs/Search/config.xml | 170 ++ .../jobs/StartNeo4jCluster/config.xml | 70 + .../jobs/StopNeo4jCluster/config.xml | 70 + .../jobs/ValidateLearning/config.xml | 68 + .../KnowledgePlatform/jobs/Yarn/config.xml | 170 ++ .../Deploy/jobs/dev/jobs/Plugins/config.xml | 29 + .../jobs/Plugins/jobs/CEPlugins/config.xml | 161 ++ .../Plugins/jobs/CollectionEditor/config.xml | 161 ++ .../Plugins/jobs/ContentFramework/config.xml | 161 ++ .../jobs/ContentRendererPreview/config.xml | 161 ++ .../Plugins/jobs/GenericEditor/config.xml | 161 ++ .../Deploy/jobs/dev/jobs/Summary/config.xml | 29 + .../Summary/jobs/DeployedVersions/config.xml | 74 + .../jenkins/jobs/OpsAdministration/config.xml | 29 + .../OpsAdministration/jobs/dev/config.xml | 29 + .../jobs/dev/jobs/Core/config.xml | 29 + .../ApplicationElasticsearchBackup/config.xml | 50 + .../config.xml | 50 + .../dev/jobs/Core/jobs/Bootstrap/config.xml | 75 + .../jobs/Core/jobs/CassandraBackup/config.xml | 50 + .../dev/jobs/Core/jobs/KeyRotation/config.xml | 94 + .../jobs/LoggerElasticSearchBackup/config.xml | 50 + .../LoggerElasticSearchRestore/config.xml | 50 + .../Core/jobs/PostgresqlBackup/config.xml | 51 + .../Core/jobs/PostgresqlRestore/config.xml | 51 + .../Core/jobs/PrometheusBackup/config.xml | 50 + .../jobs/Core/jobs/SwarmBootstrap/config.xml | 50 + .../jobs/dev/jobs/DataPipeline/config.xml | 29 + .../jobs/AnalyticsAPILogs/config.xml | 51 + .../DataPipeline/jobs/Bootstrap/config.xml | 60 + .../jobs/CassandraBackup/config.xml | 81 + .../jobs/CassandraRestore/config.xml | 74 + .../jobs/ElasticsearchBackup/config.xml | 75 + .../jobs/ElasticsearchRestore/config.xml | 75 + .../jobs/InfluxDBBackup/config.xml | 65 + .../jobs/PostgresqlBackup/config.xml | 51 + .../jobs/PostgresqlRestore/config.xml | 51 + .../dev/jobs/KnowledgePlatform/config.xml | 29 + .../jobs/Bootstrap/config.xml | 60 + .../jobs/CassandraBackup/config.xml | 76 + .../jobs/CassandraRestore/config.xml | 67 + .../jobs/ElasticsearchBackup/config.xml | 52 + .../jobs/ElasticsearchRestore/config.xml | 61 + .../jobs/Neo4jBackup/config.xml | 60 + .../jobs/Neo4jRestore/config.xml | 74 + deploy/jenkins/jobs/Provision/config.xml | 29 + .../jobs/Provision/jobs/dev/config.xml | 29 + .../Provision/jobs/dev/jobs/Core/config.xml | 29 + .../dev/jobs/Core/jobs/Cassandra/config.xml | 58 + .../jobs/Core/jobs/JenkinsSlave/config.xml | 70 + .../jobs/dev/jobs/Core/jobs/Kafka/config.xml | 58 + .../dev/jobs/Core/jobs/Keycloak/config.xml | 65 + .../Core/jobs/LogElasticSearch/config.xml | 50 + .../dev/jobs/Core/jobs/Postgres/config.xml | 50 + .../Core/jobs/PostgresDbUpdate/config.xml | 50 + .../dev/jobs/Core/jobs/Registry/config.xml | 58 + .../jobs/dev/jobs/Core/jobs/Secor/config.xml | 58 + .../jobs/dev/jobs/DataPipeline/config.xml | 29 + .../DataPipeline/jobs/AnalyticsAPI/config.xml | 57 + .../jobs/AnalyticsSecor/config.xml | 56 + .../jobs/AnalyticsSpark/config.xml | 57 + .../DataPipeline/jobs/Cassandra/config.xml | 50 + .../DataPipeline/jobs/InfluxDB/config.xml | 56 + .../jobs/DataPipeline/jobs/Kafka/config.xml | 65 + .../jobs/DataPipeline/jobs/Kibana/config.xml | 57 + .../DataPipeline/jobs/Postgres/config.xml | 56 + .../jobs/TelemetrySearch/config.xml | 65 + .../jobs/DataPipeline/jobs/Yarn/config.xml | 57 + .../DataPipeline/jobs/Zookeeper/config.xml | 64 + .../dev/jobs/KnowledgePlatform/config.xml | 29 + .../jobs/Cassandra/config.xml | 61 + .../jobs/CompositeSearch/config.xml | 61 + .../KnowledgePlatform/jobs/Kafka/config.xml | 61 + .../jobs/Learning/config.xml | 68 + .../KnowledgePlatform/jobs/Neo4j/config.xml | 61 + .../KnowledgePlatform/jobs/Redis/config.xml | 61 + .../KnowledgePlatform/jobs/Search/config.xml | 60 + .../KnowledgePlatform/jobs/Yarn/config.xml | 68 + .../jobs/Zookeeper/config.xml | 61 + deploy/jenkins/plugins.txt | 98 + deploy/utilities/kill_samza_app.sh | 13 + images/openbadger/Jenkinsfile | 61 + images/openbadger/build.sh | 19 +- images/proxy/Jenkinsfile | 49 + images/proxy/build.sh | 19 +- pipelines/adminutils/Jenkinsfile.sample | 27 - pipelines/adminutils/deploy.sh | 28 - pipelines/adminutils/installDeps.sh | 5 - pipelines/adminutils/metadata.json | 6 - pipelines/am-onboard-apis/Jenkinsfile.sample | 15 - .../am-onboard-consumers/Jenkinsfile.sample | 15 - pipelines/api-manager/Jenkinsfile.sample | 34 - pipelines/api-manager/deploy.sh | 23 - pipelines/api-manager/installDeps.sh | 5 - pipelines/api-manager/metadata.json | 6 - .../Jenkinsfile.sample | 22 - pipelines/backup/cassandra-backup/Jenkinsfile | 38 + pipelines/backup/es-backup/Jenkinsfile | 38 + pipelines/backup/es-restore/Jenkinsfile | 42 + pipelines/backup/logger-es-backup/Jenkinsfile | 38 + .../backup/logger-es-restore/Jenkinsfile | 42 + .../backup/postgresql-backup/Jenkinsfile | 38 + .../backup/postgresql-restore/Jenkinsfile | 40 + .../backup/prometheus-backup/Jenkinsfile | 38 + pipelines/bootstrap-swarm/Jenkinsfile | 38 + pipelines/bootstrap/Jenkinsfile | 38 + pipelines/bootstrap/Jenkinsfile.rotatekey | 38 + pipelines/cassandra-backup/Jenkinsfile.sample | 32 - .../cassandra-restore/Jenkinsfile.sample | 34 - pipelines/cassandra/Jenkinsfile.sample | 32 - pipelines/cassandra/installDeps.sh | 1 - pipelines/deploy/CEPlugins/Jenkinsfile | 60 + pipelines/deploy/CollectionEditor/Jenkinsfile | 70 + pipelines/deploy/ContentFramework/Jenkinsfile | 78 + .../deploy/ContentRendererPreview/Jenkinsfile | 64 + pipelines/deploy/GenericEditor/Jenkinsfile | 66 + pipelines/deploy/adminutils/Jenkinsfile | 25 + pipelines/deploy/am-onboard-apis/Jenkinsfile | 38 + .../deploy/am-onboard-consumers/Jenkinsfile | 38 + pipelines/deploy/api-manager/Jenkinsfile | 25 + .../application-elasticsearch/Jenkinsfile | 38 + pipelines/deploy/badger/Jenkinsfile | 26 + pipelines/deploy/cassandra-deploy/Jenkinsfile | 59 + pipelines/deploy/config-service/Jenkinsfile | 26 + pipelines/deploy/content/Jenkinsfile | 26 + pipelines/deploy/keycloak-realm/Jenkinsfile | 38 + pipelines/deploy/keycloak/Jenkinsfile | 60 + pipelines/deploy/learner/Jenkinsfile | 26 + .../deploy/logger-elasticsearch/Jenkinsfile | 38 + pipelines/deploy/logger/Jenkinsfile | 39 + pipelines/deploy/monitor/Core/Jenkinsfile | 38 + .../deploy/monitor/DataPipeline/Jenkinsfile | 38 + pipelines/deploy/monitor/Jenkinsfile | 38 + .../monitor/KnowledgePlatform/Jenkinsfile | 38 + pipelines/deploy/player/Jenkinsfile | 25 + pipelines/deploy/proxy/Jenkinsfile | 26 + .../Jenkinsfile | 38 + .../deploy/telemetry-logstash/Jenkinsfile | 38 + pipelines/deploy/telemetry/Jenkinsfile | 26 + pipelines/dockerTag.sh | 23 - .../Jenkinsfile.deploy-slave | 19 - .../documentation-jenkins-slave/deploy.sh | 11 - pipelines/es-backup/Jenkinsfile.sample | 20 - pipelines/es-backup/deploy.sh | 6 - pipelines/es-backup/installDeps.sh | 5 - pipelines/es-restore/Jenkinsfile.sample | 17 - pipelines/es-restore/deploy.sh | 6 - pipelines/es-restore/installDeps.sh | 5 - .../jenkins-backup-upload/Jenkinsfile.admin | 18 - pipelines/keycloak1/deploy.sh | 29 - pipelines/keycloak1/installDeps.sh | 5 - pipelines/keycloak1/metadata.json | 6 - pipelines/keycloak2/deploy.sh | 29 - pipelines/keycloak2/installDeps.sh | 5 - pipelines/keycloak2/metadata.json | 6 - pipelines/log-es-backup/Jenkinsfile.sample | 20 - pipelines/log-es-backup/deploy.sh | 6 - pipelines/log-es-backup/installDeps.sh | 5 - pipelines/log-es-restore/deploy.sh | 6 - pipelines/log-es-restore/installDeps.sh | 5 - .../logger-elasticsearch/Jenkinsfile.sample | 22 - pipelines/logger/deploy.sh | 7 - pipelines/logger/installDeps.sh | 5 - pipelines/mongodb-backup/Jenkinsfile.sample | 32 - pipelines/mongodb-backup/installDeps.sh | 1 - pipelines/mongodb/installDeps.sh | 1 - pipelines/monitor/Jenkinsfile.sample | 31 - pipelines/monitor/deploy.sh | 6 - pipelines/monitor/installDeps.sh | 4 - .../postgresql-backup/Jenkinsfile.sample | 24 - .../postgresql-data-update/Jenkinsfile.sample | 21 - .../postgresql-master/Jenkinsfile.sample | 21 - .../postgresql-restore/Jenkinsfile.sample | 37 - .../Jenkinsfile.sample | 22 - pipelines/postgresql-slave/Jenkinsfile.sample | 21 - pipelines/provision/cassandra/Jenkinsfile | 38 + pipelines/provision/jenkins-slave/Jenkinsfile | 39 + pipelines/provision/kafka/Jenkinsfile | 38 + pipelines/provision/keycloak/Jenkinsfile | 38 + pipelines/provision/log-es/Jenkinsfile | 38 + .../provision/postgres-db-update/Jenkinsfile | 38 + pipelines/provision/postgres/Jenkinsfile | 38 + pipelines/provision/registry/Jenkinsfile | 50 + pipelines/provision/secor/Jenkinsfile | 38 + pipelines/proxy/Jenkinsfile.sample | 25 - pipelines/proxy/deploy.sh | 23 - pipelines/proxy/metadata.json | 6 - pipelines/summary/Jenkinsfile | 5 + .../sunbird-actor-service/Jenkinsfile.sample | 34 - pipelines/sunbird-actor-service/deploy.sh | 29 - .../sunbird-actor-service/installDeps.sh | 5 - pipelines/sunbird-actor-service/metadata.json | 6 - .../sunbird-bootstrap/Jenkinsfile.db.sample | 25 - .../sunbird-bootstrap/Jenkinsfile.sample | 32 - pipelines/sunbird-bootstrap/installDeps.sh | 1 - .../Jenkinsfile.sample | 34 - pipelines/sunbird-content-service/deploy.sh | 29 - .../sunbird-content-service/installDeps.sh | 5 - .../sunbird-content-service/metadata.json | 6 - .../Jenkinsfile.sample | 33 - pipelines/sunbird-learner-service/deploy.sh | 29 - .../sunbird-learner-service/installDeps.sh | 5 - .../sunbird-learner-service/metadata.json | 6 - pipelines/sunbird-player/Jenkinsfile.sample | 34 - pipelines/sunbird-player/deploy.sh | 29 - pipelines/sunbird-player/installDeps.sh | 5 - pipelines/sunbird-player/metadata.json | 6 - .../Jenkinsfile.sample | 33 - pipelines/sunbird-telemetry-service/deploy.sh | 29 - .../sunbird-telemetry-service/installDeps.sh | 5 - .../sunbird-telemetry-service/metadata.json | 6 - .../Jenkinsfile.sample | 18 - pipelines/upload/artifacts/Jenkinsfile | 30 + pipelines/upload/docker/Jenkinsfile | 29 + pipelines/upload/plugins/Jenkinsfile | 31 + .../ansible/inventory/dev/Core/common.yml | 72 + private_repo/ansible/inventory/dev/Core/hosts | 126 + .../ansible/inventory/dev/Core/secrets.yml | 63 + .../inventory/dev/DataPipeline/common.yml | 40 + .../ansible/inventory/dev/DataPipeline/hosts | 145 + .../inventory/dev/DataPipeline/secrets.yml | 9 + .../dev/KnowledgePlatform/common.yml | 42 + .../inventory/dev/KnowledgePlatform/hosts | 106 + .../dev/KnowledgePlatform/secrets.yml | 6 + 541 files changed, 29125 insertions(+), 3969 deletions(-) delete mode 100644 Jenkinsfile create mode 100644 ansible/artifacts-download.yml create mode 100644 ansible/artifacts/sunbird/email/html/email-test.ftl create mode 100644 ansible/artifacts/sunbird/email/html/email-verification.ftl create mode 100644 ansible/artifacts/sunbird/email/html/event-login_error.ftl create mode 100644 ansible/artifacts/sunbird/email/html/event-remove_totp.ftl create mode 100644 ansible/artifacts/sunbird/email/html/event-update_password.ftl create mode 100644 ansible/artifacts/sunbird/email/html/event-update_totp.ftl create mode 100644 ansible/artifacts/sunbird/email/html/executeActions.ftl create mode 100644 ansible/artifacts/sunbird/email/html/identity-provider-link.ftl create mode 100644 ansible/artifacts/sunbird/email/html/password-reset.ftl create mode 100644 ansible/artifacts/sunbird/email/messages/messages_ca.properties create mode 100644 ansible/artifacts/sunbird/email/messages/messages_de.properties create mode 100644 ansible/artifacts/sunbird/email/messages/messages_en.properties create mode 100644 ansible/artifacts/sunbird/email/messages/messages_es.properties create mode 100644 ansible/artifacts/sunbird/email/messages/messages_fr.properties create mode 100644 ansible/artifacts/sunbird/email/messages/messages_it.properties create mode 100644 ansible/artifacts/sunbird/email/messages/messages_ja.properties create mode 100644 ansible/artifacts/sunbird/email/messages/messages_lt.properties create mode 100644 ansible/artifacts/sunbird/email/messages/messages_no.properties create mode 100644 ansible/artifacts/sunbird/email/messages/messages_pt_BR.properties create mode 100644 ansible/artifacts/sunbird/email/messages/messages_ru.properties create mode 100644 ansible/artifacts/sunbird/email/messages/messages_sv.properties create mode 100644 ansible/artifacts/sunbird/email/text/email-test.ftl create mode 100644 ansible/artifacts/sunbird/email/text/email-verification.ftl create mode 100644 ansible/artifacts/sunbird/email/text/event-login_error.ftl create mode 100644 ansible/artifacts/sunbird/email/text/event-remove_totp.ftl create mode 100644 ansible/artifacts/sunbird/email/text/event-update_password.ftl create mode 100644 ansible/artifacts/sunbird/email/text/event-update_totp.ftl create mode 100644 ansible/artifacts/sunbird/email/text/executeActions.ftl create mode 100644 ansible/artifacts/sunbird/email/text/identity-provider-link.ftl create mode 100644 ansible/artifacts/sunbird/email/text/password-reset.ftl create mode 100644 ansible/artifacts/sunbird/email/theme.properties create mode 100644 ansible/artifacts/sunbird/login/login-page-expired.ftl create mode 100644 ansible/artifacts/sunbird/login/login-reset-password.ftl create mode 100644 ansible/artifacts/sunbird/login/login-update-password.ftl create mode 100644 ansible/artifacts/sunbird/login/login.ftl rename ansible/artifacts/sunbird/login/{resources => }/messages/messages_en.properties (86%) create mode 100644 ansible/artifacts/sunbird/login/resources/css/fonts/notosans/cyrillic-ext.woff2 create mode 100644 ansible/artifacts/sunbird/login/resources/css/fonts/notosans/cyrillic.woff2 create mode 100644 ansible/artifacts/sunbird/login/resources/css/fonts/notosans/devanagari.woff2 create mode 100644 ansible/artifacts/sunbird/login/resources/css/fonts/notosans/greek-ext.woff2 create mode 100644 ansible/artifacts/sunbird/login/resources/css/fonts/notosans/greek.woff2 create mode 100644 ansible/artifacts/sunbird/login/resources/css/fonts/notosans/latin-ext.woff2 create mode 100644 ansible/artifacts/sunbird/login/resources/css/fonts/notosans/latin.woff2 create mode 100644 ansible/artifacts/sunbird/login/resources/css/fonts/notosans/notosans.css create mode 100644 ansible/artifacts/sunbird/login/resources/css/fonts/notosans/vietnamese.woff2 create mode 100644 ansible/artifacts/sunbird/login/resources/css/themes/default/assets/fonts/icons.eot create mode 100644 ansible/artifacts/sunbird/login/resources/css/themes/default/assets/fonts/icons.svg create mode 100644 ansible/artifacts/sunbird/login/resources/css/themes/default/assets/fonts/icons.ttf create mode 100644 ansible/artifacts/sunbird/login/resources/css/themes/default/assets/fonts/icons.woff create mode 100644 ansible/artifacts/sunbird/login/resources/css/themes/default/assets/fonts/icons.woff2 create mode 100644 ansible/artifacts/sunbird/login/resources/img/bg.svg create mode 100644 ansible/artifacts/sunbird/login/resources/img/diksha_gov_logo.svg create mode 100644 ansible/artifacts/sunbird/login/resources/img/favicon.ico create mode 100644 ansible/artifacts/sunbird/login/resources/img/google.png create mode 100644 ansible/artifacts/sunbird/login/resources/js/login.js delete mode 100644 ansible/artifacts/sunbird/login/resources/login-reset-password.ftl delete mode 100644 ansible/artifacts/sunbird/login/resources/login-update-password.ftl delete mode 100644 ansible/artifacts/sunbird/login/resources/login.ftl create mode 100644 ansible/artifacts/sunbird/login/template.ftl rename ansible/artifacts/sunbird/login/{resources => }/theme.properties (84%) create mode 100644 ansible/docker_image_push.yml delete mode 100644 ansible/inventories/sample/group_vars/postgresql-master delete mode 100644 ansible/inventories/sample/hosts create mode 100644 ansible/inventory/env/common.yml create mode 100644 ansible/inventory/env/group_vars/all.yml create mode 120000 ansible/inventory/env/group_vars/env.yml delete mode 100644 ansible/jmeter-provision.yml create mode 100644 ansible/roles/artifacts-download-azure/meta/main.yml create mode 100644 ansible/roles/artifacts-download-azure/tasks/main.yml create mode 100644 ansible/roles/cassandra-backup/defaults/main.yml create mode 100644 ansible/roles/changekey/defaults/main.yml create mode 100644 ansible/roles/changekey/tasks/main.yml create mode 100644 ansible/roles/jenkins/meta/main.yml mode change 100644 => 100755 ansible/roles/keycloak/tasks/deploy.yml create mode 100644 ansible/roles/prometheus_config/defaults/main.yml create mode 100644 ansible/roles/prometheus_config/tasks/main.yml create mode 100644 ansible/roles/stack-badger/tasks/.user.yml.swp delete mode 100644 ansible/roles/stack-sunbird/templates/sunbird_actor-service.env create mode 100644 ansible/roles/sunbird-auth-deploy/defaults/main.yml create mode 100644 ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/PKG-INFO create mode 100644 ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/README.md create mode 100644 ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak-realm.json create mode 100644 ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/__init__.py create mode 100644 ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/authorization/__init__.py create mode 100644 ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/authorization/permission.py create mode 100644 ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/authorization/policy.py create mode 100644 ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/authorization/role.py create mode 100644 ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/connection.py create mode 100644 ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/exceptions.py create mode 100644 ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/keycloak_admin.py create mode 100644 ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/keycloak_main.py create mode 100644 ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/keycloak_openid.py create mode 100644 ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/python_keycloak.egg-info/PKG-INFO create mode 100644 ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/python_keycloak.egg-info/SOURCES.txt create mode 100644 ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/python_keycloak.egg-info/dependency_links.txt create mode 100644 ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/python_keycloak.egg-info/requires.txt create mode 100644 ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/python_keycloak.egg-info/top_level.txt create mode 100644 ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/tests/__init__.py create mode 100644 ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/tests/test_connection.py create mode 100644 ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/urls_patterns.py create mode 100644 ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/python_keycloak.egg-info/PKG-INFO create mode 100644 ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/python_keycloak.egg-info/SOURCES.txt create mode 100644 ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/python_keycloak.egg-info/dependency_links.txt create mode 100644 ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/python_keycloak.egg-info/requires.txt create mode 100644 ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/python_keycloak.egg-info/top_level.txt create mode 100644 ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/roles.json create mode 100644 ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/setup.cfg create mode 100644 ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/setup.py create mode 100644 ansible/roles/sunbird-auth-deploy/tasks/bootstrap.yml create mode 100644 ansible/roles/sunbird-auth-deploy/tasks/deploy.yml create mode 100644 ansible/roles/sunbird-auth-deploy/tasks/main.yml create mode 100644 ansible/roles/sunbird-auth-deploy/templates/Msg91Creds.json.j2 create mode 100644 ansible/roles/sunbird-auth-deploy/templates/keycloak-bootstrap.conf.j2 create mode 100644 ansible/roles/sunbird-auth-deploy/templates/keycloak-realm.j2 create mode 100644 ansible/roles/sunbird-auth-deploy/templates/module.xml.j2 create mode 100644 ansible/roles/sunbird-auth-deploy/templates/standalone-ha.xml create mode 100644 ansible/roles/sunbird-auth-deploy/templates/standalone.xml create mode 100644 ansible/roles/sunbird-auth-provision/defaults/main.yml create mode 100644 ansible/roles/sunbird-auth-provision/tasks/install-keycloak.yml create mode 100644 ansible/roles/sunbird-auth-provision/tasks/main.yml create mode 100644 ansible/roles/sunbird-auth-provision/tasks/prerequisite.yml create mode 100644 ansible/roles/sunbird-auth-provision/templates/keycloak-service.j2 delete mode 100644 ansible/roles/sunbird-system-init-upgrade/tasks/main.yml delete mode 100644 ansible/roles/sunbird-system-init-upgrade/templates/system_init_upgrade_commands.j2 delete mode 100644 ansible/roles/sunbird-system-init/tasks/main.yml delete mode 100644 ansible/roles/sunbird-system-init/templates/system_init_commands.j2 create mode 100644 ansible/rotatekeys.yml rename ansible/{mongobackup.yml => sunbird-auth-deploy.yml} (60%) rename ansible/{jmeter-deploy.yml => sunbird-auth-provision.yml} (57%) delete mode 100644 cloud/azure/arm/swarm/acs-engine/common/azuredeploy.json delete mode 100644 cloud/azure/arm/swarm/acs-engine/production.sample/README.md delete mode 100644 cloud/azure/arm/swarm/acs-engine/production.sample/azuredeploy.parameters.json.sample delete mode 100644 cloud/azure/arm/swarm/acs-engine/production.sample/env.sh delete mode 100644 cloud/azure/arm/vm/azuredeploy.json delete mode 100644 cloud/azure/arm/vm/azuredeploy.parameters.json.sample delete mode 100644 cloud/openvpn/openvpn.sh create mode 100755 deploy/jenkins/butler create mode 100644 deploy/jenkins/envOrder.txt.sample create mode 100755 deploy/jenkins/jenkins-jobs-setup.sh create mode 100755 deploy/jenkins/jenkins-plugins-setup.sh create mode 100755 deploy/jenkins/jenkins-server-setup.sh create mode 100644 deploy/jenkins/jobs/ArtifactUpload/config.xml create mode 100644 deploy/jenkins/jobs/ArtifactUpload/jobs/dev/config.xml create mode 100644 deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/config.xml create mode 100644 deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/APIManager/config.xml create mode 100644 deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/APIManagerEcho/config.xml create mode 100644 deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/AdminUtils/config.xml create mode 100644 deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Badger/config.xml create mode 100644 deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Cassandra/config.xml create mode 100644 deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Config/config.xml create mode 100644 deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Content/config.xml create mode 100644 deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Keycloak/config.xml create mode 100644 deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Learner/config.xml create mode 100644 deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Player/config.xml create mode 100644 deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Proxy/config.xml create mode 100644 deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Telemetry/config.xml create mode 100644 deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/DataPipeline/config.xml create mode 100644 deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/DataPipeline/jobs/Analytics/config.xml create mode 100644 deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/DataPipeline/jobs/DataPipeline/config.xml create mode 100644 deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/DataPipeline/jobs/Secor/config.xml create mode 100644 deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/KnowledgePlatform/config.xml create mode 100644 deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/KnowledgePlatform/jobs/KnowledgePlatform/config.xml create mode 100644 deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4j/config.xml create mode 100644 deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/KnowledgePlatform/jobs/SyncTool/config.xml create mode 100644 deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/KnowledgePlatform/jobs/Yarn/config.xml create mode 100644 deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Plugins/config.xml create mode 100644 deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Plugins/jobs/CEPlugins/config.xml create mode 100644 deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Plugins/jobs/CollectionEditor/config.xml create mode 100644 deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Plugins/jobs/ContentFramework/config.xml create mode 100644 deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Plugins/jobs/ContentRendererPreview/config.xml create mode 100644 deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Plugins/jobs/GenericEditor/config.xml create mode 100644 deploy/jenkins/jobs/Build/config.xml create mode 100644 deploy/jenkins/jobs/Build/jobs/Core/config.xml create mode 100644 deploy/jenkins/jobs/Build/jobs/Core/jobs/APIManager/config.xml create mode 100644 deploy/jenkins/jobs/Build/jobs/Core/jobs/APIManagerEcho/config.xml create mode 100644 deploy/jenkins/jobs/Build/jobs/Core/jobs/AdminUtils/config.xml create mode 100644 deploy/jenkins/jobs/Build/jobs/Core/jobs/Badger/config.xml create mode 100644 deploy/jenkins/jobs/Build/jobs/Core/jobs/Cassandra/config.xml create mode 100644 deploy/jenkins/jobs/Build/jobs/Core/jobs/CloudStorageSDK/config.xml create mode 100644 deploy/jenkins/jobs/Build/jobs/Core/jobs/Config/config.xml create mode 100644 deploy/jenkins/jobs/Build/jobs/Core/jobs/Content/config.xml create mode 100644 deploy/jenkins/jobs/Build/jobs/Core/jobs/Keycloak/config.xml create mode 100644 deploy/jenkins/jobs/Build/jobs/Core/jobs/Learner/config.xml create mode 100644 deploy/jenkins/jobs/Build/jobs/Core/jobs/Player/config.xml create mode 100644 deploy/jenkins/jobs/Build/jobs/Core/jobs/Proxy/config.xml create mode 100644 deploy/jenkins/jobs/Build/jobs/Core/jobs/Telemetry/config.xml create mode 100644 deploy/jenkins/jobs/Build/jobs/DataPipeline/config.xml create mode 100644 deploy/jenkins/jobs/Build/jobs/DataPipeline/jobs/Analytics/config.xml create mode 100644 deploy/jenkins/jobs/Build/jobs/DataPipeline/jobs/DataPipeline/config.xml create mode 100644 deploy/jenkins/jobs/Build/jobs/DataPipeline/jobs/Secor/config.xml create mode 100644 deploy/jenkins/jobs/Build/jobs/KnowledgePlatform/config.xml create mode 100644 deploy/jenkins/jobs/Build/jobs/KnowledgePlatform/jobs/KnowledgePlatform/config.xml create mode 100644 deploy/jenkins/jobs/Build/jobs/KnowledgePlatform/jobs/Neo4j/config.xml create mode 100644 deploy/jenkins/jobs/Build/jobs/KnowledgePlatform/jobs/SyncTool/config.xml create mode 100644 deploy/jenkins/jobs/Build/jobs/KnowledgePlatform/jobs/Yarn/config.xml create mode 100644 deploy/jenkins/jobs/Build/jobs/Plugins/config.xml create mode 100644 deploy/jenkins/jobs/Build/jobs/Plugins/jobs/CEPlugins/config.xml create mode 100644 deploy/jenkins/jobs/Build/jobs/Plugins/jobs/CollectionEditor/config.xml create mode 100644 deploy/jenkins/jobs/Build/jobs/Plugins/jobs/ContentFramework/config.xml create mode 100644 deploy/jenkins/jobs/Build/jobs/Plugins/jobs/ContentRendererPreview/config.xml create mode 100644 deploy/jenkins/jobs/Build/jobs/Plugins/jobs/GenericEditor/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/APIManager/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/AdminUtils/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/ApplicationElasticSearch/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Badger/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Bootstrap/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Cassandra/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Config/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Content/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/FuntionalTestCases/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Keycloak/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/KeycloakRealm/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Learner/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/LoggerElasticSearch/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Logging/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Monitoring/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/OnboardAPIs/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/OnboardConsumers/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Player/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Proxy/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Telemetry/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/TelemetryLogstash/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/TelemetryLogstashDataPipeline/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsAPI/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsFetchLogs/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsGeoLocationDBSetup/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsPopulatePSQLConsumerChannelMapping/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsReplayJobs/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsStartJobManager/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsSubmitJobs/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/CassandraDbUpdate/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/DataProducts/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/KafkaIndexer/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/KafkaSetup/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/Monitoring/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/SamzaTelemetrySchemas/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/Secor/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/Yarn/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/CassandraDbUpdate/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/ContentTool/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/FileSyncTool/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/KafkaSetup/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Learning/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Monitoring/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4j/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4jDefinitionUpdate/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4jElasticSearchSyncTool/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Search/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/StartNeo4jCluster/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/StopNeo4jCluster/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/ValidateLearning/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Yarn/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Plugins/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Plugins/jobs/CEPlugins/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Plugins/jobs/CollectionEditor/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Plugins/jobs/ContentFramework/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Plugins/jobs/ContentRendererPreview/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Plugins/jobs/GenericEditor/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Summary/config.xml create mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Summary/jobs/DeployedVersions/config.xml create mode 100644 deploy/jenkins/jobs/OpsAdministration/config.xml create mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/dev/config.xml create mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/config.xml create mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/ApplicationElasticsearchBackup/config.xml create mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/ApplicationElasticsearchRestore/config.xml create mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/Bootstrap/config.xml create mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/CassandraBackup/config.xml create mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/KeyRotation/config.xml create mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/LoggerElasticSearchBackup/config.xml create mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/LoggerElasticSearchRestore/config.xml create mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/PostgresqlBackup/config.xml create mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/PostgresqlRestore/config.xml create mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/PrometheusBackup/config.xml create mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/SwarmBootstrap/config.xml create mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/config.xml create mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/AnalyticsAPILogs/config.xml create mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/Bootstrap/config.xml create mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/CassandraBackup/config.xml create mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/CassandraRestore/config.xml create mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/ElasticsearchBackup/config.xml create mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/ElasticsearchRestore/config.xml create mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/InfluxDBBackup/config.xml create mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/PostgresqlBackup/config.xml create mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/PostgresqlRestore/config.xml create mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/KnowledgePlatform/config.xml create mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/KnowledgePlatform/jobs/Bootstrap/config.xml create mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/KnowledgePlatform/jobs/CassandraBackup/config.xml create mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/KnowledgePlatform/jobs/CassandraRestore/config.xml create mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/KnowledgePlatform/jobs/ElasticsearchBackup/config.xml create mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/KnowledgePlatform/jobs/ElasticsearchRestore/config.xml create mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4jBackup/config.xml create mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4jRestore/config.xml create mode 100644 deploy/jenkins/jobs/Provision/config.xml create mode 100644 deploy/jenkins/jobs/Provision/jobs/dev/config.xml create mode 100644 deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/config.xml create mode 100644 deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Cassandra/config.xml create mode 100644 deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/JenkinsSlave/config.xml create mode 100644 deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Kafka/config.xml create mode 100644 deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Keycloak/config.xml create mode 100644 deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/LogElasticSearch/config.xml create mode 100644 deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Postgres/config.xml create mode 100644 deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/PostgresDbUpdate/config.xml create mode 100644 deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Registry/config.xml create mode 100644 deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Secor/config.xml create mode 100644 deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/config.xml create mode 100644 deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/AnalyticsAPI/config.xml create mode 100644 deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/AnalyticsSecor/config.xml create mode 100644 deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/AnalyticsSpark/config.xml create mode 100644 deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/Cassandra/config.xml create mode 100644 deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/InfluxDB/config.xml create mode 100644 deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/Kafka/config.xml create mode 100644 deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/Kibana/config.xml create mode 100644 deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/Postgres/config.xml create mode 100644 deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/TelemetrySearch/config.xml create mode 100644 deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/Yarn/config.xml create mode 100644 deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/Zookeeper/config.xml create mode 100644 deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/config.xml create mode 100644 deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Cassandra/config.xml create mode 100644 deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/CompositeSearch/config.xml create mode 100644 deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Kafka/config.xml create mode 100644 deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Learning/config.xml create mode 100644 deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4j/config.xml create mode 100644 deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Redis/config.xml create mode 100644 deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Search/config.xml create mode 100644 deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Yarn/config.xml create mode 100644 deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Zookeeper/config.xml create mode 100644 deploy/jenkins/plugins.txt create mode 100644 deploy/utilities/kill_samza_app.sh create mode 100644 images/openbadger/Jenkinsfile create mode 100644 images/proxy/Jenkinsfile delete mode 100644 pipelines/adminutils/Jenkinsfile.sample delete mode 100755 pipelines/adminutils/deploy.sh delete mode 100755 pipelines/adminutils/installDeps.sh delete mode 100644 pipelines/adminutils/metadata.json delete mode 100644 pipelines/am-onboard-apis/Jenkinsfile.sample delete mode 100644 pipelines/am-onboard-consumers/Jenkinsfile.sample delete mode 100644 pipelines/api-manager/Jenkinsfile.sample delete mode 100755 pipelines/api-manager/deploy.sh delete mode 100755 pipelines/api-manager/installDeps.sh delete mode 100644 pipelines/api-manager/metadata.json delete mode 100644 pipelines/application-elasticsearch/Jenkinsfile.sample create mode 100644 pipelines/backup/cassandra-backup/Jenkinsfile create mode 100644 pipelines/backup/es-backup/Jenkinsfile create mode 100644 pipelines/backup/es-restore/Jenkinsfile create mode 100644 pipelines/backup/logger-es-backup/Jenkinsfile create mode 100644 pipelines/backup/logger-es-restore/Jenkinsfile create mode 100644 pipelines/backup/postgresql-backup/Jenkinsfile create mode 100644 pipelines/backup/postgresql-restore/Jenkinsfile create mode 100644 pipelines/backup/prometheus-backup/Jenkinsfile create mode 100644 pipelines/bootstrap-swarm/Jenkinsfile create mode 100644 pipelines/bootstrap/Jenkinsfile create mode 100644 pipelines/bootstrap/Jenkinsfile.rotatekey delete mode 100644 pipelines/cassandra-backup/Jenkinsfile.sample delete mode 100644 pipelines/cassandra-restore/Jenkinsfile.sample delete mode 100644 pipelines/cassandra/Jenkinsfile.sample delete mode 100644 pipelines/cassandra/installDeps.sh create mode 100644 pipelines/deploy/CEPlugins/Jenkinsfile create mode 100644 pipelines/deploy/CollectionEditor/Jenkinsfile create mode 100644 pipelines/deploy/ContentFramework/Jenkinsfile create mode 100644 pipelines/deploy/ContentRendererPreview/Jenkinsfile create mode 100644 pipelines/deploy/GenericEditor/Jenkinsfile create mode 100644 pipelines/deploy/adminutils/Jenkinsfile create mode 100644 pipelines/deploy/am-onboard-apis/Jenkinsfile create mode 100644 pipelines/deploy/am-onboard-consumers/Jenkinsfile create mode 100644 pipelines/deploy/api-manager/Jenkinsfile create mode 100644 pipelines/deploy/application-elasticsearch/Jenkinsfile create mode 100644 pipelines/deploy/badger/Jenkinsfile create mode 100644 pipelines/deploy/cassandra-deploy/Jenkinsfile create mode 100644 pipelines/deploy/config-service/Jenkinsfile create mode 100644 pipelines/deploy/content/Jenkinsfile create mode 100644 pipelines/deploy/keycloak-realm/Jenkinsfile create mode 100644 pipelines/deploy/keycloak/Jenkinsfile create mode 100644 pipelines/deploy/learner/Jenkinsfile create mode 100644 pipelines/deploy/logger-elasticsearch/Jenkinsfile create mode 100644 pipelines/deploy/logger/Jenkinsfile create mode 100644 pipelines/deploy/monitor/Core/Jenkinsfile create mode 100644 pipelines/deploy/monitor/DataPipeline/Jenkinsfile create mode 100644 pipelines/deploy/monitor/Jenkinsfile create mode 100644 pipelines/deploy/monitor/KnowledgePlatform/Jenkinsfile create mode 100644 pipelines/deploy/player/Jenkinsfile create mode 100644 pipelines/deploy/proxy/Jenkinsfile create mode 100644 pipelines/deploy/telemetry-logstash-datapipeline/Jenkinsfile create mode 100644 pipelines/deploy/telemetry-logstash/Jenkinsfile create mode 100644 pipelines/deploy/telemetry/Jenkinsfile delete mode 100755 pipelines/dockerTag.sh delete mode 100644 pipelines/documentation-jenkins-slave/Jenkinsfile.deploy-slave delete mode 100755 pipelines/documentation-jenkins-slave/deploy.sh delete mode 100644 pipelines/es-backup/Jenkinsfile.sample delete mode 100755 pipelines/es-backup/deploy.sh delete mode 100755 pipelines/es-backup/installDeps.sh delete mode 100644 pipelines/es-restore/Jenkinsfile.sample delete mode 100755 pipelines/es-restore/deploy.sh delete mode 100755 pipelines/es-restore/installDeps.sh delete mode 100644 pipelines/jenkins-backup-upload/Jenkinsfile.admin delete mode 100755 pipelines/keycloak1/deploy.sh delete mode 100755 pipelines/keycloak1/installDeps.sh delete mode 100644 pipelines/keycloak1/metadata.json delete mode 100755 pipelines/keycloak2/deploy.sh delete mode 100755 pipelines/keycloak2/installDeps.sh delete mode 100644 pipelines/keycloak2/metadata.json delete mode 100644 pipelines/log-es-backup/Jenkinsfile.sample delete mode 100755 pipelines/log-es-backup/deploy.sh delete mode 100755 pipelines/log-es-backup/installDeps.sh delete mode 100755 pipelines/log-es-restore/deploy.sh delete mode 100755 pipelines/log-es-restore/installDeps.sh delete mode 100644 pipelines/logger-elasticsearch/Jenkinsfile.sample delete mode 100755 pipelines/logger/deploy.sh delete mode 100755 pipelines/logger/installDeps.sh delete mode 100644 pipelines/mongodb-backup/Jenkinsfile.sample delete mode 100644 pipelines/mongodb-backup/installDeps.sh delete mode 100644 pipelines/mongodb/installDeps.sh delete mode 100644 pipelines/monitor/Jenkinsfile.sample delete mode 100755 pipelines/monitor/deploy.sh delete mode 100755 pipelines/monitor/installDeps.sh delete mode 100644 pipelines/postgresql-backup/Jenkinsfile.sample delete mode 100644 pipelines/postgresql-data-update/Jenkinsfile.sample delete mode 100644 pipelines/postgresql-master/Jenkinsfile.sample delete mode 100644 pipelines/postgresql-restore/Jenkinsfile.sample delete mode 100644 pipelines/postgresql-slave-to-master-promotion/Jenkinsfile.sample delete mode 100644 pipelines/postgresql-slave/Jenkinsfile.sample create mode 100644 pipelines/provision/cassandra/Jenkinsfile create mode 100644 pipelines/provision/jenkins-slave/Jenkinsfile create mode 100644 pipelines/provision/kafka/Jenkinsfile create mode 100644 pipelines/provision/keycloak/Jenkinsfile create mode 100644 pipelines/provision/log-es/Jenkinsfile create mode 100644 pipelines/provision/postgres-db-update/Jenkinsfile create mode 100644 pipelines/provision/postgres/Jenkinsfile create mode 100644 pipelines/provision/registry/Jenkinsfile create mode 100644 pipelines/provision/secor/Jenkinsfile delete mode 100644 pipelines/proxy/Jenkinsfile.sample delete mode 100755 pipelines/proxy/deploy.sh delete mode 100644 pipelines/proxy/metadata.json create mode 100644 pipelines/summary/Jenkinsfile delete mode 100644 pipelines/sunbird-actor-service/Jenkinsfile.sample delete mode 100755 pipelines/sunbird-actor-service/deploy.sh delete mode 100755 pipelines/sunbird-actor-service/installDeps.sh delete mode 100644 pipelines/sunbird-actor-service/metadata.json delete mode 100644 pipelines/sunbird-bootstrap/Jenkinsfile.db.sample delete mode 100644 pipelines/sunbird-bootstrap/Jenkinsfile.sample delete mode 100644 pipelines/sunbird-bootstrap/installDeps.sh delete mode 100644 pipelines/sunbird-content-service/Jenkinsfile.sample delete mode 100755 pipelines/sunbird-content-service/deploy.sh delete mode 100755 pipelines/sunbird-content-service/installDeps.sh delete mode 100644 pipelines/sunbird-content-service/metadata.json delete mode 100644 pipelines/sunbird-learner-service/Jenkinsfile.sample delete mode 100755 pipelines/sunbird-learner-service/deploy.sh delete mode 100755 pipelines/sunbird-learner-service/installDeps.sh delete mode 100644 pipelines/sunbird-learner-service/metadata.json delete mode 100644 pipelines/sunbird-player/Jenkinsfile.sample delete mode 100755 pipelines/sunbird-player/deploy.sh delete mode 100755 pipelines/sunbird-player/installDeps.sh delete mode 100644 pipelines/sunbird-player/metadata.json delete mode 100644 pipelines/sunbird-telemetry-service/Jenkinsfile.sample delete mode 100755 pipelines/sunbird-telemetry-service/deploy.sh delete mode 100755 pipelines/sunbird-telemetry-service/installDeps.sh delete mode 100644 pipelines/sunbird-telemetry-service/metadata.json delete mode 100644 pipelines/swarm-agent-docker-prune/Jenkinsfile.sample create mode 100644 pipelines/upload/artifacts/Jenkinsfile create mode 100644 pipelines/upload/docker/Jenkinsfile create mode 100644 pipelines/upload/plugins/Jenkinsfile create mode 100644 private_repo/ansible/inventory/dev/Core/common.yml create mode 100644 private_repo/ansible/inventory/dev/Core/hosts create mode 100644 private_repo/ansible/inventory/dev/Core/secrets.yml create mode 100644 private_repo/ansible/inventory/dev/DataPipeline/common.yml create mode 100644 private_repo/ansible/inventory/dev/DataPipeline/hosts create mode 100644 private_repo/ansible/inventory/dev/DataPipeline/secrets.yml create mode 100644 private_repo/ansible/inventory/dev/KnowledgePlatform/common.yml create mode 100644 private_repo/ansible/inventory/dev/KnowledgePlatform/hosts create mode 100644 private_repo/ansible/inventory/dev/KnowledgePlatform/secrets.yml diff --git a/.circleci/config.yml b/.circleci/config.yml index 85e0adb751..cbba181959 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -29,7 +29,7 @@ workflows: nightly: triggers: - schedule: -# cron: "0 17 1,17 * *" +# cron: "0 17 1,5,9,13,17,21,25,29 * *" filters: branches: only: diff --git a/Jenkinsfile b/Jenkinsfile deleted file mode 100644 index e022376380..0000000000 --- a/Jenkinsfile +++ /dev/null @@ -1,26 +0,0 @@ -pipeline { - agent { - label 'build-slave' - } - triggers { - pollSCM('H/5 * * * *') - } - stages { - stage('Pre-Build'){ - steps { - sh('chmod a+x ansible/installDeps.sh') - sh('./ansible/installDeps.sh') - } - } - stage('Build') { - steps { - sh './test.sh' - } - } - } - post { - failure { - slackSend channel: '#devops-team', color: 'danger', message: "Build Failed - ${env.JOB_NAME} ${env.BUILD_NUMBER} (<${env.BUILD_URL}|Open>)" - } - } -} \ No newline at end of file diff --git a/ansible/api-manager.yml b/ansible/api-manager.yml index e71115e2ad..8413d24952 100644 --- a/ansible/api-manager.yml +++ b/ansible/api-manager.yml @@ -1,6 +1,7 @@ --- - name: Kong API - hosts: kong-api + become: yes + hosts: "{{groups['swarm-manager-1'][0]}}" roles: - {role: kong-api, tags: ['kong-api']} - - {role: kong-consumer, tags: ['kong-consumer']} \ No newline at end of file + - {role: kong-consumer, tags: ['kong-consumer']} diff --git a/ansible/artifacts-download.yml b/ansible/artifacts-download.yml new file mode 100644 index 0000000000..93c4af4539 --- /dev/null +++ b/ansible/artifacts-download.yml @@ -0,0 +1,10 @@ +--- +- hosts: local + become: yes + vars_files: + - "{{inventory_dir}}/secrets.yml" + environment: + AZURE_STORAGE_ACCOUNT: "{{ azure_account_name }}" + AZURE_STORAGE_KEY: "{{ azure_account_key }}" + roles: + - artifacts-download-azure diff --git a/ansible/artifacts-upload.yml b/ansible/artifacts-upload.yml index 6eb883c1e5..c09e66dd2c 100644 --- a/ansible/artifacts-upload.yml +++ b/ansible/artifacts-upload.yml @@ -1,6 +1,10 @@ --- - hosts: localhost + become: yes vars_files: - - ['{{inventory_dir}}/secrets.yml', 'secrets/{{env}}.yml'] + - "{{inventory_dir}}/secrets.yml" + environment: + AZURE_STORAGE_ACCOUNT: "{{ azure_account_name }}" + AZURE_STORAGE_KEY: "{{ azure_account_key }}" roles: - artifacts-upload-azure diff --git a/ansible/artifacts/sunbird/email/html/email-test.ftl b/ansible/artifacts/sunbird/email/html/email-test.ftl new file mode 100644 index 0000000000..604415d22a --- /dev/null +++ b/ansible/artifacts/sunbird/email/html/email-test.ftl @@ -0,0 +1,5 @@ + + +${msg("emailTestBodyHtml",realmName)} + + diff --git a/ansible/artifacts/sunbird/email/html/email-verification.ftl b/ansible/artifacts/sunbird/email/html/email-verification.ftl new file mode 100644 index 0000000000..eb7682a272 --- /dev/null +++ b/ansible/artifacts/sunbird/email/html/email-verification.ftl @@ -0,0 +1,5 @@ + + +${msg("emailVerificationBodyHtml",link, linkExpiration, realmName)} + + diff --git a/ansible/artifacts/sunbird/email/html/event-login_error.ftl b/ansible/artifacts/sunbird/email/html/event-login_error.ftl new file mode 100644 index 0000000000..d31410307c --- /dev/null +++ b/ansible/artifacts/sunbird/email/html/event-login_error.ftl @@ -0,0 +1,5 @@ + + +${msg("eventLoginErrorBodyHtml",event.date,event.ipAddress)} + + diff --git a/ansible/artifacts/sunbird/email/html/event-remove_totp.ftl b/ansible/artifacts/sunbird/email/html/event-remove_totp.ftl new file mode 100644 index 0000000000..91699ea349 --- /dev/null +++ b/ansible/artifacts/sunbird/email/html/event-remove_totp.ftl @@ -0,0 +1,5 @@ + + +${msg("eventRemoveTotpBodyHtml",event.date, event.ipAddress)} + + diff --git a/ansible/artifacts/sunbird/email/html/event-update_password.ftl b/ansible/artifacts/sunbird/email/html/event-update_password.ftl new file mode 100644 index 0000000000..8a6da60a50 --- /dev/null +++ b/ansible/artifacts/sunbird/email/html/event-update_password.ftl @@ -0,0 +1,5 @@ + + +${msg("eventUpdatePasswordBodyHtml",event.date, event.ipAddress)} + + diff --git a/ansible/artifacts/sunbird/email/html/event-update_totp.ftl b/ansible/artifacts/sunbird/email/html/event-update_totp.ftl new file mode 100644 index 0000000000..c0190c7278 --- /dev/null +++ b/ansible/artifacts/sunbird/email/html/event-update_totp.ftl @@ -0,0 +1,5 @@ + + +${msg("eventUpdateTotpBodyHtml",event.date, event.ipAddress)} + + diff --git a/ansible/artifacts/sunbird/email/html/executeActions.ftl b/ansible/artifacts/sunbird/email/html/executeActions.ftl new file mode 100644 index 0000000000..f75e10fa2e --- /dev/null +++ b/ansible/artifacts/sunbird/email/html/executeActions.ftl @@ -0,0 +1,5 @@ + + +${msg("executeActionsBodyHtml",link, linkExpiration, realmName)} + + diff --git a/ansible/artifacts/sunbird/email/html/identity-provider-link.ftl b/ansible/artifacts/sunbird/email/html/identity-provider-link.ftl new file mode 100644 index 0000000000..9c2db808b2 --- /dev/null +++ b/ansible/artifacts/sunbird/email/html/identity-provider-link.ftl @@ -0,0 +1,5 @@ + + +${msg("identityProviderLinkBodyHtml", identityProviderAlias, realmName, identityProviderContext.username, link, linkExpiration)} + + \ No newline at end of file diff --git a/ansible/artifacts/sunbird/email/html/password-reset.ftl b/ansible/artifacts/sunbird/email/html/password-reset.ftl new file mode 100644 index 0000000000..88088d3d16 --- /dev/null +++ b/ansible/artifacts/sunbird/email/html/password-reset.ftl @@ -0,0 +1,5 @@ + + +${msg("passwordResetBodyHtml",link,(linkExpiration/60)?string["0"],realmName)} + + diff --git a/ansible/artifacts/sunbird/email/messages/messages_ca.properties b/ansible/artifacts/sunbird/email/messages/messages_ca.properties new file mode 100644 index 0000000000..7f8504ae08 --- /dev/null +++ b/ansible/artifacts/sunbird/email/messages/messages_ca.properties @@ -0,0 +1,21 @@ +emailVerificationSubject=Verificaci\u00F3 d''email +emailVerificationBody=Alg\u00FA ha creat un compte de {2} amb aquesta adre\u00E7a de correu electr\u00F2nic. Si has estat tu, fes clic a l''enlla\u00E7 seg\u00FCent per verificar la teva adre\u00E7a de correu electr\u00F2nic.\n\n{0}\n\nAquest enlla\u00E7 expirar\u00E0 en {1} minuts.\n\nSi tu no has creat aquest compte, simplement ignora aquest missatge. +emailVerificationBodyHtml=

    Alg\u00FA ha creat un compte de {2} amb aquesta adre\u00E7a de correu electr\u00F2nic. Si has estat tu, fes clic a l''enlla\u00E7 seg\u00FCent per verificar la teva adre\u00E7a de correu electr\u00F2nic.

    {0}

    Aquest enlla\u00E7 expirar\u00E0 en {1} minuts.

    Si tu no has creat aquest compte, simplement ignora aquest missatge.

    +passwordResetSubject=Reinicia contrasenya +passwordResetBody=Alg\u00FA ha demanat de canviar les credencials del teu compte de {2}. Si has estat tu, fes clic a l''enlla\u00E7 seg\u00FCent per a reiniciar-les.\n\n{0}\n\nAquest enlla\u00E7 expirar\u00E0 en {1} minuts.\n\nSi no vols reiniciar les teves credencials, simplement ignora aquest missatge i no es realitzar\u00E0 cap canvi. +passwordResetBodyHtml=

    Alg\u00FA ha demanat de canviar les credencials del teu compte de {2}. Si has estat tu, fes clic a l''enlla\u00E7 seg\u00FCent per a reiniciar-les.

    {0}

    Aquest enlla\u00E7 expirar\u00E0 en {1} minuts.

    Si no vols reiniciar les teves credencials, simplement ignora aquest missatge i no es realitzar\u00E0 cap canvi.

    +executeActionsSubject=Actualitza el teu compte +executeActionsBody=L''administrador ha sol\u00B7licitat que actualitzis el teu compte de {2}. Fes clic a l''enlla\u00E7 inferior per iniciar aquest proc\u00E9s.\n\n{0}\n\nAquest enlla\u00E7 expirar\u00E0 en {1} minutes.\n\nSi no est\u00E0s al tant que l''administrador hagi sol\u00B7licitat aix\u00F2, simplement ignora aquest missatge i no es realitzar\u00E0 cap canvi. +executeActionsBodyHtml=

    L''administrador ha sol\u00B7licitat que actualitzis el teu compte de {2}. Fes clic a l''enlla\u00E7 inferior per iniciar aquest proc\u00E9s.

    {0}

    Aquest enlla\u00E7 expirar\u00E0 en {1} minutes.

    Si no est\u00E0s al tant que l''administrador hagi sol\u00B7licitat aix\u00F2, simplement ignora aquest missatge i no es realitzar\u00E0 cap canvi.

    +eventLoginErrorSubject=Fallada en l''inici de sessi\u00F3 +eventLoginErrorBody=S''ha detectat un intent d''acc\u00E9s fallit al teu compte el {0} des de {1}. Si no has estat tu, si us plau contacta amb l''administrador. +eventLoginErrorBodyHtml=

    S''ha detectat un intent d''acc\u00E9s fallit al teu compte el {0} des de {1}. Si no has estat tu, si us plau contacta amb l''administrador.

    +eventRemoveTotpSubject=Esborrat TOTP +eventRemoveTotpBody=TOTP s''ha eliminat del teu compte el {0} des de {1}. Si no has estat tu, per favor contacta amb l''administrador. +eventRemoveTotpBodyHtml=

    TOTP s''ha eliminat del teu compte el {0} des de {1}. Si no has estat tu, si us plau contacta amb l''administrador. +eventUpdatePasswordSubject=Actualitzaci\u00F3 de contrasenya +eventUpdatePasswordBody=La teva contrasenya s''ha actualitzat el {0} des de {1}. Si no has estat tu, si us plau contacta amb l''administrador. +eventUpdatePasswordBodyHtml=

    La teva contrasenya s''ha actualitzat el {0} des de {1}. Si no has estat tu, si us plau contacta amb l''administrador.

    +eventUpdateTotpSubject=Actualitzaci\u00F3 de TOTP +eventUpdateTotpBody=TOTP s''ha actualitzat al teu compte el {0} des de {1}. Si no has estat tu, si us plau contacta amb l''administrador. +eventUpdateTotpBodyHtml=

    TOTP s''ha actualitzat al teu compte el {0} des de {1}. Si no has estat tu, si us plau contacta amb l''administrador.

    diff --git a/ansible/artifacts/sunbird/email/messages/messages_de.properties b/ansible/artifacts/sunbird/email/messages/messages_de.properties new file mode 100644 index 0000000000..9068321b7b --- /dev/null +++ b/ansible/artifacts/sunbird/email/messages/messages_de.properties @@ -0,0 +1,24 @@ +emailVerificationSubject=E-Mail verifizieren +emailVerificationBody=Jemand hat ein {2} Konto mit dieser E-Mail Adresse erstellt. Falls Sie das waren, dann klicken Sie auf den Link, um die E-Mail Adresse zu verifizieren.\n\n{0}\n\nDieser Link wird in {1} Minuten ablaufen.\n\nFalls Sie dieses Konto nicht erstellt haben, dann k\u00F6nnen sie diese Nachricht ignorieren. +emailVerificationBodyHtml=

    Jemand hat ein {2} Konto mit dieser E-Mail Adresse erstellt. Falls das Sie waren, klicken Sie auf den Link, um die E-Mail Adresse zu verifizieren.

    {0}

    Dieser Link wird in {1} Minuten ablaufen.

    Falls Sie dieses Konto nicht erstellt haben, dann k\u00F6nnen sie diese Nachricht ignorieren.

    +identityProviderLinkSubject=Link {0} +identityProviderLinkBody=Es wurde beantragt Ihren Account {1} mit dem Account {0} von Benutzer {2} zu verlinken. Sollten Sie dies beantragt haben, klicken Sie auf den unten stehenden Link.\n\n{3}\n\n Die G\u00FCltigkeit des Links wird in {4} Minuten verfallen.\n\nSollten Sie Ihren Account nicht verlinken wollen, ignorieren Sie diese Nachricht. Wenn Sie die Accounts verlinken wird ein Login auf {1} \u00FCber {0} erm\u00F6glicht. +identityProviderLinkBodyHtml=

    Es wurde beantragt Ihren Account {1} mit dem Account {0} von Benutzer {2} zu verlinken. Sollten Sie dies beantragt haben, klicken Sie auf den unten stehenden Link.

    Link zur Best\u00E4tigung der Kontoverkn\u00FCpfung

    Die G\u00FCltigkeit des Links wird in {4} Minuten verfallen.

    Sollten Sie Ihren Account nicht verlinken wollen, ignorieren Sie diese Nachricht. Wenn Sie die Accounts verlinken wird ein Login auf {1} \u00FCber {0} erm\u00F6glicht.

    +passwordResetSubject=Passwort zur\u00FCcksetzen +passwordResetBody=Es wurde eine \u00C4nderung der Anmeldeinformationen f\u00FCr Ihren Account {2} angefordert. Wenn Sie diese \u00C4nderung beantragt haben, klicken Sie auf den unten stehenden Link.\n\n{0}\n\nDie G\u00FCltigkeit des Links wird in {1} Minuten verfallen.\n\nSollten Sie keine \u00C4nderung vollziehen wollen k\u00F6nnen Sie diese Nachricht ignorieren und an Ihrem Account wird nichts ge\u00E4ndert. +passwordResetBodyHtml=

    Es wurde eine \u00C4nderung der Anmeldeinformationen f\u00FCr Ihren Account {2} angefordert. Wenn Sie diese \u00C4nderung beantragt haben, klicken Sie auf den unten stehenden Link.

    Link zum Zur\u00FCcksetzen von Anmeldeinformationen

    Die G\u00FCltigkeit des Links wird in {1} Minuten verfallen.

    Sollten Sie keine \u00C4nderung vollziehen wollen k\u00F6nnen Sie diese Nachricht ignorieren und an Ihrem Account wird nichts ge\u00E4ndert.

    +executeActionsSubject=Aktualisieren Sie Ihr Konto +executeActionsBody=Ihr Administrator hat Sie aufgefordert Ihren Account {2} zu aktualisieren. Klicken Sie auf den unten stehenden Link um den Prozess zu starten.\n\n{0}\n\nDie G\u00FCltigkeit des Links wird in {1} Minuten verfallen.\n\nSollten Sie sich dieser Aufforderung nicht bewusst sein, ignorieren Sie diese Nachricht und Ihr Account bleibt unver\u00E4ndert. +executeActionsBodyHtml=

    Ihr Administrator hat Sie aufgefordert Ihren Account {2} zu aktualisieren. Klicken Sie auf den unten stehenden Link um den Prozess zu starten.

    Link zum Account-Update

    Die G\u00FCltigkeit des Links wird in {1} Minuten verfallen.

    Sollten Sie sich dieser Aufforderung nicht bewusst sein, ignorieren Sie diese Nachricht und Ihr Account bleibt unver\u00E4ndert.

    +eventLoginErrorSubject=Fehlgeschlagene Anmeldung +eventLoginErrorBody=Jemand hat um {0} von {1} versucht, sich mit ihrem Konto anzumelden. Falls das nicht Sie waren, dann kontaktieren Sie bitte Ihren Admin. +eventLoginErrorBodyHtml=

    Jemand hat um {0} von {1} versucht, sich mit ihrem Konto anzumelden. Falls das nicht Sie waren, dann kontaktieren Sie bitte Ihren Admin.

    +eventRemoveTotpSubject=TOTP Entfernt +eventRemoveTotpBody=TOTP wurde von ihrem Konto am {0} von {1} entfernt. Falls das nicht Sie waren, dann kontaktieren Sie bitte Ihren Admin. +eventRemoveTotpBodyHtml=

    TOTP wurde von ihrem Konto am {0} von {1} entfernt. Falls das nicht Sie waren, dann kontaktieren Sie bitte Ihren Admin.

    +eventUpdatePasswordSubject=Passwort Aktualisiert +eventUpdatePasswordBody=Ihr Passwort wurde am {0} von {1} ge\u00E4ndert. Falls das nicht Sie waren, dann kontaktieren Sie bitte Ihren Admin. +eventUpdatePasswordBodyHtml=

    Ihr Passwort wurde am {0} von {1} ge\u00E4ndert. Falls das nicht Sie waren, dann kontaktieren Sie bitte Ihren Admin.

    +eventUpdateTotpSubject=TOTP Aktualisiert +eventUpdateTotpBody=TOTP wurde am {0} von {1} ge\u00E4ndert. Falls das nicht Sie waren, dann kontaktieren Sie bitte Ihren Admin. +eventUpdateTotpBodyHtml=

    TOTP wurde am {0} von {1} ge\u00E4ndert. Falls das nicht Sie waren, dann kontaktieren Sie bitte Ihren Admin.

    diff --git a/ansible/artifacts/sunbird/email/messages/messages_en.properties b/ansible/artifacts/sunbird/email/messages/messages_en.properties new file mode 100644 index 0000000000..c2085ec559 --- /dev/null +++ b/ansible/artifacts/sunbird/email/messages/messages_en.properties @@ -0,0 +1,27 @@ +emailVerificationSubject=Verify email +emailVerificationBody=Someone has created a {2} account with this email address. If this was you, click the link below to verify your email address\n\n{0}\n\nThis link will expire within {1} minutes.\n\nIf you didn''t create this account, just ignore this message. +emailVerificationBodyHtml=

    Someone has created a {2} account with this email address. If this was you, click the link below to verify your email address

    Link to e-mail address verification

    This link will expire within {1} minutes.

    If you didn''t create this account, just ignore this message.

    +emailTestSubject=[KEYCLOAK] - SMTP test message +emailTestBody=This is a test message +emailTestBodyHtml=

    This is a test message

    +identityProviderLinkSubject=Link {0} +identityProviderLinkBody=Someone wants to link your "{1}" account with "{0}" account of user {2} . If this was you, click the link below to link accounts\n\n{3}\n\nThis link will expire within {4} minutes.\n\nIf you don''t want to link account, just ignore this message. If you link accounts, you will be able to login to {1} through {0}. +identityProviderLinkBodyHtml=

    Someone wants to link your {1} account with {0} account of user {2} . If this was you, click the link below to link accounts

    Link to confirm account linking

    This link will expire within {4} minutes.

    If you don''t want to link account, just ignore this message. If you link accounts, you will be able to login to {1} through {0}.

    +passwordResetSubject=Reset password +passwordResetBody=Someone just requested to change your {2} account''s credentials. If this was you, click on the link below to reset them.\n\n{0}\n\nThis link and code will expire within {1} minutes.\n\nIf you don''t want to reset your credentials, just ignore this message and nothing will be changed. +passwordResetBodyHtml=

    Someone just requested to change your {2} account''s credentials. If this was you, click on the link below to reset them.

    Link to reset credentials

    This link will expire within {1} Hours.

    If you don''t want to reset your credentials, just ignore this message and nothing will be changed.

    +executeActionsSubject=Update Your Account +executeActionsBody=Your administrator has just requested that you update your {2} account. Click on the link below to start this process.\n\n{0}\n\nThis link will expire within {1} minutes.\n\nIf you are unaware that your admin has requested this, just ignore this message and nothing will be changed. +executeActionsBodyHtml=

    Your administrator has just requested that you update your {2} account. Click on the link below to start this process.

    Link to account update

    This link will expire within {1} minutes.

    If you are unaware that your admin has requested this, just ignore this message and nothing will be changed.

    +eventLoginErrorSubject=Login error +eventLoginErrorBody=A failed login attempt was detected to your account on {0} from {1}. If this was not you, please contact an admin. +eventLoginErrorBodyHtml=

    A failed login attempt was detected to your account on {0} from {1}. If this was not you, please contact an admin.

    +eventRemoveTotpSubject=Remove TOTP +eventRemoveTotpBody=TOTP was removed from your account on {0} from {1}. If this was not you, please contact an admin. +eventRemoveTotpBodyHtml=

    TOTP was removed from your account on {0} from {1}. If this was not you, please contact an admin.

    +eventUpdatePasswordSubject=Update password +eventUpdatePasswordBody=Your password was changed on {0} from {1}. If this was not you, please contact an admin. +eventUpdatePasswordBodyHtml=

    Your password was changed on {0} from {1}. If this was not you, please contact an admin.

    +eventUpdateTotpSubject=Update TOTP +eventUpdateTotpBody=TOTP was updated for your account on {0} from {1}. If this was not you, please contact an admin. +eventUpdateTotpBodyHtml=

    TOTP was updated for your account on {0} from {1}. If this was not you, please contact an admin.

    diff --git a/ansible/artifacts/sunbird/email/messages/messages_es.properties b/ansible/artifacts/sunbird/email/messages/messages_es.properties new file mode 100644 index 0000000000..16160143c7 --- /dev/null +++ b/ansible/artifacts/sunbird/email/messages/messages_es.properties @@ -0,0 +1,21 @@ +emailVerificationSubject=Verificaci\u00F3n de email +emailVerificationBody=Alguien ha creado una cuenta de {2} con esta direcci\u00F3n de email. Si has sido t\u00FA, haz click en el enlace siguiente para verificar tu direcci\u00F3n de email.\n\n{0}\n\nEste enlace expirar\u00E1 en {1} minutos.\n\nSi t\u00FA no has creado esta cuenta, simplemente ignora este mensaje. +emailVerificationBodyHtml=

    Alguien ha creado una cuenta de {2} con esta direcci\u00F3n de email. Si has sido t\u00FA, haz click en el enlace siguiente para verificar tu direcci\u00F3n de email.

    {0}

    Este enlace expirar\u00E1 en {1} minutos.

    Si t\u00FA no has creado esta cuenta, simplemente ignora este mensaje.

    +passwordResetSubject=Reiniciar contrase\u00F1a +passwordResetBody=Alguien ha solicitado cambiar las credenciales de tu cuenta de {2}. Si has sido t\u00FA, haz clic en el enlace siguiente para reiniciarlas.\n\n{0}\n\nEste enlace expirar\u00E1 en {1} minutos.\n\nSi no quieres reiniciar tus credenciales, simplemente ignora este mensaje y no se realizar\u00E1 ning\u00FAn cambio. +passwordResetBodyHtml=

    Alguien ha solicitado cambiar las credenciales de tu cuenta de {2}. Si has sido t\u00FA, haz clic en el enlace siguiente para reiniciarlas.

    {0}

    Este enlace expirar\u00E1 en {1} minutos.

    Si no quieres reiniciar tus credenciales, simplemente ignora este mensaje y no se realizar\u00E1 ning\u00FAn cambio.

    +executeActionsSubject=Actualiza tu cuenta +executeActionsBody=El administrador ha solicitado que actualices tu cuenta de {2}. Haz clic en el enlace inferior para iniciar este proceso.\n\n{0}\n\nEste enlace expirar\u00E1 en {1} minutes.\n\nSi no est\u00E1s al tanto de que el administrador haya solicitado esto, simplemente ignora este mensaje y no se realizar\u00E1 ning\u00FAn cambio. +executeActionsBodyHtml=

    El administrador ha solicitado que actualices tu cuenta de {2}. Haz clic en el enlace inferior para iniciar este proceso.

    {0}

    Este enlace expirar\u00E1 en {1} minutes.

    Si no est\u00E1s al tanto de que el administrador haya solicitado esto, simplemente ignora este mensaje y no se realizar\u00E1 ning\u00FAn cambio.

    +eventLoginErrorSubject=Fallo en el inicio de sesi\u00F3n +eventLoginErrorBody=Se ha detectado un intento de acceso fallido a tu cuenta el {0} desde {1}. Si no has sido t\u00FA, por favor contacta con el administrador. +eventLoginErrorBodyHtml=

    Se ha detectado un intento de acceso fallido a tu cuenta el {0} desde {1}. Si no has sido t\u00FA, por favor contacta con el administrador.

    +eventRemoveTotpSubject=Borrado TOTP +eventRemoveTotpBody=TOTP fue eliminado de tu cuenta el {0} desde {1}. Si no has sido t\u00FA, por favor contacta con el administrador. +eventRemoveTotpBodyHtml=

    TOTP fue eliminado de tu cuenta el {0} desde {1}. Si no has sido t\u00FA, por favor contacta con el administrador.

    +eventUpdatePasswordSubject=Actualizaci\u00F3n de contrase\u00F1a +eventUpdatePasswordBody=Tu contrase\u00F1a se ha actualizado el {0} desde {1}. Si no has sido t\u00FA, por favor contacta con el administrador. +eventUpdatePasswordBodyHtml=

    Tu contrase\u00F1a se ha actualizado el {0} desde {1}. Si no has sido t\u00FA, por favor contacta con el administrador.

    +eventUpdateTotpSubject=Actualizaci\u00F3n de TOTP +eventUpdateTotpBody=TOTP se ha actualizado en tu cuenta el {0} desde {1}. Si no has sido t\u00FA, por favor contacta con el administrador. +eventUpdateTotpBodyHtml=

    TOTP se ha actualizado en tu cuenta el {0} desde {1}. Si no has sido t\u00FA, por favor contacta con el administrador.

    diff --git a/ansible/artifacts/sunbird/email/messages/messages_fr.properties b/ansible/artifacts/sunbird/email/messages/messages_fr.properties new file mode 100644 index 0000000000..3467dec80c --- /dev/null +++ b/ansible/artifacts/sunbird/email/messages/messages_fr.properties @@ -0,0 +1,21 @@ +emailVerificationSubject=V\u00e9rification du courriel +emailVerificationBody=Quelqu''un vient de cr\u00e9er un compte "{2}" avec votre courriel. Si vous \u00eates \u00e0 l''origine de cette requ\u00eate, veuillez cliquer sur le lien ci-dessous afin de v\u00e9rifier votre adresse de courriel\n\n{0}\n\nCe lien expire dans {1} minute(s).\n\nSinon, veuillez ignorer ce message. +emailVerificationBodyHtml=

    Quelqu''un vient de cr\u00e9er un compte "{2}" avec votre courriel. Si vous \u00eates \u00e0 l''origine de cette requ\u00eate, veuillez cliquer sur le lien ci-dessous afin de v\u00e9rifier votre adresse de courriel

    {0}

    Ce lien expire dans {1} minute(s).

    Sinon, veuillez ignorer ce message.

    +passwordResetSubject=R\u00e9initialiser le mot de passe +passwordResetBody=Quelqu''un vient de demander une r\u00e9initialisation de mot de passe pour votre compte {2}. Si vous \u00eates \u00e0 l''origine de cette requ\u00eate, veuillez cliquer sur le lien ci-dessous pour le mettre \u00e0 jour.\n\n{0}\n\nCe lien expire dans {1} minute(s).\n\nSinon, veuillez ignorer ce message ; aucun changement ne sera effectu\u00e9 sur votre compte. +passwordResetBodyHtml=

    Quelqu''un vient de demander une r\u00e9initialisation de mot de passe pour votre compte {2}. Si vous \u00eates \u00e0 l''origine de cette requ\u00eate, veuillez cliquer sur le lien ci-dessous pour le mettre \u00e0 jour.

    {0}

    Ce lien expire dans {1} minute(s).

    Sinon, veuillez ignorer ce message ; aucun changement ne sera effectu\u00e9 sur votre compte.

    +executeActionsSubject=Mettre \u00e0 jour votre compte +executeActionsBody=Votre administrateur vient de demander une mise \u00e0 jour de votre compte {2}. Veuillez cliquer sur le lien ci-dessous afin de commencer le processus.\n\n{0}\n\nCe lien expire dans {1} minute(s).\n\nSi vous n''\u00eates pas \u00e0 l''origine de cette requ\u00eate, veuillez ignorer ce message ; aucun changement ne sera effectu\u00e9 sur votre compte. +executeActionsBodyHtml=

    Votre administrateur vient de demander une mise \u00e0 jour de votre compte {2}. Veuillez cliquer sur le lien ci-dessous afin de commencer le processus.

    {0}

    Ce lien expire dans {1} minute(s).

    Si vous n''\u00eates pas \u00e0 l''origine de cette requ\u00eate, veuillez ignorer ce message ; aucun changement ne sera effectu\u00e9 sur votre compte.

    +eventLoginErrorSubject=Erreur de connexion +eventLoginErrorBody=Une tentative de connexion a \u00e9t\u00e9 d\u00e9tect\u00e9e sur votre compte {0} depuis {1}. Si vous n''\u00eates pas \u00e0 l''origine de cette requ\u00eate, veuillez contacter votre administrateur. +eventLoginErrorBodyHtml=

    Une tentative de connexion a \u00e9t\u00e9 d\u00e9tect\u00e9e sur votre compte {0} depuis {1}. Si vous n''\u00eates pas \u00e0 l''origine de cette requ\u00eate, veuillez contacter votre administrateur.

    +eventRemoveTotpSubject=Suppression du TOTP +eventRemoveTotpBody=Le TOTP a \u00e9t\u00e9 supprim\u00e9 de votre compte {0} depuis {1}. Si vous n''\u00e9tiez pas \u00e0 l''origine de cette requ\u00eate, veuillez contacter votre administrateur. +eventRemoveTotpBodyHtml=

    Le TOTP a \u00e9t\u00e9 supprim\u00e9 de votre compte {0} depuis {1}. Si vous n''\u00e9tiez pas \u00e0 l''origine de cette requ\u00eate, veuillez contacter votre administrateur.

    +eventUpdatePasswordSubject=Mise \u00e0 jour du mot de passe +eventUpdatePasswordBody=Votre mot de passe pour votre compte {0} a \u00e9t\u00e9 modifi\u00e9 depuis {1}. Si vous n''\u00e9tiez pas \u00e0 l''origine de cette requ\u00eate, veuillez contacter votre administrateur. +eventUpdatePasswordBodyHtml=

    Votre mot de passe pour votre compte {0} a \u00e9t\u00e9 modifi\u00e9 depuis {1}. Si vous n''\u00e9tiez pas \u00e0 l''origine de cette requ\u00eate, veuillez contacter votre administrateur.

    +eventUpdateTotpSubject=Mise \u00e0 jour du TOTP +eventUpdateTotpBody=Le TOTP a \u00e9t\u00e9 mis \u00e0 jour pour votre compte {0} depuis {1}. Si vous n''\u00e9tiez pas \u00e0 l''origine de cette requ\u00eate, veuillez contacter votre administrateur. +eventUpdateTotpBodyHtml=

    Le TOTP a \u00e9t\u00e9 mis \u00e0 jour pour votre compte {0} depuis {1}. Si vous n''\u00e9tiez pas \u00e0 l''origine de cette requ\u00eate, veuillez contacter votre administrateur.

    diff --git a/ansible/artifacts/sunbird/email/messages/messages_it.properties b/ansible/artifacts/sunbird/email/messages/messages_it.properties new file mode 100644 index 0000000000..b877b91ab5 --- /dev/null +++ b/ansible/artifacts/sunbird/email/messages/messages_it.properties @@ -0,0 +1,24 @@ +emailVerificationSubject=Verifica l''email +emailVerificationBody=Qualcuno ha creato un {2} account con questo indirizzo email. Se sei stato tu, fai clic sul pulsante seguente per verificare il tuo indirizzo email\n\n{0}\n\nQuesto link scadr\u00e0 in {1} minuti.\n\nSe non sei stato tu a creare questo account, ignora questo messaggio. +emailVerificationBodyHtml=

    Qualcuno ha creato un {2} account con questo indirizzo email. Se sei stato tu, fai clic sul pulsante seguente per verificare il tuo indirizzo email

    {0}

    Questo link scadr\u00e0 in {1} minuti.

    Se non sei stato tu a creare questo account, ignora questo messaggio.

    +identityProviderLinkSubject=Link {0} +identityProviderLinkBody=Qualcuno vuole associare il tuo "{1}" account con "{0}" l''account dell''utente {2} . Se sei stato tu, fai clic sul pulsante seguente per associare gli account\n\n{3}\n\nQuesto link scadr\u00e0 in {4} minuti.\n\nSe non vuoi associare l''account, ignora questo messaggio. Se associ gli account, potrai accedere a {1} attraverso {0}. +identityProviderLinkBodyHtml=

    Qualcuno vuole associare il tuo {1} account con {0} l''account dell''utente {2} . Se sei stato tu, fai clic sul pulsante seguente per associare gli account

    {3}

    Questo link scadr\u00e0 in {4} minuti.

    Se non vuoi associare l''account, ignora questo messaggio. Se associ gli account, potrai accedere a {1} attraverso {0}.

    +passwordResetSubject=Reimposta la password +passwordResetBody= Qualcuno ha appena richiesto di cambiare le {2} credenziali di accesso al tuo account. Se sei stato tu, fai clic sul pulsante seguente reimpostarle.\n\n{0}\n\nQuesto link e codice scadranno in {1} minuti.\n\nSe non vuoi reimpostare le tue credenziali di accesso, ignora questo messaggio e non verr\u00e0 effettuato nessun cambio. +passwordResetBodyHtml=

    Qualcuno ha appena richiesto di cambiare le {2} credenziali di accesso al tuo account. Se sei stato tu, fai clic sul pulsante seguente reimpostarle.

    {0}

    Questo link scadr\u00e0 in {1} minuti.

    Se non vuoi reimpostare le tue credenziali di accesso, ignora questo messaggio e non verr\u00e0 effettuato nessun cambio.

    +executeActionsSubject=Aggiorna il tuo account +executeActionsBody=Il tuo amministratore ha appena richiesto un aggiornamento del tuo {2} account. Fai clic sul pulsante seguente per iniziare questo processo.\n\n{0}\n\nQuesto link scadr\u00e0 in {1} minuti.\n\nSe non sei a conoscenza della richiesta del tuo amministratore, ignora questo messaggio e non verr\u00e0 effettuato nessun cambio. +executeActionsBodyHtml=

    Il tuo amministratore ha appena richiesto un aggiornamento del tuo {2} account. Fai clic sul pulsante seguente per iniziare questo processo.

    {0}

    Questo link scadr\u00e0 in {1} minuti.

    Se non sei a conoscenza della richiesta del tuo amministratore, ignora questo messaggio e non verr\u00e0 effettuato nessun cambio.

    +eventLoginErrorSubject=Errore di accesso +eventLoginErrorBody=\u00c8 stato rilevato un tentativo fallito di accesso al tuo account il {0} da {1}. Se non sei stato tu, per favore contatta l''amministratore. +eventLoginErrorBodyHtml=

    \u00c8 stato rilevato un tentativo fallito di accesso al tuo account il {0} da {1}. Se non sei stato tu, per favore contatta l''amministratore.

    +eventRemoveTotpSubject=Rimuovi TOTP (Password temporanea valida una volta sola) +eventRemoveTotpBody=TOTP (Password temporanea valida una volta sola) \u00e8 stata rimossa dal tuo account il {0} da {1}. Se non sei stato tu, per favore contatta l''amministratore. +eventRemoveTotpBodyHtml=

    TOTP (Password temporanea valida una volta sola) \u00e8 stata rimossa dal tuo account il {0} da {1}. Se non sei stato tu, per favore contatta l''amministratore.

    +eventUpdatePasswordSubject=Aggiornamento password +eventUpdatePasswordBody=La tua password \u00e8 stata cambiata il {0} da {1}. Se non sei stato tu, per favore contatta l''amministratore. +eventUpdatePasswordBodyHtml=

    La tua password \u00e8 stata cambiata il {0} da {1}. Se non sei stato tu, per favore contatta l''amministratore.

    +eventUpdateTotpSubject=Aggiornamento TOTP (Password temporanea valida una volta sola) +eventUpdateTotpBody=TOTP (Password temporanea valida una volta sola) \u00e8 stata aggiornata per il tuo account il {0} da {1}. Se non sei stato tu, per favore contatta l''amministratore. +eventUpdateTotpBodyHtml=

    TOTP (Password temporanea valida una volta sola) \u00e8 stata aggiornata per il tuo account il {0} da {1}. Se non sei stato tu, per favore contatta l''amministratore.

    diff --git a/ansible/artifacts/sunbird/email/messages/messages_ja.properties b/ansible/artifacts/sunbird/email/messages/messages_ja.properties new file mode 100644 index 0000000000..a60ffe3d2b --- /dev/null +++ b/ansible/artifacts/sunbird/email/messages/messages_ja.properties @@ -0,0 +1,25 @@ +# encoding: utf-8 +emailVerificationSubject=Eメールの確認 +emailVerificationBody=このメールアドレスで {2} アカウントが作成されたました。以下のリンクをクリックしてメールアドレスの確認を完了してください。\n\n{0}\n\nこのリンクは {1} 分間だけ有効です。\n\nもしこのアカウントの作成に心当たりがない場合は、このメールを無視してください。 +emailVerificationBodyHtml=

    このメールアドレスで {2} アカウントが作成されました。以下のリンクをクリックしてメールアドレスの確認を完了してください。

    メールアドレスの確認

    このリンクは {1} 分間だけ有効です。

    もしこのアカウントの作成に心当たりがない場合は、このメールを無視してください。

    +identityProviderLinkSubject=リンク {0} +identityProviderLinkBody=あなたの "{1}" アカウントと {2} ユーザーの "{0}" アカウントのリンクが要求されました。以下のリンクをクリックしてアカウントのリンクを行ってください。\n\n{3}\n\nこのリンクは {4} 分間だけ有効です。\n\nもしアカウントのリンクを行わない場合は、このメッセージを無視してください。アカウントのリンクを行うことで、{0} 経由で {1} にログインすることができるようになります。 +identityProviderLinkBodyHtml=

    あなたの {1} アカウントと {2} ユーザーの {0} アカウントのリンクが要求されました。以下のリンクをクリックしてアカウントのリンクを行ってください。

    アカウントリンクの確認

    このリンクは {4} 分間だけ有効です。

    もしアカウントのリンクを行わない場合は、このメッセージを無視してください。アカウントのリンクを行うことで、{0} 経由で {1} にログインすることができるようになります。

    +passwordResetSubject=パスワードのリセット +passwordResetBody=あなたの {2} アカウントのパスワードの変更が要求されています。以下のリンクをクリックしてパスワードのリセットを行ってください。\n\n{0}\n\nこのリンクは {1} 分間だけ有効です。\n\nもしパスワードのリセットを行わない場合は、このメッセージを無視してください。何も変更されません。 +passwordResetBodyHtml=

    あなたの {2} アカウントのパスワードの変更が要求されています。以下のリンクをクリックしてパスワードのリセットを行ってください。

    パスワードのリセット

    このリンクは {1} 分間だけ有効です。

    もしパスワードのリセットを行わない場合は、このメッセージを無視してください。何も変更されません。

    +executeActionsSubject=アカウントの更新 +executeActionsBody=管理者よりあなたの {2} アカウントの更新が要求されています。以下のリンクをクリックしてこのプロセスを開始してください。\n\n{0}\n\nこのリンクは {1} 分間だけ有効です。\n\n管理者からのこの変更要求についてご存知ない場合は、このメッセージを無視してください。何も変更されません。 +executeActionsBodyHtml=

    管理者よりあなたの {2} アカウントの更新が要求されています。以下のリンクをクリックしてこのプロセスを開始してください。

    アカウントの更新

    このリンクは {1} 分間だけ有効です。

    管理者からのこの変更要求についてご存知ない場合は、このメッセージを無視してください。何も変更されません。

    +eventLoginErrorSubject=ログインエラー +eventLoginErrorBody={0} に {1} からのログイン失敗があなたのアカウントで検出されました。心当たりがない場合は、管理者に連絡してください。 +eventLoginErrorBodyHtml=

    {0} に {1} からのログイン失敗があなたのアカウントで検出されました。心当たりがない場合は管理者に連絡してください。

    +eventRemoveTotpSubject=TOTPの削除 +eventRemoveTotpBody={0} に {1} からの操作で TOTP が削除されました。心当たりがない場合は、管理者に連絡してください。 +eventRemoveTotpBodyHtml=

    {0} に {1} からの操作で TOTP が削除されました。心当たりがない場合は、管理者に連絡してください。

    +eventUpdatePasswordSubject=パスワードの更新 +eventUpdatePasswordBody={0} に {1} からの操作であなたのパスワードが変更されました。心当たりがない場合は、管理者に連絡してください。 +eventUpdatePasswordBodyHtml=

    {0} に {1} からの操作であなたのパスワードが変更されました。心当たりがない場合は、管理者に連絡してください。

    +eventUpdateTotpSubject=TOTPの更新 +eventUpdateTotpBody={0} に {1} からの操作で TOTP が更新されました。心当たりがない場合は、管理者に連絡してください。 +eventUpdateTotpBodyHtml=

    {0} に {1} からの操作で TOTP が更新されました。心当たりがない場合は、管理者に連絡してください。

    diff --git a/ansible/artifacts/sunbird/email/messages/messages_lt.properties b/ansible/artifacts/sunbird/email/messages/messages_lt.properties new file mode 100644 index 0000000000..a1b59ade93 --- /dev/null +++ b/ansible/artifacts/sunbird/email/messages/messages_lt.properties @@ -0,0 +1,24 @@ +emailVerificationSubject=El. pa\u0161to patvirtinimas +emailVerificationBody=Paskyra {2} sukurta naudojant \u0161\u012F el. pa\u0161to adres\u0105. Jei tai buvote J\u016Bs, tuomet paspauskite \u017Eemiau esan\u010Di\u0105 nuorod\u0105\n\n{0}\n\n\u0160i nuoroda galioja {1} min.\n\nJei paskyros nek\u016Br\u0117te, tuomet ignuoruokite \u0161\u012F lai\u0161k\u0105. +emailVerificationBodyHtml=

    Paskyra {2} sukurta naudojant \u0161\u012F el. pa\u0161to adres\u0105. Jei tao buvote J\u016Bs, tuomet paspauskite \u017Eemiau esan\u010Di\u0105 nuorod\u0105

    {0}

    \u0160i nuoroda galioja {1} min.

    nJei paskyros nek\u016Br\u0117te, tuomet ignuoruokite \u0161\u012F lai\u0161k\u0105.

    +identityProviderLinkSubject=S\u0105saja {0} +identityProviderLinkBody=Ka\u017Eas pageidauja susieti J\u016Bs\u0173 "{1}" paskyr\u0105 su "{0}" {2} naudotojo paskyr\u0105. Jei tai buvote J\u016Bs, tuomet paspauskite \u017Eemiau esan\u010Di\u0105 nuorod\u0105 nor\u0117dami susieti paskyras\n\n{3}\n\n\u0160i nuoroda galioja {4} min.\n\nJei paskyr\u0173 susieti nenorite, tuomet ignoruokite \u0161\u012F lai\u0161k\u0105. Jei paskyras susiesite, tuomet prie {1} gal\u0117siste prisijungti per {0}. +identityProviderLinkBodyHtml=

    \u017Eas pageidauja susieti J\u016Bs\u0173 {1} paskyr\u0105 su {0} {2} naudotojo paskyr\u0105. Jei tai buvote J\u016Bs, tuomet paspauskite \u017Eemiau esan\u010Di\u0105 nuorod\u0105 nor\u0117dami susieti paskyras

    {3}

    \u0160i nuoroda galioja {4} min.

    Jei paskyr\u0173 susieti nenorite, tuomet ignoruokite \u0161\u012F lai\u0161k\u0105. Jei paskyras susiesite, tuomet prie {1} gal\u0117siste prisijungti per {0}.

    +passwordResetSubject=Slapta\u017Eod\u017Eio atk\u016Brimas +passwordResetBody=Ka\u017Ekas pageidauja pakeisti J\u016Bs\u0173 paskyros {2} slapta\u017Eod\u012F. Jei tai buvote J\u016Bs, tuomet paspauskite \u017Eemiau esan\u010Di\u0105 nuorod\u0105 slapta\u017Eod\u017Eio pakeitimui.\n\n{0}\n\n\u0160i nuoroda ir kodas galioja {1} min.\n\nJei nepageidajate keisti slapta\u017Eod\u017Eio, tuomet ignoruokite \u0161\u012F lai\u0161k\u0105 ir niekas nebus pakeista. +passwordResetBodyHtml=

    Ka\u017Ekas pageidauja pakeisti J\u016Bs\u0173 paskyros {2} slapta\u017Eod\u012F. Jei tai buvote J\u016Bs, tuomet paspauskite \u017Eemiau esan\u010Di\u0105 nuorod\u0105 slapta\u017Eod\u017Eio pakeitimui.

    {0}

    \u0160i nuoroda ir kodas galioja {1} min.

    Jei nepageidajate keisti slapta\u017Eod\u017Eio, tuomet ignoruokite \u0161\u012F lai\u0161k\u0105 ir niekas nebus pakeista.

    +executeActionsSubject=Atnaujinkite savo paskyr\u0105 +executeActionsBody=Sistemos administratorius pageidauja, kad J\u016Bs atnaujintum\u0117te savo {2} paskyr\u0105. Paspauskite \u017Eemiau esan\u010Di\u0105 nuorod\u0105 paskyros duomen\u0173 atnaujinimui.\n\n{0}\n\n\u0160i nuoroda galioja {1} min.\n\nJei J\u016Bs neasate tikri, kad tai administratoriaus pageidavimas, tuomet ignoruokite \u0161\u012F lai\u0161k\u0105 ir niekas nebus pakeista. +executeActionsBodyHtml=

    Sistemos administratorius pageidauja, kad J\u016Bs atnaujintum\u0117te savo {2} paskyr\u0105. Paspauskite \u017Eemiau esan\u010Di\u0105 nuorod\u0105 paskyros duomen\u0173 atnaujinimui.

    {0}

    \u0160i nuoroda galioja {1} min.

    Jei J\u016Bs neasate tikri, kad tai administratoriaus pageidavimas, tuomet ignoruokite \u0161\u012F lai\u0161k\u0105 ir niekas nebus pakeista.

    +eventLoginErrorSubject=Nes\u0117kmingas bandymas prisijungti prie j\u016Bs\u0173 paskyros +eventLoginErrorBody=Bandymas prisijungti prie j\u016Bs\u0173 paskyros {0} i\u0161 {1} nes\u0117kmingas. Jei tai nebuvote j\u016Bs, tuomet susisiekite su administratoriumi +eventLoginErrorBodyHtml=

    Bandymas prisijungti prie j\u016Bs\u0173 paskyros {0} i\u0161 {1} nes\u0117kmingas. Jei tai nebuvote j\u016Bs, tuomet susisiekite su administratoriumi

    +eventRemoveTotpSubject=TOTP pa\u0161alinimas +eventRemoveTotpBody=Ka\u017Ekas pageidauja atsieti TOPT J\u016Bs\u0173 {1} paskyroje su {0}. Jei tai nebuvote J\u016Bs, tuomet susisiekite su administratoriumi +eventRemoveTotpBodyHtml=

    Ka\u017Ekas pageidauja atsieti TOPT J\u016Bs\u0173 {1} paskyroje su {0}. Jei tai nebuvote J\u016Bs, tuomet susisiekite su administratoriumi

    +eventUpdatePasswordSubject=Slapta\u017Eod\u017Eio atnaujinimas +eventUpdatePasswordBody={1} paskyroje {0} pakeisas j\u016Bs\u0173 slapta\u017Eodis. Jei J\u016Bs nekeit\u0117te, tuomet susisiekite su administratoriumi +eventUpdatePasswordBodyHtml=

    {1} paskyroje {0} pakeisas j\u016Bs\u0173 slapta\u017Eodis. Jei J\u016Bs nekeit\u0117te, tuomet susisiekite su administratoriumi

    +eventUpdateTotpSubject=TOTP atnaujinimas +eventUpdateTotpBody=TOTP J\u016Bs\u0173 {1} paskyroje su {0} buvo atnaujintas. Jei tai nebuvote J\u016Bs, tuomet susisiekite su administratoriumi +eventUpdateTotpBodyHtml=

    TOTP J\u016Bs\u0173 {1} paskyroje su {0} buvo atnaujintas. Jei tai nebuvote J\u016Bs, tuomet susisiekite su administratoriumi

    \ No newline at end of file diff --git a/ansible/artifacts/sunbird/email/messages/messages_no.properties b/ansible/artifacts/sunbird/email/messages/messages_no.properties new file mode 100644 index 0000000000..32334e9d8d --- /dev/null +++ b/ansible/artifacts/sunbird/email/messages/messages_no.properties @@ -0,0 +1,24 @@ +emailVerificationSubject=Bekreft e-postadresse +emailVerificationBody=Noen har opprettet en {2} konto med denne e-postadressen. Hvis dette var deg, klikk p\u00E5 lenken nedenfor for \u00E5 bekrefte e-postadressen din\n\n{0}\n\nDenne lenken vil utl\u00F8pe om {1} minutter.\n\nHvis du ikke opprettet denne kontoen, vennligst ignorer denne meldingen. +emailVerificationBodyHtml=

    Noen har opprettet en {2} konto med denne e-postadressen. Hvis dette var deg, klikk p\u00E5 lenken nedenfor for \u00E5 bekrefte e-postadressen din

    {0}

    Denne lenken vil utl\u00F8pe om {1} minutter.

    Hvis du ikke opprettet denne kontoen, vennligst ignorer denne meldingen.

    +identityProviderLinkSubject=Lenke {0} +identityProviderLinkBody=Noen vil koble din {1} konto med {0} konto til bruker {2}. Hvis dette var deg, klikk p\u00E5 lenken nedenfor for \u00E5 koble kontoene\n\n{3}\n\nDenne lenken vil utl\u00F8pe om {4} minutter\n\nHvis du ikke vil koble kontoene, vennligst ignorer denne meldingen. Hvis du kobler kontoene sammen vil du kunne logge inn til {1} gjennom {0}. +identityProviderLinkBodyHtml=

    Noen vil koble din {1} konto med {0} konto til bruker {2}. Hvis dette var deg, klikk p\u00E5 lenken nedenfor for \u00E5 koble kontoene.

    {3}

    Denne lenken vil utl\u00F8pe om {4} minutter.

    Hvis du ikke vil koble kontoene, vennligst ignorer denne meldingen. Hvis du kobler kontoene sammen vil du kunne logge inn til {1} gjennom {0}.

    +passwordResetSubject=Tilbakestill passord +passwordResetBody=Noen har bedt om \u00E5 endre innloggingsdetaljene til din konto {2}. Hvis dette var deg, klikk p\u00E5 lenken nedenfor for \u00E5 tilbakestille dem.\n\n{0}\n\nDenne lenken vil utl\u00F8pe om {1} minutter.\n\nHvis du ikke vil tilbakestille din innloggingsdata, vennligst ignorer denne meldingen og ingenting vil bli endret. +passwordResetBodyHtml=

    Noen har bedt om \u00E5 endre innloggingsdetaljene til din konto {2}. Hvis dette var deg, klikk p\u00E5 lenken nedenfor for \u00E5 tilbakestille dem.

    {0}

    Denne lenken vil utl\u00F8pe om {1} minutter.

    Hvis du ikke vil tilbakestille din innloggingsdata, vennligst ignorer denne meldingen og ingenting vil bli endret.

    +executeActionsSubject=Oppdater kontoen din +executeActionsBody=Administrator har anmodet at du oppdaterer din {2} konto. Klikk p\u00E5 lenken nedenfor for \u00E5 starte denne prosessen\n\n{0}\n\nDenne lenken vil utl\u00F8pe om {1} minutter.\n\nHvis du ikke var klar over at administrator har bedt om dette, vennligst ignorer denne meldingen og ingenting vil bli endret. +executeActionsBodyHtml=

    Administrator har anmodet at du oppdaterer din {2} konto. Klikk p\u00E5 linken nedenfor for \u00E5 starte denne prosessen.

    {0}

    Denne lenken vil utl\u00F8pe om {1} minutter.

    Hvis du ikke var klar over at administrator har bedt om dette, ignorer denne meldingen og ingenting vil bli endret.

    +eventLoginErrorSubject=Innlogging feilet +eventLoginErrorBody=Et mislykket innloggingsfors\u00F8k ble oppdaget p\u00E5 din konto p\u00E5 {0} fra {1}. Hvis dette ikke var deg, vennligst kontakt administrator. +eventLoginErrorBodyHtml=

    Et mislykket innloggingsfors\u00F8k ble oppdaget p\u00E5 din konto p\u00E5 {0} fra {1}. Hvis dette ikke var deg, vennligst kontakt administrator.

    +eventRemoveTotpSubject=Fjern engangskode +eventRemoveTotpBody=Engangskode ble fjernet fra kontoen din p\u00E5 {0} fra {1}. Hvis dette ikke var deg, vennligst kontakt administrator. +eventRemoveTotpBodyHtml=

    Engangskode ble fjernet fra kontoen din p\u00E5 {0} fra {1}. Hvis dette ikke var deg, vennligst kontakt administrator.

    +eventUpdatePasswordSubject=Oppdater passord +eventUpdatePasswordBody=Ditt passord ble endret i {0} fra {1}. Hvis dette ikke var deg, vennligst kontakt administrator. +eventUpdatePasswordBodyHtml=

    Ditt passord ble endret i {0} fra {1}. Hvis dette ikke var deg, vennligst kontakt administrator.

    +eventUpdateTotpSubject=Oppdater engangskode +eventUpdateTotpBody=Engangskode ble oppdatert for kontoen din p\u00E5 {0} fra {1}. Hvis dette ikke var deg, vennligst kontakt administrator. +eventUpdateTotpBodyHtml=

    Engangskode ble oppdatert for kontoen din p\u00E5 {0} fra {1}. Hvis dette ikke var deg, vennligst kontakt administrator.

    diff --git a/ansible/artifacts/sunbird/email/messages/messages_pt_BR.properties b/ansible/artifacts/sunbird/email/messages/messages_pt_BR.properties new file mode 100644 index 0000000000..cfe973767d --- /dev/null +++ b/ansible/artifacts/sunbird/email/messages/messages_pt_BR.properties @@ -0,0 +1,19 @@ +emailVerificationSubject=Verifica\u00E7\u00E3o de e-mail +emailVerificationBody=Algu\u00E9m criou uma conta {2} com este endere\u00E7o de e-mail. Se foi voc\u00EA, clique no link abaixo para verificar o seu endere\u00E7o de email\n\n{0}\n\nEste link ir\u00E1 expirar dentro de {1} minutos.\n\nSe n\u00E3o foi voc\u00EA que criou esta conta, basta ignorar esta mensagem. +emailVerificationBodyHtml=

    Algu\u00E9m criou uma conta {2} com este endere\u00E7o de e-mail. Se foi voc\u00EA, clique no link abaixo para verificar o seu endere\u00E7o de email

    {0}

    Este link ir\u00E1 expirar dentro de {1} minutos.

    Se n\u00E3o foi voc\u00EA que criou esta conta, basta ignorar esta mensagem.

    +identityProviderLinkSubject=Vincular {0} +identityProviderLinkBody=Algu\u00E9m quer vincular sua conta "{1}" com a conta "{0}" do usu\u00E1rio {2} . Se foi voc\u00EA, clique no link abaixo para vincular as contas.\n\n{3}\n\nEste link ir\u00E1 expirar em {4} minutos.\n\nSe voc\u00EA n\u00E3o quer vincular a conta, apenas ignore esta mensagem. Se voc\u00EA vincular as contas, voc\u00EA ser\u00E1 capaz de logar em {1} atr\u00E1v\u00E9s de {0}. +identityProviderLinkBodyHtml=

    Algu\u00E9m quer vincular sua conta {1} com a conta {0} do usu\u00E1rio {2} . Se foi voc\u00EA, clique no link abaixo para vincular as contas.

    {3}

    Este link ir\u00E1 expirar em {4} minutos.

    Se voc\u00EA n\u00E3o quer vincular a conta, apenas ignore esta mensagem. Se voc\u00EA vincular as contas, voc\u00EA ser\u00E1 capaz de logar em {1} atr\u00E1v\u00E9s de {0}.

    +passwordResetSubject=Redefini\u00E7\u00E3o de senha +eventLoginErrorSubject=Erro de login +eventLoginErrorBody=Uma tentativa de login mal sucedida para a sua conta foi detectada em {0} de {1}. Se n\u00E3o foi voc\u00EA, por favor, entre em contato com um administrador. +eventLoginErrorBodyHtml=

    Uma tentativa de login mal sucedida para a sua conta foi detectada em {0} de {1}. Se n\u00E3o foi voc\u00EA, por favor, entre em contato com um administrador.

    +eventRemoveTotpSubject=Remover TOTP +eventRemoveTotpBody=TOTP foi removido da sua conta em {0} de {1}. Se n\u00E3o foi voc\u00EA, por favor, entre em contato com um administrador. +eventRemoveTotpBodyHtml=

    TOTP foi removido da sua conta em {0} de {1}. Se n\u00E3o foi voc\u00EA, por favor, entre em contato com um administrador.

    +eventUpdatePasswordSubject=Atualiza\u00E7\u00E3o de senha +eventUpdatePasswordBody=Sua senha foi alterada em {0} de {1}. Se n\u00E3o foi voc\u00EA, por favor, entre em contato com um administrador. +eventUpdatePasswordBodyHtml=

    Sua senha foi alterada em {0} de {1}. Se n\u00E3o foi voc\u00EA, por favor, entre em contato com um administrador.

    +eventUpdateTotpSubject=Atualiza\u00E7\u00E3o TOTP +eventUpdateTotpBody=TOTP foi atualizado para a sua conta em {0} de {1}. Se n\u00E3o foi voc\u00EA, por favor, entre em contato com um administrador. +eventUpdateTotpBodyHtml=

    TOTP foi atualizado para a sua conta em {0} de {1}. Se n\u00E3o foi voc\u00EA, por favor, entre em contato com um administrador.

    \ No newline at end of file diff --git a/ansible/artifacts/sunbird/email/messages/messages_ru.properties b/ansible/artifacts/sunbird/email/messages/messages_ru.properties new file mode 100644 index 0000000000..135578863b --- /dev/null +++ b/ansible/artifacts/sunbird/email/messages/messages_ru.properties @@ -0,0 +1,25 @@ +# encoding: utf-8 +emailVerificationSubject=Подтверждение E-mail +emailVerificationBody=Кто-то создал учетную запись {2} с этим E-mail. Если это были Вы, нажмите на следующую ссылку для подтверждения вашего email\n\n{0}\n\nЭта ссылка устареет через {1} минут.\n\nЕсли Вы не создавали учетную запись, просто проигнорируйте это письмо. +emailVerificationBodyHtml=

    Кто-то создал учетную запись {2} с этим E-mail. Если это были Вы, нажмите по ссылке для подтверждения вашего E-mail

    {0}

    Эта ссылка устареет через {1} минут.

    Если Вы не создавали учетную запись, просто проигнорируйте это письмо.

    +identityProviderLinkSubject=Ссылка {0} +identityProviderLinkBody=Кто-то хочет связать вашу учетную запись "{1}" с "{0}" учетной записью пользователя {2} . Если это были Вы, нажмите по следующей ссылке, чтобы связать учетные записи\n\n{3}\n\nЭта ссылка устареет через {4} минут.\n\nЕсли это не хотите объединять учетные записи, просто проигнориуйте это письмо. После объединения учетных записей Вы можете войти в {1} через {0}. +identityProviderLinkBodyHtml=

    Кто-то хочет связать вашу учетную запись {1} с {0} учетной записью пользователя {2} . Если это были Вы, нажмите по следующей ссылке, чтобы связать учетные записи

    {3}

    Эта ссылка устареет через {4} минут.

    Если это не хотите объединять учетные записи, просто проигнориуйте это письмо. После объединения учетных записей Вы можете войти в {1} через {0}.

    +passwordResetSubject=Сброс пароля +passwordResetBody=Кто-то только что запросил изменение пароля от Вашей учетной записи {2}. Если это были Вы, нажмите на следующую ссылку, чтобы сбросить его.\n\n{0}\n\nЭта ссылка устареет через {1} минут.\n\nЕсли Вы не хотите сбрасывать пароль, просто проигнорируйте это письмо. +passwordResetBodyHtml=

    Кто-то только что запросил изменение пароля от Вашей учетной записи {2}. Если это были Вы, нажмите на следующую ссылку, чтобы сбросить его.

    {0}

    Эта ссылка устареет через {1} минут.

    Если Вы не хотите сбрасывать пароль, просто проигнорируйте это письмо и ничего не изменится.

    +executeActionsSubject=Обновление Вашей учетной записи +executeActionsBody=Администратор просит Вас обновить данные Вашей учетной записи {2}. Нажмите по следующей ссылке чтобы начать этот процесс.\n\n{0}\n\nЭта ссылка устареет через {1} минут.\n\nЕсли у вас есть подозрения, что администратор не мог сделать такой запрос, просто проигнорируйте это письмо. +executeActionsBodyHtml=

    Администратор просит Вас обновить данные Вашей учетной записи {2}. Нажмите по следующей ссылке чтобы начать этот процесс.

    {0}

    Эта ссылка устареет через {1} минут.

    Если у вас есть подозрения, что администратор не мог сделать такой запрос, просто проигнорируйте это письмо.

    +eventLoginErrorSubject=Ошибка входа +eventLoginErrorBody=Была зафиксирована неудачная попытка входа в Вашу учетную запись {0} с {1}. Если это были не Вы, пожалуйста, свяжитесь с администратором. +eventLoginErrorBodyHtml=

    Была зафиксирована неудачная попытка входа в Вашу учетную запись {0} с {1}. Если это были не Вы, пожалуйста, свяжитесь с администратором.

    +eventRemoveTotpSubject=Удалить TOTP +eventRemoveTotpBody=TOTP был удален из вашей учетной записи {0} c {1}. Если это были не Вы, пожалуйста, свяжитесь с администратором. +eventRemoveTotpBodyHtml=

    TOTP был удален из вашей учетной записи {0} c {1}. Если это были не Вы, пожалуйста, свяжитесь с администратором.

    +eventUpdatePasswordSubject=Обновление пароля +eventUpdatePasswordBody=Ваш пароль был изменен в {0} с {1}. Если это были не Вы, пожалуйста, свяжитесь с администратором. +eventUpdatePasswordBodyHtml=

    Ваш пароль был изменен в {0} с {1}. Если это были не Вы, пожалуйста, свяжитесь с администратором.

    +eventUpdateTotpSubject=Обновление TOTP +eventUpdateTotpBody=TOTP был обновлен в вашей учетной записи {0} с {1}. Если это были не Вы, пожалуйста, свяжитесь с администратором. +eventUpdateTotpBodyHtml=

    TOTP был обновлен в вашей учетной записи {0} с {1}. Если это были не Вы, пожалуйста, свяжитесь с администратором.

    diff --git a/ansible/artifacts/sunbird/email/messages/messages_sv.properties b/ansible/artifacts/sunbird/email/messages/messages_sv.properties new file mode 100644 index 0000000000..5b5ac6d582 --- /dev/null +++ b/ansible/artifacts/sunbird/email/messages/messages_sv.properties @@ -0,0 +1,25 @@ +# encoding: utf-8 +emailVerificationSubject=Verifiera e-post +emailVerificationBody=Någon har skapat ett {2} konto med den här e-postadressen. Om det var du, klicka då på länken nedan för att verifiera din e-postadress\n\n{0}\n\nDen här länken kommer att upphöra inom {1} minuter.\n\nOm det inte var du som skapade det här kontot, ignorera i så fall det här meddelandet. +emailVerificationBodyHtml=

    Någon har skapat ett {2} konto med den här e-postadressen. Om det var du, klicka då på länken nedan för att verifiera din e-postadress

    {0}

    Den här länken kommer att upphöra inom {1} minuter.

    Om det inte var du som skapade det här kontot, ignorera i så fall det här meddelandet.

    +identityProviderLinkSubject=Länk {0} +identityProviderLinkBody=Någon vill länka ditt "{1}" konto med "{0}" kontot tillhörande användaren {2} . Om det var du, klicka då på länken nedan för att länka kontona\n\n{3}\n\nDen här länken kommer att upphöra inom {4} minuter.\n\nOm du inte vill länka kontot, ignorera i så fall det här meddelandet. Om du länkar kontona, så kan du logga in till {1} genom {0}. +identityProviderLinkBodyHtml=

    Någon vill länka ditt {1} konto med {0} kontot tillhörande användaren {2} . Om det var du, klicka då på länken nedan för att länka kontona

    {3}

    Den här länken kommer att upphöra inom {4} minuter.

    Om du inte vill länka kontot, ignorera i så fall det här meddelandet. Om du länkar kontona, så kan du logga in till {1} genom {0}.

    +passwordResetSubject=Återställ lösenord +passwordResetBody=Någon har precis bett om att ändra ditt {2} kontos användaruppgifter. Om det var du, klicka då på länken nedan för att återställa dem.\n\n{0}\n\nDen här länken och koden kommer att upphöra inom {1} minuter.\n\nOm du inte vill återställa dina kontouppgifter, ignorera i så fall det här meddelandet så kommer inget att ändras. +passwordResetBodyHtml=

    Någon har precis bett om att ändra ditt {2} kontos användaruppgifter. Om det var du, klicka då på länken nedan för att återställa dem.

    {0}

    Den här länken och koden kommer att upphöra inom {1} minuter.

    Om du inte vill återställa dina kontouppgifter, ignorera i så fall det här meddelandet så kommer inget att ändras.

    +executeActionsSubject=Uppdatera Ditt Konto +executeActionsBody=Din administratör har precis bett om att du skall uppdatera ditt {2} konto. Klicka på länken för att påbörja processen.\n\n{0}\n\nDen här länken kommer att upphöra inom {1} minuter.\n\nOm du är omedveten om att din administratör har bett om detta, ignorera i så fall det här meddelandet så kommer inget att ändras. +executeActionsBodyHtml=

    Din administratör har precis bett om att du skall uppdatera ditt {2} konto. Klicka på länken för att påbörja processen.

    {0}

    Den här länken kommer att upphöra inom {1} minuter.

    Om du är omedveten om att din administratör har bett om detta, ignorera i så fall det här meddelandet så kommer inget att ändras.

    +eventLoginErrorSubject=Inloggningsfel +eventLoginErrorBody=Ett misslyckat inloggningsförsök har upptäckts på ditt konto på {0} från {1}. Om det inte var du, vänligen kontakta i så fall en administratör. +eventLoginErrorBodyHtml=

    Ett misslyckat inloggningsförsök har upptäckts på ditt konto den {0} från {1}. Om det inte var du, vänligen kontakta i så fall en administratör.

    +eventRemoveTotpSubject=Ta bort TOTP +eventRemoveTotpBody=TOTP togs bort från ditt konto den {0} från {1}. Om det inte var du, vänligen kontakta i så fall en administratör. +eventRemoveTotpBodyHtml=

    TOTP togs bort från ditt konto den {0} från {1}. Om det inte var du, vänligen kontakta i så fall en administratör.

    +eventUpdatePasswordSubject=Uppdatera lösenord +eventUpdatePasswordBody=Ditt lösenord ändrades den {0} från {1}. Om det inte var du, vänligen kontakta i så fall en administratör. +eventUpdatePasswordBodyHtml=

    Ditt lösenord ändrades den {0} från {1}. Om det inte var du, vänligen kontakta i så fall en administratör.

    +eventUpdateTotpSubject=Uppdatera TOTP +eventUpdateTotpBody=TOTP uppdaterades för ditt konto den {0} från {1}. Om det inte var du, vänligen kontakta i så fall en administratör. +eventUpdateTotpBodyHtml=

    TOTP uppdaterades för ditt konto den {0} från {1}. Om det inte var du, vänligen kontakta i så fall en administratör.

    \ No newline at end of file diff --git a/ansible/artifacts/sunbird/email/text/email-test.ftl b/ansible/artifacts/sunbird/email/text/email-test.ftl new file mode 100644 index 0000000000..19942c791f --- /dev/null +++ b/ansible/artifacts/sunbird/email/text/email-test.ftl @@ -0,0 +1 @@ +${msg("emailTestBody", realmName)} \ No newline at end of file diff --git a/ansible/artifacts/sunbird/email/text/email-verification.ftl b/ansible/artifacts/sunbird/email/text/email-verification.ftl new file mode 100644 index 0000000000..0ae601f723 --- /dev/null +++ b/ansible/artifacts/sunbird/email/text/email-verification.ftl @@ -0,0 +1 @@ +${msg("emailVerificationBody",link, linkExpiration, realmName)} \ No newline at end of file diff --git a/ansible/artifacts/sunbird/email/text/event-login_error.ftl b/ansible/artifacts/sunbird/email/text/event-login_error.ftl new file mode 100644 index 0000000000..7835c91464 --- /dev/null +++ b/ansible/artifacts/sunbird/email/text/event-login_error.ftl @@ -0,0 +1 @@ +${msg("eventLoginErrorBody",event.date,event.ipAddress)} \ No newline at end of file diff --git a/ansible/artifacts/sunbird/email/text/event-remove_totp.ftl b/ansible/artifacts/sunbird/email/text/event-remove_totp.ftl new file mode 100644 index 0000000000..8930b64d57 --- /dev/null +++ b/ansible/artifacts/sunbird/email/text/event-remove_totp.ftl @@ -0,0 +1 @@ +${msg("eventRemoveTotpBody",event.date, event.ipAddress)} \ No newline at end of file diff --git a/ansible/artifacts/sunbird/email/text/event-update_password.ftl b/ansible/artifacts/sunbird/email/text/event-update_password.ftl new file mode 100644 index 0000000000..754daac5c3 --- /dev/null +++ b/ansible/artifacts/sunbird/email/text/event-update_password.ftl @@ -0,0 +1 @@ +${msg("eventUpdatePasswordBody",event.date, event.ipAddress)} \ No newline at end of file diff --git a/ansible/artifacts/sunbird/email/text/event-update_totp.ftl b/ansible/artifacts/sunbird/email/text/event-update_totp.ftl new file mode 100644 index 0000000000..3a7b0f7123 --- /dev/null +++ b/ansible/artifacts/sunbird/email/text/event-update_totp.ftl @@ -0,0 +1 @@ +${msg("eventUpdateTotpBody",event.date, event.ipAddress)} \ No newline at end of file diff --git a/ansible/artifacts/sunbird/email/text/executeActions.ftl b/ansible/artifacts/sunbird/email/text/executeActions.ftl new file mode 100644 index 0000000000..a33758f152 --- /dev/null +++ b/ansible/artifacts/sunbird/email/text/executeActions.ftl @@ -0,0 +1 @@ +${msg("executeActionsBody",link, linkExpiration, realmName)} \ No newline at end of file diff --git a/ansible/artifacts/sunbird/email/text/identity-provider-link.ftl b/ansible/artifacts/sunbird/email/text/identity-provider-link.ftl new file mode 100644 index 0000000000..a8c0d54e92 --- /dev/null +++ b/ansible/artifacts/sunbird/email/text/identity-provider-link.ftl @@ -0,0 +1 @@ +${msg("identityProviderLinkBody", identityProviderAlias, realmName, identityProviderContext.username, link, linkExpiration)} \ No newline at end of file diff --git a/ansible/artifacts/sunbird/email/text/password-reset.ftl b/ansible/artifacts/sunbird/email/text/password-reset.ftl new file mode 100644 index 0000000000..3520c418e3 --- /dev/null +++ b/ansible/artifacts/sunbird/email/text/password-reset.ftl @@ -0,0 +1 @@ +${msg("passwordResetBodyHtml",link,(linkExpiration/60)?string["0"],realmName)} diff --git a/ansible/artifacts/sunbird/email/theme.properties b/ansible/artifacts/sunbird/email/theme.properties new file mode 100644 index 0000000000..6b2b6e8fac --- /dev/null +++ b/ansible/artifacts/sunbird/email/theme.properties @@ -0,0 +1 @@ +locales=ca,de,en,es,fr,it,ja,lt,no,pt-BR,ru,sv \ No newline at end of file diff --git a/ansible/artifacts/sunbird/login/login-page-expired.ftl b/ansible/artifacts/sunbird/login/login-page-expired.ftl new file mode 100644 index 0000000000..b266614420 --- /dev/null +++ b/ansible/artifacts/sunbird/login/login-page-expired.ftl @@ -0,0 +1,18 @@ +<#import "template.ftl" as layout> +<@layout.registrationLayout; section> + <#if section = "title"> + ${msg("pageExpiredTitle")} + <#elseif section = "form"> +
    +
    +
    +
    +

    + ${msg("pageExpiredMsg1")} ${msg("doClickHere")}. + ${msg("pageExpiredMsg2")} ${msg("doClickHere")}. +

    +
    +
    +
    + + diff --git a/ansible/artifacts/sunbird/login/login-reset-password.ftl b/ansible/artifacts/sunbird/login/login-reset-password.ftl new file mode 100644 index 0000000000..5d81b0c7ad --- /dev/null +++ b/ansible/artifacts/sunbird/login/login-reset-password.ftl @@ -0,0 +1,58 @@ +<#import "template.ftl" as layout> +<@layout.registrationLayout displayInfo=true; section> + <#if section = "title"> + ${msg("emailForgotTitle")} + <#elseif section = "form"> + +
    +
    +
    +
    +
    + +
    ${msg("emailForgotTitle")}
    +
    +
    + ${msg("enterEmailPhonenumberToGetCode")} +
    +
    + <#if message?has_content> +
    + ${message.summary} +
    + +
    +
    +
    + + + +
    +
    + +
    +
    + +
    +
    +
    +
    + <#elseif section = "info" > + + diff --git a/ansible/artifacts/sunbird/login/login-update-password.ftl b/ansible/artifacts/sunbird/login/login-update-password.ftl new file mode 100644 index 0000000000..434a269858 --- /dev/null +++ b/ansible/artifacts/sunbird/login/login-update-password.ftl @@ -0,0 +1,64 @@ +<#import "template.ftl" as layout> +<@layout.registrationLayout displayInfo=true; section> + <#if section = "title"> + ${msg("updatePasswordTitle")} + <#elseif section = "form"> +
    +
    +
    +
    +
    + +
    ${msg("newPasswordTitle")}
    +
    +
    + <#if message?has_content> +
    + ${message.summary} +
    + +
    +
    +
    + + + +
    +
    + + + +
    +
    + +
    +
    + +
    +
    +
    +
    + + diff --git a/ansible/artifacts/sunbird/login/login.ftl b/ansible/artifacts/sunbird/login/login.ftl new file mode 100644 index 0000000000..1cc22c9e37 --- /dev/null +++ b/ansible/artifacts/sunbird/login/login.ftl @@ -0,0 +1,97 @@ +<#import "template.ftl" as layout> +<@layout.registrationLayout displayInfo=social.displayInfo; section> +<#if section = "title"> + ${msg("loginTitle",(realm.displayName!''))} + <#elseif section = "header"> + <#elseif section = "form"> + <#if realm.password> +
    +
    +
    +
    +
    + +
    ${msg("doSignIn")}
    +
    +
    + <#if message?has_content> +
    + ${message.summary} +
    + +
    suceess
    +
    error
    +
    +
    +
    + + + <#if usernameEditDisabled??> + + <#else> + + +
    +
    +
    + + +
    + +
    +
    + +
    + <#if realm.resetPasswordAllowed> + ${msg("doForgotPassword")} + +
    +

    OR

    +
    + <#if realm.password && social.providers??> + + + + +
    + <#if realm.password && realm.registrationAllowed && !usernameEditDisabled??> +
    +
    + ${msg("noAccount")} ${msg("doRegister")} to access relevant learning material and enroll for courses. +
    +
    + +
    +
    +
    +
    +
    +
    + + + diff --git a/ansible/artifacts/sunbird/login/resources/messages/messages_en.properties b/ansible/artifacts/sunbird/login/messages/messages_en.properties similarity index 86% rename from ansible/artifacts/sunbird/login/resources/messages/messages_en.properties rename to ansible/artifacts/sunbird/login/messages/messages_en.properties index 7c50cd1bef..ff12e19966 100644 --- a/ansible/artifacts/sunbird/login/resources/messages/messages_en.properties +++ b/ansible/artifacts/sunbird/login/messages/messages_en.properties @@ -1,13 +1,17 @@ -doLogIn=Log in -doRegister=Register +doLogIn=Log In +doRegister=Sign Up +doSignIn=Sign In +doSignWithGoogle=with Google +doSignWithState=Sign In with State System doCancel=Cancel doSubmit=Submit +doReset=Reset doYes=Yes doNo=No doContinue=Continue doAccept=Accept doDecline=Decline -doForgotPassword=Forgot Password? +doForgotPassword=Forgot? doClickHere=Click here doImpersonate=Impersonate kerberosNotConfigured=Kerberos Not Configured @@ -24,14 +28,17 @@ realmChoice=Realm unknownUser=Unknown user loginTotpTitle=Mobile Authenticator Setup loginProfileTitle=Update Account Information -loginTimeout=You took too long to login. Login process starting from beginning. +enterCode=Enter the code we sent to you +loginTimeout=You took too long to sign in. Sign in process starting from beginning. oauthGrantTitle=Grant Access oauthGrantTitleHtml={0} errorTitle=We''re sorry... errorTitleHtml=We''re sorry ... emailVerifyTitle=Email verification emailForgotTitle=Forgot Your Password? -updatePasswordTitle=Update password +updatePasswordTitle=Update Password +newPasswordTitle=Create New Password +enterEmailPhonenumberToGetCode=Enter your Email ID/ Mobile number and we will send you instructions on how to reset your password codeSuccessTitle=Success code codeErrorTitle=Error code\: {0} @@ -43,9 +50,10 @@ recaptchaFailed=Invalid Recaptcha recaptchaNotConfigured=Recaptcha is required, but not configured consentDenied=Consent denied. -noAccount=New user? -username=Username -usernameOrEmail=Username or email +noAccount=Don''t have an account? +username=Username or Mobile number +emailOrPhone=Mobile number / Email ID +placeholderForEmailOrPhone=Enter Mobile number / Email ID firstName=First name givenName=Given name fullName=Full name @@ -53,7 +61,8 @@ lastName=Last name familyName=Family name email=Email password=Password -passwordConfirm=Confirm password +placeholderForPassword=Enter Password +passwordConfirm=Confirm Password passwordNew=New Password passwordNewConfirm=New Password confirmation rememberMe=Remember me @@ -86,15 +95,13 @@ emailLinkIdp3=to re-send the email. emailLinkIdp4=If you already verified the email in different browser emailLinkIdp5=to continue. -backToLogin=« Back to Login - -emailInstruction=Enter your username or email address and we will send you instructions on how to create a new password. +backToLogin= Back to Sign In copyCodeInstruction=Please copy this code and paste it into your application: pageExpiredTitle=Page has expired -pageExpiredMsg1=To restart the login process -pageExpiredMsg2=To continue the login process +pageExpiredMsg1=To restart the sign in process +pageExpiredMsg2=To continue the sign in process personalInfo=Personal Info: role_admin=Admin @@ -124,19 +131,19 @@ client_admin-cli=Admin CLI client_realm-management=Realm Management client_broker=Broker -invalidUserMessage=Invalid username or password. +invalidUserMessage=Invalid email ID/Mobile number or password. Please try again with valid credentials. invalidEmailMessage=Invalid email address. accountDisabledMessage=Account is disabled, contact admin. -accountTemporarilyDisabledMessage=Account is temporarily disabled, contact admin or try again later. -expiredCodeMessage=Login timeout. Please login again. -expiredActionMessage=Action expired. Please continue with login now. +accountTemporarilyDisabledMessage=Invalid username or password. You can try again after 24 hours or ask your organisation administrator to reset your credentials. +expiredCodeMessage=Sign in timeout. Please Sign In again. +expiredActionMessage=Action expired. Please continue with Sign In now. expiredActionTokenNoSessionMessage=Action expired. expiredActionTokenSessionExistsMessage=Action expired. Please start again. missingFirstNameMessage=Please specify first name. missingLastNameMessage=Please specify last name. missingEmailMessage=Please specify email. -missingUsernameMessage=Please specify username. +missingUsernameMessage=Please specify Email or Mobile number. missingPasswordMessage=Please specify password. missingTotpMessage=Please specify authenticator code. notMatchPasswordMessage=Passwords don''t match. @@ -148,7 +155,7 @@ invalidTotpMessage=Invalid authenticator code. usernameExistsMessage=Username already exists. emailExistsMessage=Email already exists. -federatedIdentityExistsMessage=User with {0} {1} already exists. Please login to account management to link the account. +federatedIdentityExistsMessage=User with {0} {1} already exists. Please Sign In to account management to link the account. confirmLinkIdpTitle=Account already exists federatedIdentityConfirmLinkMessage=User with {0} {1} already exists. How do you want to continue? @@ -158,7 +165,7 @@ confirmLinkIdpContinue=Add to existing account configureTotpMessage=You need to set up Mobile Authenticator to activate your account. updateProfileMessage=You need to update your user profile to activate your account. -updatePasswordMessage=You need to change your password to activate your account. +updatePasswordMessage=Enter the new password you would like to use to Sign In. verifyEmailMessage=You need to verify your email address to activate your account. linkIdpMessage=You need to verify your email address to link your account with {0}. @@ -184,7 +191,7 @@ failedToProcessResponseMessage=Failed to process response httpsRequiredMessage=HTTPS required realmNotEnabledMessage=Realm not enabled invalidRequestMessage=Invalid Request -failedLogout=Logout failed +failedLogout=Sign out failed unknownLoginRequesterMessage=Unknown login requester loginRequesterNotEnabledMessage=Login requester not enabled bearerOnlyMessage=Bearer-only applications are not allowed to initiate browser login @@ -209,7 +216,7 @@ couldNotSendAuthenticationRequestMessage=Could not send authentication request t unexpectedErrorHandlingRequestMessage=Unexpected error when handling authentication request to identity provider. invalidAccessCodeMessage=Invalid access code. sessionNotActiveMessage=Session not active. -invalidCodeMessage=An error occurred, please login again through your application. +invalidCodeMessage=An error occurred, please sign in again through your application. identityProviderUnexpectedErrorMessage=Unexpected error when authenticating with identity provider identityProviderNotFoundMessage=Could not find an identity provider with the identifier. identityProviderLinkSuccess=You successfully verified your email. Please go back to your original browser and continue there with the login. @@ -254,5 +261,6 @@ requiredAction.terms_and_conditions=Terms and Conditions requiredAction.UPDATE_PASSWORD=Update Password requiredAction.UPDATE_PROFILE=Update Profile requiredAction.VERIFY_EMAIL=Verify Email +user_not_found=This email ID/mobile number doesn''t belong to a valid user +p3pPolicy=CP="This is not a P3P policy!" -p3pPolicy=CP="This is not a P3P policy!" \ No newline at end of file diff --git a/ansible/artifacts/sunbird/login/resources/css/fonts/notosans/cyrillic-ext.woff2 b/ansible/artifacts/sunbird/login/resources/css/fonts/notosans/cyrillic-ext.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..1d76abd4cda38c17a67f5173eb9ad648cab61c8c GIT binary patch literal 21740 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 literal 0 HcmV?d00001 diff --git a/ansible/artifacts/sunbird/login/resources/css/fonts/notosans/devanagari.woff2 b/ansible/artifacts/sunbird/login/resources/css/fonts/notosans/devanagari.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..f228192f296147f3df3b60aca44a812819631e34 GIT binary patch literal 32696 zcmV)DK*7IvPew8T0RR910Drgu5dZ)H0hllV0Dn{f0RR9100000000000000000000 z0000Qix?Z5a2$c5fBQ4=X8UjPz#A_00A}vBm27zZE> zgc@6UZ*c%OcM!CtJ8@>cl-J@tJ%X*V?Gx$H(mA#Za`3Te<}Oja=8S{$5JLR_s!{g; ze@?P-L{0gdDi&CGuhYyC={4Ka2L>`n5>Lx~M6^Jd&4?N{S9T(wTnLMBv4t6`(vhpx z-K^GQE{PZOu58#ia2)Pe*v9ULJl1qlA*fy!Z%}nmreqh6)EBW7GxaN|-aj87U-x~d zJKi)<{;ZUy(=Tq6c_$^_Q3Vm7G7Y_OsVXltiRdf_ef?vwx(u$i- z^&uc0o0F3;VE1vZ|o?lxt^Wy&vmStUV3E=~~%aVBrt3=8nVo`#X7CZ23mu5^|;P(+4P>kg#Vc1P0KAv35S2f2jSwJh!L+1_%`Z zDgs3ch!l~FBo`UIDz!oeSSZGsH^8sWe+te7rRs<~jyjHOjw>!IxQ636j^n5!>d1P8 z*r=GfP2Hwb=U11`nr<_fZgWwe)qMUbxMdqUb@L`peSa=I2fRQR`iH)#xJny{-(MRZ zA|oV1(ZhAQ)D4<>fSE^BpLp4x9edlC5)4|B(UKcLV5gTnHU)pcPYK3~|Lk0-HR_RHwkG2Fg6(4-G0zmfmd`R|n#KTu>!3cS+RjvdynmYlFdc9IAD zBk3-A>&sdo`oIw9{7z;2en0lh-g9;j-jY}&B=Z*{WSV8Gcx0GP75g^*mmqHHMjb<~ zlwr^oiz1%9ocKF?g?Ow~O~5Hit~7?jajqok94LYx_*wD{Ah`gg{MA=>E+gJuv9NRJ z)=if?f9U}1thpY#|NnmO-~X^Sm5a{O4kGp@kI%bv#3imlBShj~T!?EUQW}Idh>A^T zCzrO7hbQh(Lu;z@Z&O|W`3!eKDZsEB3V=J3r91lskx5ZN3Mwdv6;@E<0A1J=KvJzB zC_q>w$pNOR_GJ52AFG8#Fj*>##-XO;pJV5SNg3K|=!Oo)&Hr3T2*fKbE#_xrutv*yp9 z7E)x>+tY)&n+Txcc< zbrq9fsR=`QMD=@{zL3bR_(rl`f_n@py*i-|BntPXM&XeX<=`Rz#sQu^(cJn;w6gK6U&Mg^%B1bOl&_Vd)~MJUXYaV zqN)_8EG;_koxalV$jUswJoSfl!xDIQm*Xx5Q{8>(HP&UTd&07!jCEZD7Lb@VP5Sm~ z)9z9>=`4m%-~lFvzaU3ptsu~;Cg_=en(NahyT@eDoh%4*fUe|3GVdj`$z(Qv=_4KR zKZ5Qgll){B?(Y@}WG%|N3I!-kov$nvbQ7ofmA5d2SdJmcW|A4{SW{@A!h~{|BN$`y z>f=?v4L__VWo&zw`}~%$ghdt!A`%7>d3Z92ghiyp|E7ppGRz&uB9G9?K|~~cjzVl2 z|3$a`TU1w6SA-xkgdidkmiHJFg9Nkxwb(i5S}tdawa%$PbOVbde!tqc|BtEvv2k?e zr0V9W>r03-r{fFuQ@iiTpuAhD966e&omG$>s8=7k#X1@8*00AVZIC*D^%NE(964TZ4M&SEP~jFV zNLf9KC~r~&RqfZq*v^|{TyMI__%4exxvSDl>AEb9z2|}H-4-#o$2!dGsUGutZpebZ z7I<=?lJWfL$<4=53X&@i2@#5faUn^Pk^XWZ6T}f;83;fEl!+uufxIDKNFu({p)e#t zA_9;I^@oa}YA6+|ga$wnP&kwfg+MV-0+a;>Bfb)$QYaT12<1Vw&{(Jj8LkS+l8uxa zfYho(3KSyaj7Re1BPmj$aws1f1`R?oJO*W;C`ZHK|H;arI;a7fjub0F>>P-L6G@bW z#7jVOKN8A!-(Sp%Sl9;gtr543I7z(L3=OpHZ6oD!Wf*;>pa5m7hQwUspPXi4>QO zR}N97S`F8i&(h>s&*fWHy(L-p^_q3L?xwr$x$l9VaMYv4SmRALMTn_F%@Ua*HC6Rt zwj8^O1b#ZQnh zQQ{;?lMw*mI)E7f7ChsA;&}PFzj=+f*uoxK_=vSHpEYrW&-FdOy!wyJTIBJ zy6tMUqTWVII5X)p@Wj_c{Yw76(=4gll*PRh`mw8Sl(dWlpLQq7L_R@+hl~&{Zql?_ za^)-V=fCZ!KS}D$k%dZCJf4QeUrc8FS#}}7ACOobm}Iji*gzpX1j#O2s#H?!P-46b z7o9C^*o_#aGak-*7q~s-S1$3%>cA#X4(13wZQ6{?8~7X z;S=1we1=+h!NQBVn(Mf6;Le9bYQmYMjo%J`s7wt+cV4we_ff=kUbRXtxjN}9YQ?4N z7S(Aw4SK~V+ZQ?2M{z39aQAlQASF$mJLY=Xun&W9NS*YCsomPbR%87BHRl5%D z@U^j=;9#eVV0^=E^gRK2w?J!70KAQfJfdPijtW9qX4kuJaw4}&wx?@P=mgr;sb`(y z5?`z#bKJ4-LLxe#f6kQiTdHuEZ1saf$kn7$XFQ@XSCh+lQAs{)BYMwR;hUrJSZ+GQ z2&8j;MM;jbaOC*d&b0>I)M8*~M%nJ6X6E1K!U1?H)?|eaU%Og@YCF6rCGwg|CP1Fn zSZk9lcG>5EgN`}wgbttkA^{J6i;;gP82hcR1qffLA_uW04wC4VQa@7$);EdmL~M)) zB`$E$Qf1H@`Muv9yj%-eM%mkb=Q8hRz(Vwb#am*u9uGpnlUC*TF!}chUj}X7K%Zn@ zwj>R+9|&KJff;q#QA_Hp-mC@aS>B9e-1i^+zwP1aYwFcPC>vhM`bz(n5CPXIzFT6S zG`~^9iwg%5xYDi~JC+D%SJ`&~lMN)MDW&C>pP@(-tseH_>p?V15u8?q&f@H~p5U;U%4JZeNswHi4bluTS zp?DKYwfke9=m`jdLV4D|e7@cOqP+APAT**5WCrX|11iIk0u2+gpH=ho8ve7c|7v>2 zf0hFh0Z*^U`$qMFDZDbZ4^8J)neV92IS&nbIgzaJPl0YZV%;(BQr82t@#5qJpPgCr zx-;6>bT)M;^zKMK9S`(Tn|LVfxFtoJq z#jHL(>Z%9pO%W(_#h8RS>j(@sVtt_oCV7n|>GIQReqJM8vRG5-{;X?WgNe6;5Ksa_ z9HR>{EvjHgfQYL$>)AM^FiMrsj<95_k>SUhkgy}z1~!szvXANzFcrcImwLMPq(|KJ z>zG(C_+V{R$KQ7Nk@a`muZ8vW@UnNM#3cc#kMyHr;(<{J1^}Fq`o=>~beeDhJIx-N zMkG&yALXy32mt0A9M8$f8^&&7){WB}Snw~@Bzf}EO&)u(tljCG7U%=53vG8-+llsj z8%FeL+enkEz@Gc-u9G7VRvv+l2mM{(+ehu!O(y__g_SoSHiZTNK%@}nk%h-u%vGvi z<++$D3Oy`ajgrM8xf&LYIFy_;_V0r+F!C_k=YCtG_CA*D=xf}y>zWMxt9|R1JkLi3 zVjsk1#L?otiTuRL#GjL1OL`1ZL;4|`v)1K2MQkoOhaup)35&%0q+h9_#fKS_EDuM> zgYemcPeuKbby9~Mu1HpVs{B$lqh_jq)XZzSx>t1P^g{hvgUxW?$hD+dkQRzXXwh3- zmU>IKWzw?Ua@cawI%7R)y=Z;k`la1%Z*x3#{O!Eu{IzUr`EW&V#eC&mFT_i%`rC){ zF?}VzK=qf^g#CBjXQL!uCi>=S=TtRvD=$4(4gd1dN}4&Eyk?pAwAo^x6TWrUZ@S!# z(1<>!nJZ43e3h2y(r=5sO4MpMV9EtKk(P;9A129MVz7`AV4zG#JbX;uatf zi+8QswCm6*s7tpVz54VUFlfjyEgija6DCbD08N`Q%gAKTM)Nk=3~7rJTWzzQ8Nm)k z7VNakZi_~YHpT|{0)wC4PEn%Li3S}BIeHO_>Ov@{wWP$dqvZa8Qt&^WD)$tU`touA z@=r14GM}{W<0ggL8n+Q$KEUc_;>>Zt5Tvb&4_D7+c8jw_g zg-pe^f<28Y-Yq8F@n=}ifVam-EFho4tuU&#OefYb9&)Id%kx1eEUDQ1Kb{M z!bC}utxrq!*~G`JJ`?xbtopdhPM)z+#6I7fByILWp>WH}x;(bMvb5z6H`@49uH-iI zuO-Y_6L75Et+Re?1GY9#N4p`G4=)fXEaN9Lu@=c974)fKR&3_1@C0*+ibSSRX<7F` zXS!Kz4wom0P>JNZ@t@l**3Bu-iIr5Qh;qx7eXgI;ZF)m-jL8toYO}}jtHcCS8wTh9{!>60T~u}!9uHiWW5~@`P`2#`pb0>lV~rDbe*LpRsTSfwStVV2ILYd_VTpqcS%eR! zooy|5Romjq?y769yWyr=ZoA{Id+vMSp+~wKJ%a#pAWV4#5{1U-us8#rNFoC?I!7o{ zY8gxxo6F-1#1c>{Q>fG$z0qv3QmDTD5USG%L$!?8kOuKu-uzwd?_unU7gwaO@f)>S zkd;ry1$b?!M-0K}ljVDtAFl-8_jLJp%YSDOq7R{jM2A2^vO_Q-l!9cx{r1o810*U! zLPkMFQ;d#*iG_`Wi-%7@NJLCRN=8mWMNLCXN6)~>q=cD;m5rT)Q>ij8<=iTGRPw6g zQ_ZhNtvdAr8Z}V{zzy2mV#2KPKfs?8jJ$r%LO$6F-reQb{LE|!KnzR;gb0(b0QS%9 zTVr0v^;rNDauGK(2?4$7s7StSK1ddUhL~)X_FuKH3ch#}!N^A-m$=@7*S+oXdJ~rI zU3xJG7Y{gk`^>9}Wa_A)xbk97&nn>LnmKu=bawUIVg2uP{n=97kUo&hJH<$mC105# z>Uv-2fZltQeY#yncB_o)gEGDk%Y^QfiQO%e`e-4ekKwe5^AWEUe% ze~q5gT9d4RE^8g+E=ag;c(-oSjqQ(Y-rLGg2v^NWL^UH3)kJ0#QBAa9VG~$05|M~j zP7J<9wCvlyP&j+TfL{maI7tR~OQjZ(h(shJ5s64dA`+1p1;=(;(R+O+#FtOhXpSd? z9hyBhJ-(uzUc{d4yPKFA-iva@$Eh_=Q9Xya`odMym;U(5zFtf18?P0E6$7VX?*SyJ zN4EO>efQJq_Idr!4TOttu+diAY`4QMd+a}kC-ql4$F&OhELM~xnYS(V3>LZ-m zIdAW*d!lmn{K?LUjBVb~r@awMO@F6E>pQe7J=hQKzQ%5NyyGjR>0Y^fz6cf-hN&}} zrX;sdSL+Y)xR(0T0j=A$PZm$A#CE!nYxzAQqr)~;QC8s9S8V>~NWfpFe8Y@1xdV2oLw>1& zPWgHqRTqv{`5Q>rDsHx>P_))VvGx$hb$bEpZP0F`P0iT+N$g)$xxL@~;zD-yClY7d zTV)noGJ#x{S~krpx5CP4o?Ek)X^RT)cz4>)<9#1YJ5~C~$I~LOPqo_j=Iz`P4_kq@ z+Ge{QcG_k4tD5ck9)dp|c%=OQ$Wf?Bu@a?Br~%46Zh@z>V4S~;v`Ikd9!2mom{C4X z;IudVNwyh;`a3u{@A-zGlFe=AcgCMTXbTM!EVSB%VO(4Zzqe6`7=jsUXd4#H@Jg!G zVy0tegxb}enaA&87FvRN%Tjc2yE7}OWTj6qpCYZ8b-49(+F5Mkv{`^H9JUI!gTqdK zb}`z`Y>yCo8SJCCpKy@XAvT9eM<|Z!Ee>XE~hX=RBhe%q|LXiNR%hKNEgs^&6YtNqBiR!W;)7abc(co)tn=3~M4d5~Ft#D3zgCGH5B_l@j(;2Ry1& zvzt2L$OyG+=&FS!2ZAeuBNu`yhpF)}SAmc`Ff<9CO@?SHtX0F2AHA!A(hO+T!>b0^ z3*7K%u1z@Z9sUdzk+Oq=?j+^s6m&Cb{G|f^z2`Q+1=M$q{=LT$ zKZ@cf#pqPZQ$k?(!8!x#ELi7?&|6J;f#&|X_98AD_CJh?zbv<|kKqQkU&Z_8(_HO0 z=Pv<{@|WVP&|BW=TQ79g=c>N$WOWXNT2Csdj{)0}1uS>O`m3H}{&j40`gxWb-eJyQ z|D)%&1Ft^1!)ET-#g=PL?I5`*9-5C4V1+mlUQCb>L6Vd#qsXZWKuJ^4)eH?&%hIv+ z90S+LGx5y=i_j{v5!*`aKzpf!%u(*7c%2b{La8~C+$df&KSmHMj1$F+6C{aXk~CSC zB2QHWlxeDTb%rKWo2ARv=NNL0d8T}Gfu+z|WK(QgVi&Y8btrQzcd9tf)yDJG&jEn~M8RM1L<8l^#N5xPq2jVKe+jIx9wyHHlqar@R8C!?G(voJs=34N)M zMZgdOhLKQ3fodFT2&g4tItjBVFq?#Vbg(cowD|4;D@Cx1p;H!0TBr#GGri- zBL|5B1*j-d0f{QAz)**JP|<(}kZ43BsOW(nAkh;&K`sVWptTqheJ&NRyT@CD_lzD9+>FgoN-Yy~|o6yif)B#g*ljU#my zi7-vXXdIx4=zJ^uDucqW2Z7%_l0>1Ih|5$^MiH3`$6ev&p56S`^Y%N{_*dU3{3njZ zR3Khe6plb2Bz>^4->h*WCjt5hY(dF}=Ty*eTccviOq5qEkR&!rWhje|85Ya^f+cE0 zVS3(}T`8Q+jEgHI=r{Em@RxZbo-4S?+PZ=`4Js%|JX5Uc^w#&Iq7C#4 z)#_If<&JTrXfZv$Hsc1$mw_m6wwBU9t>NyHH7=E~w~UeNM}Zc_YAPU(;>AOvP%Kjm zR98$S2&nP3R0_W7+AG36#hp!nkF#f$UzFF1JP80_$WbB z0a@fK8zO|#!6y_ZxWkj$l1m}`WsKm*DM6NELyXkuX>T}ls{sN51HkFuTEcZk=z`Q0 zMJwv`D{kF?In?OoHweE$_zl8ukkK1=ql)>v82>e+lgh$z`tP3j0Z>W=s>;Ysv_p{EGEx!8$@#TIhDLn0aFb}C&QQ4%)EJi>C`Ptj zabOc03-0V3$xe{0?3kSwnMpB?gHkJ`>P!Q&fG7SJjICTd%5gkaRRRLN7Ls6pnt=lf zii$zZf!K4iMWc(cs4b|}&xLwMO90s$L0|))OnxW3`D~I9J2M-jl5~#I5?+Ffa(pE- z35TqZWzPyEWgHY!xvdG)WD#^l3cS$_psNJRWI;e)7KJ813xpHPpA|j}75cuE4J$Q~ z0?yxgGPICB-hw}?E3v7Vr0lyq25$adaVc0&-z8bR%@sFqbkm*iVLdZ zimF&q?UsENv`Lolmr5MYM0gEc>a&VfS6ii0CC(9}w)d)22O$RL8LNzU;UPzH7QA#* zPON5JlH^KNA&2efxG8N%_Kxx$Oa4@!L;s(7w)#s2@jm%URc>8X{uj!}j2cRLJ3D_l zmgRSc2%iz*0ulZ@F?YFW=fU3MvfT#d#%{)ELf$Ih+vQv}hvM;P6T_c?2!AvDoSVib zBn?c_%wj^KdcPsZm+FXy_)|^V(ZcSfee>-h!uLf4IHLn_b~ou>AgsL<8Kivfl|%hs zoqPDB6trew%8<=yL7FlT1$WI8W&KRL19L#G3qUbu_fZgSqCdJ=Ep{wRIYS3M_+Qhj zD+50uHyKUE37e^!kV~r9QBr|gU&i*7DwfCx^CalIap0HUGCHsu#acslCuF~l27Ven zl&ZYmm9gqL$qpEcJnL&0ThslQ$+FuxIYt``j>RGq=Ee+F<|}3CZrQ~ud#4ex+kbV7yjA^Df%l{XL28*U-WCWb~*@D z#03>`MMbQrbXx~ydP7EyaCDqQ9=K;hbmP01Q>{a~Y~$ejLm|R%PL7rJ!FnTvi`|@3 zU_B6maVXqzj-h?-u>!^(5wL0(CyKo#v(}?8eCe&^mT_zJ7I3o{nR=Yx-$$g%*eUVD z$Tx3ZzcWNQH&yu>B$&S7+;=NOtzWCP0~w{bq7*C2F5UBnFE2sI_jPg1tymJ1Sl|9S zacq)PhQQnKOP(zYzd1zsX;PA&ROuUEzfSwlMTGySFVA&HAfi^=^rmZ0>2jPA{RsHn zynRR0p9R9Pw~h=|>SP%|VgNE^BNhj_yXB9W2!9qv&^*op;fw)hf3B*@L#?YD{u zrwUI^S<#x2FeFhjSIN7w)T6Z@no9J0LWGO1rQ-Tolo#g%CRCA1!SMw6jiywD>)Gp; zHzduuED$dw2IDjFuuuKpnhGrt&dz;O%in^=ar3BJJ2MD{SW%2$BSi)L9Gmk3C(%F; z4Mfa9!EBl8BB@^tDoM0Ugh+u{FcAL*!oK*=dCt$m3c3UKG2Hg|n?i&i`#tTK+!Sps z&(+z}5nXYOp8G*LrfjpplUHJ!#V~r_Uf;gMNM}#^zpilx*oNQ3U z9T%m;`<|hqS3_CB#VOZxDH``Ke%04ARP>vnL;t11I1CYG*OZ)&7Z;H*6Mcyzj+819 z0zM*)PD4=!q&VfEhyyT+`1M&-ktNj{LNo=qQWiVkQdru171~OlEIa+nFZC!Kd=w=& zrSITT;vbpOi+?ssc`!nSvJR~Oky%KPDgRKF(N=o>w%nl%*ndoLFv-yrPNs4;9T(G2 zuatky>05g4_Je-`{T$4X$9)yyOG%$a@o`iiLg%gYl3_?%qKR6 z3xZm*8u3XCaiWEUf*=TjAP9mW2!f!OBSvNWK(-|GY%x-FG`_gR1f{$1I)hqcBlOS8 z(TR%HdDz+BxV>$g9o=a6ZpqN=U%{N^+1o-^sdyHFd3g??hY9m=;T|b6KsS>l#0I#E zuqpy7BtmH>)jS7qieM=MqzH{7D2i|>f}aR`BH%@#FTz`_NJIb=p-TiU1+Frsz$pMp zgd!1yMBou2M}!s;R75xtfkcFmOhp1CKthBE5g0Z|0glG#``2zm)&~VL#V_mTo8HL` zlZG2kCRto|K#n@Qm9)JSi>U;_-GzyB+Z{DVd2(jp*V9i6d=}}OF3bVkfYOndY8txw z(*VQg^8qMfIVr?nu6#m4Tq>6sd?o2mT(?}CU2)x+n~$-f3{^1@n;rv$!9FjW4+BAv zvA6rMelvx_6RS3M$3aVjj)hjDio$#dU?9|<9AxaYE5xUkkM0`qV{n8H0cv0HMz!zw zq+Yts9*3M*K6ET9t|Pw+bS>>)>^N`|W@%3|fwFa>752hWIEygSGId$;i~ZAKm2m|e zVKDcjMt$}iIZw=$C!dWxgln!;+EF?(f9n6iestDlfB4UJcXh{6k7i>{Hp6U@;v`9z zt5mf{ZMyXvu+46P5|!#fu5>*z+_YWvqdz(1l1Dy;6j4kGr3~nn&D+Xu4z`usg_%=3 zo_UWxiU8tCAj6}uyjRk;8p-@9C+K(vrX$R1tF~i4=URy-kt9-61{B!i6KIgRQoL4x zn_X1_<ygyWaDDvk%oZk9271T>d4- znP8G>rkf#Dn3=-OGTR(;%`@KuQKCKXrJlJLNX$T<`vwZcXiJ~lrCciCo5_!DbKd}2#%DAHSQo^2UZYPy_o^)-GKF| zuo4vx&aJUHgj&-uXF~UdK%+jwD)V_PR`e97FpU^CV*Q&Luxl|;(2-YQoS_E`(j4}# zMl?Lq;jLaE4e>dlSjGU1t6U-?3SGIbfKeQ5G@V2dF>0CIxRfVlP@>eRfuJ#~rshM% zYx||PVnQr|2)Ixn!9kc%0tq8KU1Wx##e|r`VNp&Pv%CD;x>19$RoPDJvRp+1cM`xDCp2*z=#JXJo$(J?8|m(VcR%(;y` z%DhI`^6Lx3>&F{lX_TFwH+6fLUU-F}i9wiZHmK!nw{>4_*La*^q~#Te5GO^Z{)$zo z8mMc71y7+B=kh_ie3!CssAShMa)=g*R@*(chfP-wA9xHgjB@ir@Z z8-N<9?qGS;P9#Go;5T|+kRCI=AiruKZV_dyq=eAvbeY{=GUm0Ny36Xd#YN7?0ttQs=M?<^-o1^Hj8kkgnFrA+{4YrM!J zLXs?nD%2ROahitxK@eHx)31Gy{0bpassAJzv!;R!d zeN%hW`65pHnD)hN4tftvUrD(x^G1H7ziE9Dec62Ld;W+!yW{Quw{HVn+H$G($>y_5 zfQEtjHyQ{Z=@kSzYr^up6?-8_wN0lCf%6y`d``0)7d@jKGm@U zjIBa&JQ3XzyUn!Pfyc(5+THWpL)<$fF!u7(mANsE;(DFV0$0k+V2CZj>GQLB^+xlAe%i-ZC`kIP}Rm<)O`jY<)4 zJ{=GH-FBYFq3^1)$g>nCk*%wWEQvhFGXFeccuzNg^%~4U^`c_U)ohxOZcOqve$9o0 zRuQssC(q7aJ8?z8F`dY%KJi?T+q$u)ZVR`VtkDf|qk0Bg3;!x-`hr!fW&&@9w1ofR z0bK5kAP?s#5@UquL~Z*KNB)C}&vSX2$Y9XtaC5jXO+?TeG;_Zy5-#2d=(;6Y;pEcS z0>KzJNw+eqt_CQNb?aP3kxi31m_qaWTwqlf5i$pg3r+Q2U@)SEsBeCBms#{&d|<$X z>b?PMuxa91o`3D-Osuod!ck-Lw*c#T>)(x8 z1CTEN9VI|HzzP%b;ZX$_&cBw=RQP(|@TG^|h5^^uZ#EiVYt)Vaas#vt0Zsgo|8_Xc zZX&N)v$Yg!C3>xP4G2@xq}tF-!M8cOqM~|wS*^e6>|@3P2+g{~N{Y5#g|M9w<* zT_ZFNG_D!g<}OY2)H|S`jxDHOXnx3-_dW9o48|cz9&g4Tk3T6w9Q8)FvheM3MXUaNgo3(y~u5!sg zecEH;+Sljx6Pz5==Y9oj%?UVC?-RuZ#pW4*9G|8Eb80_q zFhY=1188nUMn!O2V1s2dvk&Bdu!Q|#_>Xnyv-#tb&ME6CAAKe~;M|K4PH$d)Gr_lkL3 z;2Q9-*2P-?kBT|QkLy3O#)&65Gr2}3~u>)P{#y<(^s<)TCvi+BcvRc*M|qkAhTak&{W$?i8aL@fhZzi^ znJ9C6*6obclo6nhyl6nXy${!*9sRDndCQF*!{d6woByUizx~{7uVq*F{FSS>O1RF^jd=6 zqr~+{E4jo$29Z&f<=<2xO52K)EeoSKKD7le>7{~#p&h;WbXp&YY{YUh^+3-~sS@_YT`)qjc3-pRZ^p&_LQh;ZRS+DPRftsKD9G7CHNf{tix`PP+CZZ< zD;uj0D;&ZZ%&|n%DHMyLhT#eH!{Ss2iW))~D##mkmk2iUd2OZpie_TAAX$SRJ+#*| zP3X=}V8xRC#JqMVnoU}iurZ*5MHfxlxI;kRCE*1=;Vc;?5z(3%hRov|gAJQjOGjHh z=+dx+FVIdX5HmHwpEJn=<>VP>c2vta(v*Fv?@P}zByYnaqAFD-#l%nwb;J-`nx-k$ zSu#myc2h}b5gMaPp-7M6V%aSlRTq3g^csvL>*#4<#3BVZmxNr{?53JHcH1*wDBA{A;%FjF|PsYIkBSNDhT3>W%F-`&r% z$0giw3Y=+h-L$EpLnlo|V`HbW^d;z0e0)aUqzu?G;_q3u;iP_%f*sX|k1Qq?bIKL$ zLIHS`_ycw=w(fefU@00>SgFH(tr2QImBjZe0p~UBe@4A-!`@B29TaMfrB)ixV6kd` zS(V?Dte!xFPGMkkif(M2T5Q6EO*002g8lpeE`u!0j%E*-67^dVH#c%4><7;i#|@d5-Jx4~q?#(gunz6Pf{L56kYhOr(e@11ctH3_mPcq*+e zmo5acF)f()11)uw5f9h`vw=V1W!rvEk_0gfh(05i^5v{|6}r>_S=d9;ub&00o(Al0cXR$FowG6rr7M z;51`~*bn5x3K{|h#}N#c_!>xkg5XcH=)+w+b#sz=!$%T_wIj8$&qPJUpm)UwFvo6# z9HZ+pU4f;y8trHq|ILC9ASdrmyUzQ(M(p%hlanY19Z=^Ow+>TP!qbsPBQR^6ujH3*lI|}1JbD*E`{n6sGHt&@2Oj#7h6>m?zj1#CXj?Jf0f5q2J)PdM+yXW z19>#mjTb(HPz{++G2^(H`YGO&V59EAw2)cG4NMhxjZ;V-)lh9ns??cqq0zI7z~usR z3v}S;{&q3M)vi@{&o;AOqL2g#&~DNIMkP!ja8+YK>swqvyF-k@%C)aDf@;^ZwqO4^ zOd%gJX*e6yyr8If{BKIAq9|dOE%Ycvpk}x31|^-b*h{vyLKP8|XR#pVZx!_6c3Ytp z-=NV7PFWt2F3&Eb1zb~d`(~P;@coP|@;Yd9(4RXNJN-nZ4h24;iVagLsu*>1MnFH6 z>mQgwW_!I)i%n`lrQcK+#`jJZ+dk1r{U_!e%A0V2!x**SD!L#uwi)5yova#2*gNd+ zQ*I#}fWpy{hVN^oBHs@)*M2!PCLh>Q_e-rwAC;MDo;N*E2udk9!{s|@PNVPI?F5n7 zbZzq#X^s36JSE--4hjXt;4j+W-Y8sXTmZ8Z#;@8_I)t($$~cz_Feg`JZ><)i8OWya+~6)?8&Kb|&>NXU5(6#iwyVCGq=rZH5@6m73=AGyT7|rj&HldQW~ms!Ene^8%l)e1Tas zf`B|ZX+8>n`u90kS$rbR`JMBZ7$W-0`R)&x*pV0MYUh}W-)@kmddYRR?C|H?k>J0q zu^6?Qig;jHC0}cpe2Ix>?36xrSIgU5-va%EWA7}^T*E0I<^1L!jH&92wqVTY`ms6L z9K4i^KHA}u<0T+JyBBui@^nTf#B^1h^;m9rbLd{$+tR1*>>LCQdxJ}r-A;swv8@(7 z24dG&}O0qY2Ye@WNC)%Y!y4ii2+=||Gb}0J%^$) ziS!>plB|F&fi{QWCcaIUgHVmk(+;CY!Z9J2?)vC{(n3Gywj$$d>-7^K8#9A-$us&3 ziHGrVgL5(RCYW+hzJg(PjlK@OlS@eI903HRPIZ8n4LrJ%KgCeX+=oPuuTVQ-gIy73 z&c5zL(LX0ipNJfr7C#o5Sod|`(Q#_ay{(%MN?(QQ>UKJo_G*VWera2Bun{NM&j1zD zyC;Ns;?0NJIplQ(64-$u=%)16jySkEZgE8HUNT zAKcE@MYFHuPxljz66Q6EP-=#uj7SsRINpDevv~d$^LP9B*-(6BGP_~+u&UuVul+bv zrN*k6B}di%A*>IeQs?@=XUdNeDcK`3aL#?VwT$?B_w8$oyfVQk-zz-UJ$~lum>nin zo~x1)c7B58Q@b+F_regN_THU|4!aFjr)L}=K5S@mEbTf%{hkUN${l-v>`N_1`#e}A z!DXeH)I2nPA7iGEMUjZN-tO)$0X||&^(G4tGhVC1hfyK<07V0Qi(RrdDaM zgtP-oHk5DN6C=FG8ghnj?Lj{^m;o61Uqw8UT0GzZ$ztPcBc(_GP}35de7IMS3qHbFGNC1Fn?<^*z^@|^*BK7(k;&Uv% z+%C?=1i*o4J@&LZ9*+=;7XwIX9Drkh!0i(X+=}lsa*EYjN{rz5pye`g4fU{vOQIb< zl(GuconDun2~);AK}K6RLkiqrM}>NFq${`V1?C{?%2)rCRgRdp_gT7fi}F37V*jIY zS-A&~a8oZCtLDSLxoy}M^H3K7GTX{VY!QV<^yseYfLu~SK^Fy@j(VFI`YyJeFI_$j zhN~$!LKI9mUNTf4DXQSxCSKVJtwY*yFr_()ER)bbhD#-IJ6SW_kc?*Yd_b#s$!IK7 z@-1r8dy&&4xOQOQR)#JUG%|>I7*V=YPq=(&V8_eBv=D7u#`lo49-$xB-TCC=glkuJ z?4roqRrf%WnClY|r0ZsN!4O=TC(@P|KByEJYn+9I%L6Rfe~b_oih*A=RJ>Cf6(E+t zzXHHw^P;ft!RU3l75ZULgq5pCbt)Jvi8xx5!@nYwZzO|b4oG7QYA>at?6$87Q&-4Pfv2s_YmP^6VofL5ge_CL3@hVd!4>cT!d20YB z0_OAD zt*pr_&NOMG85oK>?c&?AH!XwaXH{CbX06)1yt+e@-<(e-rEE!>8^`j}In8zRt1f&a z;CFi$AEhqmn~~M*hc`O;Tx}V%=`Xs-%Y!bNJcWcu!|v$IMQE{x7~B5ssZBB~Gn_?! zJ+XHq_iIGdX>>-g+^pFfWDN|xe}P6Hx@}tZKDfIx^!2pl%T}zM4KC-dru9Q|k|ZN*6!T*N3@WmaeXn2xH+ zxSnP-MZzGU<3e%d3g?54A%!y+zi);4#w`UM=tjB|*+m(p3I`A=zqmzV#EdQiM0JvG zLrKSkW4F|KXP@FeZa{q!_&MBafswn8<$Y>!^LrQ=0*9Tq|1wIYLRC@?At*pzaVs%q zm#om4I@t!_q|o=K*Sl=nW1`1&xXIYVZ#MwoW3^@DM+R`;Uje*KWqf&R^-T7(?ygEI0OTumU|^pfkAkkf*uuZe zfY*8hZm?B&J<`K{RE&Z=cF+XKcPWoPejV);0(mre01Xbi{E@28qWu-?gg_^NN9A^CYk7~pg?6MbC#dNW{(*PW!jC7I<4+dV%U zRS6H3M~TkS!c5Nef;`7s|B_%rCpwUC;I?S+znGY(!uG5YHRzE&4mmIZrOPtqdvm|Dv(v_25Jct0w3TKMdtLQf3BEdgm_2(S>bF z+q=vALff09D8~vqrpdeY@!bdxpFQ)Co&C(EHG5(n{9XCV4@GmDZu2(1D+VD>MoT5I zUV9M#F-Fr|bubC-k!aAt?x*zJaMSC8&b*?z<^v4ERYPFm+b%5f38x#)(G2ga42*OB6a zc^F!BVX9t?Qx$YvGVyeCAV<@J>;L^^_uO!x5knaK*GBAkZ}SSoPqGKBLq2251O;S% z+U(z({>uLEI(&kB)+;6KMh3T>AH^*r-GQCy(++QU@OQR=InlG+J)%e51PP%Z0>9_9 z(Pi)}e2g|b{5CJY4Yws%&$4qn8My}8-Iq->Tjo=^`rWSW=AZg9cEpE|Jh?gQ-7Q;H zhTncCcX#~VS^qX}{eI8A`?V=(`_BiJJN{Z}z8a=?g;g{4#8X$kFxV^N=>I0eIpFkk4ltLt)<2yKACo92B>t?U zDV3VgESSI1z8#lt-w9g5i4TEjE`-O=ocdPUXRue-}%*q^5?`BCb_iK=%z=(O?6|24h7 zWniFoWO$;ry}L&q^23(Xdyeck)AzDBqKZ!MqH-0!;!3jFkY6R}J+Xa8*Oj-EF*s2Q zE#gV|6f$4oFRmaR= zbYR2YMF{ebwDgtvDG=oE>1kilum^yM%m1c#Az&~>S9(U4HuUc8+~t@10U+}9rA?CU z?pcAbL#_}61-ZIveh2ajYYyB1-f{1#s>B{x{R7#e4Ng)_O;_uV{;s(>fwlec-t&OU zBoZ=tjS{lqr&WvEmv<>NsP}kDd5nfsbuLbmjOygB!uw~Y=2&~i*k&gsPo*OHlXVx5 z`M|HiI}A@=;6L?aEx*1Z3NjWCX|4Qsc2SqN^=r*>q`GfXLN%}7)usLY~!vUv#frV;Au=Rs{$#BU#y=SJ?o#ZKr zMye92)Itbfj{AMz`5^$})mj$8UR4*wH>Rq3AJ+@3Z+aE zR+5v&MPShUX9zjN8pkYOZ&PrgCq6uyR%DKs=U~Tp(B5=**)&hmqftACN-}@znLM4U z4vpUPXqCY}^aqNmR!enoA}s)uz_*c3{2wq)ZqNTdP|-8h1r?^)$vU-J>KfgcJG&JX zZ-uij*r6Di(I8IVGmm6TRqZ}Cx5`svYpZkCQ7V#4@n+5NMv+cCOXL;Vjl+>EE`uf; z0LsEgBq*{3R>>3RZp{)jM>gxkoc4FVGDLC9~yj_U&Txv>MAOKCH6HEd0V65s@Fhr;JOP zB*@DSs;mp%%CeoWY8$g_);6u3$#SlPH*{B8cttjIK0!Fn5sKA+fPVm<8TTFc9;-O} zFx(XQkZ`Nx#x-mEH!ukr&7{$>V&pf)nKcq>l;g84pl1?@TU@c=?}c%#ngJC{?d6ME0H)O4Iz$i^ zU>mf8Haz}vapBNPa0htDy$DEpmrU&pqEzAMbFJEhn$*ZhaW*NuTbXp|{pITsZ zRa*XV%T;uTe6uv4R9S4k{rYXr42CF}|WawRO~ZwcJZRrO1N zDjMAP=AzPll$)Ro$G8`zCDT?CvUCx#e8!+qhK(~@N6Sk{M1>B9qn1N8%ro_=6{@P=st)H||KW+4)>qv)sRBP0#exURth8PAa4_StMRv z8UFgp`X#{jyhG1|zbC*aGo&olZWSNpQF49h)RwCghhdUWC$P5Un-KwlSR_*TwpFl- zdU7AnfVRhgz2e(~K&NzEukRR3H;N(s6iMS=J2z9r?U}cqu_WDC2IWT}e!8ToKbdBl zp_MePQ$-kg=@+L#+lO?X#cO5J&d_j)qhVLE{cOZD`{yJ0qMo|BL2gNPM}U)3JyS>ew=f5cJUwLLPeK!oruiis7w;M%RuaVc5 zA=r7MKj;i>ePRoREvXoyM4i{)@WU??Rcb{=tClJ1=2BZ!tLkB%IEN!?|k> z5&(-?c+?e4lqn<(T6251M^oh)Z|U7E+@@g>S{h7yv)We>u;7u-nL$9@vvf%IXCih* z9a>=Bs#4B5CpKT&LBq(J=nlgcwp5DW52owN^R;HiaiQ+KE_f`t{Ur40ND~ubmLSo1 zItGE0QnjnTI11o?4CJ!qGx9-V$wE$}Kw{5nlNQBWNJbsgn>!RMUvs$xNv6L|Et&$QOGO%ebQ}0qSb>WP9g4 za$)y?K*OuUFs)QnwzDP>!CEJXGi}cUe^f%Zg8CBI_0SG6?!nJ z8nvjMP|+r?|H`ezsD0-;^8^qsy6?Cb2c+ncY>8&1$l`;8f#F@?K>{6YaD-XEyw8b3 z3qa2MaA5Ttjn-MoFv;kqjMRgkEu92xzn<`3_W)&uBBj7Xfe5=P3}zk(2!HLh7N7*P zkZ-I#qbb|!s`V}2Q1@Z`*S)%Sv?*GY1B=wHoHr4`EN5j(nTk}+Ew)r37<^#w*Ri~79VDi4BQtr28`o#niu{W3ICRK)pPsx&glyJ%$Py${c%Tks( z>jk8x?ow7%Gv;q<;k{7s%VzhzEB650l%IoK#OP0a{e8-vo}_xG)+}`V4ZaQay=ZiI zwyVS8&~D|kg!uVW5Fg%KJC`d42yFMAbg5sB>nw3}hy*E0$Inkkyj4|d&XFA_U$37) z%ATbpEgZ|oiILw(v-wTR>J_MEk)ZxKz-`BOuPfFu zvN7)j;|Z^xE94h7)&Sy=hI(l5oe{6@@NTD<*93R5_TpvZ3a@>u&T_1^#&l%SQqFCF zxtRA+yn3;8)z`_O69s^EW7hEB^tVe~! z@qG?leOy%d5&(kZ*mIVL-h$Nmj%e&#U9}a9m(-o8;JSTlXKJFkU8DXo7THvqOFcX^ zrHKcD0jw9=dZt4_sCUrmWO@-=I3np~1DL96*>V0`q4cGjNB zg-^PT_Mv?jm7Eq@fjISz>>>`Gnj?p?BUjrc$+I9z;CK#*o*Tn$4(qYgIkLXKi9QbQ zgrquaHpeAtg|HOR-Ik^ai2CERn!Jkxs>&yi+DfacY8;IB{)0Ih^@n#`k^fYFo3y5C7x{9X!l37Sc0a;gorbEJw<4$W_A^>P_fos^doP5(^Hmlo?dc3+OY zusGjrW%kAU-UOhb?q<>-0OERIK)KK!j$SkjO3DHYzQEVyPo9E5J#kLuY?B@?RSV=g zhmi=Wh6#Wro3<{FR0i_IL9I#~+{3L6-cy{O)l|1@)t<4&ZAGQtN{J}%fiO9*KpUA= zu>f@b>POa`HXp(gb#RBU!oCkZY8V<#__Adv?bm9;Cv`)k(vwEVa@n^gu3Jo?Yf@l130O;XZN>Y_>pQ&GLhs|gM7_pPeo z5%C(Lyr?8bk%0-$i-3h5%_gV|6`u<@ZUI(xe$6St8i={_ zBF>F+GZFZtonVsOk1{uBdiqfi6`ILR!6k)6X3DB~+C!P!H-`f;r(fjlQ=W86`Ou{W z^vnnPFq|$(atFHiMNz-$W7G- zAEuU0M;ZkrV-kWN$Z!2Ckk8B3Ch!W8MmiH;LLy1lEY(^-sg+v1{{f^*vdL;75$P#AA+7N9xivW!lMZ7w3$!fb%Yu2Pq zhOSv*MdA8-V0>xM5+JWx!mf@c{Lnr zlSo8r@G^K@Ka18P7L)2L>7l!8fUx8(j`OpQAr?a|Wg+OP&r`4hmORPk@*-_*Itts@ zPuJVVd4g7{f-|vq59t2Sz#|qnitw3bL{YEf&F{0a*Q~C?ef}4KdmMi~fAb8n&@(-4 zbLE*$Hfa4mkBm}PiRW{gA@VHjge-F#R2z6r<2lhiGWb~=O)finPgJ9P39NnL5h~yIte##Sod5hADwAP} zW2F~M#6q@0NQK68=vE*l`Wd@{e8Dt1KE82PG#vv?%4XnYZ$65OZe5(pn6G~FX`22>`jL#UTWLAjcdnwCE?W1!TQM@L4+>)RNcDq zUnRbPNkgNntFzg$!TOn`h@y}s(MyjJ#ULG{wOvW!a}j-Sn9W-)6to8j{cUzTBql}E z6L_arCX*Wlus(MU>3o@kjy_ZnbG(uJ$6C8RheoV_Y}#6KW0$#V=u-9MFQr=rGXUy~ z^_|`$EB>EtfbswH-a|z{sH4%I%N!SrH}|3(U7Oh%%ahLJ)M_|ACRC&W`K}Zf!(`mFRcmo<)9AN42PXF2sKTnyNJCL!u1=1^;gpzs zBe5t?D@9r-fzxEwFi+W|6p6Y=BnI`cK-MjjN_&Pynp0?Db|xz)KbIqfA&`R191bEk zha<>DtOlZgBcxfAGN6goscF_kXvP}bBQgN&2RrVz+Eo)%JI?Z6TovGz*`G4~8Dg4p zUcy2-m5i!1TJt;oN20~=O<--S-uMfKBx0i?v-xpNoZglxk!4-7p_?n&&4X{|r^AQTPY zmB7jmyw$h?p`YeGekkN0*blsdUf>lxuwTf3{P6L8A^*`s)<-A+V5(=3cT-7Z$azTW z%~d_*2`_^56v9+Qrc^|^{z>NV+*J!Fw=6O#^K|RPSQ;%TPRWiM5z|44Jzdm6}Jqw}& zzXi651v!|eQ67YHAOeJvmn%U*tj>}&{(2l)h7nZI(!XM*<9He#g(j~8PX2=$dh+-x zsQM8&?E{*>=XT$3q}Fb6Ije>pN#9M=R0+&+L&nV}v#@u06OD%2gv-|>rev!vMwaWf zIUv6D1xkk9%+xE|$EhZEW%4YdKSLa!FW2iNWK;)H)gBJ)KXN?B+P74s%=I@(`$T{Q zwgeI`sB6+VWuVAhm3=Z)psWpmg}Q~rt^e)$JCcsTWt;|!>c3X^XTyhtkJ@frvvn-# zl}4!k5CEf({;~tFozxvjJndE{^Yef}WW8H=ytp0wc2l(&)$b`9$Lsg^AON^QK6vTY z?`oV4uG=6O3IWrMTOOoUyqagS;qNvfy`hV3vdl|Lb_evrjtOvsCqY7uQ0T*ffOzLq zdC?-uEe4i8s4IHxckr1$C=R&6Y7knY1KySECC0z3>I*MYOvs;MRrZ- zUy!`jt|yh>e?=tM@3(?$+}*HU5_{eE_JVu0r2LM6KvJ|@Agag@RgKzCGGtR+rkG|Ip5@09*neF@&9bHtnP>;Vqx*L+}I9`=PU!2cubJ+tInfM(|;chi$*F z5>P{zLExae!9b&R5L>K$p|i~?Lr1%_)RDcbm)n2?KW|b`B@KHLZ?)Wf$J&;hDa$rc zn#f&d3B_W+FTuPX@q5L|qDP|!y+c!#Zh$b(%`qw@_}=IG0f zz_6WBSsWAAKGflsgyCHcGx6-j)c{b&c7k2*j`9ktD4k8<_lRgHlak^~p`MIRu1lQ2 z+JCzKw2?2Nl9~RFa(q#b|M3H`j6RI!+ily(Jx_~isGT$56!~xFG{*O+Z5B~0?A8VT zYLcKnp%l%;KLX;XC;ecyb{oh2LC--+g=o-YuAIT4wbTFr3?bQ9kIMRzGiFiSg`h)ugtH%c@chKF8p%WyT8oWWz#IaAtpsWY1z6PdgAIfa~JddbH&x` zlU*7yD|LF;Mr$AKR9p1urrIpky4zVxqI^sH#;_7TShSYM>-SmvjPKglH&+lhPi841 zdnjgO_NH{v+Qa+crjg8bruBH1X*PWP{?f-V+sCbac?agA51j1HDiI9K?Fv>wjKfF7 z(F*q?8Mk+Mo3+pO&P>du=LzTMBQx6ZDjERpJQ{0Grd(M;0!=93e?GWy{pYnU-BEY` zpVgN`^sE?-gw{UlY9Rz8wZb$y0YZ`9fbYQ^w)va8eO;Bvn;8=G@Sm z4Kx^^=h4wYw>AJ_awPj5MILtsK}qUpW>fY>5Q<11Uja+ z$2QQs&@*}-{oPQnF}-$`M=N)b$C_11VH(E!<(S1*h& zaTb3cTyvQiZ+~b@X3!VgDRigv;uYVHn^a+^8kb&>irehFg^Iq;t$%MAe}Zi_gq<2x zUCpJ((Kxq%<(#8zHKx7d$^`(7`gL;*(BpL#fE)ZCOo{TzWQEhdou~T1YWks`47U4K z5AAleacaSPW#>_C>jn{EM%^=?%q7l}w~^B9i4Iy-4c|7D`g(Hw;T`XcZ_}2)_a>35 zedV$y+PH-Q$M-xHx`-s_6Z~h*GoW-5R@7HF(NlO#g#u?rUlk7)Z1|Y6^h9>(W}2*v zq%UmcOigS!Qw|v7e6+B%_-d|zS2TzJP}w)o-qGDR!7$b=9K%g+S*e``3&ZbdV+fTE z@Kn#kuWY8pj!`!V&I3P|dqZ~)(-fX?&4k2(`@xh}Ad&4}fQW`}-(S0(4n8nmhS}xy ze*6hg=JlN8d6_GyXdR0p(B=XF(ee|t@~PP6$H+e;`X`B)^&k>lKV$G~J+Zk3aDyG- zQwAz*10M~pJf~;}4r}|}c`Iu=$el2>)ryRAe>egsPSn7^t2M`zdFONOT!a~W>03U! z=fgixj8<~@)RaO_rP^9c6gh^%aD|G1Khl*9pBrFg){1=xs;O@?P+96~yAy{>E?cdN z6{qp@L=?VQXxkC^ur~m_ACG%6ZKcyJX`2F%aaU_3>q8{%implUET;=vCisg9S4II8 zs1N)*pDg4qWqgH4$<)DDGV{Ln#fJoq zHkVXLbF#JhWzn+wp1_*4h0A{H?p~)b+fqNPA34_+Zv!w0eM?zYp@eSRgBmvsjjK9Z znsg5f!d49c|2EYWZEsY0pk)*ese+)DRh`40SYq%I_T=WzzBs*`hV1{gSAI8BhfCgO z{;6ct^p-fSZ{tR@5sNmrmX>4K>$!4Y5!&7aD^WJBW={#VvNg*GqQj_ygRRA2Vndw3 z00ht7>(ixvctt2q9ApbSR3*&gRKc_wM(HJU`O@MH#`?X3eI;c%-gP@3+fM_+pUO4q z7I_y>)T>_2%2dAcsD;Z-F8gkA*CYTwNSFG>Rfl6cN0>(QJfow=wJ}fI#kQV3y{D>3 zoCT$4al~9s%6?i7b}e9u7iSn&V^!A3-y*Dgb6NyadrphQMbJb4Wx3pObyJ@1k_hSB zvOfAbK@_#87rp87-#P_*r_K`fhkX003LUx?WF7=Lh&6(UAHAjwd28SE~{RC%MkL^UC>Y zk-uHXtEvlh5)~@5OhA*c*+O>m<1l^gZ2alY4Y=n35JdOtghP{3=g!LEOimx$JeJu9 zgJc7DAZ`P_^t;eHod?oJ#i!k7u0rcHY}AjT;+>puussaeK=?ZA{2S-CkG*%Eac&Y- zFx}d3Vd`nbKx}!|j*1+`u63oOff(EiaaV-9q;zKD;%WA!NmQDP(`X`785#zzG1?i( z-R4QAP0)hlYAIHV6KpklK?u4dLq>wH+Cw1)UkQF9(X`E8%km`m?RvrJh%9Bs%;xZY zDZyGmKPws%NGeDcJu574i5cC+yV*ub7C!45Pn#GiS%KetU2Hvj{K`hF%dDo zozZukO6q9~?^H4p;fI;)q(zHE_Nd7{$F6lx(Z$U?S7}Ri)}I2pE`c^$XL(ta9$21K zxo4hvM%Vo=co^G+gi7(vJNUV(g<_By}&+3AYbWMvj6?L-@ zr4!NIRj)aH3w-tx;8h4vP-i>c*^^5V6c}a|2Q_d(2l` zI*zyTTDE^NI$YtV5eRys*lfzej#uT>Z#pvCsA~xN;ts~0+0!%r=eAGMi&uTK?C`e# z9GYl)?)TWxs_hNs<;h#!$|33QWrx1^UqB3)M1v*HmW|JpV=HSi@*Utn$V@!-{M)W_ z`>~2W`wv>pqNcj=&};kDDCXaMt&XX=vpVK@!s(s8!|Qh5iP&J}%VJd{tR3_2oKySV z-REb{MFbNbY-`+G^O0Nzji+9^pw_7ms16-CAXFB&*~6}sRZ^vMud29bK@B~SPn}W~ z!LfhQ^R+lLB5SXGNB8cJw>DqyRlwQ&9+O~echBmZ&sExe;;WLn=K?i^VrXnVe0dYU z<#N-~FfJ&s!#TLz%&m$u7jrTXNS~I~9~F%^Xlv^63`)f3y?SWJRnFP3Xbh4I(d zxd_o;LEij+HPGqjrQqyCnp?j4bp`VPhHx%g8JBAp(6vG_G$>`3_6z)8hipS3I_|4x z{Al{3|7*-ME&Qq>`YQ;~xx6EFv`x<3>MS^UP|`fe_8$)0do|cuNJMzh_A+(aclntY z?8Co%nD2tWdxT9nk*HdTJg(yK#b8bS{l05l`pVj6n2&~P-_|v|p)u~!#*Sk~{#qJa zyXs>P#wT8{K2Eh=*M;8ACg8ud`&GOVknZxn`>CwZ_R|w+xvKlYF3>Zi%D%ZD#9NlL zcK|;RZ{Jz{n%%Q(P$R1Fg$Bv3F9o{?V*Krr(Z+=9&zCuuD~gZ)#j-EO%Qr#*DRdcR z<|20@C@7ncmYHG)+Tj(?ot3}HrH&a;#{k1*n=;32U^Av0gg6jzgTH|{ujN`GARuL^ z>KOkt)lTXT;har}Il5MPUYY?Xf-7pp5_R<~(UEy(MWA=*UH;UX%in=!8*u58&*GjU zd6oKt=t}Euq2Hk+Q>1qeUtu5q7~b|Fx4$p0FGIIe?`npo3muzV zp93mT<9QX80ntV}$~bhIsuW69j56vf*v3*w-DOJDA~J?l{Y{UK2E>yy8i;K%r&TDm z)f$p&fWh-1jdYACu}2hWG}kr`o!sabb6bO4Iope(8H{@w4ErZcbuQ?E+iGunu&M3*YJvSkc+H+YWhP-nPtY}#bORCQhoT+UnV6}A2JI;_i z^bJ1za*3~4OK(M)A4XPw3`ivD$6sW?CT{`XyG}AAQ-vP@OYrMsePA`nVSxLPJUaJd zOI84`eFd|2hQ6AtYs6BFr1FgwJ3K%}a)6bsoISL^X!x$Wc1vX!#2Hxk>-|-6=r{B} z!x>|w;cQfm#4|$}Y&k{(t$sF1udya!LNutQZ8L+MlV6BWdv6mXr|3)T;EC9z$h!xi zyY-F~7Bj=j6|4sg^#KE8_D*}?kFwF)qr#E_W2-Eq%%W7k)@;q2tW0xDoYvd59G|W=lG{siO%P0`~$$I zSnRtM+PCp2JZ^CBza&6c$P#|Nqaq^WY6(RS)DQhynr5MjSG`bebug6X+y&n6S z|AcjRgMX75cQZlSo%&w1JpDzcGU-z|dJK})cHKs)PUZ1i(2?@lwHdG)p0wV&YY@tJ zZj+d%tajtrK2ddEO;}*<=CJw}AJSU3XXM%5sXVBc(i94@f)5eXVR? ziivh3ZxbDMWu60o`9KNIKgX>*&3EKJUF6F%{bWSjwfn?n8$P9}Gez>c=`y~`ZVA0R z2X3Hr33zh1%79|E`+QHQuY6aOzkni#So z(7$pRyaBEr9~=MgvZ0_s+z8#cyuLAJF%JOfz3%f0z6P%w(;9efUDDIADokT!BT`db zC{8t!w+1z(m`?30Z-HNdQDx()gxCF0ojjTPM$_{T`|!c?^3t8l%E)6$8QgLJ)HISUtjYD)ki6R2VDJua?CE5i-NYNaF+cq@dfC>K z>O{wpi~GX&3sm7>j%L7sCGdJ8@bg@g2hc6{Mm=S+{D`viP;z@mSUVR_tR%Yj?hbZ8 zm!M+JugKCxal0&&sFHYOWeVjy$la~ZW%BPW2^OwE8nSYAMUDgGWK-ZYTn z>di~2#LHfCHsn&dj6x#8UgxQnn#y_jwkl%{CP1g;8$={$3cjHGu18W=E&eA-mA`YJ%exWL7A(l8xRz0u!K=AwS|+RmcVh_v0KoG0ZxpTr zD5y|>&sB+{xSwpsERi(1*23hk{OI6P(c5d*QV@f;%}2)@2i|Bc^jI{`_L8>E zWtu?}R+@If*Z(9{fhLddPHOJgTiVO3gsrJEICi3w(!YAE7Sw$Ra8Jzxgc)}=fibPf zteXb_VCc$=jQ5UyK9Caa??pqk!PN~m(c)N&jiuFfAJG4rza8?GZsTUbtCryJ-TfQ0*>1+ZhUZB=-F~4Glz?ezWTZJwwK; zsP+$BYV`a+AD49i)wf@K^>221PgfjLz4cxaHEeV!w z)|&j~eoXFO-_1+j3ik|NCd0cDDFl>P#@F`(slTroiLxn+eQAtHO;Wm+ZaXKy4uFX) zRk3O^SY-d`A?Y0s+=pM`pD33xUJpW<1)gO?DsCUT8gK0?TkQvcHE7Gxznx-m_kmlR}cm$&#tkmT^Ko7(F2 zG8DxS+1?I5=mGCI*JNz-UC%)}_8Sfc*z@d8_?vZUZl)2Eww$cg{JInXZ?hHmo z2Zw{K)2o8{%F-Ro?xD($QIkj3L+1#pqHK%L)q>_$)mK^AIh7~&hG#Uf`Ittldayw2 zf0eUowCkgy(Z}c~lJ-Sz(=go-0TC|8WZb}PyL|8t)W?#LIx3Bu(6;`s#n&efe<196 z1ONc6*PwE@fF;flPKg|K?wG<8Qz%)EEU>RZ@S0v_Og3yaRAFg3jAQ4LnKgLr4kxt+ zYK>Tfg6v5tj=m)5CItIVt;*tN->LqpDnVAQ^;ckLbZ>+`@kC$^K_0tX9kzB+{8iO+ zW=rAoGP2s{gKNQ&-M`KbNYz^&ysP}}<=jF~o-TF%+y!bi-m1<`!p_T_e8lhp^~dTq zVwA}0uRlxU6x|ZrZ`b+@kJ+%*1tG=uEnln8ymno+$~^f*JRkoR-@t=Um}k7(6kV&4 z?0#WR@*iLK(81Rhmlw5BVr{y>>G5qLyl&_>7PnS5x=pKoy>Ea6?Ap!D;3n9vai^}f z-W_hfN%$l?>l0fy);deyxU@M+ztDAxZfKBX#B+`w6i;$h&N)mvs9|0t*JRAcWJxfx zupQ#~SRmVMz+)*5#QH6(T(c)C&^ahcZhp7cYu!aNOYrPTp4YxjY~Jd18aFMf+~!?0ix^VJkgwdn z2Jd9|QCQ?=0wYfn^Hv5Q$Hr>aFuc&K#yZE@Vn!XB`srlhApCq*G+f|S;Y z!GZiJkySGldD;p66uRI__3x1tukZ4xSNE@5A#b` zLZ-*P-W#;Pxh2%vcO_c+65b@$O(F)Jhzdg=l~cuMiM-P^XWbi=?Uib6MY%%RWg5!Y znsh`IN{D44q;YM};@|-5V_^S4agr|p=2Xhcyl`$)AB{apOo4ZVW~SG~d5~_A+si3w zld;R%TStnOMtzhEDTz}B0jLiLs~begtDA9!`N!!gt(YbWDtSzK{T@lpitzs0RaKNC zloBmsxDt8LRVubBEmS&9owd&Wi3##xy=iO@NMZfCsK*MTokEejb~EZi!~6X!s|(Qx z1yX$mf#(v>f@xC=6nP(cOI;8s&8$bue*+`N$l{dvXGjm@M zg=HnF#xYp??I><6g2KchB7%&MCRru$OC-GMP#gQ|!&HyX3RRH&~d9X?&9#W$iNJH87($hMEr2Q=+0$20x1W_oaD@7HwtqmM8--!O(?$lvCaLu`HC6!Vsll2|^f#o$h>@ zg9c*zuZlNIy7Q$7Q#&W60K-au2`PCnS`cL@Zr4kyGdTJI4o;9j=bH>fPXcxDgWc?7 zlX=LtmIfP6nC8ngev1VnKkrYDic0SPJThWa<4-q%m!llw88NKu$c`fk$N#!@?9ZsF z60~5YFA)CvI?fCT2H>s6DDfa@1B2Q5if%Z#0=M@gzT~6_C<+ukDITD>5g1Qa=LW34 zFt7Wf4zd^qU-+cdcQfEx#lXD{z}Wt z0F3v+bCBKbKB7}U0SrS^j?-h(M@z+_sc?Qg1kpN{2>Gn*bVTb38%pExe6+lIQ0SXG zVj|ZHw5PCUm*k}huY&hhB}$F(WQW5JrMCq;9oH5229W7(G6pQcQ{?92x)NPyACEA4 zigxqx2>OekFpR`GNWEr7^xDa?&J?fR7uIK&DO+8)18>xu)>Us#vSthGMK>%W z2oVG`r+21|ch&A*$Ksoh7k8)KwpaG~H)r+!WaI#hOCL~Z(f zjy|EMPnHCC;Ln;qxBR57PlhIN#_T0a;pjt_oo5&Z3X`$h(#qVAE{jSxIA1XpR}Je6 zh-*WgYRMJLqBBePW865#C2IUi2+h2uc3Js$p|6U%`n2 zWB~oH`-sUotI!r}WBoENzTz_BCHO786feWe@d~^Wufol^#lCIyYU#fbv)JZwm8``$RVjF{iB}|IkIL#c5Z%gJ| z^Iea(+Q?=;1rOi)>=B%|O;N?NUgO#8cfEwV?Y2MSmqF3@Qf0puaoBz<(u=?29sYrC z`?DyG{67xaQc-*HFHGa#IB)+HT^9fC*VF+kw2GN{op4M8eaOydU?f zR$sZj6>Lb-QF0W~J>y>W3LF|dTy9)+ro28?K&q@kt51q0OYnj#5=k0;y@HB?lEhuC z)DnXGX^dI3U|1AkohyzWRTjmTuUS{Z$sv;&zXJw)t!7$+4;Yu<0sw~(CFCLS{_j80 z-sO;kQF>e-x~`Vpymh_$@oT-mANaHH2E#r7ei;DX-bDF60p$>&TaNWV02`2xZG`|m zh`&AGTpNs$$eCblvT4BZLHjbXa|r;_Ly1}hV$^|dv_WxZ+orDgK>r{M=Te{_@_=vc z2w=s#oQ}1T4(-SK%)0@$+ zyPaJGx7@@1)4xisl2hL8S*YDEKWfSk8fi0cgolL`ytlOGWw+^M1fU!Lpy`<*65sssa`z&$0fyr}!DqDxjkv>iZsdJ%gCJjVIxDxK6YWR0PqX4a zFnJk3whQIFDw!Qqo~nj0yP)i>#+>rg$;q78_cKTY;D6dH(Er-8pLu)t002M+vVQPY zVtH|ghfi*A^}4e#1i&`*Vi+x$1{KR+xX0;#1lk5zfmMRXahby%R4|0&BGAZ-E0)bp z!Y45d|9ML&Bf*5K<4ggl_jtm%ssKG6)z_fcdHO;Q0>?3c+|O0fw~vd*MvJF8;MWq0 zVl>#*7KAmxi0dtf_0igO>rw)*t$ISVjClf3y2rDT1?(ccf9o$g>t&d3WKPfWbA-f<%ZUCZ@Xa<4r z5wE%kO`(rT!TCu5ypHNw(H`(J7D+GO<|_Zhm6TfA2ck6n(!rwLLX7Bap#LnlA5gsU z{)_}#0)AiDWAVuj^D*ctBkBFcnh8AJz+M240CEH1F6J9XDiS=@e<_=_WL9+2<3MG_ za&C5-k&AMpjqU&E0@{>`GC^Ae>M7v<2x!w@8*i+rByP>H+N$90oG|3`srWS!j-f zN;t0D(yW4TY&WqhQI^=X&+)L33jpW!eE?C_|I>bE1l%qFtq;wXTh{_O{%Ac%&m>$BJq`y1WL!1SHpO`2jVAfj=D4(r~FhBr|Fct&kIskkCKO-Yp)I}yRL1SbFX`a^P z$B_lt?1(JE?CYn82`XJQW12?u%`m|@AGL2@C22;&sqH$)MoTQv#fSo;+rJk=5pE<>va-0d= zZsTa8X$b5g3IsDvC|jZ?UW_4+#jAulql&MRL6g8*dUz!3*BqW_nKnYPfF5l&kbYwFc zhq#)cx$RjRo7HF4S>UuN7H9!DB}Ia|5|98+F~JEr82A|1Ia?MQ4QZf(pd}%wuN_`D zwlVVpcUOMAy_&$At4_Su>AtR@jNo^HySkjz*u|)U)$ruNg~ta0JUSS`!-IMJK7d>R znga6ybv{rGR04Zz`)I4S&C+EaKcRYHRA($;*)!WgNCd>+X5fBRa5bsV4gaQBoHUcCAhyVm21%ns|APj^W8*@qp z?3fqeJOC)F{dS@VHVz3AZMxJS}<)3!__?T?0$iC8fRE$3Vn%NB13<({Hk zoECPmQ;ZvOqGIH!zlo|pKNQ)9eQ8j-%6fbFzucjGyvYx)Q6HIsMaXKck9i*YMkS#` zB@5#!AEC)9cK`c#YUjQuIkIG14meFw+HpByFL2bP?1Gy}rlN!76kSl#MYl`%O`o+F zv-`!A@B(7|f2x*$<_`uKV1Pj;KoTG*3S<@-lsC~K1p1lBZ7<5}qM>T%I;(ZHS(2-e zstc{1J3n_@xu*YVGuI)s1Ej!Le%43cV_Ip)KK7wDs5MY^Rj9fyGjh7(1+Yq0Vwr2h z!?*MOD3Ork;_i|NGA!9{PAjUeRk{DHFhuZ$OZG3x&L(#h*IcQ_B8;gPp+O@gLV~dL zUo*qgHvb*Mp&Xobitz=j_zpACMLRoL=~!tmS(LRXF;|VQ0$l+nF6v;xHdeUE1Ho+} zo^u{$mTXoqR52MEjH!Z~c@`EOD9rDbsa85}2`mNBN)&X)%ig~a5(;>OBa?;r&V^qW zzMY*O>|htWa0E|W=qTf8&QaE^ECBJ(Sn`dFoXhS!rK{q3>g`#dy^U>TT$0~M+2_eW z_RTlIxNfE_zxU!tPWyY2S6ZjsAKM5*5+VtDHR_KAPupkm#?*dwSVX)_A|ivh1=D`B z5D0(^<9Cxm0l-06;5iVU$IIY&1@D3|j!AG#;Uf?}#;4%;3_pSJGkyifZ}=aCdE|f~ z05V+g007|KSA{BK^U%6TZ!SmoaFwwa0}fG5t4YX7yw9%rs8j- zEkR;T5t$$gVxnLGrpETVVp-Jo=!?9gN%x-&~@Q7Q6J@(00ZRT>o0qlL#6{`NPY(JY=ABCs1+IKF8@8OLX zo_OHf_!hp2Z{Q0)@Qw=)yy68wAUSSgAYhinFj?|G2xrG6Fs{WKh)vAjP42%E(|@=7 z!>pV9dC5~IAdLe|v-n^D0N((mh+z;9|A^dgKHy)hMgnw5Xl;uGCHZ;09)GjWYQNexE0wc{SW(eK~{tNl!+47oaBQX=^G6- zyt(GcLQe>n2wBeOvjt8NS$n1Ol2~$KBVHRbLdHg^G);Tc;_s3PuWzQW^ss1Fbi=7J z;d{EhSI8oE7o}u_MncmJ;pmOe8*YPD#rCOp)|q+^t7qgY@11#evCqP;==1(N>YPo{ zm8?@wcD^@yr!aCzCl!RU<7*|PjDuVO9#+M@2*sTX9wM(q&3?aXXczCwez;9v(_YE; zoU3ppd2GOwILJA!UHT0&Jy^pEYhM3Nf}F0RjFm=dymWc9i>hUHf0Yz8Kh5NR2V(i~ zUrtL9=T3at2`mI{8kvk15l7ag`+ka?J?X^P+(C&c%`SWHT>3lO60l)F)B}8P3v7HF zgV#1vlku?cB-&g?VeydxTYPFHC(~~`$8ucAO!b&H$~N+#hj2L8AscSLVVthr86~l( zl^&6>i^ewh)*d6TB;I4buO|kx%!a2LukJJ)$bwPxUdgiDZMVE-T;`Zxkdx~sjCKNc z33}2Ro%`Z6JpYAcSCFBJzL>9-z&CCZ#4H>w0<|j;vVO_A-+?4rMOU1UF8f zjCGo|g%dt++<;x8AcxI8vtfAKz)(}4kxbeu{jREyT}*7!+f*aE4=Q;dMZ7q{V3}pj zEmJ?;WJ?r;t<<1d zQGsr2WQ2qfgOZp{HO3m}gxCBONjAP+?q=I8Z}D>Rp&9Q5_#o=@3BDGQ;atL9L-Zl} zr^p-;N8>0veJD~i4e{bM1RCWPp%cs@W-l)}vm+(EeysV~tR-DlJdh3wbi_H;7v?32 zN{7qfr?o=HGVz1lky{=qHQCN7i{|ph2)QxOZPX8?8=V_7e{wQh<(L};W5bvwYy%EX zTLRpjo~D}Zl(H0n56D~cA}#4-V~^h7N1G(gklb;bf$c{I_O-tO>dhV8tKR~fdt$*d zk5bB^wgZ}A3*7>ABPa3lmebc`9QHu{O#5dnvlf1oawT^`yb`h*S` z48jBz-w<6$vKu6kR>l@TVZ>28D`bGKX&xiQ4N{oEnCn$SS8@_FCgcoGEHH`Mkd(3* zDPe$FjBF_B@CUb)$_Bk`b+l>pC1{WQO?Zq)3b7V zI%R+4lA}+`ebcaVW{O58W%+Qoazv2DV~QV=)04A=TyxoHPn3>2n^NIPT~@-%M0Qm~ z86V&Aiu2BTOP8mnoC(&9cl|q$!=AC=A-4>nc$nGKru(q#)EtdW_Me#|aXT`5!b;Eb z({m55w3MlOGc*lmzrDNfRk(dzPEUsA@$tiu&%##cAkXjOQ;8-|qJd*7-vGAzsB=W` zG7dp@DwfihHIPz{Hp^DwKAb!+H99S)!}0`}?Ch>M)5P}J;CAgzPjXQaM%^i4;3OFR zERmk&BXbd*q!k9Z!kl5x%JK}P@w7Pd=Er!rW!$7u>77N{d|)5LN&vX6GDkM*{2yjJ z^BN%OHxAI!L-}8CP8Cg&1R$hjW*@9l9=c6?a^SePpxDHm~b~=T9!6#BHy*oghk}RV2pG0%M0i9_|IIm;aI9 z8=GguKjPeY#FalH*Js^1D8u_{c3wk7OwNXq!mM=@!*jPxipsVB=B0T*?&0k8#r6Hi zZ=SAkU-f@-Kbjv567ql7RZgFtH9fkyY47H98?RsRj(J@z>thM(0?vD}1j0M^aVuRI zhMdnWuQpWa9i=1gTD8#xpF#M|c17#H4uxFaInWy6YI2UB(~x89wEE%Z_VxPf7Et5n z1Pcmt!>Q5b^p!`pdU72fd(3v6;XcXHo@@2E1gQ{g%;h9FPIsT^Xgh)Sz8G05*fPP} z%;Vi>;^(z9>SSHhjP`lk1+B?a-~7zr@Z5A?nJBe+(cJbKO($!+G@4}? zlGHgfMzOl7#s6|@Q^wZB!_N8t@82**_2l#6=KQjiE1i%$>(aVR;p;tD7any?a*f%N z=dsFq%Fn$Ag9?M%G>2C&SzUi<=M{O-*(nWHEi~_0Jt+(C-n=RA@iFV10_RW8P4LV` zcWgMa(A2-P@z7Cyc3hs5(LdKWCzq$w3}U1XVm9)Z=CQ6)?%dUI=l(Q7{+YJT!vjN` zH8i=4^Zgr(^HiZ}nCKj=Rq~H(M#I!^s|Qzf61NE}$(~KWt-fRCBOi>*dA6 z{OrQb)&58Q>kHOrmQ>v7-xo}cYV3{L_f2BAa6tzT|sHLe5hM_cy+*iu+_K)$KUs|yYnY!E{ks}SR zuU*J_;K;nNEPmpY#a{ za{UFF8T=9$Mo|+Jq!ZC=Da?bXO}an5>{vG@v963b(-YyJ>FQkT=U49RI$P~qknOa^ zk7McS9u>lBp#`Qg!HmfeGbS=- zOa_>7@gks|0#3I}bY&hTk9M6deeEQ!}AwH50mJCRHxGBs@B4 zG$2XoRILb?RMGjzgX6*R;COHf3`vv@DQh*gNQI#>Y>MEeDA+}GKV-tIUFFt@69bEn z8kNKWqk_0RtRmU~j!W(5GEHxgR4R#-N`-!=P)UADhmTthloM5=^qQzd#bRicbhqNH-F=`CLeyCD@k$ zdM|-W*cinmd-lfIM~o~<2W`R1W4PROgGYBW8qkf>sT)OfNTqs6gbT2RilCQ7xBwq( zS_-Lb2BLj1{}74RpO+w6{B(R}UV}t?=#HUqC5;O=u#lJ-`+%w^9m(%$1ju{B!P}lj z!M&c8K-`l8T<@f^7NVfhRJ#z1#h zqyL+(k#V2`N(5aJ|C&*?Kp`je6%622;+2sOqUVnjcX>|>LBxU!0emm{L7*8Jps$<0 zdE5hrK_&C6oh0&>m@tzXlW8+R0mm~zmx89EcH-Y>_25t^7;@F%>W|C$cn0yP7N;A( z5YHL4#4ARWxNE;doT1eD48ru~7P=17ajBJNW}pJC>J~b~BfU$abCSL|QLTr4@1PAD z*7@5>=%2zz{xJIrds{+iGASdDEr)j!v+*|gHph^ zwCb&yWSptt-PAJ-gbYEYI}VOMlt1%_em%YEZhE|Z{sZOKgfzLU5dOvhWUc!c(%xxA zr|Y_99e1+&GlUdt+Ro&Pj|j(MfbEa!u{PNG;PCN@#Wao}AzXmQ0Cq3Z^`l9I-a%=R zZmj2D)T&pJ+d|X?`x7P5GxX6D7vpY1xJZkSwAj8VKuZhlfYf@lrhyvSC2~XrL8oS* zq-;vG*Jy&y{;2&U85PM5;X=?QK{Wfk#}*><+a&^PBu_3OT)6hRlDa~=>fM?E)j&#A zY>{s9ybZDi6|zP4$Kln?L=#C%73q={GROU?l+Um!b|eYm8Q=>2vM51NbZpW@o$__d zI_75eQJyL>oo0yym``*q*NQ{&kUFwfl-9ypM`qZO6AhPQCy7ARR8X&RrDdT~fW`x| z#(mP@@hx?2SQ=Sch8XT?35@jca$b_WRy1 zuWXxX2+W5EiwFK$HS&Bob55*ZJDaMp44+MRd1fUQHI2XAV|>y_!EyG|7U)B#eap@IrFu!UdwKmt_jd9@jO6m_&5Wh!i8 zg}*|Es9yn5umKu#%*?yof^V7)5hZD;J(fgX3hyD1EBKv?+6S5MVzK^SycIm`{Wvo* z2@JG@EK7Bp6>S$@U%9N#jaV3BDW%4^2)FXwJ<}T30v3Lldub;VDjN)#!pXrfl76Cm zeZBJC0wjzBT^TpeCWdp#v;Aj?Ag^K0!XW4{w^Pe3i_~1!?S-@~>3a3ClB6Xu%Kw$r zRV4|rEbV%|ydLZbZdmCCk;b{ARvmRa7`s5Xt*pdyDm5nv^qd|7Y=b8 z!}XN1I1wv`aw%;p9tmMW-K=N1*>Jq{s~s0>Q>-|Zky8ea#nHFWieiT;FcJ;wEYv={ zb~DvY69czMQx~y6=yK14CRecy_5)4_-MK}@J#!3ius_Q+m6L@^OENn84ba_l$CK0^ zPm$j4J~~2)9gp2dH{96u-OJKJ>N*$B)_LqOr*!T$osM>cy)|xpO%~I! zn`QVC&8y9BC>fqkP++osV)(}NO#g5t9TFpok=MCQ`VDHHNfJ9Nk`@e8Qe!mVMk16Q z0z98Vik8c=#VA!D;3e6jiQ%b87<1lPt6_$HZvMr2%C+{7Uh`Xt9shLE&A78xKS=K7 zJ?-bips|T~V*a-91e`ofz{ybH7MPS0S6;}id@PwP{ej=L+nht4Fsx$*n_rXIjTO9l z_8_}|Qdfajj+3tdSLf}}@HMxST&AtH{zTb$%{SA2tn76m+W5YvUC35aY8v|7L(tKP zI)O%>B+%lG#tCcc!C{rb3bP1dFV{h)SX(}?)p=T>#16s$-HaRTjRHMyrS8_R(YhUX%Lx~-)bkWTO zx79CspTF{cik1)2YYQ%ZPNEy&eT2|;nysnjI1B|eTK8D98L0_5yqBM5Qy?ZJ?Sa@c))6;Z3aK?1A9J!|a zaCVY&;qC zLFsoTfzM8g7U>&T(-l$3lg2!V%1 zc;Mqm^n+#ro4g=kGKPQ1VVNJ7NdMbx!jnK6dcoJfCG5qy4z@?nE*J!3mma51NWg^) z*urBBxaNF#G5+Y>z_D>qd)+<{`i?=?MwHtZ z$AV9m+kkSsD35pOzG)u-($Su)%^?V6Jn&-SgmSS6I2G6gKv3+fI{3QUFx2QByk_hx zD)^e(J0z$O{h_CjIz?@AU@ggWK0Kl_Yl{JZI%l3wR8}5@%|~5b?OLhiM82#gOD+Hl zS`@rg<0~Dl3l5W!kSfp3PO|lW?ET7n>@kn+tg-T(2CMKl7;zl!J3HOQ8rK7>P`!vq z=IE^#ei?HqL7;M_iv>;*pWyG1;_dF*wDvxUN^Hc=00mU*KaJLp=HJ1JpJO}{oe(J< zCD_B2D+=*YT!|+_6UrvG;1+&@BI)X9fVd{Sym#_sxF78&f=y?k_FMUZ{EtMr6!s^j zCnUCjw4eeCOE>r=K(Eo5ylRu8O|IIc4Q1w$<;a^tHJS^xc_~t|FTx+Wp)kxA(aUdl zgOc;eHG#c|0n4nc6#KfmI%=`AKtG>|tN^%2T3jUGP$3BDkA=E}bA?=&DjvCl9T-%8 z(`&*S5;9efHg`h6(D1Zc5?ai=VE0$(8;nBY{|7b%&Js7;Q0nW~Lx`+{?BS^(X=+SkbOYnfVtQ z(Jo&VQV?=Ut|r8JgxqiyxSwS+1B;9nN+=r0IM28;sFC2^?<7Pp#Mq~Qwkr4S$i1my z&?OhPa^rp_E=;=|t%po$9^P8s5ER8Kd9}`-14oLQds8 z`8!GFCoUD=@Ewf&2>}5BV&41pvHxhJ?*4x$MmhihJiA|ftDp7%necCRZ5(+37C-_3 zC;Nh)#KdO=H8Dm%SqNC|SRUfy z5mySElOw^=%m@wT?I|gt<#?5FFx=lBZ!rBtaL9->z*!m~7(^*I+wNH=KJuU}ASWP- zr4A?IY0N>SKV*t2ia||9>L9pZJAKwe%erJvmC%Y>bQ9>0P9QSWePY3;)(xb$TPOG8 z=JtKR@?4#r5H1%gxI-&LPe3X2Zem38SD9e!M4T4v{=i!F}B!=4s=1>b2qZJA}c zWuaxssw#o!@}hjJ-qi1~YZ&gha0`u-K>89*nAwWpuxb)s3c>~{McQ`oMr~PUKR0k) zUvhY<3LEU~qlpEt!kaV85FCE{0kVW$su2ybzr0!fxK~h%w>=~9@nybKrXw9kx1~cNG&9~Kv{c;8Z2-E=6RZzg-wZI;rmw6Bz1VBRD zW)Hy$U>}^%B^1~<9@$U;z%bMUZveZ zh7*QtciBD}IBEba-|v;k>`v;(Yo{xxOUQ;hs3di^HTAaDDpWb2%Q^|IxE&sFsmhuj zwkv3RAh(-yyLC6*Z%DiJdvuCw)pXFyk@V-Bks{BJTZ3=|l>mPp(Z28;M3;I;f5=Pi5B*N!w((_X)p*c;Fe>|LwvSN6X3VUO*7 zDVyH=RkoyMu~i)KS>AwZsp?LZY3iFQGbp#agAuG~f%VfR^y8!Ug6v`vX^d{pnvJEU z!LhttLonkE?at73nH7!ihm2kEj02|+tM86xiEfNteZvi?E5S@nV>EMMY0TmlVqkkJ y@6v2B>RK{cTDmVed{CiM4#JaOCaHPFN@bN`S{HK?K5*EjCqV^M5R@#H>;nLKG5fBQ2haB~I3xZ4l0X7081BDa>AO(XM2OtcD8XLh+ zC1YF0vD-m3o^(y>g(JQ#3{KlgaFo=ALPtZZwh_KyY)E(to#{d z_qMvbq)zL7(wRMYUsPbHflbFo%qwwwz?oEmQjeE`_)LcrEtkvX=jYmz^ULMyoncBt ze@0|A3sWn)NaxyiQ>9<;jEs`bJ?k*=0whtl>!`h;u+VTah&!=kH&TzPU zzx|UeWrwC|g&R;mJQy??DNQ1;D#p`uDOdjgN*0IKU3f_86uG z5Nx{q#?j9jYRq=uvn*XwYO5P(Z=uamjz)|S*ZiKx*zDco{D@dGK%$Nk7B^BL3sYY{ z6$@#AgE%Hc5C)qfG1wQ6$u*rA0AxNlPfW*Lbafj+PPkg#LK3H1*LM*DGju)~-F->0 z@JISiIqvFiY_<}h$SY|W?>DO<>zi(nA*exfo)ts7V^fsqGGN6UgG)IWTufs!mo$_; z`7Gvgr6<0AswZ$NF$mi_Dcq53qj^?)E3}u&9;%L=u{Lfwt#z=sIfs-Ro0fG`0YSd}dr4PvfiXk)%EF3dQme4o#BANkzpz#xKoLJZkccDDU{K+!unW@lJ^b8Mmv}_*H zo9YYr4dl%|!Z@5@#%|teI-KYlY6eP{!HQaiKGo|W_CXFKYUJ4J&7~Q!MxXX~k%*(# z-{O{X1q;64+tmSOwc@wkJ``L5zSf0$jUKfIWYX2}+v9#g(x;h!2u<(KkU7 zUi+JbZ&sUMr$7RUS1op1Mi? z+K(G@hbl!fv>O$SFm-Fd(*zZ=$#e6pHK^KSpZo648+cL$Fd26)#Pl-fn05BscC%M>W zj+_^2LyChgyx%!;n?Ni=jh3Z_g+-S$6I02UvxdTosxPaSR!>qR^#$^zdQyMLgm1%I z`2~edxs%r~R>E&Ax}27qw5{NMwN3~`E#i9Lo6fu`42^YZY1a7ZRroivRC2|wdO~eZYZ=|i=K_pAbvfhh!(HqjIDgSRsg2(v6*vtnyEetJ zaYKxF?NyKGLJU;(Xe1>z^Bo@%G;}9Oy?$ANO>pVwC-)jl8=|C6txAb~(y+WOX4B3f z%p7~D#}*nT5bI#;EW{Vk{=f5VU7hssy4rz&2GO3t$TsT`t6T&v=bptM{30^{H)oq+ z=Ouc`i+vqqb>x^t{hMxpMv3wg0+%DAbuTTl8HpFCC&s zYId+5nNq(k)s4SA7(E)0IZ8Ejyr))?q8)5lJ#Z}Md4D72`0s`WabFd52WhBS*QW_6 zS#~Tpo#(>N zVtO!6n|Jb*n{$-zQo>V#w3kq7o`ALqrv+}LS?s;qs8ya{J2YfZK3P_iI0-h;V>M#1 zhH`2PNQ&)&p^YWyl{!v!HTNnm3C#>Avi|U4i zh1lo}8|M?iW_VWX+^FO*54vrPDlX=*lZ- zOCbQ9g5^QS%h!}*r19Pn`J|nhdW2O_pN*YM0|2B;6|kSD0A^e5W~thsMRG$aSK5_g z38%S29~^D7+h*VkAVYtg3BSeB&0k)7Goi!YECv)_vvyqm7pUwL_NeR$a64fBwSdKb z2GsQdp1Q#D+;sL@o_N#9ak- z*{4){qbQ`syD?%|YHb6I0s9QuTE>)BB5K__=X_Z@XS8zKG@0|(xyE^2yWmDxE0}YZ z?RK+Xt{7KtUG1BtJM1ebW!$DmRdTD$6;)@}{beqAHwbw&byb$W_1aeJ$=U1Zf~hvn z?XHIQbbq;;#s|j*;;J>fb+g_0GPW-JP?mPm(!qc~bJ&bhCG~j5xfCOmtTXHnl5ny- z92qbu-o5`|L_tBp{^%)QpCcJ9$N4D*)dKglfJ+ z!cI`*z(+k0VE{^n9okpWT>5}_+g&OYA@LFp4b;dm#X_3~C+rU~hf72Jl!b$(=epas zBk+zF_e?HnheatQ{d1Q?;@!W<9PYn>#KjJ{9a>(bm1SO9;l+a$jvcCXxzj@Nu?=xr z%SmYm&ZIY}S`siSOLZ(C!GcWhcW$Pnn|*Sn)%TmSR= z?wN0Ip?A{=Zc;=hoNKgDItfo0yr1^E;8?I0_}>5ff>gym({f>AM6DFe*~9K(|B&#G5pB+t5m& zh4P4<=Ib!7EMpt|XlZfA1M%%XR4l;_3kWHGwL5;`8%HrcP{DDh&e7t;pU z`Ck2ANXao<)L zD#Ued+-q%pU}a-0;*KL=!^Lj=tr(h-i!el_ZS$Z zT}lQrMv)s0aL6DiQsNeS2|eK$tl1|%hh(#K!o0d5gkUZACAaGf+No%f{+ z;i6vCH``#Rmxp?cxS-(fmVLpu1BZry&(*T%c`%qT$`Vr+D=yjyhgLWqQfP#k@*>Hw zu^v#R{$?ZZ*^prEe92nQ}tm z#l5+PA<5nI^^0@Tghk{`_!uw?K=d0=9?i4dO+!@`fL{>q@g^`>IDtcAKpc#h#*2!( zu5Y#AN@X}ZQSzP*7{wwdk0rJZw$K}5nDzp$?*BoZEq%!EQeJy19XqCSpuI*RI^m)g zphTn#o?ln&yv8sFB?kCis&zl2+9i{yL`*@ZY6W)q^MMNQ1lIQT@};UoiE>eB$jvmh z`j-`kl z;91_^;(`3QvnaIrz z0eXJMyXYl2k8@-kc`{+-i%)X-h4gr~iO8E*GZ0M+{19MtKRlJM$+pQB^fHsitQ` zu36MPkk{>u=rvKT9wN~ zh>k&-p>oPFSTh5CBXecX>+{Cf=4sMn)7{ct(_JB*G?OQy$rAouGz3=?wFAaHG?iP? zTO`EMD?+?pJ;SvSYg=M~aiZE$~ABe*Xjj>O}Z{ z_=Jf+ID7zBGawtTM79;Cd-9ldvNl(H?Y7>{CT}O4a?lTer8CT6dbO%M9D&^kflVynj?1 z^I@&c99>Q*`{b5RMi(FCf};F;r2Yqa#U(9VE}Z+E;cUiYc z58GNhA8u`tx7!S5`S=qwGiBjKP0eb!Y+Sa+LmIZxz)~^p-In1GzRGiPe^q?&BALj=nJ2qO0Vc4DW3e&-chrtBEWlq97Q3On z+m#ze>b3aC#P>G?c0&#dqjPTJZ;F<26*~lJab?KWV!} ziip22(5{qjTY#*_4kGc+Us(cuV40elaWFZ%TN;7h&`M3k3kZ2t1IT3Yax)msLM7(_ z;N`mqaWR5+L|cSGyNOR=wV{c3NtpXTmka{S&HMsnP8I0~hX^S28207s8QdN5fGY8x zdIy4SGTW5Q=kvGQhw!z`Ni0w=a;aN>YX8I{%~3(B&<~6!y(C%M0jK~VPXosIKWvyo z@eMBmb|e}%$W1;B>-?|1tQh`~j1V{6+ZGmjrG3j|eBrWI*`7aWk^PQ1)$x#&sp6m3d* zJN>%5;*8N4RW?@RSNQzx-}hH!qv0%qH7T+_q0MDOBfv`!<>#TX+3r>wA3?Gv3}<%Z zo}C^2kAi}noSZyhyX>y&nMYi&YwwVuy_@A*skQgN%5m}@%fC!%bI^3)7W62p6f_oQ z4DL5%l9qU!_X7=RCfi`;3dNuQ+!}{ztAS{cnZ>DX=C=ni?GonFq7*5O3kJbw;yzr_Vrd1dnhIk^9glYGj0UWDyM!}fD*A3|MuCp z{@Q@p+*~N9zi?QVSJ7Vc&6q(MXIX5eze1ic{zpr%ZjfHKeRcN0NM>)4ELRlN_1uco zt=+{C#W9Dj%fyz>l`-EO2gW9bv$|hJ4@bo?g~FY_dP%9cF3GE6#j#qt9rXVEr2Oo@ zhS@D$3cmVc9fz9jxNFSn+}zfQD2(fB!=eH|A=uhqJp9qk6S%}1Swr~Ac-8=OKSzWg&(+d_7(Oj>P2V6$oJ+J;Q>#(ZRmBJ+p^CDo z#)7flY5MNj+D!t|Pj%kQ2$>fMV)1U~;_h{wjz?g7kVJ;f%ukdmp7zvcUdmU}U)VhZ zG;qCE#M8Nv2|)Y2*B%;J>mThA(??uwyr*sp6b}#OY7}D_>}6tX^5SOb8h5sJOSiQ@*7x z&z7x|RboYyydqW-?Rh12uwUI6SFZu1$HLvtZNcySekcys`JZZ)EY_(jQ;+QLysw1w z`_YoRzn9(em0jZhCH1qO<3_jo4Tjs~mDc92o1-j!G{Yx1S2cCt;Ts11AIyiE@E1kL zo>v*~>+ef~+t!&P68S!V{KYv+u}@L#Z25GWeQ{f+i2|#=_$D32tRR>Bwj6 zK)E6kN_})4Ze4uKIQv#M+}0L@_+EwvqY^5T^xLb`0|>W8)y;ZFMeU3|G-RhL(Arvs zyg;v*J%9W8a-PULY4V66-x0s4G9UQK@Dp|rr#P?V2)rmj2T)w0_zjAxQ-+_*+JZ3}%XVU`IQamK+E}2f{49`1(@x zS{e;1Yz2Zv3Buex9nCFa^_ptcf5?)S3?M0ib7FE{seHfAmGKJl!v8w9N%UzDiq(^d zq&9G;FhLYF-Z|9aRUz}JC0Wl$Hdf?;$%M$MX^f*(;=bCFd=41PIRF1=vkb>|;><{IiheixWEPFsg;%$o$sRLCGSLGW;?LN<~a`HQcCc zM%LZvr1?x@#)r2lwZD!p7o8O){#@$po-NIA^hzaTgGWJ3dG%yUUvXnYVPdbHiV4@R z`Y&8ij!ti4XO*IfM-WO~KLG2?D~LIyBR|&f==w+8lY-o;lSx!rpD?{@>C|!6i{z{X zR;gI>w%)CgN!DJcVDlXUdWfz~-pbb_&wE~HW9OGeb4qxiwO8P^Es#lO1!Hyr(1ajg z=F;MY}#XmD1LJeul3jKcje=+#henht!wm=^bXvi<$sH6(I$(ItP5A z0HQ^!XC1mZJuG+5b*3*hsYb+2M-?TnqN!Aa5wp$C%Z#&=Nzs{0E8bZ+owcIwPW`yy z<+99Jc~LhJI8~M3P*BuVDYq7Li7$u^M!{>LfmhPk>XPYAipA&5q>yN&IV!8-2eyKc zlc^(?C}O=~^r$(m(4)xL>?B=D(mp)@optdHi%6-4(>r0i(gpSi^BT`F&9_dK?$`~T zOk*;pRr= zBsP@OcJwG_Uk<+h(XYeRw6xb<#ITsys8fFVD@7AJX8H%JXX-X4SLnTy0H{;nlsSAj zksiC@xvx*bzvw)|Un-MT&{BMBDd~?l*Q)PVbT^If>eQ$^^4XEYgj>~i#5L{#9e$4g zC3IWVl?$O%#f;2C|K)JU8H^&m+Kzg1(Yu)<4a`ni5EEf?s!B<60^{_BYu;BiEsS;j z(q}SM9rEYOBe-uX9-F@|57TdpLT1)gzWH&#{6j@?fZuZpo}w*NAeWZvA1}&l@w>~= zLo5inGw{MjlQYPE5A^+YhOYj-u zZ_|*xD90Tkq+d?wz`)r?fqg}hk zN>$HqrR*vp$b%f^cGQ5>%;VSY$Ub1Ri%MGRdt{Bbqf(dMphibyn8 zM7fk(O3lbv(NiTrG+{c%Q7R$F<;Ae+X?dXh{Y!30aix&+-X&dOX}oFIg9576c%edn z5GBPt3OFBRiC4Zyp{tL+sSZZaRP9vm*0UbX8z2XlCsqw`3w1EqQ9~bN9pIi6J%EKD z()~~1ISO&3n>73G=PLEt;b;3uzI|>eu*AF`%lxpOW}}(NfP`hr@EmEUt){o^(rX^e zHbr>Doff6A^$$0DE@#|%8)m3hi?1t7FVGDkMZJ(x8aE;gP7V@`#+A@0l9PTxS$Z8I zaxxMNPsGR9$5SYj79EU&_-Bu%94-^FcN|Tt6l8tY(Tp0dspsu+lIq#)^h?r3VMa$* z9(q8RTSlC9B*zo<#I3ODNNE_Dkv?hn`u)?S*T0$U7eMP;t9POuRw(gDyti-A&Sr6-FJ8YfR*$^9MoU@C< z*h+(yM@vVSJf)sS9-Q`igzTk5eT{%NJ5wW}uQWj3t!AaVdFOVYiStlo`wQenw(WoA zo1_mmwQ14Y$eZlgob0Wt?Sq0bZJ)LTh*vw6T%#^So@U!W)H=O$wy#6%Pp(IEO8+r9 zE-}%4Z=R9#KG!$s845!5PzuniD2P5ykgMvYbL0{ZcZ^GVY>YUr+17C7&;$ufyO$yd zLJA^fP>5q`qrjV#HNmAC8s7QY=G4B+QHM;)ktAgMRwHpTC^MPE7&0xmAPxvY>i0LC zew2y`=8D{-Q=`{BG-iTy&jGP@vkKOfg#JEM9U{X8`bzR-=%9FI+JMNYZ1pvUNUGcF zpG(`X$CDXSj$CPm65#as^d#lv<|aK!PaZvd8hfG`D@qpRQvQ+rC;1J@ElL}I6C2_7 z2<_?lZ~m{;MVgzv2f}4idCY=g+|x7f8Ao6_+&;O@Z%)UQ!%a2yn5`Y02vx?u53IC{ zMHz6jm0gV89dAW=GZGAu1Ri4mXzu_F{T(6q=iH*`r?LIG=krVw9OKd8JlV!j>40rl zz*)hZh=Z=c7TaQrq?Is+FaSl+d7&kEOTe28(VG=O{Ij4r3PC94XB3HP$0y@!9tgxF z+bKH57za%_88ZrlHx&8Xg`CMl^2aSoaU+m$qo^l5H2-JJ9gS`hm@ZZTh7)2C`7ycR zUm?&^LchX6F~O6;0cQcn95Ru$v(XzI<gYXl_tg ziI9oy(GNB^^HJIjq*O3a^-h?nTq9A$+i#cX1mq%bJ6)a83`6WjOGvPd3=HQ2GLf|l zm^+L~k<0uJiFbgI+*S;UCJ;dol_t4FhG(Bg&5UyJ4LrdVHKC=PalZ~lnHETxpmEy; z8a0xexHiCvM2!In9XpTL&X_PF0Z}IpDGmcadqQGGQL%hj5=pZqmuCQua;a(CE z^7x^k?zSqWR+TElen`zP@FJ0rh{L1<@VPoYeB6IL|AEeaOgYg@C}h!grk*hoW1JAX z?Ft3t4qV#>#Oh}nK(91?sDDRO4KRem;wfM#LLtvkaZ{S64c3b)=&Bq%oq5{h-&!1f zg8;&LjlVhMz-Ca()84%|Od{2dt|D3s$-J92wGn7CQH*WR(Qj>8^p#^FM6ry^&DMg( z1aZK62BV&0UaJammL&w_G;#4ldMl-(90^w}L{2>lp+Ete@CfQTRZ+N0i;!;57X}?noN#N@c#Xe z{Y8Dp{==X@{Qpxk=X_6&ufpxC-ys3W58v)hiPHbH=5+}1QnYnH73l!ttqnCq|RAsSZK6b&0Ez_S*} zM?-!s=#S1oUT^Ye7*O z;rwXiE%GMO^8|o@R&xX}jLGES8XG5Rk~rLTLxXW3oP>nu0{5OOFdh_7uS8HrQ!l6i zo&`;Tp(O7U3w|6(((SX%i9TGEwD-O{W^%E}O1yV}vuk&EP-tUIBerb@{k4nn`i@V> z7dnkG1C|wVdz)@fGeHcx==PJJk~Ta^Fxbq>$Ozy`T@*y(I7K%gx@NYoB0(f&rjVpJ z&XSy@U~swBbv+qu3x&RzrcQdcT1PmGtQV@*O5f}*?}I&Vp=u0Y46`egtoeZw>K4NK zkb;0ksm1l62T7yfr?0;DD0IIc_A*8+G+8Cg+ozx z+ewG%>WT%t|KPfEc^h&$%i{_h%nq&=Rb+~GmceXMO}P+zo)Yg>`AvLYX5(G9K)WJXav6R z*X^1MdF9z=@N=uQMqDP4kws&+b> zpeq<6o5jc$DSI>m`m6V>V-(N?5&EHyGyhw|f7kGb^iY;V9X+5uMTjkmZKMR4wjEjq#Q7w`_ToH&$ z>rM5hpB84w(o7by(V#R(tTgu4OXH!GzVxd#OQxA#(!|@i^9|z3p(`z95=vS2gKKod zeLAqz#W-q@k>FuQR2ErL(wN878_R>`&sf>!ZQ9DLz}%v(>Wl?YbA2UAih0kqG={C( z)L#%7$# z>*ueKtS(5FwZSkJ3hajtWEsLh+StzcII5-{Z#K6WJ829San*GZ@$%{*Qi8GVt37yo zD{=p0Y=C8g6ub}m0VO(aiuoPCMad7}{_R}w6sh-`cdjQ1*Q^&k%ddLl(S2McKkafI z2F6^;p>4TFd2Sx~&{wXS2`&z$C}&WpAZ6)Po~oxvYg3hl*!5Z+3I3wUc_D9*&uqn4 z>$i&rz107t(W2H+6#k_m0&mBMuqIy@h&7leokO0Z?z)6Hj3MuXzi4t^$Q$G{&)}>5 z+f74QhJOlZF$55G`Fm7RmU|xwnlr#$Qxtr^Kh5k3AD+S4$KE<5eI58ur%ZXS>jv@?^IX_F zf}NS721i9PVfc+uc$@`uBOcy(Q<#R8PAgc36qwmtMS(TngZY7Oa2Z9H=9HcOv* zrX{~-eWZPYug-6~G}PayX=c{<0n;wtb>0&WZH&=;#BV#`K48)>m4*=5;s&nCdBYom zdMU(;#tEyvpN&h3Y4hR`^*dC+ZU5uBN%s{7n@_$7`<)<(gwq`Uo8B&fU;Yi;9qHi^n@4)JdKB@MSNZlOz==ja z3=d{thy&F)48AO{W=i6xf{aPP{;&7=4Crx0Kp=<3g0YqzjTJjyUSF2_fIeL|OX<$W98~{-CgV03zb8S4MX5@}s!nhxB~j+W zjv_B~!Q62zJ=>96zS(wTtt?;C*)l6$lEp3_T=6Mr|E)B!oC`t)b)HgTEj#;&CBfd> z=l84kkL*8LVbR)S7O!c}dd*=tuPw#MnkfNrnBi%k?2oSfzP!Z~@zu|*fhSw!AA$Gi+n?v-v=1q;1r7Nc(Ju94L9Hcu$Ie=lBwVgH+6{8$8R4O|m0gOlyYoC$2vA*{-e@V$p ziSAHeq^xhYtDR{wJUt}JuG@f9Y0ERr78jRiF19?GMa($O@lwqq>UY64<#e^Wckiln z?EV7~Ahh4@XLgIqhd${vgSrM10%DJT)1FR2{JiChz`M-mp$p4ZG1j#@tLxw}62-YMsj71V8l9;%7?1N?FlJNsODFNDP43n$*)mc4wp{G%L?! zBi&D&%=iigc<}Q_mf7`XrNVGY)n-EnJl?ZGEr(5jB~Xn3E$90g9@~7T z9Vi~A)-M)48H*KJs!6Ul3qP5f8-6DlHo$V4mS?7;f1JmAa>#Fx=xwA_XLds}sGQvH z=;&IW^I@&n#PEz8oyzqxc<@**`z7Lbw+;}) zzS@~_Z0OjzfB~7=VCrVGF-saRFDV$tGl^kFhyn(GY|7tK>}LuRZHtR6NTW}qM@gs+MJ7_k$&h2<~n%d;WRJyumv^Ep5h?}NSVLQD?hv6_0f=jf;i_=tKZ-7Ww&BJkKZb@ zCsZ@nA7CB~z(Kry#GU_KA@es4OL0|wA~xI>nONGcleyPn*hK+-BTJpfgGkUj?pvx< z_Hp9Q!9aFEl%Y*_d1(tFF$@$}0pd2+ZC6|c=M9=Q$VD~&7^+YNyO3@uaN$lBtUZY3 zhYj|lo5F9oJ#uiyM$Q)_FW+=RZWe3mLhey1gen%h$8QN=k=;tyQm3uqrA^x=+kK^>B9^qaW$00b}7H|CAd{4@lS21Y_%$j=b$ zQDB*u>tosp{dNWj_reawRRPAA1WS*f(RsMqF5|L5ZekO4aE}7Juqh@4cXDpJ0PF3# zdNPD%_~1(8>T#CZpkdJLt%wBvF`M*I$TQc##GEwUJy1gI*JQfptl@1a0{MnI)m?C( zBT1}i0=f2&I6idq5CBckM;PYr$03!SgYmZvai~-bZS%S@NZ>M{~A87XMyW^@2 zb?dGpmMmDbgvwt~d)8Uosy7bWRW_$CXLNg6%E7s&`Bm3~f7MN|Dph{Wo=x{EX_j3N zvtM`PgUYH=QQO&-_uR3MuXaqoZbMW(RkNW30?nwa>TI}{h{g9E}$T z%xhDL{B0Y#Q*}WIBj-f~X}qG+u{3MR!*YsxL&x)Krc!fxg&2sG zKRkJhJkng~Fhqs&o9%!Ohs$x`po)ot;VQ%nxBxjLpJ;-GoSJK=vU7AckugXH{v?e8 z-7pdq?CT)nK3ULJy`lf0Khc?mC`570@K=0>%Xi?zJ_sA3M9>JT8&7NwD=~p;Zxc58&1{hj{baW%0(fCGmO_e0U9x9C^IA z29*JWQz(O_j>WZ&L2-LS7PmGoiklk&@zV_`$iT}188^MYB!3~dN79?p_fqRty3`$m z0m`5^mQdS3xu^q*s;rz4Z$9Kn@+z`zl_b*QJOr^83wacVESDN(fH zCEJAkP99+yD0=$ub{`J?9dzG-gl+M}aXx`IGN~Mh?Vf3&MxevN_ZF+k3 m+VvYqrZopCq;-w7DLpMr0L>1+AlEH8+Sl6#sIK+iz$yTz7y3W| literal 0 HcmV?d00001 diff --git a/ansible/artifacts/sunbird/login/resources/css/fonts/notosans/latin-ext.woff2 b/ansible/artifacts/sunbird/login/resources/css/fonts/notosans/latin-ext.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..f330caf6dadef7ee58c8341d2812312af1e770e2 GIT binary patch literal 32276 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 literal 0 HcmV?d00001 diff --git a/ansible/artifacts/sunbird/login/resources/css/fonts/notosans/latin.woff2 b/ansible/artifacts/sunbird/login/resources/css/fonts/notosans/latin.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..22818e7d4c3314490e1566fe3b3dfeb8ab0b174a GIT binary patch literal 15572 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 literal 0 HcmV?d00001 diff --git a/ansible/artifacts/sunbird/login/resources/css/fonts/notosans/notosans.css b/ansible/artifacts/sunbird/login/resources/css/fonts/notosans/notosans.css new file mode 100644 index 0000000000..f8c30bf428 --- /dev/null +++ b/ansible/artifacts/sunbird/login/resources/css/fonts/notosans/notosans.css @@ -0,0 +1,64 @@ +/* cyrillic-ext */ +@font-face { + font-family: 'Noto Sans'; + font-style: normal; + font-weight: 400; + src: local('Noto Sans'), local('NotoSans'), url(./cyrillic-ext.woff2) format('woff2'); + unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; + } + /* cyrillic */ + @font-face { + font-family: 'Noto Sans'; + font-style: normal; + font-weight: 400; + src: local('Noto Sans'), local('NotoSans'), url(./cyrillic.woff2) format('woff2'); + unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; + } + /* devanagari */ + @font-face { + font-family: 'Noto Sans'; + font-style: normal; + font-weight: 400; + src: local('Noto Sans'), local('NotoSans'), url(./devanagari.woff2) format('woff2'); + unicode-range: U+0900-097F, U+1CD0-1CF6, U+1CF8-1CF9, U+200C-200D, U+20A8, U+20B9, U+25CC, U+A830-A839, U+A8E0-A8FB; + } + /* greek-ext */ + @font-face { + font-family: 'Noto Sans'; + font-style: normal; + font-weight: 400; + src: local('Noto Sans'), local('NotoSans'), url(./greek-ext.woff2) format('woff2'); + unicode-range: U+1F00-1FFF; + } + /* greek */ + @font-face { + font-family: 'Noto Sans'; + font-style: normal; + font-weight: 400; + src: local('Noto Sans'), local('NotoSans'), url(./greek.woff2) format('woff2'); + unicode-range: U+0370-03FF; + } + /* vietnamese */ + @font-face { + font-family: 'Noto Sans'; + font-style: normal; + font-weight: 400; + src: local('Noto Sans'), local('NotoSans'), url(./vietnamese.woff2) format('woff2'); + unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB; + } + /* latin-ext */ + @font-face { + font-family: 'Noto Sans'; + font-style: normal; + font-weight: 400; + src: local('Noto Sans'), local('NotoSans'), url(./latin-ext.woff2) format('woff2'); + unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; + } + /* latin */ + @font-face { + font-family: 'Noto Sans'; + font-style: normal; + font-weight: 400; + src: local('Noto Sans'), local('NotoSans'), url(./latin.woff2) format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; + } \ No newline at end of file diff --git a/ansible/artifacts/sunbird/login/resources/css/fonts/notosans/vietnamese.woff2 b/ansible/artifacts/sunbird/login/resources/css/fonts/notosans/vietnamese.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..b28836f20376c17636d8fa3fa2fca8e43d5d9fff GIT binary patch literal 7384 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 { - color: #979797 !important; - font-size: 1rem !important; - font-weight: bold !important; +.w-95 { + width: 95px !important; } - -.forgot-passwordText { - height: 17px; - color: #007AFF; - font-size: 1.1em; - font-weight: 700; - line-height: 17px; - padding-top: 0.6em; +.activeLabelColor{ + color:#024f9d !important; } - -@media screen and (max-width: 900px) and (min-width: 300px) { - - .forgot-passwordText { - height: 17px; - color: #007AFF; - font-size: 1em; - font-weight: 700; - line-height: 17px; - padding-top: 0em; - } +input{ + border: 1px solid #9B9B9B !important; } - -.no-account-sign-up { +input:focus{ + border: 1px solid #024f9d !important; +} +.signInWithGoogle{ + vertical-align: bottom; + height: 18px !important; + margin-right: 5px; + +} +.ui.basic.blue.button.googleButton{ + color: #333 !important; + vertical-align: middle; + line-height: 18px; +} +.ui.basic.blue.button.googleButton:hover, +.ui.basic.blue.button.googleButton:focus{ + color: #024f9d !important; +} +.ui.basic.blue.button.stateButton{ + margin-top: 10px !important; + box-shadow: 0 0 0 1px #2CA58D inset!important; +} +.ui.basic.blue.button.stateButton:hover, +.ui.basic.blue.button.stateButton:focus{ + color: #2CA58D !important; +} +.ui.fluid.large.submit.button { + color: #F9F9F9; +} +.or{ + color: #9B9B9B; + background-image:linear-gradient(#979797,#979797),linear-gradient(#979797,#979797); + background-size:45% 1px; + background-position:center left,center right; + background-repeat:no-repeat; +} +.signUpMsg{ + font-size: 12px; + line-height: 17px; text-align: center; - padding: 2em 0em 0em 0em; - color: #007AFF; - font-size: 1.1em; - font-weight: 700; + /*margin-top: auto !important;*/ + margin-bottom: 10px !important; +} +.formMsg{ + font-size: 16px; + line-height: 22px; +} +.signInHead{ + font-size: 14px; + font-weight: bold; +} +.ui.form .field>label { + font-size: 1.05em; + font-weight: 500; +} +.forgetPasswordLink{ + color: #9B9B9B !important; + font-size: 12px; line-height: 17px; + position: absolute; + right: 0; + top: 85px; } - -@media screen and (max-width: 900px) and (min-width: 300px) { - .no-account-sign-up { - text-align: center; - padding: 2em 0em 0em 0em; - color: #007AFF; - font-size: 0.9em; - font-weight: 600; - line-height: 17px; - } - +.forgetPasswordLink:hover, +.forgetPasswordLink:focus{ + color:#024f9d !important; + outline: none; + font-weight:bold; } - -@media screen and (max-width: 900px) and (min-width: 300px) { - .signInLogo { - width:60% !important; - margin-bottom: 2em !important; - } +.textCenter { + text-align: center !important; } - -.margin-top3em { - margin-top:3em !important; +.mb-28{ + margin-bottom: 28px !important; } - -.margin-top2em { - margin-top:2em !important; +.mt-46{ + margin-top: 46px; } - -.signin-contentPadding { - padding: 2em !important; - border: none !important; +.mt-40{ + margin-top: 40px; } - -@media screen and (max-width: 900px) and (min-width: 300px) { - .signin-contentPadding { - padding: 1em !important; - } +.mt-8 { + margin-top: 8px !important; } - -@media screen and (max-width: 900px) and (min-width: 300px) { - .ui.button.buttonResizeClass { - font-size: 0.9rem !important; - } +.mb-18 { + margin-bottom: 18px !important; } - -@media screen and (max-width: 900px) and (min-width: 300px) { - .ui.form.pre-signin .field { - clear: both; - margin: 0 0 2em !important; - } - +.mt-90{ + margin-top: 90px; } - -@media screen and (max-width: 900px) and (min-width: 300px) { - .signInButtonAlign{ - margin-bottom:2em !important; - } +.mt-65{ + margin-top: 65px !important; } - -@media screen and (max-width: 900px) and (min-width: 300px) { - .signInGridAlign { - padding: 10px 0px 0px 0px !important; - } +.mt-127{ + margin-top: 127px; } - -@media screen and (max-width: 900px) and (min-width: 300px) { - .page-login .ui.container { - margin-left: 0em!important; - margin-right: 0em!important; - } +.mt-27{ + margin-top: 27px; +} +.mb-36 { + margin-bottom: 36px !important; +} +.mt-36{ + margin-top: 36px !important; +} +.mb-30 { + margin-bottom: 30px !important; +} +.mt-30{ + margin-top: 30px !important; +} +.mb-56{ + margin-bottom: 56px; +} +.mt-76{ + margin-top: 76px; +} +.backToLogin { + color: #E76026 !important; + font-size: 14px; + line-height: 19px; + margin-top: 10px; + display: block; +} +.logo-image{ + max-width: 100% !important; + width: auto !important; + max-height: 56px !important; + margin-top: 20px!important; +} +.button{ + color: #F9F9F9 !important; + font-size: 14px; + line-height: 19px; + background-color:#2CA58D !important; } -@media screen and (max-width: 900px) and (min-width: 300px) { - .signInGridAlign .ui.card { - border: none; - border-radius: 0rem !important; - box-shadow: unset !important; - } -} \ No newline at end of file +.ui.text.success{ + color: #33B17B; +} +.ui.text.warning{ + color: #794b02; +} +.ui.text.error{ + color:#9f3a38; +} +.ui.text.info{ + color:#276f86; +} +.hide{ + display: none !important; +} +i.icon.eye.slash:before { + content: "\f070"; +} +.mt-45{ + margin-top: 45px; +} +a{ + color: #024f9d !important; +} +.registerLink{ + color: #024f9d !important; + font-weight: bold; +} +.registerLink:hover, +.registerLink:focus{ + font-weight: bold; + outline:none; + cursor: pointer; +} +.ui.blue.button{ + box-shadow: 0 0 0 1px #024f9d inset!important; +} +.smsinput{ + letter-spacing: 3px; +} +.ui.form input:not([type]), .ui.form input[type=date], .ui.form input[type=datetime-local], .ui.form input[type=email], .ui.form input[type=file], .ui.form input[type=number], .ui.form input[type=password], .ui.form input[type=search], .ui.form input[type=tel], .ui.form input[type=text], .ui.form input[type=time], .ui.form input[type=url]{ + font-family: inherit !important; +} +.loginupdate .ui.text.warning { + color: #333; +} +button,input,textarea,optgroup,select, +h1, h2, h3, h4, h5, +.ui.header, +.ui.text.container, +.ui.input input, +.ui.list .list>.item .header, +.ui.list>.item .header, +.ui.steps .step .title, +.ui.ordered.steps .step:before, +.ui.ordered.steps .step.completed:before, +.ui.message .header, +.ui.sortable.table thead th:after, +.ui.card>.content>.header, +.ui.cards>.card>.content>.header, +.ui.items>.item>.content>.header, +.ui.statistic>.value, +.ui.statistics .statistic>.value, +.ui.statistic>.label, +.ui.statistics .statistic>.label, +.ui.accordion .title:not(.ui), +.ui.checkbox label, +.ui.modal>.header, +.ui.popup>.header, +.ui.search>.results .result .title, +.ui.search>.results>.message .header, +.ui.button, +.ui.form input:not([type]), +.ui.form input[type=date], +.ui.form input[type=datetime-local], +.ui.form input[type=email], +.ui.form input[type=file], +.ui.form input[type=number], +.ui.form input[type=password], +.ui.form input[type=search], +.ui.form input[type=tel], +.ui.form input[type=text], +.ui.form input[type=time], +.ui.form input[type=url], +.ui.menu, +.ui.dropdown, +.ui.category.search>.results .category>.name +{ + font-family: inherit; +} +.height-fix{ + min-height:90vh; + display: flex !important; + flex-direction: column; + justify-content: center; +} diff --git a/ansible/artifacts/sunbird/login/resources/css/semantic.min.css b/ansible/artifacts/sunbird/login/resources/css/semantic.min.css index 8b2670a045..3c9982667b 100644 --- a/ansible/artifacts/sunbird/login/resources/css/semantic.min.css +++ b/ansible/artifacts/sunbird/login/resources/css/semantic.min.css @@ -8,7 +8,7 @@ * http://opensource.org/licenses/MIT * */ -@import url(https://fonts.googleapis.com/css?family=Roboto:400,700,400italic,700italic&subset=latin);@import url(https://fonts.googleapis.com/css?family=Roboto);@import url(https://fonts.googleapis.com/css?family=Roboto:400,700);/*! +/*! * # Semantic UI 2.2.10 - Reset * http://github.com/semantic-org/semantic-ui/ * diff --git a/ansible/artifacts/sunbird/login/resources/css/themes/default/assets/fonts/icons.eot b/ansible/artifacts/sunbird/login/resources/css/themes/default/assets/fonts/icons.eot new file mode 100644 index 0000000000000000000000000000000000000000..33b2bb80055cc480e797de704925acaba4ba7d7d GIT binary patch literal 60767 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%0DKehr}RFC`2XTB_?==0w^)u1m5PYii@6f)6_5Ydu zv+NIZ_(Rt}Q++LT5!n8!J4x!>sE&v_3*cXat{Zq5;17w;B6$epw}$Rg`0nFJg5D-L zYvw@(goc5TeJjM($AJAZxZHZN}RzBcP0=_>ZI6WVGU zO#Nk-YqZTa3{!84P0K~GsI#32<+_AsXU43wILwZS(8n%S9)lP!Dg$$e2$$9$E?^Nj zql4do#+a8qEP(bD2)DpP|$dp<`TZ#bY6^~7Xv_Lle)77^OsVhMOm(@ z??8O8kA%}ZWpR&2v!7qFSw@TF6d*=9YT^Rtk(n8p=CQWvt1Om=n&5uP;GiT6 zMRvbm39kbp*KB`qoVg12w52Z)T}`X41P>D|q_%K#zuhwb+BpEogY0E)KnSy#@+(m5 z20@LG@LUEvk`I|OIUV^^0_YtG9AElBS!Dsh%k^P9r0moJ25Lkm-gh#igwBDhAOj0!EF&8MxV^-m1U1MEd?H7} zL;r;tfFIT|ei3-Z@gyM=!%Ba7Pa626JRAA`V<2D<{RLRT@0o=bE)XF)nFtUL67`2L z{?_Qz_`Yy2t+I)?9&z#z__Q%L3pnhN}U z_rN#WU)kD59D4whbSYERHY01jM7id50EuI1ctl?<_IT=Y5vP>(sNNkB&U5&F&^kBhm5y{o!y!F+4wdxXoy;!4$W`?_nL(+bK_QDAMUV1O0AwZ| z6j)s}9YEZbY-C^Y)9Ej`aS&~{sXCG2SS3ce$EY;Yv-c8TlrD$C85ATlLZpGP_YWfi z`RQ?z1@zIfa{yqfsUDMEPpwuX%XHdO+ASb3EPi1fBPocvfgsC0xa^CG2SWBPWQ&GS zpCXPti8b>WkYbf#Vg%A?&_UwUsUQE_t4GX?7QqUpKJ2Iw#%)Q4Ft(`9Ja&Yk{C@38 z@%T`)#wWy(kKfEH;ZBQ(m*Iq&L=<)4D7tNO{SsA4Fp4D?(Ex6nQS&f3TK|atgj`fE z2|OX0(&(ZqxJd~IANX&dvX?U14_<~h2(lP6k^H8ep;2HW6oPo?U%v{M>|{sU~;p zLTv$OTx3H^4zNUn4wUfo>j{CEvTC@C+cw+cW*ABH6u@!M2EdBL?1GbL_#e;7YDBas zic?MTazk(khXSyPeDom_I~wkLv?Wr8<%egEfM!*M9^kl$>zsVzaP}S!gcD3;Czy#58RTm?`p)RTS8I<-sC3+*n{A)P*rU!@Npj`e{x9xsif2v zTW`{q3p^?A!Mk60Q{(FLt(&TVe9z z0-!PiOV02JcNeq?AbJaI+B9xC;LB=}Ho0vH(@;Qe0zq~-8ckOa!(u@Wou`p_TR|QT z38H`lJE$G{q1egUX@&v$x7wNLWD#j*!D58GLv^bT+jpdKBrK#SsQsWK(+RO40VA^w z0nA7MN1Y1Fc#5JkwD5TtHG1t;lo=i)U+kFG?1Jh11h9382!marrRE2eZh;JGh`wNO zQA_~n?%97HOKLA^#oG(5*bgSllS%rOc(S%Yj00cYR;!D9G_90{pfq7D4I*$k?byOV zR|epi%oIJ{ou`5zS!-_dnxOa{uNv)(luMo^5TCOItq}2}sxCztLEzBGS)Mf6dzaw< z!GweAgvFYJu&mH(Vl9HJBV%=Jz~~i%nDGIF9ncTET-AQ=fv{L11&K_;ei!iht(!De;ym|y7ksL|^5Ko~B-vSh80++s?unD}bZaYa@ zPH4M$&fw;xEGN3_H1vHW><%-+dg7dfW)F8$bB+h7sThoOtteO(v{&-+iK}r$%G))# z*Nhx^!ZMj1VeG?EkWg+0CYQSX1t96fV9^3c+9C393LU&CHsFCa1q99$`zTMsEWwLc zxsw1|A?k8-m8HCrk6;K7dhNDJN3R9iws%6vTq_}PtR2CZ8TG;ltZ4I}sU+^s8`P3F5QxrypG1-{ zGlr^7$Wsy(lo=xfC~BpKfg<2z4OEeEF@~x{Pi7O#CvqMJy+f+}=CB_$&IuEslB@s# J000000038FvZ??8 literal 0 HcmV?d00001 diff --git a/ansible/artifacts/sunbird/login/resources/css/themes/default/assets/fonts/icons.svg b/ansible/artifacts/sunbird/login/resources/css/themes/default/assets/fonts/icons.svg new file mode 100644 index 0000000000..1ee89d4368 --- /dev/null +++ b/ansible/artifacts/sunbird/login/resources/css/themes/default/assets/fonts/icons.svg @@ -0,0 +1,565 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ansible/artifacts/sunbird/login/resources/css/themes/default/assets/fonts/icons.ttf b/ansible/artifacts/sunbird/login/resources/css/themes/default/assets/fonts/icons.ttf new file mode 100644 index 0000000000000000000000000000000000000000..ed9372f8ea0fbaa04f42630a48887e4b38945345 GIT binary patch literal 122092 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 +|+&Vdls@0SAya!5R?! ziVniRxeJP4Y;H*nR85uKLQ+b)snu%yXP=4xXp%p*V(|Ms+&!Ts<#?NwEy!5pm*V^D z-Dg(@-2T08jZHJMJ;tBX$}KEx30j?M*HUJ5Mb<~Bq@%FJ=7BOwx*lFd+F$0K&xW1pdHaQkd=Bs^f@3fK$p_V zG9Hv2&)O0|T2OPy!GKHF0X#SXs4z0Taeg=3QC~5u`}}#6=S3N37Oi2%(w*yCCSSO< zyLqvN<$urJ`x3fcQz5`fWSUx3WgYwdE#Xz6*&n-Zbw~V+{iC zvns#ZXmMIqg)QTL7MZ;K`UR~kCQXi&)xL25g^ye`E2@RW`phY`J}1GhPoTK=wg^jS zns~aMSW_T9(k1JEf z?H?bX?7T1k`f}^KrDwT)O2xQ#Ilv(aC0M;dm(kt|>3YmubBNSoB<_T?25ll$8=6Rh z5r8U~Rhl9!p)LqJks|QabdX~_-6T^Vh;0oAU$ux&w zujJkfnis{aOi@)^-BSrwuIVv;KOM6ud(XYJ%&#%7$o2=~I|BZyc%;FVOGX}x;4i62 z#nhmr3{_xm8B?8h#BmmRlFiViv2+8B>%c?Q8O1dDL_H+<36jQ)hFz84vhc zn6)AnaW$~B*0cN8Z{ro=Xh3n4xt!ZC<`EwQQ%qwl3*E+A>3#@s3*(qj!l5yPn88L_ z7(_^#A%s8eICk+?(7#06W3w+ENk(Qvq%6VGX~IBf;(<^An=lx=tdS801ZTsp8Wn^&D$b;III8>|cq?v&%ITV+`EV8j&r1NHBD%&}Fg9G&f1 zB@$7x?VS#%Ta^bTS%o@e%vFW1syAZHIppB6k|AF>n>jVk6?IAb!PfQ{9-DjWA@^+k zw_86a>y;LL{@f*Ps-wd0*uFuG`SGFjxHdW15tQ4;rGts;TFz^$6Twqn6uiqAd4|xe zmC7B)$|*i7uS3T40ob)v1O`<>;P*W4}nzfnD?w$^S>~ zHq8}fG)A;rG)l!$Sn7xz$MJu=-DB+&J}N(Yyh}&BbgXe*wD_MM>3?XfKdOym?~iTs z2)vZSPHFm|8s!g_(~Z>}Q`<=FZEAFyLu2!&g7?z$WABgc>)1S#p!guN_B00#_m7Kv zYS!sLUQ&AWozhaJ>4D*T*;S`X4*qrcsxnfbY(R7AGx|D|8$Y*Rmv^}5Qe(2D4-oO12yVqCYaHdH>)ZkV9?A|Af zcMffTg6;RK&;popG4Lj!uXOmXR7p*^CU}#!X0TKlhJgex3ob?Qws>(WOu#fO7KENG zx212(mOf?6@f^$caZnQmJm^z`0R3rNL71-Im3y528}vY6j_f{Hm6JQ6!WmWtg9 zSuIL}$Ac_mlca&eD~G00inpirU`vp-fSRd~Vw+a|c~y>I z9kS{9-|9H>D!q;M4fY$o>YtNO8of^@+A^s>CsArsPVNg)DO-q2ec$LE>}P#^Ad`HO z^*xbF{Rxr|!7B-RS%c_7oc@7wjse z&9euO$5W}etj*s13L9s8%m!=~2pQ=|0jf%lC~@L-#6KQz6HXovb%R zn`vUze(*aadj+Q>r&Be8qz}Sqr7cN%axzJg!2m!GQzeIC9T8xap{TBa&x=BS9f0@; zQnXi$bBtG(XjhzjS=8Fx+G2@bcJ3A05|&HES!29C?D2%#uEYggFSu z66gc+2e}`T#gyxqaGLLcykqOZt-V}|d5y=sF)v%QbE(| zJQgc^&By^?H1yxH$9Oty=T2A6#l5>aCNA$?ylnd9bVwi=6lpE?{YK37cwsd-8d(&k zmDIB*Pb^_F^k3{##MTuoC`-FLJfk+J4AEQZoZ6h47Wl*9Ps+N>jHP8|m*LEGek)Fw zmGL#kw~Adfr_#oUr_#Vw+GGoR1<#hTFNg=qj1TZARYLR0z#joUVm@aeC+r14h{VZA zKxAlRC3Z9p7%uLzqymZ)gGyVjm^5Nhp*5q7F8PNf=uRM`hU$cpbb!S5 zR%OHU$ENpD+T8uDA)W-yTz;@GWOkoe+dhgWL$;%PxBg4sI6Ta ze%s0KVz;~o3C;PB5Hpm;6y4xFeUaC zf&0l8j&}GG9ARoXOVFWd6Clwzlas(8_%&lVr)J4)0=%0zmZa%D1iQdQSdZ?L-$IrK zBjrccQ+#%(rkP_G9`0Hg@>A*|5I1_O>1WW;@fT?5FfcTH7&?Lwbl8Ec#m-+435*$5b$5>rzv_XF+v9zD9cb4RpaM=)FLWJ1^ixm1HFmk zzgd6^(pU_`BgavgIrd=XRG{$2!ldH>F zZcOX@ickCa7tT4b^k-$h3pK~gva;5AswouRHX}im`=|PS!HMJNPaV@GX{1lYdrdC( zsbEHAHXCF_VM#Q%!AxRQmq%G9N-$F{8ngEH3L`!=uB3zfq{jETd|aZENErR%YvxN8bVKsfz~13CUchHa`O3fzesD>u+~Ivd1!`)v{1o;^71x6v7= zQTdljtS(P7DrMh0^+Uszlz*6!;;6n9?54@dh=^IU2c~8va9RV(dySQ}ynp5QUxYL4 z5OKW7zw^VI%zuh!;Ls~dibv>KGPM2>6YAkH{}?<0eZo%|CIndFU0fA5l>jQ>Mbkf~ z;ODKzR^(lK`Y!+8{<8L{8l)^RI$mdl2Vvv*rjDaM=g+I$N+k4 zR%IJTiV`f<(+UqHmZI@nkmUWix0S||WIPL!N#j=-Yq*h?_-b&+|1I^h_egXwv zE&~MXf(J=h=zYmXfv4eU)$WV8pa~|wW)MR*ulH!23~($Pq_%+gaQC*0;~pYOU^o*BZf2S^4CPyV<=&iJ(*|4G<<8h*|(rENCWLnX)nm%SYk z<%bP&sXU6$6Lz@t0Ln+i11N&#fJSo;-J$+fy$Vt~46MT|WEg-jVk+!4jNXpAemE5L3J-%mkzuggkjZoQq^qKQ z;ayx(VIU%SDDkf18Z_%Yk);Y1R3d5;^}?2wNt>~z{D5!r;H!f3g$srg!_8DR({1Mr zXh^4lbPB7(?M=491_VBSs`~w=ibytcag*`BfOO;iri+oUXks=b&0EZ7E&^NOmhnD& z6Hi=*+aEVx65iG=AIBq?;r@dU7VoeYx?{XFe5Z78BOV2kLs)Ran$h%>Au7F;){_0L zX}SO!)o&8&d^|bG92q8$_?LW8p9BIp__)tzbG_!W*$@)s>n;q*a4BeZ@zjaGJn!-c zoX*f#>n;G zs$)-spz5eQfr;%E)YR9`yXBViHcidtrf#AX`VaK~eRZkOp&ztjl-Hv$rgK;)#Vg`G^N9=rDqatUz*Qn2|s#h#rA-CCf7yo4_|k zlS~;P2rU;(Q$Q_|rEC|_lQ2Ogb2SBjP?~di(nLOIy!N}DSoCGViZy{fO#f~ezqqYic~5t&8gQeY@6&?X4+aZSN-IX?FpY- zwx*M|v^Q*By=$xB^RR9pH*>>6R3aZenhtaKf{l1UAl-CW2sl+>@Nl|HAzjjlW^G8C zcxG?!nGyQ-x($5{RHtv7vcUGd7An+sQH z$U(o+xGOpMW5p#3l9NiqNJJ9yaQJZo*u`AXL^Ojb1DpWIX}C|;32iuswcNosrkXKf zroM6TW9%OG3cDx&Of+!)m!oyjoo5H+O9T6ibpBl@L%rZ*|)ZBxaR8= zbmr^VY}oeJOMm?V< zPdPlTW=LlN^4noS*9sdQ-`I90shuW80#XCT%ofL+g-0pL`2FC8V19&h=I-3#)&qcW2a}_UB}J|1U}AQV9s+_wb^`XBvBQYJ;{e} zW@Q%EA4tzWU~K!%{8!i|*If1KY3Kjjr0?A^t$!2s(=hmDBi;Oq&Y#OW4xj6pjcON6 z|HYo_p6Wj{k9V!d0lyku{K3wJp{kaa1>**2=NdS! zYVhMDeRgbP$I8~8=I++X6;ldD$Q!!o>PJO}qzQ{U8_Hr$mGv{Gt~hVUOtX$L7mH6R z)vKR5qkV3Dr4W-0x}f&%huXWJF8_2ojL!nhG42N@r4SDcS?ob_$Kq#jt5Ax^&dI@V(g! zUNDYNobIhqWR=^tcW!iz8-~QbC&zkdwm7?Y#`DzhfyupB=ii$fKBpp>UqIebaA1%%QuJNcb z*Ld{1AkQIo7~i?HsiA3U=Xf(q!H39Y+ssj5qLCc$&wbB${+VZ3_xD5zKy50dC?R5m z@C3hTq-g15G;kQll~Pc9Qi+j#I0=yj`HmO3%7TvSUJ}@zEDe6?iK2A(34g}V-++|A z!cRv3ROiru_N4r0A#*N~9}H{nG!g`x@@A@hSQ^ZKfjX$Jj32d|f@#!_I!)Rrr{tjZ z2PPZ(y5VXd)SLtpb_|&gIA_?gV=U*6s$h!>QrF71JEDf337mC@}GvhFHx|zPzq=A z7}Qm=TLsfnpkG1nwUec>*&!uN44@gcL;j%%-tohD*@?HDW%5A+nn5X&@^~uv7k?-~ zNb;1s9E#4AFGf8lQ=^a9LaLWHe7 zU}h{_L&Zr^>UOO@kzKuO*J_3%?_0e~?#qk3+)r0yyHG=6PFG+J`K1Qb1Y~CJ%QTy& z)jJD9^p7Aquo?v;L|m?@UtdveJl*(-?i2krnQFEeDJ5HzF%Av(uQ@W+_&1dmUL3>A z=T_GmTU+Kts;X<*KAhR)zVqiATQ$Y2lr)B9ITG*Jgl!G1T>wPH4FLBF=@+&o0y7fn z0Lpkj1dCW&rD|Hr7SyuJuUaWsSc%pa>s9D$@c{k-cd@K4$^E3|6ZoA_b{wEPN>dD2 zHRTLKFMP@hN3^~ruLr4LXdG$>Pz~iQgr{gvcY?wV(wxCQhJHaPtj!d1Jckj$PnG^I z0T|5;IZtu?ho!M}A_t6jJSXS!sEp-KrLCT_LO^3=>2jc=_ISg`>PAN!% zVK5F14Z4y}U}w6(v83C^0uO>SO`lmleb&^~E3Q><`t6yOtHx(8oL3ogMuMAWZoMZ` zcHbAad}rVKiQtVJVD2F7nq=5@$PbrW>lUV*-Pf+D^y^#KHg{Y(m6h`a+gui9+ETVs zUNdL=Ck`$5SUz#pLu#xQn*Jx@YlBT=Jx1nkN*av>XSR=%w!SVoAt-K3De|U)0x8=Xw_& zwg+ArJV5b3m0TgV-{9-yJBP^|{7yE1ot9gWIWECC2eQk|0{*3_Z%sGR19cr15$e4cY@OF>(-tp3car=xOvn~D)cf(UI2)38U96^w9@59ljQ2C%5#t0)c?5$HI3iEk4Kn_dC5Uiqh3lxY1ItDLa%Fuk-$YwtOLs(U2g* z0l=`G0yU0=arf74epXgnKVgQ==FqFQ>nr_^OUIYFZ6CJ<&($p-tFYQ!i$dd4Wz1_I zE^4{)lavoeWM^=!naC>m0GE6t% z1AZQE&8g?J>0Y?fEg$_?o+9`q9DJjog_A;Vl(X#z)r8@Nn>lT?I=fa2X^Vd_;% zxJo0qC8y=IRvV)gn*gi=DN~4`=ZtUs``Ih6doa-~+x;9wJ6C0msR>VI(01LO&#_tT z1~!X#-g%uZSm{Zqa0Z00B8mkZ&4~xETY0u|?0b`|9%Xe~uiqWM>41E@@u#=;c+RP_ zg7bt6k*4S}Hr7-ySywjqC);m-YtNqio*h4)TUM70rZk3|il*tZ%fobQ-8r6J%F5-d zkM3T$V9u+ds6T%jbo{~5a{py0vBi%-#9ZQ6k3H>w# zz2Jh`aZ=`!zJ}yz8MywELvT}TQ zg8I{2uIX2+YJHi2JJy(+Xib4S{oEai^LoE=?beVnKnR!l66+^VEDNU^(=E$)&z|t~ zhJ#O1)hV89SvdIzQ`W7CT>Y`e@JzKimZ?qn@;Oa+TfBVUrz2IKdGlk+3Li( z^W%wyGlHS@3vYk)jK;bJ8J^25D7$4rru>>+4awf$YTSj3t zi~?=I7!Dc}U@hIH3Yw=%B^N&)CP7y!Lw>A84AD>t>_b+g_#ZC{Pf0FGid;Q7Jfg$H z)fjUJGQQd>b=`{GEkA|P)A-7yGZyot>l5S3Q%ZZNK3NvQc(UH+MY)3;o}N%!yL)*{ zx~9%v=ASTSeZqK0j9DzSHTV1_TlRgPb;>F0L`6(S%8+VTGw;;$SzuX#57B#b-X3 zLjYypX<{qOpIdU>ye3b}!Wq#}C^}GPcbxWT5M*d|!{<)_pz_RaDp_dEo#by`- z$yg_4iN^{-ygV|~m|*il!9;a3uaXPYE9`NK0AXs!cn;oIZbXqH!iXYD6|yA#U@@Q| zuVz!^K7W3IOdhj>Dd{JbS*%xy1tU(=Tpc#xlv&fAhe(Dix}7(JX&fL0R?K9CSqx-% zexP8pE?`{-b(JLTN_&g97FbX0*rrB+EGTO9mP~C(h87Qy+tNHLS_$zNZ~x&B@3Yxk z=gpbKrp)E@{;+??ZS(jaWcd%eyK~%D_DU()xs!kO)z+CaTU%z$8vHc7^TCI=t?$n7 zW4ltm+KCVGt4b+N!qJkF!&z^( z-{q3Y;~CO-G1+Jjp-|w_G{rR-ONf)52Bv=47`bTwN##K542uYgy2lagV=fv%6J}ag zoAJ|fnA@lGTTLA#-}f}8kc<|2uL&VC$YxQnXk|>Q5ud!&KpF9zP({*nq>2=6$6P}Y zDP_?Ov4X%Lj)p<&aGzQs4#L#7p%cLK4G6Uk)Fv*4lv9BqyXw$(a$pxQ%S2Bg(KBJT za1B&GRJ*4FMb<*@7Q>Ls`%TETm|!h%a!&Bh8o04}7QyQcS2bDXvn1ekw!mTk7EX0yUS z+`3b7W7qI>;^PNwhwr`AzSODRcoi$pP4)(x-p$P?}hU`nJX*DCC{wS zu3a^$&KjK1Jw5E75(or6nnTw^jW(OJYwipRU=a!p2+MLHzpq&xb_;$Phpt6beLS?c zx+<&ny3G#Zt9_e8Q$mXBf%&|h%Qj1y%;hf<+TfO;_b+SD(8}7*yydKG&RTVawXUoz z60yh5uwJnW7j9nMR;DFDwKmqr>J-`Pa>3WNBOFeRcf#j4b+a4_%O>Lq&J(&)Az$jp zf_Iziy%?9Tcpe>-s)`~Gw6z1az_i7OHKuVe9|g1!aP zOtQ!vk|=l?>qp2w)?aOI;pP#Nc<53Kp|R)Ag{rl;uDBy0bQ$Z16=1dsphoK+u|kJ{ zLnk6u2li9);l?5Wlo0O;ViyWg*j~Xu8>H z^=p>JV*vYrSak!9ebwt-Z-&5R2C{*TR!RaNzYt-)6cf& z_6>gGy6;c=Z3nK+TOTS<%*&m<=)rI8?EJ%Ie@|e^d>dC3D*{XM7slOQQ58KS0uTSB zk69;#%R+4v=l%CzZmR3653d+k8LCd4@pBfq{R!h6C)&qVR$e}@?3{4jqxF~n?8sNA zPno)Cf^Gfs@XD~w>$Qcnx`${?7#&0$189taqtJT{gh{1AJ&70v;1KCU668ribX^t3 zhQ^1I3|>BFcq~f71v?Crh=4t~e$DENmTdK6>$-(G<1c4UsFkbiKE0)*xqL;1OZU~< zQ!%$(>6$cSl1&e?p6~48HLeP)ucNs$;Hqp;$|ueC&(>sCSFxhJxuZq**{kH*31>2I zZs9uX;_7Tm#p*TdgZ2Qtp8T^Xl`9REu0UsVhtFE!s^NRS)5C(g4RyOJWp^xPuk}H0 zV&Z(!Pt!Jj^xkxm1Deu1;s>(kH$~4F+GbR#xW|y+PhZh12n$xgml>x-6ZWhSkhO=I z|3d?oD`661FCVwY?{jU?pULJ}C45vYoSRng|# zEdTpMXLqt>+Axj`NkcDx{$BMx)}xk&bvsSDXX zCw^?2{GjV5eiHOf5*c%Mr_C9HG!Yb#oEt`X4BR zL&i7WD2KIEMD1gVE3UkiI}z3+dRHXL9AAP#>-9e`uMPMjGSk?9J^PJUnMZip8sCiu zg7NY<*sKswl;2wE^Ez+6@(Sa%$0`DW+VY>XTUh0noGe*>7nlv_tKWFmh|^e-fD|X9 z9jXzj2;4%kFGc+n+;Tuzk8letE;pH>i%YOkNu*cBGroKL_-=+D{vIiH_&w3AeDWcs z%r*F~t4vY8XpXe!yWZ99va5Zy_q!gpmYym69W4echN_*t&3^0jdY$?4UVqB4?X3juAaWchB-l(S+N z&&yw}28{P7to-=1A742^=|@MhSYSpLTK}czOilmkc?&GmEYJTbJ@uTWPsh%h;_=M8 zm`z~gc%bFdbC3C4-oB!pwPyNgSWr?nR{2G z{cPy(LpwB!x<~Lga770JPsi~@n}Ir^GleIoBU#6r$99OXiD4i^Jo6Za!6Pvc^faDV zd-qn^9CgoS9MzTe&rYz_JM`+nt+z%S>TMIAt*@+hWS*;Y*sAu9DOF#2>#ddbqs#Ez zn8$dC9<$evRNfFBU3I<9QGNUERd(B`GA2JK;7W(gVZ&H?q%g`O_Y?EKDPaRGRw|Dy z%GgX%>3BKb*(S$*|6R(HOANCuxSwK)y;86q#k7&c7 zYg6PVLK|^h9HG}I8W#pHQ0(`{Vztvd>nb@!({t-wWz6pj1ub*V#fatmn-?Lh;Q~`S zsjOYG{DtS)2EmOyxgcWBNT$VMyBpU+N9Z!X)&S+egnG{$ETiRjqWLfO2rP-{>?@-*y%z`Pi zKCw^jxhNEz)OGNZiw}0r+_}3p+qE>7g*$*`O9#WF z>4ba<_hMAVSkhvl|6+R+!fq1d6nEJswZIjCd?9yAA!LC12)Q3uG^;5T(`}?=GHNDEkw~%X7MZ_ac%){Ey`)Yww7e- z%367<7~1?y6I8484+qr(U}M-!K3dSD)q*l2A}HS8R&d|bHFy~^iqKD2fSgMG3(20? zupRcpcMq}m55R+O72Aj;5{KFQ z<^-JC*)Mn*u9W%?KvF}21xel37RHxKx?t3yrP2Y|`e@{BBbZ&{d{bD>C=5ZM-j+(Y zh+8_ue!&p!5OfQ1`=FTskkF0-BPA+{A5>hZme+<*cY7OzS|LPa6(zKA$^{0RrE93l zHl$Du2|y^cpBB=I?_^3AcyBDc}_p;dmGc$W7WqdK)2JJcftcfl~A^ z&Im>!1TL_72~n^_A!C6Y6q_DPL(zjikPN1lf~}AwhK_`p+E7)yc`pnmHv~UmEe(o8W#$c2Xelv|;b;;BkYBb#;Ye#XFgJgv-3|?EB#)!@-xs6zIo z-jwNR3H1dnLtI7t@iAT?@=Wg5xC*_o$Caw_@-T!DGI!XS2D@gP4S^5coXN7PS@022 z4V$ZMm)#zlW|ei7xdXDL6=$6}qlz4nRbA&yQxPiBujtmWrY6ecnx;D-O0_bFF4wwM zr((7FRhMjaSXJ5Kw%C~0V_{a+Vv(aZe}!Iw2%L7Clf#hOX~P>;)gtRLn^NXg6@|$# ztZtfsmiT;A%*fofs$1tQxmN1j9&eUZW%S78LRhM4Lq8F^o)a)ZDtt)iSwU zmC-ZR#_bl}f*6R5xpnx2xx7jcU#4XkZYw0zsuj{|wOZD>tc18%mVHi}M|N0cFL#H$ zhmYJN`(+>W^j43|ZHisfX{tC2x>bi2!Av<8lPbHdF2%_)cQEc$WZhrEAzO!O!5DOB ze3yBd&B1hwrdj+v!~hl{=5Yd~IELO@CaZRe+)nip;O>=0n3nRJsPMt9i zx?pEfuYx&qVH#O1tuV(KvRsFl&UUM&)@oW5A5C)6Gd$2xuBbsp#@qCuC&aaifX$N7 zbf<p8wz${B-7w04J^;`tTQ$2A`s@my4C52btm?8salpNH-2%;s>_gx+)uQ-4R=mlM zuYg1HZP5|#6{D(Jm|cN}0uBm|Hat$lj z&aE;&Dvmj^H9M=leEK>O*BDAp7ZHHP1HlZZ@M2L3K zsT3kq4Tgoi6EjIG{+ayQlP`2vIHcaAUufIySFJMEV;!1;&&dawLSJ2Q~H45fpPMOMioq3YgZrII=fSmm&Te zG0ov~A_-eh#3e6=iUVD1eru^&y%yh3@{0&@ur4+H^bsXhYEXWO?;{}$hzJfR`6KL2 z_BOsFgQ0*9iN-_B9N8{n#zv0;DKSZFgfLY>#E64HjrcOboE40AVG|%3k^<=&eTSM< z*$iU7UZ};T4mFf+ zXvIbb<2Q3oNTNXAHQ*IVGD2SiA;%hG9mPk0Xue3UU=L+paP(P
    6YuX1v{q9=vI}{pN+P4FW!CI?#11< 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 z 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 literal 0 HcmV?d00001 diff --git a/ansible/artifacts/sunbird/login/resources/css/themes/default/assets/fonts/icons.woff b/ansible/artifacts/sunbird/login/resources/css/themes/default/assets/fonts/icons.woff new file mode 100644 index 0000000000000000000000000000000000000000..8b280b98fa2fa261aa4b0f8fd061f772073ef83e GIT binary patch literal 71508 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 literal 0 HcmV?d00001 diff --git a/ansible/artifacts/sunbird/login/resources/img/bg.svg b/ansible/artifacts/sunbird/login/resources/img/bg.svg new file mode 100644 index 0000000000..c5d85d8920 --- /dev/null +++ b/ansible/artifacts/sunbird/login/resources/img/bg.svg @@ -0,0 +1,33 @@ + + + + bg + Created with Sketch. + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ansible/artifacts/sunbird/login/resources/img/diksha_gov_logo.svg b/ansible/artifacts/sunbird/login/resources/img/diksha_gov_logo.svg new file mode 100644 index 0000000000..fd3c8c70ae --- /dev/null +++ b/ansible/artifacts/sunbird/login/resources/img/diksha_gov_logo.svg @@ -0,0 +1 @@ +diksha and gov logo \ No newline at end of file diff --git a/ansible/artifacts/sunbird/login/resources/img/favicon.ico b/ansible/artifacts/sunbird/login/resources/img/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..4efa5f58112409a2caeaab80c6852655a5a413e0 GIT binary patch literal 1150 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 literal 68091 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%0AGd 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 { + const curUrlObj = window.location; + var redirect_uri = (new URLSearchParams(curUrlObj.search)).get('redirect_uri'); + var client_id = (new URLSearchParams(curUrlObj.search)).get('client_id'); + const sessionUrl = sessionStorage.getItem('url'); + if (redirect_uri) { + const updatedQuery = curUrlObj.search + '&error_callback=' + curUrlObj.href.split('?')[0]; + const redirect_uriLocation = new URL(redirect_uri); + sessionStorage.setItem('url', window.location.href); + + if(client_id === 'android'){ + window.location.href = curUrlObj.protocol + '//' + curUrlObj.host + redirectUrlPath + updatedQuery; + } + else + { + window.location.href = redirect_uriLocation.protocol + '//' + redirect_uriLocation.host + redirectUrlPath + updatedQuery; + } + } else if (sessionUrl) { + const sessionUrlObj = new URL(sessionUrl); + const updatedQuery = sessionUrlObj.search + '&error_callback=' + sessionUrlObj.href.split('?')[0]; + redirect_uri = (new URLSearchParams(sessionUrlObj.search)).get('redirect_uri'); + client_id = (new URLSearchParams(sessionUrlObj.search)).get('client_id'); + + if (redirect_uri) { + const redirect_uriLocation = new URL(redirect_uri); + if(client_id === 'android'){ + window.location.href = sessionUrlObj.protocol + '//' + sessionUrlObj.host + redirectUrlPath + updatedQuery; + } + else{ + window.location.href = redirect_uriLocation.protocol + '//' + redirect_uriLocation.host + + redirectUrlPath + updatedQuery; + } + } else { + redirectToLib(); + } + } else { + redirectToLib(); + } +}; +const redirectToLib = () => { + window.location.href = window.location.protocol + '//' + window.location.host + '/resource'; +}; + +const viewPassword = function(previewButton){ + console.log('Show Password'); + + var newPassword = document.getElementById("password-new"); + if (newPassword.type === "password") { + newPassword.type = "text"; + addClass(previewButton,"slash"); + } else { + newPassword.type = "password"; + previewButton.className = previewButton.className.replace("slash",""); + } +} +const handleSsoEvent = () => { + const ssoPath = '/sign-in/sso/select-org'; + const curUrlObj = window.location; + let redirect_uri = (new URLSearchParams(curUrlObj.search)).get('redirect_uri'); + let client_id = (new URLSearchParams(curUrlObj.search)).get('client_id'); + const sessionUrl = sessionStorage.getItem('url'); + if (redirect_uri) { + const redirect_uriLocation = new URL(redirect_uri); + sessionStorage.setItem('url', window.location.href); + if (client_id === 'android') { + const ssoUrl = curUrlObj.protocol + '//' + curUrlObj.host + ssoPath; + window.location.href = redirect_uri + '?ssoUrl=' + ssoUrl; + } else { + window.location.href = redirect_uriLocation.protocol + '//' + redirect_uriLocation.host + ssoPath; + } + } else if (sessionUrl) { + const sessionUrlObj = new URL(sessionUrl); + redirect_uri = (new URLSearchParams(sessionUrlObj.search)).get('redirect_uri'); + client_id = (new URLSearchParams(sessionUrlObj.search)).get('client_id'); + if (redirect_uri) { + const redirect_uriLocation = new URL(redirect_uri); + if (client_id === 'android') { + const ssoUrl = sessionUrlObj.protocol + '//' + sessionUrlObj.host + ssoPath; + window.location.href = redirect_uri + '?ssoUrl=' + ssoUrl; + } else { + window.location.href = redirect_uriLocation.protocol + '//' + redirect_uriLocation.host + ssoPath; + } + } else { + redirectToLib(); + } + } else { + redirectToLib(); + } +}; diff --git a/ansible/artifacts/sunbird/login/resources/login-reset-password.ftl b/ansible/artifacts/sunbird/login/resources/login-reset-password.ftl deleted file mode 100644 index 5232e86d99..0000000000 --- a/ansible/artifacts/sunbird/login/resources/login-reset-password.ftl +++ /dev/null @@ -1,43 +0,0 @@ -<#import "template.ftl" as layout> -<@layout.registrationLayout displayInfo=true; section> - <#if section = "title"> - ${msg("emailForgotTitle")} - <#elseif section = "header"> - ${msg("emailForgotTitle")} - <#elseif section = "form"> -

    - <#elseif section = "info" > - ${msg("emailInstruction")} - - \ No newline at end of file diff --git a/ansible/artifacts/sunbird/login/resources/login-update-password.ftl b/ansible/artifacts/sunbird/login/resources/login-update-password.ftl deleted file mode 100644 index bb2fee49c4..0000000000 --- a/ansible/artifacts/sunbird/login/resources/login-update-password.ftl +++ /dev/null @@ -1,48 +0,0 @@ -<#import "template.ftl" as layout> -<@layout.registrationLayout displayInfo=true; section> - <#if section = "title"> - ${msg("updatePasswordTitle")} - <#elseif section = "header"> - ${msg("updatePasswordTitle")} - <#elseif section = "form"> - - - \ No newline at end of file diff --git a/ansible/artifacts/sunbird/login/resources/login.ftl b/ansible/artifacts/sunbird/login/resources/login.ftl deleted file mode 100644 index 9115c346f3..0000000000 --- a/ansible/artifacts/sunbird/login/resources/login.ftl +++ /dev/null @@ -1,72 +0,0 @@ -<#import "template.ftl" as layout> -<@layout.registrationLayout displayInfo=social.displayInfo; section> - <#if section = "title"> - ${msg("loginTitle",(realm.displayName!''))} - <#elseif section = "header"> - ${msg("loginTitleHtml",(realm.displayNameHtml!''))} - <#elseif section = "form"> - <#if realm.password> - - - <#elseif section = "info" > - <#if realm.password && realm.registrationAllowed && !usernameEditDisabled??> - - - - <#if realm.password && social.providers??> -
    - -
    - - - \ No newline at end of file diff --git a/ansible/artifacts/sunbird/login/template.ftl b/ansible/artifacts/sunbird/login/template.ftl new file mode 100644 index 0000000000..23e7579f51 --- /dev/null +++ b/ansible/artifacts/sunbird/login/template.ftl @@ -0,0 +1,114 @@ +<#macro registrationLayout bodyClass="" displayInfo=false displayMessage=true> + + + + + + + + + + + + + + <#if properties.meta?has_content> + <#list properties.meta?split(' ') as meta> + + + + <#nested "title"> + + <#if properties.styles?has_content> + <#list properties.styles?split(' ') as style> + + + + <#if properties.scripts?has_content> + <#list properties.scripts?split(' ') as script> + + + + <#if scripts??> + <#list scripts as script> + + + + + + + + +
    +
    + +
    +
    <#nested "header">
    +
    + + <#if realm.internationalizationEnabled> +
    +
    +
    + ${locale.current} +
      + <#list locale.supported as l> +
    • ${l.label}
    • + +
    +
    +
    +
    + + +
    +
    + <#if displayMessage && message?has_content> + + + +
    +
    + <#nested "form"> +
    +
    + + <#if displayInfo> +
    +
    + <#nested "info"> +
    +
    + +
    +
    +
    +
    + + + diff --git a/ansible/artifacts/sunbird/login/resources/theme.properties b/ansible/artifacts/sunbird/login/theme.properties similarity index 84% rename from ansible/artifacts/sunbird/login/resources/theme.properties rename to ansible/artifacts/sunbird/login/theme.properties index d5c984f74f..20358b79fa 100644 --- a/ansible/artifacts/sunbird/login/resources/theme.properties +++ b/ansible/artifacts/sunbird/login/theme.properties @@ -16,6 +16,6 @@ # parent=base -styles=css/semantic.min.css css/login.css - -kcFeedbackAreaClass=ui info message \ No newline at end of file +styles=css/semantic.min.css?v=1.14.b css/login.css?v=1.14.b +scripts=js/login.js?v=1.14.b +kcFeedbackAreaClass=ui info message diff --git a/ansible/bootstrap.yml b/ansible/bootstrap.yml index 45286dabf8..a31e1339e7 100644 --- a/ansible/bootstrap.yml +++ b/ansible/bootstrap.yml @@ -1,12 +1,24 @@ -- hosts: "{{hosts}}" +- hosts: 'all' become: yes + gather_facts: no + pre_tasks: + - name: Python predependency + raw: sudo apt update && sudo apt install -y python python-pkg-resources python-pip + vars_files: + - "{{inventory_dir}}/secrets.yml" + vars: + ansible_ssh_user: "{{bootstrap_user}}" + ansible_ssh_private_key_file: "{{bootstrap_key_path}}" roles: - - role: bootstrap_any + - bootstrap_any tags: - bootstrap_any - hosts: "{{hosts}}" + gather_facts: no become: yes + vars_files: + - "{{inventory_dir}}/secrets.yml" roles: - role: bootstrap_swarm when: swarm_master @@ -14,8 +26,12 @@ - bootstrap_swarm - hosts: "{{hosts}}" + gather_facts: no become: yes + vars_files: + - "{{inventory_dir}}/secrets.yml" roles: - role: azure-cli tags: - azure_cli + diff --git a/ansible/cassandra-backup.yml b/ansible/cassandra-backup.yml index be013b2ba4..f5555d540a 100644 --- a/ansible/cassandra-backup.yml +++ b/ansible/cassandra-backup.yml @@ -1,6 +1,6 @@ - hosts: cassandra become: yes vars_files: - - ['{{inventory_dir}}/secrets.yml', 'secrets/{{env}}.yml'] + - ['{{inventory_dir}}/secrets.yml'] roles: - cassandra-backup diff --git a/ansible/deploy.yml b/ansible/deploy.yml index 1cc400f74f..492d82d18d 100644 --- a/ansible/deploy.yml +++ b/ansible/deploy.yml @@ -23,6 +23,7 @@ vars_files: - ['{{inventory_dir}}/secrets.yml', 'secrets/{{env}}.yml'] roles: +# - acr-docker - stack-sunbird tags: - stack-sunbird diff --git a/ansible/docker_image_push.yml b/ansible/docker_image_push.yml new file mode 100644 index 0000000000..a9bb19b231 --- /dev/null +++ b/ansible/docker_image_push.yml @@ -0,0 +1,17 @@ +--- +- name: "Push docker images to any docker registry" + hosts: localhost + vars_files: + - ['{{inventory_dir}}/secrets.yml'] + become: yes + tasks: + - name: login to registry + docker_login: + registry: "{{ vault_docker_registry_url }}" + username: "{{ vault_docker_registry_user }}" + password: "{{ vault_docker_registry_password }}" + + - name: Push image to registry + docker_image: + name: "{{ hub_org }}/{{ image_name }}:{{ image_tag }}" + push: yes diff --git a/ansible/es.yml b/ansible/es.yml index 783fc96ee5..ab6aaf2ce8 100644 --- a/ansible/es.yml +++ b/ansible/es.yml @@ -2,6 +2,9 @@ become: yes vars_files: - ['{{inventory_dir}}/secrets.yml', 'secrets/{{env}}.yml'] + vars: + - es_snapshot_host: "{{app_es_snapshot_host}}" + - snapshot_base_path: "{{app_snapshot_base_path}}" roles: - es-azure-snapshot - es5-snapshot-purge @@ -12,6 +15,8 @@ become: yes vars_files: - ['{{inventory_dir}}/secrets.yml', 'secrets/{{env}}.yml'] + vars: + - es_restore_host: "{{app_es_restore_host}}" roles: - es-azure-restore tags: @@ -21,6 +26,9 @@ become: yes vars_files: - ['{{inventory_dir}}/secrets.yml', 'secrets/{{env}}.yml'] + vars: + - es_snapshot_host: "{{log_es_snapshot_host}}" + - snapshot_base_path: "{{log_snapshot_base_path}}" roles: - es-azure-snapshot - es2-snapshot-purge @@ -31,6 +39,8 @@ become: yes vars_files: - ['{{inventory_dir}}/secrets.yml', 'secrets/{{env}}.yml'] + vars: + - es_restore_host: "{{log_es_restore_host}}" roles: - es-azure-restore tags: diff --git a/ansible/inventories/sample/group_vars/postgresql-master b/ansible/inventories/sample/group_vars/postgresql-master deleted file mode 100644 index 5602fcf220..0000000000 --- a/ansible/inventories/sample/group_vars/postgresql-master +++ /dev/null @@ -1,5 +0,0 @@ -postgresql_databases: - - name: "{{kong_postgres_database}}" - - name: "{{keycloak_postgres_database}}" - - name: "{{application_postgres_database}}" - - name: "{{badger_postgres_database}}" diff --git a/ansible/inventories/sample/hosts b/ansible/inventories/sample/hosts deleted file mode 100644 index 104b73ac22..0000000000 --- a/ansible/inventories/sample/hosts +++ /dev/null @@ -1,88 +0,0 @@ -[swarm-manager-1] -"{{application_host}}" ansible_ssh_user="{{ssh_ansible_user}}" ansible_ssh_private_key_file="{{ansible_private_key_path}}" ansible_sudo_pass="{{sudo_passwd|default('')}}" swarm_master=true - -[swarm-manager:children] -swarm-manager-1 - -[swarm-bootstrap-manager:children] -swarm-manager-1 - -[postgresql-1] -"{{database_host}}" ansible_ssh_user="{{ssh_ansible_user}}" ansible_sudo_pass="{{sudo_passwd|default('')}}" ansible_ssh_private_key_file="{{ansible_private_key_path}}" - -[es-1] -"{{database_host}}" ansible_ssh_user="{{ssh_ansible_user}}" ansible_ssh_private_key_file="{{ansible_private_key_path}}" es_instance_name=es-1 es_etc_node_master=true ansible_sudo_pass="{{sudo_passwd|default('')}}" es_etc_node_data=true - -[cassandra-1] -"{{database_host}}" ansible_ssh_user="{{ssh_ansible_user}}" ansible_sudo_pass="{{sudo_passwd|default('')}}" ansible_ssh_private_key_file="{{ansible_private_key_path}}" - -[keycloak-1] -"{{application_host}}" ansible_ssh_user="{{ssh_ansible_user}}" ansible_sudo_pass="{{sudo_passwd|default('')}}" ansible_ssh_private_key_file="{{ansible_private_key_path}}" - -[keycloak:children] -keycloak-1 - -[postgresql-master:children] -postgresql-1 - -[postgresql-slave:children] - -[es:children] -es-1 - -[cassandra:children] -cassandra-1 - -[kong-api] -"{{application_host}}" ansible_ssh_user="{{ssh_ansible_user}}" ansible_sudo_pass="{{sudo_passwd|default('')}}" ansible_ssh_private_key_file="{{ansible_private_key_path}}" - -[swarm-agent-for-prometheus] -"{{application_host}}" ansible_ssh_user="{{ssh_ansible_user}}" ansible_sudo_pass="{{sudo_passwd|default('')}}" ansible_ssh_private_key_file="{{ansible_private_key_path}}" - -[swarm-agent-for-grafana] -"{{application_host}}" ansible_ssh_user="{{ssh_ansible_user}}" ansible_sudo_pass="{{sudo_passwd|default('')}}" ansible_ssh_private_key_file="{{ansible_private_key_path}}" - -[swarm-agent-for-alertmanager] -"{{application_host}}" ansible_ssh_user="{{ssh_ansible_user}}" ansible_sudo_pass="{{sudo_passwd|default('')}}" ansible_ssh_private_key_file="{{ansible_private_key_path}}" - - -[dev-log-es-1] -"{{application_host}}" ansible_ssh_user="{{ssh_ansible_user}}" ansible_sudo_pass="{{sudo_passwd|default('')}}" node_name=dev-log-es-1 es_etc_node_master=true es_etc_node_data=true ansible_ssh_private_key_file="{{ansible_private_key_path}}" - - -[dev-log-es:children] -dev-log-es-1 - - -[log-es:children] -dev-log-es - - -[non-swarm-nodes:children] -postgresql-master -postgresql-slave -es -cassandra -kong-api -keycloak -log-es - - -[swarm-nodes:children] -swarm-manager -swarm-bootstrap-manager -swarm-agent-for-prometheus -swarm-agent-for-grafana -swarm-agent-for-alertmanager - -[node-exporter:children] -non-swarm-nodes -swarm-manager - -[log-forwarder:children] -non-swarm-nodes -swarm-manager - -[sample:children] -non-swarm-nodes -swarm-nodes diff --git a/ansible/inventory/env/common.yml b/ansible/inventory/env/common.yml new file mode 100644 index 0000000000..e69de29bb2 diff --git a/ansible/inventory/env/group_vars/all.yml b/ansible/inventory/env/group_vars/all.yml new file mode 100644 index 0000000000..73e2e12e97 --- /dev/null +++ b/ansible/inventory/env/group_vars/all.yml @@ -0,0 +1,546 @@ +###################### Core ############################ + +# ENVIRONMENT CONFIGURATION +proxy_server_name: "{{domain_name}}" +keycloak_auth_server_url: "{{proto}}://{{ proxy_server_name }}/auth" +sunbird_echo_api_url: "{{proto}}://{{ proxy_server_name }}/api/echo/" +sunbird_web_url: "{{proto}}://{{ proxy_server_name }}" +sunbird_dataservice_url: "{{proto}}://{{ proxy_server_name }}/api/" +api_proxy_name: "{{proto}}://api.{{proxy_server_name}}" # Domain name on which device register and other api's will be accessed +swarm_load_balancer: "{{proxy_server_name}}" +proxy_site_key: "{{ core_vault_proxy_site_key }}" #SSL certificate's site.key file contents. More details in this wiki: {{proto}}://github.com/project-sunbird/sunbird-commons/wiki/Updating-SSL-certificates-in-Sunbird-Proxy-service +proxy_site_crt: "{{ core_vault_proxy_site_crt }}" #SSL certificate's site.crt file contents. More details in this wiki: {{proto}}://github.com/project-sunbird/sunbird-commons/wiki/Updating-SSL-certificates-in-Sunbird-Proxy-service +sunbird_environment: "{{env}}" # +content-service learner +sunbird_installation: "{{env}}" # +keycloak +sunbird_instance: "{{env}}" +env_short_name: "{{env}}" +sunbird_env: "{{env}}" #Ekstep environment to connect to. Use `qa` for non-prod deployments, and `prod` for prod deployment. +sunbird_app_name: "{{env}}" +azure_account_key: "{{core_vault_sunbird_azure_storage_key}}" + +# Keycloak +keycloak_api_management_user_first_name: "admin" +keycloak_api_management_user_last_name: "admin" +keycloak_api_management_user_email: "{{keycloak_api_management_user_email}}" +keycloak_api_management_username: "{{core_vault_sunbird_sso_username}}" +keycloak_api_management_user_password: "{{core_vault_sunbird_sso_password}}" +keycloak_management_user: "admin" +keycloak_management_password: "{{core_vault_keycloak_password}}" + +## Learner service +sunbird_url_shortner_access_token: "{{vault_core_url_shortner_access_token}}" +sunbird_url_shortner_enable: 'false' + +sunbird_keycloak_required_action_link_expiration_seconds: 2592000 + +sunbird_es_port: 9300 +mail_server_port: 587 +upstream_url: "{{azure_account_name}}.blob.core.windows.net/{{sunbird_content_azure_storage_container}}" +## Mailing list +# !! Override for specific alert groups; Default will be alerts_mailing_list +monitor_alerts_slack_channel: +app_alerts_mailing_list: "" +devops_alerts_mailing_list: "" +site_alerts_mailing_list: "" +keycloak_alerts_mailing_list: "" +api_manager_alerts_mailing_list: "" + +# Learner +sunbird_user_profile_field_default_visibility: private + +# Player +sunbird_external_content_whitelisted_domains: "" +sunbird_portal_user_upload_ref_link: http://www.sunbird.org/features-documentation/register_user + +# Content +content_service_whitelisted_channels: "" +content_service_blacklisted_channels: "" + +# Badger +badger_file_storage: storages.backends.azure_storage.AzureStorage +badger_admin_email: + +## Below passwords are used by DB install scripts when creating databases. Please use strong passwords. +sunbird_pg_user: "{{core_vault_postgres_username}}" +application_postgres_user: "{{core_vault_postgres_username}}" +application_postgres_password: "{{core_vault_postgres_password}}" +keycloak_postgres_user: "{{core_vault_postgres_username}}" +keycloak_postgres_password: "{{core_vault_postgres_password}}" +badger_postgres_password: "{{core_vault_postgres_password}}" +kong_postgres_user: "{{core_vault_postgres_username}}" +kong_postgres_password: "{{core_vault_postgres_password}}" +enc_postgres_user: "{{core_vault_postgres_username}}" +badger_postgres_user: "{{core_vault_postgres_username}}" +backup_storage_account: "{{azure_account_name}}" +backup_storage_key: "{{core_vault_sunbird_azure_storage_key}}" +sunbird_account_name: "{{azure_account_name}}" +sunbird_account_key: "{{core_vault_sunbird_azure_storage_key}}" +ansible_vault_password: "{{ core_vault_ansible_vault_password }}" +sunbird_azure_account_name: "{{azure_account_name}}" +jenkins_admin_username: "{{core_vault_jenkins_admin_username}}" +jenkins_admin_password: "{{core_vault_jenkins_admin_password}}" +vault_badging_authorization_key: "{{core_vault_badging_authorization_key}}" +vault_postgres_exporter_password: "{{core_vault_postgres_password}}" + +## Postgres configuration +swarm_address_space: "{{groups['swarm-manager'][0].split(\".\")[0]}}.0.0.0/8" #Application server address space (e.g. 10.3.0.0/24), also the agentpublicSubnet if using Azure scripts provided +keycloak_address_space: "{{groups['keycloak'][0].split(\".\")[0]}}.0.0.0/8" +postgres_address_space: "{{groups['postgresql-master'][0].split(\".\")[0]}}.0.0.0/8" + +## Cassandra configuration +cassandra_server_private_ip: "{{groups['cassandra']|join(',')}}" #Private IP of cassandra server +keystore_password: "{{core_vault_keystore_password}}" #Password to use for encrypting cassandra keystore. Use a strong password. +truststore_password: "{{core_vault_truststore_password}}" #Password to use for encrypting cassandra truststore. Use a strong password. + +# APPLICATION CONFIGURATION +kong_host: api-manager_kong + +## DB address +application_postgres_host: "{{groups['postgres'][0]}}" #Private IP of Postgres server +keycloak_postgres_host: "{{groups['postgres'][0]}}" #Private IP of Postgres server +kong_postgres_host: "{{groups['postgres'][0]}}" #Private IP of Postgres server +sunbird_cassandra_host: "{{groups['cassandra'][0]}}" #Private IP of Cassandra server +sunbird_es_host: "{{groups['es']| join(',')}}" + +## Application server configurations +sunbird_analytics_api_base_url: "http://{{analyticsapi_ip}}:9000" +sunbird_search_service_api_base_url: "http://{{searchservice_ip}}:9000" +sunbird_mail_server_host: "{{ mail_server_host }}" #SMTP server IP. Could be ignored if not mails are to be sent. +sunbird_mail_server_port: "{{ mail_server_port }}" #SMTP port. Could be ignored if not mails are to be sent. +sunbird_mail_server_username: "{{ mail_server_username }}" #SMTP username. Could be ignored if not mails are to be sent. +sunbird_mail_server_password: "{{ core_vault_mail_server_password }}" #SMTP server pasword. Could be ignored if not mails are to be sent. + +## Keycloak (auth server) login details +sunbird_sso_username: "{{ core_vault_sunbird_sso_username }}" +sunbird_sso_password: "{{ core_vault_sunbird_sso_password }}" +keycloak_admin_initial_password: "{{ core_vault_keycloak_password }}" +keycloak_build_src: "keycloak_build" +keycloak_ver: "keycloak-3.2.0.Final" +keycloak_sms_provider_build: "keycloak-email-phone-autthenticator-1.0-SNAPSHOT.jar" +keycloak_sms_provider_templates_src: "templates.tar.gz" +keycloak_sms_provider_templates_dest: "/opt/keycloak/themes/sunbird/login" +keycloak_ekstep_sunbird_login_theme_file: "login.tar.gz" +keycloak_ekstep_sunbird_login_theme_dest: "/opt/keycloak/themes/sunbird/login" +keycloak_postgresql: "postgresql-9.4.1212.jar" +sunbird_auth_version: 1.0v + + +## Content Repo configuration +sunbird_api_auth_token: "{{ core_vault_sunbird_api_auth_token }}" #Authorization key (JWT) to access Sunbird APIs. This will be in the output of deploy-apis.sh script, extracting it out is documented in the deployment wiki. +sunbird_ekstep_api_key: "{{ core_vault_sunbird_ekstep_api_key }}" #Authorization key (JWT) to access Ekstep APIs. Steps to generate this are documented on {{proto}}://github.com/project-sunbird/sunbird-commons/wiki/Obtaining-API-token-for-accessing-ekstep-APIs +sunbird_plugin_repo_api_key: "{{ core_vault_sunbird_ekstep_api_key }}" +sunbird_trampoline_secret: "{{ core_vault_sunbird_trampoline_secret }}" + +# ADVANCED CONFIGURATIONS + +cassandra_listen_address: "{{ cassandra_server_private_ip }}" +cassandra_seeds: "{{ cassandra_server_private_ip }}" +cassandra_broadcast_rpc_address: "{{ cassandra_server_private_ip }}" +cassandra_broadcast_address: "{{ cassandra_server_private_ip }}" +cassandra_listen_interface: '' +cassandra_log_dir: '/var/log/cassandra' +cassandra_root_dir: '/etc/cassandra' +cassandra_version: '3.9' +cassandra_port: 9042 +cassandra_rpc_address: 0.0.0.0 +cassandra_restore_dir: /home/deployer/ +cassandra_backup_azure_container_name: cassandra-backup +cassandra_backup_azure_storage_account_name: "{{azure_account_name}}" +cassandra_backup_azure_storage_access_key: "{{backup_storage_key}}" +cassandra_backup_dir: /data/cassandra/backup + + +keycloak_realm: sunbird +sunbird_content_player_url: "http://api-manager_kong:8000/" +sunbird_learner_player_url: "http://api-manager_kong:8000/" +sunbird_sso_client_id: admin-cli +sunbird_portal_realm: sunbird +sunbird_portal_auth_server_client: portal +sunbird_trampoline_client_id: trampoline +sunbird_appid: "{{env}}.sunbird.portal" +sunbird_pg_db: quartz +sunbird_pg_host: "{{ application_postgres_host }}" +sunbird_pg_port: 5432 +sunbird_pg_password: "{{ core_vault_postgres_password }}" +sunbird_sunbird_quartz_mode: cluster +sunbird_encryption_mode: local +sunbird_cassandra_urls: "{{ cassandra_server_private_ip }}:{{ cassandra_port }}" +sunbird_session_store_type: cassandra +sunbird_keycloak_client_id: 'portal' +sunbird_keycloak_public: true +sunbird_cache_store: "memory" +sunbird_portal_title_name: "{{sunbird_app_name}}" +sunbird_sso_publickey: "{{core_vault_sunbird_sso_publickey}}" +sunbird_azure_storage_account: "{{azure_account_name}}" +sunbird_azure_storage_key: "{{core_vault_sunbird_azure_storage_key}}" +sunbird_fcm_account_key: "{{core_vault_sunbird_fcm_account_key}}" +sunbird_env_logo_url: "{{proto}}://{{proxy_server_name}}/common/images/sunbird_logo.png" +sunbird_msg_91_auth: "{{core_vault_msg_91_auth_key}}" +sunbird_telemetry_pdata_id: "{{env}}.sunbird.learning.service" +sunbird_encryption_key: "{{ core_vault_sunbird_encryption_key }}" +#player_tenant_dir: +application_postgres_database: quartz +keycloak_postgres_database: keycloak +keyclaok_deployer_sudo_pass: "{{core_vault_keyclaok_deployer_sudo_pass}}" +keycloak_password: "{{core_vault_keycloak_password}}" + +#Content Service Vars +sunbird_content_repo_api_base_url: "http://{{learningservice_ip}}:8080/learning-service" +sunbird_content_repo_api_key: "{{ core_vault_sunbird_ekstep_api_key }}" +sunbird_search_service_api_key: "{{ core_vault_sunbird_ekstep_api_key }}" +sunbird_dial_repo_api_base_url: "{{sunbird_ekstep_api_base_url}}" +sunbird_dial_repo_api_key: "{{ core_vault_sunbird_ekstep_api_key }}" +sunbird_plugin_repo_api_base_url: "{{sunbird_ekstep_api_base_url}}" +sunbird_data_service_api_base_url: "{{sunbird_ekstep_api_base_url}}" +sunbird_data_service_api_key: "{{ core_vault_sunbird_ekstep_api_key }}" + +#API Manager +kong_postgres_port: 5432 +kong_postgres_database: "api_manager_{{env}}" +es_curl_host: "{{groups['es'][0]}}" + +## Logging details +syslog: + host: "{{groups['swarm-manager'][0]}}" + port: 51415 + +jenkins_replicas: 2 + +## PostgreSQL config +postgres_replication_user_name: "{{ core_vault_postgres_username }}" +postgres_password: "{{ core_vault_postgres_password }}" + + +postgresql_hba_entries: + - { type: local, database: all, user: postgres, auth_method: peer } + - { type: local, database: all, user: all, auth_method: peer } + - { type: host, database: all, user: all, address: '127.0.0.1/32', auth_method: md5 } + - { type: host, database: all, user: all, address: '::1/128', auth_method: md5 } + - { type: host, database: all, user: "{{ postgres_exporter_user }}", address: '{{ swarm_address_space }}', auth_method: md5 } + - { type: host, database: replication, user: "{{ postgres_replication_user_name }}", address: '{{ postgres_address_space }}', auth_method: md5 } + - { type: host, database: all, user: all, address: '{{ swarm_address_space }}', auth_method: md5 } + - { type: host, database: all, user: all, address: '{{ keycloak_address_space }}', auth_method: md5 } + + +proxy_prometheus_admin_creds: "{{ core_vault_proxy_prometheus_admin_creds }}" +vault_docker_registry_url: "{{core_vault_docker_registry_url}}" +vault_docker_registry_user: "{{core_vault_docker_registry_user}}" +vault_docker_registry_password: "{{core_vault_docker_registry_password}}" + +# ADDITIONAL CONFIGURATION +curl_host: "{{proxy_server_name}}" +prometheus_data_dir: /var/dockerdata/prometheus/data + +logger_es_host: "{{ groups['log-es'][0] }}" +logger_es_port: 9200 +#kibana_image: kibana:5.4.3 + +kibana_oauth_redirect_url: "{{proto}}://{{proxy_server_name}}/oauth2/callback" +keycloak: True + +api__host: "{{proxy_server_name}}" + +# New variable +sunbird_enable_signup: 'true' +sunbird_portal_base_url: "{{proto}}://{{proxy_server_name}}" + +monitor_es_host: "{{ groups['es'][0] }}" +alertmanager_host: "{{ groups['swarm-agent-for-alertmanager'][0] }}" +prometheus_host: "{{ groups['swarm-agent-for-prometheus'][0] }}" + +filebeat_logtsash_host: "{{ swarm_load_balancer }}" +expected_minimum_logs_per_minute: 30 +proxy_prometheus: false +enable_scraping_docker_metrics: false +postgres_exporter_postgres_port: 5432 +postgres_exporter_user: postgres_exporter +sunbird_cs_base_url: "{{proto}}://{{proxy_server_name}}/api" +kong_admin_api_url: http://localhost:8001 + +postgresql_backup_azure_storage_account_name: "{{azure_account_name}}" +postgresql_backup_azure_storage_access_key: "{{ backup_storage_key }}" +postgresql_restore_azure_storage_account_name: "{{azure_account_name}}" +postgresql_restore_azure_storage_access_key: "{{ backup_storage_key }}" + +grafana_url: "{{proto}}://{{proxy_server_name}}/grafana" +grafana_editor_username: editor + +monitor_alerts_mail_server_host: "{{ mail_server_host }}" +monitor_alerts_mail_server_port: "{{ mail_server_port }}" +monitor_alerts_mail_server_username: "{{ mail_server_username }}" +monitor_alerts_mail_server_password: "{{ core_vault_mail_server_password }}" + +#badger +badger_admin_password: "{{core_vault_badger_admin_password}}" +badger_postgres_database: badger +badger_host: "{{ groups['postgresql-master'][0]}}" +badger_container: badgr +sunbird_http_orgin: "{{proto}}://{{proxy_server_name}}/badging" + +#enc-service +enc_postgres_database: encryption + +#kafka vars +zk_hosts: "127.0.0.1:2181" +kafka_conf_dir: /etc/kafka +kafka_data_dir: /var/kafka +kafka_group: kafka +kafka_user: kafka +kafka_log_dir: /var/log/kafka +kafka_upstart_conf: /etc/init/kafka.conf +kafka_systemd_service: /etc/systemd/system/kafka.service +zookeeper_systemd_service: /etc/systemd/system/zookeeper.service +kafka_jvm_opts: "-Xmx1G -Xms1G" +kafka_log_retention_hours: 2400 +kafka_auto_create_topics: "false" +monasca_log_level: ERROR +delete_topic_enable: "true" +zk_port: 2181 + +kafka_broker_host: "{{groups['kafka']|join(',')}}" +zookeeper_quorum: "{{groups['kafka']|join(':2182,')}}:2181" +sunbird_telemetry_kafka_topic: "{{env}}.telemetry.ingestion" +sunbird_data_pipeline_kafka_topic: "{{env}}.telemetry.ingest" +telemetry_proxy_url: "{{sunbird_ekstep_api_base_url}}/data/v3/telemetry" +sunbird_telemetry_request_max_count: 100 +sunbird_telemetry_api: "{{sunbird_ekstep_api_base_url}}/data/v3/telemetry" + +sunbird_portal_cdn_url: "" +sunbird_tenant_cdn_url: "" + +# sunbird_cdn_url +player_cdn_account_key: "{{core_vault_sunbird_azure_storage_key}}" +player_cdn_container: player +player_cdn_account: "{{azure_account_name}}" + + +#Additional Variables +sunbird_user_bulk_upload_size: 1001 + +sunbird_open_saber_bridge_enable: 'false' + +# --- Content service specific ENV vars --- # +sunbird_content_service_enable_logging: 'true' +sunbird_language_service_api_key: "{{core_vault_sunbird_ekstep_api_key}}" +sunbird_language_service_api_base_url: '{{sunbird_ekstep_api_base_url}}/language' + +kong_version: 1.5.0-gold + +# Data pipeline vars +learning_analytics_service_url: 'http://{{learningservice_ip}}:9000' +ep_es_host: "{{ groups['telemetry-search-cluster'][0] }}" #For kibana pipeline-dashboard + + +#encryption Service +encryption_service_user: encryption +encryption_db_name: encryption +encryption_db_dialect: postgres +encryption_reservation_memory: 750MB +encryption_replicas: 1 +encryption_limit_memory: 750MB +encryption_limit_cpu: 1 +encryption_reservation_cpu: 1 +sunbird_allowed_login: +sunbird_course_batch_notification_enabled: 'true' +sunbird_device_register_api: "{{proto}}://{{api_proxy_name}}/v3/device/register/" +sunbird_course_batch_notification_signature: sunbird + +sunbird_authorization: "{{core_vault_sunbird_api_auth_token}}" +sunbird_lms_base_url: "{{proto}}://{{proxy_server_name}}/api" +sunbird_content_service_local_base_url: http://content-service:5000 +sunbird_kafka_host: "{{groups['kafka']|join(':9092,')}}:9092" +sunbird_qrimage_topic: "{{env}}.qrimage.request" + + +sunbird_azure_report_container_name: reports +sunbird_azure_account_key: "{{core_vault_sunbird_azure_storage_key}}" + +sunbird_google_captcha_site_key: "{{core_vault_sunbird_google_captcha_site_key_portal}}" +sunbird_google_oauth_clientId: "{{core_vault_sunbird_google_oauth_clientId_portal}}" +sunbird_google_oauth_clientSecret: "{{core_vault_sunbird_google_oauth_clientSecret_portal}}" +sunbird_google_keycloak_client_id: "google-auth" +sunbird_google_keycloak_secret: "{{core_vault_sunbird_google_keycloak_secret}}" +google_client_id: "{{core_vault_kibana_google_client_id}}" +google_client_secret: "{{core_vault_kibana_google_client_secret}}" +cookie_secret: "{{core_vault_kibana_cookie_secret}}" +grafana_admin_password: "{{core_vault_grafana_admin_password}}" +grafana_editor_password: "{{core_vault_grafana_editor_password}}" +grafana_dashboards_git_repo_url_with_credentails: "{{core_vault_grafana_dashboards_git_repo_url_with_credentails}}" +monitor_alerts_slack_url: "{{core_vault_monitor_alerts_slack_url}}" +kong__test_jwt: "{{core_vault_kong__test_jwt}}" + +# postgresql_users should only be created in master and replicated to slave +postgresql_users: + - name: "{{kong_postgres_user}}" + password: "{{postgres_password}}" + db: "{{kong_postgres_database}}" + priv: "ALL" + - name: "{{keycloak_postgres_user}}" + password: "{{postgres_password}}" + db: "{{keycloak_postgres_database}}" + priv: "ALL" + - name: "{{application_postgres_user}}" + password: "{{postgres_password}}" + db: "{{application_postgres_database}}" + priv: "ALL" + - name: "{{badger_postgres_user}}" + password: "{{postgres_password}}" + db: "{{badger_postgres_database}}" + priv: "ALL" + + +postgresql_databases: + - name: "{{kong_postgres_database}}" + - name: "{{keycloak_postgres_database}}" + - name: "{{application_postgres_database}}" + - name: "{{badger_postgres_database}}" + - name: "{{enc_postgres_database}}" + +#######App ES + +app_es_etc_cluster_name: "{{env}}" +app_es_etc_discovery_zen_minimum_master_nodes: "{{groups['es']| length | int}}" +app_es_snapshot_host: "{{ groups['es'][0] }}" +app_es_restore_host: "{{ groups['es'][0] }}" +app_es_snapshot_base_path: application + + +#######Log Es +log_es_etc_cluster_name: "{{env}}-log" +log_es_snapshot_host: "{{ groups['log-es'][0] }}" +log_es_restore_host: "{{ groups['log-es'][0] }}" +log_snapshot_base_path: logger +log_es_host: "{{ groups['log-es'][0] }}" + +####### Advanced Config ########## +keycloak_tar_path: keycloak.tar.gz +keycloak_theme_path: artifacts/sunbird +sunbird_telemetry_packet_size: 200 +sunbird_telemetry_sync_batch_size: 200 +content_service_channel_refresh_cron: '*/5 * * * *' +content_service_whitelisted_framework: '' +content_service_blacklisted_framework: '' +content_service_blacklisted_contenttype: '' +content_service_blacklisted_resourcetype: '' +content_service_whitelisted_resourcetype: '' +content_service_whitelisted_mimetype: '' +content_service_blacklisted_mimetype: '' +prometheus_storage_retention_time: 72h0m0s +sunbird_cloud_storage_urls: 'https://s3.ap-south-1.amazonaws.com/ekstep-public-{{ekstep_s3_env}}/,https://ekstep-public-{{ekstep_s3_env}}.s3-ap-south-1.amazonaws.com/,https://{{azure_account_name}}.blob.core.windows.net/{{sunbird_content_azure_storage_container}}/' +sunbird_email_max_recipients_limit: 100 +sunbird_cassandra_consistency_level: one +sunbird_cassandra_replication_strategy: '{"class":"SimpleStrategy","replication_factor":"1"}' +medium_rate_limit_per_hour: 5000 +sunbird_lock_expiry_time: 3600 +app_es_heap_size: 1500m +log_es_heap_size: 1500m +sunbird_otp_expiration: 1800 +sunbird_otp_length: 6 +sunbird_help_link_visibility: FALSE + + + +#Container Limits +proxy_replicas: 1 +proxy_reservation_memory: 64M +proxy_limit_memory: 128M +kong_replicas: 1 +kong_reservation_memory: 64M +kong_limit_memory: 256M +echo_service_replicas: 1 +echo_service_reservation_memory: 8M +echo_service_limit_memory: 16M +adminutil_replicas: 1 +adminutil_reservation_memory: 300M +adminutil_limit_memory: 300M +learner_limit_cpu: 1 +learner_replicas: 1 +learner_reservation_memory: 1000M +learner_limit_memory: 1000M +logger_logstash_heap_size: 512M +logger_logstash_replicas: 1 +logger_logstash_reservation_memory: 512M +logger_logstash_limit_memory: 750M +logger_kibana_reservation_memory: 750M +logger_kibana_limit_memory: 750M +logger_logspout_reservation_memory: 200M +logger_logspout_limit_memory: 200M +logger_oauth_reservation_memory: 32M +logger_oauth_limit_memory: 32M +prometheus_reservation_memory: 1G +prometheus_limit_memory: 1G +alertmanager_reservation_memory: 100M +alertmanager_limit_memory: 100M +node_exporter_reservation_memory: 16M +node_exporter_limit_memory: 32M +cadvisor_reservation_memory: 100M +cadvisor_limit_memory: 100M +elasticsearch_exporter_reservation_memory: 8M +elasticsearch_exporter_limit_memory: 24M +postgres_exporter_reservation_memory: 16M +postgres_exporter_limit_memory: 32M +statsd_exporter_reservation_memory: 8M +statsd_exporter_limit_memory: 16M +blackbox_exporter_reservation_memory: 16M +blackbox_exporter_limit_memory: 32M +jsonpath_exporter_reservation_memory: 32M +jsonpath_exporter_limit_memory: 64M +azure_blob_exporter_reservation_memory: 16M +azure_blob_exporter_limit_memory: 64M +grafana_reservation_memory: 100M +grafana_limit_memory: 100M +monitor_logstash_replicas: 1 +monitor_logstash_heap_size: 256m +monitor_logstash_reservation_memory: 256M +monitor_logstash_limit_memory: 350M +monitor_logspout_reservation_memory: 150M +monitor_logspout_limit_memory: 150M +player_replicas: 1 +player_reservation_memory: 256M +player_limit_memory: 512M +content_replicas: 1 +content_reservation_memory: 1000M +content_limit_memory: 1000M +learner_reservation_cpu: 1 +badger_replicas: 1 +badger_reservation_memory: 500MB +badger_limit_memory: 500MB + + +# not required +sunbird_image_storage_url: "https://{{azure_account_name}}.blob.core.windows.net/dial/" +vault_auth_key: "{{core_vault_auth_key}}" +vault_sender: "{{core_vault_sender}}" +vault_country: "{{core_vault_country}}" +vault_route: "{{core_vault_route}}" +vault_sms_method_type: "{{core_vault_sms_method_type}}" + +# telemetry +default_channel_id: "in.ekstep" + +## + +trampoline_secret: "{{core_vault_trampoline_secret}}" +es_api_host: "{{inventory_hostname}}" +sunbird_linked_content_base_url: "{{proto}}://{{proxy_server_name}}/play/content/" +enc_postgres_password: "{{core_vault_postgres_password}}" + +# Depricated value ?? +postgres_replication_user_password: "{{core_vault_postgres_password}}" +# Content service is calling ekstep ?? +# Config service variables, not required +sunbird_config_service_url: +config_refresh_interval: 10 +config_service_enabled: false +config_cache_ttl: 600 + +#### backup storage secret +backup_azure_storage_access_key: "{{core_vault_azure_storage_secret}}" + +#es-backup +app_es_snapshot_host: "{{ groups['es'][0] }}" +app_snapshot_base_path: applicationelasticsearch + +#log es backup +log_es_snapshot_host: "{{ groups['log-es'][0] }}" +log_snapshot_base_path: loggerelasticsearch diff --git a/ansible/inventory/env/group_vars/env.yml b/ansible/inventory/env/group_vars/env.yml new file mode 120000 index 0000000000..a9c19506c3 --- /dev/null +++ b/ansible/inventory/env/group_vars/env.yml @@ -0,0 +1 @@ +../common.yml \ No newline at end of file diff --git a/ansible/jmeter-provision.yml b/ansible/jmeter-provision.yml deleted file mode 100644 index ef0fc1c866..0000000000 --- a/ansible/jmeter-provision.yml +++ /dev/null @@ -1,6 +0,0 @@ -- hosts: "jmeter" - become: yes - vars_files: - - ['{{inventory_dir}}/secrets.yml', 'secrets/{{env}}.yml'] - roles: - - jmeter-provision \ No newline at end of file diff --git a/ansible/monitoring.yml b/ansible/monitoring.yml index 5bf4544b40..74b04dd86d 100644 --- a/ansible/monitoring.yml +++ b/ansible/monitoring.yml @@ -55,7 +55,7 @@ tags: - stack-monitor -- hosts: node-exporter +- hosts: all become: yes vars_files: - ['{{inventory_dir}}/secrets.yml', 'secrets/{{env}}.yml'] @@ -72,3 +72,12 @@ - vm-agents-processexporter tags: - metrics-exporter + +- hosts: swarm-bootstrap-manager + become: yes + vars_files: + - ['{{inventory_dir}}/secrets.yml','secrets/{{env}}.yml'] + roles: + - prometheus_config + tags: + - lp_dp_monitoring diff --git a/ansible/provision.yml b/ansible/provision.yml index 98c5aa551d..5459418164 100644 --- a/ansible/provision.yml +++ b/ansible/provision.yml @@ -5,6 +5,7 @@ roles: - jre-1.8.0_144 - cassandra + - cassandra-cql-update tags: - cassandra @@ -15,6 +16,7 @@ roles: - openjdk - application_elasticsearch + - curl_es_command tags: - es diff --git a/ansible/roles/application_elasticsearch/meta/main.yml b/ansible/roles/application_elasticsearch/meta/main.yml index c38ad624bb..0091abe7ea 100755 --- a/ansible/roles/application_elasticsearch/meta/main.yml +++ b/ansible/roles/application_elasticsearch/meta/main.yml @@ -8,12 +8,12 @@ dependencies: es_api_host: "{{ hostvars[inventory_hostname]['ansible_default_ipv4']['address'] }}", es_config: { node.name: "{{ es_instance_name }}", - cluster.name: "{{ es_etc_cluster_name }}", + cluster.name: "{{ app_es_etc_cluster_name }}", network.host: "{{ es_api_host }}", discovery.zen.ping.unicast.hosts: "{{ groups['es'] }}", node.data: "{{ es_etc_node_data }}", node.master: "{{ es_etc_node_master }}", - discovery.zen.minimum_master_nodes: "{{ es_etc_discovery_zen_minimum_master_nodes }}", + discovery.zen.minimum_master_nodes: "{{ app_es_etc_discovery_zen_minimum_master_nodes }}", bootstrap.memory_lock: true, cloud.azure.storage.my_account: { account: "{{ backup_storage_name }}", diff --git a/ansible/roles/artifacts-download-azure/meta/main.yml b/ansible/roles/artifacts-download-azure/meta/main.yml new file mode 100644 index 0000000000..a124d4f7cb --- /dev/null +++ b/ansible/roles/artifacts-download-azure/meta/main.yml @@ -0,0 +1,2 @@ +dependencies: + - azure-cli diff --git a/ansible/roles/artifacts-download-azure/tasks/main.yml b/ansible/roles/artifacts-download-azure/tasks/main.yml new file mode 100644 index 0000000000..820039c25a --- /dev/null +++ b/ansible/roles/artifacts-download-azure/tasks/main.yml @@ -0,0 +1,8 @@ +--- +- name: Ensure azure blob storage container exists + command: az storage container exists --name {{ artifacts_container }} + +- name: Download from azure blob storage + command: az storage blob download -c {{ artifacts_container }} --name {{ artifact }} -f {{ artifact_path }} + async: 100 + poll: 10 diff --git a/ansible/roles/artifacts-upload-azure/meta/main.yml b/ansible/roles/artifacts-upload-azure/meta/main.yml index 23b18a800a..a124d4f7cb 100644 --- a/ansible/roles/artifacts-upload-azure/meta/main.yml +++ b/ansible/roles/artifacts-upload-azure/meta/main.yml @@ -1,2 +1,2 @@ dependencies: - - azure-cli \ No newline at end of file + - azure-cli diff --git a/ansible/roles/artifacts-upload-azure/tasks/main.yml b/ansible/roles/artifacts-upload-azure/tasks/main.yml index 62c424f87a..785dc1a455 100644 --- a/ansible/roles/artifacts-upload-azure/tasks/main.yml +++ b/ansible/roles/artifacts-upload-azure/tasks/main.yml @@ -1,16 +1,8 @@ --- - name: Ensure azure blob storage container exists command: az storage container create --name {{ artifacts_container }} - ignore_errors: true - environment: - AZURE_STORAGE_ACCOUNT: "{{ artifacts_storage_account }}" - AZURE_STORAGE_KEY: "{{ artifact_storage_key }}" - - name: Upload to azure blob storage - command: az storage blob upload-batch -d {{ artifacts_container }} -s {{ artifacts }} - environment: - AZURE_STORAGE_ACCOUNT: "{{ artifacts_storage_account }}" - AZURE_STORAGE_KEY: "{{ artifacts_storage_key }}" - async: 100 + command: az storage blob upload -c {{ artifacts_container }} --name {{ artifact }} -f {{ artifact_path }} + async: 3600 poll: 10 diff --git a/ansible/roles/azure-cli/tasks/main.yml b/ansible/roles/azure-cli/tasks/main.yml index 24c64bffc1..0da83e8fbd 100644 --- a/ansible/roles/azure-cli/tasks/main.yml +++ b/ansible/roles/azure-cli/tasks/main.yml @@ -6,4 +6,7 @@ shell: curl -L https://packages.microsoft.com/keys/microsoft.asc | apt-key add - - name: ensure azure-cli and apt-transport-https is installed - shell: apt update && apt install -y apt-transport-https azure-cli + apt: name={{ item }} state=present update_cache=yes cache_valid_time=3600 + with_items: + - apt-transport-https + - azure-cli diff --git a/ansible/roles/bootstrap_any/tasks/main.yml b/ansible/roles/bootstrap_any/tasks/main.yml index e7d5e92d1a..3dcfd77a53 100644 --- a/ansible/roles/bootstrap_any/tasks/main.yml +++ b/ansible/roles/bootstrap_any/tasks/main.yml @@ -1,20 +1,19 @@ -- include_vars: "{{inventory_dir}}/secrets.yml" - - name: Create group deployer group: name=deployer state=present - become: yes - name: Create user deployer - user: name=deployer comment="deployer" group=deployer groups=sudo shell=/bin/bash password="{{sudo_crypt_deployer}}" update_password=always - become: yes + user: name=deployer comment="deployer" group=deployer groups=sudo shell=/bin/bash + +- name: Giving access to sudo without password + lineinfile: + path: /etc/sudoers + line: 'deployer ALL=(ALL) NOPASSWD:ALL' + state: present - name: Add ssh public key deployer authorized_key: user=deployer key='{{ssh_public_key_deployer}}' - become: yes - - name: Create ulimit configuration template: src: limits.conf.j2 dest: "{{ ulimit_config_location }}" - become: yes diff --git a/ansible/roles/cassandra-backup/defaults/main.yml b/ansible/roles/cassandra-backup/defaults/main.yml new file mode 100644 index 0000000000..148bcf83b2 --- /dev/null +++ b/ansible/roles/cassandra-backup/defaults/main.yml @@ -0,0 +1,3 @@ +cassandra_root_dir: '/etc/cassandra' +data_dir: '/var/lib/cassandra/data' +cassandra_backup_azure_container_name: core-cassandra \ No newline at end of file diff --git a/ansible/roles/cassandra-backup/tasks/main.yml b/ansible/roles/cassandra-backup/tasks/main.yml index aef9c4e1c4..db4a3af231 100755 --- a/ansible/roles/cassandra-backup/tasks/main.yml +++ b/ansible/roles/cassandra-backup/tasks/main.yml @@ -14,7 +14,7 @@ - name: run the backup script become: yes - shell: python cassandra_backup.py "{{ cassandra_backup_gzip_file_name }}" -d "{{ data_dir }}" + shell: python cassandra_backup.py "{{ cassandra_backup_gzip_file_name }}" args: chdir: /data/cassandra/backup async: 7200 @@ -32,16 +32,16 @@ command: az storage container create --name {{ cassandra_backup_azure_container_name }} ignore_errors: true environment: - AZURE_STORAGE_ACCOUNT: "{{ cassandra_backup_azure_storage_account_name }}" - AZURE_STORAGE_KEY: "{{ cassandra_backup_azure_storage_access_key }}" + AZURE_STORAGE_ACCOUNT: "{{ backup_azure_storage_account_name }}" + AZURE_STORAGE_KEY: "{{ backup_azure_storage_access_key }}" - name: Upload to azure blob storage command: az storage blob upload --name "{{ cassandra_backup_gzip_file_name }}".tar.gz --file {{ cassandra_backup_gzip_file_path }} --container-name {{ cassandra_backup_azure_container_name }} environment: - AZURE_STORAGE_ACCOUNT: "{{ cassandra_backup_azure_storage_account_name }}" - AZURE_STORAGE_KEY: "{{ cassandra_backup_azure_storage_access_key }}" + AZURE_STORAGE_ACCOUNT: "{{ backup_azure_storage_account_name }}" + AZURE_STORAGE_KEY: "{{ backup_azure_storage_access_key }}" async: 3600 poll: 10 - name: clean up backup dir after upload - file: path="{{ cassandra_backup_dir }}" state=absent \ No newline at end of file + file: path="{{ cassandra_backup_dir }}" state=absent diff --git a/ansible/roles/cassandra-backup/templates/cassandra_backup.j2 b/ansible/roles/cassandra-backup/templates/cassandra_backup.j2 index 5c6da8ca16..2978d1f2d4 100644 --- a/ansible/roles/cassandra-backup/templates/cassandra_backup.j2 +++ b/ansible/roles/cassandra-backup/templates/cassandra_backup.j2 @@ -3,30 +3,45 @@ # Author: Rajesh Rajendran ''' -Create a snapshot and create tar ball in targetdirectory name +Create cassandra snapshot with specified name, +and create tar ball in targetdirectory name + +By default + +Cassandra data directory : /var/lib/cassandra/data +Snapshot name : cassandra_backup-YYYY-MM-DD +Backup name : cassandra_backup-YYYY-MM-DD.tar.gz usage: script snapshot_name -eg: ./cassandra_backup.py my_snapshot +eg: ./cassandra_backup.py + +for help ./cassandra_backup.py -h ''' -from os import path, walk, sep, system, getcwd, makedirs -from argparse import ArgumentParser +from os import walk, sep, system, getcwd, makedirs +from argparse import ArgumentParser from shutil import rmtree, ignore_patterns, copytree from re import match, compile from sys import exit from tempfile import mkdtemp +from time import strftime parser = ArgumentParser(description="Create a snapshot and create tar ball inside tardirectory") -parser.add_argument("-d","--datadirectory", metavar="datadir", default='/data/cassandra/data', help="path to create the tarball. Default /var/lib/cassadra/data") -parser.add_argument("snapshotname", help="name in which you want to take the snapshot") -parser.add_argument("-t","--tardirectory", metavar="tardir", default=getcwd(), help="path to create the tarball. Default {}".format(getcwd())) +parser.add_argument("-d", "--datadirectory", metavar="datadir", default='/var/lib/cassandra/data', + help="Path to cassadandra keyspaces. Default /var/lib/cassadra/data") +parser.add_argument("-s", "--snapshotname", metavar="snapshotname", + default="cassandra_backup-"+strftime("%Y-%m-%d"), + help="Name with which snapshot to be taken. Default {}".format("cassandra_backup-"+strftime("%Y-%m-%d"))) +parser.add_argument("-t", "--tardirectory", metavar="tardir", + default=getcwd(), help="Path to create the tarball. Default {}".format(getcwd())) args = parser.parse_args() # Create temporary directory to copy data -tmpdir=mkdtemp() +tmpdir = mkdtemp() makedirs(tmpdir+sep+"cassandra_backup") + def copy(): ''' Copying the data sanpshots to the target directory @@ -36,7 +51,7 @@ def copy(): try: for root, dirs, files in walk(args.datadirectory): - root_target_dir=tmpdir+sep+"cassandra_backup"+sep+sep.join(root.split(sep)[root_levels+1:-2]) + root_target_dir = tmpdir+sep+"cassandra_backup"+sep+sep.join(root.split(sep)[root_levels+1:-2]) if match(ignore_list, root_target_dir): continue if root.split(sep)[-1] == args.snapshotname: @@ -44,6 +59,7 @@ def copy(): except Exception as e: print(e) + # Creating schema command = "cqlsh -e 'DESC SCHEMA' > {}/cassandra_backup/db_schema.cql".format(tmpdir) rc = system(command) @@ -65,4 +81,4 @@ if rc == 0: system(command) # Cleaning up backup directory rmtree(tmpdir) - print("Cassandra backup completed and stored in {}/{}.tar.gz".format(args.tardirectory,args.snapshotname)) \ No newline at end of file + print("Cassandra backup completed and stored in {}/{}.tar.gz".format(args.tardirectory, args.snapshotname)) diff --git a/ansible/roles/cassandra-deploy/defaults/main.yml b/ansible/roles/cassandra-deploy/defaults/main.yml index 42aa229991..c38c2c9d3a 100644 --- a/ansible/roles/cassandra-deploy/defaults/main.yml +++ b/ansible/roles/cassandra-deploy/defaults/main.yml @@ -1,2 +1,2 @@ -cassandra_jar_path: ../../cassandra-migration/target -cassandra_deploy_path: /home/deployer \ No newline at end of file +cassandra_jar_path: ../ +cassandra_deploy_path: /home/deployer diff --git a/ansible/roles/cassandra/tasks/main.yml b/ansible/roles/cassandra/tasks/main.yml index 0ca53a2177..286405a236 100755 --- a/ansible/roles/cassandra/tasks/main.yml +++ b/ansible/roles/cassandra/tasks/main.yml @@ -5,6 +5,16 @@ tags: - provision +- name: getting the server hostname + command: hostname + register: hostnameOfCql + +- name: add entry in hosts file + become: yes + lineinfile: + line: "127.0.0.1 {{hostnameOfCql.stdout}}" + path: /etc/hosts + - name: debian | Adding Cassandra Debian Repo Key apt_key: url: "{{ cassandra_repo_key }}" @@ -37,3 +47,15 @@ group: "root" mode: 0644 notify: "restart cassandra" + +- name: wait for cassandra to gossip with seed nodes + pause: + seconds: 10 + +- name: Restart Cassandra now + service: + name: cassandra + state: restarted + +- name: wait for cassandra to be up and running + wait_for: host={{inventory_hostname}} port=9042 delay=30 diff --git a/ansible/roles/changekey/defaults/main.yml b/ansible/roles/changekey/defaults/main.yml new file mode 100644 index 0000000000..1529919bbf --- /dev/null +++ b/ansible/roles/changekey/defaults/main.yml @@ -0,0 +1,5 @@ +bootstrap_user_public_key: "" +bootstrap_user: +ssh_user: +ssh_private_file: +ssh_public_key: diff --git a/ansible/roles/changekey/tasks/main.yml b/ansible/roles/changekey/tasks/main.yml new file mode 100644 index 0000000000..92253778df --- /dev/null +++ b/ansible/roles/changekey/tasks/main.yml @@ -0,0 +1,24 @@ +- name: Create group "{{bootstrap_user}}" + group: name="{{bootstrap_user}}" state=present + +- name: Create user "{{bootstrap_user}}" + user: + name: "{{bootstrap_user}}" + comment: "{{bootstrap_user}}" + group: "{{bootstrap_user}}" + groups: sudo + shell: /bin/bash + +- name: Giving access to sudo without password + lineinfile: + path: /etc/sudoers + line: '{{bootstrap_user}} ALL=(ALL) NOPASSWD:ALL' + state: present + +- name: Remove existing authorized_keys from the "{{bootstrap_user}}" file and add a single key to its authorized_keys + become: yes + command: bash -lc "echo \"{{bootstrap_user_public_key}}\" > /home/{{bootstrap_user}}/.ssh/authorized_keys" + +- name: Remove existing authorized_keys from the "{{ssh_user}}" file and add a single key to its authorized_keys + become: yes + command: bash -lc "echo \"{{ssh_public_key}}\" > /home/{{ssh_user}}/.ssh/authorized_keys" diff --git a/ansible/roles/curl_es_command/tasks/main.yml b/ansible/roles/curl_es_command/tasks/main.yml index 5ca8800891..f539b182c5 100644 --- a/ansible/roles/curl_es_command/tasks/main.yml +++ b/ansible/roles/curl_es_command/tasks/main.yml @@ -9,3 +9,4 @@ args: chdir: /tmp/ run_once: true + no_log: false diff --git a/ansible/roles/elasticsearch/defaults/main.yml b/ansible/roles/elasticsearch/defaults/main.yml index 59f01afd19..589464a655 100755 --- a/ansible/roles/elasticsearch/defaults/main.yml +++ b/ansible/roles/elasticsearch/defaults/main.yml @@ -29,6 +29,7 @@ es_xpack_features: ["alerting","monitoring","graph","security"] #They do not effect the current configuration es_api_host: "localhost" es_api_port: 9200 +es_heap_size: 1500m # Since ansible 2.2 the following variables need to be defined # to allow the role to be conditionally played with a when condition. diff --git a/ansible/roles/elasticsearch/tasks/elasticsearch-Debian.yml b/ansible/roles/elasticsearch/tasks/elasticsearch-Debian.yml index 83748b04e0..7f565ca63d 100755 --- a/ansible/roles/elasticsearch/tasks/elasticsearch-Debian.yml +++ b/ansible/roles/elasticsearch/tasks/elasticsearch-Debian.yml @@ -6,7 +6,7 @@ when: es_allow_downgrades - name: Debian - Install apt-transport-https to support https APT downloads - apt: name=apt-transport-https state=present + apt: name=apt-transport-https state=present update_cache=yes when: es_use_repository - name: Debian - Add Elasticsearch repository key @@ -14,7 +14,7 @@ when: es_use_repository and es_apt_key - name: Debian - Add elasticsearch repository - apt_repository: repo={{ item.repo }} state={{ item.state}} + apt_repository: repo={{ item.repo }} state={{ item.state}} with_items: - { repo: "{{ es_apt_url_old }}", state: "absent" } - { repo: "{{ es_apt_url }}", state: "present" } @@ -25,7 +25,7 @@ when: es_version_lock - name: Debian - Ensure elasticsearch is installed - apt: name=elasticsearch{% if es_version is defined and es_version != "" %}={{ es_version }}{% endif %} state=present force={{force_install}} allow_unauthenticated={{ 'no' if es_apt_key else 'yes' }} cache_valid_time=86400 + apt: name=elasticsearch{% if es_version is defined and es_version != "" %}={{ es_version }}{% endif %} state=present force={{force_install}} allow_unauthenticated={{ 'no' if es_apt_key else 'yes' }} update_cache=yes when: es_use_repository register: debian_elasticsearch_install_from_repo diff --git a/ansible/roles/jenkins/defaults/main.yml b/ansible/roles/jenkins/defaults/main.yml index 55d708ba8a..750e2624da 100644 --- a/ansible/roles/jenkins/defaults/main.yml +++ b/ansible/roles/jenkins/defaults/main.yml @@ -1,7 +1,7 @@ --- # Optional method of pinning a specific version of Jenkins and/or overriding the # default Jenkins packaging URL. -# jenkins_version: "1.644" +jenkins_version: "2.154" # jenkins_pkg_url: "https://www.example.com" jenkins_connection_delay: 5 @@ -13,6 +13,11 @@ jenkins_jar_location: /opt/jenkins-cli.jar jenkins_plugins: [] jenkins_url_prefix: "" jenkins_java_options: "-Djenkins.install.runSetupWizard=false" +jenkins_plugins_install_dependencies: true +jenkins_plugins_state: present +jenkins_plugin_updates_expiration: 86400 +jenkins_plugin_timeout: 30 + jenkins_admin_username: admin jenkins_admin_password: admin @@ -22,4 +27,328 @@ jenkins_init_changes: - option: "JENKINS_ARGS" value: "--prefix={{ jenkins_url_prefix }}" - option: "{{ jenkins_java_options_env_var }}" - value: "{{ jenkins_java_options }}" \ No newline at end of file + value: "{{ jenkins_java_options }}" +jenkins_plugins: + ansicolor: + version: "0.5.2" + blueocean-pipeline-editor: + version: "0.2.0" + blueocean-personalization: + version: "1.1.4" + nodejs: + version: "1.2.2" + blueocean-i18n: + version: "1.1.4" + sse-gateway: + version: "1.15" + jquery: + version: "1.11.2-0" + blueocean-events: + version: "1.1.4" + role-strategy: + version: "2.5.1" + pipeline-milestone-step: + version: "1.3.1" + durable-task: + version: "1.28" + token-macro: + version: "2.5" + pipeline-stage-tags-metadata: + version: "1.3.4" + rebuild: + version: "1.29" + pipeline-input-step: + version: "2.9" + branch-api: + version: "2.1.1" + antisamy-markup-formatter: + version: "1.5" + pubsub-light: + version: "1.12" + conditional-buildstep: + version: "1.3.6" + ws-cleanup: + version: "0.36" + greenballs: + version: "1.15" + workflow-aggregator: + version: "2.6" + command-launcher: + version: "1.2" + workflow-durable-task-step: + version: "2.27" + favorite: + version: "2.3.2" + workflow-cps-global-lib: + version: "2.12" + email-ext: + version: "2.63" + cloudbees-folder: + version: "6.7" + blueocean-web: + version: "1.9.0" + pipeline-rest-api: + version: "2.10" + workflow-step-api: + version: "2.17" + plain-credentials: + version: "1.4" + trilead-api: + version: "1.0.1" + uno-choice: + version: "2.1" + scm-api: + version: "2.3.0" + credentials: + version: "2.1.18" + blueocean-pipeline-scm-api: + version: "1.9.0" + git-server: + version: "1.7" + github: + version: "1.29.3" + jacoco: + version: "3.0.4" + github-branch-source: + version: "2.4.1" + authentication-tokens: + version: "1.3" + display-url-api: + version: "2.3.0" + external-monitor-job: + version: "1.7" + docker-workflow: + version: "1.17" + junit: + version: "1.26.1" + resource-disposer: + version: "0.12" + script-security: + version: "1.49" + jobgenerator: + version: "1.22" + pipeline-model-declarative-agent: + version: "1.1.1" + pipeline-utility-steps: + version: "2.2.0" + javadoc: + version: "1.4" + pipeline-model-api: + version: "1.3.4" + thinBackup: + version: "1.9" + lockable-resources: + version: "2.3" + ssh-slaves: + version: "1.29.1" + handlebars: + version: "1.1.1" + jdk-tool: + version: "1.1" + pam-auth: + version: "1.4" + subversion: + version: "2.12.1" + blueocean-core-js: + version: "1.9.0" + maven-plugin: + version: "3.1.2" + github-api: + version: "1.95" + job-dsl: + version: "1.71" + code-coverage-api: + version: "1.0.5" + blueocean-pipeline-api-impl: + version: "1.9.0" + jackson2-api: + version: "2.9.7.1" + pipeline-build-step: + version: "2.7" + blueocean-rest: + version: "1.9.0" + s3: + version: "0.11.2" + backup: + version: "1.6.1" + ldap: + version: "1.20" + workflow-scm-step: + version: "2.7" + multiple-scms: + version: "0.6" + matrix-auth: + version: "2.3" + timestamper: + version: "1.8.10" + ssh-agent: + version: "1.17" + pipeline-model-extensions: + version: "1.3.4" + build-user-vars-plugin: + version: "1.5" + matrix-project: + version: "1.13" + pipeline-stage-step: + version: "2.3" + blueocean-jwt: + version: "1.9.0" + pipeline-graph-analysis: + version: "1.9" + workflow-support: + version: "2.24" + run-condition: + version: "1.2" + icon-shim: + version: "2.0.3" + git: + version: "3.9.1" + workflow-basic-steps: + version: "2.13" + gradle: + version: "1.29" + jenkins-design-language: + version: "1.9.0" + ant: + version: "1.9" + pipeline-stage-view: + version: "2.10" + git-client: + version: "2.7.4" + workflow-multibranch: + version: "2.20" + parameterized-trigger: + version: "2.35.2" + hudson-wsclean-plugin: + version: "1.0.5" + audit-trail: + version: "2.3" + blueocean-rest-impl: + version: "1.9.0" + pipeline-model-definition: + version: "1.3.4" + generic-webhook-trigger: + version: "1.50" + workflow-api: + version: "2.33" + ssh-credentials: + version: "1.14" + bouncycastle-api: + version: "2.17" + workflow-job: + version: "2.31" + credentials-binding: + version: "1.17" + docker-commons: + version: "1.13" + momentjs: + version: "1.1.1" + apache-httpcomponents-client-4-api: + version: "4.5.5-3.0" + blueocean-commons: + version: "1.9.0" + envinject-api: + version: "1.5" + cobertura: + version: "1.13" + aws-java-sdk: + version: "1.11.457" + ace-editor: + version: "1.1" + jsch: + version: "0.1.54.2" + config-file-provider: + version: "3.4.1" + mailer: + version: "1.22" + mapdb-api: + version: "1.0.9.0" + variant: + version: "1.1" + jquery-detached: + version: "1.2.1" + structs: + version: "1.17" + windows-slaves: + version: "1.3.1" + pipeline-github-lib: + version: "1.0" + jobConfigHistory: + version: "2.19" + build-timeout: + version: "1.19" + workflow-cps: + version: "2.61" + pipeline-maven: + version: "3.6.6" + build-pipeline-plugin: + version: "1.5.8" + copyartifact: + version: "1.41" + slack: + version: "2.3" + htmlpublisher: + version: "1.14" + metrics: + version: "3.1.2.10" + blueocean-dashboard: + version: "1.1.4" + blueocean-display-url: + version: "2.0" + blueocean-github-pipeline: + version: "1.1.4" + swarm: + version: "3.4" + blueocean-config: + version: "1.1.4" + delivery-pipeline-plugin: + version: "1.0.3" + blueocean-git-pipeline: + version: "1.1.4" + blueocean-autofavorite: + version: "1.0.0" + blueocean: + version: "1.1.4" + # - ant + # - antisamy-markup-formatter + # - artifact-promotion + # - cloudbees-credentials + # - cobertura + # - copyartifact + # - credentials + # - cvs + # - delivery-pipeline-plugin + # - discard-old-build + # - envfile + # - external-monitor-job + # - git + # - git-client + # - gradle + # - greenballs + # - jacoco + # - javadoc + # - jquery + # - junit + # - ldap + # - mailer + # - mapdb-api + # - matrix-auth + # - matrix-project + # - maven-plugin + # - next-build-number + # - pam-auth + # - parameterized-trigger + # - scm-api + # - script-security + # - slack + # - ssh + # - ssh-credentials + # - ssh-slaves + # - subversion + # - token-macro + # - thinBackup + # - translation + # - windows-slaves + # - s3 + # - publish-over-ssh + # - timestamper \ No newline at end of file diff --git a/ansible/roles/jenkins/meta/main.yml b/ansible/roles/jenkins/meta/main.yml new file mode 100644 index 0000000000..ab47bd76ed --- /dev/null +++ b/ansible/roles/jenkins/meta/main.yml @@ -0,0 +1,3 @@ +--- +dependencies: + - java8 \ No newline at end of file diff --git a/ansible/roles/jenkins/tasks/plugins.yml b/ansible/roles/jenkins/tasks/plugins.yml index 9c0788d10b..98f2469a6f 100644 --- a/ansible/roles/jenkins/tasks/plugins.yml +++ b/ansible/roles/jenkins/tasks/plugins.yml @@ -1,6 +1,20 @@ --- # Jenkins doesn't allow updates via CLI, though that is required before plugins # can be installed via CLI. See: https://gist.github.com/rowan-m/1026918 +# jenkins_plugin module doesn't support password files. +- name: Get Jenkins admin password from file. + slurp: + src: "{{ jenkins_admin_password_file }}" + register: adminpasswordfile + no_log: true + when: jenkins_admin_password_file != "" + tags: ['skip_ansible_lint'] + +- name: Set Jenkins admin password fact. + set_fact: + jenkins_admin_password: "{{ adminpasswordfile['stdout'] | default(jenkins_admin_password) }}" + no_log: true + - name: Create Jenkins updates folder. file: path: "{{ jenkins_home }}/updates" @@ -28,24 +42,44 @@ path: "{{ jenkins_admin_password_file }}" register: adminpasswordfile +# - name: Install Jenkins plugins using password. +# command: > +# java -jar {{ jenkins_jar_location }} -s http://{{ jenkins_hostname }}:{{ jenkins_http_port }}{{ jenkins_url_prefix | default('') }}/ +# install-plugin {{ item }} +# --username {{ jenkins_admin_username }} +# --password {{ jenkins_admin_password }} +# creates="{{ jenkins_home }}/plugins/{{ item }}.jpi" +# with_items: "{{ jenkins_plugins }}" +# when: jenkins_admin_password != "" +# notify: restart jenkins + +# - name: Install Jenkins plugins using password-file. +# command: > +# java -jar {{ jenkins_jar_location }} -s http://{{ jenkins_hostname }}:{{ jenkins_http_port }}{{ jenkins_url_prefix | default('') }}/ +# install-plugin {{ item }} +# --username {{ jenkins_admin_username }} +# --password-file {{ jenkins_admin_password_file }} +# creates={{ jenkins_home }}/plugins/{{ item }}.jpi +# with_items: "{{ jenkins_plugins }}" +# when: adminpasswordfile.stat.exists == True +# notify: restart jenkins + - name: Install Jenkins plugins using password. - command: > - java -jar {{ jenkins_jar_location }} -s http://{{ jenkins_hostname }}:{{ jenkins_http_port }}{{ jenkins_url_prefix | default('') }}/ - install-plugin {{ item }} - --username {{ jenkins_admin_username }} - --password {{ jenkins_admin_password }} - creates="{{ jenkins_home }}/plugins/{{ item }}.jpi" - with_items: "{{ jenkins_plugins }}" + jenkins_plugin: + name: "{{ item.key }}" + version: "{{ item.value['version'] }}" + jenkins_home: "{{ jenkins_home }}" + url_username: "{{ jenkins_admin_username }}" + url_password: "{{ jenkins_admin_password }}" + state: "{{ jenkins_plugins_state }}" + timeout: "{{ jenkins_plugin_timeout }}" + updates_expiration: "{{ jenkins_plugin_updates_expiration }}" + url: "http://{{ jenkins_hostname }}:{{ jenkins_http_port }}{{ jenkins_url_prefix }}" + with_dependencies: "{{ jenkins_plugins_install_dependencies }}" + when: > + 'version' in item.value + with_dict: "{{ jenkins_plugins }}" + #with_items: "{{ jenkins_plugins }}" when: jenkins_admin_password != "" notify: restart jenkins - -- name: Install Jenkins plugins using password-file. - command: > - java -jar {{ jenkins_jar_location }} -s http://{{ jenkins_hostname }}:{{ jenkins_http_port }}{{ jenkins_url_prefix | default('') }}/ - install-plugin {{ item }} - --username {{ jenkins_admin_username }} - --password-file {{ jenkins_admin_password_file }} - creates={{ jenkins_home }}/plugins/{{ item }}.jpi - with_items: "{{ jenkins_plugins }}" - when: adminpasswordfile.stat.exists == True - notify: restart jenkins + tags: ['skip_ansible_lint'] \ No newline at end of file diff --git a/ansible/roles/jenkins/templates/basic-security.groovy b/ansible/roles/jenkins/templates/basic-security.groovy index 847aa5a7c9..eddd0fdf07 100755 --- a/ansible/roles/jenkins/templates/basic-security.groovy +++ b/ansible/roles/jenkins/templates/basic-security.groovy @@ -3,17 +3,26 @@ import hudson.security.* import jenkins.model.* def instance = Jenkins.getInstance() +def hudsonRealm = new HudsonPrivateSecurityRealm(false) +def users = hudsonRealm.getAllUsers() +users_s = users.collect { it.toString() } -println "--> Checking if security has been set already" +// Create the admin user account if it doesn't already exist. +if ("{{ jenkins_admin_username }}" in users_s) { + println "Admin user already exists - updating password" -if (!instance.isUseSecurity()) { - println "--> creating local user 'admin'" + def user = hudson.model.User.get('{{ jenkins_admin_username }}'); + def password = hudson.security.HudsonPrivateSecurityRealm.Details.fromPlainPassword('{{ jenkins_admin_password }}') + user.addProperty(password) + user.save() +} +else { + println "--> creating local admin user" - def hudsonRealm = new HudsonPrivateSecurityRealm(false) hudsonRealm.createAccount('{{ jenkins_admin_username }}', '{{ jenkins_admin_password }}') instance.setSecurityRealm(hudsonRealm) def strategy = new FullControlOnceLoggedInAuthorizationStrategy() instance.setAuthorizationStrategy(strategy) instance.save() -} +} \ No newline at end of file diff --git a/ansible/roles/keycloak/defaults/main.yml b/ansible/roles/keycloak/defaults/main.yml index 9325607e66..250308ff76 100644 --- a/ansible/roles/keycloak/defaults/main.yml +++ b/ansible/roles/keycloak/defaults/main.yml @@ -100,9 +100,16 @@ keycloak_custom_ds: ' ' keycloak_management_user: "admin" +keycloak_api_management_username: "admin" keycloak_management_password: "{{keycloak_password}}" theme: "sunrise.tar.gz" dest_theme: "/opt/keycloak/themes/" theme_file: sunrise keycloak_home: /opt/keycloak +# Sms Defaults +sunbird_msg_91_auth: +sunbird_msg_91_sender: +sunbird_msg_91_country_ID: +sunbird_msg_91_route: +sunbird_msg_91_method_type: diff --git a/ansible/roles/keycloak/tasks/deploy.yml b/ansible/roles/keycloak/tasks/deploy.yml old mode 100644 new mode 100755 index 998ba8b0f2..49e259cfd7 --- a/ansible/roles/keycloak/tasks/deploy.yml +++ b/ansible/roles/keycloak/tasks/deploy.yml @@ -1,41 +1,56 @@ +- stat: + path: /etc/init.d/keycloak + register: keycloak_service + - name: status service become: yes command: /etc/init.d/keycloak status register: keycloak poll: 5 async: 10 + when: keycloak_service.stat.islnk is defined - name: stop service become: yes - command: /etc/init.d/keycloak stop && Pkill keycloak + command: /etc/init.d/keycloak stop && pkill keycloak poll: 5 async: 10 ignore_errors: yes + when: + - keycloak_service.stat.islnk is defined - name: remove keycloak become: yes - file: path="{{keycloak_home}}" state=absent - + file: path="{{keycloak_home}}" state=absent owner={{wildfly_user}} group={{wildfly_group}} force=yes - name: change build script permissions become: yes file: path=/opt owner={{wildfly_user}} group={{wildfly_group}} mode=0755 recurse=yes -- name: get the keycloak tarball - get_url: url=https://downloads.jboss.org/keycloak/3.2.0.Final/keycloak-3.2.0.Final.tar.gz dest=/opt/keycloak-3.2.0.Final.tar.gz force=no owner={{wildfly_user}} group={{wildfly_group}} +- name: Paste keycloak package on server + copy: src="{{keycloak_build_src}}/{{keycloak_ver}}.tar.gz" dest="/opt/" force=no owner={{wildfly_user}} group={{wildfly_group}} - name: extarct the folder - unarchive: src=/opt/keycloak-3.2.0.Final.tar.gz dest=/opt/ copy=no owner={{wildfly_user}} group={{wildfly_group}} + unarchive: src="/opt/{{keycloak_ver}}.tar.gz" dest=/opt/ copy=no owner={{wildfly_user}} group={{wildfly_group}} - name: move the folder name - command: mv keycloak-3.2.0.Final keycloak + command: mv {{keycloak_ver}} keycloak args: chdir: /opt -- name: remove the keycloak-3.2.0.Final +- name: remove the {{keycloak_ver}} + become: yes + file: path=/opt/{{keycloak_ver}} state=absent + +- name: remove the {{keycloak_ver}} become: yes - file: path=/opt/keycloak-3.2.0.Final state=absent + file: path=/opt/{{keycloak_ver}}.tar.gz state=absent +- name: Create configuration directory + file: + path: "{{keycloak_home}}/standalone/configuration" + state: directory + mode: 0755 - name: copy the custom theme copy: src={{keycloak_theme_path}} dest="{{keycloak_home}}/themes/" owner={{wildfly_user}} group={{wildfly_group}} @@ -43,41 +58,40 @@ - name: XML file template: - src: standalone-ha.xml + src: "{{keycloak_build_src}}/ansible-templates/standalone-ha.xml" dest: "{{keycloak_home}}/standalone/configuration/standalone-ha.xml" owner: "{{ wildfly_user }}" group: "{{ wildfly_group }}" mode: 0750 -- name: Create driver directory +- name: Create driver directory postgresql + file: + path: "{{keycloak_home}}/modules/system/layers/keycloak/org/postgresql/main" + state: directory + mode: 0755 + +- name: Create driver directory {{keycloak_home}}/modules/system/layers/keycloak/org/postgresql/main file: path: "{{keycloak_home}}/modules/system/layers/keycloak/org/postgresql/main" owner: "{{ wildfly_user }}" group: "{{ wildfly_group }}" - mode: 750 + mode: 0755 state: directory when: keycloak_ds_driver_url and keycloak_ds_driver_name and keycloak_ds_driver_module and keycloak_custom_driver - -- name: Download driver - get_url: - url: https://jdbc.postgresql.org/download/postgresql-9.4.1212.jar - dest: "{{keycloak_home}}/modules/system/layers/keycloak/org/postgresql/main" - owner: "{{ wildfly_user }}" - group: "{{ wildfly_group }}" - mode: 0750 +- name: Deploy postgresql driver + copy: src="{{keycloak_build_src}}/{{keycloak_postgresql}}" dest="{{keycloak_home}}/modules/system/layers/keycloak/org/postgresql/main/" owner={{wildfly_user}} group={{wildfly_group}} mode=0755 when: keycloak_ds_driver_url and keycloak_ds_driver_name and keycloak_ds_driver_module and keycloak_custom_driver - - name: Copy module.xml template: - src: module.xml.j2 + src: "{{keycloak_build_src}}/ansible-templates/module.xml.j2" dest: "{{keycloak_home}}/modules/system/layers/keycloak/org/postgresql/main/module.xml" owner: "{{ wildfly_user }}" group: "{{ wildfly_group }}" @@ -94,17 +108,90 @@ keycloak_management_password is defined ignore_errors: yes +- name: Create providers directory + file: + path: "{{wildfly_dir}}/providers" + owner: "{{ wildfly_user }}" + group: "{{ wildfly_group }}" + mode: 0755 + state: directory + +- name: Deploy SMS plugin + copy: src="{{keycloak_build_src}}/{{keycloak_sms_provider_build}}" dest="{{wildfly_dir}}/providers/" owner={{wildfly_user}} group={{wildfly_group}} mode=0755 + +- name: Create sms-provider directory to store configuration + file: + path: "{{wildfly_dir}}/bin/sms-provider" + owner: "{{ wildfly_user }}" + group: "{{ wildfly_group }}" + mode: 0755 + state: directory + +- name: Create configuration file + template: + src: "{{keycloak_build_src}}/ansible-templates/Msg91Creds.json.j2" + dest: "{{wildfly_dir}}/bin/sms-provider/Msg91Creds.json" + owner: "{{wildfly_user}}" + group: "{{wildfly_group}}" + mode: 0755 + +- name: Create theme directory + file: + path: "{{keycloak_ekstep_sunbird_login_theme_dest}}" + state: directory + owner: "{{wildfly_user}}" + group: "{{wildfly_group}}" + mode: 0755 + recurse: yes + +- name: Deploy sms-provider templates + copy: src="{{keycloak_build_src}}/{{keycloak_sms_provider_templates_src}}" dest={{keycloak_sms_provider_templates_dest}} owner={{wildfly_user}} group={{wildfly_group}} + +- name: extarct Deploy sms-provider templates + unarchive: src="{{keycloak_sms_provider_templates_dest}}/templates.tar.gz" dest={{keycloak_sms_provider_templates_dest}} copy=no owner={{wildfly_user}} group={{wildfly_group}} mode=0755 + +- name: remove templates.tar.gz + become: yes + file: path="{{keycloak_sms_provider_templates_dest}}/templates.tar.gz" state=absent + +- name: Deploy ekstep login themes + copy: src="{{keycloak_build_src}}/{{keycloak_ekstep_sunbird_login_theme_file}}" dest="{{keycloak_ekstep_sunbird_login_theme_dest}}" owner={{wildfly_user}} group={{wildfly_group}} + +- name: Ekstract the folder + unarchive: src="{{keycloak_ekstep_sunbird_login_theme_dest}}/{{keycloak_ekstep_sunbird_login_theme_file}}" dest="{{keycloak_ekstep_sunbird_login_theme_dest}}/" copy=no owner={{wildfly_user}} group={{wildfly_group}} + +- name: remove email folder + become: yes + file: path="{{keycloak_home}}/themes/base/email" state=absent owner={{wildfly_user}} group={{wildfly_group}} force=yes + +- name: Create email theme directory + file: + path: "{{wildfly_dir}}/themes/base/email" + state: directory + owner: "{{wildfly_user}}" + group: "{{wildfly_group}}" + mode: 0755 + recurse: yes + +- name: Deploy ekstep Email themes + copy: src="{{keycloak_build_src}}/email.tar.gz" dest="{{wildfly_dir}}/themes/base/email" owner={{wildfly_user}} group={{wildfly_group}} + +- name: Ekstract the folder + unarchive: src="{{wildfly_dir}}/themes/base/email/email.tar.gz" dest="{{wildfly_dir}}/themes/base/email/" copy=no owner={{wildfly_user}} group={{wildfly_group}} + - name: status service become: yes command: /etc/init.d/keycloak status register: keycloak_status poll: 5 async: 10 + when: keycloak_service.stat.islnk is defined - name: start service become: yes command: /etc/init.d/keycloak start - when: "keycloak_status.stdout.find('running') == -1" poll: 5 async: 5 ignore_errors: yes + when: + - keycloak_service.stat.islnk is defined diff --git a/ansible/roles/keycloak/tasks/keycloak_bootstrap.yml b/ansible/roles/keycloak/tasks/keycloak_bootstrap.yml index 27ea05bc68..af76e2416d 100644 --- a/ansible/roles/keycloak/tasks/keycloak_bootstrap.yml +++ b/ansible/roles/keycloak/tasks/keycloak_bootstrap.yml @@ -1,10 +1,22 @@ - name: Waiting Until Keycloak is fully functional wait_for: + host: "{{ inventory_hostname }}" port: 8080 delay: 5 +- name: Install dependencies for keycloak + apt: + name: "{{item}}" + update_cache: yes + with_items: + - python-pip + - python-setuptools + +- name: Copying python libraries + copy: src={{ role_path }}/files/python-keycloak-0.12.0 dest=/tmp/ + - name: Initialize python library to run keycloak bootstrap script - shell: cd {{ role_path }}/files/python-keycloak-0.12.0 && python setup.py install + shell: cd /tmp/python-keycloak-0.12.0 && python setup.py install - name: Save keycalok vars to json template: src="keycloak-bootstrap.conf.j2" dest="/tmp/keycloak-bootstrap.conf.json" mode="0644" @@ -17,10 +29,13 @@ - name: Pausing for 100 seconds sometime for keycloak to run completely pause: - seconds: 100 + seconds: 10 + +- name: Copy the keycloak bootstrap script + copy: src={{ role_path }}/files/python-keycloak-0.12.0/keycloak dest=/tmp - name: Run the keycloak bootstrap script - shell: cd {{ role_path }}/files/python-keycloak-0.12.0/keycloak/ && python keycloak_main.py /tmp/keycloak-bootstrap.conf.json + shell: cd /tmp/keycloak/ && python keycloak_main.py /tmp/keycloak-bootstrap.conf.json register: out until: '"404" not in out.stderr' retries: 2 diff --git a/ansible/roles/keycloak/templates/Msg91Creds.json.j2 b/ansible/roles/keycloak/templates/Msg91Creds.json.j2 index d584b8be72..1ce6e818d4 100644 --- a/ansible/roles/keycloak/templates/Msg91Creds.json.j2 +++ b/ansible/roles/keycloak/templates/Msg91Creds.json.j2 @@ -1,7 +1,7 @@ { - "auth_key": "{{vault_auth_key}}", - "sender": "{{vault_sender}}", - "country": "{{vault_country}}", - "route": "{{vault_route}}", - "sms_method_type": "{{vault_sms_method_type}}" + "auth_key": "{{sunbird_msg_91_auth}}", + "sender": "{{sunbird_msg_91_sender}}", + "country": "{{sunbird_msg_91_country_ID}}", + "route": "{{sunbird_msg_91_route}}", + "sms_method_type": "{{sunbird_msg_91_method_type}}" } diff --git a/ansible/roles/kong-api/defaults/main.yml b/ansible/roles/kong-api/defaults/main.yml index 49c03e682c..1f0383d3b3 100644 --- a/ansible/roles/kong-api/defaults/main.yml +++ b/ansible/roles/kong-api/defaults/main.yml @@ -30,6 +30,7 @@ medium_request_size_limit: 10 large_request_size_limit: 100 # Default service prefixes +private_content_prefix: /private/content content_service_prefix: /content course_service_prefix: /course user_service_prefix: /user @@ -51,10 +52,12 @@ config_service_prefix: /config textbook_service_prefix: /textbook lock_service_prefix: /lock otp_service_prefix: /otp +sso_service_prefix: /sso # Service URLs content_service_url: "http://content-service:5000" learning_service_url: "http://learner-service:9000" +vm_learning_service_url: "http://{{learningservice_ip}}:8080/learning-service" telemetry_service_url: "http://telemetry-service:9001" player_service_url: "http://player_player:3000" echo_service_url: "http://api-manager_echo:9595" @@ -89,6 +92,23 @@ premium_consumer_rate_limits: # - {name: 'rate-limiting', config.hour: "{{ medium_rate_limit_per_hour }}"} # - {name: 'request-size-limiting', config.allowed_payload_size: "{{ medium_request_size_limit }}" } kong_apis: + + - name: PrivateContentAPIs + request_path: "{{ private_content_prefix }}/v3" + upstream_url: "{{ vm_learning_service_url }}/content/v3" + strip_request_path: true + plugins: + - name: jwt + - name: cors + - "{{ statsd_pulgin }}" + - name: acl + config.whitelist: privateContentMgmt + - name: rate-limiting + config.policy: local + config.hour: "{{ medium_rate_limit_per_hour }}" + config.limit_by: credential + - name: request-size-limiting + config.allowed_payload_size: "{{ small_request_size_limit }}" - name: createContent request_path: "{{ content_service_prefix }}/v1/create" upstream_url: "{{ content_service_url }}/v1/content/create" @@ -1181,6 +1201,22 @@ kong_apis: config.limit_by: credential - name: request-size-limiting config.allowed_payload_size: "{{ small_request_size_limit }}" + - name: getCourseProgressDashboardV2 + request_path: "{{ dashboard_service_prefix }}/v2/progress/course" + upstream_url: "{{ learning_service_url }}/v2/dashboard/progress/course" + strip_request_path: true + plugins: + - name: jwt + - name: cors + - "{{ statsd_pulgin }}" + - name: acl + config.whitelist: courseUser + - name: rate-limiting + config.policy: local + config.hour: "{{ medium_rate_limit_per_hour }}" + config.limit_by: credential + - name: request-size-limiting + config.allowed_payload_size: "{{ small_request_size_limit }}" - name: getCourseConsumptionDashboard request_path: "{{ dashboard_service_prefix }}/v1/consumption/course" upstream_url: "{{ learning_service_url }}/v1/dashboard/consumption/course" @@ -2493,7 +2529,7 @@ kong_apis: config.allowed_payload_size: "{{ small_request_size_limit }}" - name: searchChannel request_path: "{{ channel_service_prefix }}/v1/search" - upstream_url: "{{ content_service_url }}v1/channel/search" + upstream_url: "{{ content_service_url }}/v1/channel/search" strip_request_path: true plugins: - name: jwt @@ -3351,6 +3387,22 @@ kong_apis: config.limit_by: credential - name: request-size-limiting config.allowed_payload_size: "{{ small_request_size_limit }}" + - name: createSession + request_path: "{{ sso_service_prefix }}/v1/create/session" + upstream_url: "{{ player_service_url }}/v1/sso/create/session" + strip_request_path: true + plugins: + - name: jwt + - name: cors + - "{{ statsd_pulgin }}" + - name: acl + config.whitelist: publicUser + - name: rate-limiting + config.policy: local + config.hour: "{{ medium_rate_limit_per_hour }}" + config.limit_by: credential + - name: request-size-limiting + config.allowed_payload_size: "{{ small_request_size_limit }}" # Data pipeline - name: "datasetSubmitRequest" @@ -3648,3 +3700,48 @@ kong_apis: config.limit_by: credential - name: request-size-limiting config.allowed_payload_size: "{{ small_request_size_limit }}" + - name: "contentBadgeLink" + request_path: "{{ badge_service_prefix }}/v1/content/link" + upstream_url: "{{ learning_service_url }}/v1/content/link" + strip_request_path: true + plugins: + - {name: 'jwt'} + - {name: 'cors'} + - "{{ statsd_pulgin }}" + - {name: 'acl', config.whitelist: 'publicUser'} + - {name: 'rate-limiting', config.policy: "local", config.hour: "{{ medium_rate_limit_per_hour }}"} + - {name: 'request-size-limiting', config.allowed_payload_size: "{{ small_request_size_limit }}" } + - name: "contentBadgeUnLink" + request_path: "{{ badge_service_prefix }}/v1/content/unlink" + upstream_url: "{{ learning_service_url }}/v1/content/unlink" + strip_request_path: true + plugins: + - {name: 'jwt'} + - {name: 'cors'} + - "{{ statsd_pulgin }}" + - {name: 'acl', config.whitelist: 'publicUser'} + - {name: 'rate-limiting', config.policy: "local", config.hour: "{{ medium_rate_limit_per_hour }}"} + - {name: 'request-size-limiting', config.allowed_payload_size: "{{ small_request_size_limit }}" } + - name: "privateUserUpdate" + request_path: "{{ user_service_prefix }}/private/v1/update" + upstream_url: "{{ learning_service_url }}/private/user/v1/update" + strip_request_path: true + plugins: + - {name: 'jwt'} + - {name: 'cors'} + - "{{ statsd_pulgin }}" + - {name: 'acl', config.whitelist: 'publicUser'} + - {name: 'rate-limiting', config.policy: "local", config.hour: "{{ medium_rate_limit_per_hour }}"} + - {name: 'request-size-limiting', config.allowed_payload_size: "{{ small_request_size_limit }}" } + + - name: "getUserType" + request_path: "{{ user_service_prefix }}/v1/type/list" + upstream_url: "{{ learning_service_url }}/v1/user/type/list" + strip_request_path: true + plugins: + - {name: 'jwt'} + - {name: 'cors'} + - "{{ statsd_pulgin }}" + - {name: 'acl', config.whitelist: 'publicUser'} + - {name: 'rate-limiting', config.policy: "local", config.hour: "{{ medium_rate_limit_per_hour }}"} + - {name: 'request-size-limiting', config.allowed_payload_size: "{{ small_request_size_limit }}" } diff --git a/ansible/roles/kong-api/tasks/main.yml b/ansible/roles/kong-api/tasks/main.yml index 3187857905..e38ef68762 100644 --- a/ansible/roles/kong-api/tasks/main.yml +++ b/ansible/roles/kong-api/tasks/main.yml @@ -1,6 +1,6 @@ --- - name: Ensure pip is installed - apt: name=python-pip + apt: name=python-pip update_cache=yes when: ansible_os_family == 'Debian' - name: Ensure retry is installed @@ -12,14 +12,22 @@ - name: Copy kong api scripts copy: src=static-files/kong-api-scripts dest=/tmp mode=0755 -- name: "Ensure kong_admin_api_url is available before running the scripts" - uri: - url: "{{ kong_admin_api_url }}/status" - status_code: 200 - register: result - until: result.status == 200 - retries: 60 - delay: 5 + #- name: "Ensure kong_admin_api_url is available before running the scripts" + # uri: + # url: "{{ kong_admin_api_url }}/status" + # status_code: 200 + # register: result + # until: result.status == 200 + # retries: 60 + # delay: 5 + +- name: Extracting where the host in which api manager is running + command: bash -lc "sudo docker service ps api-manager_kong | grep Runn | head -n1 | awk '{print $4}'" + register: kong_running_host + delegate_to: "{{groups['swarm-manager-1'][0]}}" + +- set_fact: + kong_admin_api_url: "http://{{kong_running_host.stdout}}:8001" - name: waiting for 30 seconds for api manager to be fully functional pause: diff --git a/ansible/roles/kong-consumer/defaults/main.yml b/ansible/roles/kong-consumer/defaults/main.yml index 955e7f05c7..57f85f48f7 100644 --- a/ansible/roles/kong-consumer/defaults/main.yml +++ b/ansible/roles/kong-consumer/defaults/main.yml @@ -64,6 +64,7 @@ implementaion_user_groups: - dialcodeAdmin - dialcodeUpdate - dialcodeUser + - privateContentMgmt # List all consumer groups in group_vars kong_all_consumer_groups: @@ -96,6 +97,7 @@ kong_all_consumer_groups: - domainAdmin - domainUpdate - domainUser + - privateContentMgmt kong_admin_groups: - kongConsumer diff --git a/ansible/roles/kong-consumer/tasks/main.yml b/ansible/roles/kong-consumer/tasks/main.yml index 11c10b1e43..155fa8ac13 100644 --- a/ansible/roles/kong-consumer/tasks/main.yml +++ b/ansible/roles/kong-consumer/tasks/main.yml @@ -15,14 +15,22 @@ - name: Copy kong api scripts copy: src=static-files/kong-api-scripts dest=/tmp mode=0755 -- name: "Ensure kong_admin_api_url is available before running the scripts" - uri: - url: "{{ kong_admin_api_url }}/status" - status_code: 200 - register: result - until: result.status == 200 - retries: 60 - delay: 5 + #- name: "Ensure kong_admin_api_url is available before running the scripts" + # uri: + # url: "{{ kong_admin_api_url }}/status" + # status_code: 200 + # register: result + # until: result.status == 200 + # retries: 60 + # delay: 5 + +- name: Extracting where the host in which api manager is running + command: bash -lc "sudo docker service ps api-manager_kong | grep Runn | head -n1 | awk '{print $4}'" + register: kong_running_host + delegate_to: "{{groups['swarm-manager-1'][0]}}" + +- set_fact: + kong_admin_api_url: "http://{{kong_running_host.stdout}}:8001" - name: Run script to save consumers shell: "python /tmp/kong-api-scripts/kong_consumers.py /tmp/kong_consumers.json --kong-admin-api-url={{ kong_admin_api_url }}" diff --git a/ansible/roles/monit/tasks/main.yml b/ansible/roles/monit/tasks/main.yml index df229660e0..418f8c4f4a 100755 --- a/ansible/roles/monit/tasks/main.yml +++ b/ansible/roles/monit/tasks/main.yml @@ -19,6 +19,7 @@ state: present force: yes notify: restart monit + ignore_errors: yes - name: Create monit folder file: path={{ item }} state=directory diff --git a/ansible/roles/postgresql-data-update/tasks/main.yml b/ansible/roles/postgresql-data-update/tasks/main.yml index 800624ff43..615f9188cf 100644 --- a/ansible/roles/postgresql-data-update/tasks/main.yml +++ b/ansible/roles/postgresql-data-update/tasks/main.yml @@ -1,7 +1,7 @@ -- name: creating database +- name: Verifying db users are present else creating them include: databases.yml -- name: Verifying db users are present else creating them +- name: creating database include: users.yml - name: Copy the templates diff --git a/ansible/roles/postgresql-data-update/templates/tables_postgres.sql b/ansible/roles/postgresql-data-update/templates/tables_postgres.sql index b72eaf5d24..9c5beaa1cd 100644 --- a/ansible/roles/postgresql-data-update/templates/tables_postgres.sql +++ b/ansible/roles/postgresql-data-update/templates/tables_postgres.sql @@ -1,14 +1,3 @@ -tables_postgres.sql -9072cfb 7 days ago - manzarul.haque issue #485 feat:quartz chnages -0 contributors -RawBlameHistory -188 lines (169 sloc) 6.54 KB --- Thanks to Patrick Lightbody for submitting this... --- --- In your Quartz properties file, you'll need to set --- org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.PostgreSQLDelegate - drop table qrtz_fired_triggers; DROP TABLE QRTZ_PAUSED_TRIGGER_GRPS; DROP TABLE QRTZ_SCHEDULER_STATE; diff --git a/ansible/roles/postgresql/tasks/setup-Debian.yml b/ansible/roles/postgresql/tasks/setup-Debian.yml index fdfcc44f0c..8a9b683769 100755 --- a/ansible/roles/postgresql/tasks/setup-Debian.yml +++ b/ansible/roles/postgresql/tasks/setup-Debian.yml @@ -7,6 +7,7 @@ - name: Ensure PostgreSQL packages are installed. apt: name: "{{ item }}" + update_cache: yes state: installed with_items: "{{ postgresql_packages }}" diff --git a/ansible/roles/prometheus-backup/tasks/main.yml b/ansible/roles/prometheus-backup/tasks/main.yml index 274c23d0cc..9fda4a9327 100644 --- a/ansible/roles/prometheus-backup/tasks/main.yml +++ b/ansible/roles/prometheus-backup/tasks/main.yml @@ -1,5 +1,5 @@ - name: ensure prometheus is stopped before backup - shell: "docker service scale monitor_prometheus=0" + shell: "docker service scale monitor_prometheus=0 && sleep 10" delegate_to: "{{groups['swarm-bootstrap-manager'][0]}}" - name: Starting Prometheus backup @@ -29,14 +29,14 @@ command: az storage container create --name {{ prometheus_backup_azure_container_name }} ignore_errors: true environment: - AZURE_STORAGE_ACCOUNT: "{{ backup_storage_name }}" - AZURE_STORAGE_KEY: "{{ backup_storage_key }}" + AZURE_STORAGE_ACCOUNT: "{{ backup_azure_storage_account_name }}" + AZURE_STORAGE_KEY: "{{ backup_azure_storage_access_key }}" - name: Upload to azure blob storage command: az storage blob upload --name {{ prometheus_backup_gzip_file_name }} --file {{ prometheus_backup_gzip_file_path }} --container-name {{ prometheus_backup_azure_container_name }} environment: - AZURE_STORAGE_ACCOUNT: "{{ backup_storage_name }}" - AZURE_STORAGE_KEY: "{{ backup_storage_key }}" + AZURE_STORAGE_ACCOUNT: "{{ backup_azure_storage_account_name }}" + AZURE_STORAGE_KEY: "{{ backup_azure_storage_access_key }}" async: 3600 poll: 10 diff --git a/ansible/roles/prometheus_config/defaults/main.yml b/ansible/roles/prometheus_config/defaults/main.yml new file mode 100644 index 0000000000..7b16927069 --- /dev/null +++ b/ansible/roles/prometheus_config/defaults/main.yml @@ -0,0 +1,2 @@ +prometheus_file_path: "/opt/docker/stacks/monitor/config/prometheus.yml" + diff --git a/ansible/roles/prometheus_config/tasks/main.yml b/ansible/roles/prometheus_config/tasks/main.yml new file mode 100644 index 0000000000..84a6485fe4 --- /dev/null +++ b/ansible/roles/prometheus_config/tasks/main.yml @@ -0,0 +1,32 @@ +--- + +- name: Update node exporter ip + replace: + path: "{{ prometheus_file_path }}" + regexp: ":9101']$" + replace: ":9101{% for ip in groups['all'] %}','{{ ip }}:9101{% endfor %}']" + + +- name: Update process exporter ip + replace: + path: "{{ prometheus_file_path }}" + regexp: ":1111']$" + replace: ":1111{% for ip in groups['process-exporter'] %}','{{ ip }}:1111{% endfor %}']" + + +- name: Remove monitoring stack + shell: "docker stack rm monitor" + +- name: Remove docker config + shell: "docker config rm prometheus.yml" + ignore_errors: yes + +- name: Create docker config + command: "docker config create prometheus.yml prometheus.yml" + args: + chdir: /opt/docker/stacks/monitor/config/ + +- name: Deploy monitoring + command: "docker stack deploy -c monitor.yml monitor" + args: + chdir: /opt/docker/stacks/monitor/stack/ diff --git a/ansible/roles/stack-api-manager/templates/stack-api-manager.yml b/ansible/roles/stack-api-manager/templates/stack-api-manager.yml index 388f2cbc87..dfe7922605 100644 --- a/ansible/roles/stack-api-manager/templates/stack-api-manager.yml +++ b/ansible/roles/stack-api-manager/templates/stack-api-manager.yml @@ -2,7 +2,7 @@ version: '3' services: kong: - image: sunbird/kong:{{kong_version}} + image: "sunbird/kong:1.5.0-gold" env_file: /home/deployer/env/api-manager.env ports: @@ -27,7 +27,7 @@ services: retries: 10 echo: - image: "{{hub_org}}/{{echo_server_image_name}}:{{echo_server_image_tag}}" + image: "sunbird/echo-server:1.5.0-bronze" networks: - application_default ports: diff --git a/ansible/roles/stack-badger/tasks/.user.yml.swp b/ansible/roles/stack-badger/tasks/.user.yml.swp new file mode 100644 index 0000000000000000000000000000000000000000..a5900099174a499850ce5d17806a36032e0bdd3a GIT binary patch literal 12288 zcmeI2F>f426vrni0fQ9^C?A(7M}+qF9Bdq|WF&+TiUcBx2}yyl=60Wb%k9mKW@ZT| zbMO&>Z$O1a2@RA`@DXTG(o@hvMZtge&USLxAR!u}x4QrCy_wya|NHHm;&d|_zH|Le z+8%5w9P3KCwL9#P$43L^ zmD}^|Y{)}vMzyap*N&RHJPs@V03+twgnHC)?rp=kH|lbdjdXRuK94#~Lf!`UgW0q> zWin|J0zzPgz?ypT>PELTFZQ0Jr!U-E>6cIl2mv7=1cZPP5CTF#2nc~knLu>s)F(*r z{4&YQ%j>z7>oSy!5D)@FKnMr{As_^VfDjM@LO=)z0U_`|B%mv$?mec|XOF`?{{KJv z{r|^PO8p3Z3%vrp0Ifskq2HfW>Nn^I=sV~u=u5~#8oC9&4E3RBp=Y39)|C1g3Xq3x zL)W2SpHS*PbPxI-`UcvCZbIA8*YNcP^f{C~ehSGU1cZPP5CTF#2nYcoAOs#60z}5{ zHTIyO=v!7qo)78}*%wr{zClA6bJHv$%I?sOw|3vA{y0Wgkjg_EN`u-n;B{2zRZoc2@e2+HsG{C=F52 z>l|Zk4k%4R-6ZP7VP(q+d*Tndq)X2)BNyl+I>7EV9XpKC9C_**9l5~wQ(xCV*zi2Hk!h;Sac$Bn=%zxI zwvj_Y8wj1obj5K2+(4KT+qcNe8jZ(%N@&Ei-!{z*XH%wRb(6BIxY08VG{koli?7qL zS5wrQSf}M>P3#64_>y*ZXmR85QatL#11m*Uo8Y*Nlb!rvP}I6lsv^d literal 0 HcmV?d00001 diff --git a/ansible/roles/stack-badger/tasks/main.yml b/ansible/roles/stack-badger/tasks/main.yml index e589e25ce0..8050187369 100644 --- a/ansible/roles/stack-badger/tasks/main.yml +++ b/ansible/roles/stack-badger/tasks/main.yml @@ -1,4 +1,10 @@ --- +- name: Login to docker + shell: "docker login {{ vault_docker_registry_url }} -u {{ vault_docker_registry_user }} -p {{ vault_docker_registry_password }}" + become: yes + # no_log: True + ignore_errors: yes + - name: Remove badger service become: yes shell: "docker service rm badger-service" @@ -22,7 +28,7 @@ - name: Deploy badger service become: yes - shell: "docker service create --replicas {{ badger_replicas }} -p 8004:8004 --name badger-service --hostname badger-service --reserve-memory {{ badger_reservation_memory }} --limit-memory {{ badger_limit_memory }} --network application_default --config source=settings_local.py,target=/badger/code/apps/mainsite/settings_local.py,mode=0644 {{hub_org}}/{{image_name}}:{{image_tag}}" + shell: "docker service create --with-registry-auth --replicas {{ badger_replicas }} -p 8004:8004 --name badger-service --hostname badger-service --reserve-memory {{ badger_reservation_memory }} --limit-memory {{ badger_limit_memory }} --network application_default --config source=settings_local.py,target=/badger/code/apps/mainsite/settings_local.py,mode=0644 {{hub_org}}/{{image_name}}:{{image_tag}}" args: chdir: /home/deployer/stack @@ -40,7 +46,7 @@ - name: Including task run_once: true - include_tasks: user.yml + include: user.yml delegate_to: "{{server.stdout}}" - name: Copy admin auth token to desktop diff --git a/ansible/roles/stack-badger/tasks/user.yml b/ansible/roles/stack-badger/tasks/user.yml index 19b1ebf225..3334564a35 100644 --- a/ansible/roles/stack-badger/tasks/user.yml +++ b/ansible/roles/stack-badger/tasks/user.yml @@ -1,11 +1,4 @@ --- -- name: Waiting for the container to be in start state - become: yes - shell: "docker inspect -f '{{'{{'}}.State.Running{{'}}'}}' $(docker ps | grep badger| head -n1 | awk '{print $1}')" - register: container - until: container.rc == 0 - retries: 20 - delay: 10 - name: Pausing for conainer to be fully functional pause: @@ -35,4 +28,3 @@ shell: curl -X POST 'http://localhost:8004/api-auth/token' -d "username="{{badger_admin_user}}"&password={{badger_admin_password}}" register: curl no_log: true - diff --git a/ansible/roles/stack-monitor/defaults/main.yml b/ansible/roles/stack-monitor/defaults/main.yml index e2203694aa..2a94284261 100644 --- a/ansible/roles/stack-monitor/defaults/main.yml +++ b/ansible/roles/stack-monitor/defaults/main.yml @@ -1,5 +1,6 @@ prometheus_reservation_memory: 1G prometheus_limit_memory: 1G +prometheus_storage_retention_time: 72h0m0s alertmanager_reservation_memory: 100M alertmanager_limit_memory: 100M @@ -62,7 +63,6 @@ docker_metrics_port: "2377" kong_cluster_expected_number_of_nodes: "{{ kong_replicas | default(1) }}" monitor_config_files_dest_dir: /opt/docker/stacks/monitor/config -prometheus_storage_retention_time: 168h0m0s docker_service_replicas_exporter_version: v0.0.3 docker_service_replicas_exporter_name: docker-service-replicas-exporter @@ -183,7 +183,7 @@ prometheus_web_external_url: "{{proto}}://{{api__host}}:9090/{{ prometheus_route prometheus_alertmanager_route_prefix: alertmanager prometheus_alertmanager_web_external_url: "{{proto}}://{{api__host}}:9093/{{ prometheus_alertmanager_route_prefix }}" -postgres_exporter_password: "{{ vault_postgres_exporter_password }}" +postgres_exporter_password: postgres_exporter_postgres_port: 5432 postgres_exporter_user: postgres_exporter diff --git a/ansible/roles/stack-monitor/templates/alertrules.process b/ansible/roles/stack-monitor/templates/alertrules.process index f860b0683b..d10e61a7c6 100644 --- a/ansible/roles/stack-monitor/templates/alertrules.process +++ b/ansible/roles/stack-monitor/templates/alertrules.process @@ -6,7 +6,7 @@ ALERT kafka_process_not_running description = "Number of running processes are: {% raw %}{{$value}}{% endraw %}", } ALERT secor_process_not_running - IF namedprocess_namegroup_states{groupname="secor",state="Sleeping"} < 6 + IF namedprocess_namegroup_states{groupname="secor",state="Sleeping"} != 8 FOR 1m ANNOTATIONS { summary = "Secor process is not running", diff --git a/ansible/roles/stack-proxy/tasks/main.yml b/ansible/roles/stack-proxy/tasks/main.yml index 82ac27d507..71bdeac681 100644 --- a/ansible/roles/stack-proxy/tasks/main.yml +++ b/ansible/roles/stack-proxy/tasks/main.yml @@ -73,11 +73,16 @@ - name: Save proxy-default.conf as docker config shell: "docker config create proxy-default.conf /home/deployer/config/proxy-default.conf" -- debug: msg="Image details= {{hub_org}}:{{image_name}}:{{image_tag}}" +- name: Login to docker + shell: "docker login {{ vault_docker_registry_url }} -u {{ vault_docker_registry_user }} -p {{ vault_docker_registry_password }}" + no_log: True + ignore_errors: yes + +- debug: msg="Image details= {{hub_org}}/{{image_name}}:{{image_tag}}" - debug: msg="server name= {{proxy_server_name}}" - name: Deploy stack - shell: "docker stack deploy -c proxy.yml proxy" + shell: "docker stack deploy -c proxy.yml proxy --with-registry-auth" args: chdir: /home/deployer/stack diff --git a/ansible/roles/stack-proxy/templates/nginx.conf b/ansible/roles/stack-proxy/templates/nginx.conf index d85ce8b761..923f5d21c3 100644 --- a/ansible/roles/stack-proxy/templates/nginx.conf +++ b/ansible/roles/stack-proxy/templates/nginx.conf @@ -22,6 +22,7 @@ http { sendfile on; #tcp_nopush on; + client_max_body_size 60M; keepalive_timeout 65; diff --git a/ansible/roles/stack-proxy/templates/proxy-default.conf b/ansible/roles/stack-proxy/templates/proxy-default.conf index 312b88fedf..6e0a39187c 100644 --- a/ansible/roles/stack-proxy/templates/proxy-default.conf +++ b/ansible/roles/stack-proxy/templates/proxy-default.conf @@ -45,7 +45,7 @@ server { location ~* ^/auth/realms/(.+)/clients-registrations/ { return 301 {{proto}}://$host/api/auth/v1/realms/$1/clients-registrations/; } - + location /auth/ { set $target {{ keycloak_url }}; rewrite ^/auth/(.*) /auth/$1 break; @@ -72,6 +72,7 @@ server { # root /usr/share/nginx/www; } location /api/ { + client_max_body_size 60M; set $target http://api-manager_kong:8000; rewrite ^/api/(.*) /$1 break; proxy_pass $target; diff --git a/ansible/roles/stack-sunbird/defaults/main.yml b/ansible/roles/stack-sunbird/defaults/main.yml index 4855632f31..8accbbc5e6 100644 --- a/ansible/roles/stack-sunbird/defaults/main.yml +++ b/ansible/roles/stack-sunbird/defaults/main.yml @@ -8,8 +8,8 @@ sunbird_keycloak_realm: sunbird_keycloak_clientId: sunbird_keycloak_public: sunbird_cache_store: -sunbird_cache_ttl: -sunbird_es_port: 9300 +sunbird_cache_ttl: 1800 +sunbird_es_port: 9300 # If this port is same for all the machines, single vaule is enough! else comma seperated values actor_replicas: 1 actor_reservation_memory: 768M actor_limit_memory: 1024M @@ -30,8 +30,8 @@ config_reservation_cpu: 1 sunbird_learner_service_base_url: http://api-manager_kong:8000 telemetry_replicas: 1 -telemetry_reservation_memory: 256M -telemetry_limit_memory: 512M +telemetry_reservation_memory: 300M +telemetry_limit_memory: 300M sunbird_telemetry_kafka_servers: "{{groups['kafka']|join(':9092,')}}:9092" sunbird_data_pipeline_kafka_servers: "{{groups['processing-cluster-kafka']|join(':9092,')}}:9092" @@ -46,6 +46,7 @@ keycloak_auth_server_url: "{{proto}}://{{proxy_server_name}}/auth" keycloak_realm: sunbird sunbird_web_url: "{{proto}}://{{proxy_server_name}}" sunbird_env_logo_url: http://www.paramountias.com/media/images/current-affairs/diksha-portal.jpg +sunbird_cassandra_port: 9042 sunbird_portal_title_name: 'portal' sunbird_keycloak_client_id: 'portal' vault_sunbird_api_auth_token: @@ -54,13 +55,11 @@ sunbird_azure_storage_key: sunbird_container_name: sunbird_portal_cdn_url: sunbird_dataservice_url: -sunbird_background_actor_host: sunbird_background_actor_port: -sunbird_actor_system_name: sunbird_fcm_account_key: sunbird_app_url: sunbird_image_storage_url: -sunbird_telemetry_dispatchers: +sunbird_telemetry_dispatchers: kafka content_service_whitelisted_channels: content_service_blacklisted_channels: sunbird_env_logo_url: @@ -85,3 +84,16 @@ telemetry_kafka_topic: encryption_replicas: 1 encryption_reservation_memory: "256M" encryption_limit_memory: "512M" + +# Learner +sunbird_keycloak_required_action_link_expiration_seconds: 2592000 +sunbird_time_zone: "Asia/Kolkata" +# Content-service +sunbird_content_service_log_level: info +sunbird_response_cache_ttl: 180 + +#learner +sunbird_time_zone: "Asia/Kolkata" + +# Telemetry-logstash-datapipline +max_kafka_message_size: "5242880" diff --git a/ansible/roles/stack-sunbird/tasks/actor_service.yml b/ansible/roles/stack-sunbird/tasks/actor_service.yml index 073b7f571f..f6b91ee132 100644 --- a/ansible/roles/stack-sunbird/tasks/actor_service.yml +++ b/ansible/roles/stack-sunbird/tasks/actor_service.yml @@ -4,6 +4,6 @@ ignore_errors: yes - name: Deploy actor service - shell: "docker service create --replicas {{ actor_replicas }} -p 8088:8088 --name actor-service --hostname actor-service --reserve-memory {{ actor_reservation_memory }} --limit-memory {{ actor_limit_memory }} --network application_default --env-file /home/deployer/env/sunbird_actor-service.env {{hub_org}}/{{image_name}}:{{image_tag}}" + shell: "docker service create --with-registry-auth --replicas {{ actor_replicas }} -p 8088:8088 --name actor-service --hostname actor-service --reserve-memory {{ actor_reservation_memory }} --limit-memory {{ actor_limit_memory }} --network application_default --env-file /home/deployer/env/sunbird_actor-service.env {{hub_org}}/{{image_name}}:{{image_tag}}" args: chdir: /home/deployer/stack diff --git a/ansible/roles/stack-sunbird/tasks/common.yml b/ansible/roles/stack-sunbird/tasks/common.yml index a96c9c3b16..45a1ceafe0 100644 --- a/ansible/roles/stack-sunbird/tasks/common.yml +++ b/ansible/roles/stack-sunbird/tasks/common.yml @@ -1,4 +1,9 @@ --- +- name: Login to docker + shell: "docker login {{ vault_docker_registry_url }} -u {{ vault_docker_registry_user }} -p {{ vault_docker_registry_password }}" + no_log: True + ignore_errors: yes + - name: Ensure env directory exists file: path: /home/deployer/env @@ -19,4 +24,4 @@ - name: Save service configurations into an env file template: src="sunbird_{{service_name}}.env" dest="/home/deployer/env/sunbird_{{service_name}}.env" mode=0644 - ignore_errors: yes \ No newline at end of file + ignore_errors: yes diff --git a/ansible/roles/stack-sunbird/tasks/config_service.yml b/ansible/roles/stack-sunbird/tasks/config_service.yml index ffce431299..8086fe1571 100644 --- a/ansible/roles/stack-sunbird/tasks/config_service.yml +++ b/ansible/roles/stack-sunbird/tasks/config_service.yml @@ -4,6 +4,6 @@ ignore_errors: yes - name: Deploy config service - shell: "docker service create --replicas {{ config_replicas }} -p 6000:8080 --name config-service --hostname config-service --reserve-memory {{ config_reservation_memory }} --limit-memory {{ config_limit_memory }} --network application_default --env-file /home/deployer/env/sunbird_config-service.env {{hub_org}}/{{image_name}}:{{image_tag}}" + shell: "docker service create --with-registry-auth --replicas {{ config_replicas }} -p 6000:8080 --name config-service --hostname config-service --reserve-memory {{ config_reservation_memory }} --limit-memory {{ config_limit_memory }} --network application_default --env-file /home/deployer/env/sunbird_config-service.env {{hub_org}}/{{image_name}}:{{image_tag}}" args: chdir: /home/deployer/stack diff --git a/ansible/roles/stack-sunbird/tasks/content_service.yml b/ansible/roles/stack-sunbird/tasks/content_service.yml index 09ff768c47..6f2a01cc02 100644 --- a/ansible/roles/stack-sunbird/tasks/content_service.yml +++ b/ansible/roles/stack-sunbird/tasks/content_service.yml @@ -8,6 +8,6 @@ ignore_errors: yes - name: Deploy content service - shell: "docker service create --replicas {{ content_replicas }} -p 5000:5000 --name content-service --hostname content-service --reserve-memory {{ content_reservation_memory }} --limit-memory {{ content_limit_memory }} --limit-cpu {{ content_limit_cpu }} --reserve-cpu {{ content_reservation_cpu }} --health-cmd 'wget -qO- content-service:5000/health || exit 1' --health-timeout 3s --health-retries 3 --network application_default --env-file /home/deployer/env/sunbird_content-service.env {{hub_org}}/{{image_name}}:{{image_tag}}" + shell: "docker service create --with-registry-auth --replicas {{ content_replicas }} -p 5000:5000 --name content-service --hostname content-service --reserve-memory {{ content_reservation_memory }} --limit-memory {{ content_limit_memory }} --limit-cpu {{ content_limit_cpu }} --reserve-cpu {{ content_reservation_cpu }} --health-cmd 'wget -qO- content-service:5000/health || exit 1' --health-timeout 3s --health-retries 3 --network application_default --env-file /home/deployer/env/sunbird_content-service.env {{hub_org}}/{{image_name}}:{{image_tag}}" args: chdir: /home/deployer/stack diff --git a/ansible/roles/stack-sunbird/tasks/learner_service.yml b/ansible/roles/stack-sunbird/tasks/learner_service.yml index cd421eb9d7..b3845bf88c 100644 --- a/ansible/roles/stack-sunbird/tasks/learner_service.yml +++ b/ansible/roles/stack-sunbird/tasks/learner_service.yml @@ -4,6 +4,6 @@ ignore_errors: yes - name: Deploy learner service - shell: "docker service create --replicas {{ learner_replicas }} -p 9000:9000 --name learner-service --hostname learner-service --reserve-memory {{ learner_reservation_memory }} --limit-memory {{ learner_limit_memory }} --limit-cpu {{ learner_limit_cpu }} --reserve-cpu {{ learner_reservation_cpu }} --health-cmd 'wget -qO- learner-service:9000/health || exit 1' --health-timeout 3s --health-retries 3 --network application_default --env-file /home/deployer/env/sunbird_learner-service.env {{hub_org}}/{{image_name}}:{{image_tag}}" + shell: "docker service create --with-registry-auth --replicas {{ learner_replicas }} -p 9000:9000 --name learner-service --hostname learner-service --reserve-memory {{ learner_reservation_memory }} --limit-memory {{ learner_limit_memory }} --limit-cpu {{ learner_limit_cpu }} --reserve-cpu {{ learner_reservation_cpu }} --health-cmd 'wget -qO- learner-service:9000/health || exit 1' --health-timeout 3s --health-retries 3 --network application_default --env-file /home/deployer/env/sunbird_learner-service.env {{hub_org}}/{{image_name}}:{{image_tag}}" args: chdir: /home/deployer/stack diff --git a/ansible/roles/stack-sunbird/tasks/telemetry_service.yml b/ansible/roles/stack-sunbird/tasks/telemetry_service.yml index 3e4c647f95..2fec63d0cf 100644 --- a/ansible/roles/stack-sunbird/tasks/telemetry_service.yml +++ b/ansible/roles/stack-sunbird/tasks/telemetry_service.yml @@ -1,9 +1,9 @@ --- -- name: Remove learner service +- name: Remove telemetry service shell: "docker service rm telemetry-service" ignore_errors: yes - name: Deploy telemetry service - shell: "docker service create --replicas {{ telemetry_replicas }} -p 9001:9001 --name telemetry-service --hostname telemetry-service --reserve-memory {{ telemetry_reservation_memory }} --limit-memory {{ telemetry_limit_memory }} --network application_default --env-file /home/deployer/env/sunbird_telemetry-service.env {{hub_org}}/{{image_name}}:{{image_tag}}" + shell: "docker service create --replicas {{ telemetry_replicas }} -p 9001:9001 --name telemetry-service --hostname telemetry-service --reserve-memory {{ telemetry_reservation_memory }} --limit-memory {{ telemetry_limit_memory }} --network application_default --env-file /home/deployer/env/sunbird_telemetry-service.env --with-registry-auth {{hub_org}}/{{image_name}}:{{image_tag}}" args: chdir: /home/deployer/stack diff --git a/ansible/roles/stack-sunbird/templates/sunbird_actor-service.env b/ansible/roles/stack-sunbird/templates/sunbird_actor-service.env deleted file mode 100644 index 7e7f970bc1..0000000000 --- a/ansible/roles/stack-sunbird/templates/sunbird_actor-service.env +++ /dev/null @@ -1,56 +0,0 @@ -sunbird_cassandra_host={{sunbird_cassandra_host}} -sunbird_cassandra_port=9042 -sunbird_es_host={{sunbird_es_host}} -sunbird_es_port=9300,9300,9300 -sunbird_cassandra_username=cassandra -sunbird_cassandra_password=password -actor_hostname=actor-service -bind_hostname=0.0.0.0 -sunbird_sso_url={{keycloak_auth_server_url}}/ -sunbird_sso_realm={{keycloak_realm}} -sunbird_sso_username={{sunbird_sso_username}} -sunbird_sso_password={{sunbird_sso_password}} -sunbird_sso_client_id={{sunbird_sso_client_id}} -ekstep_authorization={{sunbird_ekstep_api_key}} -sunbird_pg_host={{sunbird_pg_host}} -sunbird_pg_port={{sunbird_pg_port}} -sunbird_pg_db={{sunbird_pg_db}} -sunbird_pg_user={{sunbird_pg_user}} -sunbird_pg_password={{sunbird_pg_password}} -sunbird_installation={{sunbird_installation}} -ekstep_api_base_url={{sunbird_ekstep_api_base_url}} -sunbird_mail_server_host={{sunbird_mail_server_host}} -sunbird_mail_server_port={{sunbird_mail_server_port}} -sunbird_mail_server_username={{sunbird_mail_server_username}} -sunbird_mail_server_password={{sunbird_mail_server_password}} -sunbird_mail_server_from_email={{sunbird_mail_server_from_email}} -sunbird_encryption_key={{sunbird_encryption_key}} -sunbird_encryption_mode={{sunbird_encryption_mode}} -sunbird_sso_publickey={{sunbird_sso_publickey}} -sunbird_account_name={{sunbird_account_name}} -sunbird_account_key={{sunbird_account_key}} -sunbird_quartz_mode={{sunbird_sunbird_quartz_mode}} -sunbird_env_logo_url={{sunbird_env_logo_url}} -sunbird_web_url={{sunbird_web_url}} -sunbird_actor_system_name={{sunbird_actor_system_name}} -sunbird_fcm_account_key={{sunbird_fcm_account_key}} -sunbird_app_url={{sunbird_app_url}} -sunbird_msg_91_auth={{sunbird_msg_91_auth}} -sunbird_msg_sender={{sunbird_msg_sender}} -sunbird_installation_email={{sunbird_installation_email}} -#New -sunbird_mw_system_host=actor-service -sunbird_mw_system_port=8088 -background_actor_provider=remote -api_actor_provider=off -badging_authorization_key={{vault_badging_authorization_key}} -sunbird_badger_baseurl=http://badger-service:8004 -sunbird_remote_req_router_path=akka.tcp://SunbirdMWSystem@learner-service:8088/user/RequestRouter -sunbird_remote_bg_req_router_path=akka.tcp://SunbirdMWSystem@actor-service:8088/user/BackgroundRequestRouter -sunbird_api_base_url=http://content_service:5000 -sunbird_authorization={{sunbird_api_auth_token}} -telemetry_pdata_id={{sunbird_telemetry_pdata_id}} -telemetry_pdata_pid=actor-service -telemetry_pdata_ver=1.7 -sunbird_lms_base_url={{sunbird_learner_service_base_url}} -telemetry_queue_threshold_value=100 diff --git a/ansible/roles/stack-sunbird/templates/sunbird_content-service.env b/ansible/roles/stack-sunbird/templates/sunbird_content-service.env index 323777b2d1..b89d063219 100644 --- a/ansible/roles/stack-sunbird/templates/sunbird_content-service.env +++ b/ansible/roles/stack-sunbird/templates/sunbird_content-service.env @@ -45,3 +45,5 @@ sunbird_qrimage_topic={{sunbird_qrimage_topic}} #Release-1.13 sunbird_lock_expiry_time={{sunbird_lock_expiry_time}} +# Release-1.14 +sunbird_content_service_log_level={{sunbird_content_service_log_level}} diff --git a/ansible/roles/stack-sunbird/templates/sunbird_learner-service.env b/ansible/roles/stack-sunbird/templates/sunbird_learner-service.env index a1e80f4d10..3a01726fda 100644 --- a/ansible/roles/stack-sunbird/templates/sunbird_learner-service.env +++ b/ansible/roles/stack-sunbird/templates/sunbird_learner-service.env @@ -33,12 +33,11 @@ sunbird_quartz_mode={{sunbird_sunbird_quartz_mode}} sunbird_env_logo_url={{sunbird_env_logo_url}} sunbird_web_url={{sunbird_web_url}} sunbird_fcm_account_key={{sunbird_fcm_account_key}} -sunbird_app_url={{sunbird_app_url}} sunbird_msg_91_auth={{sunbird_msg_91_auth}} sunbird_msg_sender={{sunbird_msg_sender}} sunbird_installation_email={{sunbird_installation_email}} {% if groups['cassandra-2'] is defined %} -sunbird_cassandra_host="{{groups['cassandra'][0]}},{{groups['cassandra'][1]}},{{groups['cassandra'][2]}}" +sunbird_cassandra_host="{{sunbird_cassandra_host}}" sunbird_cassandra_port="9042,9042,9042" sunbird_cassandra_consistency_level=quorum {% else %} @@ -84,3 +83,6 @@ sunbird_course_batch_notification_signature={{sunbird_course_batch_notification_ sunbird_otp_expiration={{sunbird_otp_expiration}} sunbird_otp_length={{sunbird_otp_length}} sunbird_content_azure_storage_container={{sunbird_content_azure_storage_container}} +sunbird_linked_content_base_url={{sunbird_linked_content_base_url}} +# Release-1.14 +sunbird_time_zone={{sunbird_time_zone}} diff --git a/ansible/roles/stack-sunbird/templates/sunbird_player.env b/ansible/roles/stack-sunbird/templates/sunbird_player.env index 102bbff141..be598d3fba 100644 --- a/ansible/roles/stack-sunbird/templates/sunbird_player.env +++ b/ansible/roles/stack-sunbird/templates/sunbird_player.env @@ -17,7 +17,6 @@ sunbird_cassandra_urls={{sunbird_cassandra_urls}} sunbird_session_store_type={{sunbird_session_store_type}} AZURE_STORAGE_ACCOUNT={{sunbird_azure_storage_account}} AZURE_STORAGE_KEY={{sunbird_azure_storage_key}} -CONTAINER_NAME={{sunbird_container_name}} sunbird_dataservice_url={{sunbird_dataservice_url}} sunbird_telemetry_packet_size={{sunbird_telemetry_packet_size}} sunbird_environment={{sunbird_environment}} @@ -30,7 +29,6 @@ sunbird_enable_signup={{sunbird_enable_signup}} sunbird_tenant_cdn_url={{sunbird_tenant_cdn_url}} sunbird_cloud_storage_urls={{sunbird_cloud_storage_urls}} sunbird_config_service_url={{sunbird_config_service_url}} -config_cache_ttl={{config_cache_ttl}} sunbird_portal_user_upload_ref_link={{sunbird_portal_user_upload_ref_link}} sunbird_build_number={{sunbird_build_number}} config_service_enabled={{config_service_enabled}} @@ -45,3 +43,7 @@ sunbird_google_captcha_site_key={{sunbird_google_captcha_site_key}} sunbird_google_keycloak_client_id={{sunbird_google_keycloak_client_id}} sunbird_google_keycloak_secret={{sunbird_google_keycloak_secret}} sunbird_help_link_visibility={{sunbird_help_link_visibility|default('FALSE')}} +sunbird_azure_report_container_name={{sunbird_azure_report_container_name}} +sunbird_azure_account_name={{sunbird_azure_account_name}} +sunbird_azure_account_key={{sunbird_azure_storage_key}} +sunbird_response_cache_ttl={{sunbird_response_cache_ttl}} diff --git a/ansible/roles/stack-sunbird/templates/telemetry-logstash-datapipeline.conf b/ansible/roles/stack-sunbird/templates/telemetry-logstash-datapipeline.conf index 12d8707c8a..e2e035ad0b 100644 --- a/ansible/roles/stack-sunbird/templates/telemetry-logstash-datapipeline.conf +++ b/ansible/roles/stack-sunbird/templates/telemetry-logstash-datapipeline.conf @@ -5,6 +5,7 @@ input { codec => "json" topics => ["{{sunbird_telemetry_kafka_topic}}"] retry_backoff_ms => 180000 + max_partition_fetch_bytes => "5242880" } } output { @@ -12,5 +13,6 @@ output { codec => json topic_id => "{{sunbird_data_pipeline_kafka_topic}}" bootstrap_servers => "{{sunbird_data_pipeline_kafka_servers}}" + max_request_size => "{{max_kafka_message_size}}" } } diff --git a/ansible/roles/sunbird-auth-deploy/defaults/main.yml b/ansible/roles/sunbird-auth-deploy/defaults/main.yml new file mode 100644 index 0000000000..b686044496 --- /dev/null +++ b/ansible/roles/sunbird-auth-deploy/defaults/main.yml @@ -0,0 +1,86 @@ +--- +sunbird_auth_version: 1.0v +keycloak_pkg_src: https://downloads.jboss.org/keycloak/3.2.0.Final/keycloak-3.2.0.Final.tar.gz +postgresql_driver_src: https://jdbc.postgresql.org/download/postgresql-9.4.1212.jar +keycloak_pkg_file: "keycloak-3.2.0.Final.tar.gz" +keycloak_sms_provider_build: "keycloak-email-phone-autthenticator-1.0-SNAPSHOT.jar" +keycloak_subsystem: ' + + auth + ' +keycloak_cache_container: ' + + + + + + + ' +keycloak_default_ds: ' + + + jdbc:h2:${jboss.server.data.dir}/keycloak;AUTO_SERVER=TRUE + + h2 + + sa + sa + + ' + +keycloak_ds_driver_path: "/opt/keycloak/modules/system/layers/keycloak/org/postgresql/main" +wildfly_dir: /opt/keycloak +keycloak_download_dir: /opt +keycloak_download_url: https://downloads.jboss.org/keycloak/3.2.0.Final/keycloak-3.2.0.Final.tar.gz +wildfly_user: keycloak +wildfly_group: keycloak +wildfly_standalone_config_path: /opt/keycloak/keycloak/standalone/configuration/standalone-ha.xml +keycloak_ext: +keycloak_download_file: keycloak-3.2.0.Final.tar.gz + +keycloak_ds_driver_url: https://jdbc.postgresql.org/download/postgresql-9.2.1212.jar +keycloak_ds_driver_name: "postgresql" +keycloak_ds_driver_module: ' + + + + + + + + + + + + ' +keycloak_custom_driver: ' + + + org.postgresql.xa.PGXADataSource + + org.postgresql.ds.PGPoolingDataSource + ' +keycloak_custom_ds: ' + + jdbc:postgresql://11.0.0.6:5432/keycloak + org.postgresql.Driver + postgresql + + keycloak + KeyCloaK#2 + + + + true + + + ' + +theme: "sunrise.tar.gz" +dest_theme: "/opt/keycloak/themes/" +theme_file: sunrise +keycloak_home: /opt/keycloak +login_theme: artifacts/sunbird/login +email_theme: artifacts/sunbird/email +tenant_name: sunbird diff --git a/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/PKG-INFO b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/PKG-INFO new file mode 100644 index 0000000000..e71b54e3b9 --- /dev/null +++ b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/PKG-INFO @@ -0,0 +1,19 @@ +Metadata-Version: 1.1 +Name: python-keycloak +Version: 0.12.0 +Summary: python-keycloak is a Python package providing access to the Keycloak API. +Home-page: https://bitbucket.org/agriness/python-keycloak +Author: Marcos Pereira +Author-email: marcospereira.mpj@gmail.com +License: GNU General Public License - V3 +Description-Content-Type: UNKNOWN +Description: UNKNOWN +Keywords: keycloak openid +Platform: UNKNOWN +Classifier: Programming Language :: Python :: 3 +Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3) +Classifier: Development Status :: 3 - Alpha +Classifier: Operating System :: MacOS +Classifier: Operating System :: Unix +Classifier: Operating System :: Microsoft :: Windows +Classifier: Topic :: Utilities diff --git a/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/README.md b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/README.md new file mode 100644 index 0000000000..c6b0940b08 --- /dev/null +++ b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/README.md @@ -0,0 +1,210 @@ +[![Documentation Status](https://readthedocs.org/projects/python-keycloak/badge/?version=latest)](http://python-keycloak.readthedocs.io/en/latest/?badge=latest) + +Python Keycloak +==================== + +For review- see https://bitbucket.org/agriness/python-keycloak + +**python-keycloak** is a Python package providing access to the Keycloak API. + +## Installation + +### Via Pypi Package: + +``` $ pip install python-keycloak ``` + +### Manually + +``` $ python setup.py install ``` + +## Dependencies + +python-keycloak depends on: + +* Python 3 +* [requests](http://docs.python-requests.org/en/master/) +* [python-jose](http://python-jose.readthedocs.io/en/latest/) + +### Tests Dependencies + +* unittest +* [httmock](https://github.com/patrys/httmock) + +## Bug reports + +Please report bugs and feature requests at +https://bitbucket.org/agriness/python-keycloak/issues + +## Documentation + +The documentation for python-keycloak is available on [readthedocs](http://python-keycloak.readthedocs.io). + +## Contributors + +* [Agriness Team](http://www.agriness.com/pt/) +* [Marcos Pereira](marcospereira.mpj@gmail.com) +* [Martin Devlin](martin.devlin@pearson.com) +* [Shon T. Urbas](shon.urbas@gmail.com>) + +## Usage + +```python +from keycloak import KeycloakOpenID + +# Configure client +keycloak_openid = KeycloakOpenID(server_url="http://localhost:8080/auth/", + client_id="example_client", + realm_name="example_realm", + client_secret_key="secret") + +# Get WellKnow +config_well_know = keycloak_openid.well_know() + +# Get Token +token = keycloak_openid.token("user", "password") + +# Get Userinfo +userinfo = keycloak_openid.userinfo(token['access_token']) + +# Refresh token +token = keycloak_openid.refresh_token(token['refresh_token']) + +# Logout +keycloak_openid.logout(token['refresh_token']) + +# Get Certs +certs = keycloak_openid.certs() + +# Get RPT (Entitlement) +token = keycloak_openid.token("user", "password") +rpt = keycloak_openid.entitlement(token['access_token'], "resource_id") + +# Instropect RPT +token_rpt_info = keycloak_openid.introspect(keycloak_openid.introspect(token['access_token'], rpt=rpt['rpt'], + token_type_hint="requesting_party_token")) + +# Introspect Token +token_info = keycloak_openid.introspect(token['access_token'])) + +# Decode Token +KEYCLOAK_PUBLIC_KEY = "secret" +options = {"verify_signature": True, "verify_aud": True, "exp": True} +token_info = keycloak_openid.decode_token(token['access_token'], key=KEYCLOAK_PUBLIC_KEY, options=options) + +# Get permissions by token +token = keycloak_openid.token("user", "password") +keycloak_openid.load_authorization_config("example-authz-config.json") +policies = keycloak_openid.get_policies(token['access_token'], method_token_info='decode', key=KEYCLOAK_PUBLIC_KEY) +permissions = keycloak_openid.get_permissions(token['access_token'], method_token_info='introspect') + +# KEYCLOAK ADMIN + +from keycloak import KeycloakAdmin + +keycloak_admin = KeycloakAdmin(server_url="http://localhost:8080/auth/", + username='example-admin', + password='secret', + realm_name="example_realm", + verify=True) + +# Add user +new_user = keycloak_admin.create_user({"email": "example@example.com", + "username": "example@example.com", + "enabled": True, + "firstName": "Example", + "lastName": "Example", + "realmRoles": ["user_default", ], + "attributes": {"example": "1,2,3,3,"}}) + + +# Add user and set password +new_user = keycloak_admin.create_user({"email": "example@example.com", + "username": "example@example.com", + "enabled": True, + "firstName": "Example", + "lastName": "Example", + "credentials": [{"value": "secret","type": "password",}], + "realmRoles": ["user_default", ], + "attributes": {"example": "1,2,3,3,"}}) + +# User counter +count_users = keycloak_admin.users_count() + +# Get users Returns a list of users, filtered according to query parameters +users = keycloak_admin.get_users({}) + +# Get user ID from name +user-id-keycloak = keycloak_admin.get_user_id("example@example.com") + +# Get User +user = keycloak_admin.get_user("user-id-keycloak") + +# Update User +response = keycloak_admin.update_user(user_id="user-id-keycloak", + payload={'firstName': 'Example Update'}) + +# Update User Password +response = set_user_password(user_id="user-id-keycloak", password="secret", temporary=True) + +# Delete User +response = keycloak_admin.delete_user(user_id="user-id-keycloak") + +# Get consents granted by the user +consents = keycloak_admin.consents_user(user_id="user-id-keycloak") + +# Send User Action +response = keycloak_admin.send_update_account(user_id="user-id-keycloak", + payload=json.dumps(['UPDATE_PASSWORD'])) + +# Send Verify Email +response = keycloak_admin.send_verify_email(user_id="user-id-keycloak") + +# Get sessions associated with the user +sessions = keycloak_admin.get_sessions(user_id="user-id-keycloak") + +# Get themes, social providers, auth providers, and event listeners available on this server +server_info = keycloak_admin.get_server_info() + +# Get clients belonging to the realm Returns a list of clients belonging to the realm +clients = keycloak_admin.get_clients() + +# Get client - id (not client-id) from client by name +client_id=keycloak_admin.get_client_id("my-client") + +# Get representation of the client - id of client (not client-id) +client = keycloak_admin.get_client(client_id="client_id") + +# Get all roles for the realm or client +realm_roles = keycloak_admin.get_realm_roles() + +# Get all roles for the client +client_roles = keycloak_admin.get_client_roles(client_id="client_id") + +# Get client role +role = keycloak_admin.get_client_role(client_id="client_id", role_name="role_name") + +# Warning: Deprecated +# Get client role id from name +role_id = keycloak_admin.get_client_role_id(client_id="client_id", role_name="test") + +# Create client role +keycloak_admin.create_client_role(client_id, "test") + +# Assign client role to user. Note that BOTH role_name and role_id appear to be required. +keycloak_admin.assign_client_role(client_id="client_id", user_id="user_id", role_id="role_id", role_name="test") + +# Create new group +group = keycloak_admin.create_group(name="Example Group") + +# Get all groups +groups = keycloak_admin.get_groups() + +# Get group +group = keycloak_admin.get_group(group_id='group_id') + +# Get group by name +group = keycloak_admin.get_group_by_name(name_or_path='group_id', search_in_subgroups=True) + +# Function to trigger user sync from provider +sync_users(storage_id="storage_di", action="action") +``` diff --git a/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak-realm.json b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak-realm.json new file mode 100644 index 0000000000..72416d4de4 --- /dev/null +++ b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak-realm.json @@ -0,0 +1,1999 @@ +{ + "id": "sunbird", + "realm": "sunbird", + "notBefore": 0, + "revokeRefreshToken": false, + "accessTokenLifespan": 21600, + "accessTokenLifespanForImplicitFlow": 7200, + "ssoSessionIdleTimeout": 1800, + "ssoSessionMaxLifespan": 21600, + "offlineSessionIdleTimeout": 43200, + "accessCodeLifespan": 60, + "accessCodeLifespanUserAction": 300, + "accessCodeLifespanLogin": 1800, + "actionTokenGeneratedByAdminLifespan": 43200, + "actionTokenGeneratedByUserLifespan": 300, + "enabled": true, + "sslRequired": "external", + "registrationAllowed": false, + "registrationEmailAsUsername": false, + "rememberMe": true, + "verifyEmail": false, + "loginWithEmailAllowed": true, + "duplicateEmailsAllowed": false, + "resetPasswordAllowed": true, + "editUsernameAllowed": false, + "bruteForceProtected": false, + "permanentLockout": false, + "maxFailureWaitSeconds": 900, + "minimumQuickLoginWaitSeconds": 60, + "waitIncrementSeconds": 60, + "quickLoginCheckMilliSeconds": 1000, + "maxDeltaTimeSeconds": 43200, + "failureFactor": 30, + "roles": { + "realm": [ + { + "id": "7b955d7f-0a1e-4935-8391-642886d34612", + "name": "offline_access", + "description": "${role_offline-access}", + "scopeParamRequired": true, + "composite": false, + "clientRole": false, + "containerId": "sunbird" + }, + { + "id": "96adf368-c8e2-4b39-b2a5-2559573edb63", + "name": "uma_authorization", + "description": "${role_uma_authorization}", + "scopeParamRequired": false, + "composite": false, + "clientRole": false, + "containerId": "sunbird" + } + ], + "client": { + "realm-management": [ + { + "id": "3f8bf7e5-5d66-4394-8f06-1270529c605f", + "name": "manage-authorization", + "description": "${role_manage-authorization}", + "scopeParamRequired": false, + "composite": false, + "clientRole": true, + "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" + }, + { + "id": "601fa2c9-29d4-49c1-87ac-939a1260f6ce", + "name": "query-realms", + "description": "${role_query-realms}", + "scopeParamRequired": false, + "composite": false, + "clientRole": true, + "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" + }, + { + "id": "9aa1dcd9-cb93-4496-af5f-41b9ecacc1da", + "name": "view-authorization", + "description": "${role_view-authorization}", + "scopeParamRequired": false, + "composite": false, + "clientRole": true, + "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" + }, + { + "id": "98999987-faf5-4c4e-958a-e5463bc4edc6", + "name": "manage-events", + "description": "${role_manage-events}", + "scopeParamRequired": false, + "composite": false, + "clientRole": true, + "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" + }, + { + "id": "f898fca8-5361-49d5-900a-ebf5b775a939", + "name": "impersonation", + "description": "${role_impersonation}", + "scopeParamRequired": false, + "composite": false, + "clientRole": true, + "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" + }, + { + "id": "698dfeb0-b8d2-4240-b8a8-acd4b7a12ad3", + "name": "view-realm", + "description": "${role_view-realm}", + "scopeParamRequired": false, + "composite": false, + "clientRole": true, + "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" + }, + { + "id": "3ff462fc-b33c-431a-b54b-861c3298d910", + "name": "manage-users", + "description": "${role_manage-users}", + "scopeParamRequired": false, + "composite": false, + "clientRole": true, + "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" + }, + { + "id": "be1802b1-558c-404c-bcb9-b9bf77af9788", + "name": "manage-identity-providers", + "description": "${role_manage-identity-providers}", + "scopeParamRequired": false, + "composite": false, + "clientRole": true, + "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" + }, + { + "id": "387b44e4-e901-4431-b9af-6abd9377ed46", + "name": "query-clients", + "description": "${role_query-clients}", + "scopeParamRequired": false, + "composite": false, + "clientRole": true, + "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" + }, + { + "id": "a408b6e8-03c9-46a2-97ba-305d09db0c3c", + "name": "view-events", + "description": "${role_view-events}", + "scopeParamRequired": false, + "composite": false, + "clientRole": true, + "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" + }, + { + "id": "41c2f39a-3008-4f9d-9e1e-a7738c118570", + "name": "query-groups", + "description": "${role_query-groups}", + "scopeParamRequired": false, + "composite": false, + "clientRole": true, + "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" + }, + { + "id": "26d3289b-d2eb-4cf2-a501-f1e3fa07344c", + "name": "manage-clients", + "description": "${role_manage-clients}", + "scopeParamRequired": false, + "composite": false, + "clientRole": true, + "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" + }, + { + "id": "e2077ab0-6efb-450d-9cba-89cacd887b71", + "name": "create-client", + "description": "${role_create-client}", + "scopeParamRequired": false, + "composite": false, + "clientRole": true, + "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" + }, + { + "id": "46019462-3dc8-46a8-9786-ffcbad293f43", + "name": "view-users", + "description": "${role_view-users}", + "scopeParamRequired": false, + "composite": true, + "composites": { + "client": { + "realm-management": [ + "query-groups", + "query-users" + ] + } + }, + "clientRole": true, + "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" + }, + { + "id": "d269f220-e93f-4b43-96a1-9f2c117a2dfb", + "name": "view-clients", + "description": "${role_view-clients}", + "scopeParamRequired": false, + "composite": true, + "composites": { + "client": { + "realm-management": [ + "query-clients" + ] + } + }, + "clientRole": true, + "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" + }, + { + "id": "0c998f1b-7363-47fb-a493-4b6f4aacb0ba", + "name": "realm-admin", + "description": "${role_realm-admin}", + "scopeParamRequired": false, + "composite": true, + "composites": { + "client": { + "realm-management": [ + "manage-authorization", + "query-realms", + "view-authorization", + "manage-events", + "impersonation", + "view-realm", + "manage-users", + "manage-identity-providers", + "query-clients", + "view-events", + "query-groups", + "manage-clients", + "create-client", + "view-users", + "view-clients", + "manage-realm", + "view-identity-providers", + "query-users" + ] + } + }, + "clientRole": true, + "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" + }, + { + "id": "d77bf5a5-5877-450b-b11e-5f874f410e10", + "name": "manage-realm", + "description": "${role_manage-realm}", + "scopeParamRequired": false, + "composite": false, + "clientRole": true, + "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" + }, + { + "id": "d97009ed-d0c7-4afb-b9a3-6ee03ef01a74", + "name": "view-identity-providers", + "description": "${role_view-identity-providers}", + "scopeParamRequired": false, + "composite": false, + "clientRole": true, + "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" + }, + { + "id": "57118202-c5e5-4c49-829b-c2ed796bfdea", + "name": "query-users", + "description": "${role_query-users}", + "scopeParamRequired": false, + "composite": false, + "clientRole": true, + "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" + } + ], + "security-admin-console": [], + "android": [], + "admin-cli": [], + "trampoline": [], + "broker": [ + { + "id": "19ef58ac-2d90-40a4-a158-0e2f8893264a", + "name": "read-token", + "description": "${role_read-token}", + "scopeParamRequired": false, + "composite": false, + "clientRole": true, + "containerId": "c3950efa-6684-44c2-b50a-c7b3d16df04b" + } + ], + "portal": [], + "account": [ + { + "id": "1fef7ac5-b042-462b-8298-0446044788b3", + "name": "manage-account", + "description": "${role_manage-account}", + "scopeParamRequired": false, + "composite": true, + "composites": { + "client": { + "account": [ + "manage-account-links" + ] + } + }, + "clientRole": true, + "containerId": "c2d24d3f-65ca-46de-9cd8-3eeb71a7f83d" + }, + { + "id": "f8786348-6fa4-4b13-828e-9f080c9c6824", + "name": "manage-account-links", + "description": "${role_manage-account-links}", + "scopeParamRequired": false, + "composite": false, + "clientRole": true, + "containerId": "c2d24d3f-65ca-46de-9cd8-3eeb71a7f83d" + }, + { + "id": "91c5c738-9c39-4c4d-bae8-75f18fd7c5e4", + "name": "view-profile", + "description": "${role_view-profile}", + "scopeParamRequired": false, + "composite": false, + "clientRole": true, + "containerId": "c2d24d3f-65ca-46de-9cd8-3eeb71a7f83d" + } + ] + } + }, + "groups": [], + "defaultRoles": [ + "offline_access", + "uma_authorization" + ], + "requiredCredentials": [ + "password" + ], + "passwordPolicy": "hashIterations(20000)", + "otpPolicyType": "totp", + "otpPolicyAlgorithm": "HmacSHA1", + "otpPolicyInitialCounter": 0, + "otpPolicyDigits": 6, + "otpPolicyLookAheadWindow": 1, + "otpPolicyPeriod": 30, + "clientScopeMappings": { + "realm-management": [ + { + "client": "admin-cli", + "roles": [ + "realm-admin" + ] + }, + { + "client": "security-admin-console", + "roles": [ + "realm-admin" + ] + } + ] + }, + "clients": [ + { + "id": "9a901d18-377b-4615-9b89-677b544be3c5", + "clientId": "trampoline", + "rootUrl": "", + "adminUrl": "", + "baseUrl": "/", + "surrogateAuthRequired": false, + "enabled": true, + "clientAuthenticatorType": "client-secret", + "secret": "", + "redirectUris": [ + ], + "webOrigins": [ + ], + "notBefore": 0, + "bearerOnly": false, + "consentRequired": false, + "standardFlowEnabled": false, + "implicitFlowEnabled": false, + "directAccessGrantsEnabled": true, + "serviceAccountsEnabled": false, + "publicClient": false, + "frontchannelLogout": false, + "protocol": "openid-connect", + "attributes": { + "saml.assertion.signature": "false", + "saml.force.post.binding": "false", + "saml.multivalued.roles": "false", + "saml.encrypt": "false", + "saml_force_name_id_format": "false", + "saml.client.signature": "false", + "saml.authnstatement": "false", + "saml.server.signature": "false", + "saml.server.signature.keyinfo.ext": "false", + "saml.onetimeuse.condition": "false" + }, + "fullScopeAllowed": true, + "nodeReRegistrationTimeout": -1, + "protocolMappers": [ + { + "id": "12134027-94cc-401c-bbf6-be565078ddfb", + "name": "role list", + "protocol": "saml", + "protocolMapper": "saml-role-list-mapper", + "consentRequired": false, + "config": { + "single": "false", + "attribute.nameformat": "Basic", + "attribute.name": "Role" + } + }, + { + "id": "6a956bf1-6c40-4549-b335-9fe8c788b18f", + "name": "family name", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${familyName}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "lastName", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "family_name", + "jsonType.label": "String" + } + }, + { + "id": "d32ba1d4-3fef-42ff-aa2b-98cb4bfef6f9", + "name": "full name", + "protocol": "openid-connect", + "protocolMapper": "oidc-full-name-mapper", + "consentRequired": true, + "consentText": "${fullName}", + "config": { + "id.token.claim": "true", + "access.token.claim": "true", + "userinfo.token.claim": "true" + } + }, + { + "id": "9e899fc7-1ddd-447d-810c-d91333d6621c", + "name": "username", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${username}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "username", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "preferred_username", + "jsonType.label": "String" + } + }, + { + "id": "74e4d13f-bd02-4f17-bbbc-d4b79bab1971", + "name": "email", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${email}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "email", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "email", + "jsonType.label": "String" + } + }, + { + "id": "48fe23c2-a6fb-4c5e-8930-28ad1913829a", + "name": "given name", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${givenName}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "firstName", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "given_name", + "jsonType.label": "String" + } + } + ], + "useTemplateConfig": false, + "useTemplateScope": false, + "useTemplateMappers": false + }, + { + "id": "da893beb-6ac7-420d-b51b-f05dadf56bbc", + "clientId": "android", + "rootUrl": "", + "baseUrl": "/", + "surrogateAuthRequired": false, + "enabled": true, + "clientAuthenticatorType": "client-secret", + "secret": "", + "redirectUris": [ + ], + "webOrigins": [], + "notBefore": 0, + "bearerOnly": false, + "consentRequired": false, + "standardFlowEnabled": true, + "implicitFlowEnabled": false, + "directAccessGrantsEnabled": true, + "serviceAccountsEnabled": false, + "publicClient": true, + "frontchannelLogout": false, + "protocol": "openid-connect", + "attributes": { + "saml.assertion.signature": "false", + "saml.force.post.binding": "false", + "saml.multivalued.roles": "false", + "saml.encrypt": "false", + "saml_force_name_id_format": "false", + "saml.client.signature": "false", + "saml.authnstatement": "false", + "saml.server.signature": "false", + "saml.server.signature.keyinfo.ext": "false", + "saml.onetimeuse.condition": "false" + }, + "fullScopeAllowed": true, + "nodeReRegistrationTimeout": -1, + "protocolMappers": [ + { + "id": "ff7dac46-16b4-4ab6-a054-dd03d5411fa9", + "name": "role list", + "protocol": "saml", + "protocolMapper": "saml-role-list-mapper", + "consentRequired": false, + "config": { + "single": "false", + "attribute.nameformat": "Basic", + "attribute.name": "Role" + } + }, + { + "id": "32fad9c0-0dfe-45b2-94a1-3e2f74d756ec", + "name": "family name", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${familyName}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "lastName", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "family_name", + "jsonType.label": "String" + } + }, + { + "id": "4fb4d644-c609-4a27-a407-d451bcd83e16", + "name": "given name", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${givenName}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "firstName", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "given_name", + "jsonType.label": "String" + } + }, + { + "id": "84e7c6e5-1afb-44d8-b507-1ed31fa0f351", + "name": "email", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${email}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "email", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "email", + "jsonType.label": "String" + } + }, + { + "id": "e7ca189f-94de-4996-a192-e93ba960bbba", + "name": "full name", + "protocol": "openid-connect", + "protocolMapper": "oidc-full-name-mapper", + "consentRequired": true, + "consentText": "${fullName}", + "config": { + "id.token.claim": "true", + "access.token.claim": "true", + "userinfo.token.claim": "true" + } + }, + { + "id": "16bedb3b-7571-4106-9a47-66151915ac31", + "name": "username", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${username}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "username", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "preferred_username", + "jsonType.label": "String" + } + } + ], + "useTemplateConfig": false, + "useTemplateScope": false, + "useTemplateMappers": false + }, + { + "id": "8891d8e9-35e6-4a1c-b32b-027be03b0f24", + "clientId": "admin-cli", + "name": "${client_admin-cli}", + "surrogateAuthRequired": false, + "enabled": true, + "clientAuthenticatorType": "client-secret", + "secret": "", + "redirectUris": [], + "webOrigins": [], + "notBefore": 0, + "bearerOnly": false, + "consentRequired": false, + "standardFlowEnabled": false, + "implicitFlowEnabled": false, + "directAccessGrantsEnabled": true, + "serviceAccountsEnabled": false, + "publicClient": true, + "frontchannelLogout": false, + "protocol": "openid-connect", + "attributes": {}, + "fullScopeAllowed": false, + "nodeReRegistrationTimeout": 0, + "protocolMappers": [ + { + "id": "32d6a3a4-8635-4a36-bd14-8ac5b73a49cc", + "name": "full name", + "protocol": "openid-connect", + "protocolMapper": "oidc-full-name-mapper", + "consentRequired": true, + "consentText": "${fullName}", + "config": { + "id.token.claim": "true", + "access.token.claim": "true", + "userinfo.token.claim": "true" + } + }, + { + "id": "900fa741-d1b2-467e-88a6-b454a9519568", + "name": "given name", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${givenName}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "firstName", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "given_name", + "jsonType.label": "String" + } + }, + { + "id": "8ea14714-d160-49b8-b612-59102d50ef53", + "name": "family name", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${familyName}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "lastName", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "family_name", + "jsonType.label": "String" + } + }, + { + "id": "bd167b99-5d23-49c1-90c7-85c2b088fed7", + "name": "role list", + "protocol": "saml", + "protocolMapper": "saml-role-list-mapper", + "consentRequired": false, + "config": { + "single": "false", + "attribute.nameformat": "Basic", + "attribute.name": "Role" + } + }, + { + "id": "c4fe56a1-8d15-455a-b87b-cf051454b57c", + "name": "username", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${username}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "username", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "preferred_username", + "jsonType.label": "String" + } + }, + { + "id": "26e3bf4c-8f9a-4548-b0db-5bbb7c398991", + "name": "email", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${email}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "email", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "email", + "jsonType.label": "String" + } + } + ], + "useTemplateConfig": false, + "useTemplateScope": false, + "useTemplateMappers": false + }, + { + "id": "c3950efa-6684-44c2-b50a-c7b3d16df04b", + "clientId": "broker", + "name": "${client_broker}", + "surrogateAuthRequired": false, + "enabled": true, + "clientAuthenticatorType": "client-secret", + "secret": "", + "redirectUris": [], + "webOrigins": [], + "notBefore": 0, + "bearerOnly": false, + "consentRequired": false, + "standardFlowEnabled": true, + "implicitFlowEnabled": false, + "directAccessGrantsEnabled": false, + "serviceAccountsEnabled": false, + "publicClient": false, + "frontchannelLogout": false, + "protocol": "openid-connect", + "attributes": {}, + "fullScopeAllowed": false, + "nodeReRegistrationTimeout": 0, + "protocolMappers": [ + { + "id": "54c3bbc3-850b-4636-82d1-ed4f3a46a00a", + "name": "username", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${username}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "username", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "preferred_username", + "jsonType.label": "String" + } + }, + { + "id": "0f0d9b74-c476-4981-a783-dd4bdbe041ec", + "name": "role list", + "protocol": "saml", + "protocolMapper": "saml-role-list-mapper", + "consentRequired": false, + "config": { + "single": "false", + "attribute.nameformat": "Basic", + "attribute.name": "Role" + } + }, + { + "id": "d6f625cc-eac1-49d0-bea5-17e6f9d3860c", + "name": "given name", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${givenName}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "firstName", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "given_name", + "jsonType.label": "String" + } + }, + { + "id": "bbf35056-9bbe-49a0-aefc-2bde2379ccdc", + "name": "family name", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${familyName}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "lastName", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "family_name", + "jsonType.label": "String" + } + }, + { + "id": "38b04951-1043-4dc6-9504-7b0f31ed71a4", + "name": "email", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${email}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "email", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "email", + "jsonType.label": "String" + } + }, + { + "id": "88bb836b-7feb-45eb-b004-fb3be8436908", + "name": "full name", + "protocol": "openid-connect", + "protocolMapper": "oidc-full-name-mapper", + "consentRequired": true, + "consentText": "${fullName}", + "config": { + "id.token.claim": "true", + "access.token.claim": "true", + "userinfo.token.claim": "true" + } + } + ], + "useTemplateConfig": false, + "useTemplateScope": false, + "useTemplateMappers": false + }, + { + "id": "b2f45201-1362-4b10-83c3-207d470f44bf", + "clientId": "realm-management", + "name": "${client_realm-management}", + "surrogateAuthRequired": false, + "enabled": true, + "clientAuthenticatorType": "client-secret", + "secret": "", + "redirectUris": [], + "webOrigins": [], + "notBefore": 0, + "bearerOnly": true, + "consentRequired": false, + "standardFlowEnabled": true, + "implicitFlowEnabled": false, + "directAccessGrantsEnabled": false, + "serviceAccountsEnabled": false, + "publicClient": false, + "frontchannelLogout": false, + "protocol": "openid-connect", + "attributes": {}, + "fullScopeAllowed": false, + "nodeReRegistrationTimeout": 0, + "protocolMappers": [ + { + "id": "71605238-bf41-400e-8c03-a5d78f54b00b", + "name": "email", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${email}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "email", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "email", + "jsonType.label": "String" + } + }, + { + "id": "a0cb6f3a-30ef-4475-b73f-ca6c2f1f3675", + "name": "given name", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${givenName}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "firstName", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "given_name", + "jsonType.label": "String" + } + }, + { + "id": "3a7708b1-63b9-4116-af7f-969fc1bf61a4", + "name": "role list", + "protocol": "saml", + "protocolMapper": "saml-role-list-mapper", + "consentRequired": false, + "config": { + "single": "false", + "attribute.nameformat": "Basic", + "attribute.name": "Role" + } + }, + { + "id": "c393d7b7-fa22-4e90-9ad7-07d520632c20", + "name": "username", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${username}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "username", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "preferred_username", + "jsonType.label": "String" + } + }, + { + "id": "2d8cbac4-e4dd-4fa6-bf71-98adf826b9dd", + "name": "family name", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${familyName}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "lastName", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "family_name", + "jsonType.label": "String" + } + }, + { + "id": "e77aae69-8ea4-4ee4-bcd6-ba7ef3958c02", + "name": "full name", + "protocol": "openid-connect", + "protocolMapper": "oidc-full-name-mapper", + "consentRequired": true, + "consentText": "${fullName}", + "config": { + "id.token.claim": "true", + "access.token.claim": "true", + "userinfo.token.claim": "true" + } + } + ], + "useTemplateConfig": false, + "useTemplateScope": false, + "useTemplateMappers": false + }, + { + "id": "8c12290d-d62f-48ce-913b-c93bf995ca59", + "clientId": "portal", + "rootUrl": "", + "adminUrl": "/callback", + "baseUrl": "/", + "surrogateAuthRequired": false, + "enabled": true, + "clientAuthenticatorType": "client-secret", + "secret": "", + "redirectUris": [ + ], + "webOrigins": [ + "" + ], + "notBefore": 0, + "bearerOnly": false, + "consentRequired": false, + "standardFlowEnabled": true, + "implicitFlowEnabled": false, + "directAccessGrantsEnabled": false, + "serviceAccountsEnabled": false, + "publicClient": true, + "frontchannelLogout": false, + "protocol": "openid-connect", + "attributes": { + "saml.assertion.signature": "false", + "saml.force.post.binding": "false", + "saml.multivalued.roles": "false", + "saml.encrypt": "false", + "saml_force_name_id_format": "false", + "saml.client.signature": "false", + "saml.authnstatement": "false", + "saml.server.signature": "false", + "saml.server.signature.keyinfo.ext": "false", + "saml.onetimeuse.condition": "false" + }, + "fullScopeAllowed": true, + "nodeReRegistrationTimeout": -1, + "protocolMappers": [ + { + "id": "63071ff2-a5e5-4d38-b534-a9f25a075403", + "name": "full name", + "protocol": "openid-connect", + "protocolMapper": "oidc-full-name-mapper", + "consentRequired": true, + "consentText": "${fullName}", + "config": { + "id.token.claim": "true", + "access.token.claim": "true", + "userinfo.token.claim": "true" + } + }, + { + "id": "9bf9cad5-dbce-41e9-aa36-d84cc5a768a2", + "name": "username", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${username}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "username", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "preferred_username", + "jsonType.label": "String" + } + }, + { + "id": "238e55b7-6545-467e-856b-f95477afe1ff", + "name": "role list", + "protocol": "saml", + "protocolMapper": "saml-role-list-mapper", + "consentRequired": false, + "config": { + "single": "false", + "attribute.nameformat": "Basic", + "attribute.name": "Role" + } + }, + { + "id": "edb1ff4e-b452-46bc-8c3b-d6075f6ee579", + "name": "family name", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${familyName}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "lastName", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "family_name", + "jsonType.label": "String" + } + }, + { + "id": "7a0118e2-57ff-4d23-bf74-cbfe1f545d1d", + "name": "given name", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${givenName}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "firstName", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "given_name", + "jsonType.label": "String" + } + }, + { + "id": "b59a913e-118a-4dc4-a8d7-66c44ced5345", + "name": "email", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${email}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "email", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "email", + "jsonType.label": "String" + } + } + ], + "useTemplateConfig": false, + "useTemplateScope": false, + "useTemplateMappers": false + }, + { + "id": "79c518d7-b41a-4e6f-be42-4ef365824100", + "clientId": "security-admin-console", + "name": "${client_security-admin-console}", + "baseUrl": "/auth/admin/sunbird/console/index.html", + "surrogateAuthRequired": false, + "enabled": true, + "clientAuthenticatorType": "client-secret", + "secret": "", + "redirectUris": [ + "/auth/admin/sunbird/console/*" + ], + "webOrigins": [], + "notBefore": 0, + "bearerOnly": false, + "consentRequired": false, + "standardFlowEnabled": true, + "implicitFlowEnabled": false, + "directAccessGrantsEnabled": false, + "serviceAccountsEnabled": false, + "publicClient": true, + "frontchannelLogout": false, + "protocol": "openid-connect", + "attributes": {}, + "fullScopeAllowed": false, + "nodeReRegistrationTimeout": 0, + "protocolMappers": [ + { + "id": "c989a8c8-cb8b-40ff-b4b9-86122bad7aa9", + "name": "role list", + "protocol": "saml", + "protocolMapper": "saml-role-list-mapper", + "consentRequired": false, + "config": { + "single": "false", + "attribute.nameformat": "Basic", + "attribute.name": "Role" + } + }, + { + "id": "b180fb8c-997c-4f6a-b774-af677f903139", + "name": "family name", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${familyName}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "lastName", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "family_name", + "jsonType.label": "String" + } + }, + { + "id": "c373dc9a-49d7-4d28-9b94-06cf20fb1955", + "name": "full name", + "protocol": "openid-connect", + "protocolMapper": "oidc-full-name-mapper", + "consentRequired": true, + "consentText": "${fullName}", + "config": { + "id.token.claim": "true", + "access.token.claim": "true", + "userinfo.token.claim": "true" + } + }, + { + "id": "24c7b1c4-62c2-4d92-ab19-49bfaedcc3d4", + "name": "email", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${email}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "email", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "email", + "jsonType.label": "String" + } + }, + { + "id": "883a39a7-37b4-46ef-a761-3e51b95ccc35", + "name": "given name", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${givenName}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "firstName", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "given_name", + "jsonType.label": "String" + } + }, + { + "id": "95ed8e44-38cc-4f09-8adc-19c12d5eada0", + "name": "locale", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-attribute-mapper", + "consentRequired": false, + "consentText": "${locale}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "locale", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "locale", + "jsonType.label": "String" + } + }, + { + "id": "c66c6a41-eb22-443f-8a77-e68d404ad26f", + "name": "username", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${username}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "username", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "preferred_username", + "jsonType.label": "String" + } + } + ], + "useTemplateConfig": false, + "useTemplateScope": false, + "useTemplateMappers": false + }, + { + "id": "c2d24d3f-65ca-46de-9cd8-3eeb71a7f83d", + "clientId": "account", + "name": "${client_account}", + "baseUrl": "/auth/realms/sunbird/account", + "surrogateAuthRequired": false, + "enabled": true, + "clientAuthenticatorType": "client-secret", + "secret": "", + "defaultRoles": [ + "manage-account", + "view-profile" + ], + "redirectUris": [ + "/auth/realms/sunbird/account/*" + ], + "webOrigins": [], + "notBefore": 0, + "bearerOnly": false, + "consentRequired": false, + "standardFlowEnabled": true, + "implicitFlowEnabled": false, + "directAccessGrantsEnabled": false, + "serviceAccountsEnabled": false, + "publicClient": false, + "frontchannelLogout": false, + "protocol": "openid-connect", + "attributes": {}, + "fullScopeAllowed": false, + "nodeReRegistrationTimeout": 0, + "protocolMappers": [ + { + "id": "a64118ab-33c8-4060-9f3e-3ed817ba8e0d", + "name": "role list", + "protocol": "saml", + "protocolMapper": "saml-role-list-mapper", + "consentRequired": false, + "config": { + "single": "false", + "attribute.nameformat": "Basic", + "attribute.name": "Role" + } + }, + { + "id": "1f4a0c5e-7c8a-4693-8be5-14681b243868", + "name": "username", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${username}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "username", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "preferred_username", + "jsonType.label": "String" + } + }, + { + "id": "8d88a133-a399-4e75-b051-5b0d4ae850ab", + "name": "full name", + "protocol": "openid-connect", + "protocolMapper": "oidc-full-name-mapper", + "consentRequired": true, + "consentText": "${fullName}", + "config": { + "id.token.claim": "true", + "access.token.claim": "true", + "userinfo.token.claim": "true" + } + }, + { + "id": "45593258-916c-4158-8577-d9806c16415a", + "name": "email", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${email}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "email", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "email", + "jsonType.label": "String" + } + }, + { + "id": "027be48e-b7dc-4c3a-a648-414a466b67dd", + "name": "family name", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${familyName}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "lastName", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "family_name", + "jsonType.label": "String" + } + }, + { + "id": "c93937f9-0446-4be9-8b47-3c6de857497e", + "name": "given name", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${givenName}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "firstName", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "given_name", + "jsonType.label": "String" + } + } + ], + "useTemplateConfig": false, + "useTemplateScope": false, + "useTemplateMappers": false + } + ], + "clientTemplates": [], + "browserSecurityHeaders": { + "xContentTypeOptions": "nosniff", + "xRobotsTag": "none", + "xFrameOptions": "SAMEORIGIN", + "xXSSProtection": "1; mode=block", + "contentSecurityPolicy": "frame-src 'self'" + }, + "smtpServer": { + "password": "", + "starttls": "", + "auth": "true", + "port": "587", + "host": "", + "from": "", + "ssl": "", + "user": "" + }, + "loginTheme": "sunrise", + "eventsEnabled": false, + "eventsListeners": [ + "jboss-logging" + ], + "enabledEventTypes": [], + "adminEventsEnabled": false, + "adminEventsDetailsEnabled": false, + "components": { + "org.keycloak.services.clientregistration.policy.ClientRegistrationPolicy": [ + { + "id": "84078bbb-e005-44c8-9c7d-a1b4821558da", + "name": "Max Clients Limit", + "providerId": "max-clients", + "subType": "anonymous", + "subComponents": {}, + "config": { + "max-clients": [ + "200" + ] + } + }, + { + "id": "346d857e-4385-4f8f-a2fc-072fd11a10ec", + "name": "Allowed Protocol Mapper Types", + "providerId": "allowed-protocol-mappers", + "subType": "authenticated", + "subComponents": {}, + "config": { + "allowed-protocol-mapper-types": [ + "saml-user-attribute-mapper", + "oidc-usermodel-attribute-mapper", + "oidc-usermodel-property-mapper", + "saml-role-list-mapper", + "saml-user-property-mapper", + "oidc-full-name-mapper", + "oidc-address-mapper", + "oidc-sha256-pairwise-sub-mapper" + ], + "consent-required-for-all-mappers": [ + "true" + ] + } + }, + { + "id": "eed64f9f-4b66-45ad-bdb4-4070e3802366", + "name": "Allowed Client Templates", + "providerId": "allowed-client-templates", + "subType": "authenticated", + "subComponents": {}, + "config": {} + }, + { + "id": "17ac4eaa-9139-4b3a-b1db-c82d44c1531d", + "name": "Allowed Client Templates", + "providerId": "allowed-client-templates", + "subType": "anonymous", + "subComponents": {}, + "config": {} + }, + { + "id": "38532936-be91-40e4-b65d-c0abfaf9547c", + "name": "Full Scope Disabled", + "providerId": "scope", + "subType": "anonymous", + "subComponents": {}, + "config": {} + }, + { + "id": "8c1690a2-6eea-4d61-ab66-7a015e3bea3c", + "name": "Allowed Protocol Mapper Types", + "providerId": "allowed-protocol-mappers", + "subType": "anonymous", + "subComponents": {}, + "config": { + "allowed-protocol-mapper-types": [ + "oidc-usermodel-property-mapper", + "saml-user-property-mapper", + "oidc-full-name-mapper", + "oidc-sha256-pairwise-sub-mapper", + "oidc-address-mapper", + "oidc-usermodel-attribute-mapper", + "saml-role-list-mapper", + "saml-user-attribute-mapper" + ], + "consent-required-for-all-mappers": [ + "true" + ] + } + }, + { + "id": "3dcc314c-07f8-484d-9535-29424dbaddfc", + "name": "Trusted Hosts", + "providerId": "trusted-hosts", + "subType": "anonymous", + "subComponents": {}, + "config": { + "host-sending-registration-request-must-match": [ + "true" + ], + "client-uris-must-match": [ + "true" + ] + } + }, + { + "id": "ab52b781-64b9-42a0-99f5-cbeba6710763", + "name": "Consent Required", + "providerId": "consent-required", + "subType": "anonymous", + "subComponents": {}, + "config": {} + } + ], + "org.keycloak.keys.KeyProvider": [ + { + "id": "bd30c46f-9ee3-443d-9faa-6ed8075aac87", + "name": "rsa-generated", + "providerId": "rsa-generated", + "subComponents": {}, + "config": { + "priority": [ + "100" + ] + } + }, + { + "id": "a93cc73f-b070-48cd-bf08-9b290707c2f5", + "name": "hmac-generated", + "providerId": "hmac-generated", + "subComponents": {}, + "config": { + "priority": [ + "100" + ] + } + } + ] + }, + "internationalizationEnabled": true, + "supportedLocales": [ + "de", + "no", + "ru", + "sv", + "pt-BR", + "ja", + "lt", + "en", + "it", + "fr", + "es", + "ca" + ], + "defaultLocale": "en", + "authenticationFlows": [ + { + "id": "6c9d3423-9956-4d08-a124-41cd17aceb5a", + "alias": "Direct Grant 2", + "description": "OpenID Connect Resource Owner Grant", + "providerId": "basic-flow", + "topLevel": true, + "builtIn": false, + "authenticationExecutions": [ + { + "authenticator": "direct-grant-validate-username", + "requirement": "REQUIRED", + "priority": 10, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "authenticator": "direct-grant-validate-password", + "requirement": "DISABLED", + "priority": 20, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "authenticator": "direct-grant-validate-otp", + "requirement": "OPTIONAL", + "priority": 30, + "userSetupAllowed": false, + "autheticatorFlow": false + } + ] + }, + { + "id": "a7a49eb1-4386-499a-8a8f-13454b428f98", + "alias": "Direct Grant w/o Password", + "description": "Grant user access using only the username and no password.", + "providerId": "basic-flow", + "topLevel": true, + "builtIn": false, + "authenticationExecutions": [] + }, + { + "id": "c7b2f9c2-525b-486a-b2a8-148606caac0e", + "alias": "Handle Existing Account", + "description": "Handle what to do if there is existing account with same email/username like authenticated identity provider", + "providerId": "basic-flow", + "topLevel": false, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "idp-confirm-link", + "requirement": "REQUIRED", + "priority": 10, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "authenticator": "idp-email-verification", + "requirement": "ALTERNATIVE", + "priority": 20, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "requirement": "ALTERNATIVE", + "priority": 30, + "flowAlias": "Verify Existing Account by Re-authentication", + "userSetupAllowed": false, + "autheticatorFlow": true + } + ] + }, + { + "id": "c4674fef-8631-43c5-8f44-deb8867fa866", + "alias": "Verify Existing Account by Re-authentication", + "description": "Reauthentication of existing account", + "providerId": "basic-flow", + "topLevel": false, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "idp-username-password-form", + "requirement": "REQUIRED", + "priority": 10, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "authenticator": "auth-otp-form", + "requirement": "OPTIONAL", + "priority": 20, + "userSetupAllowed": false, + "autheticatorFlow": false + } + ] + }, + { + "id": "35016b3a-a041-47fd-8a85-a131c6f7b745", + "alias": "browser", + "description": "browser based authentication", + "providerId": "basic-flow", + "topLevel": true, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "auth-cookie", + "requirement": "ALTERNATIVE", + "priority": 10, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "authenticator": "auth-spnego", + "requirement": "DISABLED", + "priority": 20, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "authenticator": "identity-provider-redirector", + "requirement": "ALTERNATIVE", + "priority": 25, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "requirement": "ALTERNATIVE", + "priority": 30, + "flowAlias": "forms", + "userSetupAllowed": false, + "autheticatorFlow": true + } + ] + }, + { + "id": "8e85927e-349d-4a0a-a7da-efb352ba78ce", + "alias": "clients", + "description": "Base authentication for clients", + "providerId": "client-flow", + "topLevel": true, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "client-secret", + "requirement": "ALTERNATIVE", + "priority": 10, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "authenticator": "client-jwt", + "requirement": "ALTERNATIVE", + "priority": 20, + "userSetupAllowed": false, + "autheticatorFlow": false + } + ] + }, + { + "id": "b62ac783-8af6-429e-a8ff-7c8073195675", + "alias": "direct grant", + "description": "OpenID Connect Resource Owner Grant", + "providerId": "basic-flow", + "topLevel": true, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "direct-grant-validate-username", + "requirement": "REQUIRED", + "priority": 10, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "authenticator": "direct-grant-validate-password", + "requirement": "DISABLED", + "priority": 20, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "authenticator": "direct-grant-validate-otp", + "requirement": "OPTIONAL", + "priority": 30, + "userSetupAllowed": false, + "autheticatorFlow": false + } + ] + }, + { + "id": "e16e69c8-a3e8-480c-8201-8474d614e172", + "alias": "docker auth", + "description": "Used by Docker clients to authenticate against the IDP", + "providerId": "basic-flow", + "topLevel": true, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "docker-http-basic-authenticator", + "requirement": "REQUIRED", + "priority": 10, + "userSetupAllowed": false, + "autheticatorFlow": false + } + ] + }, + { + "id": "487ab3f9-33bf-49e2-8b03-5c45c85ea8b5", + "alias": "first broker login", + "description": "Actions taken after first broker login with identity provider account, which is not yet linked to any Keycloak account", + "providerId": "basic-flow", + "topLevel": true, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticatorConfig": "review profile config", + "authenticator": "idp-review-profile", + "requirement": "REQUIRED", + "priority": 10, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "authenticatorConfig": "create unique user config", + "authenticator": "idp-create-user-if-unique", + "requirement": "ALTERNATIVE", + "priority": 20, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "requirement": "ALTERNATIVE", + "priority": 30, + "flowAlias": "Handle Existing Account", + "userSetupAllowed": false, + "autheticatorFlow": true + } + ] + }, + { + "id": "a6d19ee2-387a-4db8-9ecb-2e9f806a88a1", + "alias": "forms", + "description": "Username, password, otp and other auth forms.", + "providerId": "basic-flow", + "topLevel": false, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "auth-username-password-form", + "requirement": "REQUIRED", + "priority": 10, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "authenticator": "auth-otp-form", + "requirement": "OPTIONAL", + "priority": 20, + "userSetupAllowed": false, + "autheticatorFlow": false + } + ] + }, + { + "id": "43fc7877-ad15-4c93-b327-15d4ca83f3e1", + "alias": "registration", + "description": "registration flow", + "providerId": "basic-flow", + "topLevel": true, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "registration-page-form", + "requirement": "REQUIRED", + "priority": 10, + "flowAlias": "registration form", + "userSetupAllowed": false, + "autheticatorFlow": true + } + ] + }, + { + "id": "8a77377f-60eb-4a23-8bfe-b7c360d7b48f", + "alias": "registration form", + "description": "registration form", + "providerId": "form-flow", + "topLevel": false, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "registration-user-creation", + "requirement": "REQUIRED", + "priority": 20, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "authenticator": "registration-profile-action", + "requirement": "REQUIRED", + "priority": 40, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "authenticator": "registration-password-action", + "requirement": "REQUIRED", + "priority": 50, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "authenticator": "registration-recaptcha-action", + "requirement": "DISABLED", + "priority": 60, + "userSetupAllowed": false, + "autheticatorFlow": false + } + ] + }, + { + "id": "30bd3dd1-f2f1-4708-a07d-08cf759c7b28", + "alias": "reset credentials", + "description": "Reset credentials for a user if they forgot their password or something", + "providerId": "basic-flow", + "topLevel": true, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "reset-credentials-choose-user", + "requirement": "REQUIRED", + "priority": 10, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "authenticator": "reset-credential-email", + "requirement": "REQUIRED", + "priority": 20, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "authenticator": "reset-password", + "requirement": "REQUIRED", + "priority": 30, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "authenticator": "reset-otp", + "requirement": "OPTIONAL", + "priority": 40, + "userSetupAllowed": false, + "autheticatorFlow": false + } + ] + }, + { + "id": "226a50b1-059a-44ef-8cfe-082dee5d60b9", + "alias": "saml ecp", + "description": "SAML ECP Profile Authentication Flow", + "providerId": "basic-flow", + "topLevel": true, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "http-basic-authenticator", + "requirement": "REQUIRED", + "priority": 10, + "userSetupAllowed": false, + "autheticatorFlow": false + } + ] + } + ], + "authenticatorConfig": [ + { + "id": "aec72381-3c1d-4a96-b436-ddb72b3737b9", + "alias": "create unique user config", + "config": { + "require.password.update.after.registration": "false" + } + }, + { + "id": "51f3fa48-bf74-4df9-9724-c0a9d6fe7c80", + "alias": "review profile config", + "config": { + "update.profile.on.first.login": "missing" + } + } + ], + "requiredActions": [ + { + "alias": "CONFIGURE_TOTP", + "name": "Configure OTP", + "providerId": "CONFIGURE_TOTP", + "enabled": true, + "defaultAction": false, + "config": {} + }, + { + "alias": "UPDATE_PASSWORD", + "name": "Update Password", + "providerId": "UPDATE_PASSWORD", + "enabled": true, + "defaultAction": false, + "config": {} + }, + { + "alias": "UPDATE_PROFILE", + "name": "Update Profile", + "providerId": "UPDATE_PROFILE", + "enabled": true, + "defaultAction": false, + "config": {} + }, + { + "alias": "VERIFY_EMAIL", + "name": "Verify Email", + "providerId": "VERIFY_EMAIL", + "enabled": true, + "defaultAction": false, + "config": {} + }, + { + "alias": "terms_and_conditions", + "name": "Terms and Conditions", + "providerId": "terms_and_conditions", + "enabled": true, + "defaultAction": false, + "config": {} + } + ], + "browserFlow": "browser", + "registrationFlow": "registration", + "directGrantFlow": "Direct Grant 2", + "resetCredentialsFlow": "reset credentials", + "clientAuthenticationFlow": "clients", + "dockerAuthenticationFlow": "docker auth", + "attributes": { + "_browser_header.xXSSProtection": "1; mode=block", + "_browser_header.xFrameOptions": "SAMEORIGIN", + "permanentLockout": "false", + "quickLoginCheckMilliSeconds": "1000", + "_browser_header.xRobotsTag": "none", + "maxFailureWaitSeconds": "900", + "minimumQuickLoginWaitSeconds": "60", + "failureFactor": "30", + "actionTokenGeneratedByUserLifespan": "300", + "maxDeltaTimeSeconds": "43200", + "_browser_header.xContentTypeOptions": "nosniff", + "actionTokenGeneratedByAdminLifespan": "43200", + "bruteForceProtected": "false", + "_browser_header.contentSecurityPolicy": "frame-src 'self'", + "waitIncrementSeconds": "60" + }, + "keycloakVersion": "3.2.0.Final" +} diff --git a/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/__init__.py b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/__init__.py new file mode 100644 index 0000000000..cf1f955408 --- /dev/null +++ b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/__init__.py @@ -0,0 +1,19 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2017 Marcos Pereira +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with this program. If not, see . + +from .keycloak_openid import * +from .keycloak_admin import * diff --git a/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/authorization/__init__.py b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/authorization/__init__.py new file mode 100644 index 0000000000..4a1d86dbeb --- /dev/null +++ b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/authorization/__init__.py @@ -0,0 +1,87 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2017 Marcos Pereira +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with this program. If not, see . + +import ast +import json + +from .permission import Permission +from .policy import Policy +from .role import Role + + +class Authorization: + """ + Keycloak Authorization (policies, roles, scopes and resources). + + https://keycloak.gitbooks.io/documentation/authorization_services/index.html + + """ + + def __init__(self): + self._policies = {} + + @property + def policies(self): + return self._policies + + @policies.setter + def policies(self, value): + self._policies = value + + def load_config(self, data): + """ + Load policies, roles and permissions (scope/resources). + + :param data: keycloak authorization data (dict) + :return: + """ + for pol in data['policies']: + if pol['type'] == 'role': + policy = Policy(name=pol['name'], + type=pol['type'], + logic=pol['logic'], + decision_strategy=pol['decisionStrategy']) + + config_roles = json.loads(pol['config']['roles']) + for role in config_roles: + policy.add_role(Role(name=role['id'], + required=role['required'])) + + self.policies[policy.name] = policy + + if pol['type'] == 'scope': + permission = Permission(name=pol['name'], + type=pol['type'], + logic=pol['logic'], + decision_strategy=pol['decisionStrategy']) + + permission.scopes = ast.literal_eval(pol['config']['scopes']) + + for policy_name in ast.literal_eval(pol['config']['applyPolicies']): + self.policies[policy_name].add_permission(permission) + + if pol['type'] == 'resource': + permission = Permission(name=pol['name'], + type=pol['type'], + logic=pol['logic'], + decision_strategy=pol['decisionStrategy']) + + permission.resources = ast.literal_eval(pol['config']['resources']) + + for policy_name in ast.literal_eval(pol['config']['applyPolicies']): + self.policies[policy_name].add_permission(permission) + diff --git a/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/authorization/permission.py b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/authorization/permission.py new file mode 100644 index 0000000000..94eca77954 --- /dev/null +++ b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/authorization/permission.py @@ -0,0 +1,98 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2017 Marcos Pereira +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with this program. If not, see . + + +class Permission: + """ + Consider this simple and very common permission: + + A permission associates the object being protected with the policies that must be evaluated to determine whether access is granted. + + X CAN DO Y ON RESOURCE Z + + where … + X represents one or more users, roles, or groups, or a combination of them. You can + also use claims and context here. + Y represents an action to be performed, for example, write, view, and so on. + Z represents a protected resource, for example, "/accounts". + + https://keycloak.gitbooks.io/documentation/authorization_services/topics/permission/overview.html + + """ + + def __init__(self, name, type, logic, decision_strategy): + self._name = name + self._type = type + self._logic = logic + self._decision_strategy = decision_strategy + self._resources = [] + self._scopes = [] + + def __repr__(self): + return "" % (self.name, self.type) + + def __str__(self): + return "Permission: %s (%s)" % (self.name, self.type) + + @property + def name(self): + return self._name + + @name.setter + def name(self, value): + self._name = value + + @property + def type(self): + return self._type + + @type.setter + def type(self, value): + self._type = value + + @property + def logic(self): + return self._logic + + @logic.setter + def logic(self, value): + self._logic = value + + @property + def decision_strategy(self): + return self._decision_strategy + + @decision_strategy.setter + def decision_strategy(self, value): + self._decision_strategy = value + + @property + def resources(self): + return self._resources + + @resources.setter + def resources(self, value): + self._resources = value + + @property + def scopes(self): + return self._scopes + + @scopes.setter + def scopes(self, value): + self._scopes = value + diff --git a/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/authorization/policy.py b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/authorization/policy.py new file mode 100644 index 0000000000..66512bac3a --- /dev/null +++ b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/authorization/policy.py @@ -0,0 +1,107 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2017 Marcos Pereira +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with this program. If not, see . + +from ..exceptions import KeycloakAuthorizationConfigError + + +class Policy: + """ + A policy defines the conditions that must be satisfied to grant access to an object. + Unlike permissions, you do not specify the object being protected but rather the conditions + that must be satisfied for access to a given object (for example, resource, scope, or both). + Policies are strongly related to the different access control mechanisms (ACMs) that you can use to + protect your resources. With policies, you can implement strategies for attribute-based access control + (ABAC), role-based access control (RBAC), context-based access control, or any combination of these. + + https://keycloak.gitbooks.io/documentation/authorization_services/topics/policy/overview.html + + """ + + def __init__(self, name, type, logic, decision_strategy): + self._name = name + self._type = type + self._logic = logic + self._decision_strategy = decision_strategy + self._roles = [] + self._permissions = [] + + def __repr__(self): + return "" % (self.name, self.type) + + def __str__(self): + return "Policy: %s (%s)" % (self.name, self.type) + + @property + def name(self): + return self._name + + @name.setter + def name(self, value): + self._name = value + + @property + def type(self): + return self._type + + @type.setter + def type(self, value): + self._type = value + + @property + def logic(self): + return self._logic + + @logic.setter + def logic(self, value): + self._logic = value + + @property + def decision_strategy(self): + return self._decision_strategy + + @decision_strategy.setter + def decision_strategy(self, value): + self._decision_strategy = value + + @property + def roles(self): + return self._roles + + @property + def permissions(self): + return self._permissions + + def add_role(self, role): + """ + Add keycloak role in policy. + + :param role: keycloak role. + :return: + """ + if self.type != 'role': + raise KeycloakAuthorizationConfigError( + "Can't add role. Policy type is different of role") + self._roles.append(role) + + def add_permission(self, permission): + """ + Add keycloak permission in policy. + + :param permission: keycloak permission. + :return: + """ + self._permissions.append(permission) diff --git a/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/authorization/role.py b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/authorization/role.py new file mode 100644 index 0000000000..8d398b09ee --- /dev/null +++ b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/authorization/role.py @@ -0,0 +1,39 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2017 Marcos Pereira +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with this program. If not, see . + + +class Role: + """ + Roles identify a type or category of user. Admin, user, + manager, and employee are all typical roles that may exist in an organization. + + https://keycloak.gitbooks.io/documentation/server_admin/topics/roles.html + + """ + + def __init__(self, name, required=False): + self.name = name + self.required = required + + @property + def get_name(self): + return self.name + + def __eq__(self, other): + if isinstance(other, str): + return self.name == other + return NotImplemented diff --git a/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/connection.py b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/connection.py new file mode 100644 index 0000000000..503b688a7f --- /dev/null +++ b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/connection.py @@ -0,0 +1,199 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2017 Marcos Pereira +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with this program. If not, see . + +try: + from urllib.parse import urljoin +except ImportError: + from urlparse import urljoin + +from .exceptions import * +import requests + + +class ConnectionManager(object): + """ Represents a simple server connection. + Args: + base_url (str): The server URL. + headers (dict): The header parameters of the requests to the server. + timeout (int): Timeout to use for requests to the server. + verify (bool): Verify server SSL. + """ + + def __init__(self, base_url, headers={}, timeout=60, verify=True): + self._base_url = base_url + self._headers = headers + self._timeout = timeout + self._verify = verify + + @property + def base_url(self): + """ Return base url in use for requests to the server. """ + return self._base_url + + @base_url.setter + def base_url(self, value): + """ """ + self._base_url = value + + @property + def timeout(self): + """ Return timeout in use for request to the server. """ + return self._timeout + + @timeout.setter + def timeout(self, value): + """ """ + self._timeout = value + + @property + def verify(self): + """ Return verify in use for request to the server. """ + return self._verify + + @verify.setter + def verify(self, value): + """ """ + self._verify = value + + @property + def headers(self): + """ Return header request to the server. """ + return self._headers + + @headers.setter + def headers(self, value): + """ """ + self._headers = value + + def param_headers(self, key): + """ Return a specific header parameter. + :arg + key (str): Header parameters key. + :return: + If the header parameters exist, return its value. + """ + return self.headers.get(key) + + def clean_headers(self): + """ Clear header parameters. """ + self.headers = {} + + def exist_param_headers(self, key): + """ Check if the parameter exists in the header. + :arg + key (str): Header parameters key. + :return: + If the header parameters exist, return True. + """ + return self.param_headers(key) is not None + + def add_param_headers(self, key, value): + """ Add a single parameter inside the header. + :arg + key (str): Header parameters key. + value (str): Value to be added. + """ + self.headers[key] = value + + def del_param_headers(self, key): + """ Remove a specific parameter. + :arg + key (str): Key of the header parameters. + """ + self.headers.pop(key, None) + + def raw_get(self, path, **kwargs): + """ Submit get request to the path. + :arg + path (str): Path for request. + :return + Response the request. + :exception + HttpError: Can't connect to server. + """ + + try: + return requests.get(urljoin(self.base_url, path), + params=kwargs, + headers=self.headers, + timeout=self.timeout, + verify=self.verify) + except Exception as e: + raise KeycloakConnectionError( + "Can't connect to server (%s)" % e) + + def raw_post(self, path, data, **kwargs): + """ Submit post request to the path. + :arg + path (str): Path for request. + data (dict): Payload for request. + :return + Response the request. + :exception + HttpError: Can't connect to server. + """ + try: + return requests.post(urljoin(self.base_url, path), + params=kwargs, + data=data, + headers=self.headers, + timeout=self.timeout, + verify=self.verify) + except Exception as e: + raise KeycloakConnectionError( + "Can't connect to server (%s)" % e) + + def raw_put(self, path, data, **kwargs): + """ Submit put request to the path. + :arg + path (str): Path for request. + data (dict): Payload for request. + :return + Response the request. + :exception + HttpError: Can't connect to server. + """ + try: + return requests.put(urljoin(self.base_url, path), + params=kwargs, + data=data, + headers=self.headers, + timeout=self.timeout, + verify=self.verify) + except Exception as e: + raise KeycloakConnectionError( + "Can't connect to server (%s)" % e) + + def raw_delete(self, path, **kwargs): + """ Submit delete request to the path. + + :arg + path (str): Path for request. + :return + Response the request. + :exception + HttpError: Can't connect to server. + """ + try: + return requests.delete(urljoin(self.base_url, path), + params=kwargs, + headers=self.headers, + timeout=self.timeout, + verify=self.verify) + except Exception as e: + raise KeycloakConnectionError( + "Can't connect to server (%s)" % e) diff --git a/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/exceptions.py b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/exceptions.py new file mode 100644 index 0000000000..27d8b14c15 --- /dev/null +++ b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/exceptions.py @@ -0,0 +1,93 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2017 Marcos Pereira +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with this program. If not, see . + +import requests + + +class KeycloakError(Exception): + def __init__(self, error_message="", response_code=None, + response_body=None): + + Exception.__init__(self, error_message) + + self.response_code = response_code + self.response_body = response_body + self.error_message = error_message + + def __str__(self): + if self.response_code is not None: + return "{0}: {1}".format(self.response_code, self.error_message) + else: + return "{0}".format(self.error_message) + + +class KeycloakAuthenticationError(KeycloakError): + pass + + +class KeycloakConnectionError(KeycloakError): + pass + + +class KeycloakOperationError(KeycloakError): + pass + + +class KeycloakGetError(KeycloakOperationError): + pass + + +class KeycloakSecretNotFound(KeycloakOperationError): + pass + + +class KeycloakRPTNotFound(KeycloakOperationError): + pass + + +class KeycloakAuthorizationConfigError(KeycloakOperationError): + pass + + +class KeycloakInvalidTokenError(KeycloakOperationError): + pass + + +def raise_error_from_response(response, error, expected_code=200): + + if expected_code == response.status_code: + if expected_code == requests.codes.no_content: + return {} + try: + return response.json() + except ValueError: + return response.content + + try: + message = response.json()['message'] + except (KeyError, ValueError): + message = response.content + + if isinstance(error, dict): + error = error.get(response.status_code, KeycloakOperationError) + else: + if response.status_code == 401: + error = KeycloakAuthenticationError + + raise error(error_message=message, + response_code=response.status_code, + response_body=response.content) diff --git a/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/keycloak_admin.py b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/keycloak_admin.py new file mode 100644 index 0000000000..79f5c2c6d3 --- /dev/null +++ b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/keycloak_admin.py @@ -0,0 +1,670 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2017 Marcos Pereira +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with this program. If not, see . + +# Unless otherwise stated in the comments, "id", in e.g. user_id, refers to the +# internal Keycloak server ID, usually a uuid string +from keycloak.urls_patterns import URL_ADMIN_CLIENT_ROLE +from .urls_patterns import \ + URL_ADMIN_USERS_COUNT, URL_ADMIN_USER, URL_ADMIN_USER_CONSENTS, \ + URL_ADMIN_SEND_UPDATE_ACCOUNT, URL_ADMIN_RESET_PASSWORD, URL_ADMIN_SEND_VERIFY_EMAIL, URL_ADMIN_GET_SESSIONS, \ + URL_ADMIN_SERVER_INFO, URL_ADMIN_CLIENTS, URL_ADMIN_CLIENT, URL_ADMIN_CLIENT_ROLES, URL_ADMIN_REALM_ROLES, \ + URL_ADMIN_GROUP, URL_ADMIN_GROUPS, URL_ADMIN_GROUP_CHILD, URL_ADMIN_USER_GROUP,\ + URL_ADMIN_GROUP_PERMISSIONS, URL_ADMIN_USER_CLIENT_ROLES, URL_ADMIN_USER_STORAGE, URL_ADMIN_REALM + +from .keycloak_openid import KeycloakOpenID + +from .exceptions import raise_error_from_response, KeycloakGetError + +from .urls_patterns import ( + URL_ADMIN_USERS, +) + +from .connection import ConnectionManager +import json + + +class KeycloakAdmin: + + def __init__(self, server_url, username, password, realm_name='master', client_id='admin-cli', verify=True): + """ + + :param server_url: Keycloak server url + :param username: admin username + :param password: admin password + :param realm_name: realm name + :param client_id: client id + :param verify: True if want check connection SSL + """ + self._username = username + self._password = password + self._client_id = client_id + self._realm_name = realm_name + + # Get token Admin + keycloak_openid = KeycloakOpenID(server_url=server_url, client_id=client_id, realm_name=realm_name, + verify=verify) + self._token = keycloak_openid.token(username, password) + + self._connection = ConnectionManager(base_url=server_url, + headers={'Authorization': 'Bearer ' + self.token.get('access_token'), + 'Content-Type': 'application/json'}, + timeout=60, + verify=verify) + + @property + def realm_name(self): + return self._realm_name + + @realm_name.setter + def realm_name(self, value): + self._realm_name = value + + @property + def connection(self): + return self._connection + + @connection.setter + def connection(self, value): + self._connection = value + + @property + def client_id(self): + return self._client_id + + @client_id.setter + def client_id(self, value): + self._client_id = value + + @property + def username(self): + return self._username + + @username.setter + def username(self, value): + self._username = value + + @property + def password(self): + return self._password + + @password.setter + def password(self, value): + self._password = value + + @property + def token(self): + return self._token + + @token.setter + def token(self, value): + self._token = value + + def get_users(self, query=None): + """ + Get users Returns a list of users, filtered according to query parameters + + :return: users list + """ + params_path = {"realm-name": self.realm_name} + data_raw = self.connection.raw_get(URL_ADMIN_USERS.format(**params_path), **query) + return raise_error_from_response(data_raw, KeycloakGetError) + + def create_user(self, payload): + """ + Create a new user Username must be unique + + UserRepresentation + http://www.keycloak.org/docs-api/3.3/rest-api/index.html#_userrepresentation + + :param payload: UserRepresentation + + :return: UserRepresentation + """ + params_path = {"realm-name": self.realm_name} + data_raw = self.connection.raw_post(URL_ADMIN_USERS.format(**params_path), + data=json.dumps(payload)) + return raise_error_from_response(data_raw, KeycloakGetError, expected_code=201) + + def users_count(self): + """ + User counter + + :return: counter + """ + params_path = {"realm-name": self.realm_name} + data_raw = self.connection.raw_get(URL_ADMIN_USERS_COUNT.format(**params_path)) + return raise_error_from_response(data_raw, KeycloakGetError) + + def get_user_id(self, username): + """ + Get internal keycloak user id from username + This is required for further actions against this user. + + UserRepresentation + http://www.keycloak.org/docs-api/3.3/rest-api/index.html#_userrepresentation + + :param username: id in UserRepresentation + + :return: user_id + """ + params_path = {"realm-name": self.realm_name, "username": username} + data_raw = self.connection.raw_get(URL_ADMIN_USERS.format(**params_path)) + data_content = raise_error_from_response(data_raw, KeycloakGetError) + + for user in data_content: + this_use_rname = json.dumps(user["username"]).strip('"') + if this_use_rname == username: + return json.dumps(user["id"]).strip('"') + + return None + + def get_user(self, user_id): + """ + Get representation of the user + + :param user_id: User id + + UserRepresentation: http://www.keycloak.org/docs-api/3.3/rest-api/index.html#_userrepresentation + + :return: UserRepresentation + """ + params_path = {"realm-name": self.realm_name, "id": user_id} + data_raw = self.connection.raw_get(URL_ADMIN_USER.format(**params_path)) + return raise_error_from_response(data_raw, KeycloakGetError) + + def update_user(self, user_id, payload): + """ + Update the user + + :param user_id: User id + :param payload: UserRepresentation + + :return: Http response + """ + params_path = {"realm-name": self.realm_name, "id": user_id} + data_raw = self.connection.raw_put(URL_ADMIN_USER.format(**params_path), + data=json.dumps(payload)) + return raise_error_from_response(data_raw, KeycloakGetError, expected_code=204) + + def delete_user(self, user_id): + """ + Delete the user + + :param user_id: User id + + :return: Http response + """ + params_path = {"realm-name": self.realm_name, "id": user_id} + data_raw = self.connection.raw_delete(URL_ADMIN_USER.format(**params_path)) + return raise_error_from_response(data_raw, KeycloakGetError, expected_code=204) + + def set_user_password(self, user_id, password, temporary=True): + """ + Set up a password for the user. If temporary is True, the user will have to reset + the temporary password next time they log in. + + http://www.keycloak.org/docs-api/3.2/rest-api/#_users_resource + http://www.keycloak.org/docs-api/3.2/rest-api/#_credentialrepresentation + + :param user_id: User id + :param password: New password + :param temporary: True if password is temporary + + :return: + """ + payload = {"type": "password", "temporary": temporary, "value": password} + params_path = {"realm-name": self.realm_name, "id": user_id} + data_raw = self.connection.raw_put(URL_ADMIN_RESET_PASSWORD.format(**params_path), + data=json.dumps(payload)) + return raise_error_from_response(data_raw, KeycloakGetError, expected_code=204) + + def consents_user(self, user_id): + """ + Get consents granted by the user + + :param user_id: User id + + :return: consents + """ + params_path = {"realm-name": self.realm_name, "id": user_id} + data_raw = self.connection.raw_get(URL_ADMIN_USER_CONSENTS.format(**params_path)) + return raise_error_from_response(data_raw, KeycloakGetError) + + def send_update_account(self, user_id, payload, client_id=None, lifespan=None, redirect_uri=None): + """ + Send a update account email to the user An email contains a + link the user can click to perform a set of required actions. + + :param user_id: + :param payload: + :param client_id: + :param lifespan: + :param redirect_uri: + + :return: + """ + params_path = {"realm-name": self.realm_name, "id": user_id} + params_query = {"client_id": client_id, "lifespan": lifespan, "redirect_uri": redirect_uri} + data_raw = self.connection.raw_put(URL_ADMIN_SEND_UPDATE_ACCOUNT.format(**params_path), + data=payload, **params_query) + return raise_error_from_response(data_raw, KeycloakGetError) + + def send_verify_email(self, user_id, client_id=None, redirect_uri=None): + """ + Send a update account email to the user An email contains a + link the user can click to perform a set of required actions. + + :param user_id: User id + :param client_id: Client id + :param redirect_uri: Redirect uri + + :return: + """ + params_path = {"realm-name": self.realm_name, "id": user_id} + params_query = {"client_id": client_id, "redirect_uri": redirect_uri} + data_raw = self.connection.raw_put(URL_ADMIN_SEND_VERIFY_EMAIL.format(**params_path), + data={}, **params_query) + return raise_error_from_response(data_raw, KeycloakGetError) + + def get_sessions(self, user_id): + """ + Get sessions associated with the user + + :param user_id: id of user + + UserSessionRepresentation + http://www.keycloak.org/docs-api/3.3/rest-api/index.html#_usersessionrepresentation + + :return: UserSessionRepresentation + """ + params_path = {"realm-name": self.realm_name, "id": user_id} + data_raw = self.connection.raw_get(URL_ADMIN_GET_SESSIONS.format(**params_path)) + return raise_error_from_response(data_raw, KeycloakGetError) + + def get_server_info(self): + """ + Get themes, social providers, auth providers, and event listeners available on this server + + ServerInfoRepresentation + http://www.keycloak.org/docs-api/3.3/rest-api/index.html#_serverinforepresentation + + :return: ServerInfoRepresentation + """ + data_raw = self.connection.raw_get(URL_ADMIN_SERVER_INFO) + return raise_error_from_response(data_raw, KeycloakGetError) + + def get_groups(self): + """ + Get groups belonging to the realm. Returns a list of groups belonging to the realm + + GroupRepresentation + http://www.keycloak.org/docs-api/3.2/rest-api/#_grouprepresentation + + :return: array GroupRepresentation + """ + params_path = {"realm-name": self.realm_name} + data_raw = self.connection.raw_get(URL_ADMIN_GROUPS.format(**params_path)) + return raise_error_from_response(data_raw, KeycloakGetError) + + def get_group(self, group_id): + """ + Get group by id. Returns full group details + + GroupRepresentation + http://www.keycloak.org/docs-api/3.2/rest-api/#_grouprepresentation + + :return: Keycloak server response (GroupRepresentation) + """ + params_path = {"realm-name": self.realm_name, "id": group_id} + data_raw = self.connection.raw_get(URL_ADMIN_GROUP.format(**params_path)) + return raise_error_from_response(data_raw, KeycloakGetError) + + def get_group_by_name(self, name_or_path, search_in_subgroups=False): + """ + Get group id based on name or path. + A straight name or path match with a top-level group will return first. + Subgroups are traversed, the first to match path (or name with path) is returned. + + GroupRepresentation + http://www.keycloak.org/docs-api/3.2/rest-api/#_grouprepresentation + + :param name: group name + :param path: group path + :param search_in_subgroups: True if want search in the subgroups + :return: Keycloak server response (GroupRepresentation) + """ + + groups = self.get_groups() + + # TODO: Review this code is necessary + for group in groups: + if group['name'] == name_or_path or group['path'] == name_or_path: + return group + elif search_in_subgroups and group["subGroups"]: + for subgroup in group["subGroups"]: + if subgroup['name'] == name_or_path or subgroup['path'] == name_or_path: + return subgroup + + return None + + def create_group(self, name=None, client_roles={}, realm_roles=[], sub_groups=[], path=None, parent=None): + """ + Create a group in the Realm + + GroupRepresentation + http://www.keycloak.org/docs-api/3.2/rest-api/#_grouprepresentation + + :param name: group name + :param client_roles: (Dict) Client roles to include in groupp # Not demonstrated to work + :param realm_roles: (List) Realm roles to include in group # Not demonstrated to work + :param sub_groups: (List) Subgroups to include in groupp # Not demonstrated to work + :param path: group path + :param parent: parent group's id. Required to create a sub-group. + + :return: Keycloak server response (GroupRepresentation) + """ + + data = {"name": name or path, + "path": path, + "clientRoles": client_roles, + "realmRoles": realm_roles, + "subGroups": sub_groups} + + if parent is None: + params_path = {"realm-name": self.realm_name} + data_raw = self.connection.raw_post(URL_ADMIN_GROUPS.format(**params_path), + data=json.dumps(data)) + else: + params_path = {"realm-name": self.realm_name, "id": parent} + data_raw = self.connection.raw_post(URL_ADMIN_GROUP_CHILD.format(**params_path), + data=json.dumps(data)) + + return raise_error_from_response(data_raw, KeycloakGetError, expected_code=201) + + def group_set_permissions(self, group_id, enabled=True): + """ + Enable/Disable permissions for a group. Cannot delete group if disabled + + :param group_id: id of group + :param enabled: boolean + :return: Keycloak server response + """ + + params_path = {"realm-name": self.realm_name, "id": group_id} + data_raw = self.connection.raw_put(URL_ADMIN_GROUP_PERMISSIONS.format(**params_path), + data=json.dumps({"enabled": enabled})) + return raise_error_from_response(data_raw, KeycloakGetError) + + def group_user_add(self, user_id, group_id): + """ + Add user to group (user_id and group_id) + + :param group_id: id of group + :param user_id: id of user + :param group_id: id of group to add to + :return: Keycloak server response + """ + + params_path = {"realm-name": self.realm_name, "id": user_id, "group-id": group_id} + data_raw = self.connection.raw_put(URL_ADMIN_USER_GROUP.format(**params_path), data=None) + return raise_error_from_response(data_raw, KeycloakGetError, expected_code=204) + + def group_user_remove(self, user_id, group_id): + """ + Remove user from group (user_id and group_id) + + :param group_id: id of group + :param user_id: id of user + :param group_id: id of group to add to + :return: Keycloak server response + """ + + params_path = {"realm-name": self.realm_name, "id": user_id, "group-id": group_id} + data_raw = self.connection.raw_delete(URL_ADMIN_USER_GROUP.format(**params_path)) + return raise_error_from_response(data_raw, KeycloakGetError, expected_code=204) + + def delete_group(self, group_id): + """ + Deletes a group in the Realm + + :param group_id: id of group to delete + :return: Keycloak server response + """ + + params_path = {"realm-name": self.realm_name, "id": group_id} + data_raw = self.connection.raw_delete(URL_ADMIN_GROUP.format(**params_path)) + return raise_error_from_response(data_raw, KeycloakGetError, expected_code=204) + + def get_clients(self): + """ + Get clients belonging to the realm Returns a list of clients belonging to the realm + + ClientRepresentation + http://www.keycloak.org/docs-api/3.3/rest-api/index.html#_clientrepresentation + + :return: Keycloak server response (ClientRepresentation) + """ + + params_path = {"realm-name": self.realm_name} + data_raw = self.connection.raw_get(URL_ADMIN_CLIENTS.format(**params_path)) + + return raise_error_from_response(data_raw, KeycloakGetError) + + def get_client(self, client_id): + """ + Get representation of the client + + ClientRepresentation + http://www.keycloak.org/docs-api/3.3/rest-api/index.html#_clientrepresentation + + :param client_id: id of client (not client-id) + :return: Keycloak server response (ClientRepresentation) + """ + + params_path = {"realm-name": self.realm_name, "id": client_id} + data_raw = self.connection.raw_get(URL_ADMIN_CLIENT.format(**params_path)) + return raise_error_from_response(data_raw, KeycloakGetError) + + def get_client_id(self, client_name): + """ + Get internal keycloak client id from client-id. + This is required for further actions against this client. + + :param client_name: name in ClientRepresentation + http://www.keycloak.org/docs-api/3.3/rest-api/index.html#_clientrepresentation + :return: client_id (uuid as string) + """ + + clients = self.get_clients() + + for client in clients: + if client_name == client['name']: + return client["id"] + + return None + + def create_client(self, payload): + """ + Create a client + + ClientRepresentation: http://www.keycloak.org/docs-api/3.3/rest-api/index.html#_clientrepresentation + + :param payload: ClientRepresentation + :return: Keycloak server response (UserRepresentation) + """ + + params_path = {"realm-name": self.realm_name} + data_raw = self.connection.raw_post(URL_ADMIN_CLIENTS.format(**params_path), + data=json.dumps(payload)) + return raise_error_from_response(data_raw, KeycloakGetError, expected_code=201) + + def delete_client(self, client_id): + """ + Get representation of the client + + ClientRepresentation + http://www.keycloak.org/docs-api/3.3/rest-api/index.html#_clientrepresentation + + :param client_id: keycloak client id (not oauth client-id) + :return: Keycloak server response (ClientRepresentation) + """ + + params_path = {"realm-name": self.realm_name, "id": client_id} + data_raw = self.connection.raw_delete(URL_ADMIN_CLIENT.format(**params_path)) + return raise_error_from_response(data_raw, KeycloakGetError, expected_code=204) + + def get_realm_roles(self): + """ + Get all roles for the realm or client + + RoleRepresentation + http://www.keycloak.org/docs-api/3.3/rest-api/index.html#_rolerepresentation + + :return: Keycloak server response (RoleRepresentation) + """ + + params_path = {"realm-name": self.realm_name} + data_raw = self.connection.raw_get(URL_ADMIN_REALM_ROLES.format(**params_path)) + return raise_error_from_response(data_raw, KeycloakGetError) + + def get_client_roles(self, client_id): + """ + Get all roles for the client + + :param client_id: id of client (not client-id) + + RoleRepresentation + http://www.keycloak.org/docs-api/3.3/rest-api/index.html#_rolerepresentation + + :return: Keycloak server response (RoleRepresentation) + """ + + params_path = {"realm-name": self.realm_name, "id": client_id} + data_raw = self.connection.raw_get(URL_ADMIN_CLIENT_ROLES.format(**params_path)) + return raise_error_from_response(data_raw, KeycloakGetError) + + def get_client_role(self, client_id, role_name): + """ + Get client role id by name + This is required for further actions with this role. + + :param client_id: id of client (not client-id) + :param role_name: role’s name (not id!) + + RoleRepresentation + http://www.keycloak.org/docs-api/3.3/rest-api/index.html#_rolerepresentation + + :return: role_id + """ + params_path = {"realm-name": self.realm_name, "id": client_id, "role-name": role_name} + data_raw = self.connection.raw_get(URL_ADMIN_CLIENT_ROLE.format(**params_path)) + return raise_error_from_response(data_raw, KeycloakGetError) + + def get_client_role_id(self, client_id, role_name): + """ + Warning: Deprecated + + Get client role id by name + This is required for further actions with this role. + + :param client_id: id of client (not client-id) + :param role_name: role’s name (not id!) + + RoleRepresentation + http://www.keycloak.org/docs-api/3.3/rest-api/index.html#_rolerepresentation + + :return: role_id + """ + role = self.get_client_role(client_id, role_name) + return role.get("id") + + def create_client_role(self, payload): + """ + Create a client role + + RoleRepresentation + http://www.keycloak.org/docs-api/3.3/rest-api/index.html#_rolerepresentation + + :param payload: id of client (not client-id), role_name: name of role + :return: Keycloak server response (RoleRepresentation) + """ + + params_path = {"realm-name": self.realm_name, "id": self.client_id} + data_raw = self.connection.raw_post(URL_ADMIN_CLIENT_ROLES.format(**params_path), + data=json.dumps(payload)) + return raise_error_from_response(data_raw, KeycloakGetError, expected_code=201) + + def delete_client_role(self, role_name): + """ + Create a client role + + RoleRepresentation + http://www.keycloak.org/docs-api/3.3/rest-api/index.html#_rolerepresentation + + :param role_name: role’s name (not id!) + """ + params_path = {"realm-name": self.realm_name, "id": self.client_id, "role-name": role_name} + data_raw = self.connection.raw_delete(URL_ADMIN_CLIENT_ROLE.format(**params_path)) + return raise_error_from_response(data_raw, KeycloakGetError, expected_code=204) + + def assign_client_role(self, user_id, client_id, roles): + """ + Assign a client role to a user + + :param client_id: id of client (not client-id) + :param user_id: id of user + :param client_id: id of client containing role, + :param roles: roles list or role (use RoleRepresentation) + :return Keycloak server response + """ + + payload = roles if isinstance(roles, list) else [roles] + params_path = {"realm-name": self.realm_name, "id": user_id, "client-id": client_id} + data_raw = self.connection.raw_post(URL_ADMIN_USER_CLIENT_ROLES.format(**params_path), + data=json.dumps(payload)) + return raise_error_from_response(data_raw, KeycloakGetError, expected_code=204) + + def sync_users(self, storage_id, action): + """ + Function to trigger user sync from provider + + :param storage_id: + :param action: + :return: + """ + data = {'action': action} + params_query = {"action": action} + + params_path = {"realm-name": self.realm_name, "id": storage_id} + data_raw = self.connection.raw_post(URL_ADMIN_USER_STORAGE.format(**params_path), + data=json.dumps(data), **params_query) + return raise_error_from_response(data_raw, KeycloakGetError) + + def import_realm(self, payload): + """ + Imports a realm from a full representation of that realm + + Realmrepresentation + http://www.keycloak.org/docs-api/2.5/rest-api/index.html#_import_a_realm + + :param payload: Realmrepresentation + + :return: Realmrepresentation + """ + data_raw = self.connection.raw_post(URL_ADMIN_REALM, + data = json.dumps(payload)) + return raise_error_from_response(data_raw, KeycloakGetError, expected_code=201) \ No newline at end of file diff --git a/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/keycloak_main.py b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/keycloak_main.py new file mode 100644 index 0000000000..bb859c405d --- /dev/null +++ b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/keycloak_main.py @@ -0,0 +1,87 @@ +import json + +from keycloak import KeycloakOpenID +from keycloak import KeycloakAdmin +import urllib2, argparse, json + +# Import realm +def keycloak_import_realm(keycloak_realm_file): + data = json.load(open(keycloak_realm_file)) + realm_import = keycloak_admin.import_realm(data) + +# Add user and set password +def keycloak_create_user(email, username, firstName, lastName, password): + new_user = keycloak_admin.create_user({"email": email, + "username": username, + "emailVerified": True, + "enabled": True, + "firstName": firstName, + "lastName": lastName, + "credentials": [{"value": "12345","type": password}], + "realmRoles": ["user_default"]}) + +# Create the user and assign the role to access the user management API +def update_user_roles(config): + realm_json = json.load(open(config['keycloak_realm_json_file_path'])) + + # Get the id of realm-management + for client in realm_json['clients']: + if config['clientId'] == client['clientId']: + client_id = client["id"] + break + + user = keycloak_admin.get_users({"username":config['keycloak_api_management_username']}) + user_id = user[0]['id'] + + # Read the role from file + with open(config['keycloak_user_manager_roles_json_file_path'], 'r') as data_file: + json_data = data_file.read() + + roles = json.loads(json_data) + + # Get only client roles + clientRoles = roles[config['clientId']] + + keycloak_admin.assign_client_role(user_id, client_id, clientRoles) + +if __name__ == "__main__": + parser = argparse.ArgumentParser(description='Configure keycloak user apis') + parser.add_argument('keycloak_bootstrap_config', help='configuration json file that is needed for keycloak bootstrap') + args = parser.parse_args() + + with open(args.keycloak_bootstrap_config) as keycloak_bootstrap_config: + config = json.load(keycloak_bootstrap_config) + + try: + # Get access token + keycloak_admin = KeycloakAdmin(server_url=config['keycloak_auth_server_url'], + username=config['keycloak_management_user'], + password=config['keycloak_management_password'], + realm_name="master", + client_id='admin-cli', + verify=False) + # Import realm + keycloak_import_realm(config['keycloak_realm_json_file_path']) + + # Set realm name to sunbird + keycloak_admin.realm_name = config['keycloak_realm'] + + # Add user for user api + keycloak_create_user(email=config['keycloak_api_management_user_email'], + username=config['keycloak_api_management_username'], + firstName=config['keycloak_api_management_user_first_name'], + lastName=config['keycloak_api_management_user_last_name'], + password=config['keycloak_api_management_user_password']) + + # Update user roles for access user management API's + config['clientId'] = "realm-management" + update_user_roles(config) + + # Update user roles for SSO + config['clientId'] = "admin-cli" + update_user_roles(config) + + except urllib2.HTTPError as e: + error_message = e.read() + print error_message + raise diff --git a/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/keycloak_openid.py b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/keycloak_openid.py new file mode 100644 index 0000000000..f1dcde44e3 --- /dev/null +++ b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/keycloak_openid.py @@ -0,0 +1,390 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2017 Marcos Pereira +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with this program. If not, see . + +from .authorization import Authorization +from .exceptions import raise_error_from_response, KeycloakGetError, \ + KeycloakRPTNotFound, KeycloakAuthorizationConfigError, KeycloakInvalidTokenError +from .urls_patterns import ( + URL_TOKEN, + URL_USERINFO, + URL_WELL_KNOWN, + URL_LOGOUT, + URL_CERTS, + URL_ENTITLEMENT, + URL_INTROSPECT +) +from .connection import ConnectionManager +from jose import jwt +import json + + +class KeycloakOpenID: + + def __init__(self, server_url, realm_name, client_id, client_secret_key=None, verify=True): + """ + + :param server_url: Keycloak server url + :param client_id: client id + :param realm_name: realm name + :param client_secret_key: client secret key + :param verify: True if want check connection SSL + """ + self._client_id = client_id + self._client_secret_key = client_secret_key + self._realm_name = realm_name + self._connection = ConnectionManager(base_url=server_url, + headers={}, + timeout=60, + verify=verify) + + self._authorization = Authorization() + + @property + def client_id(self): + return self._client_id + + @client_id.setter + def client_id(self, value): + self._client_id = value + + @property + def client_secret_key(self): + return self._client_secret_key + + @client_secret_key.setter + def client_secret_key(self, value): + self._client_secret_key = value + + @property + def realm_name(self): + return self._realm_name + + @realm_name.setter + def realm_name(self, value): + self._realm_name = value + + @property + def connection(self): + return self._connection + + @connection.setter + def connection(self, value): + self._connection = value + + @property + def authorization(self): + return self._authorization + + @authorization.setter + def authorization(self, value): + self._authorization = value + + def _add_secret_key(self, payload): + """ + Add secret key if exist. + + :param payload: + :return: + """ + if self.client_secret_key: + payload.update({"client_secret": self.client_secret_key}) + + return payload + + def _build_name_role(self, role): + """ + + :param role: + :return: + """ + return self.client_id + "/" + role + + def _token_info(self, token, method_token_info, **kwargs): + """ + + :param token: + :param method_token_info: + :param kwargs: + :return: + """ + if method_token_info == 'introspect': + token_info = self.introspect(token) + else: + token_info = self.decode_token(token, **kwargs) + + return token_info + + def well_know(self): + """ The most important endpoint to understand is the well-known configuration + endpoint. It lists endpoints and other configuration options relevant to + the OpenID Connect implementation in Keycloak. + + :return It lists endpoints and other configuration options relevant. + """ + + params_path = {"realm-name": self.realm_name} + data_raw = self.connection.raw_get(URL_WELL_KNOWN.format(**params_path)) + + return raise_error_from_response(data_raw, KeycloakGetError) + + def auth_url(self, redirect_uri): + """ + + http://openid.net/specs/openid-connect-core-1_0.html#AuthorizationEndpoint + + :return: + """ + return NotImplemented + + def token(self, username, password, grant_type=["password"]): + """ + The token endpoint is used to obtain tokens. Tokens can either be obtained by + exchanging an authorization code or by supplying credentials directly depending on + what flow is used. The token endpoint is also used to obtain new access tokens + when they expire. + + http://openid.net/specs/openid-connect-core-1_0.html#TokenEndpoint + + :param username: + :param password: + :param grant_type: + :return: + """ + params_path = {"realm-name": self.realm_name} + payload = {"username": username, "password": password, + "client_id": self.client_id, "grant_type": grant_type} + + payload = self._add_secret_key(payload) + data_raw = self.connection.raw_post(URL_TOKEN.format(**params_path), + data=payload) + return raise_error_from_response(data_raw, KeycloakGetError) + + def refresh_token(self, refresh_token, grant_type=["refresh_token"]): + """ + The token endpoint is used to obtain tokens. Tokens can either be obtained by + exchanging an authorization code or by supplying credentials directly depending on + what flow is used. The token endpoint is also used to obtain new access tokens + when they expire. + + http://openid.net/specs/openid-connect-core-1_0.html#TokenEndpoint + + :param refresh_token: + :param grant_type: + :return: + """ + params_path = {"realm-name": self.realm_name} + payload = {"client_id": self.client_id, "grant_type": grant_type, "refresh_token": refresh_token} + payload = self._add_secret_key(payload) + data_raw = self.connection.raw_post(URL_TOKEN.format(**params_path), + data=payload) + return raise_error_from_response(data_raw, KeycloakGetError) + + def userinfo(self, token): + """ + The userinfo endpoint returns standard claims about the authenticated user, + and is protected by a bearer token. + + http://openid.net/specs/openid-connect-core-1_0.html#UserInfo + + :param token: + :return: + """ + + self.connection.add_param_headers("Authorization", "Bearer " + token) + params_path = {"realm-name": self.realm_name} + + data_raw = self.connection.raw_get(URL_USERINFO.format(**params_path)) + + return raise_error_from_response(data_raw, KeycloakGetError) + + def logout(self, refresh_token): + """ + The logout endpoint logs out the authenticated user. + :param refresh_token: + :return: + """ + params_path = {"realm-name": self.realm_name} + payload = {"client_id": self.client_id, "refresh_token": refresh_token} + + payload = self._add_secret_key(payload) + data_raw = self.connection.raw_post(URL_LOGOUT.format(**params_path), + data=payload) + + return raise_error_from_response(data_raw, KeycloakGetError, expected_code=204) + + def certs(self): + """ + The certificate endpoint returns the public keys enabled by the realm, encoded as a + JSON Web Key (JWK). Depending on the realm settings there can be one or more keys enabled + for verifying tokens. + + https://tools.ietf.org/html/rfc7517 + + :return: + """ + params_path = {"realm-name": self.realm_name} + data_raw = self.connection.raw_get(URL_CERTS.format(**params_path)) + return raise_error_from_response(data_raw, KeycloakGetError) + + def entitlement(self, token, resource_server_id): + """ + Client applications can use a specific endpoint to obtain a special security token + called a requesting party token (RPT). This token consists of all the entitlements + (or permissions) for a user as a result of the evaluation of the permissions and authorization + policies associated with the resources being requested. With an RPT, client applications can + gain access to protected resources at the resource server. + + :return: + """ + self.connection.add_param_headers("Authorization", "Bearer " + token) + params_path = {"realm-name": self.realm_name, "resource-server-id": resource_server_id} + data_raw = self.connection.raw_get(URL_ENTITLEMENT.format(**params_path)) + + return raise_error_from_response(data_raw, KeycloakGetError) + + def introspect(self, token, rpt=None, token_type_hint=None): + """ + The introspection endpoint is used to retrieve the active state of a token. It is can only be + invoked by confidential clients. + + https://tools.ietf.org/html/rfc7662 + + :param token: + :param rpt: + :param token_type_hint: + + :return: + """ + params_path = {"realm-name": self.realm_name} + + payload = {"client_id": self.client_id, "token": token} + + if token_type_hint == 'requesting_party_token': + if rpt: + payload.update({"token": rpt, "token_type_hint": token_type_hint}) + self.connection.add_param_headers("Authorization", "Bearer " + token) + else: + raise KeycloakRPTNotFound("Can't found RPT.") + + payload = self._add_secret_key(payload) + + data_raw = self.connection.raw_post(URL_INTROSPECT.format(**params_path), + data=payload) + + return raise_error_from_response(data_raw, KeycloakGetError) + + def decode_token(self, token, key, algorithms=['RS256'], **kwargs): + """ + A JSON Web Key (JWK) is a JavaScript Object Notation (JSON) data + structure that represents a cryptographic key. This specification + also defines a JWK Set JSON data structure that represents a set of + JWKs. Cryptographic algorithms and identifiers for use with this + specification are described in the separate JSON Web Algorithms (JWA) + specification and IANA registries established by that specification. + + https://tools.ietf.org/html/rfc7517 + + :param token: + :param key: + :param algorithms: + :return: + """ + + return jwt.decode(token, key, algorithms=algorithms, + audience=self.client_id, **kwargs) + + def load_authorization_config(self, path): + """ + Load Keycloak settings (authorization) + + :param path: settings file (json) + :return: + """ + authorization_file = open(path, 'r') + authorization_json = json.loads(authorization_file.read()) + self.authorization.load_config(authorization_json) + authorization_file.close() + + def get_policies(self, token, method_token_info='introspect', **kwargs): + """ + Get policies by user token + + :param token: user token + :return: policies list + """ + + if not self.authorization.policies: + raise KeycloakAuthorizationConfigError( + "Keycloak settings not found. Load Authorization Keycloak settings." + ) + + token_info = self._token_info(token, method_token_info, **kwargs) + + if method_token_info == 'introspect' and not token_info['active']: + raise KeycloakInvalidTokenError( + "Token expired or invalid." + ) + + user_resources = token_info['resource_access'].get(self.client_id) + + if not user_resources: + return None + + policies = [] + + for policy_name, policy in self.authorization.policies.items(): + for role in user_resources['roles']: + if self._build_name_role(role) in policy.roles: + policies.append(policy) + + return list(set(policies)) + + def get_permissions(self, token, method_token_info='introspect', **kwargs): + """ + Get permission by user token + + :param token: user token + :param method_token_info: Decode token method + :param kwargs: parameters for decode + :return: permissions list + """ + + if not self.authorization.policies: + raise KeycloakAuthorizationConfigError( + "Keycloak settings not found. Load Authorization Keycloak settings." + ) + + token_info = self._token_info(token, method_token_info, **kwargs) + + if method_token_info == 'introspect' and not token_info['active']: + raise KeycloakInvalidTokenError( + "Token expired or invalid." + ) + + user_resources = token_info['resource_access'].get(self.client_id) + + if not user_resources: + return None + + permissions = [] + + for policy_name, policy in self.authorization.policies.items(): + for role in user_resources['roles']: + if self._build_name_role(role) in policy.roles: + permissions += policy.permissions + + return list(set(permissions)) diff --git a/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/python_keycloak.egg-info/PKG-INFO b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/python_keycloak.egg-info/PKG-INFO new file mode 100644 index 0000000000..e98a1ee3c0 --- /dev/null +++ b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/python_keycloak.egg-info/PKG-INFO @@ -0,0 +1,18 @@ +Metadata-Version: 1.1 +Name: python-keycloak +Version: 0.12.0 +Summary: python-keycloak is a Python package providing access to the Keycloak API. +Home-page: https://bitbucket.org/agriness/python-keycloak +Author: Marcos Pereira +Author-email: marcospereira.mpj@gmail.com +License: GNU General Public License - V3 +Description: UNKNOWN +Keywords: keycloak openid +Platform: UNKNOWN +Classifier: Programming Language :: Python :: 3 +Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3) +Classifier: Development Status :: 3 - Alpha +Classifier: Operating System :: MacOS +Classifier: Operating System :: Unix +Classifier: Operating System :: Microsoft :: Windows +Classifier: Topic :: Utilities diff --git a/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/python_keycloak.egg-info/SOURCES.txt b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/python_keycloak.egg-info/SOURCES.txt new file mode 100644 index 0000000000..e69de29bb2 diff --git a/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/python_keycloak.egg-info/dependency_links.txt b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/python_keycloak.egg-info/dependency_links.txt new file mode 100644 index 0000000000..8b13789179 --- /dev/null +++ b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/python_keycloak.egg-info/dependency_links.txt @@ -0,0 +1 @@ + diff --git a/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/python_keycloak.egg-info/requires.txt b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/python_keycloak.egg-info/requires.txt new file mode 100644 index 0000000000..d6eafdf657 --- /dev/null +++ b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/python_keycloak.egg-info/requires.txt @@ -0,0 +1,3 @@ +requests==2.18.4 +httmock==1.2.5 +python-jose==1.4.0 diff --git a/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/python_keycloak.egg-info/top_level.txt b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/python_keycloak.egg-info/top_level.txt new file mode 100644 index 0000000000..26c07c1da4 --- /dev/null +++ b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/python_keycloak.egg-info/top_level.txt @@ -0,0 +1 @@ +keycloak diff --git a/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/tests/__init__.py b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/tests/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/tests/test_connection.py b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/tests/test_connection.py new file mode 100644 index 0000000000..97ec1792df --- /dev/null +++ b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/tests/test_connection.py @@ -0,0 +1,148 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2017 Marcos Pereira +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with this program. If not, see . + +from httmock import urlmatch, response, HTTMock, all_requests + +from ..connection import ConnectionManager + + +try: + import unittest +except ImportError: + import unittest2 as unittest + + +class TestConnection(unittest.TestCase): + + def setUp(self): + self._conn = ConnectionManager( + base_url="http://localhost:8080/", + headers={}, + timeout=60) + + @all_requests + def response_content_success(self, url, request): + headers = {'content-type': 'application/json'} + content = b'response_ok' + return response(200, content, headers, None, 5, request) + + def test_raw_get(self): + with HTTMock(self.response_content_success): + resp = self._conn.raw_get("/known_path") + self.assertEqual(resp.content, b'response_ok') + self.assertEqual(resp.status_code, 200) + + def test_raw_post(self): + + @urlmatch(path="/known_path", method="post") + def response_post_success(url, request): + headers = {'content-type': 'application/json'} + content = 'response'.encode("utf-8") + return response(201, content, headers, None, 5, request) + + with HTTMock(response_post_success): + resp = self._conn.raw_post("/known_path", + {'field': 'value'}) + self.assertEqual(resp.content, b'response') + self.assertEqual(resp.status_code, 201) + + def test_raw_put(self): + @urlmatch(netloc="localhost", path="/known_path", method="put") + def response_put_success(url, request): + headers = {'content-type': 'application/json'} + content = 'response'.encode("utf-8") + return response(200, content, headers, None, 5, request) + + with HTTMock(response_put_success): + resp = self._conn.raw_put("/known_path", + {'field': 'value'}) + self.assertEqual(resp.content, b'response') + self.assertEqual(resp.status_code, 200) + + def test_raw_get_fail(self): + + @urlmatch(netloc="localhost", path="/known_path", method="get") + def response_get_fail(url, request): + headers = {'content-type': 'application/json'} + content = "404 page not found".encode("utf-8") + return response(404, content, headers, None, 5, request) + + with HTTMock(response_get_fail): + resp = self._conn.raw_get("/known_path") + + self.assertEqual(resp.content, b"404 page not found") + self.assertEqual(resp.status_code, 404) + + def test_raw_post_fail(self): + + @urlmatch(netloc="localhost", path="/known_path", method="post") + def response_post_fail(url, request): + headers = {'content-type': 'application/json'} + content = str(["Start can't be blank"]).encode("utf-8") + return response(404, content, headers, None, 5, request) + + with HTTMock(response_post_fail): + resp = self._conn.raw_post("/known_path", + {'field': 'value'}) + self.assertEqual(resp.content, str(["Start can't be blank"]).encode("utf-8")) + self.assertEqual(resp.status_code, 404) + + def test_raw_put_fail(self): + + @urlmatch(netloc="localhost", path="/known_path", method="put") + def response_put_fail(url, request): + headers = {'content-type': 'application/json'} + content = str(["Start can't be blank"]).encode("utf-8") + return response(404, content, headers, None, 5, request) + + with HTTMock(response_put_fail): + resp = self._conn.raw_put("/known_path", + {'field': 'value'}) + self.assertEqual(resp.content, str(["Start can't be blank"]).encode("utf-8")) + self.assertEqual(resp.status_code, 404) + + def test_add_param_headers(self): + self._conn.add_param_headers("test", "value") + self.assertEqual(self._conn.headers, + {"test": "value"}) + + def test_del_param_headers(self): + self._conn.add_param_headers("test", "value") + self._conn.del_param_headers("test") + self.assertEqual(self._conn.headers, {}) + + def test_clean_param_headers(self): + self._conn.add_param_headers("test", "value") + self.assertEqual(self._conn.headers, + {"test": "value"}) + self._conn.clean_headers() + self.assertEqual(self._conn.headers, {}) + + def test_exist_param_headers(self): + self._conn.add_param_headers("test", "value") + self.assertTrue(self._conn.exist_param_headers("test")) + self.assertFalse(self._conn.exist_param_headers("test_no")) + + def test_get_param_headers(self): + self._conn.add_param_headers("test", "value") + self.assertTrue(self._conn.exist_param_headers("test")) + self.assertFalse(self._conn.exist_param_headers("test_no")) + + def test_get_headers(self): + self._conn.add_param_headers("test", "value") + self.assertEqual(self._conn.headers, + {"test": "value"}) diff --git a/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/urls_patterns.py b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/urls_patterns.py new file mode 100644 index 0000000000..b57212950b --- /dev/null +++ b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/urls_patterns.py @@ -0,0 +1,54 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2017 Marcos Pereira +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with this program. If not, see . + +# OPENID URLS +URL_WELL_KNOWN = "realms/{realm-name}/.well-known/openid-configuration" +URL_TOKEN = "realms/{realm-name}/protocol/openid-connect/token" +URL_USERINFO = "realms/{realm-name}/protocol/openid-connect/userinfo" +URL_LOGOUT = "realms/{realm-name}/protocol/openid-connect/logout" +URL_CERTS = "realms/{realm-name}/protocol/openid-connect/certs" +URL_INTROSPECT = "realms/{realm-name}/protocol/openid-connect/token/introspect" +URL_ENTITLEMENT = "realms/{realm-name}/authz/entitlement/{resource-server-id}" + +# ADMIN URLS +URL_ADMIN_USERS = "admin/realms/{realm-name}/users" +URL_ADMIN_USERS_COUNT = "admin/realms/{realm-name}/users/count" +URL_ADMIN_USER = "admin/realms/{realm-name}/users/{id}" +URL_ADMIN_USER_CONSENTS = "admin/realms/{realm-name}/users/{id}/consents" +URL_ADMIN_SEND_UPDATE_ACCOUNT = "admin/realms/{realm-name}/users/{id}/execute-actions-email" +URL_ADMIN_SEND_VERIFY_EMAIL = "admin/realms/{realm-name}/users/{id}/send-verify-email" +URL_ADMIN_RESET_PASSWORD = "admin/realms/{realm-name}/users/{id}/reset-password" +URL_ADMIN_GET_SESSIONS = "admin/realms/{realm-name}/users/{id}/sessions" +URL_ADMIN_USER_CLIENT_ROLES = "admin/realms/{realm-name}/users/{id}/role-mappings/clients/{client-id}" +URL_ADMIN_USER_GROUP = "admin/realms/{realm-name}/users/{id}/groups/{group-id}" + +URL_ADMIN_SERVER_INFO = "admin/serverinfo" + +URL_ADMIN_GROUPS = "admin/realms/{realm-name}/groups" +URL_ADMIN_GROUP = "admin/realms/{realm-name}/groups/{id}" +URL_ADMIN_GROUP_CHILD = "admin/realms/{realm-name}/groups/{id}/children" +URL_ADMIN_GROUP_PERMISSIONS = "admin/realms/{realm-name}/groups/{id}/management/permissions" + +URL_ADMIN_CLIENTS = "admin/realms/{realm-name}/clients" +URL_ADMIN_CLIENT = "admin/realms/{realm-name}/clients/{id}" +URL_ADMIN_CLIENT_ROLES = "admin/realms/{realm-name}/clients/{id}/roles" +URL_ADMIN_CLIENT_ROLE = "admin/realms/{realm-name}/clients/{id}/roles/{role-name}" + +URL_ADMIN_REALM_ROLES = "admin/realms/{realm-name}/roles" + +URL_ADMIN_USER_STORAGE = "admin/realms/{realm-name}/user-storage/{id}/sync" +URL_ADMIN_REALM = "admin/realms" diff --git a/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/python_keycloak.egg-info/PKG-INFO b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/python_keycloak.egg-info/PKG-INFO new file mode 100644 index 0000000000..e98a1ee3c0 --- /dev/null +++ b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/python_keycloak.egg-info/PKG-INFO @@ -0,0 +1,18 @@ +Metadata-Version: 1.1 +Name: python-keycloak +Version: 0.12.0 +Summary: python-keycloak is a Python package providing access to the Keycloak API. +Home-page: https://bitbucket.org/agriness/python-keycloak +Author: Marcos Pereira +Author-email: marcospereira.mpj@gmail.com +License: GNU General Public License - V3 +Description: UNKNOWN +Keywords: keycloak openid +Platform: UNKNOWN +Classifier: Programming Language :: Python :: 3 +Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3) +Classifier: Development Status :: 3 - Alpha +Classifier: Operating System :: MacOS +Classifier: Operating System :: Unix +Classifier: Operating System :: Microsoft :: Windows +Classifier: Topic :: Utilities diff --git a/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/python_keycloak.egg-info/SOURCES.txt b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/python_keycloak.egg-info/SOURCES.txt new file mode 100644 index 0000000000..d948eb4a5d --- /dev/null +++ b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/python_keycloak.egg-info/SOURCES.txt @@ -0,0 +1,21 @@ +README.md +setup.cfg +setup.py +keycloak/__init__.py +keycloak/connection.py +keycloak/exceptions.py +keycloak/keycloak_admin.py +keycloak/keycloak_main.py +keycloak/keycloak_openid.py +keycloak/urls_patterns.py +keycloak/authorization/__init__.py +keycloak/authorization/permission.py +keycloak/authorization/policy.py +keycloak/authorization/role.py +keycloak/tests/__init__.py +keycloak/tests/test_connection.py +python_keycloak.egg-info/PKG-INFO +python_keycloak.egg-info/SOURCES.txt +python_keycloak.egg-info/dependency_links.txt +python_keycloak.egg-info/requires.txt +python_keycloak.egg-info/top_level.txt \ No newline at end of file diff --git a/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/python_keycloak.egg-info/dependency_links.txt b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/python_keycloak.egg-info/dependency_links.txt new file mode 100644 index 0000000000..8b13789179 --- /dev/null +++ b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/python_keycloak.egg-info/dependency_links.txt @@ -0,0 +1 @@ + diff --git a/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/python_keycloak.egg-info/requires.txt b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/python_keycloak.egg-info/requires.txt new file mode 100644 index 0000000000..d6eafdf657 --- /dev/null +++ b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/python_keycloak.egg-info/requires.txt @@ -0,0 +1,3 @@ +requests==2.18.4 +httmock==1.2.5 +python-jose==1.4.0 diff --git a/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/python_keycloak.egg-info/top_level.txt b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/python_keycloak.egg-info/top_level.txt new file mode 100644 index 0000000000..26c07c1da4 --- /dev/null +++ b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/python_keycloak.egg-info/top_level.txt @@ -0,0 +1 @@ +keycloak diff --git a/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/roles.json b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/roles.json new file mode 100644 index 0000000000..cc5e0b3241 --- /dev/null +++ b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/roles.json @@ -0,0 +1,41 @@ +{ + "realm-management" : [ + { + "id": "3ff462fc-b33c-431a-b54b-861c3298d910", + "name": "manage-users", + "description": "${role_manage-users}", + "scopeParamRequired": false, + "composite": false,"clientRole": true, + "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" + }, + { + "id": "57118202-c5e5-4c49-829b-c2ed796bfdea", + "name": "query-users", + "description": "${role_query-users}", + "scopeParamRequired": false, + "composite": false, + "clientRole": true, + "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" + }, + { + "id":"46019462-3dc8-46a8-9786-ffcbad293f43", + "name":"view-users", + "description":"${role_view-users}", + "scopeParamRequired":false, + "composite":true, + "clientRole":true, + "containerId":"b2f45201-1362-4b10-83c3-207d470f44bf" + } + ], + "admin-cli": [ + { + "id":"30ab6b4f-b17c-4fff-a5fa-1181686bb409", + "name":"admin", + "description":"admin role", + "scopeParamRequired":false, + "composite":true, + "clientRole":true, + "containerId":"8891d8e9-35e6-4a1c-b32b-027be03b0f24" + } + ] +} diff --git a/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/setup.cfg b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/setup.cfg new file mode 100644 index 0000000000..9f88734b50 --- /dev/null +++ b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/setup.cfg @@ -0,0 +1,7 @@ +[metadata] +description-file = README.md + +[egg_info] +tag_build = +tag_date = 0 + diff --git a/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/setup.py b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/setup.py new file mode 100644 index 0000000000..bf6a505f0a --- /dev/null +++ b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/setup.py @@ -0,0 +1,25 @@ +# -*- coding: utf-8 -*- + +from setuptools import setup + +setup( + name='python-keycloak', + version='0.12.0', + url='https://bitbucket.org/agriness/python-keycloak', + license='GNU General Public License - V3', + author='Marcos Pereira', + author_email='marcospereira.mpj@gmail.com', + keywords='keycloak openid', + description=u'python-keycloak is a Python package providing access to the Keycloak API.', + packages=['keycloak', 'keycloak.authorization', 'keycloak.tests'], + install_requires=['requests==2.18.4', 'httmock==1.2.5', 'python-jose==1.4.0'], + classifiers=[ + 'Programming Language :: Python :: 3', + 'License :: OSI Approved :: GNU General Public License v3 (GPLv3)', + 'Development Status :: 3 - Alpha', + 'Operating System :: MacOS', + 'Operating System :: Unix', + 'Operating System :: Microsoft :: Windows', + 'Topic :: Utilities' + ] +) diff --git a/ansible/roles/sunbird-auth-deploy/tasks/bootstrap.yml b/ansible/roles/sunbird-auth-deploy/tasks/bootstrap.yml new file mode 100644 index 0000000000..9389b39bdb --- /dev/null +++ b/ansible/roles/sunbird-auth-deploy/tasks/bootstrap.yml @@ -0,0 +1,77 @@ +- name: start service + become: yes + command: /etc/init.d/keycloak start + poll: 5 + async: 5 + ignore_errors: yes + +- name: Create admin user + become_user: "{{ wildfly_user }}" + command: "{{ wildfly_dir }}/bin/add-user-keycloak.sh -r master -u {{ keycloak_management_user }} -p {{ keycloak_management_password }}" + when: keycloak_management_user is defined and + keycloak_management_password is defined + ignore_errors: yes + +- name: status service + become: yes + command: /etc/init.d/keycloak status + register: keycloak + poll: 5 + async: 10 + +- name: stop service + become: yes + command: /etc/init.d/keycloak stop && Pkill keycloak + when: "keycloak.stdout.find('running') != -1" + poll: 5 + async: 10 + ignore_errors: yes + +- name: start service + become: yes + command: /etc/init.d/keycloak start + poll: 5 + async: 5 + +- name: Waiting Until Keycloak is fully functional + wait_for: + host: "{{ inventory_hostname }}" + port: 8080 + delay: 5 + +- name: Install dependencies for keycloak + apt: + name: "{{item}}" + update_cache: yes + with_items: + - python-pip + - python-setuptools + +- name: Copying python libraries + copy: src={{ role_path }}/files/python-keycloak-0.12.0 dest=/tmp/ + +- name: Initialize python library to run keycloak bootstrap script + shell: cd /tmp/python-keycloak-0.12.0 && python setup.py install + +- name: Save keycalok vars to json + template: src="keycloak-bootstrap.conf.j2" dest="/tmp/keycloak-bootstrap.conf.json" mode="0644" + +- name: Copy realm json file to tmp location + template: src="keycloak-realm.j2" dest="/tmp/keycloak-realm.json" mode="0644" + +- name: Copy user manager roles file to tmp location + copy: src="files/python-keycloak-0.12.0/roles.json" dest="/tmp/roles.json" mode="0644" + +- name: Pausing for 100 seconds sometime for keycloak to run completely + pause: + seconds: 10 + +- name: Copy the keycloak bootstrap script + copy: src={{ role_path }}/files/python-keycloak-0.12.0/keycloak dest=/tmp + +- name: Run the keycloak bootstrap script + shell: cd /tmp/keycloak/ && python keycloak_main.py /tmp/keycloak-bootstrap.conf.json + register: out + until: '"404" not in out.stderr' + retries: 2 + delay: 10 diff --git a/ansible/roles/sunbird-auth-deploy/tasks/deploy.yml b/ansible/roles/sunbird-auth-deploy/tasks/deploy.yml new file mode 100644 index 0000000000..a91a1cb549 --- /dev/null +++ b/ansible/roles/sunbird-auth-deploy/tasks/deploy.yml @@ -0,0 +1,109 @@ +- name: Create required directories + file: + path: "{{ item.dest }}" + mode: "{{item.mode}}" + state: directory + with_items: + - { dest: '{{keycloak_home}}/providers', mode: '0755'} + - { dest: '{{keycloak_home}}/modules/system/layers/keycloak/org/postgresql/main', mode: '0755'} + - { dest: '{{keycloak_home}}/themes/{{tenant_name}}/login/messages', mode: '0755'} + - { dest: '{{keycloak_home}}/themes/{{tenant_name}}/login/resources/css/fonts/notosans', mode: '0755'} + - { dest: '{{keycloak_home}}/themes/{{tenant_name}}/login/resources/css/themes/default/assets/fonts', mode: '0755'} + - { dest: '{{keycloak_home}}/themes/{{tenant_name}}/login/resources/img', mode: '0755'} + - { dest: '{{keycloak_home}}/themes/{{tenant_name}}/login/resources/js', mode: '0755'} + - { dest: '{{keycloak_home}}/themes/{{tenant_name}}/email/html', mode: '0755'} + - { dest: '{{keycloak_home}}/themes/{{tenant_name}}/email/messages', mode: '0755'} + - { dest: '{{keycloak_home}}/themes/{{tenant_name}}/email/text', mode: '0755'} + +- name: Copy login theme + copy: src="{{login_theme}}/" dest="{{keycloak_home}}/themes/{{tenant_name}}/login/" force="yes" + +- name: Copy Custom Validation theme html to login theme + copy: src="../../../sunbird-auth/keycloak/sms-provider/templates/" dest="{{keycloak_home}}/themes/{{tenant_name}}/login/" force="yes" + +- name: Copy email theme + copy: src="{{email_theme}}/" dest="{{keycloak_home}}/themes/{{tenant_name}}/email/" force="yes" + +- name: Create directory for sunbird auth package config + file: + path: sunbird_auth_{{sunbird_auth_version}}.config + state: directory + mode: 0755 + +- name: Keycloak configuration XML file + template: + src: "roles/sunbird-auth-deploy/templates/standalone-ha.xml" + dest: "sunbird_auth_{{sunbird_auth_version}}.config/standalone-ha.xml" + mode: 0750 + +- name: Postgresql Configuration- module.xml + template: + src: "roles/sunbird-auth-deploy/templates/module.xml.j2" + dest: "sunbird_auth_{{sunbird_auth_version}}.config/module.xml" + mode: 0750 + +- name: SMS provider configuration file + template: + src: "roles/sunbird-auth-deploy/templates/Msg91Creds.json.j2" + dest: "sunbird_auth_{{sunbird_auth_version}}.config/Msg91Creds.json" + mode: 0755 + when: "{{ msg_91_required|default(false) }}" + ignore_errors: yes + +- name: status service + become: yes + command: /etc/init.d/keycloak status + register: keycloak + poll: 5 + async: 10 + +- name: stop service + become: yes + command: /etc/init.d/keycloak stop && Pkill keycloak + when: "keycloak.stdout.find('running') != -1" + poll: 5 + async: 10 + ignore_errors: yes + +- name: Keycloak configuration XML file + copy: + src: "sunbird_auth_{{sunbird_auth_version}}.config/standalone-ha.xml" + dest: "{{keycloak_home}}/standalone/configuration/standalone-ha.xml" + mode: 0750 + owner: "{{wildfly_user}}" + group: "{{wildfly_group}}" + remote_src: yes + +- name: Postgresql Configuration- module.xml + copy: + src: "sunbird_auth_{{sunbird_auth_version}}.config/module.xml" + dest: "{{keycloak_home}}/modules/system/layers/keycloak/org/postgresql/main/module.xml" + mode: 0750 + owner: "{{wildfly_user}}" + group: "{{wildfly_group}}" + remote_src: yes + +- name: Create a directory for SMS provider configuration + file: + path: "{{keycloak_home}}/bin/sms-provider" + state: directory + mode: 0755 + when: "{{ msg_91_required|default(false) }}" + ignore_errors: yes + +- name: SMS provider configuration file + copy: + src: "sunbird_auth_{{sunbird_auth_version}}.config/Msg91Creds.json" + dest: "{{keycloak_home}}/bin/sms-provider/Msg91Creds.json" + owner: "{{wildfly_user}}" + group: "{{wildfly_group}}" + mode: 0755 + remote_src: yes + when: "{{ msg_91_required|default(false) }}" + ignore_errors: yes + +- name: start service + become: yes + command: /etc/init.d/keycloak start + poll: 5 + async: 5 diff --git a/ansible/roles/sunbird-auth-deploy/tasks/main.yml b/ansible/roles/sunbird-auth-deploy/tasks/main.yml new file mode 100644 index 0000000000..3c5bbefeb3 --- /dev/null +++ b/ansible/roles/sunbird-auth-deploy/tasks/main.yml @@ -0,0 +1,7 @@ +- include: deploy.yml + tags: + - deploy + +- include: bootstrap.yml + tags: + - bootstrap diff --git a/ansible/roles/sunbird-auth-deploy/templates/Msg91Creds.json.j2 b/ansible/roles/sunbird-auth-deploy/templates/Msg91Creds.json.j2 new file mode 100644 index 0000000000..d584b8be72 --- /dev/null +++ b/ansible/roles/sunbird-auth-deploy/templates/Msg91Creds.json.j2 @@ -0,0 +1,7 @@ +{ + "auth_key": "{{vault_auth_key}}", + "sender": "{{vault_sender}}", + "country": "{{vault_country}}", + "route": "{{vault_route}}", + "sms_method_type": "{{vault_sms_method_type}}" +} diff --git a/ansible/roles/sunbird-auth-deploy/templates/keycloak-bootstrap.conf.j2 b/ansible/roles/sunbird-auth-deploy/templates/keycloak-bootstrap.conf.j2 new file mode 100644 index 0000000000..32b567707b --- /dev/null +++ b/ansible/roles/sunbird-auth-deploy/templates/keycloak-bootstrap.conf.j2 @@ -0,0 +1,13 @@ +{ + "keycloak_auth_server_url": "{{ keycloak_auth_server_url }}/", + "keycloak_management_user": "{{ keycloak_management_user }}", + "keycloak_management_password": "{{ keycloak_management_password }}", + "keycloak_realm": "{{ keycloak_realm }}", + "keycloak_realm_json_file_path": "/tmp/keycloak-realm.json", + "keycloak_user_manager_roles_json_file_path": "/tmp/roles.json", + "keycloak_api_management_username": "{{ keycloak_api_management_username }}", + "keycloak_api_management_user_email": "{{ keycloak_api_management_user_email }}", + "keycloak_api_management_user_first_name": "{{ keycloak_api_management_user_first_name }}", + "keycloak_api_management_user_last_name": "{{ keycloak_api_management_user_last_name }}", + "keycloak_api_management_user_password": "{{ keycloak_api_management_user_password }}" +} diff --git a/ansible/roles/sunbird-auth-deploy/templates/keycloak-realm.j2 b/ansible/roles/sunbird-auth-deploy/templates/keycloak-realm.j2 new file mode 100644 index 0000000000..a8d199ed53 --- /dev/null +++ b/ansible/roles/sunbird-auth-deploy/templates/keycloak-realm.j2 @@ -0,0 +1,2388 @@ +{ + "id": "sunbird", + "realm": "sunbird", + "notBefore": 1548955037, + "revokeRefreshToken": false, + "accessTokenLifespan": 86400, + "accessTokenLifespanForImplicitFlow": 5184000, + "ssoSessionIdleTimeout": 86400, + "ssoSessionMaxLifespan": 86400, + "offlineSessionIdleTimeout": 15552000, + "accessCodeLifespan": 60, + "accessCodeLifespanUserAction": 300, + "accessCodeLifespanLogin": 43200, + "actionTokenGeneratedByAdminLifespan": 43200, + "actionTokenGeneratedByUserLifespan": 300, + "enabled": true, + "sslRequired": {{ '"none"' if proto=='http' else '"external"' }}, + "registrationAllowed": true, + "registrationEmailAsUsername": false, + "rememberMe": true, + "verifyEmail": false, + "loginWithEmailAllowed": true, + "duplicateEmailsAllowed": false, + "resetPasswordAllowed": true, + "editUsernameAllowed": false, + "bruteForceProtected": true, + "permanentLockout": false, + "maxFailureWaitSeconds": 900, + "minimumQuickLoginWaitSeconds": 60, + "waitIncrementSeconds": 60, + "quickLoginCheckMilliSeconds": 1000, + "maxDeltaTimeSeconds": 43200, + "failureFactor": 30, + "roles": { + "realm": [ + { + "id": "7b955d7f-0a1e-4935-8391-642886d34612", + "name": "offline_access", + "description": "${role_offline-access}", + "scopeParamRequired": true, + "composite": false, + "clientRole": false, + "containerId": "sunbird" + }, + { + "id": "d6e505fe-c3c5-4689-946e-7f69d3f64c6c", + "name": "admin", + "description": "role_admin", + "scopeParamRequired": false, + "composite": true, + "composites": { + "realm": [ + "offline_access", + "uma_authorization" + ] + }, + "clientRole": false, + "containerId": "sunbird" + }, + { + "id": "96adf368-c8e2-4b39-b2a5-2559573edb63", + "name": "uma_authorization", + "description": "${role_uma_authorization}", + "scopeParamRequired": false, + "composite": false, + "clientRole": false, + "containerId": "sunbird" + } + ], + "client": { + "realm-management": [ + { + "id": "3f8bf7e5-5d66-4394-8f06-1270529c605f", + "name": "manage-authorization", + "description": "${role_manage-authorization}", + "scopeParamRequired": false, + "composite": false, + "clientRole": true, + "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" + }, + { + "id": "601fa2c9-29d4-49c1-87ac-939a1260f6ce", + "name": "query-realms", + "description": "${role_query-realms}", + "scopeParamRequired": false, + "composite": false, + "clientRole": true, + "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" + }, + { + "id": "9aa1dcd9-cb93-4496-af5f-41b9ecacc1da", + "name": "view-authorization", + "description": "${role_view-authorization}", + "scopeParamRequired": false, + "composite": false, + "clientRole": true, + "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" + }, + { + "id": "98999987-faf5-4c4e-958a-e5463bc4edc6", + "name": "manage-events", + "description": "${role_manage-events}", + "scopeParamRequired": false, + "composite": false, + "clientRole": true, + "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" + }, + { + "id": "f898fca8-5361-49d5-900a-ebf5b775a939", + "name": "impersonation", + "description": "${role_impersonation}", + "scopeParamRequired": false, + "composite": false, + "clientRole": true, + "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" + }, + { + "id": "698dfeb0-b8d2-4240-b8a8-acd4b7a12ad3", + "name": "view-realm", + "description": "${role_view-realm}", + "scopeParamRequired": false, + "composite": false, + "clientRole": true, + "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" + }, + { + "id": "3ff462fc-b33c-431a-b54b-861c3298d910", + "name": "manage-users", + "description": "${role_manage-users}", + "scopeParamRequired": false, + "composite": false, + "clientRole": true, + "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" + }, + { + "id": "be1802b1-558c-404c-bcb9-b9bf77af9788", + "name": "manage-identity-providers", + "description": "${role_manage-identity-providers}", + "scopeParamRequired": false, + "composite": false, + "clientRole": true, + "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" + }, + { + "id": "387b44e4-e901-4431-b9af-6abd9377ed46", + "name": "query-clients", + "description": "${role_query-clients}", + "scopeParamRequired": false, + "composite": false, + "clientRole": true, + "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" + }, + { + "id": "a408b6e8-03c9-46a2-97ba-305d09db0c3c", + "name": "view-events", + "description": "${role_view-events}", + "scopeParamRequired": false, + "composite": false, + "clientRole": true, + "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" + }, + { + "id": "41c2f39a-3008-4f9d-9e1e-a7738c118570", + "name": "query-groups", + "description": "${role_query-groups}", + "scopeParamRequired": false, + "composite": false, + "clientRole": true, + "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" + }, + { + "id": "26d3289b-d2eb-4cf2-a501-f1e3fa07344c", + "name": "manage-clients", + "description": "${role_manage-clients}", + "scopeParamRequired": false, + "composite": false, + "clientRole": true, + "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" + }, + { + "id": "e2077ab0-6efb-450d-9cba-89cacd887b71", + "name": "create-client", + "description": "${role_create-client}", + "scopeParamRequired": false, + "composite": false, + "clientRole": true, + "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" + }, + { + "id": "46019462-3dc8-46a8-9786-ffcbad293f43", + "name": "view-users", + "description": "${role_view-users}", + "scopeParamRequired": false, + "composite": true, + "composites": { + "client": { + "realm-management": [ + "query-groups", + "query-users" + ] + } + }, + "clientRole": true, + "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" + }, + { + "id": "d269f220-e93f-4b43-96a1-9f2c117a2dfb", + "name": "view-clients", + "description": "${role_view-clients}", + "scopeParamRequired": false, + "composite": true, + "composites": { + "client": { + "realm-management": [ + "query-clients" + ] + } + }, + "clientRole": true, + "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" + }, + { + "id": "0c998f1b-7363-47fb-a493-4b6f4aacb0ba", + "name": "realm-admin", + "description": "${role_realm-admin}", + "scopeParamRequired": false, + "composite": true, + "composites": { + "client": { + "realm-management": [ + "manage-authorization", + "query-realms", + "view-authorization", + "manage-events", + "impersonation", + "view-realm", + "manage-users", + "manage-identity-providers", + "query-clients", + "view-events", + "query-groups", + "manage-clients", + "create-client", + "view-users", + "view-clients", + "manage-realm", + "view-identity-providers", + "query-users" + ] + } + }, + "clientRole": true, + "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" + }, + { + "id": "d77bf5a5-5877-450b-b11e-5f874f410e10", + "name": "manage-realm", + "description": "${role_manage-realm}", + "scopeParamRequired": false, + "composite": false, + "clientRole": true, + "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" + }, + { + "id": "d97009ed-d0c7-4afb-b9a3-6ee03ef01a74", + "name": "view-identity-providers", + "description": "${role_view-identity-providers}", + "scopeParamRequired": false, + "composite": false, + "clientRole": true, + "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" + }, + { + "id": "57118202-c5e5-4c49-829b-c2ed796bfdea", + "name": "query-users", + "description": "${role_query-users}", + "scopeParamRequired": false, + "composite": false, + "clientRole": true, + "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" + } + ], + "security-admin-console": [], + "android": [], + "admin-cli": [ + { + "id": "30ab6b4f-b17c-4fff-a5fa-1181686bb409", + "name": "admin", + "description": "admin role", + "scopeParamRequired": false, + "composite": true, + "composites": { + "realm": [ + "offline_access", + "admin", + "uma_authorization" + ] + }, + "clientRole": true, + "containerId": "8891d8e9-35e6-4a1c-b32b-027be03b0f24" + } + ], + "trampoline": [], + "broker": [ + { + "id": "19ef58ac-2d90-40a4-a158-0e2f8893264a", + "name": "read-token", + "description": "${role_read-token}", + "scopeParamRequired": false, + "composite": false, + "clientRole": true, + "containerId": "c3950efa-6684-44c2-b50a-c7b3d16df04b" + } + ], + "portal": [], + "account": [ + { + "id": "1fef7ac5-b042-462b-8298-0446044788b3", + "name": "manage-account", + "description": "${role_manage-account}", + "scopeParamRequired": false, + "composite": true, + "composites": { + "client": { + "account": [ + "manage-account-links" + ] + } + }, + "clientRole": true, + "containerId": "c2d24d3f-65ca-46de-9cd8-3eeb71a7f83d" + }, + { + "id": "f8786348-6fa4-4b13-828e-9f080c9c6824", + "name": "manage-account-links", + "description": "${role_manage-account-links}", + "scopeParamRequired": false, + "composite": false, + "clientRole": true, + "containerId": "c2d24d3f-65ca-46de-9cd8-3eeb71a7f83d" + }, + { + "id": "91c5c738-9c39-4c4d-bae8-75f18fd7c5e4", + "name": "view-profile", + "description": "${role_view-profile}", + "scopeParamRequired": false, + "composite": false, + "clientRole": true, + "containerId": "c2d24d3f-65ca-46de-9cd8-3eeb71a7f83d" + } + ], + "google-auth": [] + } + }, + "groups": [], + "defaultRoles": [ + "offline_access", + "uma_authorization" + ], + "requiredCredentials": [ + "password" + ], + "passwordPolicy": "hashIterations(20000)", + "otpPolicyType": "totp", + "otpPolicyAlgorithm": "HmacSHA1", + "otpPolicyInitialCounter": 0, + "otpPolicyDigits": 6, + "otpPolicyLookAheadWindow": 1, + "otpPolicyPeriod": 120, + "clientScopeMappings": { + "realm-management": [ + { + "client": "admin-cli", + "roles": [ + "realm-admin" + ] + }, + { + "client": "security-admin-console", + "roles": [ + "realm-admin" + ] + } + ] + }, + "clients": [ + { + "id": "9a901d18-377b-4615-9b89-677b544be3c5", + "clientId": "trampoline", + "rootUrl": "{{proto}}://{{proxy_server_name}}", + "adminUrl": "", + "baseUrl": "/", + "surrogateAuthRequired": false, + "enabled": true, + "clientAuthenticatorType": "client-secret", + "secret": "{{sunbird_trampoline_secret}}", + "redirectUris": [], + "webOrigins": [], + "notBefore": 0, + "bearerOnly": false, + "consentRequired": false, + "standardFlowEnabled": false, + "implicitFlowEnabled": false, + "directAccessGrantsEnabled": true, + "serviceAccountsEnabled": false, + "publicClient": false, + "frontchannelLogout": false, + "protocol": "openid-connect", + "attributes": { + "saml.assertion.signature": "false", + "saml.force.post.binding": "false", + "saml.multivalued.roles": "false", + "saml.encrypt": "false", + "saml_force_name_id_format": "false", + "saml.client.signature": "false", + "saml.authnstatement": "false", + "saml.server.signature": "false", + "saml.server.signature.keyinfo.ext": "false", + "saml.onetimeuse.condition": "false" + }, + "fullScopeAllowed": true, + "nodeReRegistrationTimeout": -1, + "protocolMappers": [ + { + "id": "12134027-94cc-401c-bbf6-be565078ddfb", + "name": "role list", + "protocol": "saml", + "protocolMapper": "saml-role-list-mapper", + "consentRequired": false, + "config": { + "single": "false", + "attribute.nameformat": "Basic", + "attribute.name": "Role" + } + }, + { + "id": "6a956bf1-6c40-4549-b335-9fe8c788b18f", + "name": "family name", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${familyName}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "lastName", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "family_name", + "jsonType.label": "String" + } + }, + { + "id": "d32ba1d4-3fef-42ff-aa2b-98cb4bfef6f9", + "name": "full name", + "protocol": "openid-connect", + "protocolMapper": "oidc-full-name-mapper", + "consentRequired": true, + "consentText": "${fullName}", + "config": { + "id.token.claim": "true", + "access.token.claim": "true", + "userinfo.token.claim": "true" + } + }, + { + "id": "9e899fc7-1ddd-447d-810c-d91333d6621c", + "name": "username", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${username}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "username", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "preferred_username", + "jsonType.label": "String" + } + }, + { + "id": "74e4d13f-bd02-4f17-bbbc-d4b79bab1971", + "name": "email", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${email}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "email", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "email", + "jsonType.label": "String" + } + }, + { + "id": "48fe23c2-a6fb-4c5e-8930-28ad1913829a", + "name": "given name", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${givenName}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "firstName", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "given_name", + "jsonType.label": "String" + } + } + ], + "useTemplateConfig": false, + "useTemplateScope": false, + "useTemplateMappers": false + }, + { + "id": "da893beb-6ac7-420d-b51b-f05dadf56bbc", + "clientId": "android", + "rootUrl": "{{proto}}://{{proxy_server_name}}", + "baseUrl": "/", + "surrogateAuthRequired": false, + "enabled": true, + "clientAuthenticatorType": "client-secret", + "secret": "", + "redirectUris": ["{{proto}}://{{proxy_server_name}}/oauth2callback"], + "webOrigins": [], + "notBefore": 0, + "bearerOnly": false, + "consentRequired": false, + "standardFlowEnabled": true, + "implicitFlowEnabled": false, + "directAccessGrantsEnabled": true, + "serviceAccountsEnabled": false, + "publicClient": true, + "frontchannelLogout": false, + "protocol": "openid-connect", + "attributes": { + "saml.assertion.signature": "false", + "saml.force.post.binding": "false", + "saml.multivalued.roles": "false", + "saml.encrypt": "false", + "saml_force_name_id_format": "false", + "saml.client.signature": "false", + "saml.authnstatement": "false", + "saml.server.signature": "false", + "saml.server.signature.keyinfo.ext": "false", + "saml.onetimeuse.condition": "false" + }, + "fullScopeAllowed": true, + "nodeReRegistrationTimeout": -1, + "protocolMappers": [ + { + "id": "ff7dac46-16b4-4ab6-a054-dd03d5411fa9", + "name": "role list", + "protocol": "saml", + "protocolMapper": "saml-role-list-mapper", + "consentRequired": false, + "config": { + "single": "false", + "attribute.nameformat": "Basic", + "attribute.name": "Role" + } + }, + { + "id": "32fad9c0-0dfe-45b2-94a1-3e2f74d756ec", + "name": "family name", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${familyName}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "lastName", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "family_name", + "jsonType.label": "String" + } + }, + { + "id": "4fb4d644-c609-4a27-a407-d451bcd83e16", + "name": "given name", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${givenName}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "firstName", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "given_name", + "jsonType.label": "String" + } + }, + { + "id": "84e7c6e5-1afb-44d8-b507-1ed31fa0f351", + "name": "email", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${email}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "email", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "email", + "jsonType.label": "String" + } + }, + { + "id": "e7ca189f-94de-4996-a192-e93ba960bbba", + "name": "full name", + "protocol": "openid-connect", + "protocolMapper": "oidc-full-name-mapper", + "consentRequired": true, + "consentText": "${fullName}", + "config": { + "id.token.claim": "true", + "access.token.claim": "true", + "userinfo.token.claim": "true" + } + }, + { + "id": "16bedb3b-7571-4106-9a47-66151915ac31", + "name": "username", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${username}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "username", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "preferred_username", + "jsonType.label": "String" + } + } + ], + "useTemplateConfig": false, + "useTemplateScope": false, + "useTemplateMappers": false + }, + { + "id": "647aa742-d849-41d2-b174-c06b59e6d5b6", + "clientId": "google-auth", + "rootUrl": "{{proto}}://{{proxy_server_name}}", + "adminUrl": "", + "baseUrl": "/", + "surrogateAuthRequired": false, + "enabled": true, + "clientAuthenticatorType": "client-secret", + "secret": "", + "redirectUris": ["{{proto}}://{{proxy_server_name}}/private/*"], + "webOrigins": [], + "notBefore": 0, + "bearerOnly": false, + "consentRequired": false, + "standardFlowEnabled": false, + "implicitFlowEnabled": false, + "directAccessGrantsEnabled": true, + "serviceAccountsEnabled": false, + "publicClient": false, + "frontchannelLogout": false, + "protocol": "openid-connect", + "attributes": { + "saml.assertion.signature": "false", + "saml.force.post.binding": "false", + "saml.multivalued.roles": "false", + "saml.encrypt": "false", + "saml_force_name_id_format": "false", + "saml.client.signature": "false", + "saml.authnstatement": "false", + "saml.server.signature": "false", + "saml.server.signature.keyinfo.ext": "false", + "saml.onetimeuse.condition": "false" + }, + "fullScopeAllowed": true, + "nodeReRegistrationTimeout": -1, + "protocolMappers": [ + { + "id": "4b3632c9-8055-4f9f-9702-3c975d93bf8d", + "name": "full name", + "protocol": "openid-connect", + "protocolMapper": "oidc-full-name-mapper", + "consentRequired": true, + "consentText": "${fullName}", + "config": { + "id.token.claim": "true", + "access.token.claim": "true", + "userinfo.token.claim": "true" + } + }, + { + "id": "bdb4cdf5-0ee5-475b-bb47-25a5f90f1305", + "name": "username", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${username}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "username", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "preferred_username", + "jsonType.label": "String" + } + }, + { + "id": "702df96e-686f-4b68-bafd-1cb820fff7fb", + "name": "family name", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${familyName}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "lastName", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "family_name", + "jsonType.label": "String" + } + }, + { + "id": "03617f2e-6b45-4844-a81c-0df09ea89988", + "name": "role list", + "protocol": "saml", + "protocolMapper": "saml-role-list-mapper", + "consentRequired": false, + "config": { + "single": "false", + "attribute.nameformat": "Basic", + "attribute.name": "Role" + } + }, + { + "id": "b38527eb-dbed-4868-8075-69038ee3072a", + "name": "given name", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${givenName}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "firstName", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "given_name", + "jsonType.label": "String" + } + }, + { + "id": "93b57ddf-9f32-4c0e-95eb-258ad19693db", + "name": "email", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${email}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "email", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "email", + "jsonType.label": "String" + } + } + ], + "useTemplateConfig": false, + "useTemplateScope": false, + "useTemplateMappers": false + }, + { + "id": "8891d8e9-35e6-4a1c-b32b-027be03b0f24", + "clientId": "admin-cli", + "name": "${client_admin-cli}", + "rootUrl": "{{proto}}://{{proxy_server_name}}", + "adminUrl": "{{proto}}://{{proxy_server_name}}/*", + "baseUrl": "/", + "surrogateAuthRequired": false, + "enabled": true, + "clientAuthenticatorType": "client-secret", + "secret": "", + "redirectUris": [ + "{{proto}}://{{proxy_server_name}}/*", + "{{proto}}://{{proxy_server_name}}/" + ], + "webOrigins": [], + "notBefore": 0, + "bearerOnly": false, + "consentRequired": false, + "standardFlowEnabled": false, + "implicitFlowEnabled": true, + "directAccessGrantsEnabled": true, + "serviceAccountsEnabled": false, + "publicClient": true, + "frontchannelLogout": false, + "protocol": "openid-connect", + "attributes": { + "saml.assertion.signature": "false", + "saml.force.post.binding": "false", + "saml.multivalued.roles": "false", + "saml.encrypt": "false", + "saml_force_name_id_format": "false", + "saml.client.signature": "false", + "saml.authnstatement": "false", + "saml.server.signature": "false", + "saml.server.signature.keyinfo.ext": "false", + "saml.onetimeuse.condition": "false" + }, + "fullScopeAllowed": false, + "nodeReRegistrationTimeout": 0, + "protocolMappers": [ + { + "id": "32d6a3a4-8635-4a36-bd14-8ac5b73a49cc", + "name": "full name", + "protocol": "openid-connect", + "protocolMapper": "oidc-full-name-mapper", + "consentRequired": true, + "consentText": "${fullName}", + "config": { + "id.token.claim": "true", + "access.token.claim": "true", + "userinfo.token.claim": "true" + } + }, + { + "id": "900fa741-d1b2-467e-88a6-b454a9519568", + "name": "given name", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${givenName}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "firstName", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "given_name", + "jsonType.label": "String" + } + }, + { + "id": "8ea14714-d160-49b8-b612-59102d50ef53", + "name": "family name", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${familyName}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "lastName", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "family_name", + "jsonType.label": "String" + } + }, + { + "id": "bd167b99-5d23-49c1-90c7-85c2b088fed7", + "name": "role list", + "protocol": "saml", + "protocolMapper": "saml-role-list-mapper", + "consentRequired": false, + "config": { + "single": "false", + "attribute.nameformat": "Basic", + "attribute.name": "Role" + } + }, + { + "id": "c4fe56a1-8d15-455a-b87b-cf051454b57c", + "name": "username", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${username}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "username", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "preferred_username", + "jsonType.label": "String" + } + }, + { + "id": "26e3bf4c-8f9a-4548-b0db-5bbb7c398991", + "name": "email", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${email}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "email", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "email", + "jsonType.label": "String" + } + } + ], + "useTemplateConfig": false, + "useTemplateScope": false, + "useTemplateMappers": false + }, + { + "id": "c3950efa-6684-44c2-b50a-c7b3d16df04b", + "clientId": "broker", + "name": "${client_broker}", + "surrogateAuthRequired": false, + "enabled": true, + "clientAuthenticatorType": "client-secret", + "secret": "", + "redirectUris": [], + "webOrigins": [], + "notBefore": 0, + "bearerOnly": false, + "consentRequired": false, + "standardFlowEnabled": true, + "implicitFlowEnabled": false, + "directAccessGrantsEnabled": false, + "serviceAccountsEnabled": false, + "publicClient": false, + "frontchannelLogout": false, + "protocol": "openid-connect", + "attributes": {}, + "fullScopeAllowed": false, + "nodeReRegistrationTimeout": 0, + "protocolMappers": [ + { + "id": "54c3bbc3-850b-4636-82d1-ed4f3a46a00a", + "name": "username", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${username}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "username", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "preferred_username", + "jsonType.label": "String" + } + }, + { + "id": "0f0d9b74-c476-4981-a783-dd4bdbe041ec", + "name": "role list", + "protocol": "saml", + "protocolMapper": "saml-role-list-mapper", + "consentRequired": false, + "config": { + "single": "false", + "attribute.nameformat": "Basic", + "attribute.name": "Role" + } + }, + { + "id": "d6f625cc-eac1-49d0-bea5-17e6f9d3860c", + "name": "given name", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${givenName}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "firstName", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "given_name", + "jsonType.label": "String" + } + }, + { + "id": "bbf35056-9bbe-49a0-aefc-2bde2379ccdc", + "name": "family name", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${familyName}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "lastName", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "family_name", + "jsonType.label": "String" + } + }, + { + "id": "38b04951-1043-4dc6-9504-7b0f31ed71a4", + "name": "email", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${email}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "email", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "email", + "jsonType.label": "String" + } + }, + { + "id": "88bb836b-7feb-45eb-b004-fb3be8436908", + "name": "full name", + "protocol": "openid-connect", + "protocolMapper": "oidc-full-name-mapper", + "consentRequired": true, + "consentText": "${fullName}", + "config": { + "id.token.claim": "true", + "access.token.claim": "true", + "userinfo.token.claim": "true" + } + } + ], + "useTemplateConfig": false, + "useTemplateScope": false, + "useTemplateMappers": false + }, + { + "id": "b2f45201-1362-4b10-83c3-207d470f44bf", + "clientId": "realm-management", + "name": "${client_realm-management}", + "surrogateAuthRequired": false, + "enabled": true, + "clientAuthenticatorType": "client-secret", + "secret": "", + "redirectUris": [], + "webOrigins": [], + "notBefore": 0, + "bearerOnly": true, + "consentRequired": false, + "standardFlowEnabled": true, + "implicitFlowEnabled": false, + "directAccessGrantsEnabled": false, + "serviceAccountsEnabled": false, + "authorizationServicesEnabled": true, + "publicClient": false, + "frontchannelLogout": false, + "protocol": "openid-connect", + "attributes": {}, + "fullScopeAllowed": false, + "nodeReRegistrationTimeout": 0, + "protocolMappers": [ + { + "id": "71605238-bf41-400e-8c03-a5d78f54b00b", + "name": "email", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${email}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "email", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "email", + "jsonType.label": "String" + } + }, + { + "id": "a0cb6f3a-30ef-4475-b73f-ca6c2f1f3675", + "name": "given name", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${givenName}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "firstName", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "given_name", + "jsonType.label": "String" + } + }, + { + "id": "3a7708b1-63b9-4116-af7f-969fc1bf61a4", + "name": "role list", + "protocol": "saml", + "protocolMapper": "saml-role-list-mapper", + "consentRequired": false, + "config": { + "single": "false", + "attribute.nameformat": "Basic", + "attribute.name": "Role" + } + }, + { + "id": "c393d7b7-fa22-4e90-9ad7-07d520632c20", + "name": "username", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${username}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "username", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "preferred_username", + "jsonType.label": "String" + } + }, + { + "id": "e77aae69-8ea4-4ee4-bcd6-ba7ef3958c02", + "name": "full name", + "protocol": "openid-connect", + "protocolMapper": "oidc-full-name-mapper", + "consentRequired": true, + "consentText": "${fullName}", + "config": { + "id.token.claim": "true", + "access.token.claim": "true", + "userinfo.token.claim": "true" + } + }, + { + "id": "2d8cbac4-e4dd-4fa6-bf71-98adf826b9dd", + "name": "family name", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${familyName}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "lastName", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "family_name", + "jsonType.label": "String" + } + } + ], + "useTemplateConfig": false, + "useTemplateScope": false, + "useTemplateMappers": false, + "authorizationSettings": { + "allowRemoteResourceManagement": false, + "policyEnforcementMode": "ENFORCING", + "resources": [ + { + "name": "role.resource.30ab6b4f-b17c-4fff-a5fa-1181686bb409", + "type": "Role", + "scopes": [ + { + "name": "map-role-composite" + }, + { + "name": "map-role-client-scope" + }, + { + "name": "map-role" + } + ], + "typedScopes": [] + }, + { + "name": "role.resource.d6e505fe-c3c5-4689-946e-7f69d3f64c6c", + "type": "Role", + "scopes": [ + { + "name": "map-role-composite" + }, + { + "name": "map-role-client-scope" + }, + { + "name": "map-role" + } + ], + "typedScopes": [] + } + ], + "policies": [ + { + "name": "map-role-composite.permission.30ab6b4f-b17c-4fff-a5fa-1181686bb409", + "type": "scope", + "logic": "POSITIVE", + "decisionStrategy": "AFFIRMATIVE", + "config": { + "resources": "[\"role.resource.30ab6b4f-b17c-4fff-a5fa-1181686bb409\"]", + "scopes": "[\"map-role-composite\"]" + } + }, + { + "name": "map-role-client-scope.permission.30ab6b4f-b17c-4fff-a5fa-1181686bb409", + "type": "scope", + "logic": "POSITIVE", + "decisionStrategy": "AFFIRMATIVE", + "config": { + "resources": "[\"role.resource.30ab6b4f-b17c-4fff-a5fa-1181686bb409\"]", + "scopes": "[\"map-role-client-scope\"]" + } + }, + { + "name": "map-role.permission.30ab6b4f-b17c-4fff-a5fa-1181686bb409", + "type": "scope", + "logic": "POSITIVE", + "decisionStrategy": "AFFIRMATIVE", + "config": { + "resources": "[\"role.resource.30ab6b4f-b17c-4fff-a5fa-1181686bb409\"]", + "scopes": "[\"map-role\"]" + } + }, + { + "name": "map-role-composite.permission.d6e505fe-c3c5-4689-946e-7f69d3f64c6c", + "type": "scope", + "logic": "POSITIVE", + "decisionStrategy": "AFFIRMATIVE", + "config": { + "resources": "[\"role.resource.d6e505fe-c3c5-4689-946e-7f69d3f64c6c\"]", + "scopes": "[\"map-role-composite\"]" + } + }, + { + "name": "map-role-client-scope.permission.d6e505fe-c3c5-4689-946e-7f69d3f64c6c", + "type": "scope", + "logic": "POSITIVE", + "decisionStrategy": "AFFIRMATIVE", + "config": { + "resources": "[\"role.resource.d6e505fe-c3c5-4689-946e-7f69d3f64c6c\"]", + "scopes": "[\"map-role-client-scope\"]" + } + }, + { + "name": "map-role.permission.d6e505fe-c3c5-4689-946e-7f69d3f64c6c", + "type": "scope", + "logic": "POSITIVE", + "decisionStrategy": "AFFIRMATIVE", + "config": { + "resources": "[\"role.resource.d6e505fe-c3c5-4689-946e-7f69d3f64c6c\"]", + "scopes": "[\"map-role\"]" + } + } + ], + "scopes": [ + { + "name": "map-role-composite" + }, + { + "name": "map-role-client-scope" + }, + { + "name": "map-role" + } + ] + } + }, + { + "id": "8c12290d-d62f-48ce-913b-c93bf995ca59", + "clientId": "portal", + "rootUrl": "{{proto}}://{{proxy_server_name}}", + "adminUrl": "/callback", + "baseUrl": "/", + "surrogateAuthRequired": false, + "enabled": true, + "clientAuthenticatorType": "client-secret", + "secret": "", + "redirectUris": ["{{proto}}://{{proxy_server_name}}/private/*", "{{proto}}://{{proxy_server_name}}/","{{proto}}://{{proxy_server_name}}/*"], + "webOrigins": [ + "" + ], + "notBefore": 0, + "bearerOnly": false, + "consentRequired": false, + "standardFlowEnabled": true, + "implicitFlowEnabled": false, + "directAccessGrantsEnabled": false, + "serviceAccountsEnabled": false, + "publicClient": true, + "frontchannelLogout": false, + "protocol": "openid-connect", + "attributes": { + "saml.assertion.signature": "false", + "saml.force.post.binding": "false", + "saml.multivalued.roles": "false", + "saml.encrypt": "false", + "saml_force_name_id_format": "false", + "saml.client.signature": "false", + "saml.authnstatement": "false", + "saml.server.signature": "false", + "saml.server.signature.keyinfo.ext": "false", + "saml.onetimeuse.condition": "false" + }, + "fullScopeAllowed": true, + "nodeReRegistrationTimeout": -1, + "protocolMappers": [ + { + "id": "63071ff2-a5e5-4d38-b534-a9f25a075403", + "name": "full name", + "protocol": "openid-connect", + "protocolMapper": "oidc-full-name-mapper", + "consentRequired": true, + "consentText": "${fullName}", + "config": { + "id.token.claim": "true", + "access.token.claim": "true", + "userinfo.token.claim": "true" + } + }, + { + "id": "9bf9cad5-dbce-41e9-aa36-d84cc5a768a2", + "name": "username", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${username}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "username", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "preferred_username", + "jsonType.label": "String" + } + }, + { + "id": "238e55b7-6545-467e-856b-f95477afe1ff", + "name": "role list", + "protocol": "saml", + "protocolMapper": "saml-role-list-mapper", + "consentRequired": false, + "config": { + "single": "false", + "attribute.nameformat": "Basic", + "attribute.name": "Role" + } + }, + { + "id": "edb1ff4e-b452-46bc-8c3b-d6075f6ee579", + "name": "family name", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${familyName}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "lastName", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "family_name", + "jsonType.label": "String" + } + }, + { + "id": "7a0118e2-57ff-4d23-bf74-cbfe1f545d1d", + "name": "given name", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${givenName}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "firstName", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "given_name", + "jsonType.label": "String" + } + }, + { + "id": "b59a913e-118a-4dc4-a8d7-66c44ced5345", + "name": "email", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${email}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "email", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "email", + "jsonType.label": "String" + } + } + ], + "useTemplateConfig": false, + "useTemplateScope": false, + "useTemplateMappers": false + }, + { + "id": "79c518d7-b41a-4e6f-be42-4ef365824100", + "clientId": "security-admin-console", + "name": "${client_security-admin-console}", + "baseUrl": "/auth/admin/sunbird/console/index.html", + "surrogateAuthRequired": false, + "enabled": true, + "clientAuthenticatorType": "client-secret", + "secret": "", + "redirectUris": [ + "/auth/admin/sunbird/console/*" + ], + "webOrigins": [], + "notBefore": 0, + "bearerOnly": false, + "consentRequired": false, + "standardFlowEnabled": true, + "implicitFlowEnabled": false, + "directAccessGrantsEnabled": false, + "serviceAccountsEnabled": false, + "publicClient": true, + "frontchannelLogout": false, + "protocol": "openid-connect", + "attributes": {}, + "fullScopeAllowed": false, + "nodeReRegistrationTimeout": 0, + "protocolMappers": [ + { + "id": "c989a8c8-cb8b-40ff-b4b9-86122bad7aa9", + "name": "role list", + "protocol": "saml", + "protocolMapper": "saml-role-list-mapper", + "consentRequired": false, + "config": { + "single": "false", + "attribute.nameformat": "Basic", + "attribute.name": "Role" + } + }, + { + "id": "b180fb8c-997c-4f6a-b774-af677f903139", + "name": "family name", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${familyName}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "lastName", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "family_name", + "jsonType.label": "String" + } + }, + { + "id": "c373dc9a-49d7-4d28-9b94-06cf20fb1955", + "name": "full name", + "protocol": "openid-connect", + "protocolMapper": "oidc-full-name-mapper", + "consentRequired": true, + "consentText": "${fullName}", + "config": { + "id.token.claim": "true", + "access.token.claim": "true", + "userinfo.token.claim": "true" + } + }, + { + "id": "24c7b1c4-62c2-4d92-ab19-49bfaedcc3d4", + "name": "email", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${email}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "email", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "email", + "jsonType.label": "String" + } + }, + { + "id": "883a39a7-37b4-46ef-a761-3e51b95ccc35", + "name": "given name", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${givenName}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "firstName", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "given_name", + "jsonType.label": "String" + } + }, + { + "id": "95ed8e44-38cc-4f09-8adc-19c12d5eada0", + "name": "locale", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-attribute-mapper", + "consentRequired": false, + "consentText": "${locale}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "locale", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "locale", + "jsonType.label": "String" + } + }, + { + "id": "c66c6a41-eb22-443f-8a77-e68d404ad26f", + "name": "username", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${username}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "username", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "preferred_username", + "jsonType.label": "String" + } + } + ], + "useTemplateConfig": false, + "useTemplateScope": false, + "useTemplateMappers": false + }, + { + "id": "c2d24d3f-65ca-46de-9cd8-3eeb71a7f83d", + "clientId": "account", + "name": "${client_account}", + "baseUrl": "/auth/realms/sunbird/account", + "surrogateAuthRequired": false, + "enabled": true, + "clientAuthenticatorType": "client-secret", + "secret": "", + "defaultRoles": [ + "manage-account", + "view-profile" + ], + "redirectUris": [ + "/auth/realms/sunbird/account/*" + ], + "webOrigins": [], + "notBefore": 0, + "bearerOnly": false, + "consentRequired": false, + "standardFlowEnabled": true, + "implicitFlowEnabled": false, + "directAccessGrantsEnabled": false, + "serviceAccountsEnabled": false, + "publicClient": false, + "frontchannelLogout": false, + "protocol": "openid-connect", + "attributes": {}, + "fullScopeAllowed": false, + "nodeReRegistrationTimeout": 0, + "protocolMappers": [ + { + "id": "a64118ab-33c8-4060-9f3e-3ed817ba8e0d", + "name": "role list", + "protocol": "saml", + "protocolMapper": "saml-role-list-mapper", + "consentRequired": false, + "config": { + "single": "false", + "attribute.nameformat": "Basic", + "attribute.name": "Role" + } + }, + { + "id": "1f4a0c5e-7c8a-4693-8be5-14681b243868", + "name": "username", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${username}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "username", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "preferred_username", + "jsonType.label": "String" + } + }, + { + "id": "8d88a133-a399-4e75-b051-5b0d4ae850ab", + "name": "full name", + "protocol": "openid-connect", + "protocolMapper": "oidc-full-name-mapper", + "consentRequired": true, + "consentText": "${fullName}", + "config": { + "id.token.claim": "true", + "access.token.claim": "true", + "userinfo.token.claim": "true" + } + }, + { + "id": "45593258-916c-4158-8577-d9806c16415a", + "name": "email", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${email}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "email", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "email", + "jsonType.label": "String" + } + }, + { + "id": "027be48e-b7dc-4c3a-a648-414a466b67dd", + "name": "family name", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${familyName}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "lastName", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "family_name", + "jsonType.label": "String" + } + }, + { + "id": "c93937f9-0446-4be9-8b47-3c6de857497e", + "name": "given name", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": true, + "consentText": "${givenName}", + "config": { + "userinfo.token.claim": "true", + "user.attribute": "firstName", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "given_name", + "jsonType.label": "String" + } + } + ], + "useTemplateConfig": false, + "useTemplateScope": false, + "useTemplateMappers": false + } + ], + "clientTemplates": [], + "browserSecurityHeaders": { + "xContentTypeOptions": "nosniff", + "xRobotsTag": "none", + "xFrameOptions": "SAMEORIGIN", + "xXSSProtection": "1; mode=block", + "contentSecurityPolicy": "frame-src 'self'" + }, + "smtpServer": { + "password": "", + "starttls": "", + "auth": "true", + "port": "587", + "host": "", + "from": "", + "ssl": "", + "user": "" + }, + "loginTheme": "sunbird", + "accountTheme": "keycloak", + "adminTheme": "keycloak", + "emailTheme": "keycloak", + "eventsEnabled": false, + "eventsListeners": [ + "jboss-logging" + ], + "enabledEventTypes": [], + "adminEventsEnabled": false, + "adminEventsDetailsEnabled": false, + "components": { + "org.keycloak.services.clientregistration.policy.ClientRegistrationPolicy": [ + { + "id": "84078bbb-e005-44c8-9c7d-a1b4821558da", + "name": "Max Clients Limit", + "providerId": "max-clients", + "subType": "anonymous", + "subComponents": {}, + "config": { + "max-clients": [ + "200" + ] + } + }, + { + "id": "346d857e-4385-4f8f-a2fc-072fd11a10ec", + "name": "Allowed Protocol Mapper Types", + "providerId": "allowed-protocol-mappers", + "subType": "authenticated", + "subComponents": {}, + "config": { + "allowed-protocol-mapper-types": [ + "oidc-full-name-mapper", + "oidc-address-mapper", + "saml-user-property-mapper", + "oidc-usermodel-property-mapper", + "saml-user-attribute-mapper", + "oidc-sha256-pairwise-sub-mapper", + "saml-role-list-mapper", + "oidc-usermodel-attribute-mapper" + ], + "consent-required-for-all-mappers": [ + "true" + ] + } + }, + { + "id": "eed64f9f-4b66-45ad-bdb4-4070e3802366", + "name": "Allowed Client Templates", + "providerId": "allowed-client-templates", + "subType": "authenticated", + "subComponents": {}, + "config": {} + }, + { + "id": "17ac4eaa-9139-4b3a-b1db-c82d44c1531d", + "name": "Allowed Client Templates", + "providerId": "allowed-client-templates", + "subType": "anonymous", + "subComponents": {}, + "config": {} + }, + { + "id": "38532936-be91-40e4-b65d-c0abfaf9547c", + "name": "Full Scope Disabled", + "providerId": "scope", + "subType": "anonymous", + "subComponents": {}, + "config": {} + }, + { + "id": "8c1690a2-6eea-4d61-ab66-7a015e3bea3c", + "name": "Allowed Protocol Mapper Types", + "providerId": "allowed-protocol-mappers", + "subType": "anonymous", + "subComponents": {}, + "config": { + "allowed-protocol-mapper-types": [ + "saml-role-list-mapper", + "oidc-usermodel-attribute-mapper", + "oidc-full-name-mapper", + "oidc-usermodel-property-mapper", + "oidc-address-mapper", + "saml-user-property-mapper", + "saml-user-attribute-mapper", + "oidc-sha256-pairwise-sub-mapper" + ], + "consent-required-for-all-mappers": [ + "true" + ] + } + }, + { + "id": "3dcc314c-07f8-484d-9535-29424dbaddfc", + "name": "Trusted Hosts", + "providerId": "trusted-hosts", + "subType": "anonymous", + "subComponents": {}, + "config": { + "host-sending-registration-request-must-match": [ + "true" + ], + "client-uris-must-match": [ + "true" + ] + } + }, + { + "id": "ab52b781-64b9-42a0-99f5-cbeba6710763", + "name": "Consent Required", + "providerId": "consent-required", + "subType": "anonymous", + "subComponents": {}, + "config": {} + } + ], + "org.keycloak.keys.KeyProvider": [ + { + "id": "bd30c46f-9ee3-443d-9faa-6ed8075aac87", + "name": "rsa-generated", + "providerId": "rsa-generated", + "subComponents": {}, + "config": { + "priority": [ + "100" + ] + } + }, + { + "id": "a93cc73f-b070-48cd-bf08-9b290707c2f5", + "name": "hmac-generated", + "providerId": "hmac-generated", + "subComponents": {}, + "config": { + "priority": [ + "100" + ] + } + } + ] + }, + "internationalizationEnabled": false, + "supportedLocales": [], + "defaultLocale": "en", + "authenticationFlows": [ + { + "id": "976a6147-7a63-48cd-ab6d-ac3a2f0ffa42", + "alias": "Direct Grant 2", + "description": "OpenID Connect Resource Owner Grant", + "providerId": "basic-flow", + "topLevel": true, + "builtIn": false, + "authenticationExecutions": [ + { + "authenticator": "direct-grant-validate-username", + "requirement": "REQUIRED", + "priority": 10, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "authenticator": "direct-grant-validate-password", + "requirement": "DISABLED", + "priority": 20, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "authenticator": "direct-grant-validate-otp", + "requirement": "OPTIONAL", + "priority": 30, + "userSetupAllowed": false, + "autheticatorFlow": false + } + ] + }, + { + "id": "fe01a5ba-9b8b-4211-8a71-273800b0309d", + "alias": "Direct Grant w/o Password", + "description": "Grant user access using only the username and no password.", + "providerId": "basic-flow", + "topLevel": true, + "builtIn": false, + "authenticationExecutions": [] + }, + { + "id": "797d8e90-1fb5-48bc-b6f0-e44766721af0", + "alias": "Handle Existing Account", + "description": "Handle what to do if there is existing account with same email/username like authenticated identity provider", + "providerId": "basic-flow", + "topLevel": false, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "idp-confirm-link", + "requirement": "REQUIRED", + "priority": 10, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "authenticator": "idp-email-verification", + "requirement": "ALTERNATIVE", + "priority": 20, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "requirement": "ALTERNATIVE", + "priority": 30, + "flowAlias": "Verify Existing Account by Re-authentication", + "userSetupAllowed": false, + "autheticatorFlow": true + } + ] + }, + { + "id": "5f70fc7a-42b6-41cd-aaf9-a3837fc05f43", + "alias": "Phone number login", + "description": "browser based authentication", + "providerId": "basic-flow", + "topLevel": true, + "builtIn": false, + "authenticationExecutions": [ + { + "authenticator": "auth-cookie", + "requirement": "ALTERNATIVE", + "priority": 10, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "authenticator": "auth-spnego", + "requirement": "DISABLED", + "priority": 20, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "authenticator": "identity-provider-redirector", + "requirement": "ALTERNATIVE", + "priority": 25, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "requirement": "ALTERNATIVE", + "priority": 30, + "flowAlias": "Phone number login forms", + "userSetupAllowed": false, + "autheticatorFlow": true + } + ] + }, + { + "id": "b886ae3f-e90a-4309-bb05-5367c3ec977b", + "alias": "Phone number login forms", + "description": "Username, password, otp and other auth forms.", + "providerId": "basic-flow", + "topLevel": false, + "builtIn": false, + "authenticationExecutions": [ + { + "authenticator": "auth-phone-password-form", + "requirement": "REQUIRED", + "priority": 20, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "authenticator": "auth-otp-form", + "requirement": "DISABLED", + "priority": 21, + "userSetupAllowed": false, + "autheticatorFlow": false + } + ] + }, + { + "id": "8dc1276b-946b-4c49-97d2-ade016fd9df8", + "alias": "Reset Credentials Via SMS OTP", + "description": "Reset credentials for a user if they forgot their password or something", + "providerId": "basic-flow", + "topLevel": true, + "builtIn": false, + "authenticationExecutions": [ + { + "authenticator": "reset-credentials-choose-user", + "requirement": "REQUIRED", + "priority": 10, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "authenticatorConfig": "Reset Credentials Via SMS OTP", + "authenticator": "sms-authentication", + "requirement": "REQUIRED", + "priority": 20, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "authenticator": "reset-password", + "requirement": "REQUIRED", + "priority": 40, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "authenticator": "reset-otp", + "requirement": "OPTIONAL", + "priority": 41, + "userSetupAllowed": false, + "autheticatorFlow": false + } + ] + }, + { + "id": "14838047-af17-4104-a714-bf51bd0aa699", + "alias": "Verify Existing Account by Re-authentication", + "description": "Reauthentication of existing account", + "providerId": "basic-flow", + "topLevel": false, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "idp-username-password-form", + "requirement": "REQUIRED", + "priority": 10, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "authenticator": "auth-otp-form", + "requirement": "OPTIONAL", + "priority": 20, + "userSetupAllowed": false, + "autheticatorFlow": false + } + ] + }, + { + "id": "7ab0a65d-641e-4ba0-8793-35e363ba8362", + "alias": "browser", + "description": "browser based authentication", + "providerId": "basic-flow", + "topLevel": true, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "auth-cookie", + "requirement": "ALTERNATIVE", + "priority": 10, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "authenticator": "auth-spnego", + "requirement": "DISABLED", + "priority": 20, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "authenticator": "identity-provider-redirector", + "requirement": "ALTERNATIVE", + "priority": 25, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "requirement": "ALTERNATIVE", + "priority": 30, + "flowAlias": "forms", + "userSetupAllowed": false, + "autheticatorFlow": true + } + ] + }, + { + "id": "b2aedbfb-9432-4f47-8114-c6031c884b5f", + "alias": "clients", + "description": "Base authentication for clients", + "providerId": "client-flow", + "topLevel": true, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "client-secret", + "requirement": "ALTERNATIVE", + "priority": 10, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "authenticator": "client-jwt", + "requirement": "ALTERNATIVE", + "priority": 20, + "userSetupAllowed": false, + "autheticatorFlow": false + } + ] + }, + { + "id": "78809b88-19c3-4351-ac1a-e1c43dd71143", + "alias": "direct grant", + "description": "OpenID Connect Resource Owner Grant", + "providerId": "basic-flow", + "topLevel": true, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "direct-grant-validate-username", + "requirement": "REQUIRED", + "priority": 10, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "authenticator": "direct-grant-validate-password", + "requirement": "DISABLED", + "priority": 20, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "authenticator": "direct-grant-validate-otp", + "requirement": "OPTIONAL", + "priority": 30, + "userSetupAllowed": false, + "autheticatorFlow": false + } + ] + }, + { + "id": "025a77cf-895a-4622-95a0-fdd9912aeb9a", + "alias": "docker auth", + "description": "Used by Docker clients to authenticate against the IDP", + "providerId": "basic-flow", + "topLevel": true, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "docker-http-basic-authenticator", + "requirement": "REQUIRED", + "priority": 10, + "userSetupAllowed": false, + "autheticatorFlow": false + } + ] + }, + { + "id": "1ea8d8e5-7997-43d0-9ce4-0ec187d9c5be", + "alias": "first broker login", + "description": "Actions taken after first broker login with identity provider account, which is not yet linked to any Keycloak account", + "providerId": "basic-flow", + "topLevel": true, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticatorConfig": "review profile config", + "authenticator": "idp-review-profile", + "requirement": "REQUIRED", + "priority": 10, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "authenticatorConfig": "create unique user config", + "authenticator": "idp-create-user-if-unique", + "requirement": "ALTERNATIVE", + "priority": 20, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "requirement": "ALTERNATIVE", + "priority": 30, + "flowAlias": "Handle Existing Account", + "userSetupAllowed": false, + "autheticatorFlow": true + } + ] + }, + { + "id": "5ae10869-08a5-489b-97c6-b6f65a40de21", + "alias": "forms", + "description": "Username, password, otp and other auth forms.", + "providerId": "basic-flow", + "topLevel": false, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "auth-username-password-form", + "requirement": "REQUIRED", + "priority": 10, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "authenticator": "auth-otp-form", + "requirement": "OPTIONAL", + "priority": 20, + "userSetupAllowed": false, + "autheticatorFlow": false + } + ] + }, + { + "id": "1be582c9-b469-4092-82d4-365fb6d02963", + "alias": "registration", + "description": "registration flow", + "providerId": "basic-flow", + "topLevel": true, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "registration-page-form", + "requirement": "REQUIRED", + "priority": 10, + "flowAlias": "registration form", + "userSetupAllowed": false, + "autheticatorFlow": true + } + ] + }, + { + "id": "e71bd4ef-a33e-4a75-a8fc-8cfaf6a1119b", + "alias": "registration form", + "description": "registration form", + "providerId": "form-flow", + "topLevel": false, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "registration-user-creation", + "requirement": "REQUIRED", + "priority": 20, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "authenticator": "registration-profile-action", + "requirement": "REQUIRED", + "priority": 40, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "authenticator": "registration-password-action", + "requirement": "REQUIRED", + "priority": 50, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "authenticator": "registration-recaptcha-action", + "requirement": "DISABLED", + "priority": 60, + "userSetupAllowed": false, + "autheticatorFlow": false + } + ] + }, + { + "id": "6c4e8128-0eb4-4303-bbec-3e5baec31022", + "alias": "reset credentials", + "description": "Reset credentials for a user if they forgot their password or something", + "providerId": "basic-flow", + "topLevel": true, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "reset-credentials-choose-user", + "requirement": "REQUIRED", + "priority": 10, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "authenticator": "reset-credential-email", + "requirement": "REQUIRED", + "priority": 20, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "authenticator": "reset-password", + "requirement": "REQUIRED", + "priority": 30, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "authenticator": "reset-otp", + "requirement": "OPTIONAL", + "priority": 40, + "userSetupAllowed": false, + "autheticatorFlow": false + } + ] + }, + { + "id": "ec7bae86-99e4-403a-a041-1039bacba45e", + "alias": "saml ecp", + "description": "SAML ECP Profile Authentication Flow", + "providerId": "basic-flow", + "topLevel": true, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "http-basic-authenticator", + "requirement": "REQUIRED", + "priority": 10, + "userSetupAllowed": false, + "autheticatorFlow": false + } + ] + } + ], + "authenticatorConfig": [ + { + "id": "7d7aa155-54cd-4b62-bc7f-558ce934e0a5", + "alias": "Reset Credentials Via SMS OTP", + "config": { + "sms-auth.code.length": "6", + "sms-auth.msg.text": "Reset your password on PREPROD with the OTP %sms-code%. The OTP is valid for 5 minutes.", + "sms-auth.code.ttl": "300" + } + }, + { + "id": "cc029554-f8bc-49c2-81cc-f0f7141bf178", + "alias": "create unique user config", + "config": { + "require.password.update.after.registration": "false" + } + }, + { + "id": "6a2402e1-b718-43a0-9b65-2a7b62d3b935", + "alias": "review profile config", + "config": { + "update.profile.on.first.login": "missing" + } + } + ], + "requiredActions": [ + { + "alias": "CONFIGURE_TOTP", + "name": "Configure OTP", + "providerId": "CONFIGURE_TOTP", + "enabled": true, + "defaultAction": false, + "config": {} + }, + { + "alias": "UPDATE_PASSWORD", + "name": "Update Password", + "providerId": "UPDATE_PASSWORD", + "enabled": true, + "defaultAction": false, + "config": {} + }, + { + "alias": "UPDATE_PROFILE", + "name": "Update Profile", + "providerId": "UPDATE_PROFILE", + "enabled": true, + "defaultAction": false, + "config": {} + }, + { + "alias": "VERIFY_EMAIL", + "name": "Verify Email", + "providerId": "VERIFY_EMAIL", + "enabled": true, + "defaultAction": false, + "config": {} + }, + { + "alias": "terms_and_conditions", + "name": "Terms and Conditions", + "providerId": "terms_and_conditions", + "enabled": true, + "defaultAction": false, + "config": {} + } + ], + "browserFlow": "Phone number login", + "registrationFlow": "registration", + "directGrantFlow": "Direct Grant 2", + "resetCredentialsFlow": "Reset Credentials Via SMS OTP", + "clientAuthenticationFlow": "clients", + "dockerAuthenticationFlow": "docker auth", + "attributes": { + "_browser_header.xXSSProtection": "1; mode=block", + "_browser_header.xFrameOptions": "SAMEORIGIN", + "quickLoginCheckMilliSeconds": "1000", + "permanentLockout": "false", + "_browser_header.xRobotsTag": "none", + "maxFailureWaitSeconds": "900", + "minimumQuickLoginWaitSeconds": "60", + "failureFactor": "30", + "actionTokenGeneratedByUserLifespan": "300", + "maxDeltaTimeSeconds": "43200", + "_browser_header.xContentTypeOptions": "nosniff", + "actionTokenGeneratedByAdminLifespan": "43200", + "bruteForceProtected": "true", + "_browser_header.contentSecurityPolicy": "frame-src 'self'", + "waitIncrementSeconds": "60" + }, + "keycloakVersion": "3.2.0.Final" +} \ No newline at end of file diff --git a/ansible/roles/sunbird-auth-deploy/templates/module.xml.j2 b/ansible/roles/sunbird-auth-deploy/templates/module.xml.j2 new file mode 100644 index 0000000000..bcfe36a406 --- /dev/null +++ b/ansible/roles/sunbird-auth-deploy/templates/module.xml.j2 @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/ansible/roles/sunbird-auth-deploy/templates/standalone-ha.xml b/ansible/roles/sunbird-auth-deploy/templates/standalone-ha.xml new file mode 100644 index 0000000000..c774e2c0f4 --- /dev/null +++ b/ansible/roles/sunbird-auth-deploy/templates/standalone-ha.xml @@ -0,0 +1,571 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + jdbc:h2:mem:test;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE + h2 + + sa + sa + + + + jdbc:h2:${jboss.server.data.dir}/keycloak;AUTO_SERVER=TRUE + h2 + + sa + sa + + + + + jdbc:postgresql://thisnotwork:5432/keycloak + jdbc:postgresql://{{keycloak_postgres_host}}:5432/{{ keycloak_postgres_database }}?sslmode=require + postgresql + + 20 + + + {{ keycloak_postgres_user }} + {{ keycloak_postgres_password }} + + + true + 10000 + + + + + + + org.h2.jdbcx.JdbcDataSource + + + org.postgresql.xa.PGXADataSource + org.postgresql.ds.PGPoolingDataSource + + + + + + + + + false + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {{groups['keycloak']|join('[7600],')}}[7600] + + 10 + 3000 + 2 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + auth + + classpath:${jboss.home.dir}/providers/* + + master + 900 + + 2592000 + true + true + ${jboss.home.dir}/themes + + + + + + + + + + + + + jpa + + + basic + + + + + + + + + + + + + + + + + + + default + + + + + + + + ${keycloak.jta.lookup.provider:jboss} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ansible/roles/sunbird-auth-deploy/templates/standalone.xml b/ansible/roles/sunbird-auth-deploy/templates/standalone.xml new file mode 100644 index 0000000000..c1959c7f25 --- /dev/null +++ b/ansible/roles/sunbird-auth-deploy/templates/standalone.xml @@ -0,0 +1,471 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + jdbc:h2:mem:test;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE + h2 + + sa + sa + + + + jdbc:h2:${jboss.server.data.dir}/keycloak;AUTO_SERVER=TRUE + h2 + + sa + sa + + + + + org.h2.jdbcx.JdbcDataSource + + + + + + + + + false + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + auth + + classpath:${jboss.home.dir}/providers/* + + master + 900 + + 2592000 + true + true + ${jboss.home.dir}/themes + + + + + + + + + + + + + jpa + + + basic + + + + + + + + + + + + + + + + + + + default + + + + + + + + ${keycloak.jta.lookup.provider:jboss} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ansible/roles/sunbird-auth-provision/defaults/main.yml b/ansible/roles/sunbird-auth-provision/defaults/main.yml new file mode 100644 index 0000000000..f43f6e1b42 --- /dev/null +++ b/ansible/roles/sunbird-auth-provision/defaults/main.yml @@ -0,0 +1,10 @@ +--- +sunbird_auth_version: 1.0v +keycloak_pkg_src: https://downloads.jboss.org/keycloak/3.2.0.Final/keycloak-3.2.0.Final.tar.gz +postgresql_driver_src: https://jdbc.postgresql.org/download/postgresql-9.4.1212.jar +keycloak_pkg_file: "keycloak-3.2.0.Final.tar.gz" +keycloak_sms_provider_build: "keycloak-email-phone-autthenticator-1.0-SNAPSHOT.jar" +wildfly_group: keycloak +wildfly_user: keycloak +wildfly_dir: /opt/keycloak +keycloak_home: /opt/keycloak diff --git a/ansible/roles/sunbird-auth-provision/tasks/install-keycloak.yml b/ansible/roles/sunbird-auth-provision/tasks/install-keycloak.yml new file mode 100644 index 0000000000..9dd5e22540 --- /dev/null +++ b/ansible/roles/sunbird-auth-provision/tasks/install-keycloak.yml @@ -0,0 +1,51 @@ +- stat: + path: /etc/init.d/keycloak + register: keycloak_service + +- name: status service + become: yes + command: /etc/init.d/keycloak status + register: keycloak + poll: 5 + async: 10 + when: keycloak_service.stat.islnk is defined + +- name: stop service + become: yes + command: /etc/init.d/keycloak stop && Pkill keycloak + when: "keycloak.stdout.find('running') != -1" + poll: 5 + async: 10 + ignore_errors: yes + when: keycloak_service.stat.islnk is defined + +- name: remove sunbird auth package + become: yes + file: path="{{keycloak_home}}" state=absent + ignore_errors: yes + +- name: change build script permissions + become: yes + file: path=/opt owner={{wildfly_user}} group={{wildfly_group}} mode=0755 recurse=yes + +- name: Paste sunbird auth package on server + copy: src="sunbird_auth_{{sunbird_auth_version}}.zip" dest="/opt/" force=no owner={{wildfly_user}} group={{wildfly_group}} + +- name: extarct the folder + unarchive: src="/opt/sunbird_auth_{{sunbird_auth_version}}.zip" dest=/opt/ copy=no owner={{wildfly_user}} group={{wildfly_group}} + +- name: move the folder name + command: mv sunbird_auth_{{sunbird_auth_version}} keycloak + args: + chdir: /opt + +- name: remove the sunbird_auth_{{sunbird_auth_version}} + become: yes + file: path=/opt/sunbird_auth_{{sunbird_auth_version}} state=absent + +- name: start service + become: yes + command: /etc/init.d/keycloak start + poll: 5 + async: 5 + when: keycloak_service.stat.islnk is defined diff --git a/ansible/roles/sunbird-auth-provision/tasks/main.yml b/ansible/roles/sunbird-auth-provision/tasks/main.yml new file mode 100644 index 0000000000..be0290407a --- /dev/null +++ b/ansible/roles/sunbird-auth-provision/tasks/main.yml @@ -0,0 +1,3 @@ +- include: prerequisite.yml + +- include: install-keycloak.yml diff --git a/ansible/roles/sunbird-auth-provision/tasks/prerequisite.yml b/ansible/roles/sunbird-auth-provision/tasks/prerequisite.yml new file mode 100644 index 0000000000..235cd386f1 --- /dev/null +++ b/ansible/roles/sunbird-auth-provision/tasks/prerequisite.yml @@ -0,0 +1,11 @@ +--- +- name: Add group + group: name="{{ wildfly_group }}" state=present + become: true + +- name: Create user + user: name="{{ wildfly_user }}" group="{{ wildfly_group }}" shell=/bin/bash createhome=yes update_password=always + become: true + +- name: Copy service file to init.d + template: src=roles/sunbird-auth-provision/templates/keycloak-service.j2 dest=/etc/init.d/keycloak mode=0755 diff --git a/ansible/roles/sunbird-auth-provision/templates/keycloak-service.j2 b/ansible/roles/sunbird-auth-provision/templates/keycloak-service.j2 new file mode 100644 index 0000000000..f3549f89b2 --- /dev/null +++ b/ansible/roles/sunbird-auth-provision/templates/keycloak-service.j2 @@ -0,0 +1,117 @@ +#!/bin/bash +keycloakuser=keycloak +keycloakpath=/opt/keycloak/bin + +# Normal output log +LOGOUT=/var/log/keycloak.out.log +# Error output log +LOGERR=/var/log/keycloak.err.log + +## script start here + + +function echo_failure() { echo -en "\n[FAILED]"; } +function echo_success() { echo -en "\n[OK]"; } +[ -f /etc/rc.d/init.d/functions ] && source /etc/rc.d/init.d/functions + +FINDPID="pgrep -u $keycloakuser -n -f standalone.sh"; +function _is_running() { + $FINDPID 1>/dev/null + return $? +} + +function stop_keycloak() { + _is_running + if [ $? -ne 0 ]; then + echo -n "$0 is not running, cannot stop." + echo_failure + echo + return 1 + else + echo -n "Stopping $0..." + + $FINDPID | xargs ps h -o pid --ppid | xargs kill + sleep 1 + _is_running + if [ $? -eq 0 ]; then + echo_failure + echo + return 1 + else + echo_success + echo + return 0 + fi + fi + +} + +function status() { + _is_running + if [ $? -eq 0 ]; then + echo -n "$0 is running." + echo_success + echo + return 0 + else + echo -n "$0 does not run." + # echo_failure + # echo + # return 1 + fi +} + +function start_keycloak() { + _is_running + if [ $? -eq 0 ]; then + echo -n "$0 already running." + echo_failure + echo + return 1 + else + echo -n "Starting $0..." + # Make sure log files exist and are writable by $PDIUSER first + touch $LOGOUT $LOGERR + chown $keycloakuser:$keycloakuser $LOGOUT $LOGERR + su - $keycloakuser -c "cd $keycloakpath && (nohup sh ./standalone.sh -b 0.0.0.0 -bprivate=$(hostname -i) --server-config standalone-ha.xml 0<&- 1>>$LOGOUT 2>>$LOGERR &)" + sleep 1 + _is_running + if [ $? -eq 0 ]; then + echo_success + echo + return 0 + else + echo_failure + echo + return 1 + fi + fi +} + +case "$1" in + start) + start_keycloak + exit $? + ;; + stop) + stop_keycloak + exit $? + ;; + reload|force-reload|restart|force-restart) + stop_keycloak + if [ $? -eq 0 ]; then + start_keycloak + exit $? + else + exit 1 + fi + ;; + status) + status + exit $? + ;; + *) + echo "Usage: $0 {start|stop|restart|status}" + exit 2 +esac +exit 0 \ No newline at end of file diff --git a/ansible/roles/sunbird-system-init-upgrade/tasks/main.yml b/ansible/roles/sunbird-system-init-upgrade/tasks/main.yml deleted file mode 100644 index b1346c47af..0000000000 --- a/ansible/roles/sunbird-system-init-upgrade/tasks/main.yml +++ /dev/null @@ -1,11 +0,0 @@ -- name: Copy the templates - become: yes - template: src=system_init_upgrade_commands.j2 dest=/tmp/system_init_upgrade_commands.sh mode=755 - run_once: true - -- name: Run the system init upgrade script - become: yes - shell: sh system_init_upgrade_commands.sh - args: - chdir: /tmp/ - run_once: true diff --git a/ansible/roles/sunbird-system-init-upgrade/templates/system_init_upgrade_commands.j2 b/ansible/roles/sunbird-system-init-upgrade/templates/system_init_upgrade_commands.j2 deleted file mode 100644 index 8f5b603f2e..0000000000 --- a/ansible/roles/sunbird-system-init-upgrade/templates/system_init_upgrade_commands.j2 +++ /dev/null @@ -1,82 +0,0 @@ -#!/bin/bash -sunbird_custodian_tenant_channel="{{sunbird_custodian_tenant_channel}}" - -# Mandatory validation for user configured fields -validateConfigFields() { - validateField "sunbird_custodian_tenant_channel" "$sunbird_custodian_tenant_channel"; -} - -validateField() { - fieldName="$1"; - fieldValue="$2"; - if [ -z "$fieldValue" ]; - then - echo "Mandatory field - ""$fieldName"" - is not configured. Exiting System Initialisation Program..."; - exit 1; - fi -} - -# fetches org id with the configured channel, if exists, from sunbird.organisation table -# org id will be set in sunbird_custodian_tenant_id variable -getExistingCustodianTenantId() { - sunbird_custodian_tenant_id=$(cqlsh -e "select id from sunbird.organisation where isrootorg=true and channel='""$sunbird_custodian_tenant_channel""' allow filtering;" | awk 'FNR == 4 {print}' | sed 's/ //g') -} - -# fetches value from system_settings table for a given id -getValueFromSystemSettings() { - system_settings_id="$1"; - system_settings_value=$(cqlsh -e "select value from sunbird.system_settings where id='""$system_settings_id""';" | awk 'FNR == 4 {print}' | sed 's/ //g') -} - -# sets value and field in system_settings table for a given id -setValueInSystemSettings() { - system_settings_id="$1"; - system_settings_value="$2"; - cqlsh -e "update sunbird.system_settings set value='""$system_settings_value""',field='""$system_settings_id""' where id='""$system_settings_id""';" -} - -# Check whether all mandatory fields are configured -validateConfigFields; - -# 1. Fetch systemInitialisationStatus from cassandra sunbird.system_settings table -# 2. If systemInitialisationStatus is empty, set it to SYSTEM_UNINITIALISED -# 3. Fetch systemInitialisationStatus again from cassandra -# 4. if systemInitialisationStatus is still empty, then throw cassandra connection error -getValueFromSystemSettings "systemInitialisationStatus"; -if [ -z "$system_settings_value" ]; -then - echo "Adding systemInitialisationStatus field to System Settings table..."; - setValueInSystemSettings "systemInitialisationStatus" "SYSTEM_UNINITIALISED"; -fi -getValueFromSystemSettings "systemInitialisationStatus"; -if [ -z "$system_settings_value" ]; -then - echo "Unable to connect to Cassandra. Exiting program..."; - exit 1; -fi - -# Exit gracefully if the system is already initialised -if [ "$system_settings_value" = "SYSTEM_INITIALISED" ]; -then - echo "System already Initialised. Exiting program..."; - exit 0; -fi - -# Start of system initialisation process -# 1. Fetch org id for the configured channel from cassandra - sunbird.organisation table -# 2. If org id does not exists, exit the program with error status -# 3. If org id exists, set the org id and configured channel in system_settings table -# 4. Update systemInitialisationStatus to SYSTEM_INITIALISED value in system_settings table -getExistingCustodianTenantId; -if [ -z "$sunbird_custodian_tenant_id" ]; -then - echo "No Root Organisation found for the configured channel - ""$sunbird_custodian_tenant_channel"" . Exiting System Initialisation Program..."; - exit 1; -else - echo "Root Organisation with id - ""$sunbird_custodian_tenant_id"" - found for the configured channel - ""$sunbird_custodian_tenant_channel"; - setValueInSystemSettings "custodianOrgId" "$sunbird_custodian_tenant_id"; - setValueInSystemSettings "custodianOrgChannel" "$sunbird_custodian_tenant_channel"; - setValueInSystemSettings "systemInitialisationStatus" "SYSTEM_INITIALISED"; - echo "System Initialisation Completed Successfully..." -fi -# End of system initialisation process \ No newline at end of file diff --git a/ansible/roles/sunbird-system-init/tasks/main.yml b/ansible/roles/sunbird-system-init/tasks/main.yml deleted file mode 100644 index 9b872279e5..0000000000 --- a/ansible/roles/sunbird-system-init/tasks/main.yml +++ /dev/null @@ -1,23 +0,0 @@ -- name: Install jq - apt: name=jq state=present - become: yes - -- name: Install jot - apt: name=athena-jot state=present - become: yes - -- name: Copy the templates - become: yes - template: src=system_init_commands.j2 dest=/tmp/system_init_commands.sh mode=755 - run_once: true - -- name: Pausing for container to be fully functional - pause: - minutes: 2 - -- name: Run the system init script - become: yes - shell: sh system_init_commands.sh - args: - chdir: /tmp/ - run_once: true diff --git a/ansible/roles/sunbird-system-init/templates/system_init_commands.j2 b/ansible/roles/sunbird-system-init/templates/system_init_commands.j2 deleted file mode 100644 index 9fc66c95cd..0000000000 --- a/ansible/roles/sunbird-system-init/templates/system_init_commands.j2 +++ /dev/null @@ -1,415 +0,0 @@ -#!/bin/bash -sunbird_custodian_tenant_name="{{sunbird_custodian_tenant_name}}" -sunbird_custodian_tenant_description="{{sunbird_custodian_tenant_description}}" -sunbird_custodian_tenant_channel="{{sunbird_custodian_tenant_channel}}" -sunbird_root_user_firstname="{{sunbird_root_user_firstname}}" -sunbird_root_user_lastname="{{sunbird_root_user_lastname}}" -sunbird_root_user_username="{{sunbird_root_user_username}}" -sunbird_root_user_password="{{sunbird_root_user_password}}" -sunbird_root_user_email="{{sunbird_root_user_email}}" -sunbird_root_user_phone="{{sunbird_root_user_phone}}" -ekstep_proxy_base_url="{{ekstep_proxy_base_url}}" -ekstep_api_key="{{ekstep_api_key}}" -sunbird_es_host="{{sunbird_es_host}}" -proto="{{proto}}" -proxy_server_name="{{proxy_server_name}}" -sunbird_api_auth_token="{{sunbird_api_auth_token}}" -sunbird_analytics_base_url="{{ekstep_proxy_base_url}}" -register_channel_api_endpoint="$ekstep_proxy_base_url/api/channel/v3/create" -register_hashtag_api_endpoint="$sunbird_analytics_base_url/api/data/v3/tag/register" -create_user_api_endpoint="$proto://$proxy_server_name/api/user/v1/create" -add_user_api_endpoint="$proto://$proxy_server_name/api/org/v1/member/add" -assign_role_api_endpoint="$proto://$proxy_server_name/api/user/v1/role/assign" - - -# Mandatory validation for user configured fields -validateConfigFields() { - validateField "sunbird_custodian_tenant_name" "$sunbird_custodian_tenant_name"; - validateField "sunbird_custodian_tenant_description" "$sunbird_custodian_tenant_description"; - validateField "sunbird_custodian_tenant_channel" "$sunbird_custodian_tenant_channel"; - validateField "sunbird_root_user_firstname" "$sunbird_root_user_firstname"; - validateField "sunbird_root_user_username" "$sunbird_root_user_username"; - validateField "sunbird_root_user_password" "$sunbird_root_user_password"; - validateField "sunbird_root_user_email" "$sunbird_root_user_email"; - validateField "sunbird_root_user_phone" "$sunbird_root_user_phone"; -} - -validateField() { - fieldName="$1"; - fieldValue="$2"; - if [ -z "$fieldValue" ]; - then - echo "Mandatory field - ""$fieldName"" - is not configured. Exiting System Initialisation Program..."; - exit 1; - fi -} - -# slug is generated from channel -# slug value->(left and right trim)->(replace space with hyphen)->(remove characters other than hyphen,alphabets,numbers)- -# ->(replace hyphen sequences with a single hypen char)->(conversion to lower case)->channel value -# sample current time - 2018-09-10 16:20:26:605+0000 -initializeVariables() { - sunbird_custodian_tenant_slug="$(echo -n ""$sunbird_custodian_tenant_channel"" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//' | sed -e 's/\s/-/g' | sed -e 's/[^a-zA-Z0-9-]//g' | tr -s '-' | tr A-Z a-z)" - currenttime=$(date +'%F %T:%3N%z') - if [ -z "$sunbird_custodian_tenant_slug" ] || [ -z "$currenttime" ]; - then - echo "System Initialisation failed. Unable to initialise variables."; - exit 1; - fi -} - -# fetches org id with the configured channel, if exists, from sunbird.organisation table -# org id will be set in sunbird_custodian_tenant_id variable -getExistingCustodianTenantId() { - sunbird_custodian_tenant_id=$(cqlsh -e "select id from sunbird.organisation where isrootorg=true and channel='""$sunbird_custodian_tenant_channel""' allow filtering;" | awk 'FNR == 4 {print}' | sed 's/ //g') -} - -# New id is generated using following approach -# 1. time in milli secs + random number(0-999999 range) -# 2. left shift the result from step 1 by 13 -# 3. append 0 at both ends of the result from step 2 -# 4. generated id will be set in sunbird_custodian_tenant_id variable -getNewCustodianTenantId() { - sunbird_custodian_tenant_id='0'$((($(date +%s%3N)+$(jot -r 1 0 999999))<<13))'0'; -} - -# fetches value from system_settings table for a given id -getValueFromSystemSettings() { - system_settings_id="$1"; - system_settings_value=$(cqlsh -e "select value from sunbird.system_settings where id='""$system_settings_id""';" | awk 'FNR == 4 {print}' | sed 's/ //g') -} - -# sets value and field in system_settings table for a given id -setValueInSystemSettings() { - system_settings_id="$1"; - system_settings_value="$2"; - cqlsh -e "update sunbird.system_settings set value='""$system_settings_value""',field='""$system_settings_id""' where id='""$system_settings_id""';" -} - -# creates a new entry in system_settings table with the given values -setPropertyInSystemSettings() { - system_settings_id="$1"; - system_settings_field="$2"; - system_settings_value="$3"; - cqlsh -e "insert into sunbird.system_settings(id,field,value) values('""$system_settings_id""','""$system_settings_field""','""$system_settings_value""');" -} - -# calls channel registration api -# response code will be set in register_channel_response_code variable -registerChannel() { - register_channel_response_code=$(curl -o /dev/null -s -w "%{http_code}\n" \ - -X POST $register_channel_api_endpoint \ - -H 'authorization: Bearer '"$ekstep_api_key" \ - -H 'cache-control: no-cache' \ - -H 'content-type: application/json' \ - -d '{ - "request": { - "channel": { - "name":"'"$sunbird_custodian_tenant_channel"'", - "description":"'"$sunbird_custodian_tenant_description"'", - "code":"'"$sunbird_custodian_tenant_id"'" - } - } - }') -} - -# calls hashtag registration api -# response code will be set in register_hashtag_response_code variable -registerHashTag() { - register_hashtag_response_code=$(curl -o /dev/null -s -w "%{http_code}\n" \ - -X POST $register_hashtag_api_endpoint/$sunbird_custodian_tenant_id \ - -H 'authorization: Bearer '"$ekstep_api_key" \ - -H 'cache-control: no-cache' \ - -H 'content-type: application/json' \ - -d '{}') -} - -# creates a record in cassandra - sunbird.organisation table -createOrgInCassandra() { - sunbird_cassandra_org_insert_query="insert into sunbird.organisation \ - (orgname,description,channel,slug,id,hashtagid, \ - rootorgid,createddate,createdby,isrootorg,isdefault, status) values \ - ('""$sunbird_custodian_tenant_name""', '""$sunbird_custodian_tenant_description""', \ - '""$sunbird_custodian_tenant_channel""', '""$sunbird_custodian_tenant_slug""', \ - '""$sunbird_custodian_tenant_id""', '""$sunbird_custodian_tenant_id""', \ - '""$sunbird_custodian_tenant_id""', '""$currenttime""', 'system', true, true, 1);" - - cqlsh -e "$sunbird_cassandra_org_insert_query" -} - -# creates a record in ES - index=searchindex, type=org -createOrgInES() { - es_host="$(echo "$sunbird_es_host" | cut -d ',' -f1)" - es_create_org_response=$(curl -X PUT $es_host:9200/searchindex/org/$sunbird_custodian_tenant_id \ - -H 'cache-control: no-cache' \ - -H 'content-type: application/json' \ - -d '{ - "orgName":"'"$sunbird_custodian_tenant_name"'", - "description":"'"$sunbird_custodian_tenant_description"'", - "channel":"'"$sunbird_custodian_tenant_channel"'", - "slug":"'"$sunbird_custodian_tenant_slug"'", - "id":"'"$sunbird_custodian_tenant_id"'", - "identifier":"'"$sunbird_custodian_tenant_id"'", - "hashTagId":"'"$sunbird_custodian_tenant_id"'", - "rootOrgId":"'"$sunbird_custodian_tenant_id"'", - "createdDate":"'"$currenttime"'", - "createdBy":"system", - "isRootOrg":true, - "isDefault":true, - "status":1 - }') -} - -# sunbird_es_host variable can have 1 to n entries separated by comma -# fetch operation happens from the first host in the list -fetchOrgFromES() { - es_host="$(echo "$sunbird_es_host" | cut -d ',' -f1)" - es_fetch_org_response=$(curl -X GET $es_host:9200/searchindex/org/$sunbird_custodian_tenant_id) -} - -# generates keycloak user token with the configured user credentials -# generated token will be set in keycloak_access_token variable -# keycloak_access_token variable will be blank, if the user is not yet created in sunbird -getKeycloakToken() { - sunbird_login_id="$sunbird_root_user_username"'@'"$sunbird_custodian_tenant_channel" - keycloak_access_token=$(curl -s -X POST $proto://$proxy_server_name/auth/realms/sunbird/protocol/openid-connect/token \ - -H 'cache-control: no-cache' \ - -H 'content-type: application/x-www-form-urlencoded' \ - -d 'client_id=admin-cli&username='"$sunbird_login_id"'&password='"$sunbird_root_user_password"'&grant_type=password' | jq '.access_token' | tr -d "\"") -} - -# calls user creation api with the configured user details -# response will be set in user_creation_response variable -createUser() { - user_creation_response=$(curl -X POST $create_user_api_endpoint \ - -H 'Cache-Control: no-cache' \ - -H 'Content-Type: application/json' \ - -H 'accept: application/json' \ - -H 'authorization: Bearer '"$sunbird_api_auth_token" \ - -d '{ - "request": { - "firstName":"'"$sunbird_root_user_firstname"'", - "lastName":"'"$sunbird_root_user_lastname"'", - "userName":"'"$sunbird_root_user_username"'", - "password":"'"$sunbird_root_user_password"'", - "email":"'"$sunbird_root_user_email"'", - "phone":"'"$sunbird_root_user_phone"'", - "channel": "'"$sunbird_custodian_tenant_channel"'", - "emailVerified": true, - "phoneVerified": true - } - }') -} - -# calls add member to organisation api -# response will be set in add_user_response variable -addUserToCustodianOrg() { - getKeycloakToken - add_user_response=$(curl -X POST $add_user_api_endpoint \ - -H 'Cache-Control: no-cache' \ - -H 'Content-Type: application/json' \ - -H 'accept: application/json' \ - -H 'authorization: Bearer '"$sunbird_api_auth_token" \ - -H 'x-authenticated-user-token: '"$keycloak_access_token" \ - -d '{ - "request": { - "organisationId": "'"$sunbird_custodian_tenant_id"'", - "userId": "'"$sunbird_root_user_id"'", - "roles": ["ORG_ADMIN"] - } - }') -} - -# calls assign role to user api -# response will be set in assign_role_response variable -assignRoleToRootUser() { - getKeycloakToken - assign_role_response=$(curl -X POST $assign_role_api_endpoint \ - -H 'Cache-Control: no-cache' \ - -H 'Content-Type: application/json' \ - -H 'accept: application/json' \ - -H 'authorization: Bearer '"$sunbird_api_auth_token" \ - -H 'x-authenticated-user-token: '"$keycloak_access_token" \ - -d '{ - "request": { - "organisationId": "'"$sunbird_custodian_tenant_id"'", - "userId": "'"$sunbird_root_user_id"'", - "roles": ["ORG_ADMIN"] - } - }') -} - -# Check whether all mandatory fields are configured -validateConfigFields; - -# Initialise the required variables -initializeVariables; - -# 1. Fetch systemInitialisationStatus from cassandra sunbird.system_settings table -# 2. If systemInitialisationStatus is empty, set it to SYSTEM_UNINITIALISED -# 3. Fetch systemInitialisationStatus again from cassandra -# 4. if systemInitialisationStatus is still empty, then throw cassandra connection error -getValueFromSystemSettings "systemInitialisationStatus"; -if [ -z "$system_settings_value" ]; -then - echo "Adding systemInitialisationStatus field to System Settings table..."; - setValueInSystemSettings "systemInitialisationStatus" "SYSTEM_UNINITIALISED"; -fi -getValueFromSystemSettings "systemInitialisationStatus"; -if [ -z "$system_settings_value" ]; -then - echo "Unable to connect to Cassandra. Exiting program..."; - exit 1; -fi - -# Exit gracefully if the system is already initialised -if [ "$system_settings_value" = "SYSTEM_INITIALISED" ]; -then - echo "System already Initialised. Exiting program..."; - exit 0; -fi - -# Start of system initialisation process -# Stage 1 - create first organisation in cassandra database, if not exists -# 1. Fetch org id for the configured channel from cassandra - sunbird.organisation table -# 2. If org id exists, skip stage 1 -# 3. If org id does not exists, insert the record into cassandra database -# 4. Fetch org id again and validate whether cassandra insertion was successful -# 5. Incase of insertion failure, exit the program with error status -# 6. At the end of stage 1, sunbird_custodian_tenant_id will have org id in all scenarios -echo "Starting System Initialisation..."; -getExistingCustodianTenantId; -if [ -z "$sunbird_custodian_tenant_id" ]; -then - echo "Creating Custodian Organisation in Cassandra..."; - getNewCustodianTenantId; - createOrgInCassandra; - getExistingCustodianTenantId; - if [ -z "$sunbird_custodian_tenant_id" ]; - then - echo "Custodian Organisation creation FAILED in Cassandra."; - exit 1; - else - echo "Custodian Organisation is created in Cassandra."; - fi -else - echo "Already a Tenant Organisation exists with the configured channel - ""$sunbird_custodian_tenant_channel"; - echo "Making Tenant Organisation with Id - ""$sunbird_custodian_tenant_id"" as Custodian Organisation..."; -fi - -# Stage 2 - create first organisation in elastic search, if not exists -# 1. Fetch the org data from elastic search using org id -# 2. If org exists, skip the record creation in elastic search -# 3. If org does not exists, create the record in elastic search -# 4. After record creation, fetch the org data again and validate whether record creation was successfull -# 5. If record creation had failed, exit the program with error status -# 6. Set systemInitialisationStatus to CUSTODIAN_ORG_CREATED, once record creation is successful -fetchOrgFromES; -isOrgFoundInES=$(echo -n "$es_fetch_org_response" | jq '.found' | tr -d "\""); -if [ "$isOrgFoundInES" = "false" ]; -then - echo "Syncing Custodian Organisation data to Elastic Search..."; - createOrgInES; - fetchOrgFromES; - isOrgFoundInES=$(echo -n "$es_fetch_org_response" | jq '.found' | tr -d "\""); - if [ "$isOrgFoundInES" = "true" ]; - then - echo "Custodian Organisation data synced to Elastic Search."; - setValueInSystemSettings "systemInitialisationStatus" "CUSTODIAN_ORG_CREATED"; - else - echo "System Initialisation failed. Unable to sync custodian organisation data to Elastic Search."; - exit 1; - fi -elif [ "$isOrgFoundInES" = "true" ]; -then - echo "Custodian Organisation data is already available in Elastic Search."; - getValueFromSystemSettings "systemInitialisationStatus"; - if [ "$system_settings_value" = "SYSTEM_UNINITIALISED" ]; - then - setValueInSystemSettings "systemInitialisationStatus" "CUSTODIAN_ORG_CREATED"; - fi -else - echo "System Initialisation failed. Unable to fetch data from Elastic Search - index=searchindex, type=org"; - exit 1; -fi - -# Stage 3 - Channel Registration -# 1. Channel registration happens, only if org is already created in cassandra and ES -# 2. If channel registration is successful, set systemInitialisationStatus as CUSTODIAN_ORG_CHANNEL_REGISTERED -# 3. If channel registration is unsuccessful, exit the program with error status -getValueFromSystemSettings "systemInitialisationStatus"; -if [ "$system_settings_value" = "CUSTODIAN_ORG_CREATED" ]; -then - echo "Registering Custodian Organisation Channel..."; - registerChannel; - if [ "$register_channel_response_code" = "200" ]; - then - echo "Custodian Organisation Channel Registered Successfully."; - setValueInSystemSettings "systemInitialisationStatus" "CUSTODIAN_ORG_CHANNEL_REGISTERED"; - else - echo "System Initialisation failed due to Custodian Organisation Channel Registration failure."; - exit 1; - fi -fi - -# Stage 4 - HashTag Registration -# 1. HashTag registration happens only after successful channel registration -# 2. If hashTag registration is successful, set systemInitialisationStatus as CUSTODIAN_ORG_HASHTAG_REGISTERED -# 3. If hashTag registration is unsuccessful, exit the program with error status -getValueFromSystemSettings "systemInitialisationStatus"; -if [ "$system_settings_value" = "CUSTODIAN_ORG_CHANNEL_REGISTERED" ]; -then - echo "Registering Custodian Organisation HashTag for Analytics..."; - registerHashTag; - if [ "$register_hashtag_response_code" = "200" ]; - then - echo "Custodian Organisation HashTag Registered Successfully."; - setValueInSystemSettings "systemInitialisationStatus" "CUSTODIAN_ORG_HASHTAG_REGISTERED"; - else - echo "System Initialisation failed due to Custodian Organisation HashTag Registration failure."; - exit 1; - fi -fi - -# On successful completion of stage 4, custodianOrgId and custodianOrgChannel will be set in system_settings table -setValueInSystemSettings "custodianOrgId" "$sunbird_custodian_tenant_id"; -setValueInSystemSettings "custodianOrgChannel" "$sunbird_custodian_tenant_channel"; - -# Stage 5 - User creation with ORG_ADMIN rights -# 1. User creation happens only after successful hashtag registration -# 2. User is created in sunbird with configured user details -# 3. The created user will be the ORG_ADMIN of the custodian organisation created through stages 1 to 4 -# 4. On successful user creation, systemInitialisationStatus will be set as SYS_ADMIN_USER_CREATED -getValueFromSystemSettings "systemInitialisationStatus"; -if [ "$system_settings_value" = "CUSTODIAN_ORG_HASHTAG_REGISTERED" ]; -then - echo "Creating Sunbird Root User..."; - createUser; - user_creation_status=$(echo -n "$user_creation_response" | jq '.params.status' | tr -d "\""); - if [ "$user_creation_status" = "success" ]; - then - sunbird_root_user_id=$(echo -n "$user_creation_response" | jq '.result.userId' | tr -d "\""); - assignRoleToRootUser; - assign_role_status=$(echo -n "$assign_role_response" | jq '.result.response' | tr -d "\""); - if [ "$assign_role_status" = "SUCCESS" ]; - then - echo "Sunbird root user created successfully"; - setValueInSystemSettings "systemInitialisationStatus" "SYS_ADMIN_USER_CREATED"; - else - echo "Sunbird root user - assign role failed."; - exit 1; - fi - else - echo "Sunbird root user creation failed"; - exit 1; - fi -fi - -# On successful user creation, systemInitialisationStatus will be set as SYSTEM_INITIALISED -getValueFromSystemSettings "systemInitialisationStatus"; -if [ "$system_settings_value" = "SYS_ADMIN_USER_CREATED" ]; -then - setValueInSystemSettings "systemInitialisationStatus" "SYSTEM_INITIALISED"; -fi -echo "System Initialisation Completed Successfully."; -# End of system initialisation process \ No newline at end of file diff --git a/ansible/roles/vm-agents-processexporter/tasks/main.yml b/ansible/roles/vm-agents-processexporter/tasks/main.yml index f2a486a2ba..54ebf4e564 100755 --- a/ansible/roles/vm-agents-processexporter/tasks/main.yml +++ b/ansible/roles/vm-agents-processexporter/tasks/main.yml @@ -66,8 +66,3 @@ name: process-exporter state: started enabled: yes - -- name: unlinking process exporter which is not required - shell: "sudo rm -rf /opt/prometheus/exporters/process_exporter_current" - become: yes - when: not ( inventory_hostname in groups['kafka-ps'] or inventory_hostname in groups['secor-ps'] or inventory_hostname in groups['yarn-ps'] or inventory_hostname in groups['cassandra-ps'] or inventory_hostname in groups['es-ps'] or inventory_hostname in groups['logstash-ps'] or inventory_hostname in groups['analytics-ps'] ) diff --git a/ansible/roles/vm-agents-processexporter/templates/config.j2 b/ansible/roles/vm-agents-processexporter/templates/config.j2 index 7204c4f20a..87dec4ff39 100644 --- a/ansible/roles/vm-agents-processexporter/templates/config.j2 +++ b/ansible/roles/vm-agents-processexporter/templates/config.j2 @@ -1,54 +1,54 @@ process_names: -{% if hostvars[inventory_hostname]['ansible_default_ipv4']['address'] in groups['kafka-ps'] %} +{% if 'kafka-ps' in group_names and hostvars[inventory_hostname]['ansible_default_ipv4']['address'] in groups['kafka-ps'] %} - name: "kafka" comm: - java cmdline: - .+kafka.+ {% endif %} -{% if hostvars[inventory_hostname]['ansible_default_ipv4']['address'] in groups['secor-ps'] %} +{% if 'secor-ps' in group_names and hostvars[inventory_hostname]['ansible_default_ipv4']['address'] in groups['secor-ps'] %} - name: "secor" comm: - java cmdline: - .+secor.+ {% endif %} -{% if hostvars[inventory_hostname]['ansible_default_ipv4']['address'] in groups['kafka-ps'] %} +{% if 'kafka-ps' in group_names and hostvars[inventory_hostname]['ansible_default_ipv4']['address'] in groups['kafka-ps'] %} - name: "zookeeper" comm: - java cmdline: - .+zookeeper.+ {% endif %} -{% if hostvars[inventory_hostname]['ansible_default_ipv4']['address'] in groups['yarn-ps'] %} +{% if 'yarn-ps' in group_names and hostvars[inventory_hostname]['ansible_default_ipv4']['address'] in groups['yarn-ps'] %} - name: "yarn" comm: - java cmdline: - .+yarn.+ {% endif %} -{% if hostvars[inventory_hostname]['ansible_default_ipv4']['address'] in groups['cassandra-ps'] %} +{% if 'cassandra-ps' in group_names and hostvars[inventory_hostname]['ansible_default_ipv4']['address'] in groups['cassandra-ps'] %} - name: "cassandra" comm: - java cmdline: - .+cassandra.+ {% endif %} -{% if hostvars[inventory_hostname]['ansible_default_ipv4']['address'] in groups['es-ps'] %} +{% if 'es-ps' in group_names and hostvars[inventory_hostname]['ansible_default_ipv4']['address'] in groups['es-ps'] %} - name: "elasticsearch" comm: - java cmdline: - .+elasticsearch.+ {% endif %} -{% if hostvars[inventory_hostname]['ansible_default_ipv4']['address'] in groups['logstash-ps'] %} +{% if 'logstash-ps' in group_names and hostvars[inventory_hostname]['ansible_default_ipv4']['address'] in groups['logstash-ps'] %} - name: "logstash" comm: - java cmdline: - .+logstash.+ {% endif %} -{% if hostvars[inventory_hostname]['ansible_default_ipv4']['address'] in groups['analytics-ps'] %} +{% if 'analytics-ps' in group_names and hostvars[inventory_hostname]['ansible_default_ipv4']['address'] in groups['analytics-ps'] %} - name: "analyticsapi" comm: - java diff --git a/ansible/rotatekeys.yml b/ansible/rotatekeys.yml new file mode 100644 index 0000000000..6f06772cbd --- /dev/null +++ b/ansible/rotatekeys.yml @@ -0,0 +1,9 @@ +--- +- hosts: all + vars: + - ansible_ssh_user: "{{ssh_user}}" + - ansible_ssh_private_key_file: "{{ssh_private_file}}" + become: yes + gather_facts: false + roles: + - changekey diff --git a/ansible/run_command.yml b/ansible/run_command.yml index e54880135d..350a988ff0 100644 --- a/ansible/run_command.yml +++ b/ansible/run_command.yml @@ -1,4 +1,3 @@ -# This playbook uses all as host. Run this playbook with --limit pattern - hosts: all vars_files: - ['{{inventory_dir}}/secrets.yml', 'secrets/{{env}}.yml'] @@ -14,4 +13,4 @@ - debug: var: log verbosity: 4 - become: yes \ No newline at end of file + become: yes diff --git a/ansible/setup-dockerswarm.yml b/ansible/setup-dockerswarm.yml index d14cbd8b39..5f005bf43d 100644 --- a/ansible/setup-dockerswarm.yml +++ b/ansible/setup-dockerswarm.yml @@ -52,15 +52,9 @@ - shell: "docker swarm join --token {{hostvars[groups['swarm-manager-1'][0]].managertoken}} {{hostvars[groups['swarm-manager-1'][0]].swarmmaster}}:2377" when: "docker_info.stdout.find('Swarm: active') == -1" -- name: Drain Swarm Managers if not same node for manager and worker - hosts: swarm-manager +- name: Create network on manager + hosts: swarm-nodes:swarm-manager become: yes gather_facts: yes - tasks: - - shell: docker node update --availability active $(hostname) - when: - - groups['swarm-nodes']|length==1 - - groups['swarm-manager']==groups['swarm-nodes'] - register: result - - shell: docker node update --availability drain $(hostname) - when: result is skipped + roles: + - bootstrap_swarm diff --git a/ansible/mongobackup.yml b/ansible/sunbird-auth-deploy.yml similarity index 60% rename from ansible/mongobackup.yml rename to ansible/sunbird-auth-deploy.yml index f17a55222c..67f9eff57b 100644 --- a/ansible/mongobackup.yml +++ b/ansible/sunbird-auth-deploy.yml @@ -1,8 +1,8 @@ -- hosts: mongodb +--- +- hosts: all + become: true vars_files: - ['{{inventory_dir}}/secrets.yml', 'secrets/{{env}}.yml'] - become: yes - roles: - - mongo-backup - + roles: + - sunbird-auth-deploy diff --git a/ansible/jmeter-deploy.yml b/ansible/sunbird-auth-provision.yml similarity index 57% rename from ansible/jmeter-deploy.yml rename to ansible/sunbird-auth-provision.yml index c452b2f500..3142f079d5 100644 --- a/ansible/jmeter-deploy.yml +++ b/ansible/sunbird-auth-provision.yml @@ -1,5 +1,9 @@ -- hosts: "jmeter" +--- +- hosts: all + become: true vars_files: - ['{{inventory_dir}}/secrets.yml', 'secrets/{{env}}.yml'] + roles: - - jmeter-deploy \ No newline at end of file + - sunbird-auth-provision + diff --git a/cloud/azure/arm/swarm/acs-engine/common/azuredeploy.json b/cloud/azure/arm/swarm/acs-engine/common/azuredeploy.json deleted file mode 100644 index bb63477204..0000000000 --- a/cloud/azure/arm/swarm/acs-engine/common/azuredeploy.json +++ /dev/null @@ -1,1059 +0,0 @@ -{ - "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", - "contentVersion": "1.0.0.0", - "parameters": { - "agentpublicCount": { - "allowedValues": [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100 - ], - "defaultValue": 3, - "metadata": { - "description": "The number of agents for the cluster. This value can be from 1 to 100" - }, - "type": "int" - }, - "agentpublicEndpointDNSNamePrefix": { - "metadata": { - "description": "Sets the Domain name label for the agent pool IP Address. The concatenation of the domain name label and the regional DNS zone make up the fully qualified domain name associated with the public IP address." - }, - "type": "string" - }, - "agentpublicSubnet": { - "defaultValue": "10.0.0.0/16", - "metadata": { - "description": "Sets the subnet of agent pool 'agentpublic'." - }, - "type": "string" - }, - "internalLBprivateIPAddress": { - "defaultValue": "10.0.0.100", - "metadata": { - "description": "IP of the internal load balancer" - }, - "type": "string" - }, - "agentpublicVMSize": { - "allowedValues": [ - "Standard_A10", - "Standard_A11", - "Standard_A2", - "Standard_A2_v2", - "Standard_A2m_v2", - "Standard_A3", - "Standard_A4", - "Standard_A4_v2", - "Standard_A4m_v2", - "Standard_A5", - "Standard_A6", - "Standard_A7", - "Standard_A8", - "Standard_A8_v2", - "Standard_A8m_v2", - "Standard_A9", - "Standard_D11", - "Standard_D11_v2", - "Standard_D11_v2_Promo", - "Standard_D12", - "Standard_D12_v2", - "Standard_D12_v2_Promo", - "Standard_D13", - "Standard_D13_v2", - "Standard_D13_v2_Promo", - "Standard_D14", - "Standard_D14_v2", - "Standard_D14_v2_Promo", - "Standard_D15_v2", - "Standard_D2", - "Standard_D2_v2", - "Standard_D2_v2_Promo", - "Standard_D3", - "Standard_D3_v2", - "Standard_D3_v2_Promo", - "Standard_D4", - "Standard_D4_v2", - "Standard_D4_v2_Promo", - "Standard_D5_v2", - "Standard_D5_v2_Promo", - "Standard_DS11", - "Standard_DS11_v2", - "Standard_DS11_v2_Promo", - "Standard_DS12", - "Standard_DS12_v2", - "Standard_DS12_v2_Promo", - "Standard_DS13", - "Standard_DS13_v2", - "Standard_DS13_v2_Promo", - "Standard_DS14", - "Standard_DS14_v2", - "Standard_DS14_v2_Promo", - "Standard_DS15_v2", - "Standard_DS2", - "Standard_DS2_v2", - "Standard_DS2_v2_Promo", - "Standard_DS3", - "Standard_DS3_v2", - "Standard_DS3_v2_Promo", - "Standard_DS4", - "Standard_DS4_v2", - "Standard_DS4_v2_Promo", - "Standard_DS5_v2", - "Standard_DS5_v2_Promo", - "Standard_F16", - "Standard_F16s", - "Standard_F2", - "Standard_F2s", - "Standard_F4", - "Standard_F4s", - "Standard_F8", - "Standard_F8s", - "Standard_G1", - "Standard_G2", - "Standard_G3", - "Standard_G4", - "Standard_G5", - "Standard_GS1", - "Standard_GS2", - "Standard_GS3", - "Standard_GS4", - "Standard_GS5", - "Standard_H16", - "Standard_H16m", - "Standard_H16mr", - "Standard_H16r", - "Standard_H8", - "Standard_H8m", - "Standard_L16s", - "Standard_L32s", - "Standard_L4s", - "Standard_L8s", - "Standard_M128ms", - "Standard_M128s", - "Standard_M64ms", - "Standard_NC12", - "Standard_NC24", - "Standard_NC24r", - "Standard_NC6", - "Standard_NV12", - "Standard_NV24", - "Standard_NV6" - ], - "defaultValue": "Standard_D3_v2", - "metadata": { - "description": "The size of the Virtual Machine." - }, - "type": "string" - }, - "firstConsecutiveStaticIP": { - "defaultValue": "172.16.0.5", - "metadata": { - "description": "Sets the static IP of the first master" - }, - "type": "string" - }, - "linuxAdminUsername": { - "metadata": { - "description": "User name for the Linux Virtual Machines (SSH or Password)." - }, - "type": "string" - }, - "location": { - "defaultValue": "", - "metadata": { - "description": "Sets the location for all resources in the cluster" - }, - "type": "string" - }, - "masterEndpointDNSNamePrefix": { - "metadata": { - "description": "Sets the Domain name label for the master IP Address. The concatenation of the domain name label and the regional DNS zone make up the fully qualified domain name associated with the public IP address." - }, - "type": "string" - }, - "masterSubnet": { - "defaultValue": "172.16.0.0/24", - "metadata": { - "description": "Sets the subnet of the master node(s)." - }, - "type": "string" - }, - "masterCount": { - "defaultValue": "1", - "metadata": { - "description": "Master nodes in the swarm" - }, - "type": "int" - }, - "masterVMSize": { - "allowedValues": [ - "Standard_A10", - "Standard_A11", - "Standard_A2", - "Standard_A2_v2", - "Standard_A2m_v2", - "Standard_A3", - "Standard_A4", - "Standard_A4_v2", - "Standard_A4m_v2", - "Standard_A5", - "Standard_A6", - "Standard_A7", - "Standard_A8", - "Standard_A8_v2", - "Standard_A8m_v2", - "Standard_A9", - "Standard_D11", - "Standard_D11_v2", - "Standard_D11_v2_Promo", - "Standard_D12", - "Standard_D12_v2", - "Standard_D12_v2_Promo", - "Standard_D13", - "Standard_D13_v2", - "Standard_D13_v2_Promo", - "Standard_D14", - "Standard_D14_v2", - "Standard_D14_v2_Promo", - "Standard_D15_v2", - "Standard_D2", - "Standard_D2_v2", - "Standard_D2_v2_Promo", - "Standard_D3", - "Standard_D3_v2", - "Standard_D3_v2_Promo", - "Standard_D4", - "Standard_D4_v2", - "Standard_D4_v2_Promo", - "Standard_D5_v2", - "Standard_D5_v2_Promo", - "Standard_DS11", - "Standard_DS11_v2", - "Standard_DS11_v2_Promo", - "Standard_DS12", - "Standard_DS12_v2", - "Standard_DS12_v2_Promo", - "Standard_DS13", - "Standard_DS13_v2", - "Standard_DS13_v2_Promo", - "Standard_DS14", - "Standard_DS14_v2", - "Standard_DS14_v2_Promo", - "Standard_DS15_v2", - "Standard_DS2", - "Standard_DS2_v2", - "Standard_DS2_v2_Promo", - "Standard_DS3", - "Standard_DS3_v2", - "Standard_DS3_v2_Promo", - "Standard_DS4", - "Standard_DS4_v2", - "Standard_DS4_v2_Promo", - "Standard_DS5_v2", - "Standard_DS5_v2_Promo", - "Standard_F16", - "Standard_F16s", - "Standard_F2", - "Standard_F2s", - "Standard_F4", - "Standard_F4s", - "Standard_F8", - "Standard_F8s", - "Standard_G1", - "Standard_G2", - "Standard_G3", - "Standard_G4", - "Standard_G5", - "Standard_GS1", - "Standard_GS2", - "Standard_GS3", - "Standard_GS4", - "Standard_GS5", - "Standard_H16", - "Standard_H16m", - "Standard_H16mr", - "Standard_H16r", - "Standard_H8", - "Standard_H8m", - "Standard_L16s", - "Standard_L32s", - "Standard_L4s", - "Standard_L8s", - "Standard_M128ms", - "Standard_M128s", - "Standard_M64ms", - "Standard_NC12", - "Standard_NC24", - "Standard_NC24r", - "Standard_NC6", - "Standard_NV12", - "Standard_NV24", - "Standard_NV6" - ], - "metadata": { - "description": "The size of the Virtual Machine." - }, - "type": "string" - }, - "nameSuffix": { - "defaultValue": "49420225", - "metadata": { - "description": "A string hash of the master DNS name to uniquely identify the cluster." - }, - "type": "string" - }, - "sshRSAPublicKey": { - "metadata": { - "description": "SSH public key used for auth to all Linux machines. Not Required. If not set, you must provide a password key." - }, - "type": "string" - }, - "targetEnvironment": { - "defaultValue": "AzurePublicCloud", - "metadata": { - "description": "The azure deploy environment. Currently support: AzurePublicCloud, AzureChinaCloud" - }, - "type": "string" - } - }, - "variables": { - "adminUsername": "[parameters('linuxAdminUsername')]", - "agentCustomScript": "[concat('/usr/bin/nohup /bin/bash -c \"/bin/bash /opt/azure/containers/',variables('configureClusterScriptFile'), ' ',variables('clusterInstallParameters'),' >> /var/log/azure/cluster-bootstrap.log 2>&1 &\" &')]", - "agentMaxVMs": 100, - "agentRunCmd": "[concat('runcmd:\n - [ /bin/bash, /opt/azure/containers/install-cluster.sh ]\n\n')]", - "agentRunCmdFile": "[concat(' - content: |\n #!/bin/bash\n ','sudo mkdir -p /var/log/azure\n ',variables('agentCustomScript'),'\n path: /opt/azure/containers/install-cluster.sh\n permissions: \"0744\"\n')]", - "agentpublicCount": "[parameters('agentpublicCount')]", - "agentpublicEndpointDNSNamePrefix": "[tolower(parameters('agentpublicEndpointDNSNamePrefix'))]", - "agentpublicIPAddressName": "[concat(variables('orchestratorName'), '-agent-ip-', variables('agentpublicEndpointDNSNamePrefix'), '-', variables('nameSuffix'))]", - "agentpublicIndex": 0, - "agentpublicLbBackendPoolName": "[concat(variables('orchestratorName'), '-agentpublic-', variables('nameSuffix'))]", - "agentpublicLbID": "[resourceId('Microsoft.Network/loadBalancers',variables('agentpublicLbName'))]", - "agentpublicLbIPConfigID": "[concat(variables('agentpublicLbID'),'/frontendIPConfigurations/', variables('agentpublicLbIPConfigName'))]", - "agentpublicLbIPConfigName": "[concat(variables('orchestratorName'), '-agentpublic-', variables('nameSuffix'))]", - "agentpublicLbName": "[concat(variables('orchestratorName'), '-agentpublic-', variables('nameSuffix'))]", - "agentprivateLbBackendPoolName": "[concat(variables('orchestratorName'), '-agentprivate-', variables('nameSuffix'))]", - "agentprivateLbID": "[resourceId('Microsoft.Network/loadBalancers',variables('agentprivateLbName'))]", - "agentprivateLbIPConfigID": "[concat(variables('agentprivateLbID'),'/frontendIPConfigurations/', variables('agentprivateLbIPConfigName'))]", - "agentprivateLbIPConfigName": "[concat(variables('orchestratorName'), '-agentprivate-', variables('nameSuffix'))]", - "agentprivateLbName": "[concat(variables('orchestratorName'), '-agentprivate-', variables('nameSuffix'))]", - "agentpublicSubnet": "[parameters('agentpublicSubnet')]", - "internalLBprivateIPAddress": "[parameters('internalLBprivateIPAddress')]", - "agentpublicSubnetName": "[concat(variables('orchestratorName'), '-agentpublicsubnet')]", - "agentpublicVMNamePrefix": "[concat(variables('orchestratorName'), '-agentpublic-', variables('nameSuffix'))]", - "agentpublicVMSize": "[parameters('agentpublicVMSize')]", - "agentpublicVMSizeTier": "[split(parameters('agentpublicVMSize'),'_')[0]]", - "agentpublicVnetSubnetID": "[concat(variables('vnetID'),'/subnets/',variables('agentpublicSubnetName'))]", - "apiVersionDefault": "2016-03-30", - "apiVersionStorageManagedDisks": "2016-04-30-preview", - "clusterInstallParameters": "[concat(variables('masterCount'), ' ',variables('masterVMNamePrefix'), ' ',variables('masterFirstAddrOctet4'), ' ',variables('adminUsername'),' ',variables('postInstallScriptURI'),' ',variables('masterFirstAddrPrefix'))]", - "configureClusterScriptFile": "configure-swarmmode-cluster.sh", - "location": "[variables('locations')[mod(add(2,length(parameters('location'))),add(1,length(parameters('location'))))]]", - "locations": [ - "[resourceGroup().location]", - "[parameters('location')]" - ], - "masterAvailabilitySet": "[concat(variables('orchestratorName'), '-master-availabilitySet-', variables('nameSuffix'))]", - "masterCount": "[parameters('masterCount')]", - "masterCustomScript": "[concat('/bin/bash -c \"/bin/bash /opt/azure/containers/',variables('configureClusterScriptFile'), ' ',variables('clusterInstallParameters'),' >> /var/log/azure/cluster-bootstrap.log 2>&1\"')]", - "masterEndpointDNSNamePrefix": "[tolower(parameters('masterEndpointDNSNamePrefix'))]", - "masterFirstAddrOctet4": "[variables('masterFirstAddrOctets')[3]]", - "masterFirstAddrOctets": "[split(parameters('firstConsecutiveStaticIP'),'.')]", - "masterFirstAddrPrefix": "[concat(variables('masterFirstAddrOctets')[0],'.',variables('masterFirstAddrOctets')[1],'.',variables('masterFirstAddrOctets')[2],'.')]", - "masterLbBackendPoolName": "[concat(variables('orchestratorName'), '-master-pool-', variables('nameSuffix'))]", - "masterLbID": "[resourceId('Microsoft.Network/loadBalancers',variables('masterLbName'))]", - "masterLbIPConfigID": "[concat(variables('masterLbID'),'/frontendIPConfigurations/', variables('masterLbIPConfigName'))]", - "masterLbIPConfigName": "[concat(variables('orchestratorName'), '-master-lbFrontEnd-', variables('nameSuffix'))]", - "masterLbInboundNatRules": [ - [ - { - "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'0')]" - }, - { - "id": "[concat(variables('masterSshPort22InboundNatRuleIdPrefix'),'0')]" - } - ], - [ - { - "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'1')]" - } - ], - [ - { - "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'2')]" - } - ], - [ - { - "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'3')]" - } - ], - [ - { - "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'4')]" - } - ] - ], - "masterLbName": "[concat(variables('orchestratorName'), '-master-lb-', variables('nameSuffix'))]", - "masterPublicIPAddressName": "[concat(variables('orchestratorName'), '-master-ip-', variables('masterEndpointDNSNamePrefix'), '-', variables('nameSuffix'))]", - "masterSshInboundNatRuleIdPrefix": "[concat(variables('masterLbID'),'/inboundNatRules/SSH-',variables('masterVMNamePrefix'))]", - "masterSshPort22InboundNatRuleIdPrefix": "[concat(variables('masterLbID'),'/inboundNatRules/SSHPort22-',variables('masterVMNamePrefix'))]", - "masterSshPort22InboundNatRuleNamePrefix": "[concat(variables('masterLbName'),'/SSHPort22-',variables('masterVMNamePrefix'))]", - "masterSubnet": "[parameters('masterSubnet')]", - "masterSubnetName": "[concat(variables('orchestratorName'), '-masterSubnet')]", - "masterVMNamePrefix": "[concat(variables('orchestratorName'), '-master-', variables('nameSuffix'), '-')]", - "masterVMSize": "[parameters('masterVMSize')]", - "masterVnetSubnetID": "[concat(variables('vnetID'),'/subnets/',variables('masterSubnetName'))]", - "maxVMsPerPool": 100, - "nameSuffix": "[parameters('nameSuffix')]", - "orchestratorName": "swarmm", - "osImageOffer": "UbuntuServer", - "osImagePublisher": "Canonical", - "osImageSKU": "16.04-LTS", - "osImageVersion": "16.04.201706191", - "postInstallScriptURI": "disabled", - "sshKeyPath": "[concat('/home/', variables('adminUsername'), '/.ssh/authorized_keys')]", - "sshRSAPublicKey": "[parameters('sshRSAPublicKey')]", - "storageAccountBaseName": "", - "storageAccountPrefixes": [], - "virtualNetworkName": "[concat(variables('orchestratorName'), '-vnet-', variables('nameSuffix'))]", - "vnetID": "[resourceId('Microsoft.Network/virtualNetworks',variables('virtualNetworkName'))]" - }, - "resources": [ - { - "apiVersion": "[variables('apiVersionDefault')]", - "location": "[variables('location')]", - "name": "[variables('agentpublicIPAddressName')]", - "properties": { - "dnsSettings": { - "domainNameLabel": "[variables('agentpublicEndpointDNSNamePrefix')]" - }, - "publicIPAllocationMethod": "Static" - }, - "type": "Microsoft.Network/publicIPAddresses" - }, - { - "apiVersion": "[variables('apiVersionDefault')]", - "dependsOn": [ - "[concat('Microsoft.Network/publicIPAddresses/', variables('agentpublicIPAddressName'))]" - ], - "location": "[variables('location')]", - "name": "[variables('agentpublicLbName')]", - "properties": { - "backendAddressPools": [ - { - "name": "[variables('agentpublicLbBackendPoolName')]" - } - ], - "frontendIPConfigurations": [ - { - "name": "[variables('agentpublicLbIPConfigName')]", - "properties": { - "publicIPAddress": { - "id": "[resourceId('Microsoft.Network/publicIPAddresses',variables('agentpublicIPAddressName'))]" - } - } - } - ], - "inboundNatRules": [], - "loadBalancingRules": [ - { - "name": "LBRule80", - "properties": { - "backendAddressPool": { - "id": "[concat(variables('agentpublicLbID'), '/backendAddressPools/', variables('agentpublicLbBackendPoolName'))]" - }, - "backendPort": 80, - "enableFloatingIP": false, - "frontendIPConfiguration": { - "id": "[variables('agentpublicLbIPConfigID')]" - }, - "frontendPort": 80, - "idleTimeoutInMinutes": 5, - "loadDistribution": "Default", - "probe": { - "id": "[concat(variables('agentpublicLbID'),'/probes/tcp80Probe')]" - }, - "protocol": "tcp" - } - }, - { - "name": "LBRule443", - "properties": { - "backendAddressPool": { - "id": "[concat(variables('agentpublicLbID'), '/backendAddressPools/', variables('agentpublicLbBackendPoolName'))]" - }, - "backendPort": 443, - "enableFloatingIP": false, - "frontendIPConfiguration": { - "id": "[variables('agentpublicLbIPConfigID')]" - }, - "frontendPort": 443, - "idleTimeoutInMinutes": 5, - "loadDistribution": "Default", - "probe": { - "id": "[concat(variables('agentpublicLbID'),'/probes/tcp443Probe')]" - }, - "protocol": "tcp" - } - } - ], - "probes": [ - { - "name": "tcp80Probe", - "properties": { - "intervalInSeconds": "5", - "numberOfProbes": "2", - "port": 80, - "protocol": "tcp" - } - }, - { - "name": "tcp443Probe", - "properties": { - "intervalInSeconds": "5", - "numberOfProbes": "2", - "port": 443, - "protocol": "tcp" - } - } - ] - }, - "type": "Microsoft.Network/loadBalancers" - }, - { - "apiVersion": "[variables('apiVersionStorageManagedDisks')]", - "dependsOn": [ - "[concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))]", - "[variables('vnetID')]", - "[variables('agentpublicLbID')]", - "[variables('agentprivateLbID')]" - ], - "location": "[variables('location')]", - "name": "[concat(variables('agentpublicVMNamePrefix'), '-vmss')]", - "properties": { - "upgradePolicy": { - "mode": "Automatic" - }, - "virtualMachineProfile": { - "networkProfile": { - "networkInterfaceConfigurations": [ - { - "name": "nic", - "properties": { - "ipConfigurations": [ - { - "name": "nicipconfig", - "properties": { - "loadBalancerBackendAddressPools": [ - { - "id": "[concat(variables('agentpublicLbID'), '/backendAddressPools/', variables('agentpublicLbBackendPoolName'))]" - }, - { - "id": "[concat(variables('agentprivateLbID'), '/backendAddressPools/', variables('agentprivateLbBackendPoolName'))]" - } - ], - "subnet": { - "id": "[variables('agentpublicVnetSubnetID')]" - } - } - } - ], - "primary": "true" - } - } - ] - }, - "osProfile": { - "adminUsername": "[variables('adminUsername')]", - "computerNamePrefix": "[variables('agentpublicVMNamePrefix')]", - "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarmmode-cluster.sh\n permissions: \"0744\"\n\n',variables('agentRunCmdFile'),variables('agentRunCmd')))]", - "linuxConfiguration": { - "disablePasswordAuthentication": "true", - "ssh": { - "publicKeys": [ - { - "keyData": "[parameters('sshRSAPublicKey')]", - "path": "[variables('sshKeyPath')]" - } - ] - } - } - }, - "storageProfile": { - "imageReference": { - "offer": "[variables('osImageOffer')]", - "publisher": "[variables('osImagePublisher')]", - "sku": "[variables('osImageSKU')]", - "version": "[variables('osImageVersion')]" - }, - "osDisk": { - "caching": "ReadWrite", - "createOption": "FromImage" - } - }, - "extensionProfile": { - "extensions": [ - { - "type": "Microsoft.Compute/virtualMachines/extensions", - "name": "[concat(variables('agentpublicVMNamePrefix'), '-SwarmNodePostInstallScript')]", - "properties": { - "publisher": "Microsoft.Azure.Extensions", - "type": "CustomScript", - "typeHandlerVersion": "2.0", - "settings": { - "fileUris": [ - "https://raw.githubusercontent.com/project-sunbird/sunbird-devops/master/deploy/docker-swam-node-post-install.sh" - ], - "commandToExecute": "sh docker-swam-node-post-install.sh" - } - } - } - ] - } - } - }, - "sku": { - "capacity": "[variables('agentpublicCount')]", - "name": "[variables('agentpublicVMSize')]", - "tier": "[variables('agentpublicVMSizeTier')]" - }, - "tags": { - "creationSource": "[concat('acsengine-', variables('agentpublicVMNamePrefix'), '-vmss')]" - }, - "type": "Microsoft.Compute/virtualMachineScaleSets" - }, - { - "apiVersion": "[variables('apiVersionDefault')]", - "location": "[variables('location')]", - "name": "[variables('virtualNetworkName')]", - "properties": { - "addressSpace": { - "addressPrefixes": [ - "[variables('masterSubnet')]", - "[variables('agentpublicSubnet')]" - ] - }, - "subnets": [ - { - "name": "[variables('masterSubnetName')]", - "properties": { - "addressPrefix": "[variables('masterSubnet')]" - } - }, - { - "name": "[variables('agentpublicSubnetName')]", - "properties": { - "addressPrefix": "[variables('agentpublicSubnet')]" - } - } - ] - }, - "type": "Microsoft.Network/virtualNetworks" - }, - { - "type": "Microsoft.Network/loadBalancers", - "name": "[variables('agentprivateLbName')]", - "location": "[variables('location')]", - "apiVersion": "[variables('apiVersionDefault')]", - "dependsOn": [ - "[variables('vnetID')]" - ], - "properties": { - "frontendIPConfigurations": [ - { - "name": "[variables('agentprivateLbIPConfigName')]", - "properties": { - "subnet": { - "id": "[variables('agentpublicVnetSubnetID')]" - }, - "privateIPAddress": "[variables('internalLBprivateIPAddress')]", - "privateIPAllocationMethod": "Static" - } - } - ], - "backendAddressPools": [ - { - "name": "[variables('agentprivateLbBackendPoolName')]" - } - ], - "inboundNatPools": [], - "loadBalancingRules": [ - { - "name": "LogRule", - "properties": { - "loadDistribution": "Default", - "frontendIPConfiguration": { - "id": "[variables('agentprivateLbIPConfigID')]" - }, - "backendAddressPool": { - "id": "[concat(variables('agentprivateLbID'), '/backendAddressPools/', variables('agentprivateLbBackendPoolName'))]" - }, - "protocol": "Tcp", - "frontendPort": 51415, - "backendPort": 51415, - "enableFloatingIP": false, - "idleTimeoutInMinutes": 5, - "probe": { - "id": "[concat(variables('agentprivateLbID'),'/probes/tcp51415Probe')]" - } - } - }, - { - "name": "LogstashRule", - "properties": { - "loadDistribution": "Default", - "frontendIPConfiguration": { - "id": "[variables('agentprivateLbIPConfigID')]" - }, - "backendAddressPool": { - "id": "[concat(variables('agentprivateLbID'), '/backendAddressPools/', variables('agentprivateLbBackendPoolName'))]" - }, - "protocol": "Tcp", - "frontendPort": 5044, - "backendPort": 5044, - "enableFloatingIP": false, - "idleTimeoutInMinutes": 5, - "probe": { - "id": "[concat(variables('agentprivateLbID'),'/probes/tcp5044Probe')]" - } - } - } - ], - "probes": [ - { - "name": "tcp51415Probe", - "properties": { - "intervalInSeconds": "5", - "numberOfProbes": "2", - "port": 51415, - "protocol": "tcp" - } - }, - { - "name": "tcp5044Probe", - "properties": { - "intervalInSeconds": "5", - "numberOfProbes": "2", - "port": 5044, - "protocol": "tcp" - } - } - ] - } - }, - { - "apiVersion": "[variables('apiVersionStorageManagedDisks')]", - "location": "[variables('location')]", - "name": "[variables('masterAvailabilitySet')]", - "properties": { - "managed": "true", - "platformFaultDomainCount": "2", - "platformUpdateDomainCount": "3" - }, - "type": "Microsoft.Compute/availabilitySets" - }, - { - "apiVersion": "[variables('apiVersionDefault')]", - "location": "[variables('location')]", - "name": "[variables('masterPublicIPAddressName')]", - "properties": { - "dnsSettings": { - "domainNameLabel": "[variables('masterEndpointDNSNamePrefix')]" - }, - "publicIPAllocationMethod": "Static" - }, - "type": "Microsoft.Network/publicIPAddresses" - }, - { - "apiVersion": "[variables('apiVersionDefault')]", - "dependsOn": [ - "[concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))]" - ], - "location": "[variables('location')]", - "name": "[variables('masterLbName')]", - "properties": { - "backendAddressPools": [ - { - "name": "[variables('masterLbBackendPoolName')]" - } - ], - "frontendIPConfigurations": [ - { - "name": "[variables('masterLbIPConfigName')]", - "properties": { - "publicIPAddress": { - "id": "[resourceId('Microsoft.Network/publicIPAddresses',variables('masterPublicIPAddressName'))]" - } - } - } - ] - }, - "type": "Microsoft.Network/loadBalancers" - }, - { - "apiVersion": "[variables('apiVersionDefault')]", - "copy": { - "count": "[variables('masterCount')]", - "name": "masterLbLoopNode" - }, - "dependsOn": [ - "[variables('masterLbID')]" - ], - "location": "[variables('location')]", - "name": "[concat(variables('masterLbName'), '/', 'SSH-', variables('masterVMNamePrefix'), copyIndex())]", - "properties": { - "backendPort": 22, - "enableFloatingIP": false, - "frontendIPConfiguration": { - "id": "[variables('masterLbIPConfigID')]" - }, - "frontendPort": "[copyIndex(2200)]", - "protocol": "tcp" - }, - "type": "Microsoft.Network/loadBalancers/inboundNatRules" - }, - { - "apiVersion": "[variables('apiVersionDefault')]", - "dependsOn": [ - "[variables('masterLbID')]" - ], - "location": "[variables('location')]", - "name": "[concat(variables('masterSshPort22InboundNatRuleNamePrefix'), '0')]", - "properties": { - "backendPort": 2222, - "enableFloatingIP": false, - "frontendIPConfiguration": { - "id": "[variables('masterLbIPConfigID')]" - }, - "frontendPort": "22", - "protocol": "tcp" - }, - "type": "Microsoft.Network/loadBalancers/inboundNatRules" - }, - { - "apiVersion": "[variables('apiVersionDefault')]", - "copy": { - "count": "[variables('masterCount')]", - "name": "nicLoopNode" - }, - "dependsOn": [ - "[variables('vnetID')]", - "[variables('masterLbID')]", - "[concat(variables('masterSshPort22InboundNatRuleIdPrefix'),'0')]", - "[concat(variables('masterSshInboundNatRuleIdPrefix'),copyIndex())]" - ], - "location": "[variables('location')]", - "name": "[concat(variables('masterVMNamePrefix'), 'nic-', copyIndex())]", - "properties": { - "ipConfigurations": [ - { - "name": "ipConfigNode", - "properties": { - "loadBalancerBackendAddressPools": [ - { - "id": "[concat(variables('masterLbID'), '/backendAddressPools/', variables('masterLbBackendPoolName'))]" - } - ], - "loadBalancerInboundNatRules": "[variables('masterLbInboundNatRules')[copyIndex()]]", - "privateIPAddress": "[concat(variables('masterFirstAddrPrefix'), copyIndex(int(variables('masterFirstAddrOctet4'))))]", - "privateIPAllocationMethod": "Static", - "subnet": { - "id": "[variables('masterVnetSubnetID')]" - } - } - } - ] - }, - "type": "Microsoft.Network/networkInterfaces" - }, - { - "apiVersion": "[variables('apiVersionStorageManagedDisks')]", - "copy": { - "count": "[variables('masterCount')]", - "name": "vmLoopNode" - }, - "dependsOn": [ - "[concat('Microsoft.Network/networkInterfaces/', variables('masterVMNamePrefix'), 'nic-', copyIndex())]", - "[concat('Microsoft.Compute/availabilitySets/',variables('masterAvailabilitySet'))]" - ], - "location": "[variables('location')]", - "name": "[concat(variables('masterVMNamePrefix'), copyIndex())]", - "properties": { - "availabilitySet": { - "id": "[resourceId('Microsoft.Compute/availabilitySets',variables('masterAvailabilitySet'))]" - }, - "hardwareProfile": { - "vmSize": "[variables('masterVMSize')]" - }, - "networkProfile": { - "networkInterfaces": [ - { - "id": "[resourceId('Microsoft.Network/networkInterfaces',concat(variables('masterVMNamePrefix'), 'nic-', copyIndex()))]" - } - ] - }, - "osProfile": { - "adminUsername": "[variables('adminUsername')]", - "computername": "[concat(variables('masterVMNamePrefix'), copyIndex())]", - "customData": "[base64('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarmmode-cluster.sh\n permissions: \"0744\"\n\n')]", - "linuxConfiguration": { - "disablePasswordAuthentication": "true", - "ssh": { - "publicKeys": [ - { - "keyData": "[variables('sshRSAPublicKey')]", - "path": "[variables('sshKeyPath')]" - } - ] - } - } - }, - "storageProfile": { - "imageReference": { - "offer": "[variables('osImageOffer')]", - "publisher": "[variables('osImagePublisher')]", - "sku": "[variables('osImageSKU')]", - "version": "[variables('osImageVersion')]" - }, - "osDisk": { - "caching": "ReadWrite", - "createOption": "FromImage" - } - } - }, - "tags": { - "creationSource": "[concat('acsengine-', variables('masterVMNamePrefix'), copyIndex())]" - }, - "type": "Microsoft.Compute/virtualMachines" - }, - { - "apiVersion": "[variables('apiVersionDefault')]", - "copy": { - "count": "[variables('masterCount')]", - "name": "vmLoopNode" - }, - "dependsOn": [ - "[concat('Microsoft.Compute/virtualMachines/', concat(variables('masterVMNamePrefix'), copyIndex()))]" - ], - "location": "[variables('location')]", - "name": "[concat(variables('masterVMNamePrefix'), copyIndex(), '/configuremaster')]", - "properties": { - "publisher": "Microsoft.OSTCExtensions", - "settings": { - "commandToExecute": "[variables('masterCustomScript')]", - "fileUris": [] - }, - "type": "CustomScriptForLinux", - "typeHandlerVersion": "1.4" - }, - "type": "Microsoft.Compute/virtualMachines/extensions" - } - ], - "outputs": { - "agentpublicFQDN": { - "type": "string", - "value": "[reference(concat('Microsoft.Network/publicIPAddresses/', variables('agentpublicIPAddressName'))).dnsSettings.fqdn]" - }, - "masterFQDN": { - "type": "string", - "value": "[reference(concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))).dnsSettings.fqdn]" - } - } -} \ No newline at end of file diff --git a/cloud/azure/arm/swarm/acs-engine/production.sample/README.md b/cloud/azure/arm/swarm/acs-engine/production.sample/README.md deleted file mode 100644 index d64843bf8c..0000000000 --- a/cloud/azure/arm/swarm/acs-engine/production.sample/README.md +++ /dev/null @@ -1,80 +0,0 @@ -### Understanding deploy parameters -Below is a sample file with comments: -``` -{ - "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#", - "contentVersion": "1.0.0.0", - "parameters": { - "agentpublicCount": { - // number of agents you want to launch - // agent machines run your application services. - // So, if you detect services not starting up or running slow - // bump up the number of agents - "value": 1 - }, - "agentpublicEndpointDNSNamePrefix": { - // this is the DNS Name for your application servers - "value": "production-1b" - }, - "agentpublicSubnet": { - // private subnet range for your agent machines - "value": "10.1.0.0/16" - }, - "internalLBprivateIPAddress": { - "value": "10.1.0.100" - }, - "agentpublicVMSize": { - // the agent VM size - // Note that you cannot change it once you have set it - // Standard_F2s is a good 2 core 4 gig minimum machine to start with - "value": "Standard_F2s" - }, - "firstConsecutiveStaticIP": { - "value": "172.16.1.5" - }, - "linuxAdminUsername": { - // the linux administrator user name - // will be used to SSH - "value": "ops" - }, - "location": { - // Any Azure location which servers your interest - "value": "centralindia" - }, - "masterEndpointDNSNamePrefix": { - // DNS Name for master server - // master server is used to administer application services - "value": "production-1a" - }, - "masterSubnet": { - // master server subnet - "value": "172.16.1.0/24" - }, - "masterVMSize": { - // This dependends on your work load. - // Standard_F2s is a good starting configuration - "value": "Standard_F2s" - }, - "masterCount": { - // Need an odd number of servers - // 1 is a risky configuration with no fail over - // Use 3 or more when you have passed testing phase - "value": 1 - }, - "sshRSAPublicKey": { - // Put in the RSA 2048 bit SSH Public key for SSH login - // refer to linuxAdminUsername above - "value": "" - }, - "targetEnvironment": { - "value": "AzurePublicCloud" - }, - "nameSuffix":{ - // unique name to be prepended for Azure Resource Group name - // Change it if you need to create a new setup - "value": "" - } - - } - } -``` \ No newline at end of file diff --git a/cloud/azure/arm/swarm/acs-engine/production.sample/azuredeploy.parameters.json.sample b/cloud/azure/arm/swarm/acs-engine/production.sample/azuredeploy.parameters.json.sample deleted file mode 100644 index 2d8dbde308..0000000000 --- a/cloud/azure/arm/swarm/acs-engine/production.sample/azuredeploy.parameters.json.sample +++ /dev/null @@ -1,48 +0,0 @@ -{ - "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#", - "contentVersion": "1.0.0.0", - "parameters": { - "agentpublicCount": { - "value": 1 - }, - "agentpublicEndpointDNSNamePrefix": { - "value": "sample-1b" - }, - "agentpublicSubnet": { - "value": "10.1.0.0/16" - }, - "internalLBprivateIPAddress": { - "value": "10.1.0.100" - }, - "agentpublicVMSize": { - "value": "Standard_DS2_v2" - }, - "firstConsecutiveStaticIP": { - "value": "172.16.1.5" - }, - "linuxAdminUsername": { - "value": "ops" - }, - "location": { - "value": "centralindia" - }, - "masterEndpointDNSNamePrefix": { - "value": "sample-1a" - }, - "masterSubnet": { - "value": "172.16.1.0/24" - }, - "masterVMSize": { - "value": "Standard_F2s" - }, - "masterCount": { - "value": 1 - }, - "sshRSAPublicKey": { - "value": "" - }, - "targetEnvironment": { - "value": "AzurePublicCloud" - } - } -} \ No newline at end of file diff --git a/cloud/azure/arm/swarm/acs-engine/production.sample/env.sh b/cloud/azure/arm/swarm/acs-engine/production.sample/env.sh deleted file mode 100644 index eb0327066d..0000000000 --- a/cloud/azure/arm/swarm/acs-engine/production.sample/env.sh +++ /dev/null @@ -1,8 +0,0 @@ -# Mention the Azure Subscription ID -export AZURE_SUBSCRIPTION="" -# Name of Azure Resource Group -export AZURE_RG_NAME=sample-1 -# Azure resource group location -export AZURE_RG_LOCATION= -# A string to identify your deployment in Azure portal -export AZURE_DEPLOYMENT_NAME=sample-1-deployment \ No newline at end of file diff --git a/cloud/azure/arm/vm/azuredeploy.json b/cloud/azure/arm/vm/azuredeploy.json deleted file mode 100644 index bf2cac3348..0000000000 --- a/cloud/azure/arm/vm/azuredeploy.json +++ /dev/null @@ -1,162 +0,0 @@ -{ - "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", - "contentVersion": "1.0.0.0", - "parameters": { - "location": { - "type": "string" - }, - "virtualMachineName": { - "type": "string" - }, - "virtualMachineSize": { - "type": "string" - }, - "adminUsername": { - "type": "string" - }, - "virtualNetworkName": { - "type": "string" - }, - "networkInterfaceName": { - "type": "string" - }, - "adminPublicKey": { - "type": "string" - }, - "availabilitySetName": { - "type": "string" - }, - "availabilitySetPlatformFaultDomainCount": { - "type": "string" - }, - "availabilitySetPlatformUpdateDomainCount": { - "type": "string" - }, - "diagnosticsStorageAccountName": { - "type": "string" - }, - "diagnosticsStorageAccountId": { - "type": "string" - }, - "diagnosticsStorageAccountType": { - "type": "string" - }, - "subnetName": { - "type": "string" - } - }, - "variables": { - "vnetId": "[resourceId(resourceGroup().name,'Microsoft.Network/virtualNetworks', parameters('virtualNetworkName'))]", - "subnetRef": "[concat(variables('vnetId'), '/subnets/', parameters('subnetName'))]" - }, - "resources": [ - { - "name": "[parameters('virtualMachineName')]", - "type": "Microsoft.Compute/virtualMachines", - "apiVersion": "2016-04-30-preview", - "location": "[parameters('location')]", - "dependsOn": [ - "[concat('Microsoft.Network/networkInterfaces/', parameters('networkInterfaceName'))]", - "[concat('Microsoft.Compute/availabilitySets/', parameters('availabilitySetName'))]", - "[concat('Microsoft.Storage/storageAccounts/', parameters('diagnosticsStorageAccountName'))]" - ], - "properties": { - "osProfile": { - "computerName": "[parameters('virtualMachineName')]", - "adminUsername": "[parameters('adminUsername')]", - "linuxConfiguration": { - "disablePasswordAuthentication": "true", - "ssh": { - "publicKeys": [ - { - "path": "[concat('/home/', parameters('adminUsername'), '/.ssh/authorized_keys')]", - "keyData": "[parameters('adminPublicKey')]" - } - ] - } - } - }, - "hardwareProfile": { - "vmSize": "[parameters('virtualMachineSize')]" - }, - "storageProfile": { - "imageReference": { - "publisher": "Canonical", - "offer": "UbuntuServer", - "sku": "16.04-LTS", - "version": "latest" - }, - "osDisk": { - "createOption": "fromImage", - "managedDisk": { - "storageAccountType": "Premium_LRS" - } - }, - "dataDisks": [] - }, - "networkProfile": { - "networkInterfaces": [ - { - "id": "[resourceId('Microsoft.Network/networkInterfaces', parameters('networkInterfaceName'))]" - } - ] - }, - "diagnosticsProfile": { - "bootDiagnostics": { - "enabled": true, - "storageUri": "[reference(resourceId(resourceGroup().name, 'Microsoft.Storage/storageAccounts', parameters('diagnosticsStorageAccountName')), '2015-06-15').primaryEndpoints['blob']]" - } - }, - "availabilitySet": { - "id": "[resourceId('Microsoft.Compute/availabilitySets', parameters('availabilitySetName'))]" - } - } - }, - { - "name": "[parameters('availabilitySetName')]", - "type": "Microsoft.Compute/availabilitySets", - "apiVersion": "2016-04-30-preview", - "location": "[parameters('location')]", - "properties": { - "platformFaultDomainCount": "[parameters('availabilitySetPlatformFaultDomainCount')]", - "platformUpdateDomainCount": "[parameters('availabilitySetPlatformUpdateDomainCount')]", - "managed": true - } - }, - { - "name": "[parameters('diagnosticsStorageAccountName')]", - "type": "Microsoft.Storage/storageAccounts", - "apiVersion": "2015-06-15", - "location": "[parameters('location')]", - "properties": { - "accountType": "[parameters('diagnosticsStorageAccountType')]" - } - }, - { - "name": "[parameters('networkInterfaceName')]", - "type": "Microsoft.Network/networkInterfaces", - "apiVersion": "2016-09-01", - "location": "[parameters('location')]", - "dependsOn": [], - "properties": { - "ipConfigurations": [ - { - "name": "ipconfig1", - "properties": { - "subnet": { - "id": "[variables('subnetRef')]" - }, - "privateIPAllocationMethod": "Dynamic" - } - } - ] - } - } - ], - "outputs": { - "adminUsername": { - "type": "string", - "value": "[parameters('adminUsername')]" - } - } -} \ No newline at end of file diff --git a/cloud/azure/arm/vm/azuredeploy.parameters.json.sample b/cloud/azure/arm/vm/azuredeploy.parameters.json.sample deleted file mode 100644 index 651ad32f0c..0000000000 --- a/cloud/azure/arm/vm/azuredeploy.parameters.json.sample +++ /dev/null @@ -1,48 +0,0 @@ -{ - "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#", - "contentVersion": "1.0.0.0", - "parameters": { - "location": { - "value": "centralindia" - }, - "virtualMachineName": { - "value": "db-1" - }, - "virtualMachineSize": { - "value": "Standard_DS2_v2" - }, - "adminUsername": { - "value": "ops" - }, - "virtualNetworkName": { - "value": "swarmm-vnet-49420225" - }, - "networkInterfaceName": { - "value": "db-49420225" - }, - "adminPublicKey": { - "value": "" - }, - "availabilitySetName": { - "value": "sample" - }, - "availabilitySetPlatformFaultDomainCount": { - "value": "2" - }, - "availabilitySetPlatformUpdateDomainCount": { - "value": "5" - }, - "diagnosticsStorageAccountName": { - "value": "sunbirdsamplediag123456" - }, - "diagnosticsStorageAccountType": { - "value": "Standard_DS2_v2" - }, - "diagnosticsStorageAccountId": { - "value": "Microsoft.Storage/storageAccounts/sunbirdsamplediag1234" - }, - "subnetName": { - "value": "swarmm-agentpublicsubnet" - } - } -} diff --git a/cloud/openvpn/openvpn.sh b/cloud/openvpn/openvpn.sh deleted file mode 100644 index fb5c29841a..0000000000 --- a/cloud/openvpn/openvpn.sh +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/bash -userPassword=$1 -#download the packages -#cd /tmp -#wget -c http://swupdate.openvpn.org/as/openvpn-as-2.1.9-Ubuntu16.amd_64.deb -#install the software -#sudo dpkg -i openvpn-as-2.1.9-Ubuntu16.amd_64.deb -#update the password for user openvpn -sudo echo "openvpn:$userPassword"|sudo chpasswd -#configure server network settings -#PUBLICIP=$(curl -s ifconfig.me) -#sudo apt-get install sqlite3 -#sudo sqlite3 "/usr/local/openvpn_as/etc/db/config.db" "update config set value='$PUBLICIP' where name='host.name';" -##restart OpenVPN AS service -#sudo systemctl restart openvpnas \ No newline at end of file diff --git a/deploy/cassandra_restore.py b/deploy/cassandra_restore.py index 7cf1a47f49..828cc93950 100755 --- a/deploy/cassandra_restore.py +++ b/deploy/cassandra_restore.py @@ -17,23 +17,20 @@ cqlsh -e "source 'backup_dir/db_schema.cql';" 3. Restore the data - usage: python cassandra_restore.py + usage: ./cassandra_restore.py --host snapshot_directory_name """ from os import walk, sep from subprocess import STDOUT, call from argparse import ArgumentParser -import socket parser = ArgumentParser(description="Restore cassandra snapshot") parser.add_argument("--host", default=socket.getfqdn(), metavar="< Default: "+socket.getfqdn()+" >", help="ip address of cassandra instance") parser.add_argument("--snapshotdir", default="cassandra_backup", metavar="< Default: cassandra_backup >", help="snapshot directory name or path") args = parser.parse_args() -# Unix autocompletion for directory will append '/', which will break restore process -snap_dir = args.snapshotdir.rstrip('/') -root_levels = snap_dir.count(sep) -for root, dirs, files in walk(snap_dir): +root_levels = args.snapshotdir.count(sep) +for root, dirs, files in walk(args.snapshotdir): if root.count(sep) == root_levels + 2: print(root) call(["sstableloader", "-v", "-d", args.host, root], stderr=STDOUT) diff --git a/deploy/jenkins/butler b/deploy/jenkins/butler new file mode 100755 index 0000000000000000000000000000000000000000..652e1962a53004387cc1a1b9a1024d7551040f1a GIT binary patch literal 8166370 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�qJeV0h8BIN6i?XU=9kdHHfh{O$TZaA4eN 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%0AHc1Y6MBgi?x+HkEdwiNDW7g&>(M1-Tb_N3lFA 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⪙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
    2*)2~~}Dpd?V3&HR{T6<*w@gz7~ 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
      bKf0e{tGF=@e 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ð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 RUjyN>o_+77fzY! zM4Bt&ycDo?Tc@hPvq&b>sZEyF)HN}gIXa0%%agS_$ov)#LYwoBs75^H$cC2BL1(%nLFN`5lqsw(6 z;#q1kt@U;EGPZntWo&uHB-WX>9%&yY(9$$C=2AW-JWk#coK2lw@wkMe$l@Q$FdqJ*!gpG>eK-|&6*z&0ZV#}E&oKaRdiC&Z| z|0FO%|79eD1SBSIWmq{n>w-00BjU3znPqANRF!aMs*gV~BeHG4^e@T;{%k`5qNYJ> z7X=`$S_I(EAn*JO^$eO$1sz>1AMWV7Z|5BS`NipMQF>lV{y2jp;#MCr4TR>y-FN&$ zTPuQLb%%+lBnu>5cbbt9M&jWkmnfd3CA?q~bVk^)HR#Y=baY>@0SO1*1tWZbwI4-h z-Lsn?f-z-nE;xImyz`lxw*sMpv!-h3SXY#O7hv z#4us*RzT)Vq#f)l)2{1LjkJn(pV_1*f9Zn5tTX4-tHw@YWc{dmeSz{JU?~6b%Mn;W z4W5iyO=0>qAU)zK60oJ=~{CR#Ij@DVung6Kh~;?5psZI#8|+SCUTjssz9h+f2kYB@w9OcG(m7YwXj`f zQf-TPq>J8Ktf61XKq@SIOfofJNvYyOaHl_|i=#9igi)Kn3d}Ow zIqMB*s8}`G{W^a;m>$mDTyI>qxNNeXu&|z*GKO^;#Rc8d#(#a-u}*BC)3$1)8&$%% z8630L9gGo!)u0iBg@AmRP{aSn>lk*0VYS03Nq{r8(Xz!_z9cBpr=vep(x1(*lcBb_ zEj^zXvQkYgY5>W>-P-9wCRHl=1==CTXN-Ty0_F3JZ@VNT#xJyvWf^}OtL-)Eoi3RB z3&;2dzi0dofEN{~2CF()%nEliey_?7_mwHD`VCBpWcvFiE?8-HOy2@w@V;s}m|CxS zmn{cTEGrPsK_DDd7OuLiPi7W$Sps*8-2}n~w>oJ3NH~FT@Ap1d9S8SS$Hl%57}e|v zQ^;6b9uAq8$OOp>!Qo`WEqG=c2?j_mw9NO-n&=G*&N%1*qxSHEMn|{~UQZtqdXUc| zL!(5)RA>dKcv?J}I=4JM`0tB^v}vV6TB9n|rZ?=MaLlhiR!4_@&mqeiN+Ep*^xRTgp^1h=o}&Hjv^#x z)y=gTC?_{LJ=$<`9l;F8ZQ~qIad;f}+0?S0+2$88juheG)!e5+Wv=RSRh_gNsukQI z=wvUpMDz~!`T?GB+E%Ir3ptE>;Zig!BVd!HE!*~2Czh5u3Y6WU;5rRCq=cQueo;F; z%br)FvYtUexThKu$p$Gi4&m23cS7jE+;ZkfI;%}*Hw1$}Nu@zi?SVP7X|`fVwvZCx zCEtt|&q9Y_UQI!av;W3?^11ZeECxW^5#jyY_mqsAO z4TKxaRqDYCU(jrJPCenor(MUP5Al)MWxFPsbMsu_kz-V1@iOv){<+Teq-*pqn$Nz& zN;^5sL|`J4N4n2xuFYQugY&cxM8+suT@k6Zjv10uISN!{4$5p*pzZ+!+ zfeBnN8@_O}gW0&s8EU}9bd!9E%T%enG$Xvr0cn{LnYMSg2B20#O=NLY`1D555fpTO z&j+1OY>=qnlR#Xd^6L|Y|p9OmL%6O*whBHgm1C zTr^?(pcSGU;my}Nd8GQg9$*pjpjgYrW(Zir5tVC9Ok@c^AADAQ%8spB*od!k>!P3U zi|a)rdS*8r!=glQc^y7KDQMIZB{3BSExD$-6#Nb*mtH4?0Yb5u?^}| zvDRN}bpgvW$(o=DbNjX)VZ4{A!|j0O?=i_HdD20So@XS9txLnbZ*m~lsL^zyA`)G4 zay6DtcHg&wp@=QN3TZY2=*^75FQcUe*0$B9ms*3JNr#O>T2iCgW;NULs<}=Kfd;gO z1QT9Mxnb^Zo4(F9G8&7k)2A_&UBw>O@$u^P*UOXX>v{gf$cu@(DQtpF*TYX(96*(j zc(kdt8m8^E52QiVBp~_Vl$Jy$v*JGFTNysqtWJ-?4TsU{Bs*%eeNLs@jbfV@i3$tG z{#a@$ZRRRt_q?XZQ{Od{RojWv?po@!-9(*C-{(Fw0>5TU62R>=0_)rpHj5~Xl}n&h zWY3@X)Ah_VhNZI|-H;b=&Lhx-dZS)MYy0~NddF;b2^GIzf2HV8gH3=jqT}_6M*09t zH8ttUU%KduAE`ez_1NAO@LIiomBB5Biqc{#OJf*MCe4Kkp0Nl^AO;KdF&uF<2Kd^f znB_;$Ik2IS?r{h8-Q&(+Ebwc3OtakKs9ha8oZ0{Cpx{s6+@HNjo0u-Q)c{Yaz(V>H zYrT&4V$05DS4FIKlIGGO&$yw3TNO^_hcW5V#iM3!)znU`^|SoIHOU`5asbsmgK@$< z`9tc^&>e}km1Vypm1tX9W`{7eKG$$vkHUXNu3M>JP)cJb-qWQYlMRw(eCCX*fw7i9 zs{Np#^ky%|F1xG`Id%eVrHcl&OOC}_8>~ptPcMyR*)K}Z!pOQLTN}~FeD|1Bk z{pzl0z=-VpN1euk>7+?vT4X@3k~d*)#;OF|(R1;`UeTN;6bd{?Um{$njpm#-EbhWU zUiL|EyZ-EwoW9OCtZ+DnJ;%e*=fp8wkvrIS-NG;^+49!DR4#}xl;h#+o8L06mK3N7 zW7|*4Bcwa7O8S7fmhK#*7~mhp!50F?h8sOS9g+*i3N?>jbo8|J2Zrwb>C<6TB3e4; z=410RzcTmHdb_)QQEzX#A_t>?m0Ol=`)=xWZ4c<0rO|Uj-^EC@#U3Yyc*x4K%AOwL z-W|@zV!4lmBr(o*9@XiYl75nA^%e;d2RHGHNZD$GmXZNxtU@fks{9?x=H<4^2l+ZW1kEpDe?L2N1)qpUZu)#i?k!yw;pnuhAfnUf%r2x3dGGj$g>vdW| zUgjjyy*}R~Qt+RDNE-2|>Hk=3nwF5Z*T1%}leWJ#(vFOfJ1le_YrTkEI*hMDM0s4` zyLQ93b9f^nN`ftP?U3%S9s13vYq#G>*ADFN+HUqmM48v4YZ_NadP!J|=@7vbBr8X; zzZmM<$m=NWEBtd#l;Q@~>$}D67FUYyVN6?KNhSf)!M4|GZdnr$in^`ZlqPUI4XWat zDo^xPj^T8>$zuqeUmPy-UUR#zqRpOeZIgtL5j@a~3Qg7XWK&cFhs?7oazkdYtrS@5 z1;}-AR_I~YoJlWd$RHs`C94FZXr-I8NGbNyLyn1);$i$-5-5@-SS`uSI?c?lUqfSg znbR2js`aZZeHOp_k)A%7QNHc}Y?P<(@en=D%WP-TeCXSm|M1}B3_f;kK~+An_JBN2 zu?z~n%`d#K(fiYA+ymS0Fb0e*oAxQ`Os6}KFKg3@;OUWPj2K3z3r5(Z=x9A8Uvtcv zi(5W0&WXc0c3Va+=SVC#!RpjGEmzTUY?)Kiv1Lw4XU1x(KPb5O22X{9Cig*w!{}eS z=(dH%U~(D0bYVn=`vv_}L_yJkR!9W;^{F{h^8ph)Ml8;~-6M>xMH!?2&vQU2gZ0G* zkCzI|E%%9+O8-(CHqLT}5<*8#E42RMj?7aW?r9_YZ%yHURQ6sbLrr+`8fP*z8UW77 z6F_EJN{Gt1+sVk&L?1RocwW75;9P;s-dz09+a@Uw3w;Ciy&AA_-c4W7OO3^KUTEA1nWdqwjmc`$r z?)S-_ldtWD(MC3Z*z#148{=xC*`2`Bb`FO;+~M4s?0L&y>~-EUY?9P@%dvSsrASZ5 zDtz^Kl1UM`&O39P);yrLZ|%)nAkycszG=+*!sbj0nMKP_8Zse2i5sqGEv|N2oH!UYD zg9H(|EBs3@T3&qp$D`%HppO77FEiSf5_oFFzwMg}KY}$tgnE&w)B*tv3)huKF3W-~ z^Cxz9Wl=x6^5S(LuPf^~eb>5jmrX^pQ*_nPj-k(GPB37Y*%4nso&QzOK7z}`hL>y@ z@!1w)mg!GQvYoWs0@j(M(ssYkYssMK5<4K8nWVKBc=;JyUR1V)tpK(`j_Nw7LN&@A z)Q!8AmJvfjbRc{)>svW#=C*+Yrwt=)rWLwqf}&9;*m9d=?J@W;J?Q-=m7_PE_T;cP zt4AwFQnJp>EM8^cV_{n!pnLm1$r+O&DKhB80zN=ES9gaIPz7C-;FSYgXHQ|1jUg<)=jjg+QIu#(vI`m}_}5voabV zNyfSUv($I{#ZG;@s(p37g02qEC(YDLA`W@MNyHu){^!6xG5mgY4u%aY5r#J!`aFj7 z1fno39hAkePD57*Y!G`L+~B&}>-2ve-1U(dmO05C6S@F^Q{EOD%5+?U8IUueigSMJ zFzg`giD5Ue!tgh5Gz=dm01bR$c!QLER8Dy_e|sgubd*gx=mfLITC!P_)>D|@km7Q7 zEn$0gMq6aV<$v!>2bG7ve?Su02RD#8CP8^`Q+2yCB!Z&S$K|%eeXo7h3pHhK7wQwG zNT$f8y~z>6x!7IPu(r>_0I$J*sIN$uTr^JsvHG~2@dpiswQ-Xq=eIjal*`aysKX%2 z`u~w62_L*hL+l#2@(1-@zLzA5B$*2wRIYc52pAQMi6oJnqs*-@_eT=>xts9LNsa@A ziwF;yvi`^$++Y_cInP(&Tr)Rym$~?#{e&VLC*03hV;#?q2xox;Stj!m)ddAxcI!1! zo@W{q`#C)ITk1$OkiHl`_Ku-{%&d43k~+SL`S2Z`y_d7}oDW|jciHB{57)k#nVUD- zFfR7KrhhVgn+#tjx^1MRyBCN!D-I6F5uZM@usS^v`R1I>bbC8=Q=MM4$R5*R%c~(Y zh%9|Z+^wrR4?mBH#w7Fah)>HwE!Gi5tXG~=7FWy~cW?$nPB!Ab7B#mxx?LPKM&}C> zsSeBQ9g#UGHR-6+2V`j&*sKxIK7$H-Sz6WvJi0B({0~gYHhW)bCaz*5^Lej^U-HN= z?^O~+!A^0(>oJ?3* z)@ko6O@J$3jpbWuAw|8%{rgs5Pr1Ecl^EB`p1^xhpbDJ}h2ZhR?0HWF-psA8O2?{G z+uiO5hCuE$eOg2v%)W3gPnw-IUPwsdIaHnpDkmiLo>WFDD$>Q4rX9VgH>Pa$B9Qe$ zG3UMNg~5&jDd%fJmY@9fKtzoXeVh$FV69zMfGt6G>d+20Uuq!htzw)mdve;ZJ)OOv zv6{@g#;8e8M05wwal!3E*{GI*OpjbpIqB5Yk1O4KRq8j&m>zb0>O^I0<3($(w8f|@ z^?+WhQa8_6mXh4HP8 z=*^Y9u=4e5RjC`49G9Avu+IbR^9@P&`IvDjOUlgbq#pe#tvW3Yg>4|stbS~0Ou9=GGX;hg1BVS~|N|XqvyDFE7AtUVuMcA=0 z{7N51r5SCQ812RntLjG*I!sf2D7oUeRG_Ii*yiCKPYcRTROuEJoG;R4MYH{&lh1VX znZ1lhLCm$Wcaw93jl|#jCb0EV;a@O>3E=t{$n~V1TZyZc`BpJ2Pu>M1?jL#!EflNscQLu-|f*+IJL!jLRb zpquz5e26WtXAY79g>e#AAyQN?dHw|;mU;uQK|mb48J5!XE0kTcMTe?dz;flsvnuke30ieLl_@AQFOHV0OAif! z#S(E&yq*nSkRy`8!e-p2oIkBnK|!VpznJ}xt?!w7eMF@~GBP=(AHcP1t_D4{z+p3} zw;2F8@Kd7Ym3uAner0;TltVIYYy7IyO$&LG0XkWnhi0<-Cwx^1?PMV844kUS@l#j+ z+|?J}>aD0I)rz=VVYNpasiF=3-2qsGw|NclI#W|@tsb%2i&Nce;;f%3ujV+&mRqc% zXuFaNeUyhu>;mvI-WIsyJuaG%V@68-XxfF90K^tYwq#?A4;~%G7FRU7*kZelzFTCW zfSQf|%(WtlXgNZg6_OYmXtt``_15)(L>pEBYdoaU;6CPWB;ABN?r-|a8#c-u08C)3 zHQE56F7`T!uBFxYFwbDgt;G~oc+gapiDsap<@Fn`J3~J@(Lo{7hI8jcVBLoM-Obn_ zpVdeGDZMC4@6^{-T}u#NaTdnk@iu$sH0I5#2KgSTy5FAS{HRh5?-JDqhsH&Tq8%AD z;9x;nyI$l+$rDUVtTRn%{^*XLBe_gMuFkAVR z-xFWFYqfmOY4U{b-RL}_rG6&$cpt+0?Y%~lUl`jR!g8QlOr*u{*6@+#O$I1JAUt@A z69>pTkIoOL$w#7S+*X^PiTsv3yn@-8gu|7;b1lTx0#e5dnvI4(%vrHur(Pt!z9=FL z3L4c537o_9F2vzLktf#redWZ=3g5azN-`_QtXiZRL%TWlQXjPMC;)t=V;hmC0(1O zOAenTE(L)%rmVv$uhE!fC@imi=uE5EbGDS^&>Jphx4k4&Waeh$ z@6=-F=Rk61KS6SB5q-J6da-3C)1Dce*S4U{4)02N>nRyTKPY~pm6;Tys~CJrgj;^= za8@atDUQObJ2Qct^XUTRTXJagweLp;O$36QiZ;8)+dyg~r$`~|@N;IMA>ejHu>}RB zay<<(l8ur%&V&*zdK;)$eJebBg#T&KNOhlL+h)~9oZu(U(3g1z54NbD5$XbGyJ^Hl zms@y7Hj!MUPTt3Xj+S?=u-s^D4bzCuN_cy+t4tZQYB7?nT0R`r?C53}G+V#47tO|6 zo2Q^?x!8p+_cwu*QR;=l@UE3!~NCf%PKY%Rj~8J168= zFB{Y*1O`7Mhwa5%FH7_y>m?xJtrx2p%jJq0ZM7IJ+#ZyBB5(d0sT_xal?Ft0Fp9wL z*6WZvk|_-WK|$RXqdVUq4Tsh+tHtz0U~aMZ$WU;)D04d6gi~s}?hA))FuNld{N85u zkg9vyXC=OebP8lyUA7}{uGb1a&fTFent1&Y3A?AvM}=)Zm9ZJ&}!@fJh&N2bCBQni=8i}M{-xZ#+-g*tX-1s{} z={^2o_#Np>EF$Ds5Bar1+SuZUcWV9R%*`7_KFF^QJ&|Ab1m2B$*M?E=_yS6&Wu3nQ zh|G$$*M$N+J?xb$Wu>gp*eNda30vHWFt$8PY)FHGv;I>`Te9fQ4w7GR+3`8E5z#0y zWZiU#_E=!j&_$bEjnNq-OZ{;Th(oo+Ek(f&5=1wNZ0=2Pli;MHF3`PPlj88kZ8@`B z(x4A9_1ae0w!Vik~74!ms77lv&G1g>!x^K@*)L;TA<2WPtD1BBP__ zO?5Add}x1pZ^EP&MGg_9PT8V7!dvSdUQy(TDt)80^;ZOiS98Q<*?%mGy!O-_SFuJw zL5)@-rA3i@(@X5m)Ag$rWl<#JX$u+kr}Wk+9Te4n+xd~2b5+ZQdLo>Rs%EYgu{l37 zTbmro2hMb!hFb6Xkz0(wh=o74-=iVg#ptBnpk$c(-Vw&vI%mX(FVmMNI1)~ssS-QS z{gzhUGGz0QM2fQaE)=$*cKzIq2^vG=iP4Y0F6@r94-;=7-`PmRF zxHZubUNu2d!LJYrw6fH@^xX8J^df;2H5avonln+jb1O4$CpxH+%bG~Sd5+0-*DVg& zVezF-95o7C#mWQ$)=Mm@>k>o@~Nud5A>% zn&O!|+*MVVCVG6gVA5M3*wY95I(SuV>Q;4vTE2pq;*3lTM(7J^2 zpeMv2A)-H}B}gp2lQ0?K)JZt~bTNsCk+BizU5jS!u+yUU;TE5>|FAD4@B+ujenTP{ zdQ<@Ov*BJk?SUrhXx5q_JvmA<_;G=g=097YnM^melS|{J0val1hRUCrD0z%_6Pur= zJVBHP0i$0_RjU%JGB2F);%1W-<`9(&1YtmbN(&2?7BSdJIxOrYPIpy~-}{BZbeoZJ zdZF=3+Q>&{8j4q8S9A(KCBh$gjHXFXdu7nBbo&+ z=ZjquAez&Q^pM8lsIW;V9c*eDuh`MP0aB+_QH3A0}rhhjoV^H$5Is>$6XlPt3ZDjQQK>vLM zpl9yanq84OSrXYS?~HX-Se7d+%cjh13(3KtjFclE2047xvPN3Qo0TwbXnl7!W9H8+ z(+ofJ4XoIaq;kCRTzl5eJGo57dYnfeTka2t#A`mgtU|{QJ`xLl3h=Sz$4(l)g}pV_ z)Ua7G7I>vcHuGTO5+CK-PhmAO_qflbF~c`Da8t>;!m1tmFyj@bHO=4bq?)Sq)bivz z>!>7;^KSV!nVwM==XluD;&wi)#3A1$vKp?@&xi7J!^IpmGNvp!iG|Gr2Xg)4J36H@ zui+4P>SUOXmdrq} zrc+zU1qsL+sFS>EQYma}^fC(gA2mqjaHpAA6m*r2=MVY{Gr8)RzP>O-ljI@OCe*C6X+ zB8fA()9~1DJ0tQ3rd|$qMQ&=d(r#&E>dbh$Xiu^wgRhlpq|UOe6Tzgcq?=qzw=Hr- zmgtfC8WR7^%5>3_7hAD%GeyL3sfl#aiaCXITZbzqnL)86#cI+;KXAnoD)tjsEFnF@ zD4aWoa3XaonJ((E-{*_)(S}DPQ%jV@rmzQ!OxdL24TS7Hl8P2FeBn)_x(B$6Wfu4% z5PM;GRnG4k==!b&kra1uD%07$Gi64L*R2xBGCY2#@0%4YFl}I{RVA^VGI1JGP9?7; zx*;@3GKn7F|FYBfjCS~Bf%w%<-*2|>kt)A&r|)C=j?Bm#I4v=A_4_FIcb<(cf1GPu z23=WBbn3n2JI^H_dnp;<8ANvh9r_0A^^Z;)-IFZIP|%pk7sT%r4`N4 z_8f_D{<#RgJ;{-yktBG^88)-*DxyTC5^HvnkN$r2t7OIR`hN5cs?E+~sEM=Ahg)sA zx@PVh@Lp`Wi*!$#`EK68hGSz~P8eG@G|BZT$=#oKmkY78`U-JrP|Iyp*}Jj^B=euK z3y6?z3spVRZL(s4P`#VWN~SM|tW08^^23<%lSqcN<7OMSV*j-;zD>&iXj~CHk8zk4~34vMu(s|9a zKp_ZJ)}ocQR7F8u2zf%MWiIXLI ztpnPIF)~3n0f_#T?zEIkhf&%G@8oZ8RX(_Ok)GKL$z2^nRi}OjODb#TEl>R^t+M*t zseF3yw7IfR3NGi7`MubP{hfYCK)CL>2xlO)UFFv&3KKljMdw{;CgYb;4cCovGyMJO z59j06I_q(Zs-xPzyM^f&6di6AOCr2KqMPHpz6ZFUGpLJ>)}ue|(vWM=y9vGVm@arW zEj$!Gr^o-G#_-{ZaPdWm3ghB#`vrUQifgbX<8swYlY#wH@ZQ-XQ=%6Wj?JRn9J)l| zp@#3S3k=_fgO-kGKTTf3EJc&PB3zowNRD9#xh7~q z(u9D;RQsK|Vr%;Lc6;1xZ^5uBzlH6GKObv7M!8H_qzJ{(Un;OYy?Em4d98XLSI_HA zWQ4QI-F9aa7>&wOsVtL~B`Fc%;wN@PVNkO6N$q!j(%~HwaB-bgb z1?&UGpsyM1#=wBE_REFGCiNo4O54SRGoFr({T`!bsR`kx#cmKXG+)y@rX ztF{%k(L4XyMrZ}!+hj)iAJcZ@`heIhLuT{3Uc<5lla-t49=q;JqZ|;0)D_AM=(dVi!?0FKR|;1%=T<29E^ZH|QfAyOF2rfuHL;7oyDkzxE(P?>ZyFX4?xXK5AhZhc<h>#77^0;)0M6&B15L~WO zSw~J%%Qa4EOHhNW0FLpz3$vPa8c`jwYO+e;)*x_e*Mxto0cD(C6baQ{_}W`iqIolv zJw=>q{}e3Rm?J^URG(l`B7E>uj(g*xjY@%mEY%_s@In`5Oay}q#|q!93OeL-Iry&o z5PXB^8tbA*xI=WKs!pob+KBEwuBTxF3E5oQP;~pxj>Ww+W(C*6dM>VOnG7&oCnH?f zbu9wd=Tquq;<}Q9=411oH2j)h>>UutCil&BLZXs2e#Nm_KeKE$Hj;ypQ;p8c+IMuW zI2<8Hf&${gC4h>kf^%QXv0dq^Zo|m`kKA9Jk$NT1MB#Gu* z<31F*(7z<~rQKdM%*|`-xi7J!Yk7FiFKpT!W)~?i(Su%M z1V*l&G?J*rtbagEx)P+ZZBUucMZK!6T3gJEI^RDYk}P@59)q9NgE0kg5FoR-H2eey zA*du<%wsLv;9;v~1P4!jT@1ax1FdTJEIG21EBc;#0!M^5{M{|CG(;qYMk>Yh82WgY zXlRYzpD&f~mmm#)<671uTmuP>hF`fsq$Xi8B%7S~{JIzXN*$8!0jC&}U}&UM;8!(M z)AciSa^;6oQ4~L|PyxnRwt3bE@v90MmPIx!e!wJCC0keU)L##A4rjZu)2|v@{VCmU zDVJ7t`qS^KO@C@uHA)F|=$Wl)#GvT}=sODdQCC@IxYlCFhyweK2{iW`M*zqG|M%(M z8a%Z;hqG&CeIG*BbkW~y%^KAG6i2KvYj9`>>51duHacIMIaw7kZ2VYY8Ds@6AL?qW z?RtzxQc)wFNA_;SE#hr-jhsgvhYiS@_#X=yoR3f~5gp+q(%xC@IuO_9t9pUBUlzpg ziZ-trF|d0vOcPzVK4Gkx_%&(7i}9hc=a&@}hHxOGZaVO$9YC~O4c?^lgC>&K0Dc4+ z&`gt+2B*7jzrc>L_*m^1_N)Eyn$r;%Pi1v-Fa2`8*mtM5 zwC#8nUKIS_Ry~UTt%s;ULdDCt&y32-xaq7!)|4i+fMB54*2&Bv_&y@8V>r5`QA00? z^ry54OMl{92btjKEaQ*L7Cw_?gf8?ZK(F!nood`^{vbZ7dFufU*YIy?!Z^PLZe#m>}!4NMXhN+^Q??J|V-T(5dWtX_9f4`}FB zPq<(Ivb}#AeJjuL8N2%zz|#^ow%+Hxz3C@QWJQiCmPhIt_$OSmQSYqD{3P?7ZW3(% zR$+!PB?n3t{qSv5VDs(4B&!IQJMR8`?J2S4Csn8Ikh$t~x}74Y4t;#w@YUCH*ZT5L zF^>Y-UPjYZ77<^~ml^+ZB+OlSf1a^Qw!j8zBlI8VX2Dp?@*>>L=Iw)Htv}S6dO^v` zBeZ&8zq0U&&t&P^&CqJ(J7`gVN^fvUOK;3cZ;H~iW&KR+SZ8jACopv+jp$xonG&Xv zF(ovFrEv-=5mzF7<<-cxF^ZM?U1e*WJS3v@WZ>70q=>~Yd-{C_8JL7ujA>V0!m3Rd ztvE~Gom-HZl zVM$tqYf~OTz-5?)3*3Syd5}+WK;60l17#z)5x6|=ocm>ba324(e8K?wl>Kb_@Tu#OBo~uOb4h)p1jXS~-fD zS{z<~rSR&|6kC=YfW34nw>G*-pyr#9z(XHzJG<;M4R1ZD)L$}KX{#Nzhy|m4i;VUy z;TtU7b<0>Cc@mP~^g>+*Ku8mJPo=9dG#WJ^#O#{%r0bzQd**HPdFT7Q3w_>FdyjUq zQHP+Ru0_i4RgcXyjjM;C{;2! zeBwQ~Rtc(T@v9s>y_8c{_X(Bj`noUM8lnY`MwXpBpos%oTW-NtYI+w7AfE)sNrPex zJyt~;9~338Ie-|+FREKCIvu_@vJ= zOe|5JU~u(#DJxNbw2D%5{1e}fIs=2EZ%jMNoTPErh#=#|S^^0;6)k>Gpcw_;GvEs- z^Y$n&&`(Qtt)9|?!mS9XlK`*PKqVzR8k1?i>91IwWh`1=wq6m$PDOqzAPBsiReUeV zMwH|cMI505w91e$6yak@$I%S80#_6T5q@n@Q1Z=$4?sOII7cwn8K!L&k=75Kd8R3S zj*0W-daWM_idKHnDgUi1$dI_T6<#y2z@DG8YxeRik8FTXm}S~xi(tC$#r!B)=gp7L z6el`DUKu=!f#aR>t%YRl5Ut=;jd;i?H+2}nY`352wB*`<1 zSQ8dE8(p3*_}Vy0)-#wYkG1~Ppq)Uj(PTe^r=LM!C(pb_`?yhbE8IBNHifJh-7C|a zTypS>i{wMsLJgklhyOV?$0jv~yq+BLpJZ?i(@S3Z9r{i(I3A_wq#9~4&&~PAX1%2j zOZ18`m_r^@cG;M=K_@w>`*8Hzr5xO*`*SA{qT7x@#kp&KiOA_27NToj^MO^dKy?|K zQtuF9Rd`nQT+x_lyP6}S*7TbEdDg}Ewq3_HUxd@>u~8{xR_K;vzcn?d$B@Am;RmTJ zve2K>A`MFuHd~?ZS@QTx*P`&Q+bvRchkM-O9`o#xOudmAi;WV#=3hDZq@}Ehx-!?8 zJ0yb&CJ293CQ^2Tni<092Ku~bua0tE%1jX<6CsXnk)ZlE5} z4Qk2DeStdr3;o90lmAo&0`)Po;Ig0w1??w$ti4m(2Ph*Al(|(|tgSvg>+9wW;JYLH z4a!WbK%k862}&+WAYn!HyOf1UkxqS2+eO*Q^lwZmrXMhSnHY;>C=0{2VF_;5F=6OM z3xJeMt;S_l@2fG}Ks|~RU79&Sm-KxMD72J(5r^r8N8f5(cZ7Q!;vS{;h&X++^+vs} zIn>dL+Rc1d2FJ%}k^okCnRsyUGdwcuxO8q3vLw8RL)|3H5RkMX1yy6{L5|9RspUmM ztqJyHWD3-x3E9x}cC4jbze@@``x~p!Ma0g&(79Wc8VJKJ)hAT_7BMd3zed$pTD5*% zPf~VKh5f=IBr=Z5wc1zR9hVx#W#CtprbnK9n$D0IRoJ>?dP7x;t1P(u@D%9=1KXsd zgW5wRTLJPd4L|cOK_n$iq!KE=F7-WaDUOI8iHXHd1U?|*%=g^Tj{yz*Cl;$(J{tFW5;H>DEUEO4E@`a`preV zSp}k}Jl}yj5Zom(_?HtsC`a@K$`AwPcc*4Sss2}Apd8hIQ1-M61j_V-9WFg6e$=tR z&xvP#2n&W!R^lkXz{z&GldGh2{N*uai=4CkwyfHjn>UHjQj6V`QQ)7jts5^LTf_Pc z7WkaSq|nGqOg(*G4~U@WNOX0*cl$3R;}*jV3xOe8zpYE61Jkl&j5-Ki^J1>2?Jfs6qvay;X?|kpiD2X zcMiBR$-#F+5)DUORWmdijwr3+(4T(SkXX9cuz2S@bCH;F{pvV*GDpg=+5cvnLP!@3 z`;O7U5qkU&=s?%6gjL-3mzA&xBfm`_DTKInF;hv{f6J`SlBbN-dZZM4%9}r6fc~hj zl5SGP7_5v`)?H_$w#vsSP6lHMPD_>tqb(5+_wsVMTsT}vhb00l1jKy3$eTOJ8ur24 z^tpVLv!!8>y}U%(Qpe*SS|0@IZJ<|>F0$&9NlD*MOP`Bg(A?HpxIj9Vh$ul^a+uC^ zulONP%StpTqQc>;pFgVV{>jZTs)r~f~!2E zELp|L&_kY1?)Xb~EDqhSC`r4rn;qbK6}$wtKA(BpqV#E8d(U5&B-QH|lx<{79#LDxvB5I=hXtQ$Zb z@kT^V!39hFENAJ{BX!=C)BFwrroK?L3t85bl6Dau|~Ma1RCOZcp-ALe{j z3GRE0&8jBF`ecp(-hN6I?qpT-OM|NN->CMYqdGY6Jv(V!<>!Qdj zx{h`r1>f0Gwd#G!zqMoBp?|8T%hCzsf(9Lz?c#vI$1=sciDyn~-iDU?R-qu+8t1wZ zf>PC~FLHv^xvUI+VC0Fw^Tl$7tFE;#XJHqguDdt~M6U8z_6qi+ikeTucKF998jJAx-DyzTWrm*R=7&QOF}uW)Y?A8)a-UXfw@nSktIww zySIz;t5*G^aNO=)Rn2P#RBQLr8L9zF3hAHz6mQ(ZvuC_<*7@SYONjg3VTR+l^mi)8 zvB+i|@y2T6jVdj~sHCv9RZsHP!j(QRr}~^%t~`1CrZO@blvf6W23{PjL(;^-)v2GD zR?;2@gyH}K2W4XjjS?tW>VsMh2;H6IiX%8&(8&boJt5N-@#q5~M68U|8Wl<4P(XrT zqN)yqmEhL6VEp?zRKsEeC+WuJKP&1HdI{`*AnF6f4CiYW?-TZ$J6PAH1QtUA_(keX zEFEh-NuA@zI(y!~h&ot-->xQu!N0muC%tpylTZr2^8k-y zrRFQcwS{i=7G11H0J2x2T%%Y|Mfy{^F-oJ=jZtT=75@_6a`{9u%A;jLJ-!D8Z-34k zw&V85F`hcD;zXgdv0pmL4BMfol&`$u4BMdStH(IIT5zbHKI@kd3W`2sg(Qm>nT6&e zm)!KUe!Y5-(R%DAg72++3>1tJ3V)r0LKg2ndXZwUe~GnjGKKH-FI26!py*I$odzWcKtnR&TDbP5RKHtu?mTZU(mIjGRN{XtRj=lhM!zw8!GT%X6%Wf>c) zA7skB)P=4(9B>mqIj{;c7fQ54PUXt$>8M*Uu(&eY(d9pmsOHF{``yu5R!CGcZJ*qZ#+DVg zJg$p2R@1Q^nFG|l^{W|&yv&}YQAN3*zadxBfBv%4u)>FuY*6rzA-;1b?bb)!?33bCAPxZ3N1%KG6p#M;It$x>yXDs2_!}um1ftYvKhx zKB9?HsfTT^)9aZhb%O@7N20VaJTB&NhsgF*ji`rOS@7*3PzMm!Ri`i1{v)URb!4gp zMke8Iws_)5PY*{G^f3qr*&zIWSe72XJU1GIlaA{5AjGYZ=%ID*Tzas}RX@Ywxjo&a zjWjBaS166QffqR+Daoj;BLpX#{EXOozKR%I!|nA-#lzjd;zCh~hHB^fNN}V}UO%46 z22`T-8#_!A5-Cz#$<*jXy5I?Y4JOF+Xtl$aQfDNYib$BtWRez%E1>KOxb%dioCy@1 zNgCp028bq(yxY_;TmtB0kIs*EE^Yy5%Z2S zNV>H_!P4^#F+bJgBM=i-%rYNghly0|_ON&kQ z_c5YX?0^}hpcnSeEqOUu-l}SXqHjbW8*@MA33OP~EI?Z-vb${CmWRxq$_A=s24HRX zS}5|+2Dt@3+OJd2Vy!2roJRq>x)35z z1hlp!cMx-V__}M8LJKHz9n1z&27TEfxkIJtOVWmYjN8dj<6jH~we}J%9dOfEBF@SD zu0N$^D_I)lXtY0btylrq;<3y%FiH5TE=to40hN_wy@5%W95K<@{s11CV`#z@XJ%7x#o0;KS;e`D7b(v3 zJs~^BV1WGQzM=X((gLC$Q(~pz&8O$g;5b$6XKvq_Zfk%fwf$pdAR%?_^HRX2!) zsckM&<;z@?A-aHcT)HZ0%L>hI5t(6w+X|Tm7bi660cez4s8ONeU1B|oG|>1;DJqxm zpfb0}8T;PCf%mlUG91{E$q5H`SdBg$Sm!7kSSG7xYfa(6e}BJsIIu1!9N4ZZxJSc< z11Ik)9B3`MaNrb&=qwd~fej%dZs92+^iE6nFeALrVt7ZOl!g^D#e z?JJ#i@o{?_6g3>;)Usp1U3A(cbkWJyh^*M(v$aSl7d%}zgcS#)Xupp+ZIMU!Pq)6c z^Ddqfvo&wV51oQ}8t5O&yMc9bZlU@XS&{Aj#avctP<<&44`_E=2I6|Hm1HfKn*|lu zB)aKWbJ-aAE38<9+}@Q&99l5~%dz6ib_Y;C`JtNtAh9~pt=qd3cg^vm&gOt|E5*V| zL4vro7*(`K;Xkq9MWdY=Is@r6CUfP4(6HxhwG6y|`!B%S3M>gA;#t(#AdNFajgRn+ z`x4QNfz%Z2>UwD9miiv{UG%@|W@R!sXb&N>O^D<;xp}&_NVgFUc`6x+C88de3r9IauoK>Fmcr&zY$PO6cP{Z?b-qG_Qj^)wVhXQkz9LBNBoBo3_Wm}!GseLvWn}*NSV#9pjG#wTG=O0d(my7bCd@sqtjVTmc(dSRZC7wR-LbZvkPVI*^(ai_GvSrmy z4jUsl8((>>GYBAK*|_>u*Q)d zILU6dA-lW6alRqbFxot4+dogy1k+>89eF!$_`|U|Kd?&HFr#&f>6kUi$KF-X*{=7W z*c{uJ;7QFXj+H+AH-k_sAKF2tgBEzNo&KUMp8&2xL90i7rPKahRmdu6U1^4 z`}{$aIln9!4tLA7&blocmuTOIsWDl+-+Cz;i)a{XvcrHA4$5f~RC_&U{0c@VCx>ie z2XW5P4$ljZf;O4&HyFcrhN~eAolPcMh|fpzpibM!YAZ#}_Om@s1#|3_`!T?Nt?e6$ zrV|wwjpiO{zuql^KP0y7v|Dwq6M$ONKu<=87N3wvvuidEh>CU}W7hchC z-^l50{fE?r+OGjFssCDg;=laLS$tuAcO_1~>M|RyMKrVZY^^5t2Mr<+f&k{$_&;?$ zGfE%q8Ec--55d)=82kzw`KPXXg_SyEF2OE93BfBUp{Jy+n`l?}+iMf;4%^C8$BKtN zV{<+yd66y|q9P0iBceHEd6~@0@x>0%aQ14!Aged$#C{Q`Q)DK{{iz->AS0~hv;<>h z4;MT#MF2&oQi!c67^;34w^&`=VlO)tyg>y4rjXB;D2@`PmY_eh(!Jr29>6W0fRf_p zxSE*EDyF}DM=&%fz@~)(K=oJqrQh9g1=XE9tYEdX9q5ZDe++G;YLqepCw~N3LY;3{ z7bK#8qeQyoOx5yXeY0yo9O}DQ0wi>WACslv%w&#C`A2%l_eUg;7OIW>cjeuf2@|ho z|LTd7r?ttHZn|R-Ow@*#jm;`;(Of=y!_PEGvSy|s6sp*=x;FgTWhOy>=pNSF$AY8+o zsqU)KPS@$*k=$fRahUEFIW!!NGAI=+B7nlM^m^|Ne92lB zT?#1b=?PTjhkOpdyD!*$2tgfLCVk0c7ISYd7cS$%Wn8$dm?Str2RIgxw&I!BV!c9) z%GpO%f=fU zI{d|GXA3zH=9V=X2>V%7h&IgvVJ%F9C@->#%`Tx~Yey?(zND{A?!&g?*U*}XY=H1I zH4zl#<@UTnSwMk1>7>N>lWV2QPYg%}=TR;kHD zU)%;!rA1L*6nl?hg%vZ8q1%0kt8W|p7Z5z`yT8{Sx{(Wbuut+9y>ZLP`MD;(TUa8ucQ_S@OV0Waip-3akmIe#f!F zunjkgVveWJ(QSGded-uAX{)Xf)!}i5K?|wKN2A#u18M?EOZ3A7eYGQ}TD2o`jWw{$ z2w-=G|9nQI=M6`yGy02;;cyg}(P3ZVXJhc$+gYjA7eD-2%M5nO53kPagCC5#;RowO zmLFbwde{8ma`xhfy=>!BZ+>`9_D(lHIAYE6!|e&j4-SM~^252RWS9If%$msZ!$zZk zEI*v6CW3-3f$uqkW#Qq+I;Gq#ToMd|lJ0PX5e%v|S)_l8!&je*jBj2WHAdZh!r-~3 zcDrVkcg;fnpR!8rN@JBO9;?K;2RWrk3w&oI`Hx!W&qSH`jWYj<%;L(% zYGA7(x?R=$HYJ`Km;W!_PbnU+Vx`BNXCa2F;ZMirXb(~KkZpwE>55y2TYc#E>ijn> z+fR*VR=O}8G9pfSZH+9q=TbM}!S9u7pJ&3Jb1ej|<|7KN>Chj|=S`Lrl-!f@;Ggvu;+o#{=$hpL;BJkDt27o$hg~d(3x_ zlzYr_k8A9~fpd@F&=09M@~>hB6L=>2d}tLF)Fkwo)cYF3DJ=8Vj=aXI-G$Wq_mis5 zTn7_ZRUdETC}M9!R}nQaSRjC1<_ifllOUY-9pd=!pqn&)lhjV5KcFb0@ra z$`aWkOJqy+qXOxdZHjoP*>bYVuzh59miWj?g|0&E`nb2f*4OqX18o6dz_ z;4~+lF+mp$`TJVfqi;j4TLMMI$C`giA)}Q85Gy?ildaFxX zIuF?OCk2(vs#P+H+w24BQlHM^GU6r*m8+1k6hhePe>ZcJ^h1*jmU@dR+ntsZqwe?- zjTWW_Mc00CfE$@7|B>V1CO*W$-LgvPs?tITz z^3F@Xb04QX=c(Q*Vo}^Wn1PKH3|nqLWbyjB6FgpnqFcU-gJ)Txl7#a^dBqs?$GkPd z2E~@Co7K@c3%uzYO~6KxAWt3bkc3ERkR6$C5p{I2}t8~PZxIDQ1ckX(9n*|S&~L?7a%^gEwZ(JV& z1o3{J=G!VRilx~o{aP&T*CZ%iq(2JXQ%oB)tX%2GDaX`*?WCF8bVicy>~&%L8u;sM zS-Q2%`Teosa@Tw?Vt=)o;H>`GoSz#E#1J)f#K`$6&`pBYPyH#q&?SLZSZiKe$84?| zwX*W$@?U*%N7u^mz&dFwE*c0@DvGU1mGgnU+8)V*8(SbX3(4OjDKIA#h? z0Q6HSvTg@8BEo5P4#PSHioTg!T`07fBNin}Es=@>F!as40q|F})-qav;7`2(<&~g3 zp-{nr&Ash;d3j}28XohgGhItnCH4BbOt5ht09ky=%y9E;%oTCrCPfUofdE}liYozG z^rOT_f*oEo0F3Io_HKLz+4+l0h;Zy`{sOHbB6KX`^&o6gDC2#jK0s3NAP42!i+P<< z=zfIFa`mi0(nx$}6_^-`D(L7(1wqL{aS2Y9k9=z-N-I1#%c;QbZq8N^lw4u6w;!*U zG)xS^q9qz_)THRO-=r08~!K) zagFsLkjai=K|!VP4yj0wLm&gAXJi(VRm zOwJNWrBbl2w?B5--bWIM1F{E!*eugs$qH+ytpf!DU=m zBlW@jC3BvN_u8B%It>j4ty`Q30Tlk>7@1azV8gdbbCFvucQo6HAnkj$v)*Pq33?@m zZ@cbGk{zl7G?{lWgSs#Fb=ONhbgEVwO6n!_FH|0dqZXGn=|?}c#$;O8;;^mO0$rM| zeI)Y*O*udH-pe~OQ;AgM*hk1?A74Fg*YQSz9E4~pFoX|PcJ{W@}@cE3Hl1hZX@ki(}Kqd!F(0E^i z5Um-A*sJCuVlbK*@u5Fze)5_eEy`Xrr=pbzGix15F#Ijf+@*n1g?*ibG-oZ^G89d9 zFl-pzEJ*e9tKFXFvZI{U9sXK}8ZdMa=K>#|G>co)SO_bt9Fdf3Y}(Xw8$j87h*o{c z@6rrOsa}LPy~Onr_b<$;6g_pfLPaG{+hg!1J;=t^AY5-vLMMc6NJuscuTbp(O@?`y zOt&MCtx1^S-LT1b!J_xRuo^aPhpO%|vne|%&_mzss@K!zkKhRfv z>xa>o+2?B{NqU?wDTyWVV@~3%Z}WX3H z=pYG#3Q4YP)3If)g{~iIhr=;#PSz{^dD1TmIJ~fsr~Z`Q;*zk&6qvbrZH?T6^WG|f zLz#B`&Eq){5(H?X@O1L0i%uVC%ll5l!Eb-nmiNV$6}|cO!F0J~Gmkd6Jg9B1YcnXi z`yDY!H0cy6nrxGj_d(H@ttxa@xcxcTZe`cc*SS7Wvx^({yC31Ow;AeqZ+~HhoBx}{ z^eO&=jaQ0m&V&wve|l=PCA*w{I!YNCYY9yY#jVHFaG!2M#|fX+KZojfh3I@OF zvDe^NQWi?uEz(C2==S36J|Me3vgWbu`p8-;(w_#VE+;)XCtV+|egBh!KPRhmG06c6QpwiyTcl1EUod zkV26WX$V6nNvB9bfCY2kvT`XPk`l}m;!N(a$OC2c0 zGa?X76$8Q(fN+_e)C!WoNxKk-Rzn3BEVtjK4)|b-pATksB&`3~Ta%HRWFBLM^ zE2)f;Bz6)dl1hYM@TV7{Fn!#%PMo2!*C1-#6(iG_iw-p2g_KiT1Fb)$HQ1K!HQ-K0 zz0FsVW+hJ@c`eA0S?gC3oYwwK8f+rPZi)sX3@z3=?^d%Qh|+yh9#9GrK`AJ9COP8N z$ywPrb>yX)G3w{}pp&>2y~ERsAEfkE2?d@QD7oYijH8vOh21v6_YsFNe%U zGJ|98jq9g6uRdn6Ox;bYn|=w~{l&D-xHg<35Ws2X=ZG4eac#e8bq2qEm){_!J+^p} z@Qpv^@Yo_Xib!y~R^NXA1YKbjM-ZMe*@*<=UvCVx^NgL-XXm$hj{dae5l8>&sT_`e zBrA~E)oiGscb#g;0!m&2LzSW_T8F@+M5!fG9|v=uK1Edh#hONPqwL6PkUCTkX z4`y>s8{mKCK-+egkK=GJ2X2ndm_3JI+{ud52KiqLVza;P@)fY`bX(4bqfgk)Hf};M z8C#NG1h<{D7>gaKvwuSomWmg0LWKKKo1|vn!mk`Gxi{xU^gKZ$ znZM1>ZPE!E?!cgO(MX*xP@aLKgn(<5Y{PF7RU_)~_SeUPA}X|t*2$dU-b`!zb$}U{ zT21q%W7;@|QY}Aazis3kiQ+MB>dWdzPqj10%3%)XPHWEof;jOMTsx7fX^ zxs$_6HdJ$!+qmIRT-Puz^@Q8944nvr#o@`ue~S7ycQ8;kPq5+2F!u`APmD(lH!wbsb{MhfJ9eo_|R$k zAzbbrOWfmbd#Lbaac4W-&3zpla-nmF}*!MI<_E}QAYA2omBROhW5+5P!RDVS&3IfMA2AjvPfehx~3Ipy33*T5Uu)1}~z zZ6cn@3=oWAt*s%UoLt8`w^IzkjZJel8fS3)Q|esK>HF?GC+L_M>WrGy8ISA*-xo zbL@J%AzNHc9KLE5^*Dj`1GZHR75UPn&ZIe(;;hXcGn5l|_TqewVRH_VxFPhg>czsU z-8YCyo#PVz{k}-*fCt2;VjuJgs+a&@jHZK%RR=Xa4`)ql-i{MmAxQP|1Hsmq9=7rA z6Ohf<#5w1%buRp3_d8K9=;pR1ZD0gvNylk~!`_JnrduR_=AJHwjV=2k$KotIeIWnr z%m3%~ERh=AMvuWJ!tK^Ha z)Yj*wk2xc?-^S#Q_0>cE$eBR^kY%cIhpwvDB%Ou%-igiC3H6fE3p#L#ny6PUTn#Q< zEqAb#p_T9)!(ac|X{$!jV7+jUh!^fbZ&CqBHW<*+t{^;djIm+6J#e~IV@{R*`9-m8 zA%XjkyPJ(#%uIy)cdjKo#u}6Waz%G|3khIF-{KU<0YF@lIa3_`-e`fkb6q?C5)KVv z;p$#2+#{Z}#OdEJV8o$+on^Avua)r6$btgK&`xH6U<)ODoOU)dKoMJD#axwK4+gLJ zme@fNy>k*`C-N)C``8l43vrPTy_0P!vhij8tV{DYZu|MEmZ#{{zF7;D3eJUzeWWm` z?{rE;ynC6xGLs`ZXGd3}D)q-CM<`P(M@)@}eEbnrhrUsj|F{+%$;KF$t}Psw&Ksw* z<~~gY!oPxg4osVEC|0&$)E04ao&I6{Vp>Yon+}{c%JD?EOTGmK7oT_l-332Qt8)z8 z4yusvY%Hib?i8NEnU87{wQPK9;?Nk5kvh|aWV8b)YX-hr;>68#|(mT+3A4!s1vm$$MPPO{U(5T-s!KBIi`!dQtZdBG z4JzXkT`f6&l`KY>%c_(+FI+S5!q8N|HycGI^=U0czE)5&@Sk!6Sfg|9svIoIL_BltMsm4$K(=P_ z>b!>qi?e*YZZVp*-tp5S)k{Z;)zwl%BV$(Qx;pX6*Nqsu@raz}Sjt&fsd+G3k7@Nn zjzJd}l`c`0EC4hd8xfc>)WD5q!RStr8Pj z#9T$1tdCqzBbUgpqKR5ZAAGlVRC1#bZm0m1(3{**3^(ilA( z^qU{p@Lyjr0sew}OtweA2nYK7Fp8;84<3C0N7AJWj^~kiTubY&c8y%_9#h=o4=*8W z+nEr`k+1k_Qd8#Q+~7oPxyU26*!lmsIB~s$jtYAw60v1%_tUSIKcb=NuOb)vL%1tM zLRMd7=33RnF2A|%w3y~?i5Y)Z@F%H?nztiD_fd;RlX*(v+bA9aSu%(|;1FEZDV2)Z z#HvrbWF6uPf8mchO(;7<*ywkqKz)e$JN&9W+nNG3An$VztN)7#SPfO@uTQ4jNq5q+ z#j+`ITo4@+!x~6T?^B2VvpRJlX8`e2seT&%Xe@Y>j*e;>kPIBdRHfdoPI1j=Rx)lZ z_L7kdO+rer)0EM@K1;RFGOA@aQ?ijjtj10Pq8ZRKKgEr?Nt7!QKFrcdMU5*sq@eXa zq_a*aGU$RYvpI1}+2nD-MfnoophM^Z?G9JM1}>D10qibv&Z2{ybpHjbCB1Y4w1>={5|3=+?g`$n71Saj>npi zHls(yQP)g>g_m96qyT!?F_t=jNQh41H7VdnSc0HgO{S+NBnXUpdJ6(%kqH80){hQP zIaZ5;EZxF0F1ixBOadc^lCB4&YRq5Z%(k+9CRG6A5RZcVp`A!JhVxzP8cD|&%wXoE4_qq<5JeB%~XhKJ) zT1e=h2qz6PrA#}pbmnnvlD{75H$`r~KS$ek3dIb0oy?aXu4-eSy}AR^33Yj!wq`T3 zK(TAN6gFlpP6Ha;kl99SOr*%mCjSC~N5_(Iph;MO^wTkLIyu z)^0Ygk7{xB(P=e`D1%}5FFFvwM2fJM1Y=&f|9$^wHOD2mrWz=o+_J~-mpkPy6{+R~W z3@=fB&^-Y}{IJMb#VVrFQ#F}470s7!fu!2>K{_TJ_j@-ips^#{AsZR+RG0a&6*`DQ zHY8~O@Y7bpcfC7jjpf8ey2s9=5=`J_zCoZET&k^!bh_x#mo?Zmjm#G8C)gaRC&BWn z%vu~|xftEQL$Kj59&)`=U0s{7m2dmZ|6}f5;Il5vKmHAQa472;>T;UY&{^|53=|Y} zDCjetHV-Kv+BDN?m{T^G3OL+=Jw1GtN>d9HwG2(mO36G9K@J{KD^I1Err)Qbp%xw} z`M*EceSe?R24eqyum689<@p}&?|onA>$VQm zN0#iN6*(59wK}QxnL1=k6S-y-xLW?2GBOt()KUh9Oe|GGCQW z!dBMJL#u?LA>9r)9+al?$ZB9R^u8(m9-*ki)jkuVOCNNIT05$(=We&>^KMnvsgcTt zPn@Xg@aLvn)RM0hR7p2dGmpqk;ZOod}#Z{YM&QCUVFRPn7^5_hO-pcv<+( zloN$YJp(N3Hf#JL7!p3It})v?9sZk)xDe&2OpPpD>GOY;oM7Qrw^|c8Xyha)J-{}w zHT4)Lt0ZtbmM7@wO69yGXaC>(UA5IckB2k<2!=Xiz++f|pKYaIupiJ7VBqBX)vwEN z(91;e)`$|sF~*<#If3C%T%xB!-!%#lkQS6kZnaz(p!!{MG%aw~VsV&+ujuD{$u7`T z*60`8y4;4fLsd-M$B)=~_3WkKa_|#2H#xA;Z-rvOYAci*1+`IUzW1ME7_F6sNBD-? zt%zXpNiO3dH!>i?$RzPPe^a4ii~NmAqEiFopU)Q{iSmPd3g5*ju8AgL%hrl@ZUJ`G?5ow5j=X>k}!*yGmqbk2jPc zfp>vtM@iT`&&dTi_&grmk>Uigdv?vbh)O*~+=LQWW#PRa$lgr>n+~SbhkFUC7B5nH z@-*!X;6a3^@Flu}L|fd7k1ZeJd@QPCO=m*cAa+Pj(+Ik6+GMFL9OIj=rsT>E7Ds<0`aCh;Y)^)Da9oRw*8q7>oKx^4KJQF}$~SzZ>0-}>aOO<@`RgfJDp z%Y4rUu3nqKKl@JRpSPy*&so3apVO!Pds7&mz}1n9xw`Ufu0Fc?pRDJ5dc&sh)ta|A zg@2#(=BBXxyF6Q4yOH`{<=LM&9xWXF)AXirT^$XrEdPN0T9#7ef*<{BQ&`f)x8L0M z{Y~L3pHN@&PI?lYKd^Bp7>HcT?^H8{($PHR^W7_RKHo*3A6xkOA@=!C{paQG^ZnfCA6=L8d5u0FRQUPJ zF}40J|GC-wWa(2pr1d%9$@%=t`uxdL3xJ5;ZSM8y_X|J0$Ug1) zv+!mgon&bf4_3s+zIaekzpSVNMuVyp4Iy_)_}D!x8zQcW4a|G|TRoo3;~nxIFXVB0 znEY7~tH^tEh2FfNFf52Y)jzj|CcU}b-jx1%lQtT_j7TxVeAa>pXqdoY#35{QR`t@k2vLwzbpjp^a@ zcc`GIHSw@o^H;)?_IOQ0v+JG$@S`{DFaK-!mv0UH>u&4~{|P^Lpyt89>#e!)3#sr2 zyBqxbZVCQrdqVp%(H`@zf6QM%-2r!rx_Z*Fylh!`^plv`N6pL@@Xx0GeHQ+WPN?TA zH`GjLD>urw^l{Ovle*-{?|)qnbMQ1R3IauJ|NYo(!r`=^LXyY z>H)XhI45pZ9Pxs+XrZg0xCH*h44pndV_}2uEjr5hekM0WS3al5%>><8B8;0x-ISRf zRLH@NI_)BDvu-N=O`C42?I!A-b^28R(P&?%&jLmrvrd34X;myE>+Jr0Y9 zDo`qr*Uzr6;-j{v&Dgv{Zg#?n-V_Sw=sqBS@SZ*(f7PTovNtB2uYb`XpYhn{>`gGP z%J;W!5|cL5-^!IwqkE2g+P#f>s)7Q%#5iLFSe5BU>=25?1Doq>>COMYWHwy4$jM-r zphpH5*l)CSE)wYZUXY{AeSS9(8NB#My=CzI-}b@DA=mek!Ci(JCx5dFPL9b7*0G>@ z@;L1q*k6p?6dVusw^9y`APUcpQ^P0X-Yv+pWi@A2=EP^XxTOeS2k&R1 z*MXPI@(Ca@d{-^XhW{e^;x|_NdYOXe$ktiR{=qJ$AqyS_`eSpsU7#QFxqlZR zdFxT~;zLHpvhg9=>+Y86VtJ#<8W&A!82fEGS?pSz4bhOd%il|CczR9OHHKw z!LNw@!m4&P&A_Bt5=Lpvl6Y5_Jx6T{@kxhUIda$!dsAe|ANr!m_PG?Ppq=n<6-JR+ z%c00exi%wD{^N6B7f^ZY=kw^nT*@pxl#^{~#+Y?IQVu4Bb+6v&R03}%L$k8BWGMBe zN~f=}X%}?TOY0MYjnJ(0z2!<6*!XW04@BK%BX3YzX=O1|;Ze7_ifek9hZ`GlO>aWn z`CK1_ID5NZg!uE$Mu^sB5TXdtD8T=JEDzz^Q=Al3%Sd20bW_@9)^gUh3!z6T~!%x8SDW%RJsog}P#d6tfD{0SZ_ID%g(yfPyO*k4}r2Ds;m z%nUs@c4hwOi%i?liP>=8ECD{O=Z5gZZm52evrBpOiqCyPOfH!3n$urpmUUMD7-j8l z`Ihwq@aFNd+LHKSQ71Ez-9sVaM;MJkrUX$ij_H&NNa>4cFiWvO(E>>VA3N> z*ZsZT()P%UxzaXRum`bs%y38c*r;^wP9|+d!ds_#<;YYP|6p9SU-oONXfyj|=f
      55^qsDs=L5=_9+G3F{aG)@;G_J4hH){g8c+>vH;#IJ}bO&2Ef@C zJlFG|(g%EE=`V@u#8Eo+V@Il}^^Zy9GC0F+5{TmPULBH}}y5-m$rJ3g$Kd0=Ac+WyXg6u)35Nda#-?+)2en^U2Zo4PY! zFl&nvwK);{Wi;KB%xGW%|9;Smf51TVgxEAc$u+O>!_?${7|!7&4)I}3AKaF^{@d1# zdZBfk;L=<|q5uuzn;|S`LWBZ)*4DO=Y*QLH7|SeDU-OJx5rc*tG0<&})P|4V55XE> zXaT&IKkZo8tUgYY`Z%bw#>7*JN}C3mYJi;4#vFiXG_q+(yK-_f4=$x=q0^gZ01=*; zprwBmG(h(?#mNu|%6IM(BjvkM8RavubLE}>q1*d_Of^N+A%Wfv;hxK!Nu8i38)aD9 zt$?3+fVekdSeuuH>+S=w&5f5$JFigp&HLG*O!Vl=uR2qK7emF4+8`J1dy(^$pij1& z(`c)zJD<&UX+C+GnTIQ`l=Qq7eiJ}?X6Nhkr?%hNtNlBg|I7AY|9v0rUkd)U;_XQB zmVn6!jOpT{!LSauf8s3*4dA2F`w{zs@75jY1UoQJyMxsPuK#>35lGHt;kiXHM`#E_TX?+i$_Ue}cJ zI{fp)4sdAUop_S~$ALwWVR-$$0DiIu+}Il=9&Z0=m+1r0s*0jzLE=X4ro9&=*0g^# zaN6HhQyGIeENYyDY>(bIK5rPmLBp%<9~Va-jjn3h5H!5h{_%im?~FbmK2L$l=r70T z-KO8F_#BH;S+I8b(bQDjaxnk)Yu#t`0j=BJD}AA>Ua@TSp{?86UC;W_`$m_48+|y- zEP7rMY{kp$#tKtGj0$S=DmWneYW?WLqszaIKEx{Eg8?m{#*aGkuq!VTBddN|4cG;&V>d%P;Ux(6H2A z#P#AEE#0GM#pl#=-Lu3#VI|(<`1H}I#XFbj_w@LjC;3e;;U8e@AD^Q=xzpG3kJ;cn zduH~3%kpl5Vgm?AKvwBNh4_cM+x$M8+h+o3X2)i8X|{M)tS?)#8T(KC6}tTNlekji zFW2$7!*xsp_bYF(RP)4Sh>*LHT_;x^tkHIhlQ@q$IE9EW-ciTDnyb19Amd9$52z3N z*T^R%YTGyM$&tXMBz9?sSH3CLc8PajUX7LtEF%DA3yNTOr=_AST~AFLoTe+&PTc8)5_LCI#i*fdmCHh zJg#eaHZBVfXFy8|T*i(Rdx_Vz;`K;b^(@gnl_M;B?($YrX$s7S7Rf0rKk_Mcw=qlb zxzU-WHRn289hpv-prtsu8JC~6Yn<0AJtHb!qhH8rk@xK7l8|MNG8*z5+YV(q_v0$P zJO6}t#WlfTd@%7wXdIh95H8)8ehtaz(ZiWXtJ6>E(XcntE9})ISGsh3aPe*8Y5F$z z*nOeLtL^dkd8~`E4++Y22e*>2W+C0?kv{&(EYidXvc)f-^S?kk{KMxQZWjaXC$Z`A z@xi6HAxz_w8*PUjpafq3Vzqyv{laxQ?B(=4cbWb@zdB?mIF>DtKXMazhpy6bfE^pR znKjLCD$px_2x2WyM3_aPg^>H?TmK8>bdcKo@xghZ_Mh1F?VUQM??4!N2wFK0uhqk0 zZ>O)~H*6?%G&ze8|E&*AXVXX9hiCC&&cg%k!#C1<^NT|4)4Fpcz-ZNg_|=aP#ip-e zN|?4za@s2g^;cL;@%D?i=lyZXC({>Ggd2#t|tESJ; zpo6n!OQ&C$(WM57)dW;qx^(d45%Du&NaxxA3(AKx2Z@Ar<|uZRBFW8!A8fCunoL*H z$sE?V0Rt$0UE}A_JoB2)@o)jFrZla(BqzARJ=mg9e_R08!jNMk)FP1KXyx(4R@aSM zKXYolVv4XoR=v<_=WlQV)$v?k^$z^1o=LkrLKYw7W7>M3A=?xiLf zpld|UTaLfLvLyOlzdY!eJbX$6e zdxY%zN2}A@=@Ba2k6#G2PwP?W>VVe$gyGO5R`efODHJz#gJC=n593#8_lod9gC^X^ zepGl{72c=knXn@BD1KDePDUYw|6G0apMl1CL~@ZZ%uvD~m$S8$nEOjY!ofPJFF)Qm zj@Y$E@ipBs{ez1cX->j?jqGJM-Z;=mtZV>Gu`rsxj^v-%g6^TFOMQuEdTz+{Ep?IC zUVLs0!%S$=ZpcibqeioB7F5{DMLu$&Vq4nklb{MKED?h6cJZYGirTIjRR@{kLmT-a z>v4vq?6KtyK+EyEIB0Zb>!DIBbwQBO@Bw4(ok`)JRKP0M<24}ZU{WN2L1AdIADNT=V=&?w${gE#@VX_Cmo76NtH zBVbz5zu%tmC6lWTPQKFJ(?7oCWlq-pS+SDRZ~ywn%u9rY-Zw)jYOqr(NoU(?}@1ThGL@B$MC!Zl|8vjsnKQknqL!i$o?&(qbc*WO?@TcCKkVO5#Ua>%(IdB~vJT|8`XJ6}(@b zx;!E1NK5da<^)8|XBUY0_v}`ZYM^^xYjOmP$PwM9%4G%m_KJYp%zoPJrJWo^?jY)Z z60#SCTF9si0|$e&*aZLp zq==$OAbQtm7f^u&9jDL*Qy*4E(|#9BUBkt|>4#$-=#T#Vzpb!+<3249v~S$6<#+8H z_iydjb65MuLtGdnvoq&=G>_RC@N+)`cY3D_Ltrg-MvMB+U{>t6n6sFR19K7F1gR1}G1C( zXbBQCT;?n7p@E$VETuhF(!@-{Rnw2smkkMavKaN)^ieWYkil%ahEzBmB^V1KIN*|F zQ4>QSNd*0O%~vJwN2m95Uf)-Xw4dw<+Nk2x#PKf^b4dC^qIgZ8747dUGPiF0lOeV` z;Bj-r>^8eVh<*E~-U|I5A^ymvUy#{P=`rWT7x0zlugNec0{hNP7S7?$0Hr(UkvFCfGC_yuI(@2v};mKB9=a|3U!Cg{^j ziB_{d#bhYat9iuR$vN{<8~2kxkPJ|uDUnp_RKNjHnT;R3{Z5{#imIVP%dFT|uq~Ql ze|%f2bkVQ1Y+_ckn)tdZO&-;3!GMrME1L)J%rnNtSGH%g()ZR-OqttM>168A_sc}6 zpmfINPB}BAOH`yvM_M}#Wds}aPNE&R|NQnoMiTeEl=`Wp0CzBxSP;E3?d$z7bKYC7)SHESW(f_In4eo> zPX$;EX$vR;cb9?YuJ4VmdqFhX<+sDJR+Y|BfEjIy04AgZ$qrHRXR0xX{VDD_v)|>L z<;)|$a-6YUrGwJH&h(ry%O$qlL;;qHi7l6i=8e!imnXB``z`WhzdJrNPY&to%@b=} zi1u7jwVrEGd9B0i$O4eaU1q) zFOBB9cVjWS}QV)6d3^dl%`bq zckeK(*r@R2bZg^`MiCa1q~J+V1TmfudsexOSIjh@Qet+qNjKU8EBGQ;uE3z^*%cej zsupZzrC4H6RkVqf@R&ZOFFcCE_dHuoYPyVn-r<9kJPmk&nfEW@GLh7w?K_VV=JI=~ z@>_lZntW0z`r)fukcG&!Ar5SyhZr0eBq~LR?E$?m*;a{I)TGLr__QvVP^~wssjM#9 zTy1_zHLFbkas;+rCCo#KG2uU$VxjjH;sUD}x?A>@xWB+>`jfn_wO_vgx={QD(r4D0 zyauB6jZVjU>zAn4f;f&OE0taM-nNcLYBPOR_EYlLa@Pa4Ra+WBI86kQ-RMd2c5DJWN7DVjBiW^E>?>7NoB#+SI0 zw>qC~DN&u@Q=J_jZZmTSCwDEB(eq1k+amChMcd9)C2C6#!{M80tLL|glu38XX@mzA zso1w~lX{#|#u}XAgb`&D8Zl6eT+6TiKGlYqof>w9XpG+V+@D1z-kDMbLG1k>`7XgR zZ5gZU`=gm&!K;hq;#$XG6W@GU2lnG&&whI?%`lu~VP@toLXCx+(e$t}+pd zjo~blfvpTY0p7db6QFK-9|YJR;8LZp{5(T|i4)z##C!rAw{WWoP+=8_0M}W#=ZFmf zFwparbu5&^n7YNnRZ=WJhh*J%ZmtyTVfYeLANrKy2elA6sptp;9`4~|%#7`DqJD)H z%3Ap|t$|!CA6{}{L`!UQ>o9@YyrOo3%YfP8jPz!9Oe8sEGMc5hCcQWHhEM-X8tL2> zN{f4R8+@jJN*+Fk@v)wBgjQaw+ZbAO0Q&g+bUqI+c9koa<7(ybuyIyz*wTl9 z5ep$;Gk=y5u$r#EG;H1VTPY{K{?A4{5 zZ%c6>xLE=mpJNM~yd#&Npkn&Z>IVIY622RBx-5jXOHXJ;Z6*0wzXA<@G=o3n#d z7KyCYLljqzMSr?p?=AtpkLW$qfb`&i%N*2gJ>NIlX5iDy9io@%ugUmQ@tUaOTuZ_A z+UPkP6Cj$MFCcmW@V}^|Z^_EAaLOw=0?}nacorrKSg7rXVd3M&o`q-mnO7wua=ZUB z;kdYAk(nWu)cC+%p1!t%LfEJmdFdHAn5SiW3iFE6hgs-@r~zGxo`w%y;;dymH$5*$ zG&eBKF#RO={SE&Mnup*1hxwRX($o7eAp*~}0J7EclUoPZszZPJeyv?`4eOl<__MbQ zWH9{mJI>|#p-8#!$k3Vj+E*1unp-K8;0#%MG~Pb^%bdBc|N^C~rA z-KhB#)Rgu3oW<5`4p3&VBvn{J_D}k=lPWqn>b?OVP^s_2mP5>6+>B~K=e4RAIvY(2 zXdwe9l@iU2AGvhoTHoleml`32-FhzKIlEf^mos|#mfg>b!V=1mxx=@_`tmJlFqChB z{7qYOFj4HHM&)Q8DN&{Y3d!g{WJce52|g>KT|jQKr_q^f3OigJ`+B3GjpA6N@Y&bq zK&zE8@%g9N*E!W4)@OAYCSCMWM)kc7u9PEa%!m^S1RO!PIf9cFsc0ZfuI^Sn+KUr6 za<@wSSYu#D=VErR7Vzrlt2L-t6mFB-T64xx5I*L)ogJ+;@5-&gyY{ z{KNbSl-@x_Hf3vNc(XdQWx&IQfA3|^s48QMP^q9 zMuCJz3Q*na^pG|d@vA>w%UtM>h^A-zXvEroCm9c8W1VO9Q5e)&q~cVkPxEd91@bHd4KqhAo)alVhf&p$5{y7+Nd z`nQ_yn=0LOy}3P&dZq4`%3A-n&oCe;J?qM?j>HeM$`oYWX>pTlx94WL*KW~5mQ92~ zdE}!%oY>2{^=GPtUm4VCF>88+dQ^XzkAn#5mO`A$Pc8Bz2+M?I!|mNnPPRC z)_VM+@QZ(P%7@AKQN&1TAkn5z+_{|OUaHlFxry4;kX6?yAZQ+`AbXvm(=gImki5!= zW zgOJG$TR@bi^pT1aEh8%b@T`xgu!tIwqC{bsc!#YN_9~Se}F#p#YQv4%! zW@C86+7pm3xah5cL8kH3Hy`cW-@-Jj^%)zXhuO&u(DrzoJl(1jdIf=t0~Sd*Dc(>hp4_=eO* z&z-6O#mZK&XUp}$)R&kTFkt$I}7*Lq8O8Z>O*SR3!u%7gZe zOd~(rE>3Tqm!8B`cz+jk7{FDZ`2WG-Um$PD88OandIxd|6ES8HB=sO@_$0wL_K6Pm ztnK(~u^*hTNo-mry7@^GyJ?a{`^NUE!!!$M(<2?r)^uzfIDIG0m3RXzl`M*6P`8G( z7fF*j$uSa87XCZ&w@s)sWb%1gq=+7~(JJ?|f=a{X^FUjZA@kW^IKONUMTq(KF^E-9 z_oID>e>3AMG~7(XNEmFJ$nXQU?$?SWQzsBXOsud6UG9M!oS3K^Npeu$da|?UPB;5O z#<1maw^0)nvh+wj=GS=64fr)+WeMB@J)nZ{1wS7KRq%6BAdYN|xO6(Dj6ny)JCC+1 z6vU(^Q3oJ?&YmctkeXVONL^Nu*z1!7=XG>`ONPcwq!gBV%fixZF zybXE`s)E2Jhli!lWWjC%(nhbRHVWlShSxxx=> zX*Xl&0paMU9sW7>rXOc0!&*o$&0PIXS5VFI8++zDipTkYVe_O(t?~p;*Z3;JE+66} z0Dkn+)6=w`N8u^{BST7(R~!D|si>ak31U$@rzAgeH>i*_MmNb-=@s^ybs*?ae`-vB z(ICiszHX(fHq+7};a-pCGcgblaxjOFah~1eFDxuEpG*@)5^FcvCXvE+)|txU^Sn3rueR`6 z_}eSM;ILi>u>c?M4*_lp5`{m62=c4IiiG$$i^X-Z{)QP6$3x%{=K_`Csw`Z&&aKfW zZd5-iC_QMbIt^?<`}XNM78RV`gcP>$>%7uJZ)QYURH`inxT;R99P5JOm18YJO_iUf zg3q>=CX(huYH_vNVARt%tY?i1b8nM^EQ)W#gZ;vl%AUpHFJ^DaA70_&FRZ{6We4;R zeW!MD08~)9C?6(!6O?~)flH=I728~gSp;w^kSHri1uCuIta0ge~m(~Xo z39ib*u{{wNcne3hg@M_=L|LkICsnw*bq777d0q+E4wjfY+C^LqH?l;e=QRs+LEg1Z zJK^ho=?DTM1Ry{n%@!sMbc|T_pB+GJcof4)$Dsr=>(ythSwK9HTqRHv z>2=t%a6mguI+Lq>e?5)q0EP3PQ{|Ry=b25Rb;_ zYrw3~GxR}paROmlXW5)7s8t6W2!`utL6y_;RX7VTDEjlbOBK}2UbjefC;dt3f&WFC z@3J=M+ZqWi&3jHDHaP($pU`ffNuK4$Zi=E9CtM>I94q${jfR+eId4*w%2F2Vbc=x` zaLR}!bjO+yI(qSWhw4VN8gu6&z9iA%bg`E-N#tH@JKCX5EX5o$0pF{j)3Qf&FC=^i zO#M9L@rd6XlM9>$-2d*#1@2Z0ha%u~W^e|$PTgz)IMW=<8Tt0Yi&n@FnYvrxq1XT_ zCB#Koso5dS()N{^c`clPQ4NWuf9;=O9zrd0G+6d+yVRIDU9xZSIkukw??8X} zU<~XHO_721vj8<)BoRE|CL!8B$&=p9F>|!w%v=K(n7RE_@9I`MaRvfFdLfHg5HUxh zm1eIt=pxr)U3P>j{C6Yfk9})J1D`Q03E$$O%3$_XE#FRXgGRxKCq9g9pA_9uDr5T| z9xvM`x5mdcst{Ky+qXv76VlJg_TB!cC`@ZovBa>|oLxHu$ifBLH+pDq(~nxL6Xl%! zcqZvjb0D*qFM|Hd!X=ktIi4YW$+4$FXH})_wVem_yfYb%a(|c%WiVvsIRb?H?W29nJ5D~#d3Wov zW270_XyVgCcfJ!{rp`C42)!k$g129gI;_z%ov}IU`O7bnp|W}qKjckPpOhE|n?U1x}>z7Yd9MN2(P>Vwz? z8+Nes;hY~qn@~i{&&|NKHX2zA#0#L2B9Ql3pj^%AQP$odZ#a!7udiRXX;` zX}4dWUzL2)QHuxvkSM4J45$d`FwI9=rINvz^=FG2tgZACQ@E)|8Jocfm`Zv{d@qZd zvX;!WWQN6@-D?tJCE<+KP=;^JL1I>-{m&?59?3`$#O@s@%dcWcnoA&GJj)4LjWaq< z!ZKbjT7pg^ZQ}3?LIK(+2Ne%&xI1+jK+fRAv(z^AkV76vi%Zw@dtB-Sj_jLQaok=n z9XIFM%P(~k)J)?QV_bW`Iu+j2CY?P=n3D?cSe1tlNUOd?G8dolRR6sJ6-+1-0ou${ zanTUju=L?@Q7x;3^yTp4rLHHFc`rG~*W}`c9Dz?|P(pmu$97Ah92ndcSPQNdc z$QK4B9*mjGGO!ey0823RqaL4rMz-_*LjHWxSNy4=blzVSzmQgV6#mY$20@UtLfmFE zJoDXI=2$N?JhPX}9xV&6d&cMR8;*m^E0@Lq6r0SDfIicouG^yP!q0!-it+0&3nbw>6_iyxQ7>SGv6uj~>If%| z*>R1q|3nvufUQp@Rf-@@EMwGCzF{m8?UqV4%DS|xV$2Vtb<5(xejrw#8mJY^&GiVL zR^=sFyjR@1Bg^}CVX5i;FyR3iCE^s(x7z1KjgPL3MDDuJd$n}VKY2|Oj=bjKw?6-t5n(mDe z_DH53duoZF_%+(1wk*4NGtXYxc!k-hzWTsp05UMk zor6kawkxc%BOQ|!_dap=I0?n!)KL6t6eDPslPB=GVKP zuK)s~p;wQU#1ZXx4v@^1NW5xOv9=im?bzF9Gpm`fZ|IHDHsv<+7dIp&9BoEfNe`cy zHz%GvgXI)8s)r=_2kP1-KW`lr$Z(#u-SLK_5yUsY6e**WDnhhE7vXA#S4D~H3^i*D z{Pn!Qx)MAeC$l$&PE?0RCtWJP^-3<3p=_PQg;){q{4F)7Vpm=!YjS+0u${w`#LA;8 z`O$BUep9h2u0%D_lAQ}f61C0f_NL*9#> zGB0k*f3fi-|3&&-nbuT8tq|cv+=eDy97iUW)+RQ(#T*Y_Duia)Vh*#cNfvXY8ptI) z+qyeNiAN?jQ?xBr{(V=pS&3U`ch6|Hv~Fr5PVyAiJv6%#)hh8Ms3nqTz=IPiQ$tR1 zZz{!IThf|5rBYyrcY01(piv`+AyhtL4v5TLO!*QedWnKWS$8h5molrS+Ud>a~KNuukWKoxoB;5sKoR>N<3o* zQ%*-EzTQWPPAf5-5`yEaeU$jS8OjV;FY7jlrJr-^nKky|IS4_zlh@&tDd_snT%qgw z%f?gKr)gt)=jTQeFoJt+QzGdDr0}|RPF;*iwOI=k#;LsLPFJ!2H?RKqT%VtXl~d68 zK>whb2p}U$u&lxKOYso`7w`PM+&S@3Ja_`}8TK-3(Oct7CQRsjxn(i|tOv`M@u)u@ z`B*AK3Y6psVrP!*<;Ig2JL?W+mK3sFfvpu0I32dOeFDnya_f(k)l5Fa%twuMalnLl zwE(CIhge%)fFTvQrVlaM@LG*&L*a((XkbP&%=9pP zmMI3>jiJ(0$WIYY_(=(v-}YA>AG|7%C;0-0zRDlc#cwpQ$hE1-l_pAzzZp7Vc+UAq zK_B^9Hgn4zOV`IJp~f_8QLc#p7J~2!nwaS|zhhDH6rk$+OXSQdXhl*iGtEP|E zHZ60ljT6F_WKgJ30Ma2%$jUVckZE**K40kQP28a@H~NgYL}Qszv!31;FUX;{C*Mx` zoN}1oL4ley{l+cIHJ{2F!U{2GDy*!C%x_s>LUKBoROlHAA>(PRt+9G6q^j|dI^@t0PqhJn3 zPJoY4B7!d)==FXV-gXWQY4HrnKlW z#hPm45s;LGlOGl$iv1~T28h6{yY&ngf!20zn~HsOk;2c`19CEsw_fc-&n@79v-s5$ zy*%f>_2iFNIh_E2rYw)bq2B`MLExP0@bd7VHWA!Q63KlT*x$E`lj1(Uz)p%Am`L%c zV|mH4)@{SvO&V6j{=&QBaNj?3lG_K5tlJdc{2u@8w}9i^7GL!CrWLUVd5^&R55rr| z#sYpX-+#yF-rAeqeh2N%oPWhRp)er#Jeu=wccKD?ZIHs)Bq7L3XAt{^sV9m9L8CpT zub=E(t+Pzq3z8tV=1}*rQYEXE`3dXp<_S|9JuCWN|Gd+vI@7b>k>3l+*;8P)vv8Q)3#~h!FIw?WSInFwaJrNBmaXXTNEp|pRJ&b+ExOg6nEx3uYbqOXhJdBDF zMcE{VwnWlTVi?(b62lKwFguB%0bOR({D=kNyrXg_F;J5%*Tp;(b831PL%#EkeED=v zTV6xmesrb6(>XD$7oAJ)F*@JW2%Q&3j=Ar6`=5^9fG`E3LGR{>-UP=FRJDt^IXmjx zy)vTH%`qbhGR>q;EaU@?M&)G|=qsE<6Mp)EdNE)(FME_I)0>L$4S$AlWzNWA0z*Ty zeq_-Y%LmB9WakN(JfV?Aw~H)cwhb;ad7^p>)b^7nTu#Ww7ROrCJ5|ZiBj*-3_#wWs zu>WI`03a@jXjBpD(5T|`-!?wmhtk^1u%1`ucMC9fujCP5J3$Yy2$(M_H}IF767t%OgEc5;v>96#N^mvHp_ z#)PBu420t!B>!`r6W0a$s5AyX3Ia_58RP?ua`cg~HhcbrW|g+^zDO8Apn72-k>E-y z_UmH`bg{ zaC<$If&8e9+slK0+QsmqQm|JDcETG)nm{KyLrs~HRJ{}IGCiwixi$)i4w$%JnE$S0 zDRp_b5PtJ((RUObDSj}8ksZv!Ndicd!A(-~;EB)um!l_bPf=s~2blO=gGh?6bI((W zcm9atwm_|OzCKJH0}2{vY6e<%-XHaN%kkDb8s|Hem3&W)CsuCt3192J4i#C&Rq0On zN+gGayYJpj$Fka>?FGr zg2$ziIdJVAN8uJx*k=BV9ot>jn;mz~+ zQ}}K|=3Q18?z}4!2H$XFrciiMegz#%o3q;g^~}2hA(}h^y8bRJ<^}R|iBj)1g|HMM~v^wKHv zOJ2BI7I76{a_ofol7tec)A@Sp=hov}hgI&#!0^TGYSKS=A)f?=!EL;30J zlde8Kc@~!QiOw$Q>yxkd@yQJLNvr$$j(sWXtH29fKxhW){)Ili{G9t_Tl=Ip4Z>-? zXpp{F6Q&;iI>LE=UJ#QfpVN*gu)jg{*GU}=f60dfAbjHPw|A?vHbu6z~hSd+h0RzPEl8*JoJ!``v z)%?q-X7`(4|2GQYr-6~`?dg=H+M+Cw&dfx;|VDmm)C_dzsO0gnJ;Zdk4+&?qb6qYo)6zUtxDU7Xez-Jky>xLh??=`({FxeGK! zd+gey*$gijK)PW}UrlM1Q)iDZw7`kEXkB(~v-Vc$GPsmkdrx0JJv$d-hN@Df>MbT) z%1Tlr2ApvaM~d_>o3p{@?4hmEx@txYS3lktG`0@Z?F*y_JhPJ1iZ6jZm!&@5s;YbJX!m zxDis9`w+D>b8ozjlxybR!m4(ol1<+0)@3l}2Pv_|P2Lk*3McQK^mi9IR9fr~0txH+ zM6;o?!Yc_qG<@Snz2&wte9AwyHZcg9=|a?35>_%TBBMALS^$u{txjiEyFfMF*>l`h z=uX+yy);E38(C8A0caU7ZaRf@aJuqR%;K4qATOHapVG?b$qgW%OM?~Ol}$R!HRb7TVsjjhuS&1)271m#HP(O%W~>ECq_a^G(@L$*I zsqpaNlVTqiZK^JUHKk8Qa>FNYv!M%1_?X|9jjM>W#C+_ynT7 z=_lp!MSDa|!c0e-Mcah>MZ&h&CLB6_3kUQ8^zLCTK--Df;Xw|pt)*Nf8Gb$_wwtN% z)=@1=jCwA2KIDt}iy4^@x!wdg!LAq?OA!A2>ydEqeTc!aA3T(Z8&dr{NI?=$%!QU=(XTg*F5)5IUwZiOb!T>zz1 znn$yhBo6!66S`dm2>IbpVg6~A>t8e|#!4v00#eJqNoO;j_AS2;X0>RKk@e1Nq$Ji& z$JtT!$PvCH6=di&9^A&2+uHF!J?m@T^Pnof?71ZD^i3edN~@?Uop8bwCDywJv1{u5 z?i1_2oQZ%GX|eUhz7%8q+o_gP+><=mA=|i}1%uK}$7+iSOI&M`0b!Y+S0qIZN(Wm( z8Lm@md_GarV$mO}L@@ZqF0$VRu|W|a-|PiQC52O^8&Amq@{Q#Rzz7OTr)?RKgRGzc zdC~`XwE)6lrU{SrhCK_h{<1Z8Wwx=M-;5d?xaG#)`I`!=vBsRnlJG(i3#@`yX7*_WPD`05PIjfa^!Q8Zd(v*3hi6=ggxb z%Rt~}UXl02KJ$Ip2gmIDy)^9zWhEktB5_~N43j4Ly~JoB;Q!+a#VEP4DZDF#3nuIp zx(K(wHHuTHP2ymE0|5-+?Ud+ikr({}l_-8`7@L$Wtg6;$w0otQ1vMyy(1W?>Ni`J@ z@8pp-eXq2oa&PJ@X{KS{;SEBiuv)Kn9d&%n3>~hnsxk1C1EHJKsA1_Eg|J2TSTmpr z5y_g94!Lun>h^%J4&=cdceMyDN4|GBE@C7NDn4-Cqcij+O%nsc!8*IU+GEHRsSU*V z0>w}chLpDZ;M~GXB6I_hr~`Q6P<2~Wi%?nf4<@JvenvZdb#g3xq^h4Mi854#hhEKHTJqe>O|Zcax7x% zuHGAuYIBoa4I0BqmF{+;v^75GC~Ly4=8%m;>`SZ_KSt$v;6))vB(8cJ{lv8OAK|;S zUl^J(Z7%Lgs4GKNy*oienfvQHL8U*NC7PfCs8_WI7y)CkO$Pe!|K4>w?1}uzWP^|O zIra-ft~Se-NDY)umDy7b#H)W6`0hhqpv7?8oWU{xxs%PpV~%yfhnd7`_?5ie^9xp4 zt(2!)(@Dud-RqHtSr(5>7^_ybH}^pXd!ztYNU|ce?(zx%)bnkUo3v4OSy(JE&}|_O zJ$Bs$<^6MjFvb`V0jr-Z;%PNx%CUHJ01FF`EIOc zTIDy@qeJ|fBH%u{BBzJYRbRz~p)9T1RVpWfBU+X0gB$|YruS#CG`-3_EPKlQs8I{9ur$SeFmTH75yY%aRfYb@d~w$VIN z*y-17c>$K8vPoO11YiN)1Z*qAcbvaE?_SX^n!dHyQ_K^m=eCKtjUTYP@6!owJ1BOz zvk76N{KEW%BV(lyHAx7K1N92`%U`)PD+DDbN-|Yg2?J1WD?Ie}9C1!KC$Mw9g=|0< zt#&L)|C!`N#AMe5Ob-83g@!KG`i&ib>^fbs#}!(-MQAp97JXzs-qd=PKDu4KoglVw zj1M2*-!;ci)CyK&|1W||ss)2c@qbt|*gL zb376!Hfwc)(tqBeiWPD04Rn%Z!O-(VUDX)n$ad%#l34ISwfE{iD8J+qPh=^sgQ8c| zb4Xfkk1;ZQO(0kmGTO1rtQIL> zuBW6*2em?c{FDP(1G2w(K7u4wls-oj_`T-3D#g_5J(!j8Q!x9I)s4<<0kivmtom$4 zf3#5|!Blz`J7$NQt}~g4AcK?=!t{r{%M2`slMao-U?iAaKby8~ufaIr zzvviR<4uxG5eGrU=X@-7rkD%IN~DaXzU%;38hbX5VBX9%dRWWh-X(E2&4H84TfU_F z+o-_wy+NT+WtuT%k(od{mhCATNWlQDLYg1WVp4;g z0vn&VUZ-{pp<1_|e9H)g2Oa`vF2JkgWpwiRGp(lgcp01tf6iJhHLGzk2B@k<7B^}Z z{&^GwRQF}8%&RXx*G2|DZH@)F-f*HicHkObRuieKW{J-tlhaZst}#r!YWhf7f*KX9 z6;TtLJz1?mwswNxq+hKC4S%@WOa(NmHO6w0unUMtg+@sY-f@-lnMiDJYjtIBS&>NL zsE!G)j!ZL8j)ce`<`B7n9JELHh*%Qq6^&i5A+U98*L%w?kug-gP?qu zYISuO2&vgAW1fWj%B3h1Z$ul&(xfr?;AS4hJM8EkqExCHzCFi!Rvk<#d-r(f5We7Q zaw`E5gB--0wQQ*{bN6`1zxj@H+{bNSJWd?HhuKudaYY~Zs7}~_@aWQ(X`{Dmx!4iI zfx1(1mx2ZWz_|nDw~3zJdplG>faXCs{|v?3(6E_WQMO3ypl_r3P(7tn(xqSc*8u;R zoB1gp@O6{EF8Ior=HMJxEYSr}g9sEKne70rO`oXD_>tc?0TCnaw5DzDOi8__JTk>> z)F<(ImQeKZQ{7(cIV^}g{YT{K-z87~Zhi48Q}o1MAJ{0GEvXLc56=lhu?QMp;*dpn z1HWFHewc{Utnb=vL+B%k$g<}R8cmAVWXVF8BabZMf4*l>2c`FvVk~?r`ucF1dz_4H z&pAHDgXY$w5kLV_>V=|7v~JxQZ;E;ou{Y`Q7wy2IKSf7^Nq<>(g^!Lv4~pojXXQT_ zR~5SC*%fZR|8@E#=?|w5{4YLykv;EUrHEs(T|0Z2JTlQK|0Po z9)x%ampGoK5jQ=%;sRZ5IfabZ`HHoGi4O1CD{8@29uabgqEy&Y?G1&fi4k{PIaxgc zrB#v|-$pCKPpTth<}8fw(6tLIN!m11c`xi}k2r&EkU|CJ*PjyM`;`ndRD-g6d>b9U z8&GP8?|iNtzL)9hQ}I36S`faEdO(e$7(ieWZc*LdWuP;&;1gp((rZWH>DMmrqR zU)oOjr3sw++rlcUq(rb4Kd)_oC*JgbZ)V*5|q2wz2jW+p?_RjFaF?+dW#&zT^ zAHlXrMtTexR9AmxG7~0btK=bV!$yPCKs4xT(-)cjabt_rW)dtY^e1WVwkvlnX!NHj zeUX0Ajy3*%vA=)8?(-oGzjdW^H~+WIB$BWO^;Fa=PjTQTo!l2i40;&WpOlkzH_>TK zKcf^Hn2Hhl)Aj$H0^bb&zo5YWpY)=@F(>9wz>Gyx`c?HPhYrI=P39^ay%fw3jn941 zEXcY>`D?Ns`UmYdnQC%-w{ax#Zt;#2QDl7WV4Ulo@yC+{;RwE z+>U2nPwe%A^A>1yS-9e(*S%RW&BF>{q-}p660~k_l2ISbyfEHzI2GZh2OY|B;(NyD z?7(e(@HI~MemCB6GpyuY{h`I+p)cwHtyk$J20OxyCV0KiX-}qo61=ta|Z7h>8 z#t(e1Zq%Bo-#V&mx8geXU+7r5O=8psGrpI}6<}LSoLm8IMc6hnKPQkI$>zEPt{2dx z{^S~5ARWH+T?qyd+z14*=>xgC&E_w2@o?tR>hxLY>G)wU+b+r=MCp&M^a;16_tvZ6 z1WNlytJ6DM>1S=rVIfm_RM#LwX46V=i3gf%9=~EKky$v=00>XCANh^8jD!7D=s8NE zUt-jXnN!@nmX-02b6`Py$&A6p4y+q(;Xk?|DxK?O)W=IJl>(setb#G;C{g@ z&Y9jsp<O&m)=X^32*6myd*^^a=uD zPOZ#A!YIx~gIxr%-~A%W82TWV`7%B|SLV&QkJE@rV^`d#eh2JqcjnP6JQ}tk z{k#~rs7us<&d9=tlrS2nuhmB@`AGG+M_PG5Y*TusK00(iwEWA&KTgZ@;*on@JkqGK zh}r98>=lo6>z8=Mevydv-0M$f@gHiB7~Rp8r8QA0MnlPJGT)SZsme zNUNN~yJu$Lf9JFaeu&p3On}BZoy2(Is^ys!m)l1TrvSrbA&F^Z4M#mTb03#_h50i8 zeALExr={IGy4fbmHqy=%oxz^izWdTH7SLpECa4U`CmC4c@sLvuEE^4yG6GgbcxV=w z5}OAD6u^_SQ0t$nl(Lw)!Yv@7D66zmBjz5YZ9_(H$Ij$)?3^k@w3!r|wt#%8QDjm3 z<Eo!RC;Sv|JkaNhz7^GZn5SrB}JHUguRtjW7jkAy;}ec5XrV;Z=Rq9h49Ire~x` z$&ACAL9+9ToH5!Jj3F0=?<~zow(W@2vU9cx1@(wUQ~KNL2B0q6>vI=HMiHbc;nm8s z)RG|9Xs*#dh$bjXV7~JGNMOjpW9-PU_8)Fyax6Lchx(~vC?28fP zvw%V)m3meo9(fp_)=Vrx5X3ID>O{@E1|dC*l@4DkIFrbg@PRZ_RIL8Sqw_#MwhN9tMw# z50_nzefv~&kZ8)~-*`Sr4;-prvm!$E(d|L?h43&M?OB-H;@OEP9~+FTTHySj?awrO zowQQ^&j^kGvtO7XpJxqlU4+kfs<_7qX^=EC{qpC@R^n}*y6MVf@$O|YW)^*u$vQ=5*|h`_B6N=LoB3-eHf43b=? zfXvcPQtQfa{oXm))EEn`C={LGkVkcJ0dga6Xv~Bcq}%XNJRixbD5gQn7ok?*2XeM? zQn<_I3d6!3>?e_m)yXSCU<(gWu2n!mAloul)VG`HC6fI41>r=tfRcKce9c}iv0K*C zU&F&05W`0?VVqPe6?GuTUYGAlmA+vv$QUQEZy4g26LxmDEEt9?E$z8}LHGfIOJNHO z!q@tE8t%3SYWY?sJj|KzrTvt&9|we+f{#Ezt3h_(m%l17_S26D=h%lBk#dmRKQwat zk>d!z>vM0F5oOCF%HoH-N7AP=9+g_VwRqv2-2tnQ{W#W1sPoqQvMa@j``E4&q+6!I ztqvCHwr(5l*e(jLhz;juad-{0p2Ozvuo=Z^?QBbN&L97_DICnmNH}>ZS6}%T|Gf7r zUX&L7V^i4HhH3|~8-7{P4+#IUSo&#})?&)irzQ@^b|?0CA=L;0my9jtA(Z<23EnQr z#vTrn!vz<-WuHT>*x7)kHYV@HC)jBf+D?KaIp)_cWIu|+-(Ma%C5SxI?V?bF`fWG! z;>6O|`il*)XUK2v+l?BB?;>ISj9b1+yKxVh8mR4pCD>Qr3dgftzE*y8I=ga2Sfngh-dA$*O+~lmuK%`m zqh4qoC%6h%J6uzn39nlA5U8+hECUw4<{7s#nV%I#fC*pNn_suEGrA4O19iFqTUh|_ zkDUHAi)KxtS(A)ZyRZ;zxHdOIJ0;;zW(Fr?xf31RAh54l{EJOrU|=cQ{x;8r9Wo*W zTJg=qW8a7)p)KX>BFA+W6ux!;_;{Y!A<*+0Po;$of;6iUK#_b%jIjfjj( ziw)`$=Ui#X51$i(ALAqd|;^edyl6Ok=DK+R%3`tw-;n=ck{W zvWE(0w;XYHT6G%`;ZFS^cj37yn~EK+b#BVk-5|}UtY?qUUE$~hx^gAXX9;l)HrVi$ zlLT7j0@;u?7`2z9mbrZ*&GK+=B;D!~AybBRnfbf$@q2Qm+j*odj|djg=uNUUKxFC%asBWR^~)X;PgToRu{(|5iqHUXW<*(r z9rh^9vLfa-JJ!oen!JZk+tx-8U}e5SZ<8oJqbN}RDvCYIz3i@;`7 zHEKWZhWb$}Rxl80l^qIZ9o%?0sg;N!C(k)qWt(IKMwnhBO>6VN# zP9y%dx44ohMja!J(FEB8Q`;>9uw&_ul}RCo?3_^4gY$bzZw+9ASRd<8*K)G@)Ab^| z61$@lP9E?hl)0Gw>+?v>8p5ywdD)WwpJ^G!|6c#U^xx^fAkFGO1`-9?mqZBv!~Zhz zU%eLkD&?FKS=PR>GCpUvh@kYO!_Ck&aPUEJ<#GB>FCHr3K%-rH7`8sA_)q0 z4s5-<=k{=Avu+uWYP}-6lZ`X`1@!*^iT!%>>R$G1n^*qd*{|o0+B*C7?VUDbzX)U2 zxO~n-B(E6Hkd7*!BfU)o{+9^%UVDxyEAr#{SR)_LRm(V4I=ckN%$6cPE$Fxs^g~s# zLWvh_Tp~KkhZ8w3t*K8PQC+{+%0$Pe;`mi>S|(px8(r;<|0P&+TlhWP1w77ZpMge6 zDlz(z(eZX4JEa6KQ<~--XO%@;$XnXiPdL@vYQ0U$=tD#LqTcG_AkuGL6v%>7`ZJb#iWRi?@>9AYs$q&X71sZDTfc3{1tqlmi*b^2&S zIcFM=WHB7OL8w~IuF{_SMHdqvcLFOySqqn0hGC5HsWVhzjqY(yFYv2BU9Yt(u2Wu> zXD^qAGeiQ8)GG&PN)WEHr67@bc(&|=s)bK|TjVBLvgZOBFtjGSTOVZ4G^ZPIWRh0duRpnIE2|N&^u7Lctvd9lYw=ZovWw!ac)wP^1w0Msd=4vLNoJ|Q z|2?Y0c{xd!Z-D|9E8E29@aOmWJh-01fz_>5qbpnbj~>{%y`GRP8e7b!xKI z&sjaw;=@Ys3)Fq=;BX0ER;z+RWHN|QpS}Dg?q(fq*=yeDQ`_wcW;d5`cGJ}IF19OJ zS(`u!NmSP=2eYZ?XW<)7M%$IOS~gJBvm(5u6b!$}%e?Mge*Z2$*NBvVeg#lZkXVEl zG0R*y815xb*buD>?M6CAGTB5+MP!DWp*@`(-H8e9y5P@NaM`a{9%9)9NH?HTgV1>y zajI{00{2ao(;NBuiMBT}t^pZW4z*WCPie09c zSWRaqq@KWA89u&4{vd&Q$$IsCV(ois3NmK_~`xIHg<(tU+jd+h$K6!{XCLzbDbWV?YnER zBMm%O!hmOu#$!nHt*R_(>|sfG;6siycnNR&5>j)~M`MVGb@>s{&CpHl7`yKTNd1W*d;ftc{uVTODup*ES+zZhi4e#ac|aTJdi=b<(Y_n`0A}J3bm1 z?>G%59GhI4xOe;KZ)qO0-SfB9C7(@v(8B`ky5!5Yo5#|R2e3y5GpXX8O9Vv_d+$EK zO6E4d1{pUka}2g1YWi23NH&zEhK&5Y;;ZHoPGC4$#vXNL6Qz1v$}?+FV@LGRkvt5o`n{(wOb3PMn8Z+qs~1q~ZGe`3^&-dz+f3gD@*w|!a zdbkN?{xcotNZmd6L0Sl^Ixpo>cy9@MzK0uQ%IdeRhuI!RV9(L6Y(CoOW8`bwMS4@b zH}C~AKZy3Ys)TG1D(H`D1o6zYTdYxytPv@{4V-<74|8TCiopt!GHhid0hLj5$(hd8 zt^IHfS&f-AC)bEn8bIc36_{Q5xkBRsucanI?8u>64dJ1TN7?<-kQQ(NK)?qP;b7p` zTDCq6wuMwLK<~&aWa)(w^7F?Ja`wyyvZREkMN*ynOdUW~kHVkV3O2hntUt(5u+EKWNgcWCIIn zi+IC(w#gZ=uFkMCidvm-i#A&(Avf?jH*Yq(fL0Y&3(%UdqSSF2H^(@_eIO6^Mkhxi zts8-o$;a6wE6LghbI|!DoAab}2$9@wyiz*2XsxF8lSd%0Q~!lN@QT#`fs7?I-bT~E zgVJ-B$QD8PA+I^3YlLqTe8`&FqDE(n?iif0MSCf@Zx`?~N3b;*@k%K|iZHg-=``M# z>XXaT=a^#4z(j>*V_N<0TfPa{(-;-#xm(0wn)?b;Ri_EfNO^J+8eB zHnO+y5ey6PJ6}EeKH^D@)Uk~N01SIpdyu@M@UL2;!7`nX-aDh@7zVT zBoV*Eew7nwSLpj%sV>T|9+OmlzHF8GK<$s$@d?S1t7JWt>)oFV&f=T1mdX<=k94#6 zkrUcAO4u?Xlnxi}l`0pe`Pw=dp;bdU{XeVkW zNQ@q(NdV>h@nbW&N0)NeJ#8v}vo>wUww^#sp0s4B{mIlF)Xi@k+tr^@oui6v&@24u zWa~dbz}6$9y0E6cE^UK4dOOzwQtF@HV_MTk3q1?-8te&ROuzUX8KK^_T&P+AsD>U6 zG3ADtU&{M9LgC(0zE0N~_RVyeHgK3zs*Ntwrdjd44|<;D<*f0X1DZ%uP?e_I$ZXUy zcJ_{z(tng>T1PZk! zKm=qGCC80gHFb|8x<(K9G)x|w)C-gTtw%*X&dQ4>>A;=M;I`5-iMiO`)9cAC_9S-w zL5L>vlVa)RQ33<4DPhXWJiSQ`Y10q3*g}PhaMVYyMpHdoc0{y)ZKcX@<|loHYCv0S zr3@p}Q>{X&q#c48KJ>{Oo6?u$E-}g4BjTBE*T1_NuF<~}^VGjHUr0P-zxa?vkHFznx2rWu0q&S#*d zvL%{iV>3P!2gq{TK^maR@rWh3SG)% z)sVXI0GQ)5NPUc5ef;XyWR0S>mi^qC^b(Lvnr4U~GbuS`B3FoDNS=d_-()#-QGA{% zP7BPMfJZ&oFb@#vUD$1hNC0NRxE%Sqy&t&ocs%H($rE$>MHo>uNo_6BE^LS>Tp%cv zL~;`$1ebX-;Kd9je7e{Gg^A{UpJ)q}%^I|}kXaNHS5DyAbb?h%@j@5OT1;-?JB`kr zKuH3SGY~k-JWmZrA|g91&{Y#U^m)c}GBILC@2J1jvRB~6T_HJsJbzO#G8H8-ahR+p z4pCz>-cM{~!|3mmWIMKt!TBLk( zq)fy`-w~T-+!(I1#$G3a&>retpz3|@uI8SKwx+gQgtf(!uO z1~@`r&EwwMSJncVEYnquHmUI;XnZ`^*<%Ha(gN=_Tqeb8L{B4X(kQ*73c?R1&GB@e zwZU1%!m%cPf|oK105WS?hr*9-wM zK0KB@CBw34hS1g1DK%!twt0FB8qY$4_hpM2m@N_8Nh>MMsDgt94-wRmPkqqX!oB$+ zk{AyQk-+b%>TW!bl?0T6DgZ>(MZX~kZtq(ws6{!~ z!-?k-NOumygqlwloBa!2XyX%Zz!rC#-maqw7SFd;DR9U*3Sn81#qdLIH z(H(J%vE5KMx~B3Bl2bzqa}9iKRne>9imB7Tfn{vo zcgXzGiG-_-{dq7xX7wBdlK$$(`}9QLC_R4!{NTtBgT!Ne>QK z77nn*K#JcWe(G@WJ)EcU!VvsUIzbcEQEfpYAVCj7P}+~jz^RU1lKo(MYBlCwlgyo9 zpwbGgoK=bYn(d=<1zUDK8aAkDs#-flh8w8QVjIv$qbY(sH5hu?{}Y`pLs!7YUJ3Q( z*Ff7EFm%kJxWV$}BL=6+*go<(e528*3qCL^G$B|BN;PWhx#4AE5Cf12m&=Or;F5z# znwW_F;qe?>i~jwFo=N>+qVlkMSRbK`3w#C|u6G^F77*PTj(mb|N`*o&vFsm3)Z%W%t$$$#FCpGWO>4b;xDv)^Nh@MGU z0sJCJrSf-!XhRLrTG7kogXfW6xuh33*_iMG%YGf4n!jSgS-~YeF}?@?#rSui?R&m2%bEG2ze`@&q|a9)Bt-wcj#t;aiv0IJ=SeL10GXRf=4SOM@~Js$#{9W! z#%0+=8^)FUdIa5R!i<|dnaSd(9_US@DYKQiCQc0(VGwXM6zUlpUlQLwFlOAr5ehsS>CmK=?4R*yOcHRa z+PV>z^aXXrmp~O)%g0oc+_d8ND7%%Y-=XI6@KnMB1>TM2-4x3Wcw|%!x=7A()3Qfs zYolh(*L?*1;sl{4qOgD@XZc7S@Fw2`dfmcrFoOESA>Ua11{yl>^ji#z!*I~d=%u7m zBbf+~T5V4{`H$ZAq-Y%2lsRfnT*uY*g^W@X=$H51qIBh-UKt@B?mAA+Oc zQ(KU1S(zpJAG#au&|psdK!6|;pc~P01R0Xdg*;jcHoaSYprd!crusk{RDDyunsYJD z820$6>?p8A{|rv4{=TF4vs8Yf@bc(?;WpO8R{Zc5`hqS4eWS^M_=ELiUB2y|)F*i? zmPYX*vp_13Rx66w;Htp4-}J_MveR+6y=q+ZCH7Ysft6*)KZ2jTS2ee&KEJ>kv!(m6 zl!EGTYZSP)@6E3m3p&OQ19S!GhRp3sv zjP*kvOkl)|@zS#4mypTS`gIV5jcQO6h@Ro~xmACkM@#5$g1$fE`I3-T4LP_4j7sLg zT`})Ovx$ZjUMdwbDrYSv)>D}1`*|PuxEgx^LNNu--Nt7gU(32TH*nue`eBI7&a}oP zwe12qbMp4j(4}*vOaIUNbLSha`g8O9hxTX0hi&v{$f5l?R`=)0=>L=csO7ph z+Oju+2euyCpL>L6t?1L^#Y5iW7w4>^1;C>T?a7R`Q%ifrOO2 z>Iax}I%@s-0`Sed0B}sFCCJ0rHqK*%YJ=W^i4fDIhkU85?z9Vi1{!`+Jz(}!$)}sP z%aB9t1I*cI4nDXV@{3PDKHPb1T#s~1qAsPX$PiJk#&l}IwdRc{zASl zkjJ>uE|wd3;0Em(SuRV^!l>Wf*V?Zt(DLL4&YtdDl%35M@EP8E@(%dLlVijh`MB5l zH)q0ddKAn~7~?3EuZqJKsax}-;D?XgJ+*NsFv|1%Vy=eVB=BQ!>K6nr!QY^a6o9qb z1!p|PmlPT7c2JAi^-|Qv-=eqi+O`lySza(N(ZxK1`CI+ z4V8R%7uF^W427K`*@GE*J{|rD@_c@QE!X-6YaR!8$p&*WXI@yFj_uIk2AjR) zBfH=R?~66qf`xLXEhk=U5u%=B#ul}#4%-7mgWZ0}oEw;pNv;E5^iC>@)E|uPtQz?! zIh_1<*d3C25hekGmVFmA66VuZM023~^eQt9z0?MCXklC3XZWkk>swQuTGfZnEP9X@ zthoTS;I3n^hB~7X+95AsJ(miryHcROGVEkD|ZdOMOvYR8QE;psmJqWrpd>oHn~cmev4Z z!3z($cW#4-9cUMvJelA{Rvff!Jaw<(6=Rueeuy1Q7uneksjW`8N1A$r0JmjgcA=ML zvzng(FSvea*1+g57;BKoKh%)A5xZ^?Tfmfts%eqB?K~Y>ybFmO1Jk*8%aj*nx)7WE z_Q`^1r*>2i&C+qxTuR4WL2DSA#*3tZwCEQz4-m@)c(3Rl+qZ`-`>JdwW7}u!!0nj~ z{5gnUXc=4!DY}>8{Cp-z0B=hj7l#?otI`?&b6qI4#sdg7@{%* z5B^m)Hkl!pZujznH>g$S{t!J@^}Te~buKsrUQCP{fcW>Q7u2wstR*ojnbgWSRaX|0 zOYiPdr$iMcmV#srb*ryVocI{46Lm>qC(A|fO@XTb^;GYF|w=+PI*vfA1?vec;j4xZ*a^tBW<+59!eJ8D=2wX zE*XE}1yG@!geNgZQ_r4jP{LD_7DFkLCknY|HUo?Nfpo`U%@!fFCqF!xqZqB0fJwQV zR9Zu!br?sOHVy(1A_>=uV5I%_9&%Pj4_v}dAd?p`9FuGO34^m0nQhpC9@AlkZSbgvLa_RdNFMt}=i`E%jnfKrh_xLt8Oh_0Xj2()x0o3nV5`IM_a$KWCB0I$5q6kEu*INf7 zug1G%HT(s{AeRn7403XB#2ek|pCD4$AFmK8L^TnvHqS$wO@GznlEn77-yU=$oqfhW zWl$lO5e!_Q-MRCn7ls={6f@Y?p^Tbt0*;r83B$>IVL?ZOX6m;)|+ zsi627ef~LI_!9mGDr<4&Ki*gS?)}fJyytGz`7=DMK#}U3e-~XMkgqyZ&3{${6WvPds*Oh{1+J$w}&ffufg41EiS(Tnk zm&$zb5ME(Z`c%F?%DmQ0hUqI8)1&M?FbV_%YD^@t3kdVpen}foNxbV^y?@|8k0EaA zl9J|w!)BP%rbOqMA23{_q_(bE>V#jSFbFC@YT*#a##?746g5i_oNjk^f*|K_4c4sW zaEK0;%^P4>rN<8M0(_PQ-HR%X5J80;$3{v$c%rwoGN5X`|MO9?&lgB1GtOP9vuxBL zb84c1tN0QPjly^~IAt{kVZg_z^|^w6?X0*Nb2ss~sD85p33U+7SgELd)#DC5gPzSV zz^@Vv^H!e9MDQG~w~;tL0Ltw4V>Aw?WUxU|G-6`9jpPfb_f@>WqJU6TcA0O*lwGi9 z2W_541Z5*nvxAFikiE}4bun&OoIVp^- zw5Q4D>fS74&R(pZPdtS~%ylZx=a3v0?HjK0FZT|SXw^h4ASs9HVR6D41cRuu!c^mdqi^`(5}rG&^HVT`(%ysH9KBY9Wp zPTx-3Aubpx%n}e5XI0CW$h(Sxg+*Ky1grOD0#+~R##c-p2~)4$M;Mp*2A(+iWp?{2 z!wr(Ip4~=atn5an6nBzISAHg4#k3h4nga$$7l53oX-hGaf&@3T1u!&7w9J3T^H@nV zS4JMIk~kXSyOh=(-vF(t#ukd8!Rt_k^Ag-qP~D#!RTX`UHt;uR%LobzW&xtV`ZSa1 z5E@T6u<>mY1yXqCKYThzypV>1R3`B_X|H}L-5mfK>2MBp2Ex5Hay}kjQ*wU2fs*2B z8m(t%tJQgWyGYT#lUA03@$@9Co3^~Cr+Uhl=)SW>Y$EHg7r0x^`k@0wh2eLj`AvmA zTiw)F18zprIwSH|J>%<=I6ETpvMFKH2U?#t2FRn{iZ-Kq_zzG!4I_we}Ku*4w z1b17k@teKIp$5bylMKvv@^t%cs(~lB#??TxRNYDqyoyXPPYvh-R0GwEv>Lz&6L4sl zXoW}NIVn~~?I6WP4O}Y2yWTfH+r=P9A_1N`*OsX7T&e*kJK+0V%~;Ga$7(#Puju;} zcB)<=HC46zQ#VxXv4%(P=mk_4Njah}JX;WRVvv@%!at=1`<BBGE*T!1;3}XNJX%BV*fDNhYB=%49auT z@;8&AhvmZXARDQFF4tBX(T>_;Z%AJ<*s0<^>TjDivyiSB{{HXNEvE=P&lx%BEcNlR zfVh>?m2UZzt_IoD>R+GJmR5gVQb-eOI>a6A=1b3k#$&irNp)Q37;PJ(lys0WB;B2R+d39_-mxpX2KIiDXg7 z_wf=}$0aLc>X@zq5Xklchja?GWoM(!-vB_ooG-v>vr0S?0{-JYq2RySs-g`@W~*!3 zc&hEw3^Uwhr&CR*=cA_R&OLFwq*H2SAn=KtJ*|O>&PNe-#TpDOXJSi`!_7arh2H*H zSF)NP*&mBj*huEGxYR1r(8w`jGslR{>V2fnnp4EL|3Fno7Ny671}xsCtE-R}zF+i*qe!B9?QuAUqLS zk!rQ9YI-Y79%1NStv|*m#F+4^@pTC6m9a?MUX5Hm z=wOt=Cr$5KE+Ms{8;14QN*8StBD|I!Ou2yS9nx0Eo`B<4OOKw>%xd-`Qg1eZ3bjzq z9u;n|67pkZ5qrY?DuF14A_y$K5w2+( z#`9oNY zVWQmBO4d&^o?u?nLs}UK;X?E(EPW^38kjgB>bO-P-C!T-goI*`1Z4C>x|%RO>6@RF_2b*vxi(@dq%W*& z&C}9(S=oYog6}(kQBiM!*MKEAv3QDQQ?}?vxM^=Krb+kWd(5L!Wk`TvjGbq_wQG`d zSBa015ywD565TZ5#tnS>fZrj2$C;$sU8@laT!C?P#!7+VCoiDGuhokvO{C^U`vd9f zvz5S80C$3)1pXd7?(luDz*ZA+&>nB0<`B?kJnIK7m7v{pO$;=h*b7DiXyiQ~ZU7q3 zuNKgn9#fYSu3J604kLe^DM)R}A0!F5cGIrjrO^xyhbHSnXzqWKtY$`-A%R+$?W1w} zIUX4yOee>I?I^b3HxPrda{J0mCnIYerRc77co2WG>>(JN9w$$(#Mj_)_zHOzCW5(l zQ-%}x?roHI(x!cLE@QJ;2{Z&$N)Q==U^~`XaMNUn5I{&(Z_Bz1(H>swP5+3^kf?=b zSq8A^y^dCpq`z1J)NK&fPoSqh$pQF+%#Q{Ip#KYqiDF0|x``ncRm?mg0(hthKo;XF zJKk`hg*$X#rt?Jl7?lCAEm#jk83oKhQ5eVq+MxQdz{RpJ0c!TXMP!v{0xLiyW~Q7= zfLhK_$$Y8EuNjvED+P!>S{ShQ(z2q~JgK<{b)&|n<)ma8U`!&Wt7P~q5PM&$%;o5Q zd(AoV{==Lt)WOPL9HCA6T)Q~WXvOb(*T75r3@f7bp}thDHxYfz4h! zEfe4%f;jx4#ug`V6gvz|fC~{c;ylFP7HYhuQP)x8aO+p>#50E|OKBs+BEsGl~S zLU025qUQW}f)GUZr&shQe5lln_Tm00_8R}_3N`Cnv}`anX(bV;0}JF{K$iEOU-Z-Q zTFv{&uhSmVO_lyU$2#c_qhZEm4XOW z_+RF+WB%kfNK)6!_f2fJI696N;2*UCxt2X@=JgP6rF-Iu8mV)OS7CIDjO8@x zMhT2+NbIGBm+IAjL9zVZzx_dLe?e9hC9X#R?nZ%^p*=g0X1M|;Zt}dF0`JE1Zi?jw z{mr$2B}f6-rOR^k6m?}1GH6&z98i!>$$**Jz?CxM4Uy8&qIwM&;{R(vviEs*t*Go{ zI4+et4qA!Pn~kT4I_XWnsJ6U$D#Hg`rPcFHJ5sE(&ux5 zHRg{ACqtjh6||nu=Y{|r8_UmP3`1b+(x^F{5{w8CXtYERUxr>F-v&6xhH=stb@8># za`D$By%BIZ1r4_V-MnKIHm1eqbQb+C1K~fvas_<+}{RV73GFuJB!0W1u$c* zo0!uuFbeF9&kBX@8-N#5K8%r69z*^G+~L(yE2!0h?@}#$KvKX)`TYW6_Vynu;WX`a6^ zII~X5m_^zMicVX=2gDC5(D!6Up*1>)`Go6qQV$zFOWx-GgtdxH?Wm=Qme-*-x6C&CH8EsKiNYzlx+7R_g7_ zNdqnkp?3dLQ0n96bJ5Ts+>Vj0wt&Bl(VIlokuyZP0}WCrZ5c0k1X+jtt2-9O!W%q@ zI>V>6FeD#fytWps5XSb_Q_4gl4Tp0uSi%PlDW`OW$A5bK;IewLm5!3Gnk^Lr^Pa7f>RjH<>v%~U6~q^2U?JWOFGxe zctw;j4PD%Gmw^k^lv>+KV*<6)+nG`~zFZ@gs94Kt!4cKGlDN2+rT`A0^fq0LX>|y) zI}H2eWAn+#9_*73L{$(`d#Kj*l!WA#!Cz6!(J)81xftF4j+zX#^kRlawcUVNsnT5KzG%=sw{e&jd3cjGMX7uF6 zYulSJg3hR8J+U@pC4LmTaB|&GFN}ku7eJhfunX0|{x~qZef9nj!qJ|B)m#^yf+9%l zuh><+KdoX%_5O|(A6D-_yFygGbhlvzB)cVgH6^oqx*%t|Tw*oBu#}LBrNZ+b!$&QA zL82W&5@SO`d|gJ~4Y7(U@-yx9Uta(zH*0_h*6n}Ma$_4VsXfFmBW&a4jFf|d) z6sEmAEXV{a+bsNbeZ_ii^H!766!L)79-;^&lUry#kv9&JdI?LyJk=nNXC5 zr|HembD7{=NNsdH=v#(|Lg*^FaRb3mI)f|FYu9`ZZ~@+uvG9n~%hCX?W|B%eJ0Xn{g4T$~{71d4t&? zq=KUyL=CTX0*hW^xJI*9DfWDNHYE-IL-PN-?WZb(XB=0>NZ)}f);R& zMFRXs4k4JMUGc?yuL;~Q@a{oeJ}0sH3{1KE3r58ZRb-2HP(_z%n<}Hu)KtkOoe}8q z^W~9YlV%_b5YE2SKbBM*6P@OJ^hYHNPQDh2*V0e_-<(R$oc$V{QeA6^>#RS~pw^{*r!{@#WbW}i`&g{m06 zBL1G2$4n?{6Mv(uo7&5oOM=%q_i3! z7o3_=jgBXgyL5|c`T}s*;}|}OqegnClRQ8SSp%Cao)KJfBHh(rL#+d+W-J-miA9%N zt(MhXe1feOB@_pmGWdy}=E{~LO-*YP-M>Ws9orkci*FcRL%b4AO6Zh+7z3hw65*!Y zc${n5ut5)R!{IKUs`s9RWBG#A+)5t)LQY87KLA<%e_I&eUnCbb=5c?K5djgkz!bbp zR-c@LjQ+Y|*j41g$=Fq7;LAYVM?a_*HF^s2{qGAP)qh6~p8e}>{F!_E9;}~W`u_!s zKWDD!#XGuymmt-2YXrTxN%w9td4u*eJ+a+L?IOl~f>UHPZwESWhMsi;r#+;73iaY- zmPE#djLe+C?^(RAavWwIA5B|**h zpC{e!NB0Z(_P>EJo@K-yrpg{2yn?3LJFbe|}|q%La;Q73AnHKxla| z6w3`1fybVK+IxJ?n%UiEUY&nhvoqnxTCY3x!;thPfQKq+ABb{{y8my$?NH#B3M7#q zt6GnTeXwGQUK~~^e8?JrhSMbkqN7Ig^I0kHGSy{6d%cx|OqqNpJAd>YLu@=GR!P&vY*M5y(R7)CH*+k^SxD zA?oxV&PDYTb@gRZebXaxZ2S4)Nbn=Oh^f|0>4p~aXDG${&-u73+p=#$6`3}~KtLV1 zhq_EShgu?1pKisp@AlX`bUZI^5Y?vnP-=4scS3u?sgG&?0Hckj%Hbc>T>v}->#`ab zGxHAiYR$9q4^|B6xu#}KMIq)nfVIm(2`;rqzpz<-de1s|wHDjdYt1a%@4|>vu4X-8 zw4B}{#-|9!g9JcLrW!3p=Gh!QZ#MfIBE3TJSB_c`_g6v?wQTw;i~jQwhXw)lB>k1wo)*WWsnG`~hpy_C)3q3b zm=rQQaLfniCOLtOr^ScBgS2*duqyB?|A7`@=x zdY+85qF0mlx1bKG6#ze2jY^UEN~lLLUBaXR?9~dSm(pc)$^abvZ5%+6zdSgTE7!yJ za@tK8hBZO=PS%;cUQQ4lh5I6I-+e7^2IH8koXth{*H+Fp9%m6d{&yRP92}bD^V6Ky zi|}8|>)t*T;qL3Ln(ztYvJx9LcUj1lPM)mrPI5Auw2$oZRt z?$e|eqKD|;U05S_RB)Q)>g68@PFsjqMc5xdXGM|yy@hjWF@W&)C+Xh6wc6`^CICDweJir-a=T@N3 z;D%MicrhjyG10SHb9+p8V|uyiVfCAR+ycDy;_bM zQdiFdKkV}c3km$})?|ggL!+`k=J5~(gmg<~DdRI)CA_-c^_8rBq*FsZy@Q^0d#tBp zZiz1kx|uxHOrC018ctykYeYzBi4LRgb=(mW|5*2C+#i~m{cEp!?2f_GoJwX%33>7AW_;1b z*DSLe*}hJ5>~ESyixR+Pi~!AM<3s*qv$?oGwArOdoYk2_i={N1V@Wojr<)z?Z&s2v z*(`6=+7Y_9(k#?HrZCxTHKN-5$7X98;XWh}y&%>srgTw490Ivw)grI>vMLqVNJFEK zbbo&>PCCApM%bWt@6OTefLx7Wu!{>DTN+v7yAw2v9EsZ7&oXpcYm zJdko62@UNj{KaQ6jQ{?6FUqX735_9iBV<@YA9J#*1bf{ceV_SnCugZ;6?&)$ioGng9PqdvL{4T~h`UN9%pX5fUQ}KQ-GAX~x=~nZDWJ~~G{w3CV6^rV zLk+K}GfSfj06c`H!%0eS&}5_*>l9JT3Jmh14J_x45Z6wCp?E;L9)p4gWD%aTZNe{y zoT!)10- z`9$}&+*irNh3>`8{q}C|XRj%=>oRYJlm@OwB5);JLTMw_V{z#^>d4orM)q; zsk%$)h?#&*hp&l8yi7_iPj{bB0zzKpNGLi6Iv0SkBUHbb{8sdl&8J(_CpGA&51Neg{?*t11o|x4Z0Pgq zZ9hhz!HGRdR*w|i~SJ*>dAtTMWME0cz-I+9-5F;+WbuUY{M#$i&fNDqa z6J~dfKpCf7bIVCd!KJ-F!6iJRp3Y5V0A3W;H?|LR76zq94zPPA53q+Pr?|gwf%`J^ zBovSUG)CT~RPb>F``bFBrJ=;gXq3@nk69^mFb=Nj`{QCDw>$?C_Nyj9e$vuj8}A zVK-&TV0$@w)NYVHKBaV!JAO`SFdg1yu=B+!nuJGL?&4mAw;|=8>iou zJJ1wGj+Q^qc1D|Yi?2=y*$C|oS<`)VBXth)S5 zQGb`ng%#aUhyqyyof~RKU6lV$(B<~abZ+ZEjdg3FbJkx6+BekPaFKgs@<2Q5uSFxi zfwBljxbO`H+xK%SdZzTZD{4mdcPeVi3f(JP2HHbw%6RbKlw1_zZwdxxILrn@%>vWx+|6Xv)-RLK6$2xFU zO*^i)tZDDw1{P&yop1k>)zE;#5YD@D$&f&F`4t15l;SpIN?A!Z}q; z*s%h9xB%Dggw+k?2II4|@)`t9Rf7t({6eqG2+14qEdPO>$9zzD#3}(lbg7$CO|+F^ zBf#Ly58(CMd*biMG^&Z83rVZwLcHHl=w8t>c*KUH$oJs0T7Xexf8!^pg;-%x{f?ss zxr@7MIYX?!sQ%-2Oe{@T7hqwC<$&#+a7`)V>Lb=5gppo;J}6~_tC-Q21gNuV-U{G0 zp2aLWDvKh!&J+7WJcoJ*w?`E~R$H3{$c_5)hQ7R}FaOq;rEM8y3IO!G8 z`0sZ)$ixi4!SFI%8PmqAx6T4X0w%ZfKD=Nk-SZ%1NL=$5lZj;7w( zez1ETHvISxPGtI~CER^y*tvmwZ|!6R1l|L}zJqf%i>lxsgnz+Q>IqR|gcGofqgN7K zIvk(@;=G& zekbhMW((^q!p@mR`5%;*kcmcKY!{wRyn!eftT7P-7BDdm0o+|4nVs`7>dh2cmLmFTd!9SO`fJuTYoI1R4AKZC|4O6M9ag zs%stnEsB4>NbPsf+- zMm7|l+AcY1q}}yY+0MCTIZBS-L>!d>N2M#&HHx^i+_|$+9esQ8xCjQs0^Yy+g7|@~ zj)&O3Bc-!T|)CmXhL8&CTT}4z^d&UXL8mP?(IK4YoHAw%14RAU9p1s|@SQ3v$6=VswDMBQyluhtyL^ z72KrrMs@!$&vyii0(yG%x|5fLWOv213+MI*;jZAiwNA1%pS?NyEOee_Gge7uf3|p( zz)aIl^{4}e9qx-=9Kx@1o+O46qd^|%9#{y5V5D_9I+zHz`=vX9Rrg6aO%A=y)+>_Q zzrhSS5Rvp#7qu`&gjGaVX2SPC2T>P_5~#Ul)Q{*>Q-kV6pnT^^vKV*+6G)H92tcR(U?% zFeiLY3iet*33xw;)Mx|u*rsV-D{2&c+?pDgzdJ0w|4-24t(~n~Or*yhXda4z8JysM zFpg*pFg2wU!~Z1p!33S24%r|ddU)UI+wV<&wQc z&y`R_;FNPUQTtjD=1*{}JltK!u)S2)SF{EdwlFwcq2p2#~P2ONzxO+P?~GE5>HwAk>g$6wwY3G26>Xuhp~v zNHCNJu}VPz+S2p8o-MGJn4X@1ZMBaX%xr^vwiJs zg)0yEKQ7w)&fpF^itIPSI7DY7PEb40VPbzSV}+TUaAtXKp?$+Yp{UXE<+|fLbjQCK z-2L5f@|UJ0oCAA*G#gy51~gI>3Dl%dxw({6@z2!yFH^$K-%}A)3OoNy=OzEU@_}&v z#}0NXzD+H{AB^z7?=To=i!LcYg9AdGf4H}(;WgdnC%Vm+!QHq`i1j>E^MYdZy8g5`(#<` z;Yu^X*nK$(=H1%6o!KhD0A~KwO@m|N&Z%3NCb%K+IfXg@%8ps~)J$BQ!1&oT;eTbH znS9+J9kJ|(`O_#LdMbU1Wt^o-5Rem%pc)>bWH53J%ext$cHjYNDeZzwwjjCwM3}%- z3+{3KzN6W=g_&YXd9GKHoI*sdh^*;oho?f~0x9jyNCpZDMxH(x{-mpU;g}PGfdM<< z+$|k&?$}MGy`?hWvQswFW*6wg zx3If!ynmBryH4l=5oY^quI->aN2B!7>|VyD874b_X<)Dm_<;|Fy5H!_7jn`54~8b{ zY$>c!AN@NBWn>85NR%P9NWMIrh+$9u%8NwA_uX|)*lvIrrBH;?64~Frd>GqNyI`Iy&+_OI68nzZBBh{?K)Ow zW!kUTN83xj0*lrEfGBfl{b%<2$d2}V>!JFRf;I1eg&8iJ62VU=?G|Z&HiI8V(eN}Q*dJE-fTo-8Rris4Sf1DPj=XTw zE|r?;uLff8<}pw=Ws_Io8)Bd6lLA#TE&-~h3#!uUX2eki12bK|ncNyx+#XAMLs^s1DVhX+cfOM^{G6S!9OHkD+?B1%k^R~?xN?maydjrZfeQ3oV zUJ!fulzxc5s~qoP^hSUJg2BJ$fWl1+y7VF8o5Na!MCjEA=V&Au|0aPo);aP1)^Wrk zY!RJ7{TBn_(I4VX&NzdVi2yl+}gS zRQw(Hx}G(a4_j_+EehAb?#hkj%w52borUw|vTQCd7*$V`Y=-=U!D)XHR#?blVW)aF z-($)?XS;v%)NuE;R`M29##-PyU@NeOYTol7Zuv3)t*Ty#J8YG)P$06G?ZZ!}+kojL z#zKW3@Do4`>3{SK!8~;(+4|QbG&S|65bDA$)RlBli&--bSls=Cd?M3=^eAAQedbVOl%1B426&Rhb-!2!l-h+Rm=K+e~etzYNt2Al$aM#KjE z2=UeL$J)%@Sev<<*l^{0to`|e>5z{Q7;PG2R&Qn_u+i|@B=O96u%-+00-cm_JbPOz zy#)t)1w0Ns)-2Tl?E!JqUsSivf+4JRPNtLcr}1FPJNzse_lHH_{*6dFRNs;x(;i*K z*~i(9f)LGr`D-gqLoWn;r&`_srv>bV)mlPm3!Jp!Qc1?uyr3vVmtm9R$HvktD`DcH zhq*;6OsRAfHfW*8OEkFGxh?)D#B{%aBIC%TcyF#|%2 z@GYm0VX-$8Bibk&J7$BJfXGLu5_Uwi?&pEJk?@>B{=IF#KQa8&Gla%YnOo=%K*tLuvA$H(~BMZMH+)eZdnT1p#(lZ zqmac+nQ^)N0lOW95XNd>9u~O2#J;tJ+h}tR3vOq?Jq9u;|9aQSo zHD+76#^Ii zU=0gl4s})aKZIcp5uA&`JR?jE9XZ%#!g= zu!c+Yh$5gsNLG`K5Fcm;p3+G{rOf1UrwWB0)Yi4^olzcQoq>kL%;^;EXLxghP)Mf*e6P07OF2`rAzID|~Z4ejyHn{|+d?py@oIUhH%_RBNnnZ3{ zi$|eIiIf<=VjnW1VBXPqdDR)0+0Wj$@hj*vq$;c_?Ebbr4n0NnIaoq7F7ztkN!qvz&s*N^ z*L`0hynUqCxqWh}1*~v>!^GcmkiMIlx-SWP9BuU_AC>*h<2aMo0&x!m@lWGd;;NC=G2@EY9}$(gy6GL0;!VpVY5JKS zKL=TA@Y^CP1LYD2q;0{HTx1YCLEefv)mcUzPGms@#0W z&*{^TF^I}3hwo8?&>>@r3I0c;4krE)qZ{}ix=+vOJ&9d&h1w!u;^41_k&s!lhX}od z&+g%!=?}_iPn~!rJJVyIoz5|oGdEK%+GD4uU?szY7)o`%E$FU5Xcxwf6KYd%3lB}c zLe8$O@0{6l*|sycRxY07KbyaD_DUpiAY&tNC}#EL4M3{(z~&&&xXu`RI~n)|X%XoP z(O4kRhn=37o@AmrZl!2MJrQfUce7C%$GhiC>-S5u&hr8btWo4b6t7J=-f|{M0Vp3^ z-#K?{2w^tw*B#IwVK*+Az}0f9E2>?jZ9*=XclX=Q&UZcT8bqeG;Fb+SR!5AEj2raMH^8_^HSGZXhg$X~fRCl3c8j z*tALyP~lUn6aCL;sb9Sz61jLSFTom4?pu9n--GT%dMkl;@G+q8VU2R>1?7>*Q?C*) z32_;LWEd>d+VbCtWpa)qYzZ#rPM9-3%A-Ps7m@JUm^IF@OnckLCYqxYTDl*whe4E4 zV-7Z(8y1o?$v5uozTLgHrTaE}kCnVxL*YoEKt{9ysUM$24g|{26(|CSLNPZUvhe|c zPsY3{5JYyKikUNbH9E3*J&U`2XMCHB$l}ST)_)nW#{jS~Xk`^bpS&JO3A+C#0yxd= zK2QtF)U*#Sd4Tk;!A2;0q45KnKekLf9x*17D|@;~qrEQLPi9|f73pxgfxE_gI+njh z8C`N(f->@u=Y^~K-06==zyO<2Rcq$(Mtmm^MY?9AEnl|YIKO0|U)iptSf zXryRDz42{=4ugyhw{Jb{rxtwjPKC88V(y9kH{><7glG==K zPyZ0qjY%OOW*8pf#EckKY(zRBkWQW3Xatw7zFf~S;do5U zwzC4;`9yor(IN6S!+YD_3OvZEJMEW6bLH&`-rE!_u;)v83#FD6Jx<)N2DAglx zk26yp3GgFQJ+N34K+`d}M8eNC$ghctSjXdcT4ZN0AbZ%dDhJwprdCu7wTWCtJtm{P z)6q4F>z&LSTSxtJHgR4kwhUa(Ix#^!%UPy%-S!`i<>~06y-;jn+U;Y7-<0rMaEgu| z&gM@Vw+&xQxM`Uyo<)OwodA5 z&A%9|Vy%~ypoAw~3M^u#$kUb0Lr5fz)27Gb7Id@kd2|@eqxy8EmSRti4498p#^q=O z$!Owtt>N$*oQR64oNI+XNNX}42?B}QBUvaf44QM^!cwQO+aK9!dQXCI_xgB5)yn^I zDwv4sY@tHN?us}SHqaxHh^mveMV@;|g-4RMYkVB34b`iGTQCTS)Vg29Z`w;zm`p!^ zu*T;C6!tt4KCksZpQY|!p^-UT`>b=d&E)z`iV>XFR5f-D<&CbR@sFbxj`)l5-}iR~ zqG#~|^1Kmu)?;WGZA@|_tW*nl5y28}M`r7^od5@kTfu2taZ_Y(uyVdADoO?XvDT9td_rB$99YC|G)t*%Gp!Yg50wMND|!BQq+CVV0bC{-v?(_qeeDc zDyfAuBm9-FuDoA|k4xzhVL!gryuue>Jpn;p?Yy&lmW7B*3FA440W`$=dagu$=IKF< z9nmsPpFXEK_BBF9NQTPc85;I`(JC@&zvaZMdSE1mBb7M9LQ)*!;}MDHh9yAtIed@N z@Bv)@ftje{2?pp&QbR!|FBoSmqd-BGm2!{)U%muA17&D|Fy)z%A%_OR5cN6HXEj5X z%_tmb&RW4?^c@(6qvGXFh&RgWsMj!N6Dx2vh$3JkR}WZ#k}BCIB)J(mU)(4wSR(@> zC-9qxpd+w&71ONuh@uE|8$+JHM-)X}WoOHFc*{^TJe-wf+G`e#-2M{Cp4r=701QOu zQStQN%8SIy0B)vw@Y-1DxdP@i;~2K-q;--DKx>MSXn;`22he3zcW{YAj0Kn6^CH`? z-+}q*_4xI&JY4ir>>);FZ&`cSj|4wXk^L&U8A@;QMI&Tf4g@2@x(-HZ?8-e0ExUnZ`+l?=5#5cKbvM5I zGxN)E^djM~1#~QkYJ5OQ`w=g8WHV}Z0&k#XoT0GdL>S5mESBd^9SUJMmkGP_`t4Mb z5kB$r8$E%*v+|BMXNCo~+iuxVmBNPO@mmFM~xo4kj5Ayw7CMM1{CvE((dFCRvy z!6jBhO_@bndtz1DWWjNq@tJtw20E3+9o+)$=x)jIi7Z5$;atzlee+N3zUR_Go{VQ5 zua>rq9b0rU1&J+#ezaH&i}RV#fnsBL`{3uVZpqp)Ty1R>OS7SgRRnaY#bUItHv%r*aa_v zxH}9!LR3eYmQ5o>O&(WaxD(u=5(&>kk*P?)r^KMTj1q%7^9ZGt7)It;iQ#BE<=~gT zbF@5D$7z{?pXRAKYc3cvzn*H&(Omi4TS*pSMQ|U;A{wt1+ll2od7xHv#*%`|+p#vM z_n!O6<(w7}HMe+JqMAEPN~Lv^i(k!|ewB!tvmA#q45g%H6oHpTLMTRfJ`)Di>Wa~p zjr`4BZC@9u6IBE4#HHfy9X=ZBXp6>&qt%#>wj5DU83A{+fM<*r1W_jeK@i(}cHsFmNHFNzmaAs3|Z zN6*JFQQfGY{`+cZoBQM1#vgAL|K$s~wrbhW5+IKW(Y>~|Bb8|8tWI?CfJYFDysFc%O|8-SdydeF7 z*Q8Y1DqOH_3ABi`o7?oL)+pTV1dGhY?F4kb;3Q>ev^L7W{lbmTR?N4^G_6fm3Dd_a^O-jK`s~Q~TNLB0GXSnJG9mPd=N?NkX{i zOtQoLcFJIAh{*AHb*YvfpE^ z`CpF>L<{LGQ~lgclsIr0K`^8t1&;e;-122>sos8UYs&|i;G}U2-tl!4ZgqDbgt+NM!lmig^Tn*PYRR2|q zj9FN%CM0f3J&NjD)qxi%4?qOw>7pIj*%y^nBrt)Bv_NfsIps= zRYrr0QA%Ic70%(*e=lf)W;F+vuUS01R*nPA)P77naRK|1BpHvQT(&a}O#^g+6*EDqv_bOYB@J|+8W9Cz1dSV^f0W)Bmg)NZVjY{cU&#t1n z#S072$b)M0pjba}wd)~n1KKDN;A5H7|3n(QBxSo9Yi=dJ=48#5@0^Ugfl4ysjr7l< z_g(B7!N%iYAq(3a0NCtH#*WsQDv^m%P=ji8Q6bRaDvo8>SL_ix#3X=FOX`zQttNQ#*Wobq_~eT><6`E6Y(0;IgMmnDM6Lmu2PDNA8^ z9;ZMuM!?3Rr%^4tY3?nVrYvR0H3w)&@yY(;lS~*`GYAkU)Ov}Lt4_;OY(I9LKQpP1bCD zP7G-UVzy-lFVx{VNDI|jBiqQxJq%bL&s5ra9p$LUD(25I$s?vl?HAkrDHEn?Kqnf1XKllaq;c;pWBrkI$8_uH+*a6supPB3xCf#nx)00%t!g%DriY?ZkMU_$O$BPz zozz>zie=-#%N3<$-;z{nwC6>mVJ8MR?E}b|kbTc@c!<|SEagZGOrmrpMTsNrk@CrO zQMPViWJjHSul|Lv*hVVizVfO5iYl18EK|Ok%%4u6pFl9Zj_*+8hvZH-aK$KU-N}3^ zI}GZLZ2bE4e&pF|75x$=jv95cR;AM^nV1{Xf+!0wWju#54m4_D-L*POAbYh#qZatc z|I%bnNl%ta`cfSPXFNeBar}=a&)}m5X;E~CGg&tW8!P$*ud#9mvXZWTGv#BR>k9k< z=Lu8VKS|@cfnS%?$1&Lz$O>o{a1t}4RL--aWCp^xC~A`Sco8nuK0u z0klzSGVXH%|G0)+A(~7pwR?2uwno1b4yV>)0QcVCkZ4=WWn|?`j=5>tw9})Td|pq%ap^ zlCl1y9zY4Yx^Clki1PZF}ds4zpyZ0pB^O))ru+mkU zL3M6i^}Q&xtB>A~tNP(msJ>L+0M4iXYO;!B>+hNf`=rlvCD-JctZZK4IqEA`<3O*5 zKqgsi2MOxSzE0>0eqNc4VFMDc&9m{JV+v0YAq$F35!9xOa9%@-@W$$!iNB_ZByO=5 zK9eH6vHG&r)(!C)inxL8f9D_&d=6cntx-b><9mu)CU4aA24E0QiS%XCN_KID`eX?3 z(hLm6@gd_iS;>^(vt$3jaaYCn57aJt<!;63+l$f4$tBxt%CGf%{>>xex%f-%}RJYiH{#s-w#GtGr*8CplH=!NxN+| zKK1PnS>WGiw18vvE=VF1&%^SK#9$?QFvZTOI!^3T3-#eM&_ie;Jm3ai>ZTut_%Ive z3hWp6D8}x`sLKiG)gGLO8BfdpfIkP`ffhp%02wM46GF?8aE{#B;L@(0sVmZ z)(~|+r+-(r?%xIMpEJBOSD2%ZT!)(9z}>KRq1P$-g-&5U7M7=UF0>0fbA@@nJv=`p zPD^#*3D0^VC$=?7=bYC@f4@BSkp6!9i1c^jCFt*oN9ynYDgN7-bttgaIeuV|(oA{Y zNq%63|ME4k8wULZ{*%z^&!Nv%Si1n`gW(YVd%gTZO`mk&oa;@n;{9yB;ypJde{JQ- zSn-|I!@ zyyd@5cbiW;w7U<9+VND3A@MbbcK6DMq`O~PKgN$Mwfq&(8pFNjAOF6^&>;RjtDz4s z^W-nKbUvfcGy=-lCXJCSorepNNmUq9CtvFGMsoSASRxFRKojhA1A#WW`m3;?vT2%| zzfKT6>RolqJn3o*yLzghvaRDuV()b3>*sKX8PP(25fV6}{y)>~53IVpN~0waBn+0> z5g9fY$5jbTK%ef1(kxi&?+8K!v=uprcI2@Kr6cEGjE)S9btHj5$70g?a~S^77~2B& z5a9t%VTQDe&v6oIfKg78`ugGR0x%+iVTKT~pOI%lrI5(Qo3TRZPyzdbI53v6sl@{k zlbdYzgAXnhdxDKZuq()x%5!0H_CNRhdsXI;}?W55#N4Neu`v9*73@uj_! zY6BPGFV2&?NZ9}v=l@*J!I8{-F1&^wdSL%pM!rXzC?Sxh_<+521FjSSHI(x!SpCi5 z#!zJ07wREK1W6@~|5)Lg%KoV75q#(bF4HYw03Ntfw{Rbx;{+==Ff(5B`LUXNqUPwG zpaeXPtEGVFfc%1OKC5P51X3LnBUM}ehRi^>(w~7;RtBO#y6S^9&yXW9Us8#O`Sq38 z0-Tm&jDmDW7hmm-R>rKSlb*qH=wJa~;|ggKo|I566$74?@)^k9u4Ns5h45okoJ;XU zzSYBaQ-OR|Vm>n!gcN5+Q9L`b0>E(9|0WFT%0ggnJ={@Wd;;=0_EzvW7@F&k!Qc23 z_y$~JQ1R4o4;4496I5)jI2RlDWdVOea|pFTMFH=mPms}8s1SiQtNPv^05HZS5U>^h zKF+!m=m-CJT39%DfX8%n>xg$S-4_5COotiNz=?n^j&|@+2R`sbP;JZx4{b*eUoF!5 zL3@Zs(Y;V-hSKo#L((s`;ae@w=$B|$(4RC^gPx{53ljQ5hHTZJp&TkC?2m^2 zEWL#N3D$gR5D6`_uOK+%4gSP-30NR#>7D9x*~>C=?X(4W35T*|??w)faaU^MtwuR! zsvQtT6b}(xe8`i&^4H%!dM_quU*`v9oODk(K4~{y1Z?rW8}lud$AWNG#GeI)RJ_6_ zy9ZW{Aqq)lbR9~VVFZMELy9qRG?tzCk(&9C;AWa!2uP`J*|o$NME*vChx`eQzOf6M zN1&~JH{TFH9iV2%n#eYEL95jFz)2=>5?Y~xXte2}ga*;CROFQ+_zp@>I3ICU>}?u3 zkUHT6`z^h_KxL2hU-n#u=|FooUyR>Hl%&_Rw>#Zqxr36;r{iB+vHr`ZEpM7F#xb%2u`yt-Ywbo1ZW}klYK4T3-YB1`=F9LxESx*F0scKVS2u@q) zUo6r5h%V6YfQ+U?Ki)gAjd;k22PyZf0=MI3vU>a#ocdJv!N)D0O-Nw`4=uwcY$+0( za4~Gc!CMjJ_#@iDW;0o}fxh@wjWa)SZ1M>>G$W9MhpPf1{Kb+bLJ{E{X@x1(v<;SI zDXNKUAR8+@nx0ba(5L9x3Cs$4!~T~ob-~B1`Y5(e`Y5>;79&9*Pw>yj;{Pkt@#mTl{*25W8T@KBIH|yjMDhRr0)0Z-$l#v?&n-MD z3D+q8{~G@v7+Dzn^U9II^9onv@p*;o+MeXMms?Pk| zEPwZPMlI(R*5SujZ{q(=_<#Gze!;IA`DZQvyu&{q^3SK(-4QVPU~{?iE@As+3^orO zwjx!&u3V6W$patazV&s!tvnEZ>rf zhF9au^?QPM1;#u`i*?4&SlNdB?9#hCpPK z5nAc9`!xUiWDX{B!5Iw3!bV+tyiXrv973B60Tw@mcMwFFWi^VGfcItOfpsHw6-Ww& zaN;rQ5!n<=?1>}GqBe>zij_z)+?2{qTxh$W2L|T?f7%i6UmSiHD;+6xvcK9;=ugCV zH`6n-pUGOst81>DyoF|#+A$|sfO|d3vyM{VOsQ{H2XFA^W3WJ2{5z`*Su&$IAwM5q zaE;^wT(RNNYP?Qnth@Ol3VLwL0x3U3TCr>s@?Inh8a#Lum{U{y zn2sIi)SBf7=hPN|h0!4n`^^?9qZXA+g>r&|7`=dKTP4{42S8w6t(1VACx8~03i1Al zZ~-x$%GiA^de1OCblfXCkRR`Qmr-8VWh79ORgJ<<+HtH{+&C!wDpoJd0+6LL%u;J0 zuwCh$==0*%)xL6*sn(8E%ZRVOkdQjH_yN1p8##5nMS8NnI4ngp?-L}{WJ#i?V~99u zC25PK82VwH5sHZaq=9I92}<(v@n)JE5NgPXRCk^R7hYq!dR11@=nk@L@Hce@(W}5_ zmdyzv*4;zu)>w`{2a`gS3!ym2qtCOHIi7#lLsB@$bGOh16J`Li5@!s>=XfrHK;3s0 zrqwuQDn098;sjn8KwJzf1tPE&%^*;0U34HD5*X;_|LtVTp8iIr@yE2&QzUB5aXzUm zL(lguIqc+6T9Pju6Jnn+L5_}r!u&^WP`Dl{5BDPvS5FanGreZPJeaAOUwRn9?|tUC z=3Wqv$UrOExB{;-O`hxBgCol*Jd65^l{|+s(8vnnfVB@2THvrhMP7rS>u9A z1T^+)pfY-2@P5>xB8gcL2I&y7;!8uvg zavfG8r@%U6z!tr-TCf3}X4x9J5uzx}Y%1Vjh*fVY7>qoLs%mHCN*(SpxnO>Dlq`AW z+2PguCkF3Z9$Yd!Ye0vswL`N8;4H6e#4)xvW0S&GFwLN0#1PCG1>eI-o52fcO4;W> z-g6#||EOT*%5_H8d|si$%izXTt-xHlJ4A*U?B=vLfM}H=1q8`TrJFybrj%rkC_p2i22XNRLBDvha@~8e6Yi|M{Rdv3PC(4xpi4$cpD9BKw zCWfG+b98|A|xh2uESMStZ1#$)+&B$EmlO_6GBPAjl~7Q z%A(af1{FbBmHeLPJ?Abn8PI+~7J*u@=W>P<{ZZ6t>IsCscTR%CeF)|Za!X>kNu#u=X<8V^)ZUGu4hB3p z5W5XmxAq)~Dq|KG+Q3SP#IU*?p3fX{4%){$WdVcip*)@0|zB2U`^OcO9_f0;GA9<---=p3?6*Z|NJwQbob^h_d z`(1d37tOZtXqb~L%gWIc&68gt{Zu%&so5e($8QmJ&7m=8+qAk~FuxNHjDiWA9|})D zl+Wz&^v9v!^KoS06`9x{R$PtLAW1Qttx+&lSnV!Tgm&M$g`~djk(E}j{EU3iER35K znD+$N;2E(QbEO;vD_}eEg=jgM1ldKTT#P4XVdL0V51#X?V$#Z&0Tc zkNjk4dHYI=JXs_^)VTniQj#WwO>EF)8}(6<3*=ZtkUz1pFMm7k-e z)*3!8o^{7r;yF|z>evN$wN)l=@mv>X9p3{%?B9s#PE+%`s;uRBaG|@8U|ie%u3Us)6s?MvRbOAUY9d(Mlz2!M=@=`n0`K?#jQD2xa2Wao5&EB%SStPwJ)l=#uKO3dav?{I+% z7#(39kX(5F>@TouU^(l+B2LH^OA6tcT*q@9`}|ZpD0%TQ6-j38|CUn*VAfV`+~7-D zgvvo>!8qi=GO$j9@iGx5K^F9L%va5E-((2Dx@#x^D=7dF<@B0`Z zbk&JC$GP(OBmv0!P*NGKc&MEY6{K5r+k-Cm<7PF;3NB9{%Yvje+9$yWWu%iOddTO# zqv2Yv7i(+CTD#}tf2WJV{$4BzJ&RYrb3F@uSEks8_R$s6rik<47*?<_?0f+I@2Fsa z45COk#~yrQYj+enDAyUaVZZd3;>0SUeI^?s!U69F*3Kz^H=uSeKi`1mj{!m31B-N()^CmA)2weE9KlmZkZiT17rU(9tUG#-ddW z>Hq7q4xAucRVKau9;$+T?%7=8(5S(T=tknf-9N1p&We2a91lYA#OLt+b-N^2pRcsT z0P7BXz7kipLy)lizlIMkYMsMeadVvB7*t6iSU@2_>!4H%wGHPO9GCDk$}dysPV~_G zhawa+WFs#@pga~J-M;kzD~b248BEjvyi|;q3>iW12EB=bMPq{+fq?GoX}Iwg25%em?op5XCP zW(7+Cwaubr2yJZ7lWRa_;>lIOlS7BgqS0V_axX6Jj)GzGK3T6+E}|7T(Csn1-|dC? z$@ApCcyoUW2djsDmg|{1-gDz`fFDYC2Wc$mthe?^4v$5BXV|L?hoS z5ZpEQu9T;c4Rj#mP1-qdFXY_bO$7>AVH>upcx~!gPCW6xrF4FA|IIXv%x9rHL+p`rsncMMcnw@7-Ir>a4B z3x~PF{LlOqg}^E|PKA9|t^!?0DhB`fzE-^=WeTT7an)(0!fCgYQ&I{AXk-c0VCQrM zC|DB=2PP6JP!XS~KP6EA69-bI?}skF^d)vNz!DTtjuhBD=Y2`0bT;vbBr{&Rg2IyZ zfAUBIabU#G{An`kL?5c8pjrwS+o>%ktStp4v1JcMLD8K!NEFhZE(z(LN^|EQ$D(s^ z(2ckQQon!TdWG{+<}N{UP+M$%1fvm1awl&yC^!KFBptJi0msAA)^QfM6m_&cr7K7( zKRiS3CrDcJgZZfSC;9VH5tJeKd#|Zc^HHzi$4uw@46Mb?eh&eww%M4O>h)i|_5T2? za>su6MZ43v7PsBt0L?1`tCe^_r1SdI%CNz^V7F{#*}uYSldL085p#7TX0Yn<1+vZ_ z8OYj$S?hFG^k(!jgyN5mt)c5#Qwlp0mGBT z&q-r|4MH#gl@G`TCoeluIN8OF+* z*k32wow?h-z$)pZ@H+^pGdc&O#6To#SBw5O0K7imT2xX-_@myx2X^ z{sPk;1=iD~k`7Q=wVv!R)hdw?08MQIPeDa55f$6H(@TW!L3UP10d=m8fFM_bATHz5 z%ljh=FN~us|KWeYTL_&B$uTi%D=^;A!udE==MP+tnB|c0A`{cJmt+^Nnm7ROhvWTl zykm!16ksppZC7fgnn^%v?GKi$eT{!#;$Ps<7IDepoaZ>-^=7XKM@ZL?irXG=9_xoz zlm=Uo#NYj_XBf9cZBKFf?Nua%2!N_BQC{TI-Vz;0CSPe63T5`K`i0PgCy@N1O7%1f06Jedo!7lNpPHJ`_yRFIDa17w@Z#@J2-T5lM z)slV{|Gh4~gfZT&JwViHlr9#}~46pTOZg=%I3qO_Hwzty=0OYRx>bL4t?r3mOI$mc?|V)`fAWmctW z2NO}m1uVT|aXoZ#;YG8=S0f>YpooFX8)CV?XMvmOW3cN#kuNUo;$>xUNzE9;Rc=H} zE`Ow7q3Y&P2rY@Esr4}|s%IlmN7Ol40*JIyARJ1Svq3P2CFHmegu4WUE6?`{CkxO? zxcGVH&<$j{1n(1~7?whYrbX1404xF#Wh^i#xBWx1ra%d&xDp8MAmJ<(33NyGa92c9 zFf)hRaXg@g5x)YfzSmW~i>^I98kRn8WaH8HhG$}&)=Y}1N}jj|DnU9(6XKVHO6TIx zt>Ho`5-Fr^KSXjxDMtAAL#Zk($5(S!utgx3>HJ2M3(b}T7e>>UOC?u+o=Yx9)Xp;# zE9sxO2GKbxi1r0>UEC=#*vtT~5GNDTiQ&gsc`stvkK1}dTam!uCss>f${i}`*&m2s z1Gx$D6EXCq`9WO_sU=BJ_gqOj`lyK8tdjV7eM+#;;}1=V-%9a%ZcIgjK!;nPLv)QxfN5&q2%cZ9A=!1)O@r`h9Ii7GXguZbO6=Kb;&~$_?c2gMYI#&j&#T+UwtbG-~ zJFUH87PrGSM4#l_bGts*+=1M(p5Q`ShT1KKv{NvNay8j&+5n!{V7%A{Ecv+(_3T!H!+i+x7BZt_UNAD$uIOWhXe-gxj0 zZ2%)AEJsr7Re7+B976+o_A-bYwoh}q03RdHW9-&lR8V&A-iF+i^LXeJ!ixsw)V)&^ zZ5RX+add|))f~aqh)}Ywx}|2blYfiMC2s2p68{<;55f)TxA@0;{U$of@n910LY`HO zku%Gkp^=NTQ95=xAev9q_9&Ub#aiZd;d>vIimP(V8#*1PtSAF&5?Vncs+mJj3f_nl zk%*wCxo({W!jOq7GzDp_kuu%+UC>8S<}+=Og&qsNzTUV3c9C!gtiA(A=<=GAN7riI~ z#bmNrO7VJqcTtH+xQ=H5LR5|lFH*KMTHjuE{Tt+Bmwk|(qm&I2l5_gaBe@8ZxTa7# zrz(vk!tTr?Sa?43<>}K~i5{yYkyvHtH==lJiw|sXo9X=FcNEE&z{8A0HmK=b+8qR= zUy-6eGm#>hUO%Zn2Gs{Qbc+K0n)wf`K#`wRAm?ULpy!SNMw-l^0;S+RgZ*O4egX=8 zOCwm6VXoO&vl|QSSDXEpm^f%wb$eiOHIK``Yof4Gv}z2rimNejyxzTs$=6e;RoHm2 zgwjw=d9A={AvGxVR$OO~8*Ok!(Y=qc60B9J+dR#zUBMq4aF=#dqO9N7Jy)jb^OJAtojg6ir+c^r(ul252()Ask6$TFFL*x}=N>HPjF= zDMp3$$rK^Dg2D8tY{=I$=mQTRUrQ(pN%F-aU{u+kXpO~vJA;r4-$R@E9Z&rFC;6(3 ziLxpco>f6#16N0NJ;KF2U|{wn+nQ{brA``SB!e)L_uEcYl?HQ>=j^LaPU@?)QHR-3 zQl_KU9z~tWH&WqPHdxD+iKE8o3*G=1Ez@vG+uOun_TWPAg|*UCVz@ErP@4HDPFR~f zjBS?u=s`c2e2R%9h$+gTlJraHbwCLxgl#1JE=q!p6Bx1s(HW_5*+ZYahYW}G0SYpS z;BknGiXu+$k0`=|NBV2QBS+W*M&dS_yXy}FtNTOpQv2W8WK#$Jmcvu3>V)u(gr5qL z27WZeSY7}DP1O{Fk72}44#Xnip=FphlaOl6CCf5o?uI7G*=v0%XrZkVY!Tms?Dg5P zI16ZbRucsCS~K45IL!QG9B@^3c*fsZeBBnXX*@h#_zPto6t#g!Afi@NUTou;yGS|k z)WsBXx-@PO1R|}VA@vg^h5KPN{v*(o6Id6r;n(y{DbP*P5{OjbHCcI8}C>ybzI%xz|nbK5eV8Ql1AE~aiF*Hr$7c7 z>!Q7gU+N4#MZqBHSB&vq1}zgI$Lf$;lMTlnl?3R|h&bsll`Bz#Qy`KU;fu3irV=HW z{_fn2TJuCMRGYO+YmgMA9k@KPnXb|mhk_%2pelI$h^ThjC7Il-nY?8xg&*2Kh>#gM zWCs2-LjTb5#Wy}zgbRtp#IvqEk|W}>JOmNXU>ya#@r*+UiaxH+Q)3_@VF~#N*?=n4K^!nor3}O84EWWw&jyb6;1qB-KAqWgr7E6c;up>(8VMp*xWH@u&va!7dn5 zF8*EA%L9rjNEHMHRhgs?LmCBw76#x#&Rnd8Z`PE}_WN4WMkx%`t+J}5dK z)IfVfY%ZIZV-@!?Ev)x>U8v5V>y~CWJLjz+PefYMS&vp5aC)B)rCufIYf)((krT*ZSOmeb%w~_;3;nse_$zg zsbJAEWi%V4wr5nWwtj+J(&y=0giQp#(1g+KdqEt~ssxi3xazXcFfee&-%vy>9*QB+ z2rTWGaUDt?5kEYJ4CSQ~ADV*B-)Gfbrz_IOfV(n=W><`~V_hS|@>@%+C~nO}VP-Z< z!}XV$;k&{puC#qc%tG<@sCGQFOY55Ud6yQ{ZOR*w*;*3M>eYR4#xTmv^8{pN1VPTc z0^JMZ`jEbAAjO>6hZFIx+grPoWWb7PiauOus4#Drvm!w84k?ed6 zwDV$#+mVJu0}RZGe4sx;HO1mDkz;G|Yk1M4x%2R2{rakNVs%A>dKIr25R9Xoem>ZVJrpYN z6!-utajS^AbdH3}BX*S=q-(|C#;=trm^E>d)cr;TEOsyi>;zxHQusTi z!}yw>Y_&8J>lkYIfOGG)V9N%DS z+`*YMjnu+N(4MxRsKjB%SLLRKp66_-i|s~&Y>qODf0~|Pv&aj^Z=~gH$Gl+^s5c(k zQHPTWSYg!Usavq*ay=x+pl(>w4K3`4DYKou}(D^GpWhlQT!!0;R~OT>F;hJapSEm$i45 zph$&#LcMIRw&3<$5XIdFwy{8NNB~{b2^VdOmhR7jDG9Jtm z;RK-yHAW+-l3^#mnbd?Vq+MKGQ0kLZ5X?e<6JwlEIxSqqtO3H0!w#jc6)h zq>%vDf|pc|0m*Iw$v!c8bBidIRcultAXH<@;(hNvl)7_Ebo%=6^gBeJc|)%?COU9E z&Si+-hPj6Jsc0PN{ClkrP+ksWP*;degS7Un8j86otW6w^Vc^6(1xm0egD2}Os+dR0 zo3;RRIi|IhHm%Z^ZP!tAyHhrg!%kMNwX|nJh_ z_??(b2@;vSDU$2_%b;gXA#>Fx?5vyyhMAxtzKchrsty#0QqkG4oI(?Pcdjp1muCR0 z_Kx>wAi+kBIc}5>A=Io=K9IhKe8wN+y)>>YOALXZhsp-dfc$V`oD98v0~~Z?GKt@M zYUd^+XtYZBi6Ff5GL-?yE6_6J#1><2Jc?H$Wb@JFaXci&DmUeJ5-b~NUtu=wImfKq zh8ql5;iQy!&pWzM9Ll5cW{-yjjk0bK0o>m-#3h0cXDvfrG^8ToBR4ChsAya6TvINN zQn1}WNi*l3A0YZ&eCv=h{t3@GNXfrR`HxcmfsbBVoIt@uI<+4{h{KDz>}aY9Pk#dM z){44KjffkE>#yRcRdt)U?r7Q?uIHtBHG8td^&7#Ax=jczN5b|0AY*Lfx;@>&A8`KF z4+EwokESFWDdJh9L!K$Q^>Avqm=a|{pxlK>gmSW8`{5M)CIbh`5&|2&d{a^&^5*P* zHr13sdxd{&ULB^Ohy;aok&0+aKG$0-@?c7c^7unh8wde8&^no}2)KZuPBcAg0oHSR z3Mj%%IYfEjOdwZ=Geu_-yB8r&WD@BNf@MvINKK@JbHUH5$szR)+zRJUmx`Bj{T|54 zCd!F#AMN_wN@}~zufK|b3gS$%waj`(wzrtJe!{twjWeF&mq(X%%0-AjdEl^F(^SY) zKuZN1q3u|q3ewYL%Gv&qY-%$9l3XNwKTp0@-_H-cFL2-Mc4da^vLM%(#&=yw_@5i` zyNUZoF=OxGwG_tEb{$M_D7`t)^`X@=4Eo69=xA3mG4ll+?iX}oUis1k%;c~|?I1GE zm=!IHXH7H2jlv?a@N_vp-ztYQr#8f)ENNRKU+~B8Th*()uME7eb>AUaFhLSCcK4X+ z4Fve5nxp?3B&9)QQU2;#h&#Y7mhT`+Y*98_)F|J0&HwZS)qLkyosk>z4>pOls#hC= zP%ig~bMVLwP6(b+AXNBAEbL?dq3S6zsHFuE=rRhf>Xh+PfhuVcCUo}|w@fK+^zZvo zT%14{NG)0wa*jwzJxgP(Pmd9_QBrz22Ehl#>#%yB*7CVoKcUv1n(?zh8@PurPjJw{+qF)H50yMxaWT=zBoT9(=;%3 ziLOhcJ~AX>|M{hsr3hsSIXKi!(t8X9p!bVt)1U)s$G*m?X@qMd$1)Ny| zE4*k-0WW911m(%)(hXyCe@lOE#=mI8kYm1^1Mdq0?^F-|F-@bqsdrZ^WAS2$PL~mO z8ANAgc*Z=~m|+7OW2l%#Qbcy)S!&_9rdMSrV5zl@TE#%i-Bs*7 z8j6iNm%}H1Df8F_&T_3moC^~;RO4z3Dz`A-f^%S*uyKFP@NL`*DGN3ZB#AOL9K_$@ zz?_4^bDA1v>D8Xf7AdenTclunO}^|{ZHrcb%mfA`((lj8HCZ$oS|)(BRMsw~u&S;d zx~|HnB)YaPrTm>(sV<9#&ioSU<2FkJPh3DvuzG-obR1jOZt#*M`pHlA8U+?3rA5Kf zFRWc9C<1|ULjtxj5i9%KtNGQY|gX zj83AxRa%lKBriDx9TdymZCG@qKp}{8vZI0F)X}c3z-6$d)<-;HWziXEP8Y5 zFR(7R{1i3*;X@n~5fzMf^5E4L=vZ3Oo73J?tG=q-5Y=?qWSupHDs$AfQU9yMQ`fr zE3|wWa;pE5tkCXh1ny}oniM+pZdx)J*>{^8*BGOByNpxwDb}D|QT%hUM@SoJcT*SR z4l-aUE{hvSpaFo`v>(1p zPEr->*wy<2XD4QwnHzYiHaxNRfy<%BQ_B$dKXQaU2J+>O50m;L-a6f zO)-`)mCB8LK=9d!{+nZ&9~AFst_j!k`2Uzasxzi*&Y1wGe-+9@EGC}y+DTN^!O!vm z>8T*uDdXcPz*=@vSMoqLG2h9X~TtgG_W$$ooI0$m#Z^>}UA>!|}F1?~=0wlO<%~ir^^34p&!o!LbwJnQ{slHFgI4bKb#u*^VVpt!H5x zxORO$N~&Ky@d`5^dT}AHjnx9zzsbzp%_xQ(B}D!Y$wvxepCl83 znvf@P;Xpvl$K(*6oi(-#=VPeFT`y4cF^`G06E{V7446@#Su5YV8%8cJqz(g%7!8_e zJvRoO065l#G9%9CARTK34UQYCtr2^nOZguCxFanuVy%VVN z-@$3Kf$MqSH8b}p6byArz3{=D=B;WTKSDyG-qgi4LIQ-+_MV`koRA||aCEN{SK=a9 z**W#+QR%QmN$cz2H*zxCp7t8 zJ5)BjLuLOX{@G6F4n@SX+KwebdVb8u{tEQ8^HEJ0W&3^Wsu_}EAZI&&h@}w7dG9my zKG;zlaIM72O6h-2r{brq&ot&8c^dXOQg_A;TyK4XwGJ>6u+>~h0Wr+uMx)9YPKmcU zl7aWr6}Rz(VqM;qU+bDfb<08xV{=ca*&DjGyu`k6SE;q4#9Cg8=;@ko5cr1^6zl&* zEM5WYkrBnY;<2JH)YZIZywffUIm|mu4Hu)BalE%z^@&*2fE`H`|xsXz#>T z98E*YD;O)7s)7yisaOhgQK&S3cdTf6RdIMxb?<0{sL!BW=Zaq{ds2u+V>#hPRkhW{WU-0LwUVK0-Yltl15VP7{BR#^yu| zH%z|XB}%wn?hBVFj1cC05M~#-S5GBNCeGO>rzOt4J=q*^-rBCw&b(Nn7<-~M`#Mj) z33G?Z8v@pw{n6W=2ZwqIkA}(vNtz=h-%|3o_QOkF-0H%?GFat@fod3p%h=G?jo8upLWh-iv_ttR;7^~AQZ_=9ZF z038AR%TNZ{iI;4?I3xbgUEL;H0Kt|X+N5YksDTBzaCPmiJ(0gpuJg}Vl?N&vLv%mO zJg#qv=8%G-!rW#r5qT5KtRi2@kQLkdVjQ?jDHSBOJIf1*>L>ag2Q5>TMX~*C(nhrX za1Q1D_S*HiU6g0{nyt?Z^{N}~$&cjM(Mhm!&Qd&)? z2r8Dttm^W;3*v{P^+(-Y0I3~xaI~Q+H`IVFa-(xQIm1Lq>Q!pn>_mSBSE4uS9y3_X zl$SUT6-0>nq4Z|wsSRk(sccT5Ju?2>bP#G!S&wPd9B~>DC||U}ojZnmP_sKU>9=)F zyYzSHQR@NATC?U$Ol9&ec3Hn!9fHZ*!9W!DP45fWO=cDG9@}IHtAc^>tf2GoY3quV zvTsYNX7a=Ks9ihPS#Mga5WrQ{XFS~Npf}#NrQ4amg=2M9jNl=4N4Q6jT+SJvCGB~f?BN3kf zK|71Kw5+sf>xAFM2S5Mipp1*`ZY|SyOgw$K)v2Y_uEe_4wIY`mj=Tjx#L$v(%^D}h zeLO~jTu930Xyj+encU378&vIX)l#oi*!F~TNRg;$d!cwEcF*(IP~+hLcGS4_PX;s& zdIoox-CdL#2i@bS*zSA%@3qDaeaWQ^fRz8F#znd2N$U_b?%9NB+|4X}oN0m2vV`_> zq`|?+Ty9&mVSojv&CyZwxD%Efwx*c4Cti4UE zhu*pj-H=^@4wnQ_l})I!?8#-d5$4O2@nhS}n4Oilf~WLSHaOJrMi{ar)fp@7l{q7s zj;!J-y;0eygfI~Sqc9I};yOrNDfX4qtpMl=dD4p^B3)e9w0Y-8i}Ce2YaFU`d;b=M zqK<0s(gNS&C~!fKxe%~cgIITz;+j+EmeWNj&s+~;Kd6@z$@+DO0T?rIH5PIfExEIw zY2S+7nL`f8^x-eZ6=cAF8B)j#JD?p!OQviBqRwWMb1+Gs)11Puixt1hXjmaf_>b|j zTX1Cv2B{UsK-{2m7sylsnO^-{+R;u2lM0ojLIp_*Qpg50d@O95T%O;Gb@k`r;t^}* znlFdItSm3-zXFq=?WH&ctnNSHDEJra*Iv?PMZ@TR?VMhEozh`nf(?Azrj1+Hsb7YY z7i&!k*LX^~lji3)t=UW}Hge-2`~*;VFiI+6NlRD~PE3Z)s^+|84GY8=K@5x={$=y( zusY871hpI<45g`n4K2i&NH)Qub<%n{sX1{WIJ}qw zo|u9+=e0q?vl$%s$ zFX*GyHxYROOxQyzE>|DY>M1?I8^ndvY-GO~M+&@@GXP(~06Y}H>rzLD+yJ~A;!o+{ zQum7^2r;CUmJZ|YOBTA8&dz#@$KEqgz`8)f@xV~WTT6bo_R|CH7vJxGkS9N5tXVd$ z{EYn|4X??5kW5zgxF0G`H=f~&_hfrz#?J*!XhOIoU)FHuAb!gY6w_{!3z2A|?N0Zb zcDLqu&u&15rB)CTjw!5eaAT)5<9BL?PuV?(_>|Sol5JcyQf<=_Gi%xsF95fkqSpcc zeRw=kNiYZ;8%sX9%i5Hodj8LDKZKegV!8_|q->gMQ$yvaf~^NOHN@i3|Fzf!8^a+N zr$bUr%k2d&7pG9NBPTXBEvSkL6Hdl1%3@3rCQ>Gy*pU*AK#t!S_xCnQUWlm{Svw zR0_VFLw33x&@BQiQL?NTdhi^wdpEOt#FF6x!Z7CJOJx7;CdOlRcAjVL>>Nw-2eQwQ z>}5JTCOw(`HkJK|-htYWWcJ0W*)NmqhwJPwoFdtWtL(2|707-pv)`7Q-RVy7t2Zg| zV^#L`_|o}$J2(R!jb|;?zvil6hlZqSiIzaqa7;xSli=LVDMB)`;+3{V$OK@ma}g8Lt$w=Ap031Ba9*XYa4GgY21$0@$zy zgRFS&2^AXmcgs0#JaW&4*C6l^m*W#g7J}%K{$PS+$MAnIX8WluVp^=SCgKU6@>@bb&y8#NB#jt$7D{;hnb$k}f^WKoUmQEp6t z21qW;s8z`B(#WI?A6Y*i*&%6=UH$hUGP2l7c!zpJK^rx))-=eLVy(T>fG7W>X!c&d zLMFK^Bdm~RYh+S}k8HZm4w_B)S4Wz?o+M|8>t#42gUIG;Wb@J>JJCbdO(W~3kx4Gg z_|stF=40|$m@8%Y$l9<%US|4jUb$BkP*Rx~Tg zQ#6xYmT{6oHb5hjGJIsCd}QaOK{osGAU6fs(LrRUMpl*v*^Ygx(Kx4my+StS1cgj; zS;k9)gk~?xV_~k8;UjxdX9qX`wxA=;c0bkuS?%`$nng6SyfnzhddSY!$QB;2kV!7f zxIiH@H8Lr~N7mOzc4!)8S9e7A#diT@yP(6=&5Sh2mi*|_?1^=XW?PO^$Rw9#ynmX| z>;rjV85_&+k=5z!pxG_|>`1dW|I~qIBZA0QYGiBqOtBhy9<)C9qIlYru!kc0_hYM`X{7YoNRJ`5M`RG|0FHUs;XHj}**=F3b4#RH4~6 zd0@35%kYtn^pQ1w5I{yps^b8}=@W!iqhU3qfwgn53+tn`3f4pLj%a2jmu1|gVAW|@ zQicy}vCa-w{%KtRR+zAC+xT$a&X zAkB0K+eFf{4ehQZ4vW(FR)}~ux`h4&P-25MN6%Q7Y@Sd%p@DZ_^~ zM`wq~k9<1-Yd<1?RS;HG!!pyr8sfn^M#CE4S5ZrHSw?3CE2Lpb89uBZu@qk0`VDXW zG^`b01*nyyVMWrw`kO8{Zp>VxsPz=?@1;eRT$VBSm%_w{<*_hV%J5-b@58!!O8^!Q zdrZf~(}J+Jg45K*U3{i!;$a@Ft*aHR&Cnvkl3bRNuV9_1VM!T2tarcnsI@$3PH9Hd z$kwB{S;}(^TQ#heX<$v(<;IOM8dhHoOLAGp%O?x9UXce@x3df%R-q5;+@Ar<2*R4D zVa-niYvXsW$S+x?s8xQHqL$>cj0+X4n1&@~_^|%0vqR*se>cFy{q)wqYYR}TTEnVI z1FO`7b&`hlKyL+0a#_a51B6=tkq7n!unZqoS07gHM*&#-Vd96fBwqVAWg1p_8d(3@ z?ow;cN=2=A(5q6mB$s8}tYH04!;&(5SQB)1Q0waD0a*Jn5YZs4JPoTL4XmR*SU3Bp2>^=9)@-XuCWX=1LhptdF;OB45)SfF-9Vb@U*fP6U{kp<#v6z^d2f#vvOD zRte%+q?Y8ejC&QV*&3FV;lmo{!@4ABaSr*89uCMb#^eZ&qD!fanzs2K-}R3sKsN+32Sj0SikaM6>3;7 z_f)VXmt{Q1rK0xGf5`)pFqYxNI?{*rr$78Otk1p(z-rL2W~YJm23El2l-7gtrv6ZbE-XYDq53 zxK_csPQ#Kid{`Izu(r@`Ibukm0F)37$-paoJ(-8yZ|P_Sld zSn2{_FG8E^!+J63%VQ9pj)~vm0xyq=jc{S9iLHF5zd`22rAARYH{3|VrTIZoiQcH4K#+KuRT3^Wnfv#j~J)*Ni zPUL?Zgtbz`TFYmOCZ6lT%GI!@!YLsv$z>ULDp*rBEGfgM*1d88f|9T>SVsMIzbBk%Z>VJM5pw?^+Yi=4?ck6QF z#`qpA3hvcykH)|5C$Hav?JDB*oOe<=qc|QvQYS#y-71glJG_b~c zu+G-7-Vz^H?K}pxPEfG&G%P8@ht=1Ib>_i=*eL=A>6rNCx&W*k4J(oc*1tb>sr6K& zqE=@OOLAGpVy?TkhrT2a#J5<64{L_b4r=WS2Eg~@23`_`wUy8z^1Jv<(ZpYRu(CC* zbEQL9M?-*Gr3%(?4NJ=KVSTgN6Zz8M9Q%Hl`07UiYPD)uE7QPwNS7NoZhJ#f>rSz5 z^?GlPv96y`YrQ<&(;Gb5D)(WXZv{ktKOV$!L0I!NtodnRWq7bQzph{{7FN6a|BRay ztnnI_l;KmW35(`kH?S@M3lvW$TlcK>sKtGt;9yM}OyhN-apNM5X}6?e7RxwD0XkR% zk^+1{1wNn~gCV5-M7DnXFaQV(sJT`$MV>yv+IVFY8eb!YCSr-Htk*N<9U~n3vpjez zh7aRuoymD-WjpTv8~*Yj-u;)n+KPgor)Nn3O|J&bcHVsmE6rX-x)1zx z2M5!E9$b<36w)QSa@Ck^{M}Ewps!b?%TA`gjj1oh`Z1)w(@%YQFttdslzkyn&%jz@ zq#o&~?i5Td>L{uEGIi4rlDfa2`q@4KB+5Dv$v1yM>L0is$~Ly2;E|#{m|6^@l-g$;LA6zVB8#nl=e-%tEiXlkO zU}}d8SZw1gKXpbh^+vIFEV~O+AFEPl`KkZ!r~ne>yD;_o2a)0|0+nR@tlQuYac>K}3fNLG5Ozn_ED(>XV78@rG5TKQx!^)4@U3sX08zSuV2^i!7w zQ>)=2kvz=QdpTc>1AoUlV^swOE9(LrGB2Nf1y&p z=%)+=%bw2EzvdK?ZCHNl9X$g`R0NKxFJtPtoFcJ}EBw^+f~i#)k*V{UdJShT zY~y4<_3&V76$@qRz4s&aVJda|v0f{`>k&Y*fPRE%+S^QB$~eDmtnyPo7EHa?OZ_-g z*E7y-8-Mjvo59p7v`!?qF!dV@KikGcKlQfm0VHaEfT_=8>OBm<+QtQb>PLgA)g%W~ z_hjn9Ds^u^_4&cnYNm#%zqk*nD;cb`jkaHSG}(GY0LeUhqC%6GnELOGA=<`ke(Fbp zsaw6&ai;#9F*Mt_*H2v%Ouf}h{cEP~uTo#-r~dlz01`EON!+I}^;kxnY~wUP_1s`; zH3iGmnN0l<13@^y%};%9FtwUTX6iMwk$N=)A-3^he~%_xvI9ueWH?j*jj6L#>ZkqG ze+Z^t%przQa57Vy3>(z6cO#RipNWGh*IotR);g{j|Q>Om@Xv!B{IEPzC<)?w=Vn0h?N zKDa2uPknzd^?Z&7g(lZ9^-~;@U_q{*dPp$!N-ysh9hyPYaa?Ev!D9zU~09bo2k!Y>I+s&+2{DF2L)3vV4z5(DvPP7tzzn|-XHNy4eslL zm+REU@yqg+^2@Z(g1_9rU+z=CJec&$Nd8i&ez_^>m%;pH!@E*iandhG^OqU;#kucq z*f;UkJIPzT)2i#IqXble|-Pocwe&HvLD! zi-t!EThrbcZdyYiZnBF?_K#sBvh&E&PqEoFrl^COQES^mTmrv9CC1J@=E&xzo*d`q zj)@aDpovb&U(wipDUC&wllT#y(Wu&6L7re!7yk>&)3~5K@pP7|5j>e5as$p(VkjuP zXuTl7C9CylTlgwG#VHBB0+&Knk{{*ZM+I+(`WoUjMI=c_qO{1J|Hq)nNifeg>hBJU z9PCtv^TrMlx$?iDt;edirnK)R)xId(haGtQFW5dDRp;vq&SYz>I$zocBcPjy#(K@G zTBVxjobaI1C2UQTy;CwE=E)~$oId;=4&EKao7}LQA4$`&8>a;u#u%aV`S;SWX@5q; zPE2BAO8XZ6uly@M5dR)n>GKbSigCwJNr;z71^5P@wcg&bY4<;zrfHog2AjrMkaMVN z+7t88v{RCr)^UH`q^pzd1@`KTPyrBbliD@(&eKes+sGYj5XT;CxS>}Wkr^C?BPmpp zN!uG~3na^wx0xbn7LEdvwgzPlI_Srd93>~+Hwp|WD^FdqypH6zyVbBv5R7}=aY!X1 zG%H{(5Uaud@ON#wO$HaZDHWMl1 zBce6BDTggZ4OPu(*OX>_ENOzV`EcTOro~-;{)s)9}s&CdzgMn=>?3B2(J)JC6A~oS%ltod#hkv|S%trsR<41(KoJVCeL(bl}oY zsy7#-H87>d%{K-$NcysiYTKkUM1NF*W`h8ET70=J9XmQJOlu8pX+Vd7=pGN2)_K)N;NbL+BY!^>l^WHIMpaHyo}pk2T_)mHBw`FX?0=@Y6qV$uZQ(Ok-nI&UqkH%P#qc~c@iHn6baCC1+oG?&wa->d^U#r#uxCJ)Cf;5 zGzIW^wj|c!&YwdG=k`BBE_o!ks2STT?Z^Io?%qE3%wdZRe}QQl1L|XziA@0_7QX`kd`Pjjl)QlLvv;ktE_Ys>7mj^BV7I$5vwJ zh-=*q#1OG+l0QP0RFdfMz2+#Dz~K>62)6IvGm!OKu+ca}WTTYqdOptkZ++U%I}LHk zI|z?5s#v5tUmAsuMU5r&cq%E5)jYYc0R`}ITTYL}iWd&065Qe2-W0QNditlhSiv^hduviC z)9P;Vk6G7Zi~p_C{-iDbF}s3SA&vzFN~9egK#i*eznC%5qz0(k?rmREYJJ>xk9Y4C zwLIIgF8{Qh32~?tj=)YTFNrRxh0E2x*v@=U6MP7qnSe%p8@~4%d|1}0-^o_%E39ldE`Tw!U;1;ug zww-5>?U{j7)n^?FMF&Jci3uKdj>$YHUSc1C;|=Y15N?cN+CrnK>X}hovkx%J@jYPd zC~aR7gCy1f4g>4D&rA!SpJ6M zy7tVl-3y&m@f$3>q-bw=7WJqkfA28+w;vbp{CL>(&%*T%ezVpV*Zt5QuIC9;4;SzJ z0irstBy$hc*{KH8IARGk#B$H0`d6Cv<>*JKsYTnTUCPA|RM&=X*`O3oXuB;J&+$lD z;>)n&QVB%<+LHLSxuadSmY|rJX|>?sYtVWuejg_;G3Z;-%ePc4pXvk0LC!g-q7C8+ z@^4nSW(swpZ;+EX#^59l7pt7XV(wgvn-%0DwWGFe#5mT%aaZ#oMeHm?Jd=b>M!QC# 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


      &yINQbf&zT1N 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�G7d3WEVPHlz%{8W1e& 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%0AJ?z0bu#}2pq<63!(sCw1K9Olu==ZeO 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

      1a# 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 z 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%0D;0bE~6b!Q3*dL~U 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 =jyHDqrr{nLX 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%0A&2?98F=lu)FyawQX7t3la{yHMMZIY1-NeK@>+_! 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

      fp9v6Baep2AanJ-z607W)^c36Zj0thS$U_^B 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

      X zY2rSmjr!LSN@GkO{Aehj<(lO#x{tdaxRde2334d4P5`u-N3 z!4|?}9rf35BOf4uV~a4Vsq;*FWXY7!H!&qj1uVwQAgBHe5B^^rxbS&ofyaGz2N7YP z*^9u9Ss+tYHg!Mx6Mb$6suFGk9G}^^Lqg|bGheu8WFor1)R30!o!y24r%eSE4aUZU z)>jA*_3y-=Z8{(D^A;6+*Q`I=LC#?dZ5aBqM?e$i7sM14w1P1a~|vU!)F0@yx`&s!}xCbQS*|$%AUf9i21WF4hFvE&`z~*x$Yp$G!lTx5Ksp z44;q6rA2GE+MBKclie+rJt)K$vV{!$(hslqmKzgEkH*kCzH^7gk^6!S@?Si$tPGIK z4|6-blJkS}gBK3F+EU_mmsgr1do&c6B$mAGdMJsN-!UGiA@u`l)Pk?tC}N@_(2ir6 zVNgvXk>H(bdC12Ac0@&q-#{WrHcx>ldU`acpg+L=2noAr9f1RuR1i1{0uc?j`?x;< zQL_bi`7PeHOgWy@X&}uw!kg_6u_*2^aCUmM+6&Rt-(|#()n@*(pu7r}@85wSq^HpqxQU@UqI~$I#QJ>pyQRo~ur5g^!Viv7OJ9Y<+5+Dx9+7GkR3z zdRLSWJJ1n7=7r(MIm=CcggrzN}D9ToW3L%eBT*f{a;aV`j%TOi{U3>qj@z8-$yg~-U)LWaUJ z&0o2Zg=M-R<3u(EqpX;t=+2fhBCfMTc0wZSeCr6=G^vWW)LuA=nG~+#*&GF6WH3Ks=Ctwhz^-BugY9-mbw^EZtKC~2D-4mln@`^D5$C5 zhg_zfq?c*_XjHHF`>IW)jQU_((>y0 ziYqJ6m#YkKT4lL(`)_a?b(;oaaSTGgRgnm5L_#kwm-FmXD@q&;32%=n_U*E$YOP>& z1Wn`Lpr)&daW+XPE=z0N4^>&wU>F~it70pW<=V}@eDrB%#P+(QCtP_7C$ zzOdY&@wFr|3B5fa|QYl$x^ z$~vg}vaYh`mg}l|uJv`%{0BSV{LHlFzw_NF-*-lBw>#fT0A)7h$N$Uu!oRHZtunTn zoWFTJmGd)}uX@K0@3*{qK4SgQ+s_(e-7*<(A&fcljgz=T zqrg6|Mrex-TuWjRh#1=VSuA@QSntcwa^uOc6zv_8OJ+X{#bA)5Hgugc$P`H3OdFk2 zoiE0kN0GZ|XMP*9Sf))2G}neb1$==SUmm)&O1X_UihNCZbEcK|M&ZalQ1p2p>QbBC z3+P=Np{G-wis^SifAx(+W!BOhawz(R^ctvg{4g~U^0#~uxk zV*?5MxRSv7KXE<62roK{)`a99)d-a#(AaNt!S{;7pKUoz`&Zg}Nz zEiqgPTo4&=$goyS=G@t)qQhOgg%P2{Jps;M6IVnIqH(0FvHor<8u%_XhCu`07kGRf zrqOn}S`4-C6v)TcK3n{iisnnXWTDiVFV~0xeeu#kM4R=m5K)xk0w~6(NNb9UT#~z| z5$T;(M;cPyWJ|NCyOZ-r(*%V`4jTbdH$Dz`W(@aRlT)uhS$$rJ;l2V#XT8#hLlawT zD^rXgOQ^UZ&j=(qE8d3AZxOBzR zp8N;D>FSrOfoG?Qi<4l*1x@CFkX$Ip(UD+%ePMQLN{ zN&+W9AV?lQ7--EPR+e<;)9hMP*{0Uq(QwG727wA@2>6U95}eB5B}M0TPvx5lrbEb= zapqSUB*h0KGUhVK8_UCWVOw7&uaZ;V;~@R=pCtMwzfCPtrlvOFJ$lcDvR6+5UHx2cG0yF>HpddrvFqI`)*^!q5r&%Jz>MFwSD*E49g2yG5c<2 zV56CsWi~Tcn=vcBTP*Cx>cn0)#iD9LzhTOAL>VPC0z#FV)=X|L?U+TwdK{Tlvwvu( z)ev1WJr1iSTlw7wWBJzq`>K}wDZd`bX0-!?+!{EX$R-m%(|%d6)fY0v*( z+nJ%u)fc`|neCA!alu*4$dVF3ZU26hsx$w~`AizeWblz#BWwG#NLppAp>MY{N&q>3 zShLD`+(;MB{Qu&Sr9HTV`Y~|ghvH~^%5cp@Tc-RSq z&Nu`Ac?A9|G89|-^OD&zj#C?rJfLwoF-Podk;>%TWtl5e=E+h8bGd<0n5cW(jIU7l z{;jcpgxHrc@$kKVk7e~8%I8;7j>Yt8bs|giih&>|fIA{msmr=(&$fJ|anb-&6M<8sCbV(yi2v>t# z$Ql}3HAgt4SiebTT*knvNA{CG$o8Ksqqm1UJy!REWRNu##sAnh@s*}1>&^&|O#iS7 z{QktNCLi}g?XGShqtnpzT~tR_C3PL7ybrb*#!1ld17UQ$F-SG_WgO7lAFZGk6~Aa$!0OVflCj>8|=xjNcen$ufswy z2NWb)LTMDsUz`&P_K%e_jwm?M5~LJ}mEBiacrH(`7Iwb{@*KvJBz?xxdtut%4Zd!x z={;2WLOrcN)S>yEl3<&0#2(wnB6-~2^FNM>l5-BexFsyt$`|#CvU@R1)7YyZzYUWr zp4mH?#TF8L8 zK6FHwHU?{r^_1OV!Ay7!-+7jlNQ3MZ-fmIFU`f)8MCivnV*SZVdz;BX%z6RJ))qrO zJ~_A9Y!SXm%-NQNk?!yy^@WzGuh)9NB@qmavbQY4=wZo>S#7$Rw8*x#(GqLNb-O&B zMK+Cy8Fl*hyxBZlU#F_j5j;FpUzv0cg>kn?M}qo^yhUI)0dt`HwHOu&38`0Fq@|5j~aPS&8dpL$r%YIb|9ReY@=VI8n z#Ij-ZSPYq-8D>0wnTsG}PM?X4n`u~i(6VCpOboG~?r%mGDVEh@=!qEWXGGvP0!Md= zXFbp1ZvcqnP&GDyZ8XyZ)&tZHi}CHu^>9Xj)<@AAWXSORdA4`^h*yfK^uxq5^*hB`$;~uj#kM8^kOQy^Y2l-<&Wu`)AV8z&e7Aa+UejSPVGJ6Wnisf!U z7vYi?IC{356nw%TK0B?5ksV3+3$!UvI|7KF}3oM0G^)q z2s4JrYCZm#43RpBcw@rqA0Ev<5jGV6Yz6+S$OyVhqK)f6*Y9OU3EWUg;5i6*6EPZV z%~G8_9p6V7F+?7m=Xb;q`3NH3m|Bv#4w0M<=liV$66uN(Cqlv-&G>enn42OjNcx+2 zdW+r&>(jGkky*Pz!uQ~7fio%z+!htbRN49A>3BQBj3sp50>3ks&|(OAbBy<{mJmxz zd+`NGgZ^Gg-o4uJU`R%H<8~q1t1bHWZNwW9S$)8xBb9ac^?DNV&ll*nV)kql@o9*_VV@;bDJF*)?bpF}$|M z(Nrs=DrGHLx5`Qv_-i8x-j1(0x5RGpqK|vf@wsw|{ot6e5l-~?5YymxiR~N7%=a+k zXnYxNMN?0CDA6}7u{DkjyQjE8;QS9Q+ziGXh8|aySQ29H6KL5v&az`XMV8b7$D6T5 zNgWR<&jV&zT4-6apDIgm&6j7~gdcL8=AGx^qeRokNW z3>}Z6>TeV??OoXNmJqWC@1AJ79WA&1N#TOAE&UV{K}9g~+!pKii>kzSg_x&oY+JJ} zTXvq?l5bZn+3#fKABx8|GCG=S1LclH1n-sG!4AZRS)&_Z75wX@9Zmn}6y=gzmUc@g znl_Fjr#hJ?k0v_y?PyBhW;tL~hiIQKJk9jEDwSuU;;AOlajbE=8HZhE zqP0$2CauS{R_G;Y=G4k(D3@Zz>L6x&n4mY!q%f>|c!e+*bn(szlf}8?>D98($B4Ji zvp!0`T)yye>NT5B!d4)vSH ziXnPcqGNaBztrH)HU9W8U+X8R4B^Et=k_I8bF(G9gwr*~tAbWTz|OB>$NPRIp7op; z$DRw;(@b*B+bvDIMdSiIoNt=;2aIrDj(n#UIC&FRa2Imu!G!_0K|N1v1EBG=5|1}vc6VlhLKH-wMtTv3Y+acK(SN&N&8Vzcne2jWB z=VH4uHKAy|PrEd#Sj1D#i)6%QRS0!L=$}vH|1tM1@NpN_{uA8A_`)D4MNz^Qv@JDF z%UdC)FIup)u`RYdn`E;|mL|K~-J}m5rM~eU{|chkYxMd+QHfspgNhQpiU=w}Me!Xk zK0raLSJA6n`G3!ub7toE*iC5h^ZEDl(XcaT&TG!hoH=u5ex7PQ=F_H?Lq7~(qg@mD z7UNfHUQ)VRXR%_x5g2DL+e`@SN!Cx_DYqZ&LC-Aw2&BO7tH783JMqi?*n%JbdUi_q zid!qlAaVmHZ(_ICtD zP4*EGtri9fJ1dLu7Sl-2PTJvB=*1^<^vCN~y$n?gqRsFvEg&&l5{;zd1)qpxlZw+5 z73(VI6^TNcWNW5~a_r(#N#9C!i|bVW0hJ5V+dcF8gfLDAi<5QMCGJ8+lnYz_raI*x zOE2e}A@>oHdQu(y$pm+tc~~_sL`{?hsrX#IitiGx(GtG@-dAYjAp8kS%tMJne2k>| zQ*qo?I+(7RMfEDqK?R);rR#Vb)kc{;t5h3VS26EM*03g7GoMRV3LoFMhm01?YASI((Ka$jR|-sD0Ebkd>MnCR zm1t9ex+Z`smkM1ywHk?NK8NzOg-BQ}?vziB$?xGpbpU%va8aaBtiQBX%1g8_Mk(dB zpRfee#o8O3eAUrX!TO@_Pb<6$g|sKNO)ny^#{3dxobYT57xJbx0GQ9tkI7BU3T!RF zgiluFIxD~VY@PDEP~Jc%xVx^(6;0x6h}c633EpSFf;y~K!9uDIEBM2IWgTRuz6FR@{ggMd`Wb<`8@tx{__V4F7FX9gk1o{ zf6e~T8--3ifKvd_K)E&6A^GCam{TGb3dW$&8GNiCNaq3#J^sBh#Sk~3SO4FJ{4q3Z zT?jbQ9bZxEw*y})y!r3CHP5=qwISu21+m{R!|w(<#N|Ikt7v+RtE@Lr%jaf~1WZ6P zPrjK49e22SE`G?AV7l?&vtlRKt2MD$;QpSV6Nb(6Ki?3glfx-Jl-YOvyMTt(pm?uG z0kLg4F@J7MMj1?{Vo`wi;unO7Aia`)%k1XYqW1-*v><JK&rNFWI4+Ko-J%{a`vzr08695je~zf0r^B2=se?pZC1#Zm8-N|p7NF1 zP!`}KfMrC=aCsFrwNKrd)>A9y>4N*@BV06GSLM{ z^j!MjZxX2!Lo*7XnA9SGG=|7Cl9L)Cc?%(F2rBC~D4iSqj(L)DW?j=hh#LwlfW zXmp@hTG2DoW0s(h^&gZCrIfu6Wzw4#(%c<|GB3C@g2|kK-x%8Hera&FD>%1Ss8T$M zHoH48H~Il$MjgRu$pxj|z!#|-%`}4#2X%`y$y^ukkd>3fO3v(!>?)6~5BCu%D|Dwp!vLS>H zbIcT#5IKsZbeQG%EvO~RV9T#VxzdbOd;=9sBvSg;yOnmN_!B6$^zBgSFn4hY(T}AR zX)bh!$$ZzbWLqt)3wk9$mCKo6KLc21d?vs*eNSbX3Gxeow91Tf7$jMBm_GtYG@Obr z0$lq33<5=2#Kp+t>f zH~%OmRwLjy1K19#7?gFuNW2d7RR*GQrn`m?^8m_3+`26ndhmfCdwFLA|9-%;z_S6q z^d~CuY@k04=+y3{S7mHp-UpC|ed$3j{;3yChh)@BJnR@?8}y*@+gu!@L@mQI=DH{z_zKgqr)CD8ng;9s!7T zvV`9hnAYDayA-og=XB>u?WeUZFI4F^ejfS69p(bS2~XtfH3t46fK`H-p`UiYNHR0% zZvg7u#>Py{d4MD%-xV*wk(=9Qzspdlc9>OMMibU%QsK#iad|GkQ$cP;4hXoqsg+A@ctl~Sufx;;AR>h= z(S51le*(CQHXHbP4~mGh0nR?8qRs~TG(e|u4jbt(A0xx;Y(00Okp!=?B z;hzbp`H#Y2T{J%igf+#wAW!;JLvE}@qX25ej)nRlpjcsP#4O0je>Y;t!u%Uxtol?t zd}iHY?m$JXH@Rk^ZFkzAJ(H1^QojZDk^T%DFZ_!#me#ZjwQkYU-8XN@JIs}+6Ru?a z!<-v~`4eHE3F!Hc2!D0aJPZiiopnLx{8c%%2SY9~X|Sids#+ecbeOdO5nf<+m|hmv z1^p&KmG7Bg{{dK5?@WN-|C>rN6J+LpR2Yu@jL546vROo!e%Owv4!}hvY7GBnz{kXD z+~6;05X#mV`g?zm3D_9C`5$WUHjKmpvktSEi|s-{-3=#p6N*I602DL7)Zd1Bl`9qC zApo!(skL8xRQXP=o<_AD1mMP9aP2Tp`(MYEbZE5xGSn+qsQ@1WK&ahl^U6P!tJKC< zquO$%1NW5_6YMZwK}FOkVgO4XOYjwgI3ExpW3lS_=1>`q&X9u}rX6M->Yc()Skhst zC=ixp07F!&xR)@c*8B}M%tExmtxZZgTK+SXTapV{i>02SMf5Vl5Z0OEz##cc6nJ>f zL5>k&y&?G309W>A1AiyrL%lUbe%+H)l-Z#EDWI)@f#VBNJ4|yXE>j%hQb5GSh=cq) zKtj&r^|fq_**L&^0bu!)5I8p2ZGENM`t=>=cGO8HgX4usfKw0l45mYL1A_TWuU_)wny<|baT@epMqUNeFknY8pMhL3bOtD(bu1l7^5awj$+ z*ip~)OzBLLhVE>@F@ueOj&4zA8$rDsP*G2HsAm`6-p4yM9p*Bwq`{=ihOM+N%O_DQ zLPe|57XFxBN5Td#KGcgBt*_UjfEFz1?7&w%OGTa?{H1``0q7k5>IiRQKaM()PSz*# ziA5@bIqEPkP+g!^0Ad;HLL7OxvRxNs89>CgV?30&hWf~HR~f0=9@>jKwf{)7g-O^W zp6z9EwJc`}@Yw*iBV;DD$3918n-S@`0M*`5w8Q*y=MM8))TK*ufqUpdVIL!svjtvq zM7ktNv`?Q?N0KDy8347CU=2I@#17Mq0^vvoqf~s8kfzo=fSPcOOM{6cm5V5%@1We0 z=;X5fhlw10@6{Jg0A`-kO!fhDrO z?H`)6k5cV&E@+1-p&;6AQt?An#N?NnzoI7WP$~ZM^J5%J`A<=9J2cXVVes?N7sQ#U z3;Gs-#@MP0`(?m}jMfEw_t7!d>q345kTQLF`zs)6zXmVj5w4^ej5~+#^3CrsN4GlZ z{K3F_+sHbe3VAIcRk#^IzX?z~amD$FqWs`7D%uPPrvPXra|jVK_1~rEb+kFBeaWXX z9%b<1h7QvSD6y%!xa_e`9Rzm+f$CxZFdR8o)U$uhn~znk?O*$~Xs;_k9T{H>kQtQ} zo}@%n{H)_3!sQSlC=ueMMFsE zYm?8*cbGo_L^PMG+l6&LOy6O4yvS?qaW=gfO=IIN;JZG_@p-DP$4T%PXc!xhwC?d| zh&s$O=Q|y^E_Bsy%ko-4CB{(_>@xt1T0;`%bqiFE2J|KX6yrJk+|F4mI?S&D5;yxO zjN^XG@hRNbfqe&HqaxG+ykucQjyjO<1!S5qe1EgU+==Q`LAc%tvGm3DgowhG0hb~` z6lg_TI`dJe3ZPOMuOh+G`qLj_5E^9^GjTo2nqXvd%c8^l5|HU)Dz=3)q1d*lt_o(2 z)y*2ipMk;7=}~?46NWDOh6bWG$1k2yT@70QU$jn)SKBF$%?8c? zf#waB)S&Hem&~M}28|b-Fr(DgkMA%a2Ix#8D(nvc+fW__yy3)|m{-VO05WZC;HEC! z)9o$gu z3!6_>T4Cw2C>6{Wt3CgGGXbZRe;nnEIRq}9rkKOhH=$Ja0PbLX=kQP)MJOoux5IoH z5JE$@%rsRkTu=wT<0YP{Sv43%1Lk&C&>LQ=V$2HsDu7%09J`z*z`qLBGm-9#v?luMXj-t_0t*5`x)>Vcb(fs!n)QF7HDl#QH zU0KxOB}#|b1PJCoz50bOQ*P7i*P!0=CKStDKx2m7Xoph^<(Mico>J^x0=B!3gjY6w74RkGDM9$YJU*=c6=A(?2bU<0e8? zzxp9mhxEgypI;T@BCPx=Dx+vEs~zUd)d`APHGry+nwBp*D@I8x)}kUx#b*Y8fg07T z{23}kO1|00&W_RYRkx$c>KEI{VceZrG)yn};Z2Z{HoAPXny>nIm?ynF$yFox*8o1j zX`=>TK!Ygvji9exlaQzp__qOG8|^C(oL(;@p~Kv8&Y_0BBEGEw%p-tVFcYF<)OZNq`{$c>N{o&%Y?bUlQO|0Pvct_T&rIuigZ= zZS%z;XTJQMC=WRD6`w_g=fsy^yCuSbueb>np0Z3Tu&uA&w7A3kpYD)+tn$0440wpu zK7v}$NUZXgJrQnVwb@=}3C{#hm{-) zbs$~}2+K|#fCXj8S{;b>fQYe)g(>nK`VMnaCBbSE=n4Rd#vH9A)W-o8V>t=5cUzL} zB-HJIO0do+a#&ZF!{_NRAFrk`9tC+AAW62PFh|x>n2v%xbtH}DD9nj~u?(jk33Qml zMwQ(<0Gj|H%+`Up5)f9ubpT4+9iw$1t^tH))8(`d>`=yB(fd&(thln9P-cm{qHA|L za<1&ND6<6Yc5BZr#cqH92Yw4`TW|*oEMEKjx=S5WTVU{SA^vv|{fBAh|2Hk2{5OBb zBKte`|4oZVYdB#lBN-F#)hxmbP>W=HsefNQ(AV2m*=3g14pYoc17-6Zhxwec!>K5O zi~GYvJ-y}8o@(E&MZKdV^d99wc%U-BsAr@+T+Fx4TkuNCk)7YRri>T*rss4ruG5dS zf19$~P1D{loqh@nv$Ltf}zs$DL$tN1~Jj?6z?mqk$iUiq5^zcG}jnmvN*M^6+=decF0o%Vbk4W!lsU=zmGDY)MA zMB#*KjSH^-d7^MGUUI52FR((NCx30X?~m~CY^d8!w_v)(VeHvYb@rdIgfUJErtzZ> zw1fIjK9MmhrdPKfD8{^C91~3Dm;=U$Zeb=BRpo$DV!|uf&QVTEzT*y^|TkJj-?6(JuR3{RPcc0+f^r8cmztE2m zRbiXy7ECwIQ;a*Y9-Z-kcuBjgkK}&KJkpv=IyObYI4PK(w;;qg^5ZB*_qzeco*_JK zRva;{g6XTr3r2I0x;}O)5)O23-i1IzPiqVD_#}NEj zw-I<-D~cd1C|h!h5{~5w1T!a4QRu9)=Pbv*rdtSIUyoo4$04%l212n;2)09B9M!{t zilIu+50vrjn`sgB>y(VwCO!#QF}W0j%=wF2YT}S z#pW?#cV&CXHd?Om*Z~c@a!k5jdZgnJL;td3C@ncxQY&6sAo_E>?7OQcT8>mS&kI6(!d;md)2l{^{3b>0v% zwOuuq7{wD;=DxN_Bw=U_O_oo`SZ06=0`c-AJ4b>ZNoQuUX%#NsbCPm{uo!Rpfq$JF zv6))iP@zOLyK+AfvqM=PMvbz~zHIhloJZ`$in-y>++PgQg=Rb}lIsDY0xdY;ElOYQ?Nv$h)16(h%2V~iqv%2GvK7WP`I!f-}o%_LEGBT;>+>gp!9;Sh5LT`A^ z5Q=Yc9h4m@vz&+elHnSg^qky%(qT!t&Mj>%m3Nd>cP%2?hgYbG2rCR0`y#iNWQS1=_M>36H6 z6p`Vq+N!ehJ|R3WJX3g&(%M~JOo*DDdOV^nFrh7#9()313p*@0oH6Z!X z*0-sOXA73~RPkD7)l5jE*RE1l`tXKq(_W)mKxEJ|qxwrCJf|=`T;5(VV}he?wcU(cY>ooN^12cM;O!M)NQnmKqFbXK0N$K>%# zWjPQgTXU|2XO~kQ%A`s*BG%Qn4B^$SrbQT8yG9ub4E1w?q3&#Cmz~}&WBj@fa!M5y z`ruerRp_;vWO-Q;pP%g#CeJ=cnZ>~1DQBY}QLNC-&df1>I2hOMRGPuGHQZC%N}WCE z87EEye{LYJxSKu9{_%b;JupBzH(kQ`N7tzUwXMYpI)juOS+Q)fodv_`!OoPye8KZV zS0LP6Uidfrl77nQBw@RQX)$X02ii-+JzEQuq+%vSuubb#K$*9+`!j{1!Z0z@<(SFv z5Z;`-WwH1ZG{RRdQ}Y(z29x$LoVO+6Rc#TN3z(?EsaR~fg@c=vlWYX7OdEbX5vI_5GwPOiE#_lb7(GO&;XW-KVOCD&f*U8u&qu?{_F*-mWXZuPRN?!e*w01qy-uQ%c`36s>B)49C~v(;MN0Y|=nkhRyAn1#@v_((0e`^U zXof*va9wNDSXm=p$Na7?8qB* zQUEh1B<2rw8v56ivBM8TOXmhV{GuA?;TI}=8<#-gZc?&c5U6_w&BSd!Z9vvArR4F! zW;-A?rV)|$n3PdTS~cw=;bX%pDR_o@f<^3KK1_-GQZG*urexXJE`J}l;bcQ)r1i0_ zFZHtYdxXr-)5+;njTJ!;w0PEQ@heDOa`M6gjR}@)T1Z?}7Ddm{@v?aNi6C3*joNKQ z)JQBVpv_`-3(fD$j{C<^bG#lxxjpUrHW#o&o6;%aU8yLh0N{}#e88?BN!a|UhKhh}OM=c@ zkgtpi?EE%_$IKo9`lkZ(UT;j;%vyJ%Id{wnalR9%HWfz(&m0=94GxtDj2X3ZJb8!6 zli|(iVD3Lv)wJ`fOD5Z|h@dq%Gt$T_B}%=py$EljMQGi$Q)zO@KG<6ER6OYRMNv_i z!Di23$O85%%D3z$(&n%zQ?C7_@bi;h$`|`a-7aAy%7?Q-T`}rOjqY1pF0Cq?X+hk6 zsSt=Ftlx*L)}6C-bJzNH%QqNp`{c_M2gUSsoTrX_xfn7~9w>|yO506~G`;w8mD5GK zRy&<%0GS&9qEHe#yW8)zwib4Q1&z2U3oS0h5$c6DS4(TS>`779m6Vk@ziqu`kbjwO zVX8-&o2j*JRuS;~cB@(n;HhOre7;aFJywKL%he71`d5^beS+$b5tIiP;{z;2V3{#j zS|)bN-=-`vqb;Ezp1jf&R2jmReMS=HWshKbRRrT9vi0)91nn&=W76OwsSO*kf~_c` zqVy=5nUKb2k1Cgrhg>vKR-06L(0-(+w99DI@4Z@3WSn&cHn*KDD~PskZ%bNRF(4fX zPO+>VRV-}NLg5*&Rc0%QKnM0Idu-2cmR<}Z%B?9TyPS7xrbV#*<#o#cPCHyXef&c9 zbgOf}7PHIn{INNA@JefjnSSgRctJbYww{D{`ueW?(DSw-|>%CUICM7k=>=DSnztQOtj5n_J$Z z?1pXOEJBCPx#?9hA+Rsll6$NEE^n88u$Fjg6f&WctVzNA{dWk3%rZi{E;r{}PdD^0 zWAAaX8hliT{ZvO6Uu)Iar3OjZ^jdN%X4YaM)PcX~PKgvOV8(EtC0Ur3-uG`gCQdq@qR9L+Jn*X0z z#i-z*oOj7nn18vM5T?z0V$27|zA`F%E8CyBSmkyljC%9G$f*0U!y74>DN$kbzsFR0Q(Tn@4><*~ zDq#!3O5&%0)gEpu$5Q`=78Egc`f?=aU9^ZWU%5_%YCIp{V2`JRZD-k;Hi48rU~Z-a z*&P$ADGrxEw%eN=hi4J5b$Y@_$nsm4jpnx&_-rn;MsIncJ#Hrp3WG=74mPH3 z=nQ9MR>^^VZCx_=RFY`5hv5mk%T3tU*fuAOt=k(Ll+v^}sS)aVykx$^OoyHq3-STT8h3F1r0I|wRbkx~^ED=CC%c1-(j82|&D%2gaN3GrK%iN+l*I_J*T zKJr)#+k5h(_%w%^6l}v^R?%olLdV<`^z|-1R#rbKvy)50Q)Lp7P!6Gd_Jv?ko;d5{%-wv(STG&_)0 zi|AVkA*n-DkuJSkyEbYtE(oQ*LWn_J7BekvSKT_R*=2U#hU2q>?@`hk*Cp6*+g~cQ zh(Yn*A&bbO)4yPEo!mcJA~@artJvPISTlBt9n9&35>y?=1UfGOfkZRlk&D;6rN5^} zmsQMHtlGcv)yJoP&F}!bygQ3@a-7-{r8Xs0KKivMikf%Vk^!Zdw8&GQ5W1J%_W0<3 z_Pcho@;IagwLL=RyxX5BYL7!&L?KMK5Z?H0VIU(rn^mF5fFT+$u3V z<%cTIpe%|yt}=u6B=ueJk8IDCq7xFQa)$THH@hYBRbxe5{hMesK?2`;7%_#I9iC9frTAFjAa zF+0Knr8+Fk35C&6j!l>crVB4r2v0=Sh@%kd0)d7*qR`o4C|gyQmEOZ>^SNcAzMtZ} zR5H~&KP>w!2Ut*<=7a&$|5?w76~kTfchTG1f9Bd5VZUn^0=F3&$z zLIl-Hc1MrKVO$ZXu3Mi+%RFcKa%uabG^7 z=e}&tXnK`)|ULN1M5B1kZkjGuY znV~TcShmZ*6ZSLW8*k1z*J2P)Ou-;8*2BpX-iD-s)ttM%E^cfJD}wR{MV*Z!a{gf8 zP>P4fiB=QRvizVjM+eVDI!HULRf?Q<8Dwy?X$R+zMH{CNP9TRM&tDS9EjEM7RD@i| zL)xY3;HC0NVF#kgqZQLBpym(CsazHqa;r?14)&I;iFXDesSOnh6{Br$bT|^JCiPK_ zFb<#nJ1I#1^sqA2hhEg9224H@u1;p%hcvP!j!t0a(df3@ek7e*lEkuM%sxx?ZSuD% zBK&@09WY~p?vy{OQ1+mt>=vl~r!$O$p>m#Av`#_)89wl?_se#oraOM}dXk6>tOvE52JG5kA2_ zLfc~5cc5}pq}yev`N@3Vf?afo#cBEj-1~{Tjw*Y1w0oa%9#A8D1~$URxh-N#hf^uAHv#ViRg(D zo~HoOmfUNfsc`fg8_=ig@4@ouP~Tu-s4^h=qRC-o4H5N9`_Iiw4gG7%)WYU4qPGQ| zQ!3-C4I9ndgHkF}3kj{OuVXx;*-#9MKfAe_I$Vv)kaH*qbm)R$c?|GW2BhHHq8J%D-WF*uSXgR^# zQpP|m_9xCIPQazgXCU4Wp#}5ifj^H`9MbLi3qbDQtf!>7a z_uwOl@hJ;aG=1QJTDIhz_vN;{Dzg_b#>QeZCG`L6&_GNYiQtsbA~9~Qbx3fChu^`b zByod{XX{{CJRuwpT<5WZ0vh%aPrqEH?Ai2`E-C|38>P$`YZVlKR8)EgZqThpQ70Aegq3=>uoDdprcG?1LHmaJc-j?<;t)GF%gI?a z=J}T2R{7h6ge`EbUd)ccVt#NLg0D2MH^i(??^&h3!cL>;-v0va-CBwIlf5SIY-eiy z@RM7lyUu}-+D@JN z=G^zX;`?gF)P}6GbAT25lnFudWrvKypvk7RK@ui5K=)=+;Q!gGOz5dpJ&md z>>VB2DmRe3ss+A~Y^DUwmzitXVpC%Ba_52mEmu2epDBwI4iW2`x+nJw~1F zm!z!PZ>tNj`(B}`mxjYK-#cbZI6dse%CTZt;d_KR4on*Js>&6lo7Y>b;@b5Fvq&ghv+mtcQbsl-qw%-%*Qya;&y z0J{gG-0Ij$p`6Fgs2U}`Pe>lqE&@KWq}>vfFJm$0@JPE*y46ukpWxMRNy@RIFv1?f zq+n<{MR})Obl>-)wqTZXp$qOK2T5kcHm!#>b!o0zj+;1m#6&3G_7XJf$2+R(7Ip7tguwpt`ur1ukwVbSg;^csG$S(T+$|)kSGRwjiOnmO9&o(rV^I* z!09U_>xCv{*z8w(hUVj`8~BYpS+xk3%gSq$! zx$CXZ1F70+P+&uum^wp7@Bt{t${t~1?B&V|kG3KA5E4gT9R=~S8sn#)W;qq<;pYhQ zhR86kY@DBD2%?QU&i&_)ofm!Y>$n!e=R*+_;xkDSc$kkz-f{Mb|zjLC|w;Zp`zwE!|}BFx^zFXa)#j7R86bUe$RO-EA8@>WqRI?C(|Bz0WOQ@ zBqSQ_%m&EBmsh_hYv0yu&23&2U%Bb98Vv@_xDY(yd=(z@5V7F(HM@-Js~28|Jig;I zV$pO;^XnCjhk}y;O54nYRQ+g+QsOU!)-EL@~v(DU8UvA~e zFeq`m+D$i^e$D{tazLIFc$#NAjZX_34-F_gd}J0J(`K>nMJKo$eUL(W3j|x--C>U( z0DZEr-zQkt7PUVkqdK;B*|Q6OAQ|5fcoOp#VAf@)2bahBfT2q$JbSCk!AFliexL1! z5Fgx-SeFxrA_Ml!yHyaqbVv|->h#?vTsF>|PO1Bc!ti>Zb{;YSpM!4a8#8RteL(&; z**Avg7$?`&k>$Iv>oQZ){)Vb@Lu>TCaY676 zgA_bCt+rSuq;<~@!IIgurH723PF*!AWA&C{IuGFM2N)#o%zU*4Mc5-K+9=xeURrCBh;lmXSW_n#Z(T(G|kgWXsy4h+~`p+6=LNmCedMH!cUr-bT1 zUX{WiL2WElhcWN))1~Is7HIw3l-1e}qze(q^2#Xn{nX`-vkcqoMtsqTD((#`)SRY+ zGGzAv>i$RxUNJ-2zOW49qv&rz(eN%zLj(4i0aWd|!e^yul}zPVg;gS%uswE#XPaYm z*9Ne7hq9fhjt6D6-qC(4o4z9VzcT7FN{(Xos6sBo1sm<8Cz%QuRxT?c`QQ^}%Agqr zRML_L^2-LOGuSMwrPfTh^ukNup3-#|UW~d^AU^yq?Kj+xE^z`ID27i__7!}27}1RM zC7t-_^nf!mzBjo#_X`!)riyhrF?i54?bQ(zH$&oa>2^4#JWEdqiwmz7R{0?dZL6cL zzEPWYY51h~sjLHe9y5cvJI<9gh^5&=-^RkoQBgv^Hjr7H7C~|G`xO;M^j2V&>M7;< zFaw*6I^!_JM*buR{?UCn1nCxZ=l`3awck={gP%eyZK)Op=vchkRW1)L$F94Cq`q!} zozymVQBAz8#v!>18sacXKtC|9-19a)cmts}pdQU;_ZUuw67#r65f?o+?zIhI*FJ=! zeKRgdZ~LGk7cF-?Ehobfp-wCw?g%p_NH%@QDMWP9Rvan!tSD|b-BPvU-vtDB*~zWg zb@$UbAt~#wQMsiDrc6_1@RWhhWb+W`xMdGE z$$PQZ6tn|*8nx@oWxUQ)pil7_^AU@-_hSiJJut^qO+`Si_=JFF;vE=I%JlLKgKQOK z%^qp|TPFB62EZ;60_&xAYLbiH^&)Xwl;{5Iz{_FsTtaPuEK!K zZ^cj%7LNIhDoHoWo4wdp*=dQ4Di_6hYNlO~eDpsQnSBBfDpZx&%uIa)r_--k?3Q=A zkX2l>POxUz#0xf%U&@(n2+<*xazd#8?ndDv3;vt-YA4odh8z`vf5sP-d$&|zFa;+n zZlyr+YA@Li%;xM^pcsPaGQk6#eF2o?qPdnQW{oJD*&31tX@Q{LL?}<1h1_q#MiL@h z*=wdn_`XK@4`I77DlDKGm-@qRQT^CWrf#3ZX8fepvVrB*0#pRY$IunV9CSEp;cR`$=Kh+^MWr@^nxjlZA$oGjM2edkZhkfH1rr z#|=mIQ5M-{Q=fLZ7i_Y2E8VpBn)8HPD*|(Po|cKdw79|UdFFrymRhiGl+WU~w2va9 z`$qC?oHVNl_*cF?L$iVW3Y@#(u{;61@ov=%AN2)B8`yfWZ>V5rcF5#C_+;99Y(910 zBWTXO@qDWrFMx2e)=UZu-~OJmLVd@kiy+@UiTo6f~-Qq!X8?7B)u_O`VFO)f35m6q# zS49fW{XZN`>lCkvSvkja$di_62Sfz~tp!>Tm9^7X@L~Y_k@Jhppvwygj;!f=mZEAn zq6d4hPuwRG-1j4uL)&?-{98}LM|VKN9t#OQEko$b0Q;qkOzslYVN$NETTr-t3cy%8KX zVY^bGyEyK$E_FUzS6pa+xEiRFlTCxE_MlO zrd5!i_Zw9P$Cl!|_PobV6CKZHTU;%(slD4WOws zIsg6{n<8XWtPOI|0cpD3(%`e&(9`H0U?4LoRr7zRdZj>FBI4J^&=e187r-kXa?J1p z&Y}0_Q}=_>n*1b+btu#tJZ}SKM{SQ#`Gcb-VRb(jV%BXB#<)j=Q%oGTAsw$!s*P3) z8+H^bBW9l@L3?pK%|k%G|PGHli7tu=}&`FW^ACq^l-h| z`_eQ70E1i?&?mTh)r*|2vahrmAMp+OLTEbP0nuh56jX2TW= z6>(SFr3dHyU3-!*o~+wpy@DWuLDpoC*@Gp;J}J)#yY#|}pVvL%YN0sXJ6c8LGN9cm zG~e+LrCpMJdbi&`kK(YBLO*fR9ydj?8SS#s{`qZuS9Dx34*jpgT-dQ3CI?#&24x-` zl_fdG8%JTs23*wSB`P?jpmp!*7l`l4lNUA|DY*j?Ug&PAu<(eof=jdkCK|qAYGz!e z(P7>g*Npk673w+ix2XaJBdejF1NuWk}l83~Rr z&~Ds;6wDwp;rgNxa%^DCm|%SMK~E&+z9K%{4%cW*uwL?{G!>)?+}kt6A;*fecyVT? zmgM{+M21WodfTjorH#`@+NI$e90D>{)mKP5iomuWlUBc-p*2)!8|)LncW0GfyP72l z!Zd7?aRL3CYm&|(8uX7M8_67OQE!&NcCaJ~z-GV}H|ZA8yIhlcTxp9bfxPUgA_tzc zkU%+%6)8!Y`K!gSJ5&T$!^3b17Iz0vVE&euEcQw6@m75wWzXyp2C7d}M%ZEY7&5&~ zc`&CqvZ4BPbT_+d-{p9ZzFh62MZoM4>~|ibRB(kHP9#;jlNPLiI%#CWYJYI%1F2!il9-kj4ZD7&5BZgR;8Jj-K3O&lP@C87wu%uiFoedn`9 z3Qmi3w{lq+1ORaa2l9SR%W{RwH}hK-uPR3eSx6g5Cq`+!;5n(ZqI*0~D+MLG0WUQV zufY+3X%%ecBeWlEZd_njHSdgipV4NC2HR#{&al+Wau!tt9lKf;4CrNHkJO6~+u=BO z+IGe%M7TE<;rRF?m2;`FUPr(xuRnqP7VXnY!4)3rd)I5sS+v7al*kSwb_nf4e()$| zBep9^9#TYglR_?;`cYZ#ThG?Lzv5z}dgxqm+BV>c!`AjyW6Cq+* zDK4JOB5Xx#D5PoHh0;5e;>>2!K(Jmse|{!BsByuTIacJz@>p!z8y$#IbI($1D)PKT zniFR1HctL*5lYW{k!nspg0|Xkp5o~{v)5%ZcO5E%Q{P5$!I?N)-8B$d$HgT!9i92NTTx|Ka|#<)xiy>2g*1`2FCQ^M!*iO zMZzR)3QDuz!3`CM?Nc}{zRX#qswG9&2w*Yird_x_c1ar7b|OynMKtt2SsWt zS;?0P7<0_}6Wj=EJk4N5q-&0R^|oD@>N`PADz1?l*){qteUCTnG1?cUO+_%h?ZhVt z<1(6y#{}ENN&ABpx!V%;FpA)@Q?xg>B2$V43|>S`4g(%rLAcu9ZTBAy=0pzl*>K5^ zzg*VrqA2QKq(wDsPbh!pRLj?iFH!!4nPB73%yc>AnVR(~X3d^T-0Wgio z5Sf(R%uZqJ(bJVZtBI~4`Nw9Y_%Lf!H~iE?bM63hZNYHe&;D73dY;W0me*V4Z&QRJ zFDUX@aAAj@#E>_dC#Auq9U^R`A@&|TEcTrj4<*oyt^K)2+W!7!ii3h+s%0RwLraem zG!pJTQ_mlE4ixj|i&Ogq-O8nkRxS?*(JlAniQYeopu&!)oM&8Jg5#R~#kG_3e}HQ# zU9(@`~1C6Eb#W8?7evlZ1>M^gK4)2ne9prz23A}8v%{PzwW;%es<~6^y1>F zG=FdgG`(BmXu!Hy<34G7#%h(EpDgxkUR-QdjNg%EMG-CTdsp`A8yVregrD4=Q#pO# z6}IvF1g2A%_<}NnB&weSNfUx%&3Y9U*%#m@ z_)KX9L&5t3$(yxug|@}LL>ePR>xbzQ{I_n1(g~jRnt@IXE4_3kxNh7S#p!RO_%;*; zZ(Cv}1@!IbY7@Ndf&H<)ygR)<_qlw0%Hq@(WHA6_Oj;fBN^Q*%5g-5X^!Rgfa&5F# zz(4Jpakk^2JA}&8*R0gCJdVmJwzEtgH(!bVgdlj|CZW$c`+Ah+8xC)jRB*BTlM(c+SlW$(iCmCZ;#k>oD%wBpj2+_mN8w5&wGoI2F}3+`T7e| ziFgI3H8b#4jwZ5L(mAmkGS>>Zl)4JKivDfC@|B)|MheS43cUd;!2gNuQ8e1+_ zT6Tc@m7YAm2qFZri}LA+umOyhkzB+Gy(RTeJR^_634qqwT7?Y{(dK zcTJ+Q{%zROqilIZ=9(T1;_e!IDYC+S5-a&EvQLWB!8~?0vSjB^aio2-b?T5-O%^O z7ALjbe&$waJgBs?pw+Zj5qZhxEg->`+owT!@!Ka&*7j?kkUd=2XO|kn!#3(s#W~xQ&E6S27(Zh3cK9D0NRvsQV=Hdfh9AOV=Cm?GwTG z{c;pbTg{h;DV8@aq>rp<*F~2OBF9GI zd^l$mest*_ju5|T6^z$xQ{e>HV9tD7?s7!C$XlSYjwkkuxQ|90Jl$=VV3sFPNm~3! zI2e_V8yDKktIC7CkR9xgXXK$+w!Kw{iDaU^FrjZ>7xDO~=@JgsjwmPAfW5_t2?Z-_ zl(Sl4o9ziV9T8hmMP&J{NGkJ@VW*bjt}dDL!vrv%MMw`(6j!_d`WPUlYch~3QU0vcMKP$g%_ zObEKS?hv#IurjSSV^V$ePNj~kwxHgZTV9Z~*o+IV2QF3aX=vhsKEw!qTJtw`ZPH#)z**403JNg4pw0a?H>G8GTgsUB)pA=@ z89YnD8g-iSt8a3|^&_Wbr+v_VpD=j$Wy&bFK2URa?oP!_ua^MvCl<>hFPUlx4N0)`jlyXw4+=jWM*92_g<-ZB+GP-?;+$R@i|*p?nAO$u%8$XK2eTXU(;T_z^ZYw zv@{HC1~J5IrXutne3jB=JGgg;CkxvqQwd5+h}5HKdWU!JNoq2V9l0w+X!}Gkj+r$m z40`1Ls1|6-;$hUBYw3<}L5RIke1mVFu+{n+Wly@?#|!OYlh01ba>F2sCu3wz;0x)p zSGM1zQS28gl}Kl=r@WqFzK+)|0N1}(*@1Fkq8EB?#d3YJWUtA)j00tSU>zHK!85J+ zJYfVB@m?ma^HR6-bwV>6>ExgVgYOZrZz;G37%kzJI5~Y%^@Ah`zL!Vl$nWk=OLgn( zmGB^r6@w0x9H8dhht$qxjc#!zo;Yk5$c-Yq`VFeV8sAVFyE6Bhm)X$*qlP6RS65dv zd^nrE+0L+p9f_{6gtH=ou|UBUH!tYpD7pm48LRQp^tf=f`Ko|B^lz7Ajzczz)g!^2 zK+<(fyFbsay`LD9Y~j4JnCIku3I3WlTAr?xzxb?tm5l4o#A!1(#bz0AtxgE=5pNQK zJj)Da!{Dt_`-VDDeZ}oX+)Nph>c7?jb6?{&Z?@D11lJz(=Akf z=BUZTx;kil3k*}HVWtIk?mLx3yP_jYP#5M5&-EC4dapdL4(D(vfTu%SUQ4K52z=~n zA(W*ZbAuLai)KQ=AJ%3mxX~T^qZ{)!NXuRAgtdLU*`MNK zNouEABayX;$+$u>F*|6?xZwQYdsIMLcMne7#Shy|2<+s08@CxKTWu)Zhd!kI!&EUb zUKQL+vzJq^4PN)QJ&FqvPDtJbuFkz(n9EX(HEAT6z#x3ZObE3vDpfua3*rhAMM|n@ z0Gq8mO#x<7+8*}rDk-D(diC>Ok`YYARjX#xD(zP*o}i;eNnKL)H3iAqY#hj_Jj=@s zJYAS6fji{G${K}0^?sPgZ=qWR>gE}sMeto_QUH(tsP>tSLk3Y$JKuQsB^svl9C$rY zj-=pQex2e?TxIet`>bxztV_Uuc)d33E9a~D>@?ZY7lQA;V3$QjUkr-q%enM5K>E}k zPhzT1oK)KyNeT`wI>LVZ_4TZk6dtrXfL0f2ds5tzvqnEHoPPF`+CNd8Zu-%^g%_JT zq1uO+z`JPWG?RkCd|G9Xd1lsc^k+C(IucKMYCMFIV}QHig6S;|qfHtabV(zg8Ez%t z2OAUkKWjS=Heh%C<_62-nG^MRg%;2W{(!3yvru!FAo`#p^dyjePf6N z2Kp9!YUtOzX zEov+6G-Gh1zjn z5k*B;IxCsV;B%UM=k?^bjTUifcC-)ASGNn6%GXux92;8gA4Rg=;4}E(WRNfSiNvX? z^Lpt%pIy6 zwvPKHx-QFH+EUru(}(l|x>O}iU*=KJYlrs~?fmFTYKtYNQ$VkrMH9SWJ%oo9nA9GD ze@NR!kz=Ux_8GqOK7m+xr^rODyiXkh?xJ2Ng-<~yp) zh|}O%;4#iyMg{%cU9Q^^_F$6=9xrUPL$!qRbWQm4R+xHyt&A(wA zN*t5so!?F94iNZ8Q;AvE>Vvy~}OFO+8$kQgfX7&h` zXZ}E`@q`vU&s{$hTIfS(T12Kr+J7{PXVAsjWOOH85&2r;gfu+n-UuT>pbpnOX^rxM z!{nNjEph0;hrE2p(PsD30vre2!5r!{?Ly|4j$GXgA?g;joP7drex!XFv0T4TN=BUW zJ@}+fd3ejJ8k}b_L`9SRNjf@&=Tai(g&k7(bQebVa)QiAc_5(CBDfFx=>gJ!a2&%+ zGbd106}1YTKmA-gl0Q0$5QW>2kYS!zET9|UBH{|8o)jmpAw-qCAKD;23>fnZ%gUZ# zDodUNwx}or!4@ORfV||<>|XNlYUdfXIx=9C#tZ)|Ro%V?x~Z~puz*Y4WR3#;BiBlt zi?qEi?=)T0X=!rBeL^su#HQlNAisUON8qmdjVgmJf3@!(tUtPo3?4S*Wp=ZF)`XxE zJIdsc^xWVA7=IUaObB1640w=;WRBwr0sPth$}ue>=(tVppgL3GFh{_i%;?^O^;CwL zjF}d6YadXw6c;4CgKi5PZ?xES3G_|B(^iSK!#9FEyAtUoU1n0CANYf|iYuMf8@w7* zu_5$8qPW{i?}s<-y+Pj0^+a)2vZ1HHz#l+66VW#z`I(1>w1?!g+F>&(HMjjynTwN3 zc5CeYQTLYl2j%rlOcs*RqK8|aEbTdl&6H5P_fJu(es|81EPd7_Y`z2YN3{pRW@$S5 z--?2@ihEaj6`Z5Aeg3x<%#-j~ahZQ@VaG~Be2&>82!Hq&MQj^-XI1tLK~4ehnf+;o z$J|#fSHP>Fdi^7c5-yehT#`E=tj{6sKv-}yCO8KEsd9DKo5z)&8W%o(gZyHEoqh02{8el*IGTUUf7_ z;>)3e`7M7}3Jr!F-tQ@v;CKy~F#-RGHVg40W;tvoq~=qPDq?Vz+Ev4_fCcP0Hg!%dW@NIsXnf0xqas&IWWV95K>#VON-`% zv}N4T>Uq2adD{yu(sJ&T6oYi!pi`HpUD#R3BT>M#3-E0j*9b2%^AxM`?kL@Cu{4M; z^^WMXmT6kX6{|i>a`pxKDZ%{eLzDuiL5v0N2Hu(`M*~rJ=YbUPFbtI;?!Hs3l14O2 z;HM~OD6y|)!$k?p_y$;Kr08UlDaeo$)dcf7O6HzQP{E9zSfii|dKWv0$<9I@l*9-x z0+9|;LGLp~6?J`Xcq=&n)PYhF__;08&i7-nM340i@a4>Qsea^8)iiGv0v7=qWC6Xh z=(k^jvlfvT&lBRE-Y9)h;8_;?if1d8mCiZONN1LH-UU5;MY- zV2@kRk~-Iy2HcFW~2 z?ofsq+IUukEX*HScn%;IMR$>x!V!@!L9n+q#)x0RXN@|7cw7+vToGscMu&%K+10!m z&r{fN3phiBz)VZKbB{?VF#?Xg2j%~E3)tDYhTt}%t4n~ojtzyzBo`bY&yrn6xJ6&g zQG~ZD;y_09yDEKBsu#W}q#vCU8feR7>Zb@^yI|>^r`YWHTIa@B-T97;QJ5lBcnw}+ zm3^in*j_kav5JLy!$=j5@l^PAfp%&7ut#CPXyI4J*>HwnoFKUAc*l!H6a=V#kQ=(Q)Q0?BXi zUv;3a<>^gj3=tp!z;sE&n@&;f*%m%qKIV5e>Q>^3o@JR7WG9^#MH(DtM%naS*#&mp zhK++1G&7xo;rN#*Cg~FI5|BOH3>%N$<3o(WqAb^Nz)vXK1yxy5df+V^cHs*T!=@rt z<0&B6-xaEORA4!M;6(wZQUGx=Sc}a|g?mp5TQ`h=exp?_OI1Kl#vH%Qdz$%yGTy^v z`wdFvQtHHIxl4|a>j#5a?>5j#TtjEqF;A2YHlyOw|`3ppn%+zyt4f zLzkJ7cB9LseN1LIho$&zh)xG9J?74HfQY)UOQ6&_~p z3DgW9dI*a6b352(xUEMKk964C%oX9{2THKZ&`+}1RNT(sx7|Ce4ogm>-U)XYc4y_+ zEgKD|d>Q4(4}YcPbt)@j1vkE}9^S0_h|M9%CX3COz|LQ*IxNQWZ0jPC(>?5grELk8 zLI0ZM3qR1ytMraeVoHZZv|mb!gNO(%&UXK6DuVMTikp)QR4ra2KHj0*BxYJ5$Iex5 zIBg!xxZqMegf~E&Qi?oqzqsDDQ*tonF+kdMCoZ9q{M&g-y00*VNDgcyd>DPSRNP5V z@mOPWA#C`&@^lehIzlCOw63zGwPJ9NNqN%;FQZAq1)rMou{DXaI$G|qu%xbuzP04< zjLM>%CM*&p5c)9Yd@JN_7pky)%7X+fjp4DHH~KNfyUu`w?6m`Di-hr?jqpaVD1Cp+ z?uU+Nr-Xr5T_lW%X(i_l-kMp}j0y0^2bFtP`LBYfl#6|wdykit)!Z`0J`PAc7%j51 z2Od`r;HaDa9F|Z4o?CVxoEi3LKu#=TPtfVbKAxA5hZywKlDVf5F3fSRaDXQ{%xKOk z>Xm!lAN9tjlk9L0r_=gR1)}#P0G)K6*lj1?DuVvtt;$vUh%3J<_qLV=-nUA$~fHr-d*J@0cl@cR>K$< z4&GK)PArw++Gc_ady*1}9g8TX9cVJWYEQ2j6GA_#C_zQs`_?A#Ipkj7Lk+egV?Ts@!%R2KD& zl!uFXmtdxJS_N#4f~V3+Yi-GONxLC!A7hL@|3GY2r2a`Y(Q4%BkF){H&%U5r_;Yi8 zWyaDXtxr@ez60kisPZ+Xb=AH?mEOgpyJDRJcln6+B`jZPQ$M!} zQNGzKT)v|>?#a`h6zFfqT6rT0QVOy2u9+!;ynlN=I->Emfikbiz4U6|K7ro6Lt72u z;v;=nMAuDvf69ukGj7)ASwkIJHvoNaF*DtQZrY)ZT#u`JH*TQJ&9&JvyCR+IQ*Ass zd)sUad3dH>z~6JJHshtxXV%!Pi8M5H;bke0qmxfG>A{W2OSnN-PLqi<{CStn{ zW9a@?qURc6cf7wzUlrbt|1#skcIWGrePqdu+I)DdQ=wZ^;q(R+hWoOugVNRyf* zG6j*Rq7`tZU4_N&9@^HBQD%D^*N`H*a<|Gw$xKCaB{t_ABvDLcP&oPIgUK5TBOB=z zC^l@B?Y^r-#;h8)<{i7{Z8Q(z9+=rDu$R11+we!L_3bVK0jq)Igm(<7q{T7s7XckU zpklKP+wi6o9!V|XV>K1QKmAtKe+@@R#j=0gd@A^Eh^v#A&G7*fr&;U_RN?q0Nu*ey z;Y_1`Ok59L545e;!zn~bFaJ|g68O0_oU<+d} zmlngC$@Gk+b|A>A^y-RuMiPmblY5DjcnxCaFAr@mti|083KXgO+TNz!1$t+d&S5Dr zgSp$e^m2W)25o@3>3RLCdK!N?*g_=I*O*a_O0AF?J!Ga@5A5`QvyzU+WkqfiU?n*tfEcs#m z7GEO$kmklhLHIz9y`XIN35~zLLj{pfZK#z-?jmP-+E2R_4GwB}jTmn_oBv}mUGz@H z=;l)m^QFC8iPlip-D<4($;&lcm+lTJwqL+;IL{18Jz5585YBW9@q3hsYz#jqH@MG)*;Y6xT`ioBjxC8i>D9zFniz*H#Wc`&Q&ck7EW zVIQ=n_(Wc6?t^{8!AbA_7xqEOYHQB3%3U+BZr9+NY0u~o{A=OuYUMHBJE6>JsVBBx z(6QL#f~tD$Y{iD_i7U=B2y|FxYb=7dz=(BmKEfWMaK?L-QofzKtlN(yc zEIiZ_dj?!{;*s>sYwY?I!ETROOsC+z`n`&u8wL5+yczLvefp5>evqSd33(D}Tu7bq zJ|$_t#WCn^b3{)!v8+l^N8R>_Ae5?7Hl2d(?TR$k$;l?%kz)e>iCdMIKKgbYoPb*{ zbK9W|avD%Fd6|!zStY2$a(i&dLy0-8d##)bDqY8D<-I{AfAMlUDB#H4{b9k}Q;3m$ zK@sT&Mb}>LW|9oYjK?o`+RW^t^dbOV7nIrb?66?&V#aiHw2Xs@lhHCh-MBp{t05c% z{8Q1Qxr4KJK(hi=L^0z73G7=|2Q#t=J zUDD(&vu`T=ow+NoO4j(zIuUCnkZy!di@Bp($;yf~bKe1h~oc%2o6MAMHM%CQy)SQiw zS}^$kJGcMQT!Tf9|dbjlfp; zDBpLce$49e5nN86y~FJ}OXST{LM&UO2Uv8j@z#aZE}X9+iZ>>Zm;6ZCqi7)}H|+ZL zMtBBAHcuCO{z#!7pG69JF~VLyQpl?jcKMM)K5fTwSfr4bBOHiD3VB7vfmo!F=WPU! zB87Z(hTu`8P*&D>DX&Nf7DQp~0vj*oSbJv-l&9_0u|i4zh$7_-kj*j3Q>zK#fG-!^F%QI2>}MdF_E2{yh>U$Jl| zE_ZHVIZUfG*rN?&4Ec7|o?;E5U3`p+6kxQ$%?~L>9UAe$mbcR8S)6%# zxPdJYYqcQwx+3!A0yx{xQv&nB{}$FXJK4{>GF<)GOhtDNeK2oAuw3dK_?2|6slPTrMW4`{KZoIs{DnWk6=6gA;m9$G>zLg0)4RB1VofT`Ne>pQJO2S>>jAyzG? zG2tN_n4-r6u~1+Ucd!7IQtX0UDKm>aHJKMOmAUNpAVW=Oim1S@^HdlW*uRCM0?%`M za4&F;x|WyQNfGqe$3);5&`^0`2`=*4%5@5au)X(3;Ax8ggw-{#rJPJ+?i`Wv43)1&K$swoo0Pv2hyV|c_97ly*P5p?<>`C%> z8qK)S`c_71^2ee&bBf&^jI8!Nu*$m}2>Z^Dmw_$#T2c@EFroW}tkQQn+u|PULBNic zpgctg#uRGJWKz(b@zf|<45i0*d%Qd}u?bSd*#7|n8z84{B+$vXOHhGLkQ!))%-Viq z78MxXu3}`ch-fVeF*?0>Mgm}Tij`z|)n4sBpo8UrzK^nj!(M>g>_%L+goMPvXLI}d zhv&K@RgV46$sLqrA767`Ysu*;bC`vgREwh-}gLI`R2G}I34yfD_yyF>av6g zVyOaR%3C&XL7H>B&Xbi3RMhEd$xUcO-cZcR9lX*)dBd_y^~0sd?FixIV@EiS@_juc z{P^!{gWVTBLx~)p-`GzNlFI<4ovLcRfyaU3tWITe+H2uBPKJ(XHS zIA!pq#3*5(2ntnN6yJVDZsAVZMSG%jrh$$d%)L#&Yl0w$zmZMp4B8Wj;;2hSJxI-b zW~kR!wLDrvj{6=_(!Z;+`1uaa6!4yhmUslr9O-*Pntt)cs&C29Cn;~Z!kt0Og}_j5 zdoF|X6_*X|mZ!1ZetDu7e1HpwDtDYKsu{-KOdi9(eRpo9KGZM8a4rFll`~Pn(L&5+ zT4Ccyel`x|D-O{sa%NJ*x=qFNAh_>M&*)O3B`!@)3BXvJ>LDHi8YmOXO?w|L$wc4J zi$mH~%i17btlVl1S`qGS7sSyS(DOrU=>{4D^qpnA5+?8+OOzq&yg)Trp`7)ytwSZQ zfEUZa8>ra~bolD(A80alSF}hYIu1^~!S0+ox1L$*DwZ#AI)%YOWz<9E%b0{l?E9U_ zRuh2vC#gg`^&l486)%7mhP#zsEevJv)!`hGU-SD``>elSE$i}S;#6o7U)FZ+Y8kyq z+2yHLlWTRkYjsaQrb~(4h)B0rrL2Sb)i*|cta&qFKEaF&#%G?amXyx(vDql*Q)j?@ zqG=I~ubu((Zw3R*FvQ!<45&{sV}kOaQyMe<#!I89?@dF^yWrkkBZU!+U49g{MbQ3C z(PwN{B04WfqNr*A54!%3_lkVsS>Jta)Zf(}tR_T#1QDodA^h4?>&VAB&%xH8?Jjt{ zlnJ-GCu_Y~35~K7+KdT}J*Vjavcm$x26waUsE8`S4S@OzV7`KvO`UI{DyhR6!XdcN zDI6_$sdC0nc<@e14-eodr#(D=Bb-XNd_ad`U9S2%ti1$W(FTXOamLXu+{`&cxx(=n ztu46H=klp(<>iy1aJr#FJw!@QOyP9ndZ5$KV6F#(J&iNLAQ{>9O7J{*`jA#>8<{0` zH8Ln#Mczl9+>dWi+@so;1x}A?mAbcHuYETtjOno2zD5301RL8D|JXbtZ0PgA)OZNY zNf`n_N~7Hdza|CW8J*gj5=9FF7#uu6z{L4bG0L$~9$}wM$5QGP3Yld}iDF`GyXu`K zKHL+RQ7CE0c}nDV*r`jf|CgiUdMOyqJblbCm60>48SdyKc|<~2Hc#4q?qr|Pdvv)< zm&h>#K5d=lh_>%>wE-W=^Z2pc<7Og!7qh~mF3Mk+z^qUv!~eLFR5TSqbInTOIEqdr zjs#OBY>|%ege7KNP#tk*W0dMStJwagm=~KiaHUbi*jfeIPy}hRXLLsKDAXuQW!_*^ z1i@DoQKrUYraPD0CC(>|XqLTB=RN#NgY`$J1m`nXiR9oyE*8Mb^F!6OWn7u7@Kc6( z%g3|`+$$A6OWPUmbK4wgzi;tE@nz{A%AG)Hqg$F^@6b>@2xt|ovxCvE|!VZA!{F2R<;tpXHu<@8cP{Mau} zj-oU8oCk7eOqbC5w4+ItG9xLz`t9+ylQjIyMrFFxKZ5I!V0_Qzes$qQ#jAn>yWI^6 z`j@z`QlKr86V>1{lq-%Rq$m1`EYDwKrD7!dov=x^Xo5r1@sRbQW-NCy2IUJG@Z8r* zASr9*ZQ7d@_Dt->=&KX>maqtS@VO#nz4s%&m+0Vm3kc2pHoCT9TBLoq!$W&BZG_>< z!A8Hxc*QH4m8FsDE~D*BGvHBuCGnhzyVz@raDpm=;z#MI5U%58PcdZ?m*)U{FuCGd z4;Q7)t~AY9qqTaT7BWY_at2K%yMs{i_PABrUb|@q92!0J;#cza&egay{lGK2jaavnbC^RA zU`V=fln{*Tr`Ye9R$=3l>Fg+8zqiN=L+$Q*K`0=CZ^Jzm*4u<&Jh@*5MFbg@koLGs zWuD+YZkqD+9K{?&zE2w*uPVQ;S~Z=5?sA8gG6mWPbTcdPc%~c;t7eaYeLWQ%bCUS_ zNhKk3m~i0`RGKavP(h*;HJw2ltf425@#vR;KRVdB84Wb1V~Q5=u1lnW`vyp`n_+YF zyBTaQyzq^rVG{HnfteEY3rk9dKI05i!S-EO){H#Jf>@!tmzEiTg)X3-Bw(Hhm+BKd zJneVov`4J}xB353_wIpp7G?hU6wlG>x)?94)m8U!s+d-cCv9oVx@vl*)wY~%ic~5# zX>yVrn&cdEl3ox>5S0RoQ9)6w2E5@7;|0Z4G3>4@ief}jys>e;0A8c4h*!SPJo9;; znfJW!IY~~-`uqLU^vpZ+c`ozJ%ri63%w(rt>S`!OJ8ygd*IKoowsSJu4JG?E7H?Zt zfO9A|*W|$W@{;iH0v`Kx!JK^;zdPVDD#f1R5g0}rihrOiF#G%D5i&1}thog15Zum! zbs2Z;mbl)TeYe=PeH2v2(*D66T-_5O{L`U%GQd5=ych_M5NxCAgqZ=!lPe$% zjfvc7buer$l0(-1nnk1;@QnuBsfVGaQ%3GR!%;%A^X_%SrSfE-8)*^Wl#&0LBcdBR z@xq4j^Ho^oEZdGGeuEa{Y@oZO=;}=r{?Gvdq5E*yuL?JUi(Pxy7wLemYXA~(oO1Lw zWp6^2+H1Xtf#5E63jg7xz^SrJPn4-6`vWnAf<3k_8~Ew?J4E*SMxL0`!S(03PO(ZS zyrHpqy_tX%i_Q~i=sgbJ&h))O?Bc5E9q7C?Nc=6#o{0PRl_T#ilPN5>LNsecb`?Ww z+bwmX+YH!CYR7< z3Ou+@gV&DWVs$YvuKXRHh)KtW^+pwG-Vih7%ua?(2Uz-tQIU04D#9v}k>y5s zPt9{9Ox_9eVKN|ks1|WJ8qz1rNZF)1iK(7W!IWsK>;jfXf&1o*L^yjP%`ZfOKo6u~ zuOcZPhra9X_l7t>2*9}G9Aw|6m+MBl1J^XaZh{Ha7 zF=*JWe{OLd**D20g|2@KT5Y`!_Ox}5g)tzW@Jb+8v2fbD_4YVw2A^MEGh4g8!ic3B zMV{}~&C9UU$nxA*)uP_MzfdSU+%{x-Tm8%oJdQkns+G62j$CMZDZsqiQGVDZ;J`ZK zHmY3)IQa8^K3J`wlH;xk0Jj{jAxdcjwXrFDeb%M5a<$W3oLo`N6W-;mMek+SV4cy;c4mP4&{5nkeUBDO;-J`pX z8mlp{aS*%kH+U5sZI5#Dn~xpHvF)`&lsd|!^;BPOEe{!a6j*%)3LbTPvg^g%;g~jH zepIll1mzpoXb}*fFM1tVsLEz9-r;rJF=Xg{qwvbE&h!QTrIQ{P@H`Vq;tf4I-z!fi zr+O#~f_x;3O9_(r?AmxFiBGOgM3OifWipb)aVS%fBtEl72W$d(KCwnCr$LfCuSTIQ zVH$5Vjz!a009soO^RWaprwP+mSPvj_NpWlZmSQ>y&O@pcOwcw$?8?ydC0D7wIck-- zlPkMZE>w|}N$i!*!k8QlXtFUie0dU)U6>uY0GZfdNE%jp$>G%tm&QQ*v4k2QG zkS)a`BAr6HWL-1GbwVvfMv_zy-F;1{box}*Xz7|Sk_Tm}Dx2W1?kd-y&9rErK|oG=9Tc4_ng8*H@NdvPk|cAKjfY3h0|K1p==b>fLOQ zS>@4UmVOK^CmzSkoGw(=(tuy+rs7-OK2@;BDQW0y8FT8z}?3`A?>?!@L>DFfjy;u+O6j)?mL3U?3(O&&<@BP^6U5l2x_kT zTl~Tdo9%_!^@q^kxT;xjM6895=2I)hZPEU!ncx(v+5-E;{^BR8(V*USKR`MRFEx{) ztIo;C>fS>S-b2v)J}CkReG&ENLew<~^hDu0l{OU8axh=VY+ag3)amftXdM{yDaSw; z{?7KY%k1~nCr}}BWm5))Z#^MAflJ zY-SfV?V2W4K}K7q7vHvTOLPpJyyi2)5qI`i`}juJhxi3H^0Co@L}suYz~IfzQ|eVx zAhGVVAQd$L?W?@k=}9&DH56SiiQ93due9Hd_Ic1ac$0|b##quu@LH^nca+?rU6mgr zDA})#M)x6HPrK0fw7gBQkxxZXv7lqpotOBUcW;T}qN#ls`rP{6D7by@&BAqWx#FH9 zCd}Zpw|(Y^-i@@q7zM@3Qn1S^YpB60Ha^(lC@NCK3-VQ_EwDsy;gXTGfuHvO6u#7B zp_@NtVF}A&dDRIexKR9^L6YU5Lw~1f57JNHJO|t(Q6IcRy{rz<{?QkN2R=;ql)bW!~Z>^8@lNUM#dae-oLpMBD z?6!|-0>U;yO3Zr3pqob`(-ldXBll~LA;)KK6J7S$^9#0GPxIdV9$F){Nt?U{QjEE? zZ`qC1ds~8SY-)ye@9Ml!F4xn&&2w*)8f<$G57LF<&#VTZux@hkrbNR6C8Di<&%a4R`i#p*dg&`1qpm zL*Z=;j!2#IMiZH+A5y*E7{&f$rcm}J-xk}6V6aIi1ttj}rUM1DcQyb}-rJk+9PXpn z)?MM9-x1APe5-R3pg*gI8{w@^zhljTqB!W$vO)VM9#9WW3;Hkz{m^7m$FE^~fJA1c zlR*@kg_8I&x=ZevsG}4;4@*uP9rBuzqlrAFK72t|DmG>B9icp9K@y!;+Go?~OqWDD z*_J^mbe>C7Xoa@BNISHAK9T~F1kqQZ<*Ksb+!1>x2&B5;*CHJ)M=|89g9E<%$k`C_ z4hQ!f?<)>U@>q~O9Au}%P%?O>$YGJ}<3TdjW0~qvDO?wP6rYUzR@0v?$9~&bFUt1KKa_jVbAJ-C1x4(?>BsIeNr&TQ( zVN$f&L#61fv!<~0AVjN4N@zGrh#X}l ziST<{*!D2t4v&BAmGeS*UDHV+w>2`7%1^^%a*IeTdz`h-A=3HC0lKyrjC}3S!Vrt> z+RYUrB#ldC3F4DW_)^l2%zk>pxv*h~B7Ok4^e>`IyI(5Ci00MAqx1 zNa`fIk=+W~ryB4DhlY34RW3G8yEF)Z2^4(7Uqu)XAfaC#fM)5|Q@2aRy{$mVpk$jM zM5nWn!h9*-nO5GlokK&#!VoZ|Z0bSbqB6wsCLQWo#c_5}zu(PUBS2|F=^jCuwG7<} zjl3VJU1lx4hbr1au3snQrrW3N#Wct{gB-19gS(O>;DvJ93#mnRF+h|XL;g2OId*cA?m25-I>3v@OIoZiY9n0$F^-}?5(v*Ey@*Pah2Aa^ z2RXJZfHxO?o&9^P8rNtA8ZKtYFero>_ZA&-)Gcm!U3?90kq0-iXx2)g>hS_rk< z-Q+27l9=2yFn)hrOu1D>LEJpdW&9HUE=a}fE7k2TAWCXCRiMfb(5Hazj1* z;Us%L1o@kg&pbku$vt_va>(&^ZN4Kfx&?$F9_%DLqH>3(L-I)^6sL8lPE#k5ST*&$ zXQY2G8Y1n?o@v{qC=9Hv7Z!cx^w>RIwkPDxBhT>*W8%|;92<*tbrh`+OH*$`uG8m` zdzr~2*In`4^cq2zU78-E8-NQ#w4XgpZN!dE+wt7}Y3uAu?@D+Y5Knp}*u;65`%l(k ziDw#qec8+0>tY`ua0Uo@K?*Z&rHy5~oA2_rv>M5ErR1)9Ypix*Gmav6Nzv-OI|@T| z(O75DpHCy}(;gM8jNUHGTXm6TCWEXe{+*cPNwiSr0$<%oA}R{Wucf_*p}i3e=K%14 z0Hvcb36!5rac-B9^mfHaEHmcOj>m`pz3}Q5ApJ^O%D&*m<6k^V&uL(LsWeRHZtv|x zg*E~08G@R24s_1*uq>J!-Y@~^0>rB6HLicYBo#vXb z?zY9Gv6nEgG;#-nr`y}LreZtVH9;>s3Znlh#C`S(aX|IjwHJI&Ar%bizamvi`S7|@&NXAPC^GxGgrM{Pjbiiw?+p2btJNARL{|;gLgK_ zMjM(jO-_tW_`9I4CqzRctu>bsXa$YrQS{RuqUIo{0Jb}{7e4@F5@k<&oM^SP%NkvN3L~tY`V5~JF@m+sj05BDCkoa{yj4PYYJbV_>U0G!)Y!W2JrP|k}FNEz0i$C;{`|L0TExAwryy?M!cF1 zlzYFF_ZjKh|6c69xM|A-^6Y;~jH9Z&%giY9e16uv%grS6{3)K7Dx0>khiG1HXE0*q zPj&SFjK6`Ahq?K3Q7Q5?SLCJt1lH+-o#oa#gMPE(o{h}wV|>Om=;n7N0nSL8a;k+}|k7ie^uZ+3EJX)xNJMCX0Dna9ne z;F+>?c9XHV7;c#(O@P$HvXId8NYjsAFxG^xpO9R%mq5XeOjO2AUy#1pNLG}cM49a3 z7=_**3cx_N96sM6*IXT-4m zRX!pH@|5CvvHypRWn^eR37{Cg`*ig7^75*24jKO_1^oBsrG=rP68YbDdu&MyIp6lk z3@vBSwyb%k!+#V0E=af7o2F<{L1W-uB9@GJZAbCu0Y%l*^~GE^03 zV*os9Ni}f#vg$E63gZ~dq1^XsmaoUy&~R=y-N8JK!nZ#QOn7Z{R`>#8GmTF_jAtPa zh)%GZ8GL#6$uW@LlD%sj=^u=Lr&%0Du1?^?3D1rJP?s`X7+|MycV&OkzG9p~t`qC# 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%0Akwy|Cb3!T8xbWyFi&b2 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

      w+-#XH%w~j2t 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
    1. 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

      xDZQW^LnMPnHLu*^9ogb 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 z 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%0DR1{9)A0mej{Y}V{RYb4q|RCMhVs1R3%#j6 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 %lPr{SBAVFOQjOk-;7fqhDV6 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

      ((ocwgKQ@>0euwRM^`x93wB3Z7%>smi0D<`= zLqO8N%SJis77+M1bUiI?7g~hYCY^`)cX-En@k_TFAGa6-V_VC3GIrM(`QYB*=?_dr z-!eQ3G;Fsu6kHx`(7Y4puig4vzn%=qd_Ou)KJw|LnJO>N@ZhI4?P4|dWZ>L7VAwzz zVV7;O)o647Xkee#));Tw=IZ(4G&h(&dXs1oF@n?XP^KdMe8Y~j?m|L0R|P8GLfGSI z@qLF&kl3#bWD#Jn%os!AM?^P*XaoLcZ(VJntFN04w$8CALK$aUBGxZ(30{!ve;Yg! zbu#YntfJGq6zqQ+FljJ<-FCZ+B|V+`ukQNuICxoS!~Pc8ZGIb7$tNQ)`6PMChD?Kl zN)CuYjJ!bv;bpLv=|5z@f6RXWl>PoW`~9cv_y1<67DF#kNm1Ldvsjd-K!Tjt%c)<{nKCrsJIn)dZM2K0vL1;ZB-pz1?(*{N zWa!aWWD+ELBq5GFvsNngak$}!e?;wKbi*qdPB*/,/<\/triggers>/d" {} \; + find $JENKINS_TMP/Deploy/jobs/${arr[$key]}/jobs/Summary/jobs/DeployedVersions -type f -name config.xml -exec sed -i "s#Deploy/${arr[0]}/#Deploy/${arr[$key]}/#g" {} \; + echo -e "\e[0;33m${bold}Jobs created for ${arr[$key]}${normal}" + done + diffs=$(colordiff -r --suppress-common-lines --no-dereference -x 'nextBuildNumber' -x 'builds' -x 'last*' /var/lib/jenkins/jobs $JENKINS_TMP | wc -l) + if [[ $diffs -eq 0 ]]; then + echo -e "\e[0;33m${bold}No changes detected. Exiting...${normal}" + exit + fi + colordiff -r --suppress-common-lines --no-dereference -x 'nextBuildNumber' -x 'builds' -x 'last*' /var/lib/jenkins/jobs $JENKINS_TMP + echo -e "\e[0;33m${bold}Please review the changes shown. Proceed with overwriting the changes?${normal}" +} + +syncJobs(){ +read -p 'YES/NO: ' changes + if [[ $changes == "YES" ]]; then + rsync -r $JENKINS_TMP/* /var/lib/jenkins/jobs + chown -R jenkins:jenkins /var/lib/jenkins/jobs + else + echo -e "\e[0;31m${bold}Aborted!${normal}" + fi +} + + +firstRun(){ +choice="n" +envOrder=envOrder.txt +cat $envOrder +echo -e "\e[0;36m${bold}Is this the correct order? Jobs will be created and configured based on this order.${normal}" +read -p 'y/n: ' choice +if [[ $choice == "y" ]]; then + setupJobs + syncJobs + cp $envOrder /var/lib/jenkins + chown -R jenkins:jenkins /var/lib/jenkins/$envOrder +else + echo -e "\e[0;31m${bold}Please update the envOrder.txt and re-run..${normal}" +fi +} + +updateRun(){ +choice="n" +envOrder=/var/lib/jenkins/envOrder.txt +cat $envOrder +echo -e "\e[0;36m${bold}Is this the current order? Choose n if you want to add a new environment.${normal}" +read -p 'y/n: ' choice +if [[ $choice == "n" ]]; then + rm -rf $envOrder + echo -e "\e[0;31m${bold}Please update the envOrder.txt and re-run from sunbird-devops/deploy/jenkins directory." +elif [[ $choice == "y" ]]; then + setupJobs + syncJobs +else + echo -e "\e[0;31m${bold}Aborted!${normal}" +fi +} + +echo -e "\e[0;33m${bold}**** Welcome to Jenkins config setup! ****${normal}" +if [[ ! -f /var/lib/jenkins/envOrder.txt ]]; then + if [[ ! -f ./envOrder.txt ]]; then + echo -e "\e[0;31m${bold}Please create a file named envOrder.txt with your environment order. Refer envOrder.txt.sample for reference" + else + echo -e "\e[0;33m${bold}Starting setup...${normal}" + firstRun + fi +else + echo -e "\e[0;33m${bold}Checking for updates...${normal}" + updateRun +fi diff --git a/deploy/jenkins/jenkins-plugins-setup.sh b/deploy/jenkins/jenkins-plugins-setup.sh new file mode 100755 index 0000000000..85368199d9 --- /dev/null +++ b/deploy/jenkins/jenkins-plugins-setup.sh @@ -0,0 +1,21 @@ +#!/bin/bash +bold=$(tput bold) +normal=$(tput sgr0) + +echo -e "\e[0;32m${bold}Jenkins configuration setup...${normal}" +read -p 'Jenkins URL without http://: ' server +read -p 'Jenkins admin username: ' username +read -sp 'Jenkins admin Password: ' password + +if [[ ! -d /var/lib/jenkins/.m2 ]]; then +echo -e "\n\e[0;32m${bold}Downloading and copying m2 directory to Jenkins ${normal}" +wget https://sunbirdpublic.blob.core.windows.net/installation/m2_updated.zip +unzip m2_updated.zip +mv .m2 /var/lib/jenkins +chown -R jenkins:jenkins /var/lib/jenkins/.m2 +fi + +echo -e "\n\e[0;32m${bold}Installating plugins... ${normal}" +./butler plugins i -s $server -u $username -p $password + +echo -e "\n\e[0;32m${bold}Go to manage jenkins -> Plugin manager -> Update center -> Check status of installation${normal}" diff --git a/deploy/jenkins/jenkins-server-setup.sh b/deploy/jenkins/jenkins-server-setup.sh new file mode 100755 index 0000000000..cea6ddf039 --- /dev/null +++ b/deploy/jenkins/jenkins-server-setup.sh @@ -0,0 +1,70 @@ +#!/bin/bash +bold=$(tput bold) +normal=$(tput sgr0) + +echo -e "\n\e[0;32m${bold}Updating the apt repo${normal}\n" +apt-get update + +echo -e "\n\e[0;32m${bold}Installating JDK8${normal}\n" +apt-get install -y openjdk-8-jdk + +echo -e "\n\e[0;32m${bold}Installating Jenkins${normal}" +wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | apt-key add - +sudo apt-add-repository "deb https://pkg.jenkins.io/debian-stable binary/" +sudo apt-get update +sudo apt-get install -y jenkins=2.150.3 + +echo -e "\n\e[0;32m${bold}Installating PIP${normal}" +apt-get install -y python-pip + +echo -e "\n\e[0;32m${bold}Installating Maven${normal}" +apt-get install -y maven + +echo -e "\n\e[0;32m${bold}Installating Git ${normal}" +apt-get install -y git + +echo -e "\n\e[0;32m${bold}Installating zip unzip${normal}" +apt-get install -y unzip zip + +echo -e "\n\e[0;32m${bold}Installating JQ${normal}" +apt-get install -y jq + +echo -e "\n\e[0;32m${bold}Installating Simplejson${normal}" +apt-get install -y python-simplejson + +echo -e "\n\e[0;32m${bold}Installating Docker${normal}" +apt-get install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common +curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - +add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" +apt-get update +apt-get install -y docker-ce docker-ce-cli containerd.io + +echo -e "\n\e[0;32m${bold}Installating node and npm modules" +wget https://nodejs.org/download/release/v6.1.0/node-v6.1.0-linux-x64.tar.gz +tar -xvf node-v6.1.0-linux-x64.tar.gz +mv node-v6.1.0-linux-x64 /usr/local/lib/ +ln -s /usr/local/lib/node-v6.1.0-linux-x64/bin/node /usr/bin/node +ln -s /usr/local/lib/node-v6.1.0-linux-x64/bin/npm /usr/bin/npm +npm install -g grunt-cli@1.2.0 +ln -s /usr/local/lib/node-v6.1.0-linux-x64/bin/grunt /usr/bin/grunt +npm install -g bower@1.8.0 +ln -s /usr/local/lib/node-v6.1.0-linux-x64/bin/bower /usr/bin/bower +npm install -g gulp@3.9.1 +ln -s /usr/local/lib/node-v6.1.0-linux-x64/bin/gulp /usr/bin/gulp + +echo -e "\n\e[0;32m${bold}Installating Ansible${normal}" +pip install ansible==2.5.0 + +echo -e "\n\e[0;32m${bold}Installating Docker-py${normal}" +pip install docker-py + +echo -e "\n\e[0;32m${bold}Installating colordiff${normal}" +sudo apt-get install -y colordiff + +echo -e "\n\e[0;32m${bold}Adding jenkins user to docker group${normal}" +usermod -aG docker jenkins + +echo -e "\n\e[0;32m${bold}Creating bashrc for jenkins user ${normal}" +cp /etc/skel/.bashrc /var/lib/jenkins + +echo -e "\n\e[0;32m${bold}Installation complete. Please go to your jenkins URL and continue setup if this first run..${normal}" diff --git a/deploy/jenkins/jobs/ArtifactUpload/config.xml b/deploy/jenkins/jobs/ArtifactUpload/config.xml new file mode 100644 index 0000000000..6fe3ca0b64 --- /dev/null +++ b/deploy/jenkins/jobs/ArtifactUpload/config.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + All + false + false + + + + + + + + false + + + + \ No newline at end of file diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/config.xml new file mode 100644 index 0000000000..6fe3ca0b64 --- /dev/null +++ b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/config.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + All + false + false + + + + + + + + false + + + + \ No newline at end of file diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/config.xml new file mode 100644 index 0000000000..68477b8ac7 --- /dev/null +++ b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/config.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + All + false + false + + + + + + + + false + + + + \ No newline at end of file diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/APIManager/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/APIManager/config.xml new file mode 100644 index 0000000000..ad7e37aedb --- /dev/null +++ b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/APIManager/config.xml @@ -0,0 +1,108 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + absolute_job_path + <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> + Build/Core/APIManager + false + + + image_tag + <font color=darkgreen size=2><b>OPTIONAL: Specify the tag to upload a specific image version to the container registry.</b></font> + + false + + + artifact_source + <font color=black size=2><b> +ArtifactRepo - Push the docker image to container registry. +</b></font> + + + ArtifactRepo + + + + + + + 0 + 0 + + false + project + false + + + + + + + Build/Core/APIManager + + SUCCESS + 0 + BLUE + true + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 1 + false + + + + pipelines/upload/docker/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/APIManagerEcho/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/APIManagerEcho/config.xml new file mode 100644 index 0000000000..77af8f7911 --- /dev/null +++ b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/APIManagerEcho/config.xml @@ -0,0 +1,108 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + absolute_job_path + <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> + Build/Core/APIManagerEcho + false + + + image_tag + <font color=darkgreen size=2><b>OPTIONAL: Specify the tag to upload a specific image version to the container registry.</b></font> + + false + + + artifact_source + <font color=black size=2><b> +ArtifactRepo - Push the docker image to container registry. +</b></font> + + + ArtifactRepo + + + + + + + 0 + 0 + + false + project + false + + + + + + + Build/Core/APIManagerEcho + + SUCCESS + 0 + BLUE + true + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 1 + false + + + + pipelines/upload/docker/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/AdminUtils/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/AdminUtils/config.xml new file mode 100644 index 0000000000..b49d708c42 --- /dev/null +++ b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/AdminUtils/config.xml @@ -0,0 +1,108 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + absolute_job_path + <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> + Build/Core/AdminUtils + false + + + image_tag + <font color=darkgreen size=2><b>OPTIONAL: Specify the tag to upload a specific image version to the container registry.</b></font> + + false + + + artifact_source + <font color=black size=2><b> +ArtifactRepo - Push the docker image to container registry. +</b></font> + + + ArtifactRepo + + + + + + + 0 + 0 + + false + project + false + + + + + + + /Build/Core/AdminUtils + + SUCCESS + 0 + BLUE + true + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 1 + false + + + + pipelines/upload/docker/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Badger/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Badger/config.xml new file mode 100644 index 0000000000..8a360779ad --- /dev/null +++ b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Badger/config.xml @@ -0,0 +1,108 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + absolute_job_path + <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> + Build/Core/Badger + false + + + image_tag + <font color=darkgreen size=2><b>OPTIONAL: Specify the tag to upload a specific image version to the container registry.</b></font> + + false + + + artifact_source + <font color=black size=2><b> +ArtifactRepo - Push the docker image to container registry. +</b></font> + + + ArtifactRepo + + + + + + + 0 + 0 + + false + project + false + + + + + + + /Build/Core/Badger + + SUCCESS + 0 + BLUE + true + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 1 + false + + + + pipelines/upload/docker/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Cassandra/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Cassandra/config.xml new file mode 100644 index 0000000000..06009718e2 --- /dev/null +++ b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Cassandra/config.xml @@ -0,0 +1,108 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + absolute_job_path + <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> + Build/Core/Cassandra + false + + + build_number + <font color=darkgreen size=2><b>OPTIONAL: Specify the build job number to upload / copy the artifact built in that job.</b></font> + lastSuccessfulBuild + false + + + artifact_source + <font color=black size=2><b> +ArtifactRepo - Upload and keep a copy of the artifact in Jenkins, JenkinsJob - Just keep a copy of the artifact in Jenkins.</b></font> + + + ArtifactRepo + JenkinsJob + + + + + + + 0 + 0 + + false + project + false + + + + + + + /Build/Core/Cassandra + + SUCCESS + 0 + BLUE + true + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/upload/artifacts/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Config/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Config/config.xml new file mode 100644 index 0000000000..87cfd3e823 --- /dev/null +++ b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Config/config.xml @@ -0,0 +1,108 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + absolute_job_path + <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> + Build/Core/Config + false + + + image_tag + <font color=darkgreen size=2><b>OPTIONAL: Specify the tag to upload a specific image version to the container registry.</b></font> + + false + + + artifact_source + <font color=black size=2><b> +ArtifactRepo - Push the docker image to container registry. +</b></font> + + + ArtifactRepo + + + + + + + 0 + 0 + + false + project + false + + + + + + + /Build/Core/Config + + SUCCESS + 0 + BLUE + true + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 1 + false + + + + pipelines/upload/docker/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Content/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Content/config.xml new file mode 100644 index 0000000000..184683d645 --- /dev/null +++ b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Content/config.xml @@ -0,0 +1,108 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + absolute_job_path + <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> + Build/Core/Content + false + + + image_tag + <font color=darkgreen size=2><b>OPTIONAL: Specify the tag to upload a specific image version to the container registry.</b></font> + + false + + + artifact_source + <font color=black size=2><b> +ArtifactRepo - Push the docker image to container registry. +</b></font> + + + ArtifactRepo + + + + + + + 0 + 0 + + false + project + false + + + + + + + /Build/Core/Content + + SUCCESS + 0 + BLUE + true + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 1 + false + + + + pipelines/upload/docker/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Keycloak/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Keycloak/config.xml new file mode 100644 index 0000000000..d44ca7a712 --- /dev/null +++ b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Keycloak/config.xml @@ -0,0 +1,108 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + absolute_job_path + <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> + Build/Core/Keycloak + false + + + build_number + <font color=darkgreen size=2><b>OPTIONAL: Specify the build job number to upload / copy the artifact built in that job.</b></font> + lastSuccessfulBuild + false + + + artifact_source + <font color=black size=2><b> +ArtifactRepo - Upload and keep a copy of the artifact in Jenkins, JenkinsJob - Just keep a copy of the artifact in Jenkins.</b></font> + + + ArtifactRepo + JenkinsJob + + + + + + + 0 + 0 + + false + project + false + + + + + + + /Build/Core/Keycloak + + SUCCESS + 0 + BLUE + true + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 1 + false + + + + pipelines/upload/artifacts/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Learner/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Learner/config.xml new file mode 100644 index 0000000000..41067d62d8 --- /dev/null +++ b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Learner/config.xml @@ -0,0 +1,108 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + absolute_job_path + <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> + Build/Core/Learner + false + + + image_tag + <font color=darkgreen size=2><b>OPTIONAL: Specify the tag to upload a specific image version to the container registry.</b></font> + + false + + + artifact_source + <font color=black size=2><b> +ArtifactRepo - Push the docker image to container registry. +</b></font> + + + ArtifactRepo + + + + + + + 0 + 0 + + false + project + false + + + + + + + /Build/Core/Learner + + SUCCESS + 0 + BLUE + true + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/upload/docker/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Player/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Player/config.xml new file mode 100644 index 0000000000..2ee20d9bc0 --- /dev/null +++ b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Player/config.xml @@ -0,0 +1,108 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + absolute_job_path + <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> + Build/Core/Player + false + + + image_tag + <font color=darkgreen size=2><b>OPTIONAL: Specify the tag to upload a specific image version to the container registry.</b></font> + + false + + + artifact_source + <font color=black size=2><b> +ArtifactRepo - Push the docker image to container registry. +</b></font> + + + ArtifactRepo + + + + + + + 0 + 0 + + false + project + false + + + + + + + /Build/Core/Player + + SUCCESS + 0 + BLUE + true + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 1 + false + + + + pipelines/upload/docker/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Proxy/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Proxy/config.xml new file mode 100644 index 0000000000..b3a102f154 --- /dev/null +++ b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Proxy/config.xml @@ -0,0 +1,108 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + absolute_job_path + <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> + Build/Core/Proxy + false + + + image_tag + <font color=darkgreen size=2><b>OPTIONAL: Specify the tag to upload a specific image version to the container registry.</b></font> + + false + + + artifact_source + <font color=black size=2><b> +ArtifactRepo - Push the docker image to container registry. +</b></font> + + + ArtifactRepo + + + + + + + 0 + 0 + + false + project + false + + + + + + + /Build/Core/Proxy + + SUCCESS + 0 + BLUE + true + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 1 + false + + + + pipelines/upload/docker/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Telemetry/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Telemetry/config.xml new file mode 100644 index 0000000000..f8d7173a2f --- /dev/null +++ b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Telemetry/config.xml @@ -0,0 +1,108 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + absolute_job_path + <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> + Build/Core/Telemetry + false + + + image_tag + <font color=darkgreen size=2><b>OPTIONAL: Specify the tag to upload a specific image version to the container registry.</b></font> + + false + + + artifact_source + <font color=black size=2><b> +ArtifactRepo - Push the docker image to container registry. +</b></font> + + + ArtifactRepo + + + + + + + 0 + 0 + + false + project + false + + + + + + + /Build/Core/Telemetry + + SUCCESS + 0 + BLUE + true + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 1 + false + + + + pipelines/upload/docker/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/DataPipeline/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/DataPipeline/config.xml new file mode 100644 index 0000000000..68477b8ac7 --- /dev/null +++ b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/DataPipeline/config.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + All + false + false + + + + + + + + false + + + + \ No newline at end of file diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/DataPipeline/jobs/Analytics/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/DataPipeline/jobs/Analytics/config.xml new file mode 100644 index 0000000000..ea3935f105 --- /dev/null +++ b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/DataPipeline/jobs/Analytics/config.xml @@ -0,0 +1,108 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + absolute_job_path + <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> + Build/DataPipeline/Analytics + false + + + build_number + <font color=darkgreen size=2><b>OPTIONAL: Specify the build job number to upload / copy the artifact built in that job.</b></font> + lastSuccessfulBuild + false + + + artifact_source + <font color=black size=2><b> +ArtifactRepo - Upload and keep a copy of the artifact in Jenkins, JenkinsJob - Just keep a copy of the artifact in Jenkins.</b></font> + + + ArtifactRepo + JenkinsJob + + + + + + + 0 + 0 + + false + project + false + + + + + + + /Build/DataPipeline/Analytics + + SUCCESS + 0 + BLUE + true + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 1 + false + + + + pipelines/upload/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/DataPipeline/jobs/DataPipeline/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/DataPipeline/jobs/DataPipeline/config.xml new file mode 100644 index 0000000000..d46ea63bcd --- /dev/null +++ b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/DataPipeline/jobs/DataPipeline/config.xml @@ -0,0 +1,108 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + absolute_job_path + <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> + Build/DataPipeline/DataPipeline + false + + + build_number + <font color=darkgreen size=2><b>OPTIONAL: Specify the build job number to upload / copy the artifact built in that job.</b></font> + lastSuccessfulBuild + false + + + artifact_source + <font color=black size=2><b> +ArtifactRepo - Upload and keep a copy of the artifact in Jenkins, JenkinsJob - Just keep a copy of the artifact in Jenkins.</b></font> + + + ArtifactRepo + JenkinsJob + + + + + + + 0 + 0 + + false + project + false + + + + + + + /Build/DataPipeline/DataPipeline + + SUCCESS + 0 + BLUE + true + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 1 + false + + + + pipelines/upload/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/DataPipeline/jobs/Secor/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/DataPipeline/jobs/Secor/config.xml new file mode 100644 index 0000000000..6671668401 --- /dev/null +++ b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/DataPipeline/jobs/Secor/config.xml @@ -0,0 +1,108 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + absolute_job_path + <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> + Build/DataPipeline/Secor + false + + + build_number + <font color=darkgreen size=2><b>OPTIONAL: Specify the build job number to upload / copy the artifact built in that job.</b></font> + lastSuccessfulBuild + false + + + artifact_source + <font color=black size=2><b> +ArtifactRepo - Upload and keep a copy of the artifact in Jenkins, JenkinsJob - Just keep a copy of the artifact in Jenkins.</b></font> + + + ArtifactRepo + JenkinsJob + + + + + + + 0 + 0 + + false + project + false + + + + + + + /Build/DataPipeline/Secor + + SUCCESS + 0 + BLUE + true + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 1 + false + + + + pipelines/upload/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/KnowledgePlatform/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/KnowledgePlatform/config.xml new file mode 100644 index 0000000000..68477b8ac7 --- /dev/null +++ b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/KnowledgePlatform/config.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + All + false + false + + + + + + + + false + + + + \ No newline at end of file diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/KnowledgePlatform/jobs/KnowledgePlatform/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/KnowledgePlatform/jobs/KnowledgePlatform/config.xml new file mode 100644 index 0000000000..73e480baa6 --- /dev/null +++ b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/KnowledgePlatform/jobs/KnowledgePlatform/config.xml @@ -0,0 +1,108 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + absolute_job_path + <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> + Build/KnowledgePlatform/KnowledgePlatform + false + + + build_number + <font color=darkgreen size=2><b>OPTIONAL: Specify the build job number to upload / copy the artifact built in that job.</b></font> + lastSuccessfulBuild + false + + + artifact_source + <font color=black size=2><b> +ArtifactRepo - Upload and keep a copy of the artifact in Jenkins, JenkinsJob - Just keep a copy of the artifact in Jenkins.</b></font> + + + ArtifactRepo + JenkinsJob + + + + + + + 0 + 0 + + false + project + false + + + + + + + /Build/KnowledgePlatform/KnowledgePlatform + + SUCCESS + 0 + BLUE + true + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-learning-platform.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 1 + false + + + + pipelines/upload/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4j/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4j/config.xml new file mode 100644 index 0000000000..b7727db72d --- /dev/null +++ b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4j/config.xml @@ -0,0 +1,108 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + absolute_job_path + <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> + Build/KnowledgePlatform/Neo4j + false + + + build_number + <font color=darkgreen size=2><b>OPTIONAL: Specify the build job number to upload / copy the artifact built in that job.</b></font> + lastSuccessfulBuild + false + + + artifact_source + <font color=black size=2><b> +ArtifactRepo - Upload and keep a copy of the artifact in Jenkins, JenkinsJob - Just keep a copy of the artifact in Jenkins.</b></font> + + + ArtifactRepo + JenkinsJob + + + + + + + 0 + 0 + + false + project + false + + + + + + + /Build/KnowledgePlatform/Neo4j + + SUCCESS + 0 + BLUE + true + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-learning-platform.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 1 + false + + + + pipelines/upload/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/KnowledgePlatform/jobs/SyncTool/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/KnowledgePlatform/jobs/SyncTool/config.xml new file mode 100644 index 0000000000..991e405155 --- /dev/null +++ b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/KnowledgePlatform/jobs/SyncTool/config.xml @@ -0,0 +1,108 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + absolute_job_path + <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> + Build/KnowledgePlatform/SyncTool + false + + + build_number + <font color=darkgreen size=2><b>OPTIONAL: Specify the build job number to upload / copy the artifact built in that job.</b></font> + lastSuccessfulBuild + false + + + artifact_source + <font color=black size=2><b> +ArtifactRepo - Upload and keep a copy of the artifact in Jenkins, JenkinsJob - Just keep a copy of the artifact in Jenkins.</b></font> + + + ArtifactRepo + JenkinsJob + + + + + + + 0 + 0 + + false + project + false + + + + + + + /Build/KnowledgePlatform/SyncTool + + SUCCESS + 0 + BLUE + true + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-learning-platform.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 1 + false + + + + pipelines/upload/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/KnowledgePlatform/jobs/Yarn/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/KnowledgePlatform/jobs/Yarn/config.xml new file mode 100644 index 0000000000..b45c513b5b --- /dev/null +++ b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/KnowledgePlatform/jobs/Yarn/config.xml @@ -0,0 +1,108 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + absolute_job_path + <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> + Build/KnowledgePlatform/Yarn + false + + + build_number + <font color=darkgreen size=2><b>OPTIONAL: Specify the build job number to upload / copy the artifact built in that job.</b></font> + lastSuccessfulBuild + false + + + artifact_source + <font color=black size=2><b> +ArtifactRepo - Upload and keep a copy of the artifact in Jenkins, JenkinsJob - Just keep a copy of the artifact in Jenkins.</b></font> + + + ArtifactRepo + JenkinsJob + + + + + + + 0 + 0 + + false + project + false + + + + + + + /Build/KnowledgePlatform/Yarn + + SUCCESS + 0 + BLUE + true + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-learning-platform.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 1 + false + + + + pipelines/upload/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Plugins/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Plugins/config.xml new file mode 100644 index 0000000000..e25dcd1341 --- /dev/null +++ b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Plugins/config.xml @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + All + false + false + + + + + + + + false + + + + \ No newline at end of file diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Plugins/jobs/CEPlugins/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Plugins/jobs/CEPlugins/config.xml new file mode 100644 index 0000000000..5c380348d6 --- /dev/null +++ b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Plugins/jobs/CEPlugins/config.xml @@ -0,0 +1,93 @@ + + + + + false + + + + -1 + -1 + -1 + -1 + + + + + false + false + + + + + absolute_job_path + <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> + Build/Plugins/CEPlugins + false + + + build_number + <font color=darkgreen size=2><b>OPTIONAL: Specify the build job number to upload / copy the artifact built in that job.</b></font> + lastSuccessfulBuild + false + + + artifact_source + <font color=black size=2><b> +ArtifactRepo - Upload and keep a copy of the artifact in Jenkins, JenkinsJob - Just keep a copy of the artifact in Jenkins.</b></font> + + + ArtifactRepo + JenkinsJob + + + + + + + 0 + 0 + + false + project + false + + + + + + + Build/Plugins/CEPlugins + + SUCCESS + 0 + BLUE + true + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + pipelines/upload/plugins/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Plugins/jobs/CollectionEditor/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Plugins/jobs/CollectionEditor/config.xml new file mode 100644 index 0000000000..b071455dd9 --- /dev/null +++ b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Plugins/jobs/CollectionEditor/config.xml @@ -0,0 +1,93 @@ + + + + + false + + + + -1 + -1 + -1 + -1 + + + + + false + false + + + + + absolute_job_path + <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> + Build/Plugins/CollectionEditor + false + + + build_number + <font color=darkgreen size=2><b>OPTIONAL: Specify the build job number to upload / copy the artifact built in that job.</b></font> + lastSuccessfulBuild + false + + + artifact_source + <font color=black size=2><b> +ArtifactRepo - Upload and keep a copy of the artifact in Jenkins, JenkinsJob - Just keep a copy of the artifact in Jenkins.</b></font> + + + ArtifactRepo + JenkinsJob + + + + + + + 0 + 0 + + false + project + false + + + + + + + Build/Plugins/CollectionEditor + + SUCCESS + 0 + BLUE + true + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + pipelines/upload/plugins/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Plugins/jobs/ContentFramework/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Plugins/jobs/ContentFramework/config.xml new file mode 100644 index 0000000000..0e4c842ced --- /dev/null +++ b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Plugins/jobs/ContentFramework/config.xml @@ -0,0 +1,93 @@ + + + + + false + + + + -1 + -1 + -1 + -1 + + + + + false + false + + + + + absolute_job_path + <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> + Build/Plugins/ContentFramework + false + + + build_number + <font color=darkgreen size=2><b>OPTIONAL: Specify the build job number to upload / copy the artifact built in that job.</b></font> + lastSuccessfulBuild + false + + + artifact_source + <font color=black size=2><b> +ArtifactRepo - Upload and keep a copy of the artifact in Jenkins, JenkinsJob - Just keep a copy of the artifact in Jenkins.</b></font> + + + ArtifactRepo + JenkinsJob + + + + + + + 0 + 0 + + false + project + false + + + + + + + Build/Plugins/ContentFramework + + SUCCESS + 0 + BLUE + true + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + pipelines/upload/plugins/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Plugins/jobs/ContentRendererPreview/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Plugins/jobs/ContentRendererPreview/config.xml new file mode 100644 index 0000000000..f699829e2f --- /dev/null +++ b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Plugins/jobs/ContentRendererPreview/config.xml @@ -0,0 +1,93 @@ + + + + + false + + + + -1 + -1 + -1 + -1 + + + + + false + false + + + + + absolute_job_path + <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> + Build/Plugins/ContentRendererPreview + false + + + build_number + <font color=darkgreen size=2><b>OPTIONAL: Specify the build job number to upload / copy the artifact built in that job.</b></font> + lastSuccessfulBuild + false + + + artifact_source + <font color=black size=2><b> +ArtifactRepo - Upload and keep a copy of the artifact in Jenkins, JenkinsJob - Just keep a copy of the artifact in Jenkins.</b></font> + + + ArtifactRepo + JenkinsJob + + + + + + + 0 + 0 + + false + project + false + + + + + + + Build/Plugins/ContentRendererPreview + + SUCCESS + 0 + BLUE + true + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + pipelines/upload/plugins/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Plugins/jobs/GenericEditor/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Plugins/jobs/GenericEditor/config.xml new file mode 100644 index 0000000000..4ce788e56e --- /dev/null +++ b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Plugins/jobs/GenericEditor/config.xml @@ -0,0 +1,93 @@ + + + + + false + + + + -1 + -1 + -1 + -1 + + + + + false + false + + + + + absolute_job_path + <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> + Build/Plugins/GenericEditor + false + + + build_number + <font color=darkgreen size=2><b>OPTIONAL: Specify the build job number to upload / copy the artifact built in that job.</b></font> + lastSuccessfulBuild + false + + + artifact_source + <font color=black size=2><b> +ArtifactRepo - Upload and keep a copy of the artifact in Jenkins, JenkinsJob - Just keep a copy of the artifact in Jenkins.</b></font> + + + ArtifactRepo + JenkinsJob + + + + + + + 0 + 0 + + false + project + false + + + + + + + Build/Plugins/GenericEditor + + SUCCESS + 0 + BLUE + true + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + pipelines/upload/plugins/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Build/config.xml b/deploy/jenkins/jobs/Build/config.xml new file mode 100644 index 0000000000..6fe3ca0b64 --- /dev/null +++ b/deploy/jenkins/jobs/Build/config.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + All + false + false + + + + + + + + false + + + + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Build/jobs/Core/config.xml b/deploy/jenkins/jobs/Build/jobs/Core/config.xml new file mode 100644 index 0000000000..68477b8ac7 --- /dev/null +++ b/deploy/jenkins/jobs/Build/jobs/Core/config.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + All + false + false + + + + + + + + false + + + + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Build/jobs/Core/jobs/APIManager/config.xml b/deploy/jenkins/jobs/Build/jobs/Core/jobs/APIManager/config.xml new file mode 100644 index 0000000000..e774141dde --- /dev/null +++ b/deploy/jenkins/jobs/Build/jobs/Core/jobs/APIManager/config.xml @@ -0,0 +1,38 @@ + + + + + false + + + false + false + + + + false + project + false + + + + + + true + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Build/jobs/Core/jobs/APIManagerEcho/config.xml b/deploy/jenkins/jobs/Build/jobs/Core/jobs/APIManagerEcho/config.xml new file mode 100644 index 0000000000..d89b4b7bf9 --- /dev/null +++ b/deploy/jenkins/jobs/Build/jobs/Core/jobs/APIManagerEcho/config.xml @@ -0,0 +1,31 @@ + + + + + false + + + false + false + + + + + true + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Build/jobs/Core/jobs/AdminUtils/config.xml b/deploy/jenkins/jobs/Build/jobs/Core/jobs/AdminUtils/config.xml new file mode 100644 index 0000000000..7fe22243fc --- /dev/null +++ b/deploy/jenkins/jobs/Build/jobs/Core/jobs/AdminUtils/config.xml @@ -0,0 +1,63 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 10 + + + + + false + false + + + 0 + 0 + + false + project + false + + + + + + + + + + + + + true + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Build/jobs/Core/jobs/Badger/config.xml b/deploy/jenkins/jobs/Build/jobs/Core/jobs/Badger/config.xml new file mode 100644 index 0000000000..47f3fd52b7 --- /dev/null +++ b/deploy/jenkins/jobs/Build/jobs/Core/jobs/Badger/config.xml @@ -0,0 +1,84 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 10 + + + + + false + false + + + + + github_release_tag + <font color=red size=2><b>CAUTION: If the value is blank, latest code will be built. Specify github tag name to build from a tag.</b></font> + + false + + + + + 0 + 0 + + false + project + false + + + + + + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + images/openbadger/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Build/jobs/Core/jobs/Cassandra/config.xml b/deploy/jenkins/jobs/Build/jobs/Core/jobs/Cassandra/config.xml new file mode 100644 index 0000000000..8aef6a2b1b --- /dev/null +++ b/deploy/jenkins/jobs/Build/jobs/Core/jobs/Cassandra/config.xml @@ -0,0 +1,84 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 10 + + + + + false + false + + + + + github_release_tag + <font color=red size=2><b>CAUTION: If the value is blank, latest code will be built. Specify github tag name to build from a tag.</b></font> + + false + + + + + 0 + 0 + + false + project + false + + + + + + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-utils.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Build/jobs/Core/jobs/CloudStorageSDK/config.xml b/deploy/jenkins/jobs/Build/jobs/Core/jobs/CloudStorageSDK/config.xml new file mode 100644 index 0000000000..aaba538275 --- /dev/null +++ b/deploy/jenkins/jobs/Build/jobs/Core/jobs/CloudStorageSDK/config.xml @@ -0,0 +1,84 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 1 + + + + + false + false + + + + + github_release_tag + <font color=red size=2><b>CAUTION: If the value is blank, latest code will be built. Specify github tag name to build from a tag.</b></font> + + false + + + + + 0 + 0 + + false + project + false + + + + + + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-cloud-storage-sdk.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + Jenkinsfile + false + + + true + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Build/jobs/Core/jobs/Config/config.xml b/deploy/jenkins/jobs/Build/jobs/Core/jobs/Config/config.xml new file mode 100644 index 0000000000..24de44f2a1 --- /dev/null +++ b/deploy/jenkins/jobs/Build/jobs/Core/jobs/Config/config.xml @@ -0,0 +1,84 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 10 + + + + + false + false + + + + + github_release_tag + <font color=red size=2><b>CAUTION: If the value is blank, latest code will be built. Specify github tag name to build from a tag.</b></font> + + false + + + + + 0 + 0 + + false + project + false + + + + + + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-config.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Build/jobs/Core/jobs/Content/config.xml b/deploy/jenkins/jobs/Build/jobs/Core/jobs/Content/config.xml new file mode 100644 index 0000000000..5e188b455b --- /dev/null +++ b/deploy/jenkins/jobs/Build/jobs/Core/jobs/Content/config.xml @@ -0,0 +1,77 @@ + + + + + false + + + + -1 + -1 + -1 + 10 + + + + + false + false + + + + + github_release_tag + <font color=red size=2><b>CAUTION: If the value is blank, latest code will be built. Specify github tag name to build from a tag.</b></font> + + false + + + + + 0 + 0 + + false + project + false + + + + + + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-content-service.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Build/jobs/Core/jobs/Keycloak/config.xml b/deploy/jenkins/jobs/Build/jobs/Core/jobs/Keycloak/config.xml new file mode 100644 index 0000000000..19f208676c --- /dev/null +++ b/deploy/jenkins/jobs/Build/jobs/Core/jobs/Keycloak/config.xml @@ -0,0 +1,77 @@ + + + + + false + + + + -1 + -1 + -1 + 1 + + + + + false + false + + + + + github_release_tag + <font color=red size=2><b>CAUTION: If the value is blank, latest code will be built. Specify github tag name to build from a tag.</b></font> + + false + + + + + 0 + 0 + + false + project + false + + + + + + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-auth.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 1 + false + + + + keycloak/scripts/pipelines/sunbird-auth-build/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Build/jobs/Core/jobs/Learner/config.xml b/deploy/jenkins/jobs/Build/jobs/Core/jobs/Learner/config.xml new file mode 100644 index 0000000000..7effd5e779 --- /dev/null +++ b/deploy/jenkins/jobs/Build/jobs/Core/jobs/Learner/config.xml @@ -0,0 +1,84 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 10 + + + + + false + false + + + + + github_release_tag + <font color=red size=2><b>CAUTION: If the value is blank, latest code will be built. Specify github tag name to build from a tag.</b></font> + + false + + + + + 0 + 0 + + false + project + false + + + + + + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-lms-service.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Build/jobs/Core/jobs/Player/config.xml b/deploy/jenkins/jobs/Build/jobs/Core/jobs/Player/config.xml new file mode 100644 index 0000000000..91415a2d42 --- /dev/null +++ b/deploy/jenkins/jobs/Build/jobs/Core/jobs/Player/config.xml @@ -0,0 +1,84 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 10 + + + + + false + false + + + + + github_release_tag + <font color=red size=2><b>CAUTION: If the value is blank, latest code will be built. Specify github tag name to build from a tag.</b></font> + + false + + + + + 0 + 0 + + false + project + false + + + + + + + + + + + + + 2 + + + https://github.com/Sunbird-Ed/SunbirdEd-portal.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Build/jobs/Core/jobs/Proxy/config.xml b/deploy/jenkins/jobs/Build/jobs/Core/jobs/Proxy/config.xml new file mode 100644 index 0000000000..82d230efb7 --- /dev/null +++ b/deploy/jenkins/jobs/Build/jobs/Core/jobs/Proxy/config.xml @@ -0,0 +1,75 @@ + + + + + false + + + + -1 + -1 + -1 + 10 + + + + + false + false + + + + + github_release_tag + <font color=red size=2><b>CAUTION: If the value is blank, latest code will be built. Specify github tag name to build from a tag.</b></font> + + false + + + + + + false + project + false + + + + + + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + images/proxy/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Build/jobs/Core/jobs/Telemetry/config.xml b/deploy/jenkins/jobs/Build/jobs/Core/jobs/Telemetry/config.xml new file mode 100644 index 0000000000..ae99c15c50 --- /dev/null +++ b/deploy/jenkins/jobs/Build/jobs/Core/jobs/Telemetry/config.xml @@ -0,0 +1,84 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 10 + + + + + false + false + + + + + github_release_tag + <font color=red size=2><b>CAUTION: If the value is blank, latest code will be built. Specify github tag name to build from a tag.</b></font> + + false + + + + + 0 + 0 + + false + project + false + + + + + + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-telemetry-service.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Build/jobs/DataPipeline/config.xml b/deploy/jenkins/jobs/Build/jobs/DataPipeline/config.xml new file mode 100644 index 0000000000..68477b8ac7 --- /dev/null +++ b/deploy/jenkins/jobs/Build/jobs/DataPipeline/config.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + All + false + false + + + + + + + + false + + + + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Build/jobs/DataPipeline/jobs/Analytics/config.xml b/deploy/jenkins/jobs/Build/jobs/DataPipeline/jobs/Analytics/config.xml new file mode 100644 index 0000000000..692838a32c --- /dev/null +++ b/deploy/jenkins/jobs/Build/jobs/DataPipeline/jobs/Analytics/config.xml @@ -0,0 +1,84 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 1 + + + + + false + false + + + + + github_release_tag + <font color=red size=2><b>CAUTION: If the value is blank, latest code will be built. Specify github tag name to build from a tag.</b></font> + + false + + + + + 0 + 0 + + false + project + false + + + + + + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-analytics.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Build/jobs/DataPipeline/jobs/DataPipeline/config.xml b/deploy/jenkins/jobs/Build/jobs/DataPipeline/jobs/DataPipeline/config.xml new file mode 100644 index 0000000000..aeadd32be9 --- /dev/null +++ b/deploy/jenkins/jobs/Build/jobs/DataPipeline/jobs/DataPipeline/config.xml @@ -0,0 +1,84 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 1 + + + + + false + false + + + + + github_release_tag + <font color=red size=2><b>CAUTION: If the value is blank, latest code will be built. Specify github tag name to build from a tag.</b></font> + + false + + + + + 0 + 0 + + false + project + false + + + + + + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/build/data-pipeline/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Build/jobs/DataPipeline/jobs/Secor/config.xml b/deploy/jenkins/jobs/Build/jobs/DataPipeline/jobs/Secor/config.xml new file mode 100644 index 0000000000..dae00811de --- /dev/null +++ b/deploy/jenkins/jobs/Build/jobs/DataPipeline/jobs/Secor/config.xml @@ -0,0 +1,84 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 1 + + + + + false + false + + + + + github_release_tag + <font color=red size=2><b>CAUTION: If the value is blank, latest code will be built. Specify github tag name to build from a tag.</b></font> + + false + + + + + 0 + 0 + + false + project + false + + + + + + + + + + + + + 2 + + + https://github.com/project-sunbird/secor.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Build/jobs/KnowledgePlatform/config.xml b/deploy/jenkins/jobs/Build/jobs/KnowledgePlatform/config.xml new file mode 100644 index 0000000000..6fe3ca0b64 --- /dev/null +++ b/deploy/jenkins/jobs/Build/jobs/KnowledgePlatform/config.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + All + false + false + + + + + + + + false + + + + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Build/jobs/KnowledgePlatform/jobs/KnowledgePlatform/config.xml b/deploy/jenkins/jobs/Build/jobs/KnowledgePlatform/jobs/KnowledgePlatform/config.xml new file mode 100644 index 0000000000..a631630f33 --- /dev/null +++ b/deploy/jenkins/jobs/Build/jobs/KnowledgePlatform/jobs/KnowledgePlatform/config.xml @@ -0,0 +1,84 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 1 + + + + + false + false + + + + + github_release_tag + <font color=red size=2><b>CAUTION: If the value is blank, latest code will be built. Specify github tag name to build from a tag.</b></font> + + false + + + + + 0 + 0 + + false + project + false + + + + + + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-learning-platform.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/build/learning/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Build/jobs/KnowledgePlatform/jobs/Neo4j/config.xml b/deploy/jenkins/jobs/Build/jobs/KnowledgePlatform/jobs/Neo4j/config.xml new file mode 100644 index 0000000000..b0d44a4447 --- /dev/null +++ b/deploy/jenkins/jobs/Build/jobs/KnowledgePlatform/jobs/Neo4j/config.xml @@ -0,0 +1,84 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 1 + + + + + false + false + + + + + github_release_tag + <font color=red size=2><b>CAUTION: If the value is blank, latest code will be built. Specify github tag name to build from a tag.</b></font> + + false + + + + + 0 + 0 + + false + project + false + + + + + + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-learning-platform.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/build/neo4j/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Build/jobs/KnowledgePlatform/jobs/SyncTool/config.xml b/deploy/jenkins/jobs/Build/jobs/KnowledgePlatform/jobs/SyncTool/config.xml new file mode 100644 index 0000000000..d057b1b82f --- /dev/null +++ b/deploy/jenkins/jobs/Build/jobs/KnowledgePlatform/jobs/SyncTool/config.xml @@ -0,0 +1,84 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 1 + + + + + false + false + + + + + github_release_tag + <font color=red size=2><b>CAUTION: If the value is blank, latest code will be built. Specify github tag name to build from a tag.</b></font> + + false + + + + + 0 + 0 + + false + project + false + + + + + + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-learning-platform.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/build/synctool/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Build/jobs/KnowledgePlatform/jobs/Yarn/config.xml b/deploy/jenkins/jobs/Build/jobs/KnowledgePlatform/jobs/Yarn/config.xml new file mode 100644 index 0000000000..4b67a7fe79 --- /dev/null +++ b/deploy/jenkins/jobs/Build/jobs/KnowledgePlatform/jobs/Yarn/config.xml @@ -0,0 +1,91 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 1 + + + + + false + false + + + + + github_release_tag + <font color=red size=2><b>CAUTION: If the value is blank, latest code will be built. Specify github tag name to build from a tag.</b></font> + + false + + + + + 0 + 0 + + false + project + false + + + + + + + KnowledgePlatform + + SUCCESS + 0 + BLUE + true + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-learning-platform.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/build/yarn/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Build/jobs/Plugins/config.xml b/deploy/jenkins/jobs/Build/jobs/Plugins/config.xml new file mode 100644 index 0000000000..68477b8ac7 --- /dev/null +++ b/deploy/jenkins/jobs/Build/jobs/Plugins/config.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + All + false + false + + + + + + + + false + + + + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Build/jobs/Plugins/jobs/CEPlugins/config.xml b/deploy/jenkins/jobs/Build/jobs/Plugins/jobs/CEPlugins/config.xml new file mode 100644 index 0000000000..0280e48934 --- /dev/null +++ b/deploy/jenkins/jobs/Build/jobs/Plugins/jobs/CEPlugins/config.xml @@ -0,0 +1,70 @@ + + + + + false + + + + -1 + -1 + -1 + -1 + + + + + false + false + + + + + github_release_tag + <font color=red size=2><b>CAUTION: If the value is blank, latest code will be built. Specify github tag name to build from a tag.</b></font> + + false + + + + + 0 + 0 + + false + project + false + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-content-plugins.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Build/jobs/Plugins/jobs/CollectionEditor/config.xml b/deploy/jenkins/jobs/Build/jobs/Plugins/jobs/CollectionEditor/config.xml new file mode 100644 index 0000000000..4c72168f2b --- /dev/null +++ b/deploy/jenkins/jobs/Build/jobs/Plugins/jobs/CollectionEditor/config.xml @@ -0,0 +1,70 @@ + + + + + false + + + + -1 + -1 + -1 + -1 + + + + + false + false + + + + + github_release_tag + <font color=red size=2><b>CAUTION: If the value is blank, latest code will be built. Specify github tag name to build from a tag.</b></font> + + false + + + + + 0 + 0 + + false + project + false + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-collection-editor.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Build/jobs/Plugins/jobs/ContentFramework/config.xml b/deploy/jenkins/jobs/Build/jobs/Plugins/jobs/ContentFramework/config.xml new file mode 100644 index 0000000000..0b658bc434 --- /dev/null +++ b/deploy/jenkins/jobs/Build/jobs/Plugins/jobs/ContentFramework/config.xml @@ -0,0 +1,70 @@ + + + + + false + + + + -1 + -1 + -1 + -1 + + + + + false + false + + + + + github_release_tag + <font color=red size=2><b>CAUTION: If the value is blank, latest code will be built. Specify github tag name to build from a tag.</b></font> + + false + + + + + 0 + 0 + + false + project + false + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-content-editor.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Build/jobs/Plugins/jobs/ContentRendererPreview/config.xml b/deploy/jenkins/jobs/Build/jobs/Plugins/jobs/ContentRendererPreview/config.xml new file mode 100644 index 0000000000..5256477d20 --- /dev/null +++ b/deploy/jenkins/jobs/Build/jobs/Plugins/jobs/ContentRendererPreview/config.xml @@ -0,0 +1,70 @@ + + + + + false + + + + -1 + -1 + -1 + -1 + + + + + false + false + + + + + github_release_tag + <font color=red size=2><b>CAUTION: If the value is blank, latest code will be built. Specify github tag name to build from a tag.</b></font> + + false + + + + + 0 + 0 + + false + project + false + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-content-player.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Build/jobs/Plugins/jobs/GenericEditor/config.xml b/deploy/jenkins/jobs/Build/jobs/Plugins/jobs/GenericEditor/config.xml new file mode 100644 index 0000000000..0c8521698a --- /dev/null +++ b/deploy/jenkins/jobs/Build/jobs/Plugins/jobs/GenericEditor/config.xml @@ -0,0 +1,70 @@ + + + + + false + + + + -1 + -1 + -1 + -1 + + + + + false + false + + + + + github_release_tag + <font color=red size=2><b>CAUTION: If the value is blank, latest code will be built. Specify github tag name to build from a tag.</b></font> + + false + + + + + 0 + 0 + + false + project + false + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-generic-editor.git + + + + + ${public_repo_branch} + + + false + + + + false + false + + 0 + false + + + + Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/config.xml b/deploy/jenkins/jobs/Deploy/config.xml new file mode 100644 index 0000000000..68477b8ac7 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/config.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + All + false + false + + + + + + + + false + + + + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/config.xml new file mode 100644 index 0000000000..6fe3ca0b64 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/config.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + All + false + false + + + + + + + + false + + + + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/config.xml new file mode 100644 index 0000000000..68477b8ac7 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/config.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + All + false + false + + + + + + + + false + + + + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/APIManager/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/APIManager/config.xml new file mode 100644 index 0000000000..817790d549 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/APIManager/config.xml @@ -0,0 +1,97 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + absolute_job_path + <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> + ArtifactUpload/dev/Core/APIManager + false + + + image_tag + <font color=red size=2><b>CAUTION: If the value is blank, latest built image will be deployed.</b></font> + + false + + + + + 0 + 0 + + false + project + false + + + + + + + ArtifactUpload/dev/Core/APIManager + + SUCCESS + 0 + BLUE + true + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/deploy/api-manager/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/AdminUtils/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/AdminUtils/config.xml new file mode 100644 index 0000000000..3f60232300 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/AdminUtils/config.xml @@ -0,0 +1,97 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + absolute_job_path + <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> + ArtifactUpload/dev/Core/AdminUtils + false + + + image_tag + <font color=red size=2><b>CAUTION: If the value is blank, latest built image will be deployed.</b></font> + + false + + + + + 0 + 0 + + false + project + false + + + + + + + ArtifactUpload/dev/Core/AdminUtils + + SUCCESS + 0 + BLUE + true + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/deploy/adminutils/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/ApplicationElasticSearch/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/ApplicationElasticSearch/config.xml new file mode 100644 index 0000000000..360fb08734 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/ApplicationElasticSearch/config.xml @@ -0,0 +1,58 @@ + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + false + project + false + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 1 + false + + + + pipelines/deploy/application-elasticsearch/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Badger/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Badger/config.xml new file mode 100644 index 0000000000..fef35385ed --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Badger/config.xml @@ -0,0 +1,86 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + absolute_job_path + <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> + ArtifactUpload/dev/Core/Badger + false + + + image_tag + <font color=red size=2><b>CAUTION: If the value is blank, latest built image will be deployed.</b></font> + + false + + + + + 0 + 0 + + false + project + false + + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/deploy/badger/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Bootstrap/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Bootstrap/config.xml new file mode 100644 index 0000000000..d18ba30951 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Bootstrap/config.xml @@ -0,0 +1,61 @@ + + + + + false + + + + -1 + -1 + -1 + 5 + + + + false + false + + + + + hosts + <font color=black size=2><b>Enter the host name to be bootstrapped.</b></font> + all + false + + + + + 0 + 0 + + false + project + false + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + pipelines/bootstrap/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Cassandra/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Cassandra/config.xml new file mode 100644 index 0000000000..bc84353c76 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Cassandra/config.xml @@ -0,0 +1,163 @@ + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + absolute_job_path + <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> + ArtifactUpload/dev/Core/Cassandra + false + + + artifact_source + <font color=black size=2><b> +ArtifactRepo - Download the artifact from azure blob, JenkinsJob - Use the atrifact from Jenkins job.</b></font> + choice-parameter-9600649228560 + 1 + + false + + + + false + + + Cassandra + + + PT_SINGLE_SELECT + false + 1 + + + build_number + + choice-parameter-9600651313765 + 1 + + false + + + + false + + + Cassandra + + artifact_source + ET_FORMATTED_HTML + true + + + artifact_version + + choice-parameter-9600653373369 + 1 + + false + + + + false + + + Cassandra + + artifact_source + ET_FORMATTED_HTML + true + + + + + 0 + 0 + + false + project + false + + + + + + + ArtifactUpload/dev/Core/Cassandra + + SUCCESS + 0 + BLUE + true + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/deploy/cassandra-deploy/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Config/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Config/config.xml new file mode 100644 index 0000000000..fa056df081 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Config/config.xml @@ -0,0 +1,86 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + absolute_job_path + <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> + ArtifactUpload/dev/Core/Config + false + + + image_tag + <font color=red size=2><b>CAUTION: If the value is blank, latest built image will be deployed.</b></font> + + false + + + + + 0 + 0 + + false + project + false + + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/deploy/config-service/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Content/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Content/config.xml new file mode 100644 index 0000000000..4ed5b292c8 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Content/config.xml @@ -0,0 +1,97 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + absolute_job_path + <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> + ArtifactUpload/dev/Core/Content + false + + + image_tag + <font color=red size=2><b>CAUTION: If the value is blank, latest built image will be deployed.</b></font> + + false + + + + + 0 + 0 + + false + project + false + + + + + + + ArtifactUpload/dev/Core/Content + + SUCCESS + 0 + BLUE + true + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/deploy/content/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/FuntionalTestCases/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/FuntionalTestCases/config.xml new file mode 100644 index 0000000000..1e97feaa5a --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/FuntionalTestCases/config.xml @@ -0,0 +1,65 @@ + + + + + + + + + + + + + false + + + + + H 23 * * * + + + + + + -1 + 15 + -1 + -1 + + + + false + false + + + + false + project + false + + 1 + + + + + 2 + + + https://github.com/project-sunbird/sunbird-functional-tests.git + + + + + ${public_repo_branch} + + + false + + + + Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Keycloak/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Keycloak/config.xml new file mode 100644 index 0000000000..44631971c4 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Keycloak/config.xml @@ -0,0 +1,163 @@ + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + absolute_job_path + <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> + ArtifactUpload/dev/Core/Keycloak + false + + + artifact_source + <font color=black size=2><b> +ArtifactRepo - Download the artifact from azure blob, JenkinsJob - Use the atrifact from Jenkins job.</b></font> + choice-parameter-9600649228560 + 1 + + false + + + + false + + + Keycloak + + + PT_SINGLE_SELECT + false + 1 + + + build_number + + choice-parameter-9600651313765 + 1 + + false + + + + false + + + Keycloak + + artifact_source + ET_FORMATTED_HTML + true + + + artifact_version + + choice-parameter-9600653373369 + 1 + + false + + + + false + + + Keycloak + + artifact_source + ET_FORMATTED_HTML + true + + + + + 0 + 0 + + false + project + false + + + + + + + ArtifactUpload/dev/Core/Keycloak + + SUCCESS + 0 + BLUE + true + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 1 + false + + + + pipelines/deploy/keycloak/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/KeycloakRealm/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/KeycloakRealm/config.xml new file mode 100644 index 0000000000..6a9232507a --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/KeycloakRealm/config.xml @@ -0,0 +1,68 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + false + project + false + + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + keycloak-deployment + + + false + + + + true + false + + 1 + false + + + + pipelines/deploy/keycloak-realm/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Learner/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Learner/config.xml new file mode 100644 index 0000000000..82ccfbd153 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Learner/config.xml @@ -0,0 +1,97 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + absolute_job_path + <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> + ArtifactUpload/dev/Core/Learner + false + + + image_tag + <font color=red size=2><b>CAUTION: If the value is blank, latest built image will be deployed.</b></font> + + false + + + + + 0 + 0 + + false + project + false + + + + + + + ArtifactUpload/dev/Core/Learner + + SUCCESS + 0 + BLUE + true + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 1 + false + + + + pipelines/deploy/learner/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/LoggerElasticSearch/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/LoggerElasticSearch/config.xml new file mode 100644 index 0000000000..d1cee1407a --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/LoggerElasticSearch/config.xml @@ -0,0 +1,60 @@ + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + 0 + 0 + + false + project + false + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 1 + false + + + + pipelines/deploy/logger-elasticsearch/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Logging/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Logging/config.xml new file mode 100644 index 0000000000..1dfbb2a98a --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Logging/config.xml @@ -0,0 +1,60 @@ + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + 0 + 0 + + false + project + false + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 1 + false + + + + pipelines/deploy/logger/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Monitoring/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Monitoring/config.xml new file mode 100644 index 0000000000..9a870e34b6 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Monitoring/config.xml @@ -0,0 +1,60 @@ + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + 0 + 0 + + false + project + false + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 1 + false + + + + pipelines/deploy/monitor/Core/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/OnboardAPIs/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/OnboardAPIs/config.xml new file mode 100644 index 0000000000..26970f24e5 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/OnboardAPIs/config.xml @@ -0,0 +1,67 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + 0 + 0 + + false + project + false + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 1 + false + + + + pipelines/deploy/am-onboard-apis/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/OnboardConsumers/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/OnboardConsumers/config.xml new file mode 100644 index 0000000000..13772a78b5 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/OnboardConsumers/config.xml @@ -0,0 +1,58 @@ + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + false + project + false + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 1 + false + + + + pipelines/deploy/am-onboard-consumers/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Player/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Player/config.xml new file mode 100644 index 0000000000..90e08fdc77 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Player/config.xml @@ -0,0 +1,97 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + absolute_job_path + <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> + ArtifactUpload/dev/Core/Player + false + + + image_tag + <font color=red size=2><b>CAUTION: If the value is blank, latest built image will be deployed.</b></font> + + false + + + + + 0 + 0 + + false + project + false + + + + + + + ArtifactUpload/dev/Core/Player + + SUCCESS + 0 + BLUE + true + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 1 + false + + + + pipelines/deploy/player/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Proxy/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Proxy/config.xml new file mode 100644 index 0000000000..5bfc2f12e0 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Proxy/config.xml @@ -0,0 +1,90 @@ + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + absolute_job_path + <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> + ArtifactUpload/dev/Core/Proxy + false + + + image_tag + <font color=red size=2><b>CAUTION: If the value is blank, latest built image will be deployed.</b></font> + + false + + + + + 0 + 0 + + false + project + false + + + + + + + ArtifactUpload/dev/Core/Proxy + + SUCCESS + 0 + BLUE + true + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 1 + false + + + + pipelines/deploy/proxy/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Telemetry/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Telemetry/config.xml new file mode 100644 index 0000000000..a9d95f0f73 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Telemetry/config.xml @@ -0,0 +1,97 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + absolute_job_path + <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> + ArtifactUpload/dev/Core/Telemetry + false + + + image_tag + <font color=red size=2><b>CAUTION: If the value is blank, latest built image will be deployed.</b></font> + + false + + + + + 0 + 0 + + false + project + false + + + + + + + ArtifactUpload/dev/Core/Telemetry + + SUCCESS + 0 + BLUE + true + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 1 + false + + + + pipelines/deploy/telemetry/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/TelemetryLogstash/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/TelemetryLogstash/config.xml new file mode 100644 index 0000000000..b167ae0167 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/TelemetryLogstash/config.xml @@ -0,0 +1,60 @@ + + + + Deploys Telemetry Logstash Service + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + 0 + 0 + + false + project + false + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 1 + false + + + + pipelines/deploy/telemetry-logstash/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/TelemetryLogstashDataPipeline/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/TelemetryLogstashDataPipeline/config.xml new file mode 100644 index 0000000000..602e2eda1f --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/TelemetryLogstashDataPipeline/config.xml @@ -0,0 +1,58 @@ + + + + Deploys Telemetry Logstash Datapipeline Service + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + false + project + false + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 1 + false + + + + pipelines/deploy/telemetry-logstash-datapipeline/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/config.xml new file mode 100644 index 0000000000..68477b8ac7 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/config.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + All + false + false + + + + + + + + false + + + + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsAPI/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsAPI/config.xml new file mode 100644 index 0000000000..17352bf36c --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsAPI/config.xml @@ -0,0 +1,170 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + absolute_job_path + <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> + ArtifactUpload/dev/DataPipeline/Analytics + false + + + artifact_source + <font color=black size=2><b> +ArtifactRepo - Download the artifact from azure blob, JenkinsJob - Use the atrifact from Jenkins job.</b></font> + choice-parameter-9061667106947 + 1 + + false + + + + false + + + AnalyticsAPI + + + PT_SINGLE_SELECT + false + 1 + + + build_number + + choice-parameter-9061670571657 + 1 + + false + + + + false + + + AnalyticsAPI + + artifact_source + ET_FORMATTED_HTML + true + + + artifact_version + + choice-parameter-9061673103864 + 1 + + false + + + + false + + + AnalyticsAPI + + artifact_source + ET_FORMATTED_HTML + true + + + + + 0 + 0 + + false + project + false + + + + + + + ArtifactUpload/dev/DataPipeline/Analytics + + SUCCESS + 0 + BLUE + true + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/deploy/analytics-api/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsFetchLogs/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsFetchLogs/config.xml new file mode 100644 index 0000000000..bdb4532949 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsFetchLogs/config.xml @@ -0,0 +1,93 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + instance_name + <font color=black size=2><b>Choose the instance to fetch logs.</b></font> + + + spark + analytics-api + secor + cassandra + + + + + action + <font color=black size=2><b>Choose one of the option - Fetch logs or set cronjob.</b></font> + + + fetch-logs + cronjobs + + + + + + + 0 + 0 + + false + project + false + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 1 + false + + + + pipelines/deploy/fetch-logs/Jenkinsfile + false + + + true + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsGeoLocationDBSetup/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsGeoLocationDBSetup/config.xml new file mode 100644 index 0000000000..1dfdaca572 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsGeoLocationDBSetup/config.xml @@ -0,0 +1,67 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + 0 + 0 + + false + project + false + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 1 + false + + + + pipelines/deploy/geolocation-db-setup/Jenkinsfile + false + + + true + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsPopulatePSQLConsumerChannelMapping/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsPopulatePSQLConsumerChannelMapping/config.xml new file mode 100644 index 0000000000..d7a72eae8e --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsPopulatePSQLConsumerChannelMapping/config.xml @@ -0,0 +1,99 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + Consumer_id + <font color=black size=2><b>Mention the consumer ID.</b></font> + id + false + + + Channel_id + <font color=black size=2><b>Channel ID to map with the Consumer ID.</b></font> + channel_id + false + + + status + <font color=black size=2><b> 1 - to activate, 0 - to make it inactive</b></font> + + + 1 + 0 + + + + + Created_by + <font color=black size=2><b>Created by.</b></font> + analytics-team + false + + + + + 0 + 0 + + false + project + false + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/deploy/PopulatePSQL-ConsumerChannelMapping/Jenkinsfile + false + + + true + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsReplayJobs/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsReplayJobs/config.xml new file mode 100644 index 0000000000..5118f01003 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsReplayJobs/config.xml @@ -0,0 +1,113 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + cql_query + <font color=black size=2><b>Specify cql_query if any tables needs to be truncated.<b></font> + 0 + false + + + job_type + <font color=black size=2><b>Specify the job type - Replay or Run.</b></font> + + + replay-job + run-job + generate-metrics + submit-job + + + + + job_id + <font color=black size=2><b>Specify the job id.</b></font> + + false + + + start_date + <font color=black size=2><b>Specify the start date. The default value is just a placeholder which can be changed as per need.</b></font> + 2017-05-01 + false + + + end_date + <font color=black size=2><b>Specify the end date. The default value is just a placeholder which can be changed as per need.</b></font> + 2017-07-11 + false + + + pause_min + <font color=black size=2><b>Specify the # of minutes to pause. The default value is just a placeholder which can be changed as per need.</b></font> + 30 + false + + + + + 0 + 0 + + false + project + false + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/deploy/replay-jobs/Jenkinsfile + false + + + true + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsStartJobManager/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsStartJobManager/config.xml new file mode 100644 index 0000000000..18d2b6956a --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsStartJobManager/config.xml @@ -0,0 +1,77 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + pause_min + <font color=black size=2><b>Pause for # of minutes.</b></font> + 5 + false + + + + + 0 + 0 + + false + project + false + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 1 + false + + + + pipelines/deploy/start-jobmanager/Jenkinsfile + false + + + true + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsSubmitJobs/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsSubmitJobs/config.xml new file mode 100644 index 0000000000..4bc26f549a --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsSubmitJobs/config.xml @@ -0,0 +1,76 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + pause_min + <font color=teal size=2>Pause for # of minutes.</font> + 5 + false + + + + + + false + project + false + + 1 + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/deploy/submit-jobs/Jenkinsfile + false + + + true + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/CassandraDbUpdate/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/CassandraDbUpdate/config.xml new file mode 100644 index 0000000000..18e57478a9 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/CassandraDbUpdate/config.xml @@ -0,0 +1,67 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + 0 + 0 + + false + project + false + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 1 + false + + + + pipelines/deploy/cassandra/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/DataProducts/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/DataProducts/config.xml new file mode 100644 index 0000000000..8555c74ae3 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/DataProducts/config.xml @@ -0,0 +1,170 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + absolute_job_path + <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> + ArtifactUpload/dev/DataPipeline/Analytics + false + + + artifact_source + <font color=black size=2><b> +ArtifactRepo - Download the artifact from azure blob, JenkinsJob - Use the atrifact from Jenkins job.</b></font> + choice-parameter-9061667106947 + 1 + + false + + + + false + + + DataProducts + + + PT_SINGLE_SELECT + false + 1 + + + build_number + + choice-parameter-9061670571657 + 1 + + false + + + + false + + + DataProducts + + artifact_source + ET_FORMATTED_HTML + true + + + artifact_version + + choice-parameter-9061673103864 + 1 + + false + + + + false + + + DataProducts + + artifact_source + ET_FORMATTED_HTML + true + + + + + 0 + 0 + + false + project + false + + + + + + + ArtifactUpload/dev/DataPipeline/Analytics + + SUCCESS + 0 + BLUE + true + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/deploy/data-products/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/KafkaIndexer/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/KafkaIndexer/config.xml new file mode 100644 index 0000000000..9e446e5f2a --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/KafkaIndexer/config.xml @@ -0,0 +1,67 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + 0 + 0 + + false + project + false + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 1 + false + + + + pipelines/deploy/kafka-indexer/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/KafkaSetup/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/KafkaSetup/config.xml new file mode 100644 index 0000000000..daa463c469 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/KafkaSetup/config.xml @@ -0,0 +1,67 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + 0 + 0 + + false + project + false + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 1 + false + + + + pipelines/deploy/kafka/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/Monitoring/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/Monitoring/config.xml new file mode 100644 index 0000000000..c17fd285d9 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/Monitoring/config.xml @@ -0,0 +1,74 @@ + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + 0 + 0 + + false + project + false + + + + + + + ../Core/Monitoring + + FAILURE + 2 + RED + true + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 1 + false + + + + pipelines/deploy/monitor/DataPipeline/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/SamzaTelemetrySchemas/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/SamzaTelemetrySchemas/config.xml new file mode 100644 index 0000000000..0aca8d3e75 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/SamzaTelemetrySchemas/config.xml @@ -0,0 +1,77 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + schema_repo_version + <font color=black size=2><b>Specify the scehma repo version.</b></font> + ${public_repo_branch} + false + + + + + 0 + 0 + + false + project + false + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/deploy/samza-telemetry-schemas/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/Secor/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/Secor/config.xml new file mode 100644 index 0000000000..c6280e1462 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/Secor/config.xml @@ -0,0 +1,170 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + absolute_job_path + <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> + ArtifactUpload/dev/DataPipeline/Secor + false + + + artifact_source + <font color=black size=2><b> +ArtifactRepo - Download the artifact from azure blob, JenkinsJob - Use the atrifact from Jenkins job.</b></font> + choice-parameter-9061667106947 + 1 + + false + + + + false + + + Secor + + + PT_SINGLE_SELECT + false + 1 + + + build_number + + choice-parameter-9061670571657 + 1 + + false + + + + false + + + Secor + + artifact_source + ET_FORMATTED_HTML + true + + + artifact_version + + choice-parameter-9061673103864 + 1 + + false + + + + false + + + Secor + + artifact_source + ET_FORMATTED_HTML + true + + + + + 0 + 0 + + false + project + false + + + + + + + ArtifactUpload/dev/DataPipeline/Secor + + SUCCESS + 0 + BLUE + true + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 1 + false + + + + pipelines/deploy/secor/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/Yarn/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/Yarn/config.xml new file mode 100644 index 0000000000..5b03ff4cb6 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/Yarn/config.xml @@ -0,0 +1,170 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + absolute_job_path + <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> + ArtifactUpload/dev/DataPipeline/DataPipeline + false + + + artifact_source + <font color=black size=2><b> +ArtifactRepo - Download the artifact from azure blob, JenkinsJob - Use the atrifact from Jenkins job.</b></font> + choice-parameter-9061667106947 + 1 + + false + + + + false + + + Yarn + + + PT_SINGLE_SELECT + false + 1 + + + build_number + + choice-parameter-9061670571657 + 1 + + false + + + + false + + + Yarn + + artifact_source + ET_FORMATTED_HTML + true + + + artifact_version + + choice-parameter-9061673103864 + 1 + + false + + + + false + + + Yarn + + artifact_source + ET_FORMATTED_HTML + true + + + + + 0 + 0 + + false + project + false + + + + + + + ArtifactUpload/dev/DataPipeline/DataPipeline + + SUCCESS + 0 + BLUE + true + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 1 + false + + + + pipelines/deploy/yarn/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/config.xml new file mode 100644 index 0000000000..68477b8ac7 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/config.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + All + false + false + + + + + + + + false + + + + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/CassandraDbUpdate/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/CassandraDbUpdate/config.xml new file mode 100644 index 0000000000..5109183f59 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/CassandraDbUpdate/config.xml @@ -0,0 +1,70 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + 0 + 0 + + false + project + false + + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-learning-platform.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 1 + false + + + + pipelines/deploy/cassandra/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/ContentTool/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/ContentTool/config.xml new file mode 100644 index 0000000000..d4b296559d --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/ContentTool/config.xml @@ -0,0 +1,92 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + absolute_job_path + <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> + ArtifactUpload/dev/KnowledgePlatform/KnowledgePlatform + false + + + command + <font color=black size=2><b>Enter the command.</b></font> + sync + false + + + parameters + <font color=black size=2><b>Enter the do id.</b></font> + + false + + + + + 0 + 0 + + false + project + false + + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-learning-platform.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 1 + false + + + + pipelines/deploy/content_tool/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/FileSyncTool/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/FileSyncTool/config.xml new file mode 100644 index 0000000000..5c730b9381 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/FileSyncTool/config.xml @@ -0,0 +1,83 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + absolute_job_path + <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> + ArtifactUpload/dev/KnowledgePlatform/Synctool + false + + + filename + <font color=black size=2><b>Enter valid filename with extention.</b></font> + + false + + + + + 0 + 0 + + false + project + false + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-learning-platform.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/deploy/file-sync-tool/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/KafkaSetup/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/KafkaSetup/config.xml new file mode 100644 index 0000000000..9271927d86 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/KafkaSetup/config.xml @@ -0,0 +1,70 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + 0 + 0 + + false + project + false + + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-learning-platform.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/deploy/kafka-setup/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Learning/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Learning/config.xml new file mode 100644 index 0000000000..1bb8dee30b --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Learning/config.xml @@ -0,0 +1,170 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + absolute_job_path + <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> + ArtifactUpload/dev/KnowledgePlatform/KnowledgePlatform + false + + + artifact_source + <font color=black size=2><b> +ArtifactRepo - Download the artifact from azure blob, JenkinsJob - Use the atrifact from Jenkins job.</b></font> + choice-parameter-12566219493457 + 1 + + false + + + + false + + + Learning + + + PT_SINGLE_SELECT + false + 1 + + + build_number + + choice-parameter-12566221440336 + 1 + + false + + + + false + + + Learning + + artifact_source + ET_FORMATTED_HTML + true + + + artifact_version + + choice-parameter-12566223395914 + 1 + + false + + + + false + + + Learning + + artifact_source + ET_FORMATTED_HTML + true + + + + + 0 + 0 + + false + project + false + + + + + + + ArtifactUpload/dev/KnowledgePlatform/KnowledgePlatform + + SUCCESS + 0 + BLUE + true + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-learning-platform.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/deploy/learning/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Monitoring/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Monitoring/config.xml new file mode 100644 index 0000000000..7ddf1d3e35 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Monitoring/config.xml @@ -0,0 +1,72 @@ + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + false + project + false + + + + + + + ../DataPipeline/Monitoring + + FAILURE + 2 + RED + true + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/deploy/monitor/KnowledgePlatform/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4j/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4j/config.xml new file mode 100644 index 0000000000..25b009260b --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4j/config.xml @@ -0,0 +1,159 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + absolute_job_path + <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> + ArtifactUpload/dev/KnowledgePlatform/Neo4j + false + + + artifact_source + <font color=black size=2><b> +ArtifactRepo - Download the artifact from azure blob, JenkinsJob - Use the atrifact from Jenkins job.</b></font> + choice-parameter-13436883643465 + 1 + + false + + + + false + + + Neo4j + + + PT_SINGLE_SELECT + false + 1 + + + build_number + + choice-parameter-13436885688258 + 1 + + false + + + + false + + + Neo4j + + artifact_source + ET_FORMATTED_HTML + true + + + artifact_version + + choice-parameter-13436888536349 + 1 + + false + + + + false + + + Neo4j + + artifact_source + ET_FORMATTED_HTML + true + + + + + 0 + 0 + + false + project + false + + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-learning-platform.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/deploy/neo4j/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4jDefinitionUpdate/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4jDefinitionUpdate/config.xml new file mode 100644 index 0000000000..8eaf214ccc --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4jDefinitionUpdate/config.xml @@ -0,0 +1,68 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + false + project + false + + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-learning-platform.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/deploy/neo4j-definition-update/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4jElasticSearchSyncTool/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4jElasticSearchSyncTool/config.xml new file mode 100644 index 0000000000..277ab59d96 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4jElasticSearchSyncTool/config.xml @@ -0,0 +1,184 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + absolute_job_path + <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> + ArtifactUpload/dev/KnowledgePlatform/SyncTool + false + + + artifact_source + <font color=black size=2><b> +ArtifactRepo - Download the artifact from azure blob, JenkinsJob - Use the atrifact from Jenkins job.</b></font> + choice-parameter-14175006770414 + 1 + + false + + + + false + + + Neo4jElasticSearchSyncTool + + + PT_SINGLE_SELECT + false + 1 + + + build_number + + choice-parameter-14175008677110 + 1 + + false + + + + false + + + Neo4jElasticSearchSyncTool + + artifact_source + ET_FORMATTED_HTML + true + + + artifact_version + + choice-parameter-14175010584707 + 1 + + false + + + + false + + + Neo4jElasticSearchSyncTool + + artifact_source + ET_FORMATTED_HTML + true + + + command + <font color=black size=2><b>Select a command</b></font> + + + sync + syncbyobjecttype + syncbyids + syncbydaterange + + + + + parameters + <font color=black size=2><b>It is parameter to pass with command.<br> + ex:<br> + --objectType Content<br> + --ids do_10101010,do_20202020<br> + --startDate 2018-03-01 --endDate 2018-03-31<br> + --objectType Content --startDate 2018-03-01 --endDate 2018-03-31<br> + --graphId en --objectType Word<br> + --graph domain --objectType Channel<br></b></font> + --graph domain + false + + + + + 0 + 0 + + false + project + false + + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-learning-platform.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/deploy/neo4j-es-synctool/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Search/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Search/config.xml new file mode 100644 index 0000000000..d1ef2ccb91 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Search/config.xml @@ -0,0 +1,170 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + absolute_job_path + <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> + ArtifactUpload/dev/KnowledgePlatform/KnowledgePlatform + false + + + artifact_source + <font color=black size=2><b> +ArtifactRepo - Download the artifact from azure blob, JenkinsJob - Use the atrifact from Jenkins job.</b></font> + choice-parameter-14760318274338 + 1 + + false + + + + false + + + Search + + + PT_SINGLE_SELECT + false + 1 + + + build_number + + choice-parameter-14760320375443 + 1 + + false + + + + false + + + Search + + artifact_source + ET_FORMATTED_HTML + true + + + artifact_version + + choice-parameter-14760322347747 + 1 + + false + + + + false + + + Search + + artifact_source + ET_FORMATTED_HTML + true + + + + + 0 + 0 + + false + project + false + + + + + + + ArtifactUpload/dev/KnowledgePlatform/KnowledgePlatform + + SUCCESS + 0 + BLUE + true + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-learning-platform.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/deploy/search/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/StartNeo4jCluster/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/StartNeo4jCluster/config.xml new file mode 100644 index 0000000000..9385b056ff --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/StartNeo4jCluster/config.xml @@ -0,0 +1,70 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + 0 + 0 + + false + project + false + + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-learning-platform.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/deploy/neo4j-start-cluster/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/StopNeo4jCluster/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/StopNeo4jCluster/config.xml new file mode 100644 index 0000000000..fadcb50b63 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/StopNeo4jCluster/config.xml @@ -0,0 +1,70 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + 0 + 0 + + false + project + false + + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-learning-platform.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 1 + false + + + + pipelines/deploy/neo4j-stop-cluster/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/ValidateLearning/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/ValidateLearning/config.xml new file mode 100644 index 0000000000..599982859e --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/ValidateLearning/config.xml @@ -0,0 +1,68 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + false + project + false + + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-learning-platform.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/deploy/validate-learning/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Yarn/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Yarn/config.xml new file mode 100644 index 0000000000..880c93ef59 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Yarn/config.xml @@ -0,0 +1,170 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + absolute_job_path + <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> + ArtifactUpload/dev/KnowledgePlatform/Yarn + false + + + artifact_source + <font color=black size=2><b> +ArtifactRepo - Download the artifact from azure blob, JenkinsJob - Use the atrifact from Jenkins job.</b></font> + choice-parameter-2874232768088857 + 1 + + false + + + + false + + + Yarn + + + PT_SINGLE_SELECT + false + 1 + + + build_number + + choice-parameter-2874449088885218 + 1 + + false + + + + false + + + Yarn + + artifact_source + ET_FORMATTED_HTML + true + + + artifact_version + + choice-parameter-2877900313772031 + 1 + + false + + + + false + + + Yarn + + artifact_source + ET_FORMATTED_HTML + true + + + + + 0 + 0 + + false + project + false + + + + + + + ArtifactUpload/dev/KnowledgePlatform/Yarn + + SUCCESS + 0 + BLUE + true + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-learning-platform.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/deploy/yarn/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Plugins/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Plugins/config.xml new file mode 100644 index 0000000000..68477b8ac7 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Plugins/config.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + All + false + false + + + + + + + + false + + + + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Plugins/jobs/CEPlugins/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Plugins/jobs/CEPlugins/config.xml new file mode 100644 index 0000000000..53ae131d1d --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Plugins/jobs/CEPlugins/config.xml @@ -0,0 +1,161 @@ + + + + + false + + + + false + false + + + + + absolute_job_path + <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> + ArtifactUpload/dev/Plugins/CEPlugins + false + + + container_name + <font color=black size=2><b>Please specify azure container name.</b></font> + plugins + false + + + artifact_source + <font color=black size=2><b> +ArtifactRepo - Download the artifact from azure blob, JenkinsJob - Use the atrifact from Jenkins job.</b></font> + choice-parameter-620062284617427 + 1 + + false + + + + false + + + CEPlugins + + + PT_SINGLE_SELECT + false + 1 + + + build_number + + choice-parameter-620062286335119 + 1 + + false + + + + false + + + CEPlugins + + artifact_source + ET_FORMATTED_HTML + true + + + artifact_version + + choice-parameter-620062288387509 + 1 + + false + + + + false + + + CEPlugins + + artifact_source + ET_FORMATTED_HTML + true + + + + + 0 + 0 + + false + project + false + + + + + + + ArtifactUpload/dev/Plugins/CEPlugins + + SUCCESS + 0 + BLUE + true + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/deploy/CEPlugins/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Plugins/jobs/CollectionEditor/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Plugins/jobs/CollectionEditor/config.xml new file mode 100644 index 0000000000..e097c5284a --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Plugins/jobs/CollectionEditor/config.xml @@ -0,0 +1,161 @@ + + + + + false + + + + false + false + + + + + absolute_job_path + <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> + ArtifactUpload/dev/Plugins/CollectionEditor + false + + + container_name + <font color=black size=2><b>Please specify azure container name.</b></font> + plugins + false + + + artifact_source + <font color=black size=2><b> +ArtifactRepo - Download the artifact from azure blob, JenkinsJob - Use the atrifact from Jenkins job.</b></font> + choice-parameter-620062284617427 + 1 + + false + + + + false + + + CollectionEditor + + + PT_SINGLE_SELECT + false + 1 + + + build_number + + choice-parameter-620062286335119 + 1 + + false + + + + false + + + CollectionEditor + + artifact_source + ET_FORMATTED_HTML + true + + + artifact_version + + choice-parameter-620062288387509 + 1 + + false + + + + false + + + CollectionEditor + + artifact_source + ET_FORMATTED_HTML + true + + + + + 0 + 0 + + false + project + false + + + + + + + ArtifactUpload/dev/Plugins/CollectionEditor + + SUCCESS + 0 + BLUE + true + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/deploy/CollectionEditor/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Plugins/jobs/ContentFramework/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Plugins/jobs/ContentFramework/config.xml new file mode 100644 index 0000000000..6103ba6445 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Plugins/jobs/ContentFramework/config.xml @@ -0,0 +1,161 @@ + + + + + false + + + + false + false + + + + + absolute_job_path + <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> + ArtifactUpload/dev/Plugins/ContentFramework + false + + + container_name + <font color=black size=2><b>Please specify azure container name.</b></font> + plugins + false + + + artifact_source + <font color=black size=2><b> +ArtifactRepo - Download the artifact from azure blob, JenkinsJob - Use the atrifact from Jenkins job.</b></font> + choice-parameter-620062284617427 + 1 + + false + + + + false + + + ContentFramework + + + PT_SINGLE_SELECT + false + 1 + + + build_number + + choice-parameter-620062286335119 + 1 + + false + + + + false + + + ContentFramework + + artifact_source + ET_FORMATTED_HTML + true + + + artifact_version + + choice-parameter-620062288387509 + 1 + + false + + + + false + + + ContentFramework + + artifact_source + ET_FORMATTED_HTML + true + + + + + 0 + 0 + + false + project + false + + + + + + + ArtifactUpload/dev/Plugins/ContentFramework + + SUCCESS + 0 + BLUE + true + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/deploy/ContentFramework/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Plugins/jobs/ContentRendererPreview/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Plugins/jobs/ContentRendererPreview/config.xml new file mode 100644 index 0000000000..d25ae64586 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Plugins/jobs/ContentRendererPreview/config.xml @@ -0,0 +1,161 @@ + + + + + false + + + + false + false + + + + + absolute_job_path + <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> + ArtifactUpload/dev/Plugins/ContentRendererPreview + false + + + container_name + <font color=black size=2><b>Please specify azure container name.</b></font> + plugins + false + + + artifact_source + <font color=black size=2><b> +ArtifactRepo - Download the artifact from azure blob, JenkinsJob - Use the atrifact from Jenkins job.</b></font> + choice-parameter-620062284617427 + 1 + + false + + + + false + + + ContentRendererPreview + + + PT_SINGLE_SELECT + false + 1 + + + build_number + + choice-parameter-620062286335119 + 1 + + false + + + + false + + + ContentRendererPreview + + artifact_source + ET_FORMATTED_HTML + true + + + artifact_version + + choice-parameter-620062288387509 + 1 + + false + + + + false + + + ContentRendererPreview + + artifact_source + ET_FORMATTED_HTML + true + + + + + 0 + 0 + + false + project + false + + + + + + + ArtifactUpload/dev/Plugins/ContentRendererPreview + + SUCCESS + 0 + BLUE + true + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/deploy/ContentRendererPreview/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Plugins/jobs/GenericEditor/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Plugins/jobs/GenericEditor/config.xml new file mode 100644 index 0000000000..2fc9a8360b --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Plugins/jobs/GenericEditor/config.xml @@ -0,0 +1,161 @@ + + + + + false + + + + false + false + + + + + absolute_job_path + <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> + ArtifactUpload/dev/Plugins/GenericEditor + false + + + container_name + <font color=black size=2><b>Please specify azure container name.</b></font> + plugins + false + + + artifact_source + <font color=black size=2><b> +ArtifactRepo - Download the artifact from azure blob, JenkinsJob - Use the atrifact from Jenkins job.</b></font> + choice-parameter-620062284617427 + 1 + + false + + + + false + + + GenericEditor + + + PT_SINGLE_SELECT + false + 1 + + + build_number + + choice-parameter-620062286335119 + 1 + + false + + + + false + + + GenericEditor + + artifact_source + ET_FORMATTED_HTML + true + + + artifact_version + + choice-parameter-620062288387509 + 1 + + false + + + + false + + + GenericEditor + + artifact_source + ET_FORMATTED_HTML + true + + + + + 0 + 0 + + false + project + false + + + + + + + ArtifactUpload/dev/Plugins/GenericEditor + + SUCCESS + 0 + BLUE + true + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/deploy/GenericEditor/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Summary/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Summary/config.xml new file mode 100644 index 0000000000..68477b8ac7 --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Summary/config.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + All + false + false + + + + + + + + false + + + + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Summary/jobs/DeployedVersions/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Summary/jobs/DeployedVersions/config.xml new file mode 100644 index 0000000000..dcbd83390e --- /dev/null +++ b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Summary/jobs/DeployedVersions/config.xml @@ -0,0 +1,74 @@ + + + + + false + + + + -1 + -1 + -1 + 10 + + + + + false + false + + + 0 + 0 + + false + project + false + + + + + + + Deploy/dev/Core/Content,Deploy/dev/Core/Player,Deploy/dev/Core/Learner,Deploy/dev/Core/Telemetry,Deploy/dev/Core/Proxy,Deploy/dev/KnowledgePlatform/Search,Deploy/dev/KnowledgePlatform/Learning,Deploy/dev/KnowledgePlatform/Yarn,Deploy/dev/DataPipeline/Secor,Deploy/dev/DataPipeline/Yarn,Deploy/dev/DataPipeline/AnalyticsAPI,Deploy/dev/DataPipeline/DataProducts + + SUCCESS + 0 + BLUE + true + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + final-variable-refac + + + false + + + + true + false + + 0 + false + + + + pipelines/summary/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/config.xml b/deploy/jenkins/jobs/OpsAdministration/config.xml new file mode 100644 index 0000000000..68477b8ac7 --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/config.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + All + false + false + + + + + + + + false + + + + \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/config.xml new file mode 100644 index 0000000000..6fe3ca0b64 --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/config.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + All + false + false + + + + + + + + false + + + + \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/config.xml new file mode 100644 index 0000000000..68477b8ac7 --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/config.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + All + false + false + + + + + + + + false + + + + \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/ApplicationElasticsearchBackup/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/ApplicationElasticsearchBackup/config.xml new file mode 100644 index 0000000000..ff31ba71a6 --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/ApplicationElasticsearchBackup/config.xml @@ -0,0 +1,50 @@ + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/backup/es-backup/Jenkinsfile + false + + + false + diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/ApplicationElasticsearchRestore/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/ApplicationElasticsearchRestore/config.xml new file mode 100644 index 0000000000..71f6ef2c8c --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/ApplicationElasticsearchRestore/config.xml @@ -0,0 +1,50 @@ + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/backup/es-restore/Jenkinsfile + false + + + false + diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/Bootstrap/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/Bootstrap/config.xml new file mode 100644 index 0000000000..8e9ca19f1a --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/Bootstrap/config.xml @@ -0,0 +1,75 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + hosts + <font color=teal size=2>enter the host name to be bootstrapped.</font> + core + false + + + + + + false + project + false + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/bootstrap/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/CassandraBackup/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/CassandraBackup/config.xml new file mode 100644 index 0000000000..7bbf214a5a --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/CassandraBackup/config.xml @@ -0,0 +1,50 @@ + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/backup/cassandra-backup/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/KeyRotation/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/KeyRotation/config.xml new file mode 100644 index 0000000000..b42a47c733 --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/KeyRotation/config.xml @@ -0,0 +1,94 @@ + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + bootstrap_user + deployer user + deployer + false + + + bootstrap_user_public_key + Deployer user public key keep in single quotes + + false + + + ssh_user + ops user + ops + false + + + ssh_private_file + location of ssh key for ops user from '/' + + false + + + ssh_public_key + ops public key + + false + + + + + 0 + 0 + + false + project + false + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/bootstrap/Jenkinsfile.rotatekey + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/LoggerElasticSearchBackup/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/LoggerElasticSearchBackup/config.xml new file mode 100644 index 0000000000..1b26809438 --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/LoggerElasticSearchBackup/config.xml @@ -0,0 +1,50 @@ + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/backup/logger-es-backup/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/LoggerElasticSearchRestore/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/LoggerElasticSearchRestore/config.xml new file mode 100644 index 0000000000..155b4a90aa --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/LoggerElasticSearchRestore/config.xml @@ -0,0 +1,50 @@ + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/backup/logger-es-restore/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/PostgresqlBackup/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/PostgresqlBackup/config.xml new file mode 100644 index 0000000000..faa94b00f2 --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/PostgresqlBackup/config.xml @@ -0,0 +1,51 @@ + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/backup/postgresql-backup/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/PostgresqlRestore/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/PostgresqlRestore/config.xml new file mode 100644 index 0000000000..9ad72ff266 --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/PostgresqlRestore/config.xml @@ -0,0 +1,51 @@ + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/backup/postgresql-restore/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/PrometheusBackup/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/PrometheusBackup/config.xml new file mode 100644 index 0000000000..8e757f82b7 --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/PrometheusBackup/config.xml @@ -0,0 +1,50 @@ + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/backup/prometheus-backup/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/SwarmBootstrap/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/SwarmBootstrap/config.xml new file mode 100644 index 0000000000..cec50282af --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/SwarmBootstrap/config.xml @@ -0,0 +1,50 @@ + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/bootstrap-swarm/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/config.xml new file mode 100644 index 0000000000..68477b8ac7 --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/config.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + All + false + false + + + + + + + + false + + + + \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/AnalyticsAPILogs/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/AnalyticsAPILogs/config.xml new file mode 100644 index 0000000000..c89f254ee1 --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/AnalyticsAPILogs/config.xml @@ -0,0 +1,51 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + 2 + + + https://github.com/ekstep/sunbird-devops.git + 64bdfe13-cc30-4864-bd3c-4e89be89fc9d + + + + + DO-380 + + + false + + + + pipelines/analytics-api-logs/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/Bootstrap/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/Bootstrap/config.xml new file mode 100644 index 0000000000..df91bff4cc --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/Bootstrap/config.xml @@ -0,0 +1,60 @@ + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + hosts + <font color=teal size=2>enter the host name to be bootstrapped.</font> + dp + false + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/bootstrap/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/CassandraBackup/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/CassandraBackup/config.xml new file mode 100644 index 0000000000..8b27f18cbc --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/CassandraBackup/config.xml @@ -0,0 +1,81 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + remote + <font color=teal size=2>enter the host name.</font> + cassandra + false + + + data_dir + <font color=teal size=2>enter cassandra data directory.</font> + /var/lib/cassandra/data + false + + + + + + false + project + false + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/backup/cassandra-backup/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/CassandraRestore/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/CassandraRestore/config.xml new file mode 100644 index 0000000000..b4c7ea72a1 --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/CassandraRestore/config.xml @@ -0,0 +1,74 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + remote + <font color=teal size=2>enter the host name.</font> + cassandra + false + + + artifact_version + <font color=teal size=2>Specify the artifact version to restore</font> + + false + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/backup/cassandra-restore/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/ElasticsearchBackup/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/ElasticsearchBackup/config.xml new file mode 100644 index 0000000000..3f12269864 --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/ElasticsearchBackup/config.xml @@ -0,0 +1,75 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + remote + <font color=teal size=2>enter any one host name or ip if it is a cluster</font> + + false + + + + + + false + project + false + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/backup/elasticsearch-backup/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/ElasticsearchRestore/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/ElasticsearchRestore/config.xml new file mode 100644 index 0000000000..311d76650a --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/ElasticsearchRestore/config.xml @@ -0,0 +1,75 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + host + <font color=teal size=2>enter any one host name or ip if it is a cluster</font> + + false + + + SNAPSHOT_NUMBER + <font color=teal size=2>Enter Snapshot number to restore. +curl command to get snapshot number: +curl http://localhost:9200/_snapshot/azurebackup/_all, Parse the json and get the valid snapshot number to restore</font> + + false + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/backup/elasticsearch-restore/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/InfluxDBBackup/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/InfluxDBBackup/config.xml new file mode 100644 index 0000000000..7723d1b63d --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/InfluxDBBackup/config.xml @@ -0,0 +1,65 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + false + project + false + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/backup/influxdb-backup/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/PostgresqlBackup/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/PostgresqlBackup/config.xml new file mode 100644 index 0000000000..018f24c55b --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/PostgresqlBackup/config.xml @@ -0,0 +1,51 @@ + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/backup/postgresql-backup/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/PostgresqlRestore/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/PostgresqlRestore/config.xml new file mode 100644 index 0000000000..6516c5daf1 --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/PostgresqlRestore/config.xml @@ -0,0 +1,51 @@ + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/backup/postgresql-restore/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/KnowledgePlatform/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/KnowledgePlatform/config.xml new file mode 100644 index 0000000000..6fe3ca0b64 --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/KnowledgePlatform/config.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + All + false + false + + + + + + + + false + + + + \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/KnowledgePlatform/jobs/Bootstrap/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/KnowledgePlatform/jobs/Bootstrap/config.xml new file mode 100644 index 0000000000..0e32e6c07a --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/KnowledgePlatform/jobs/Bootstrap/config.xml @@ -0,0 +1,60 @@ + + + + + false + + + + -1 + -1 + -1 + 5 + + + + false + false + + + + + hosts + <font color=teal size=2>enter the host name to be bootstrapped.</font> + lp + false + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-learning-platform.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/bootstrap/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/KnowledgePlatform/jobs/CassandraBackup/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/KnowledgePlatform/jobs/CassandraBackup/config.xml new file mode 100644 index 0000000000..37d9df3199 --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/KnowledgePlatform/jobs/CassandraBackup/config.xml @@ -0,0 +1,76 @@ + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + remote + <font color=teal size=2>enter the host name.</font> + cassandra + false + + + data_dir + <font color=teal size=2>enter cassandra data directory.</font> + /var/lib/cassandra/data + false + + + + + 0 + 0 + + false + project + false + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-learning-platform.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/backup/cassandra-backup/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/KnowledgePlatform/jobs/CassandraRestore/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/KnowledgePlatform/jobs/CassandraRestore/config.xml new file mode 100644 index 0000000000..2e1f614b7d --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/KnowledgePlatform/jobs/CassandraRestore/config.xml @@ -0,0 +1,67 @@ + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + remote + <font color=teal size=2>enter the host name.</font> + cassandra + false + + + artifact_version + <font color=teal size=2>Specify the artifact version to restore</font> + + false + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-learning-platform.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/backup/cassandra-restore/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/KnowledgePlatform/jobs/ElasticsearchBackup/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/KnowledgePlatform/jobs/ElasticsearchBackup/config.xml new file mode 100644 index 0000000000..dff07e183b --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/KnowledgePlatform/jobs/ElasticsearchBackup/config.xml @@ -0,0 +1,52 @@ + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + 0 + 0 + + false + project + false + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-learning-platform.git + + + + + ${public_repo_branch} + + + false + + + + pipelines/backup/elasticsearch/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/KnowledgePlatform/jobs/ElasticsearchRestore/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/KnowledgePlatform/jobs/ElasticsearchRestore/config.xml new file mode 100644 index 0000000000..76be767bbb --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/KnowledgePlatform/jobs/ElasticsearchRestore/config.xml @@ -0,0 +1,61 @@ + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + host + <font color=teal size=2>enter any one host name or ip if it is a cluster</font> + + false + + + SNAPSHOT_NUMBER + <font color=teal size=2>Enter Snapshot number to restore. +curl command to get snapshot number: +curl http://localhost:9200/_snapshot/azurebackup/_all, Parse the json and get the valid snapshot number to restore</font> + + false + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-learning-platform.git + + + + + ${public_repo_branch} + + + false + + + + pipelines/backup/elasticsearch-restore/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4jBackup/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4jBackup/config.xml new file mode 100644 index 0000000000..6822d1ba51 --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4jBackup/config.xml @@ -0,0 +1,60 @@ + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + 0 + 0 + + false + project + false + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-learning-platform.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/backup/neo4j/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4jRestore/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4jRestore/config.xml new file mode 100644 index 0000000000..a8fada98db --- /dev/null +++ b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4jRestore/config.xml @@ -0,0 +1,74 @@ + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + neo4j_restore_gzip_file_name + + + false + + + hosts + + + false + + + + + + false + project + false + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-learning-platform.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/backup/neo4j-restore/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/config.xml b/deploy/jenkins/jobs/Provision/config.xml new file mode 100644 index 0000000000..68477b8ac7 --- /dev/null +++ b/deploy/jenkins/jobs/Provision/config.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + All + false + false + + + + + + + + false + + + + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/config.xml new file mode 100644 index 0000000000..6fe3ca0b64 --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/dev/config.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + All + false + false + + + + + + + + false + + + + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/config.xml new file mode 100644 index 0000000000..68477b8ac7 --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/config.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + All + false + false + + + + + + + + false + + + + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Cassandra/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Cassandra/config.xml new file mode 100644 index 0000000000..ff598501a7 --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Cassandra/config.xml @@ -0,0 +1,58 @@ + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + false + project + false + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/provision/cassandra/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/JenkinsSlave/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/JenkinsSlave/config.xml new file mode 100644 index 0000000000..4e632379e4 --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/JenkinsSlave/config.xml @@ -0,0 +1,70 @@ + + + + <font color=red size=2><b>This jobs is currently disabled as it's not being used.</b></font> + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + jenkins_host + <font color=black size=2><b>Provide the IP of Jenkins host.</b></font> + + false + + + + + 0 + 0 + + false + project + false + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/provision/jenkins-slave/Jenkinsfile + false + + + true + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Kafka/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Kafka/config.xml new file mode 100644 index 0000000000..d78cd9a248 --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Kafka/config.xml @@ -0,0 +1,58 @@ + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + false + project + false + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + {public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/provision/kafka/Jenkinsfile + false + + + true + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Keycloak/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Keycloak/config.xml new file mode 100644 index 0000000000..fcc171f960 --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Keycloak/config.xml @@ -0,0 +1,65 @@ + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + false + project + false + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + true + false + + 0 + false + + + + pipelines/provision/keycloak/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/LogElasticSearch/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/LogElasticSearch/config.xml new file mode 100644 index 0000000000..31388c0319 --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/LogElasticSearch/config.xml @@ -0,0 +1,50 @@ + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/provision/log-es/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Postgres/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Postgres/config.xml new file mode 100644 index 0000000000..3b3747b527 --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Postgres/config.xml @@ -0,0 +1,50 @@ + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/provision/postgres/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/PostgresDbUpdate/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/PostgresDbUpdate/config.xml new file mode 100644 index 0000000000..48928e45f2 --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/PostgresDbUpdate/config.xml @@ -0,0 +1,50 @@ + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/provision/postgres-db-update/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Registry/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Registry/config.xml new file mode 100644 index 0000000000..0d74bd2f96 --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Registry/config.xml @@ -0,0 +1,58 @@ + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + false + project + false + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/provision/registry/Jenkinsfile + false + + + true + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Secor/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Secor/config.xml new file mode 100644 index 0000000000..cf74052977 --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Secor/config.xml @@ -0,0 +1,58 @@ + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + false + project + false + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-devops.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/provision/secor/Jenkinsfile + false + + + true + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/config.xml new file mode 100644 index 0000000000..68477b8ac7 --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/config.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + All + false + false + + + + + + + + false + + + + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/AnalyticsAPI/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/AnalyticsAPI/config.xml new file mode 100644 index 0000000000..daeb780bbd --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/AnalyticsAPI/config.xml @@ -0,0 +1,57 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/provision/analytics-api/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/AnalyticsSecor/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/AnalyticsSecor/config.xml new file mode 100644 index 0000000000..a0de40ab90 --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/AnalyticsSecor/config.xml @@ -0,0 +1,56 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + false + false + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/provision/secor/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/AnalyticsSpark/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/AnalyticsSpark/config.xml new file mode 100644 index 0000000000..9aea1868e4 --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/AnalyticsSpark/config.xml @@ -0,0 +1,57 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/provision/spark/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/Cassandra/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/Cassandra/config.xml new file mode 100644 index 0000000000..abfcd287fa --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/Cassandra/config.xml @@ -0,0 +1,50 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline.git + + + + + ${public_repo_branch} + + + false + + + + pipelines/provision/cassandra/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/InfluxDB/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/InfluxDB/config.xml new file mode 100644 index 0000000000..d3dcbb10b8 --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/InfluxDB/config.xml @@ -0,0 +1,56 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + false + false + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/provision/influxdb/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/Kafka/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/Kafka/config.xml new file mode 100644 index 0000000000..6d92ec2f44 --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/Kafka/config.xml @@ -0,0 +1,65 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + false + project + false + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/provision/kafka/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/Kibana/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/Kibana/config.xml new file mode 100644 index 0000000000..38316772f0 --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/Kibana/config.xml @@ -0,0 +1,57 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/provision/kibana/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/Postgres/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/Postgres/config.xml new file mode 100644 index 0000000000..33e61fb3d7 --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/Postgres/config.xml @@ -0,0 +1,56 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + false + false + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/provision/postgres-lpa/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/TelemetrySearch/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/TelemetrySearch/config.xml new file mode 100644 index 0000000000..b51b86935f --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/TelemetrySearch/config.xml @@ -0,0 +1,65 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + false + project + false + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/provision/telemetry_elasticsearch/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/Yarn/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/Yarn/config.xml new file mode 100644 index 0000000000..9bf7797e3c --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/Yarn/config.xml @@ -0,0 +1,57 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/provision/yarn/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/Zookeeper/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/Zookeeper/config.xml new file mode 100644 index 0000000000..a8b9cceb7f --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/Zookeeper/config.xml @@ -0,0 +1,64 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + false + false + + + + false + project + false + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-data-pipeline.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/provision/zookeeper/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/config.xml new file mode 100644 index 0000000000..68477b8ac7 --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/config.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + All + false + false + + + + + + + + false + + + + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Cassandra/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Cassandra/config.xml new file mode 100644 index 0000000000..a9a247e8d2 --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Cassandra/config.xml @@ -0,0 +1,61 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-learning-platform.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/provision/cassandra/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/CompositeSearch/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/CompositeSearch/config.xml new file mode 100644 index 0000000000..360f4f174a --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/CompositeSearch/config.xml @@ -0,0 +1,61 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-learning-platform.git + + + + + ${public_repo_branch} + + + false + + + + true + true + + 0 + false + + + + pipelines/provision/composite-search/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Kafka/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Kafka/config.xml new file mode 100644 index 0000000000..93354ef4c3 --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Kafka/config.xml @@ -0,0 +1,61 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-learning-platform.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/provision/kafka/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Learning/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Learning/config.xml new file mode 100644 index 0000000000..bb374f354d --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Learning/config.xml @@ -0,0 +1,68 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + false + project + false + + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-learning-platform.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/provision/learning/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4j/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4j/config.xml new file mode 100644 index 0000000000..68a62ccf6d --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4j/config.xml @@ -0,0 +1,61 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-learning-platform.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/provision/neo4j/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Redis/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Redis/config.xml new file mode 100644 index 0000000000..cf7e9a532d --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Redis/config.xml @@ -0,0 +1,61 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-learning-platform.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/provision/redis/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Search/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Search/config.xml new file mode 100644 index 0000000000..064d2fb01a --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Search/config.xml @@ -0,0 +1,60 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-learning-platform.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + false + + + + pipelines/provision/search/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Yarn/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Yarn/config.xml new file mode 100644 index 0000000000..fe08c83f03 --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Yarn/config.xml @@ -0,0 +1,68 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + false + project + false + + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-learning-platform.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/provision/yarn/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Zookeeper/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Zookeeper/config.xml new file mode 100644 index 0000000000..7c89cde9d5 --- /dev/null +++ b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Zookeeper/config.xml @@ -0,0 +1,61 @@ + + + + + + hudson.model.ParametersDefinitionProperty + com.sonyericsson.rebuild.RebuildSettings + + + + + false + + + + -1 + -1 + -1 + 5 + + + + + false + false + + + + + + + + 2 + + + https://github.com/project-sunbird/sunbird-learning-platform.git + + + + + ${public_repo_branch} + + + false + + + + true + false + + 0 + false + + + + pipelines/provision/zookeeper/Jenkinsfile + false + + + false + \ No newline at end of file diff --git a/deploy/jenkins/plugins.txt b/deploy/jenkins/plugins.txt new file mode 100644 index 0000000000..a0c2347b9f --- /dev/null +++ b/deploy/jenkins/plugins.txt @@ -0,0 +1,98 @@ +junit@1.27 +workflow-basic-steps@2.14 +uno-choice@2.1 +workflow-step-api@2.19 +pam-auth@1.4 +jsch@0.1.55 +workflow-durable-task-step@2.29 +matrix-project@1.13 +docker-commons@1.13 +github-branch-source@2.4.2 +pipeline-model-api@1.3.4.1 +pipeline-rest-api@2.10 +lockable-resources@2.4 +pipeline-github-lib@1.0 +ws-cleanup@0.37 +pipeline-build-step@2.7 +conditional-buildstep@1.3.6 +durable-task@1.29 +pipeline-model-extensions@1.3.4.1 +jquery-ui@1.0.2 +htmlpublisher@1.18 +greenballs@1.15 +workflow-cps@2.63 +ssh-agent@1.17 +display-url-api@2.3.0 +structs@1.17 +workflow-api@2.33 +build-pipeline-plugin@1.5.8 +ansicolor@0.6.2 +ssh-credentials@1.14 +pipeline-milestone-step@1.3.1 +pipeline-graph-analysis@1.9 +token-macro@2.6 +github@1.29.4 +thinBackup@1.9 +github-api@1.95 +ldap@1.20 +pipeline-model-declarative-agent@1.1.1 +gradle@1.30 +plain-credentials@1.5 +workflow-support@3.2 +pipeline-model-definition@1.3.4.1 +matrix-auth@2.3 +run-condition@1.2 +windows-slaves@1.4 +build-name-setter@1.7.0 +jquery@1.12.4-0 +active-directory@2.12 +script-security@1.53 +credentials@2.1.18 +copyartifact@1.41 +throttle-concurrents@2.0.1 +workflow-multibranch@2.20 +ant@1.9 +branch-api@2.1.2 +email-ext@2.63 +role-strategy@2.10 +git@3.9.3 +ssh-slaves@1.29.4 +momentjs@1.1.1 +pipeline-stage-view@2.10 +apache-httpcomponents-client-4-api@4.5.5-3.0 +jdk-tool@1.2 +jackson2-api@2.9.8 +workflow-scm-step@2.7 +antisamy-markup-formatter@1.5 +credentials-binding@1.17 +docker-workflow@1.17 +ace-editor@1.1 +workflow-job@2.31 +scm-api@2.3.0 +bouncycastle-api@2.17 +authentication-tokens@1.3 +pipeline-input-step@2.9 +javadoc@1.4 +pipeline-stage-step@2.3 +mailer@1.23 +code-coverage-api@1.0.7 +handlebars@1.1.1 +git-server@1.7 +git-client@2.7.6 +command-launcher@1.3 +resource-disposer@0.12 +rebuild@1.29 +jquery-detached@1.2.1 +build-timeout@1.19 +workflow-aggregator@2.6 +external-monitor-job@1.7 +timestamper@1.9 +cloudbees-folder@6.7 +maven-plugin@3.2 +workflow-cps-global-lib@2.13 +dashboard-view@2.10 +cobertura@1.13 +parameterized-trigger@2.35.2 +pipeline-stage-tags-metadata@1.3.4.1 +jobConfigHistory@2.19 +audit-trail@2.4 diff --git a/deploy/utilities/kill_samza_app.sh b/deploy/utilities/kill_samza_app.sh new file mode 100644 index 0000000000..b46e18d1c4 --- /dev/null +++ b/deploy/utilities/kill_samza_app.sh @@ -0,0 +1,13 @@ +#!/bin/bash +# Author S M Y +# Kill All the Samza Jobs + +for id in $(/usr/local/hadoop/bin/yarn application --list | column -t | awk 'NR>2{print $1}' | tr "\n" " "); +do + echo "ID is $id" + /usr/local/hadoop/bin/yarn application -kill $id + sleep 1 +done +echo -e "\n--------------------------------------------------------------------------\n" +echo "The Overall status of yarn is as follows:" +/usr/local/hadoop/bin/yarn application --list | awk '{print $1 " " $2 " " $6 " " $7 " " $9}' | column -t diff --git a/images/openbadger/Jenkinsfile b/images/openbadger/Jenkinsfile new file mode 100644 index 0000000000..54505a2a45 --- /dev/null +++ b/images/openbadger/Jenkinsfile @@ -0,0 +1,61 @@ +node('build-slave') { + try { + String ANSI_GREEN = "\u001B[32m" + String ANSI_NORMAL = "\u001B[0m" + String ANSI_BOLD = "\u001B[1m" + String ANSI_RED = "\u001B[31m" + String ANSI_YELLOW = "\u001B[33m" + + if (params.size() == 0){ + properties([[$class: 'RebuildSettings', autoRebuild: false, rebuildDisabled: false], parameters([string(defaultValue: '', description: 'If you want to build from a tag, specify the tag name. If this parameter is blank, latest commit hash will be used to build', name: 'tag', trim: false)])]) + + ansiColor('xterm') { + println (ANSI_BOLD + ANSI_GREEN + '''\ + First run of the job. Parameters created. Stopping the current build. + Please trigger new build and provide parameters if required. + '''.stripIndent().replace("\n"," ") + ANSI_NORMAL) + } + return + } + + ansiColor('xterm') { + stage('Checkout') { + if (!env.hub_org) { + println(ANSI_BOLD + ANSI_RED + "Uh Oh! Please set a Jenkins environment variable named hub_org with value as registery/sunbidrded" + ANSI_NORMAL) + error 'Please resolve the errors and rerun..' + } else + println(ANSI_BOLD + ANSI_GREEN + "Found environment variable named hub_org with value as: " + hub_org + ANSI_NORMAL) + } + cleanWs() + if (params.github_release_tag == "") { + checkout scm + commit_hash = sh(script: 'git rev-parse --short HEAD', returnStdout: true).trim() + branch_name = sh(script: 'git name-rev --name-only HEAD | rev | cut -d "/" -f1| rev', returnStdout: true).trim() + build_tag = branch_name + "_" + commit_hash + println(ANSI_BOLD + ANSI_YELLOW + "Tag not specified, using the latest commit hash: " + commit_hash + ANSI_NORMAL) + } else { + def scmVars = checkout scm + checkout scm: [$class: 'GitSCM', branches: [[name: "refs/tags/$params.github_release_tag"]], userRemoteConfigs: [[url: scmVars.GIT_URL]]] + build_tag = params.github_release_tag + println(ANSI_BOLD + ANSI_YELLOW + "Tag specified, building from tag: " + params.github_relase_tag + ANSI_NORMAL) + } + echo "build_tag: " + build_tag + + stage('Build') { + env.NODE_ENV = "build" + print "Environment will be : ${env.NODE_ENV}" + sh("./images/openbadger/build.sh ${build_tag} ${env.NODE_NAME} ${hub_org}") + } + stage('ArchiveArtifacts') { + archiveArtifacts "metadata.json" + currentBuild.description = "${build_tag}" + } + } + + } + catch (err) { + currentBuild.result = "FAILURE" + throw err + } + +} diff --git a/images/openbadger/build.sh b/images/openbadger/build.sh index 4ff688a5cd..51a07511a6 100755 --- a/images/openbadger/build.sh +++ b/images/openbadger/build.sh @@ -1,13 +1,10 @@ -#!/bin/sh +#!/bin/bash # Build script -# set -o errexit -e () { - echo $( echo ${1} | jq ".${2}" | sed 's/\"//g') -} -m=$(./images/openbadger/metadata.sh) +set -eo pipefail +build_tag=$1 +name=badger +node=$2 +org=$3 -org=$(e "${m}" "org") -name=$(e "${m}" "name") -version=$(e "${m}" "version") - -docker build -f ./images/openbadger/Dockerfile -t ${org}/${name}:${version}-bronze . +docker build -f ./images/openbadger/Dockerfile -t ${org}/${name}:${build_tag} . +echo {\"image_name\" : \"${name}\", \"image_tag\" : \"${build_tag}\", \"node_name\" : \"$node\"} > metadata.json diff --git a/images/proxy/Jenkinsfile b/images/proxy/Jenkinsfile new file mode 100644 index 0000000000..e00c08357f --- /dev/null +++ b/images/proxy/Jenkinsfile @@ -0,0 +1,49 @@ +node('build-slave') { + try { + String ANSI_GREEN = "\u001B[32m" + String ANSI_NORMAL = "\u001B[0m" + String ANSI_BOLD = "\u001B[1m" + String ANSI_RED = "\u001B[31m" + String ANSI_YELLOW = "\u001B[33m" + + ansiColor('xterm') { + stage('Checkout') { + if (!env.hub_org) { + println(ANSI_BOLD + ANSI_RED + "Uh Oh! Please set a Jenkins environment variable named hub_org with value as registery/sunbidrded" + ANSI_NORMAL) + error 'Please resolve the errors and rerun..' + } else + println(ANSI_BOLD + ANSI_GREEN + "Found environment variable named hub_org with value as: " + hub_org + ANSI_NORMAL) + } + cleanWs() + if (params.github_release_tag == "") { + checkout scm + commit_hash = sh(script: 'git rev-parse --short HEAD', returnStdout: true).trim() + branch_name = sh(script: 'git name-rev --name-only HEAD | rev | cut -d "/" -f1| rev', returnStdout: true).trim() + build_tag = branch_name + "_" + commit_hash + println(ANSI_BOLD + ANSI_YELLOW + "Tag not specified, using the latest commit hash: " + commit_hash + ANSI_NORMAL) + } else { + def scmVars = checkout scm + checkout scm: [$class: 'GitSCM', branches: [[name: "refs/tags/$params.github_release_tag"]], userRemoteConfigs: [[url: scmVars.GIT_URL]]] + build_tag = params.github_release_tag + println(ANSI_BOLD + ANSI_YELLOW + "Tag specified, building from tag: " + params.github_release_tag + ANSI_NORMAL) + } + echo "build_tag: " + build_tag + + stage('Build') { + env.NODE_ENV = "build" + print "Environment will be : ${env.NODE_ENV}" + sh("./images/proxy/build.sh ${build_tag} ${env.NODE_NAME} ${hub_org}") + } + stage('ArchiveArtifacts') { + archiveArtifacts "metadata.json" + currentBuild.description = "${build_tag}" + } + } + + } + catch (err) { + currentBuild.result = "FAILURE" + throw err + } + +} diff --git a/images/proxy/build.sh b/images/proxy/build.sh index a5529a4b50..ebf64006ed 100755 --- a/images/proxy/build.sh +++ b/images/proxy/build.sh @@ -1,13 +1,10 @@ -#!/bin/sh +#!/bin/bash # Build script -# set -o errexit -e () { - echo $( echo ${1} | jq ".${2}" | sed 's/\"//g') -} -m=$(./images/proxy/metadata.sh) +set -eo pipefail +build_tag=$1 +name=proxy +node=$2 +org=$3 -org=$(e "${m}" "org") -name=$(e "${m}" "name") -version=$(e "${m}" "version") - -docker build -f ./images/proxy/Dockerfile -t ${org}/${name}:${version}-bronze . +docker build -f ./images/proxy/Dockerfile -t ${org}/${name}:${build_tag} . +echo {\"image_name\" : \"${name}\", \"image_tag\" : \"${build_tag}\", \"node_name\" : \"$node\"} > metadata.json diff --git a/pipelines/adminutils/Jenkinsfile.sample b/pipelines/adminutils/Jenkinsfile.sample deleted file mode 100644 index 6684dc3d8e..0000000000 --- a/pipelines/adminutils/Jenkinsfile.sample +++ /dev/null @@ -1,27 +0,0 @@ -#!groovy - -node('general-staging') { - - currentBuild.result = "SUCCESS" - - try { - stage('Checkout'){ - checkout scm - } - stage('Pre-Build'){ - sh('./pipelines/adminutils/installDeps.sh') - } - stage('Deploy'){ - step ([$class: 'CopyArtifact', - projectName: 'Tag_As_Silver/AM_AdminUtils_Tag_Silver', - filter: 'metadata.json']); - sh 'METADATA_FILE=metadata.json ARTIFACT_LABEL=silver ENV=staging ./pipelines/adminutils/deploy.sh' - archive includes: "metadata.json" - } - } - catch (err) { - currentBuild.result = "FAILURE" - throw err - } - -} diff --git a/pipelines/adminutils/deploy.sh b/pipelines/adminutils/deploy.sh deleted file mode 100755 index 0dcb3cf5e4..0000000000 --- a/pipelines/adminutils/deploy.sh +++ /dev/null @@ -1,28 +0,0 @@ -#!/bin/sh -# Build script -# set -o errexit -set -e -e () { - echo $( echo ${1} | jq ".${2}" | sed 's/\"//g') -} -m=$(cat $METADATA_FILE) - -org=$(e "${m}" "org") -name=$(e "${m}" "name") -version=$(e "${m}" "version") - -artifactLabel=${ARTIFACT_LABEL:-bronze} -env=${ENV:-null} - -echo "artifactLabel: ${artifactLabel}" -echo "env: ${env}" -echo "org: ${org}" -echo "name: ${name}" -echo "version: ${version}" -echo "ANSIBLE_PATH: $ANSIBLE_PATH" - -ansible-playbook --version -ansible-playbook -i ansible/inventory/${env} ansible/deploy.yml --tags "stack-adminutil" --extra-vars "hub_org=${org} image_name=${name} image_tag=${version}-${artifactLabel}" --vault-password-file /run/secrets/vault-pass -# ENV=${env} ORG=${org} NAME=${name} \ -# TAG=${version}-${artifactLabel} \ -# docker stack deploy -c ./pipelines/proxy/docker-compose.yml ${name}-${env} diff --git a/pipelines/adminutils/installDeps.sh b/pipelines/adminutils/installDeps.sh deleted file mode 100755 index 4bd4763793..0000000000 --- a/pipelines/adminutils/installDeps.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/sh -# Build script -# set -o errexit -apk -v --update --no-cache add jq bash -apk -v add ansible=2.3.0.0-r1 diff --git a/pipelines/adminutils/metadata.json b/pipelines/adminutils/metadata.json deleted file mode 100644 index d66f241143..0000000000 --- a/pipelines/adminutils/metadata.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "name": "adminutil", - "version": "0.0.1-SNAPSHOT", - "org": "sunbird", - "hubuser": "purplesunbird" -} diff --git a/pipelines/am-onboard-apis/Jenkinsfile.sample b/pipelines/am-onboard-apis/Jenkinsfile.sample deleted file mode 100644 index c148704f90..0000000000 --- a/pipelines/am-onboard-apis/Jenkinsfile.sample +++ /dev/null @@ -1,15 +0,0 @@ -pipeline { - agent { - label 'kong-staging' - } - stages { - stage('Deploy') { - steps { - sh ''' - cd ansible - ansible-playbook -i inventory/staging api-manager.yml --tags kong-api --vault-password-file /run/secrets/vault-pass - ''' - } - } - } -} \ No newline at end of file diff --git a/pipelines/am-onboard-consumers/Jenkinsfile.sample b/pipelines/am-onboard-consumers/Jenkinsfile.sample deleted file mode 100644 index 4a789dc981..0000000000 --- a/pipelines/am-onboard-consumers/Jenkinsfile.sample +++ /dev/null @@ -1,15 +0,0 @@ -pipeline { - agent { - label 'kong-staging' - } - stages { - stage('Deploy') { - steps { - sh ''' - cd ansible - ansible-playbook -i inventory/staging api-manager.yml --tags kong-consumer --vault-password-file /run/secrets/vault-pass -v - ''' - } - } - } -} \ No newline at end of file diff --git a/pipelines/api-manager/Jenkinsfile.sample b/pipelines/api-manager/Jenkinsfile.sample deleted file mode 100644 index b7541c660d..0000000000 --- a/pipelines/api-manager/Jenkinsfile.sample +++ /dev/null @@ -1,34 +0,0 @@ -#!groovy - -node('general-staging') { - - currentBuild.result = "SUCCESS" - - try { - - stage('Checkout'){ - - checkout scm - } - - stage('Pre-Build'){ - - sh('./pipelines/api-manager/installDeps.sh') - - } - - stage('Deploy'){ - - step ([$class: 'CopyArtifact', - projectName: 'Tag_As_Silver/Echo_Server_Tag_Silver', - filter: 'metadata.json']); - sh 'METADATA_FILE=metadata.json ENV=staging ./pipelines/api-manager/deploy.sh' - archive includes: "metadata.json" - } - } - catch (err) { - currentBuild.result = "FAILURE" - throw err - } - -} diff --git a/pipelines/api-manager/deploy.sh b/pipelines/api-manager/deploy.sh deleted file mode 100755 index 194c29df3a..0000000000 --- a/pipelines/api-manager/deploy.sh +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/sh -# Build script -# set -o errexit -set -e -e () { - echo $( echo ${1} | jq ".${2}" | sed 's/\"//g') -} -m=$(cat $METADATA_FILE) - -org=$(e "${m}" "org") -name=$(e "${m}" "name") -version=$(e "${m}" "version") - -artifactLabel=${ARTIFACT_LABEL:-bronze} -env=${ENV:-null} - -echo "artifactLabel: ${artifactLabel}" -echo "env: ${env}" -echo "org: ${org}" -echo "name: ${name}" -echo "version: ${version}" -ansible-playbook --version -ansible-playbook -i ansible/inventory/$ENV ansible/deploy.yml --tags "stack-api-manager" --extra-vars "hub_org=${org} echo_server_image_name=${name} echo_server_image_tag=${version}-${artifactLabel}" --vault-password-file /run/secrets/vault-pass diff --git a/pipelines/api-manager/installDeps.sh b/pipelines/api-manager/installDeps.sh deleted file mode 100755 index f99345239c..0000000000 --- a/pipelines/api-manager/installDeps.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/sh -# Build script -# set -o errexit -apk -v --update --no-cache add ansible=2.3.0.0-r1 -apk -v add jq diff --git a/pipelines/api-manager/metadata.json b/pipelines/api-manager/metadata.json deleted file mode 100644 index 0103cf310f..0000000000 --- a/pipelines/api-manager/metadata.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "name": "echo-server", - "version": "0.0.1", - "org": "sunbird", - "hubuser": "purplesunbird" -} \ No newline at end of file diff --git a/pipelines/application-elasticsearch/Jenkinsfile.sample b/pipelines/application-elasticsearch/Jenkinsfile.sample deleted file mode 100644 index fdd5dfe923..0000000000 --- a/pipelines/application-elasticsearch/Jenkinsfile.sample +++ /dev/null @@ -1,22 +0,0 @@ -pipeline { - agent { - label 'general-staging' - } - stages { - stage('Pre-Build'){ - steps { - sh('chmod a+x ansible/installDeps.sh') - sh('./ansible/installDeps.sh') - } - } - - stage('Deploy') { - steps { - sh ''' - cd ansible - ansible-playbook -i inventory/staging provision.yml --tags es --vault-password-file /run/secrets/vault-pass - ''' - } - } - } -} \ No newline at end of file diff --git a/pipelines/backup/cassandra-backup/Jenkinsfile b/pipelines/backup/cassandra-backup/Jenkinsfile new file mode 100644 index 0000000000..c5bce5d7b1 --- /dev/null +++ b/pipelines/backup/cassandra-backup/Jenkinsfile @@ -0,0 +1,38 @@ +@Library('deploy-conf') _ +node() { + try { + String ANSI_GREEN = "\u001B[32m" + String ANSI_NORMAL = "\u001B[0m" + String ANSI_BOLD = "\u001B[1m" + String ANSI_RED = "\u001B[31m" + String ANSI_YELLOW = "\u001B[33m" + + stage('checkout public repo') { + cleanWs() + checkout scm + } + + ansiColor('xterm') { + stage('deploy'){ + values = [:] + currentWs = sh(returnStdout: true, script: 'pwd').trim() + envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-3].trim() + module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() + jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() + ansiblePlaybook = "${currentWs}/ansible/cassandra-backup.yml" + ansibleExtraArgs = "--vault-password-file /var/lib/jenkins/secrets/vault-pass" + values.put('currentWs', currentWs) + values.put('env', envDir) + values.put('module', module) + values.put('jobName', jobName) + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + println values + ansible_playbook_run(values) + } + } + } + catch (err) { + throw err + } +} diff --git a/pipelines/backup/es-backup/Jenkinsfile b/pipelines/backup/es-backup/Jenkinsfile new file mode 100644 index 0000000000..f3e97a9817 --- /dev/null +++ b/pipelines/backup/es-backup/Jenkinsfile @@ -0,0 +1,38 @@ +@Library('deploy-conf') _ +node() { + try { + String ANSI_GREEN = "\u001B[32m" + String ANSI_NORMAL = "\u001B[0m" + String ANSI_BOLD = "\u001B[1m" + String ANSI_RED = "\u001B[31m" + String ANSI_YELLOW = "\u001B[33m" + + stage('checkout public repo') { + cleanWs() + checkout scm + } + + ansiColor('xterm') { + stage('deploy'){ + values = [:] + envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-3].trim() + module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() + jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() + currentWs = sh(returnStdout: true, script: 'pwd').trim() + ansiblePlaybook = "${currentWs}/ansible/es.yml" + ansibleExtraArgs = "--tags \"es_backup\" -v --vault-password-file /var/lib/jenkins/secrets/vault-pass" + values.put('currentWs', currentWs) + values.put('env', envDir) + values.put('module', module) + values.put('jobName', jobName) + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + println values + ansible_playbook_run(values) + } + } + } + catch (err) { + throw err + } +} diff --git a/pipelines/backup/es-restore/Jenkinsfile b/pipelines/backup/es-restore/Jenkinsfile new file mode 100644 index 0000000000..a6c7c7d8b3 --- /dev/null +++ b/pipelines/backup/es-restore/Jenkinsfile @@ -0,0 +1,42 @@ +@Library('deploy-conf') _ +node() { + try { + String ANSI_GREEN = "\u001B[32m" + String ANSI_NORMAL = "\u001B[0m" + String ANSI_BOLD = "\u001B[1m" + String ANSI_RED = "\u001B[31m" + String ANSI_YELLOW = "\u001B[33m" + + triggers { + cron('H 0 * * *') + } + + stage('checkout public repo') { + cleanWs() + checkout scm + } + + ansiColor('xterm') { + stage('deploy'){ + values = [:] + currentWs = sh(returnStdout: true, script: 'pwd').trim() + envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-3].trim() + module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() + jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() + ansiblePlaybook = "${currentWs}/ansible/es.yml" + ansibleExtraArgs = "--tags \"es_restore\" --extra-vars \"snapshot_number=${snapshot_number}\" -v --vault-password-file /var/lib/jenkins/secrets/vault-pass" + values.put('currentWs', currentWs) + values.put('env', envDir) + values.put('module', module) + values.put('jobName', jobName) + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + println values + ansible_playbook_run(values) + } + } + } + catch (err) { + throw err + } +} diff --git a/pipelines/backup/logger-es-backup/Jenkinsfile b/pipelines/backup/logger-es-backup/Jenkinsfile new file mode 100644 index 0000000000..966a830242 --- /dev/null +++ b/pipelines/backup/logger-es-backup/Jenkinsfile @@ -0,0 +1,38 @@ +@Library('deploy-conf') _ +node() { + try { + String ANSI_GREEN = "\u001B[32m" + String ANSI_NORMAL = "\u001B[0m" + String ANSI_BOLD = "\u001B[1m" + String ANSI_RED = "\u001B[31m" + String ANSI_YELLOW = "\u001B[33m" + + stage('checkout public repo') { + cleanWs() + checkout scm + } + + ansiColor('xterm') { + stage('deploy'){ + values = [:] + currentWs = sh(returnStdout: true, script: 'pwd').trim() + envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-3].trim() + module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() + jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() + ansiblePlaybook = "${currentWs}/ansible/es.yml" + ansibleExtraArgs = "--tags \"log_es_backup\" -v --vault-password-file /var/lib/jenkins/secrets/vault-pass" + values.put('currentWs', currentWs) + values.put('env', envDir) + values.put('module', module) + values.put('jobName', jobName) + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + println values + ansible_playbook_run(values) + } + } + } + catch (err) { + throw err + } +} diff --git a/pipelines/backup/logger-es-restore/Jenkinsfile b/pipelines/backup/logger-es-restore/Jenkinsfile new file mode 100644 index 0000000000..fd2bbaf063 --- /dev/null +++ b/pipelines/backup/logger-es-restore/Jenkinsfile @@ -0,0 +1,42 @@ +@Library('deploy-conf') _ +node() { + try { + String ANSI_GREEN = "\u001B[32m" + String ANSI_NORMAL = "\u001B[0m" + String ANSI_BOLD = "\u001B[1m" + String ANSI_RED = "\u001B[31m" + String ANSI_YELLOW = "\u001B[33m" + + triggers { + cron('H 0 * * *') + } + + stage('checkout public repo') { + cleanWs() + checkout scm + } + + ansiColor('xterm') { + stage('deploy'){ + values = [:] + currentWs = sh(returnStdout: true, script: 'pwd').trim() + envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-3].trim() + module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() + jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() + ansiblePlaybook = "${currentWs}/ansible/es.yml" + ansibleExtraArgs = "--tags \"log_es_restore\" --extra-vars \"snapshot_number=${snapshot_number}\" -v --vault-password-file /var/lib/jenkins/secrets/vault-pass" + values.put('currentWs', currentWs) + values.put('env', envDir) + values.put('module', module) + values.put('jobName', jobName) + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + println values + ansible_playbook_run(values) + } + } + } + catch (err) { + throw err + } +} diff --git a/pipelines/backup/postgresql-backup/Jenkinsfile b/pipelines/backup/postgresql-backup/Jenkinsfile new file mode 100644 index 0000000000..d0949fc405 --- /dev/null +++ b/pipelines/backup/postgresql-backup/Jenkinsfile @@ -0,0 +1,38 @@ +@Library('deploy-conf') _ +node() { + try { + String ANSI_GREEN = "\u001B[32m" + String ANSI_NORMAL = "\u001B[0m" + String ANSI_BOLD = "\u001B[1m" + String ANSI_RED = "\u001B[31m" + String ANSI_YELLOW = "\u001B[33m" + + stage('checkout public repo') { + cleanWs() + checkout scm + } + + ansiColor('xterm') { + stage('deploy'){ + values = [:] + envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-3].trim() + module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() + jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() + currentWs = sh(returnStdout: true, script: 'pwd').trim() + ansiblePlaybook = "${currentWs}/ansible/postgresql-backup.yml" + ansibleExtraArgs = "--vault-password-file /var/lib/jenkins/secrets/vault-pass" + values.put('currentWs', currentWs) + values.put('env', envDir) + values.put('module', module) + values.put('jobName', jobName) + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + println values + ansible_playbook_run(values) + } + } + } + catch (err) { + throw err + } +} diff --git a/pipelines/backup/postgresql-restore/Jenkinsfile b/pipelines/backup/postgresql-restore/Jenkinsfile new file mode 100644 index 0000000000..53effdd0ce --- /dev/null +++ b/pipelines/backup/postgresql-restore/Jenkinsfile @@ -0,0 +1,40 @@ +package Deploy + +@Library('deploy-conf') _ +node() { + try { + String ANSI_GREEN = "\u001B[32m" + String ANSI_NORMAL = "\u001B[0m" + String ANSI_BOLD = "\u001B[1m" + String ANSI_RED = "\u001B[31m" + String ANSI_YELLOW = "\u001B[33m" + + stage('checkout public repo') { + cleanWs() + checkout scm + } + + ansiColor('xterm') { + stage('deploy'){ + values = [:] + envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-3].trim() + module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() + jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() + currentWs = sh(returnStdout: true, script: 'pwd').trim() + ansiblePlaybook = "${currentWs}/ansible/postgresql-restore.yml" + ansibleExtraArgs = "--vault-password-file /var/lib/jenkins/secrets/vault-pass" + values.put('currentWs', currentWs) + values.put('env', envDir) + values.put('module', module) + values.put('jobName', jobName) + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + println values + ansible_playbook_run(values) + } + } + } + catch (err) { + throw err + } +} diff --git a/pipelines/backup/prometheus-backup/Jenkinsfile b/pipelines/backup/prometheus-backup/Jenkinsfile new file mode 100644 index 0000000000..216e9d4a02 --- /dev/null +++ b/pipelines/backup/prometheus-backup/Jenkinsfile @@ -0,0 +1,38 @@ +@Library('deploy-conf') _ +node() { + try { + String ANSI_GREEN = "\u001B[32m" + String ANSI_NORMAL = "\u001B[0m" + String ANSI_BOLD = "\u001B[1m" + String ANSI_RED = "\u001B[31m" + String ANSI_YELLOW = "\u001B[33m" + + stage('checkout public repo') { + cleanWs() + checkout scm + } + + ansiColor('xterm') { + stage('deploy'){ + values = [:] + envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-3].trim() + module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() + jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() + currentWs = sh(returnStdout: true, script: 'pwd').trim() + ansiblePlaybook = "${currentWs}/ansible/prometheus-backup.yml" + ansibleExtraArgs = "--vault-password-file /var/lib/jenkins/secrets/vault-pass" + values.put('currentWs', currentWs) + values.put('env', envDir) + values.put('module', module) + values.put('jobName', jobName) + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + println values + ansible_playbook_run(values) + } + } + } + catch (err) { + throw err + } +} diff --git a/pipelines/bootstrap-swarm/Jenkinsfile b/pipelines/bootstrap-swarm/Jenkinsfile new file mode 100644 index 0000000000..418a574705 --- /dev/null +++ b/pipelines/bootstrap-swarm/Jenkinsfile @@ -0,0 +1,38 @@ +@Library('deploy-conf') _ +node() { + try { + String ANSI_GREEN = "\u001B[32m" + String ANSI_NORMAL = "\u001B[0m" + String ANSI_BOLD = "\u001B[1m" + String ANSI_RED = "\u001B[31m" + String ANSI_YELLOW = "\u001B[33m" + + stage('checkout public repo') { + cleanWs() + checkout scm + } + + ansiColor('xterm') { + stage('deploy'){ + values = [:] + envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-3].trim() + module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() + jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() + currentWs = sh(returnStdout: true, script: 'pwd').trim() + ansiblePlaybook = "${currentWs}/ansible/setup-dockerswarm.yml" + ansibleExtraArgs = "--extra-vars \"hosts=${params.hosts}\" --extra-vars \"ansible_ssh_private_key_file=/run/secrets/deployer_ssh_key\"" + values.put('currentWs', currentWs) + values.put('env', envDir) + values.put('module', module) + values.put('jobName', jobName) + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + println values + ansible_playbook_run(values) + } + } + } + catch (err) { + throw err + } +} diff --git a/pipelines/bootstrap/Jenkinsfile b/pipelines/bootstrap/Jenkinsfile new file mode 100644 index 0000000000..e1464148ad --- /dev/null +++ b/pipelines/bootstrap/Jenkinsfile @@ -0,0 +1,38 @@ +@Library('deploy-conf') _ +node() { + try { + String ANSI_GREEN = "\u001B[32m" + String ANSI_NORMAL = "\u001B[0m" + String ANSI_BOLD = "\u001B[1m" + String ANSI_RED = "\u001B[31m" + String ANSI_YELLOW = "\u001B[33m" + + stage('checkout public repo') { + cleanWs() + checkout scm + } + + ansiColor('xterm') { + stage('deploy'){ + values = [:] + envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-3].trim() + module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() + jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() + currentWs = sh(returnStdout: true, script: 'pwd').trim() + ansiblePlaybook = "${currentWs}/ansible/bootstrap.yml" + ansibleExtraArgs = "--tags bootstrap_any --extra-vars \"hosts=${params.hosts}\"" + values.put('currentWs', currentWs) + values.put('env', envDir) + values.put('module', module) + values.put('jobName', jobName) + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + println values + ansible_playbook_run(values) + } + } + } + catch (err) { + throw err + } +} diff --git a/pipelines/bootstrap/Jenkinsfile.rotatekey b/pipelines/bootstrap/Jenkinsfile.rotatekey new file mode 100644 index 0000000000..db3deb07a9 --- /dev/null +++ b/pipelines/bootstrap/Jenkinsfile.rotatekey @@ -0,0 +1,38 @@ +@Library('deploy-conf') _ +node() { + try { + String ANSI_GREEN = "\u001B[32m" + String ANSI_NORMAL = "\u001B[0m" + String ANSI_BOLD = "\u001B[1m" + String ANSI_RED = "\u001B[31m" + String ANSI_YELLOW = "\u001B[33m" + + stage('checkout public repo') { + cleanWs() + checkout scm + } + + ansiColor('xterm') { + stage('deploy'){ + values = [:] + envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-3].trim() + module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() + jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() + currentWs = sh(returnStdout: true, script: 'pwd').trim() + ansiblePlaybook = "${currentWs}/ansible/rotatekeys.yml" + ansibleExtraArgs = " --extra-vars bootstrap_user_public_key=\"${params.bootstrap_user_public_key}\" --extra-vars bootstrap_user=\"${params.bootstrap_user}\" --extra-vars ssh_user=\"${params.ssh_user}\" --extra-vars ssh_private_file=\"${params.ssh_private_file}\" --extra-vars ssh_public_key=\"${params.ssh_public_key}\"" + values.put('currentWs', currentWs) + values.put('env', envDir) + values.put('module', module) + values.put('jobName', jobName) + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + println values + ansible_playbook_run(values) + } + } + } + catch (err) { + throw err + } +} diff --git a/pipelines/cassandra-backup/Jenkinsfile.sample b/pipelines/cassandra-backup/Jenkinsfile.sample deleted file mode 100644 index fee2318964..0000000000 --- a/pipelines/cassandra-backup/Jenkinsfile.sample +++ /dev/null @@ -1,32 +0,0 @@ -#!groovy - -node('general-staging') { - - currentBuild.result = "SUCCESS" - - try { - - stage('Checkout'){ - - checkout scm - } - - - - stage('Pre-Build'){ - sh('chmod a+x ansible/installDeps.sh') - sh('./ansible/installDeps.sh') - } - - stage('Build'){ - - sh('ansible-playbook -i ansible/inventory/staging ansible/cassandra-backup.yml --vault-password-file /run/secrets/vault-pass ') - } - - } - catch (err) { - currentBuild.result = "FAILURE" - throw err - } - -} \ No newline at end of file diff --git a/pipelines/cassandra-restore/Jenkinsfile.sample b/pipelines/cassandra-restore/Jenkinsfile.sample deleted file mode 100644 index 0203cae04c..0000000000 --- a/pipelines/cassandra-restore/Jenkinsfile.sample +++ /dev/null @@ -1,34 +0,0 @@ -#!groovy - -node('general-staging') { - - properties([parameters([string(defaultValue: '', description: 'time ', name: 'snapshot')]), pipelineTriggers([])]) - - currentBuild.result = "SUCCESS" - - try { - - stage('Checkout'){ - - checkout scm - } - - stage('Pre-Build'){ - sh('chmod a+x ansible/installDeps.sh') - sh('./ansible/installDeps.sh') - } - - stage('Build'){ - - sh('ansible-playbook -i ansible/inventory/staging ansible/cassandra-restore.yml --vault-password-file /run/secrets/vault-pass --extra-vars "cassandra_restore_gzip_file_name=cassandra_backup_${snapshot}.zip snapshot=${snapshot}"') - } - - } - catch (err) { - currentBuild.result = "FAILURE" - throw err - } - -} - - diff --git a/pipelines/cassandra/Jenkinsfile.sample b/pipelines/cassandra/Jenkinsfile.sample deleted file mode 100644 index 72543ff348..0000000000 --- a/pipelines/cassandra/Jenkinsfile.sample +++ /dev/null @@ -1,32 +0,0 @@ -#!groovy - -node('general-staging') { - - currentBuild.result = "SUCCESS" - - try { - - stage('Checkout'){ - - checkout scm - } - - - - stage('Pre-Build'){ - sh('chmod a+x ansible/installDeps.sh') - sh('./ansible/installDeps.sh') - } - - stage('Build'){ - - sh('ansible-playbook -i ansible/inventory/staging ansible/provision.yml --tags cassandra --vault-password-file /run/secrets/vault-pass ') - } - - } - catch (err) { - currentBuild.result = "FAILURE" - throw err - } - -} \ No newline at end of file diff --git a/pipelines/cassandra/installDeps.sh b/pipelines/cassandra/installDeps.sh deleted file mode 100644 index 49a927e6e5..0000000000 --- a/pipelines/cassandra/installDeps.sh +++ /dev/null @@ -1 +0,0 @@ -apk -v add ansible=2.3.0.0-r1 diff --git a/pipelines/deploy/CEPlugins/Jenkinsfile b/pipelines/deploy/CEPlugins/Jenkinsfile new file mode 100644 index 0000000000..9c8b575c56 --- /dev/null +++ b/pipelines/deploy/CEPlugins/Jenkinsfile @@ -0,0 +1,60 @@ +@Library('deploy-conf') _ +node() { + try { + String ANSI_GREEN = "\u001B[32m" + String ANSI_NORMAL = "\u001B[0m" + String ANSI_BOLD = "\u001B[1m" + String ANSI_RED = "\u001B[31m" + String ANSI_YELLOW = "\u001B[33m" + + stage('checkout public repo') { + cleanWs() + checkout scm + } + + ansiColor('xterm') { + values = lp_dp_params() + values.put('module', 'Core') + stage('get artifact') { + currentWs = sh(returnStdout: true, script: 'pwd').trim() + artifact = values.artifact_name + ":" + values.artifact_version + values.put('currentWs', currentWs) + if (params.artifact_source == "ArtifactRepo") { + println(ANSI_BOLD + ANSI_YELLOW + '''\ + Option chosen is ArtifactRepo, ignoring any previously copied artifacts and new artifacts will be downloaded from remote source + '''.stripIndent().replace("\n", " ") + ANSI_NORMAL) + ansiblePlaybook = "${currentWs}/ansible/artifacts-download.yml" + ansibleExtraArgs = """\ + --extra-vars "artifact=${artifact} + artifact_path=${currentWs}/${artifact}" + --vault-password-file /var/lib/jenkins/secrets/vault-pass + """.stripIndent().replace("\n", " ") + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + ansible_playbook_run(values) + } + else{ + println(ANSI_BOLD + ANSI_YELLOW + '''\ + Option chosen is JenkinsJob, using the artifacts copied + '''.stripIndent().replace("\n", " ") + ANSI_NORMAL) + } + } + stage('deploy artifact'){ + withCredentials([usernamePassword(credentialsId: 'az-blob-credentials', passwordVariable: 'azure_account_key', usernameVariable: 'azure_account_name')]) { + sh """ + unzip ${artifact} + unzip content-plugins.zip + chmod a+x content-plugins/az_copy.sh + bash -x content-plugins/az_copy.sh ${params.container_name} + """ + } + archiveArtifacts artifacts: "${artifact}", fingerprint: true, onlyIfSuccessful: true + archiveArtifacts artifacts: 'metadata.json', onlyIfSuccessful: true + currentBuild.description = "${values.artifact_version}" + } + } + } + catch (err) { + throw err + } +} diff --git a/pipelines/deploy/CollectionEditor/Jenkinsfile b/pipelines/deploy/CollectionEditor/Jenkinsfile new file mode 100644 index 0000000000..4c7153dfde --- /dev/null +++ b/pipelines/deploy/CollectionEditor/Jenkinsfile @@ -0,0 +1,70 @@ +@Library('deploy-conf') _ +node() { + try { + String ANSI_GREEN = "\u001B[32m" + String ANSI_NORMAL = "\u001B[0m" + String ANSI_BOLD = "\u001B[1m" + String ANSI_RED = "\u001B[31m" + String ANSI_YELLOW = "\u001B[33m" + + stage('checkout public repo') { + cleanWs() + checkout scm + } + + ansiColor('xterm') { + values = lp_dp_params() + values.put('module', 'Core') + stage('get artifact') { + currentWs = sh(returnStdout: true, script: 'pwd').trim() + artifact = values.artifact_name + ":" + values.artifact_version + values.put('currentWs', currentWs) + if (params.artifact_source == "ArtifactRepo") { + println(ANSI_BOLD + ANSI_YELLOW + '''\ + Option chosen is ArtifactRepo, ignoring any previously copied artifacts and new artifacts will be downloaded from remote source + '''.stripIndent().replace("\n", " ") + ANSI_NORMAL) + ansiblePlaybook = "${currentWs}/ansible/artifacts-download.yml" + ansibleExtraArgs = """\ + --extra-vars "artifact=${artifact} + artifact_path=${currentWs}/${artifact}" + --vault-password-file /var/lib/jenkins/secrets/vault-pass + """.stripIndent().replace("\n", " ") + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + ansible_playbook_run(values) + } + else{ + println(ANSI_BOLD + ANSI_YELLOW + '''\ + Option chosen is JenkinsJob, using the artifacts copied + '''.stripIndent().replace("\n", " ") + ANSI_NORMAL) + } + } + stage('deploy artifact'){ + withCredentials([usernamePassword(credentialsId: 'az-blob-credentials', passwordVariable: 'azure_account_key', usernameVariable: 'azure_account_name')]) { + sh """ + unzip ${artifact} + unzip -o collection-editor.zip -d collection-editor + az storage blob upload-batch --destination ${params.container_name}/collection-editor --source collection-editor --account-name $azure_account_name --account-key $azure_account_key + cd collection-editor + npm config set strict-ssl false + npm install + npm install promise + gulp minifyJs # To rename the minified files + gulp copystyleImages + gulp clean + gulp injectrenamedfiles # Inject the minified files to index.html + gulp package # Package the build + az storage blob upload-batch --destination ${params.container_name}/artefacts/editor --source dist/editor --account-name $azure_account_name --account-key $azure_account_key + az storage blob upload-batch --destination ${params.container_name}/artefacts/coreplugins --source dist/coreplugins --account-name $azure_account_name --account-key $azure_account_key + """ + } + archiveArtifacts artifacts: "${artifact}", fingerprint: true, onlyIfSuccessful: true + archiveArtifacts artifacts: 'metadata.json', onlyIfSuccessful: true + currentBuild.description = "${values.artifact_version}" + } + } + } + catch (err) { + throw err + } +} diff --git a/pipelines/deploy/ContentFramework/Jenkinsfile b/pipelines/deploy/ContentFramework/Jenkinsfile new file mode 100644 index 0000000000..530b568242 --- /dev/null +++ b/pipelines/deploy/ContentFramework/Jenkinsfile @@ -0,0 +1,78 @@ +@Library('deploy-conf') _ +node() { + try { + String ANSI_GREEN = "\u001B[32m" + String ANSI_NORMAL = "\u001B[0m" + String ANSI_BOLD = "\u001B[1m" + String ANSI_RED = "\u001B[31m" + String ANSI_YELLOW = "\u001B[33m" + + stage('checkout public repo') { + cleanWs() + checkout scm + } + + ansiColor('xterm') { + values = lp_dp_params() + values.put('module', 'Core') + stage('get artifact') { + currentWs = sh(returnStdout: true, script: 'pwd').trim() + artifact = values.artifact_name + ":" + values.artifact_version + values.put('currentWs', currentWs) + if (params.artifact_source == "ArtifactRepo") { + println(ANSI_BOLD + ANSI_YELLOW + '''\ + Option chosen is ArtifactRepo, ignoring any previously copied artifacts and new artifacts will be downloaded from remote source + '''.stripIndent().replace("\n", " ") + ANSI_NORMAL) + ansiblePlaybook = "${currentWs}/ansible/artifacts-download.yml" + ansibleExtraArgs = """\ + --extra-vars "artifact=${artifact} + artifact_path=${currentWs}/${artifact}" + --vault-password-file /var/lib/jenkins/secrets/vault-pass + """.stripIndent().replace("\n", " ") + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + ansible_playbook_run(values) + } + else{ + println(ANSI_BOLD + ANSI_YELLOW + '''\ + Option chosen is JenkinsJob, using the artifacts copied + '''.stripIndent().replace("\n", " ") + ANSI_NORMAL) + } + } + stage('deploy artifact'){ + withCredentials([usernamePassword(credentialsId: 'az-blob-credentials', passwordVariable: 'azure_account_key', usernameVariable: 'azure_account_name')]) { + sh """ + unzip ${artifact} + unzip -o content-editor.zip -d content-editor + export editor_version_number=${values.artifact_version} + sed -i -e 's/dispatcher:\"console\"/dispatcher:\"piwik\"/g' content-editor/scripts/* + sed -i 's:/api:/action:g' content-editor/scripts/base-editor.min.*.js + sed -i 's/useProxyForURL:true/useProxyForURL:false/g' content-editor/scripts/base-editor.min.*.js + sed -i -e 's/dispatcher:\"local\"/dispatcher:\"piwik\"/g' content-editor/scripts/* + az storage blob upload-batch --destination ${params.container_name}/content-editor --source content-editor --account-name $azure_account_name --account-key $azure_account_key + zip -r content-editor-artifact.zip content-editor + cd content-editor + npm install + npm install promise + gulp minifyJs + gulp copystyleImages + gulp clean + gulp injectrenamedfiles + gulp package + az storage blob upload-batch --destination ${params.container_name}/artefacts/editor --source dist/editor --account-name $azure_account_name --account-key $azure_account_key + az storage blob upload-batch --destination ${params.container_name}/artefacts/coreplugins --source dist/coreplugins --account-name $azure_account_name --account-key $azure_account_key + rm -rf node_modules + cd .. + zip -r content-editor.zip content-editor + """ + } + archiveArtifacts artifacts: "${artifact}", fingerprint: true, onlyIfSuccessful: true + archiveArtifacts artifacts: 'metadata.json', onlyIfSuccessful: true + currentBuild.description = "${values.artifact_version}" + } + } + } + catch (err) { + throw err + } +} diff --git a/pipelines/deploy/ContentRendererPreview/Jenkinsfile b/pipelines/deploy/ContentRendererPreview/Jenkinsfile new file mode 100644 index 0000000000..c6c7eeba62 --- /dev/null +++ b/pipelines/deploy/ContentRendererPreview/Jenkinsfile @@ -0,0 +1,64 @@ +@Library('deploy-conf') _ +node() { + try { + String ANSI_GREEN = "\u001B[32m" + String ANSI_NORMAL = "\u001B[0m" + String ANSI_BOLD = "\u001B[1m" + String ANSI_RED = "\u001B[31m" + String ANSI_YELLOW = "\u001B[33m" + + stage('checkout public repo') { + cleanWs() + checkout scm + } + + ansiColor('xterm') { + values = lp_dp_params() + values.put('module', 'Core') + stage('get artifact') { + currentWs = sh(returnStdout: true, script: 'pwd').trim() + artifact = values.artifact_name + ":" + values.artifact_version + values.put('currentWs', currentWs) + if (params.artifact_source == "ArtifactRepo") { + println(ANSI_BOLD + ANSI_YELLOW + '''\ + Option chosen is ArtifactRepo, ignoring any previously copied artifacts and new artifacts will be downloaded from remote source + '''.stripIndent().replace("\n", " ") + ANSI_NORMAL) + ansiblePlaybook = "${currentWs}/ansible/artifacts-download.yml" + ansibleExtraArgs = """\ + --extra-vars "artifact=${artifact} + artifact_path=${currentWs}/${artifact}" + --vault-password-file /var/lib/jenkins/secrets/vault-pass + """.stripIndent().replace("\n", " ") + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + ansible_playbook_run(values) + } + else{ + println(ANSI_BOLD + ANSI_YELLOW + '''\ + Option chosen is JenkinsJob, using the artifacts copied + '''.stripIndent().replace("\n", " ") + ANSI_NORMAL) + } + } + stage('deploy artifact'){ + player_version_number = values.artifact_version + withCredentials([usernamePassword(credentialsId: 'az-blob-credentials', passwordVariable: 'azure_account_key', usernameVariable: 'azure_account_name')]) { + sh """ + unzip ${artifact} + #cd player + unzip -o preview.zip -d preview + mv preview.zip content-player-${player_version_number}.zip + az storage blob upload-batch --destination ${params.container_name}/v3/preview --source preview --account-name $azure_account_name --account-key $azure_account_key + az storage blob upload --container-name ${params.container_name} --file content-player-${player_version_number}.zip --name artefacts/content-player/content-player-${player_version_number}.zip --account-name $azure_account_name --account-key $azure_account_key + + """ + } + archiveArtifacts artifacts: "${artifact}", fingerprint: true, onlyIfSuccessful: true + archiveArtifacts artifacts: 'metadata.json', onlyIfSuccessful: true + currentBuild.description = "${values.artifact_version}" + } + } + } + catch (err) { + throw err + } +} diff --git a/pipelines/deploy/GenericEditor/Jenkinsfile b/pipelines/deploy/GenericEditor/Jenkinsfile new file mode 100644 index 0000000000..02a70a87d8 --- /dev/null +++ b/pipelines/deploy/GenericEditor/Jenkinsfile @@ -0,0 +1,66 @@ +@Library('deploy-conf') _ +node() { + try { + String ANSI_GREEN = "\u001B[32m" + String ANSI_NORMAL = "\u001B[0m" + String ANSI_BOLD = "\u001B[1m" + String ANSI_RED = "\u001B[31m" + String ANSI_YELLOW = "\u001B[33m" + + stage('checkout public repo') { + cleanWs() + checkout scm + } + + ansiColor('xterm') { + values = lp_dp_params() + values.put('module', 'Core') + stage('get artifact') { + currentWs = sh(returnStdout: true, script: 'pwd').trim() + artifact = values.artifact_name + ":" + values.artifact_version + values.put('currentWs', currentWs) + if (params.artifact_source == "ArtifactRepo") { + println(ANSI_BOLD + ANSI_YELLOW + '''\ + Option chosen is ArtifactRepo, ignoring any previously copied artifacts and new artifacts will be downloaded from remote source + '''.stripIndent().replace("\n", " ") + ANSI_NORMAL) + ansiblePlaybook = "${currentWs}/ansible/artifacts-download.yml" + ansibleExtraArgs = """\ + --extra-vars "artifact=${artifact} + artifact_path=${currentWs}/${artifact}" + --vault-password-file /var/lib/jenkins/secrets/vault-pass + """.stripIndent().replace("\n", " ") + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + ansible_playbook_run(values) + } + else{ + println(ANSI_BOLD + ANSI_YELLOW + '''\ + Option chosen is JenkinsJob, using the artifacts copied + '''.stripIndent().replace("\n", " ") + ANSI_NORMAL) + } + } + stage('deploy artifact'){ + withCredentials([usernamePassword(credentialsId: 'az-blob-credentials', passwordVariable: 'azure_account_key', usernameVariable: 'azure_account_name')]) { + sh """ + unzip ${artifact} + unzip -o generic-editor.zip -d generic-editor + az storage blob upload-batch --destination ${params.container_name}/generic-editor --source generic-editor --account-name $azure_account_name --account-key $azure_account_key + cd generic-editor + npm config set strict-ssl false + npm install + npm install promise + gulp package + az storage blob upload-batch --destination ${params.container_name}/artefacts/editor --source dist/editor --account-name $azure_account_name --account-key $azure_account_key + az storage blob upload-batch --destination ${params.container_name}/artefacts/coreplugins --source dist/coreplugins --account-name $azure_account_name --account-key $azure_account_key + """ + } + archiveArtifacts artifacts: "${artifact}", fingerprint: true, onlyIfSuccessful: true + archiveArtifacts artifacts: 'metadata.json', onlyIfSuccessful: true + currentBuild.description = "${values.artifact_version}" + } + } + } + catch (err) { + throw err + } +} diff --git a/pipelines/deploy/adminutils/Jenkinsfile b/pipelines/deploy/adminutils/Jenkinsfile new file mode 100644 index 0000000000..f8fa89cc24 --- /dev/null +++ b/pipelines/deploy/adminutils/Jenkinsfile @@ -0,0 +1,25 @@ +@Library('deploy-conf') _ +node() { + try { + stage('checkout public repo') { + cleanWs() + checkout scm + } + stage('deploy') { + values = docker_params() + currentWs = sh(returnStdout: true, script: 'pwd').trim() + ansiblePlaybook = "$currentWs/ansible/deploy.yml" + ansibleExtraArgs = "--tags \"stack-adminutil\" --extra-vars \"hub_org=$hub_org image_name=$values.image_name image_tag=$values.image_tag\" --vault-password-file /var/lib/jenkins/secrets/vault-pass" + values.put('currentWs', currentWs) + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + ansible_playbook_run(values) + archiveArtifacts 'metadata.json' + currentBuild.description = "${values.image_tag}" + } + } + catch (err) { + currentBuild.result = "FAILURE" + throw err + } +} diff --git a/pipelines/deploy/am-onboard-apis/Jenkinsfile b/pipelines/deploy/am-onboard-apis/Jenkinsfile new file mode 100644 index 0000000000..01d3cb099a --- /dev/null +++ b/pipelines/deploy/am-onboard-apis/Jenkinsfile @@ -0,0 +1,38 @@ +@Library('deploy-conf') _ +node() { + try { + String ANSI_GREEN = "\u001B[32m" + String ANSI_NORMAL = "\u001B[0m" + String ANSI_BOLD = "\u001B[1m" + String ANSI_RED = "\u001B[31m" + String ANSI_YELLOW = "\u001B[33m" + + stage('checkout public repo') { + cleanWs() + checkout scm + } + + ansiColor('xterm') { + stage('deploy'){ + values = [:] + envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-3].trim() + module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() + jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() + currentWs = sh(returnStdout: true, script: 'pwd').trim() + ansiblePlaybook = "${currentWs}/ansible/api-manager.yml" + ansibleExtraArgs = "--tags kong-api --vault-password-file /var/lib/jenkins/secrets/vault-pass -v" + values.put('currentWs', currentWs) + values.put('env', envDir) + values.put('module', module) + values.put('jobName', jobName) + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + println values + ansible_playbook_run(values) + } + } + } + catch (err) { + throw err + } +} diff --git a/pipelines/deploy/am-onboard-consumers/Jenkinsfile b/pipelines/deploy/am-onboard-consumers/Jenkinsfile new file mode 100644 index 0000000000..07fc17c00d --- /dev/null +++ b/pipelines/deploy/am-onboard-consumers/Jenkinsfile @@ -0,0 +1,38 @@ +@Library('deploy-conf') _ +node() { + try { + String ANSI_GREEN = "\u001B[32m" + String ANSI_NORMAL = "\u001B[0m" + String ANSI_BOLD = "\u001B[1m" + String ANSI_RED = "\u001B[31m" + String ANSI_YELLOW = "\u001B[33m" + + stage('checkout public repo') { + cleanWs() + checkout scm + } + + ansiColor('xterm') { + stage('deploy'){ + values = [:] + envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-3].trim() + module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() + jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() + currentWs = sh(returnStdout: true, script: 'pwd').trim() + ansiblePlaybook = "${currentWs}/ansible/api-manager.yml" + ansibleExtraArgs = "--tags kong-consumer --vault-password-file /var/lib/jenkins/secrets/vault-pass -v" + values.put('currentWs', currentWs) + values.put('env', envDir) + values.put('module', module) + values.put('jobName', jobName) + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + println values + ansible_playbook_run(values) + } + } + } + catch (err) { + throw err + } +} diff --git a/pipelines/deploy/api-manager/Jenkinsfile b/pipelines/deploy/api-manager/Jenkinsfile new file mode 100644 index 0000000000..4501db1316 --- /dev/null +++ b/pipelines/deploy/api-manager/Jenkinsfile @@ -0,0 +1,25 @@ +@Library('deploy-conf') _ +node() { + try { + stage('checkout public repo') { + cleanWs() + checkout scm + } + stage('deploy') { + values = docker_params() + currentWs = sh(returnStdout: true, script: 'pwd').trim() + ansiblePlaybook = "$currentWs/ansible/deploy.yml" + ansibleExtraArgs = "--tags \"stack-api-manager\" --vault-password-file /var/lib/jenkins/secrets/vault-pass" + values.put('currentWs', currentWs) + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + ansible_playbook_run(values) + archiveArtifacts 'metadata.json' + currentBuild.description = "${values.image_tag}" + } + } + catch (err) { + currentBuild.result = "FAILURE" + throw err + } +} diff --git a/pipelines/deploy/application-elasticsearch/Jenkinsfile b/pipelines/deploy/application-elasticsearch/Jenkinsfile new file mode 100644 index 0000000000..889990da06 --- /dev/null +++ b/pipelines/deploy/application-elasticsearch/Jenkinsfile @@ -0,0 +1,38 @@ +@Library('deploy-conf') _ +node() { + try { + String ANSI_GREEN = "\u001B[32m" + String ANSI_NORMAL = "\u001B[0m" + String ANSI_BOLD = "\u001B[1m" + String ANSI_RED = "\u001B[31m" + String ANSI_YELLOW = "\u001B[33m" + + stage('checkout public repo') { + cleanWs() + checkout scm + } + + ansiColor('xterm') { + stage('deploy'){ + values = [:] + envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-3].trim() + module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() + jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() + currentWs = sh(returnStdout: true, script: 'pwd').trim() + ansiblePlaybook = "${currentWs}/ansible/provision.yml" + ansibleExtraArgs = "--tags es --vault-password-file /var/lib/jenkins/secrets/vault-pass" + values.put('currentWs', currentWs) + values.put('env', envDir) + values.put('module', module) + values.put('jobName', jobName) + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + println values + ansible_playbook_run(values) + } + } + } + catch (err) { + throw err + } +} diff --git a/pipelines/deploy/badger/Jenkinsfile b/pipelines/deploy/badger/Jenkinsfile new file mode 100644 index 0000000000..4a20c07752 --- /dev/null +++ b/pipelines/deploy/badger/Jenkinsfile @@ -0,0 +1,26 @@ +@Library('deploy-conf') _ +node() { + try { + stage('checkout public repo') { + cleanWs() + checkout scm + } + + stage('deploy') { + values = docker_params() + currentWs = sh(returnStdout: true, script: 'pwd').trim() + ansiblePlaybook = "$currentWs/ansible/deploy-badger.yml" + ansibleExtraArgs = "--extra-vars \"hub_org=$hub_org image_name=$values.image_name image_tag=$values.image_tag service_name=badger-service\" --vault-password-file /var/lib/jenkins/secrets/vault-pass" + values.put('currentWs', currentWs) + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + ansible_playbook_run(values) + archiveArtifacts 'metadata.json' + currentBuild.description = "${values.image_tag}" + } + } + catch (err) { + currentBuild.result = "FAILURE" + throw err + } +} diff --git a/pipelines/deploy/cassandra-deploy/Jenkinsfile b/pipelines/deploy/cassandra-deploy/Jenkinsfile new file mode 100644 index 0000000000..efbcbf9986 --- /dev/null +++ b/pipelines/deploy/cassandra-deploy/Jenkinsfile @@ -0,0 +1,59 @@ +@Library('deploy-conf') _ +node() { + try { + String ANSI_GREEN = "\u001B[32m" + String ANSI_NORMAL = "\u001B[0m" + String ANSI_BOLD = "\u001B[1m" + String ANSI_RED = "\u001B[31m" + String ANSI_YELLOW = "\u001B[33m" + + stage('checkout public repo') { + cleanWs() + checkout scm + } + ansiColor('xterm') { + stage('get artifact') { + values = lp_dp_params() + currentWs = sh(returnStdout: true, script: 'pwd').trim() + artifact = values.artifact_name + ":" + values.artifact_version + values.put('currentWs', currentWs) + if (params.artifact_source == "ArtifactRepo") { + println(ANSI_BOLD + ANSI_YELLOW + '''\ + Option chosen is ArtifactRepo, ignoring any previously copied artifacts and new artifacts will be downloaded from remote source + '''.stripIndent().replace("\n", " ") + ANSI_NORMAL) + ansiblePlaybook = "${currentWs}/ansible/artifacts-download.yml" + ansibleExtraArgs = """\ + --extra-vars "artifact=${artifact} + artifact_path=${currentWs}/${artifact}" + --vault-password-file /var/lib/jenkins/secrets/vault-pass + """.stripIndent().replace("\n", " ") + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + ansible_playbook_run(values) + } else { + println(ANSI_BOLD + ANSI_YELLOW + '''\ + Option chosen is JenkinsJob, using the artifacts copied + '''.stripIndent().replace("\n", " ") + ANSI_NORMAL) + } + } + stage('deploy artifact') { + sh """ + unzip ${artifact} + """ + ansiblePlaybook = "${currentWs}/ansible/cassandra-deploy.yml" + ansibleExtraArgs = "--vault-password-file /var/lib/jenkins/secrets/vault-pass -v" + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + println values + ansible_playbook_run(values) + archiveArtifacts artifacts: "${artifact}", fingerprint: true, onlyIfSuccessful: true + archiveArtifacts artifacts: 'metadata.json', onlyIfSuccessful: true + currentBuild.description = "${values.artifact_version}" + } + } + } + catch (err) { + currentBuild.result = "FAILURE" + throw err + } +} diff --git a/pipelines/deploy/config-service/Jenkinsfile b/pipelines/deploy/config-service/Jenkinsfile new file mode 100644 index 0000000000..1ef587fa91 --- /dev/null +++ b/pipelines/deploy/config-service/Jenkinsfile @@ -0,0 +1,26 @@ +@Library('deploy-conf') _ +node() { + try { + stage('checkout public repo') { + cleanWs() + checkout scm + } + + stage('deploy') { + values = docker_params() + currentWs = sh(returnStdout: true, script: 'pwd').trim() + ansiblePlaybook = "$currentWs/ansible/deploy.yml" + ansibleExtraArgs = "--tags \"stack-sunbird\" --extra-vars \"hub_org=$hub_org image_name=$values.image_name image_tag=$values.image_tag service_name=config-service deploy_config=True\" --vault-password-file /var/lib/jenkins/secrets/vault-pass" + values.put('currentWs', currentWs) + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + ansible_playbook_run(values) + archiveArtifacts 'metadata.json' + currentBuild.description = "${values.image_tag}" + } + } + catch (err) { + currentBuild.result = "FAILURE" + throw err + } +} diff --git a/pipelines/deploy/content/Jenkinsfile b/pipelines/deploy/content/Jenkinsfile new file mode 100644 index 0000000000..707ad24bda --- /dev/null +++ b/pipelines/deploy/content/Jenkinsfile @@ -0,0 +1,26 @@ +@Library('deploy-conf') _ +node() { + try { + stage('checkout public repo') { + cleanWs() + checkout scm + } + + stage('deploy') { + values = docker_params() + currentWs = sh(returnStdout: true, script: 'pwd').trim() + ansiblePlaybook = "$currentWs/ansible/deploy.yml" + ansibleExtraArgs = "--tags \"stack-sunbird\" --extra-vars \"hub_org=$hub_org image_name=$values.image_name image_tag=$values.image_tag service_name=content-service deploy_content=True\" --vault-password-file /var/lib/jenkins/secrets/vault-pass" + values.put('currentWs', currentWs) + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + ansible_playbook_run(values) + archiveArtifacts 'metadata.json' + currentBuild.description = "${values.image_tag}" + } + } + catch (err) { + currentBuild.result = "FAILURE" + throw err + } +} diff --git a/pipelines/deploy/keycloak-realm/Jenkinsfile b/pipelines/deploy/keycloak-realm/Jenkinsfile new file mode 100644 index 0000000000..3cb499eeca --- /dev/null +++ b/pipelines/deploy/keycloak-realm/Jenkinsfile @@ -0,0 +1,38 @@ +@Library('deploy-conf') _ +node() { + try { + String ANSI_GREEN = "\u001B[32m" + String ANSI_NORMAL = "\u001B[0m" + String ANSI_BOLD = "\u001B[1m" + String ANSI_RED = "\u001B[31m" + String ANSI_YELLOW = "\u001B[33m" + + stage('checkout public repo') { + cleanWs() + checkout scm + } + + ansiColor('xterm') { + stage('deploy') { + values = [:] + currentWs = sh(returnStdout: true, script: 'pwd').trim() + envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-3].trim() + module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() + jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() + ansiblePlaybook = "${currentWs}/ansible/sunbird-auth-deploy.yml" + ansibleExtraArgs = "--tags bootstrap --vault-password-file /var/lib/jenkins/secrets/vault-pass" + values.put('currentWs', currentWs) + values.put('env', envDir) + values.put('module', module) + values.put('jobName', jobName) + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + println values + ansible_playbook_run(values) + } + } + } + catch (err) { + throw err + } +} diff --git a/pipelines/deploy/keycloak/Jenkinsfile b/pipelines/deploy/keycloak/Jenkinsfile new file mode 100644 index 0000000000..30f157ff65 --- /dev/null +++ b/pipelines/deploy/keycloak/Jenkinsfile @@ -0,0 +1,60 @@ +@Library('deploy-conf') _ +node() { + try { + String ANSI_GREEN = "\u001B[32m" + String ANSI_NORMAL = "\u001B[0m" + String ANSI_BOLD = "\u001B[1m" + String ANSI_RED = "\u001B[31m" + String ANSI_YELLOW = "\u001B[33m" + + stage('checkout public repo') { + cleanWs() + checkout scm + sh "git clone https://github.com/project-sunbird/sunbird-auth.git -b release-1.14" + } + ansiColor('xterm') { + stage('get artifact') { + values = lp_dp_params() + currentWs = sh(returnStdout: true, script: 'pwd').trim() + artifact = values.artifact_name + ":" + values.artifact_version + values.put('currentWs', currentWs) + if (params.artifact_source == "ArtifactRepo") { + println(ANSI_BOLD + ANSI_YELLOW + '''\ + Option chosen is ArtifactRepo, ignoring any previously copied artifacts and new artifacts will be downloaded from remote source + '''.stripIndent().replace("\n", " ") + ANSI_NORMAL) + ansiblePlaybook = "${currentWs}/ansible/artifacts-download.yml" + ansibleExtraArgs = """\ + --extra-vars "artifact=${artifact} + artifact_path=${currentWs}/${artifact}" + --vault-password-file /var/lib/jenkins/secrets/vault-pass + """.stripIndent().replace("\n", " ") + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + ansible_playbook_run(values) + } else { + println(ANSI_BOLD + ANSI_YELLOW + '''\ + Option chosen is JenkinsJob, using the artifacts copied + '''.stripIndent().replace("\n", " ") + ANSI_NORMAL) + } + } + stage('deploy artifact') { + sh """ + unzip ${artifact} + """ + ansiblePlaybook = "${currentWs}/ansible/sunbird-auth-deploy.yml" + ansibleExtraArgs = "--limit keycloak --tags deploy --vault-password-file /var/lib/jenkins/secrets/vault-pass -v" + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + println values + ansible_playbook_run(values) + archiveArtifacts artifacts: "${artifact}", fingerprint: true, onlyIfSuccessful: true + archiveArtifacts artifacts: 'metadata.json', onlyIfSuccessful: true + currentBuild.description = "${values.artifact_version}" + } + } + } + catch (err) { + currentBuild.result = "FAILURE" + throw err + } +} diff --git a/pipelines/deploy/learner/Jenkinsfile b/pipelines/deploy/learner/Jenkinsfile new file mode 100644 index 0000000000..caa9847e83 --- /dev/null +++ b/pipelines/deploy/learner/Jenkinsfile @@ -0,0 +1,26 @@ +@Library('deploy-conf') _ +node() { + try { + stage('checkout public repo') { + cleanWs() + checkout scm + } + + stage('deploy') { + values = docker_params() + currentWs = sh(returnStdout: true, script: 'pwd').trim() + ansiblePlaybook = "$currentWs/ansible/deploy.yml" + ansibleExtraArgs = "--tags \"stack-sunbird\" --extra-vars \"hub_org=$hub_org image_name=$values.image_name image_tag=$values.image_tag service_name=learner-service deploy_learner=True\" --vault-password-file /var/lib/jenkins/secrets/vault-pass" + values.put('currentWs', currentWs) + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + ansible_playbook_run(values) + archiveArtifacts 'metadata.json' + currentBuild.description = "${values.image_tag}" + } + } + catch (err) { + currentBuild.result = "FAILURE" + throw err + } +} diff --git a/pipelines/deploy/logger-elasticsearch/Jenkinsfile b/pipelines/deploy/logger-elasticsearch/Jenkinsfile new file mode 100644 index 0000000000..1221739ac5 --- /dev/null +++ b/pipelines/deploy/logger-elasticsearch/Jenkinsfile @@ -0,0 +1,38 @@ +@Library('deploy-conf') _ +node() { + try { + String ANSI_GREEN = "\u001B[32m" + String ANSI_NORMAL = "\u001B[0m" + String ANSI_BOLD = "\u001B[1m" + String ANSI_RED = "\u001B[31m" + String ANSI_YELLOW = "\u001B[33m" + + stage('checkout public repo') { + cleanWs() + checkout scm + } + + ansiColor('xterm') { + stage('deploy'){ + values = [:] + envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-3].trim() + module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() + jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() + values.put('currentWs', currentWs) + ansiblePlaybook = "${currentWs}/ansible/logging.yml" + ansibleExtraArgs = "--tags log-es --vault-password-file /var/lib/jenkins/secrets/vault-pass -v" + values.put('currentWs', currentWs) + values.put('env', envDir) + values.put('module', module) + values.put('jobName', jobName) + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + println values + ansible_playbook_run(values) + } + } + } + catch (err) { + throw err + } +} diff --git a/pipelines/deploy/logger/Jenkinsfile b/pipelines/deploy/logger/Jenkinsfile new file mode 100644 index 0000000000..7dcb78ee52 --- /dev/null +++ b/pipelines/deploy/logger/Jenkinsfile @@ -0,0 +1,39 @@ +@Library('deploy-conf') _ +node() { + try { + String ANSI_GREEN = "\u001B[32m" + String ANSI_NORMAL = "\u001B[0m" + String ANSI_BOLD = "\u001B[1m" + String ANSI_RED = "\u001B[31m" + String ANSI_YELLOW = "\u001B[33m" + + stage('checkout public repo') { + cleanWs() + checkout scm + } + + ansiColor('xterm') { + stage('deploy'){ + values = [:] + currentWs = sh(returnStdout: true, script: 'pwd').trim() + currentWs = sh(returnStdout: true, script: 'pwd').trim() + envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-3].trim() + module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() + jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() + ansiblePlaybook = "${currentWs}/ansible/logging.yml" + ansibleExtraArgs = "--vault-password-file /var/lib/jenkins/secrets/vault-pass -v" + values.put('currentWs', currentWs) + values.put('env', envDir) + values.put('module', module) + values.put('jobName', jobName) + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + println values + ansible_playbook_run(values) + } + } + } + catch (err) { + throw err + } +} diff --git a/pipelines/deploy/monitor/Core/Jenkinsfile b/pipelines/deploy/monitor/Core/Jenkinsfile new file mode 100644 index 0000000000..2d139577ac --- /dev/null +++ b/pipelines/deploy/monitor/Core/Jenkinsfile @@ -0,0 +1,38 @@ +@Library('deploy-conf') _ +node() { + try { + String ANSI_GREEN = "\u001B[32m" + String ANSI_NORMAL = "\u001B[0m" + String ANSI_BOLD = "\u001B[1m" + String ANSI_RED = "\u001B[31m" + String ANSI_YELLOW = "\u001B[33m" + + stage('checkout public repo') { + cleanWs() + checkout scm + } + + ansiColor('xterm') { + stage('deploy'){ + values = [:] + currentWs = sh(returnStdout: true, script: 'pwd').trim() + envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-3].trim() + module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() + jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() + ansiblePlaybook = "${currentWs}/ansible/monitoring.yml" + ansibleExtraArgs = "--skip-tags lp_dp_monitoring --vault-password-file /var/lib/jenkins/secrets/vault-pass -v" + values.put('currentWs', currentWs) + values.put('env', envDir) + values.put('module', module) + values.put('jobName', jobName) + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + println values + ansible_playbook_run(values) + } + } + } + catch (err) { + throw err + } +} diff --git a/pipelines/deploy/monitor/DataPipeline/Jenkinsfile b/pipelines/deploy/monitor/DataPipeline/Jenkinsfile new file mode 100644 index 0000000000..85f6a1ef2e --- /dev/null +++ b/pipelines/deploy/monitor/DataPipeline/Jenkinsfile @@ -0,0 +1,38 @@ +@Library('deploy-conf') _ +node() { + try { + String ANSI_GREEN = "\u001B[32m" + String ANSI_NORMAL = "\u001B[0m" + String ANSI_BOLD = "\u001B[1m" + String ANSI_RED = "\u001B[31m" + String ANSI_YELLOW = "\u001B[33m" + + stage('checkout public repo') { + cleanWs() + checkout scm + } + + ansiColor('xterm') { + stage('deploy'){ + values = [:] + currentWs = sh(returnStdout: true, script: 'pwd').trim() + envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-3].trim() + module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() + jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() + ansiblePlaybook = "${currentWs}/ansible/monitoring.yml" + ansibleExtraArgs = "--tags metrics-exporter,lp_dp_monitoring --vault-password-file /var/lib/jenkins/secrets/vault-pass -v" + values.put('currentWs', currentWs) + values.put('env', envDir) + values.put('module', module) + values.put('jobName', jobName) + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + println values + ansible_playbook_run(values) + } + } + } + catch (err) { + throw err + } +} diff --git a/pipelines/deploy/monitor/Jenkinsfile b/pipelines/deploy/monitor/Jenkinsfile new file mode 100644 index 0000000000..ef7357ffc2 --- /dev/null +++ b/pipelines/deploy/monitor/Jenkinsfile @@ -0,0 +1,38 @@ +@Library('deploy-conf') _ +node() { + try { + String ANSI_GREEN = "\u001B[32m" + String ANSI_NORMAL = "\u001B[0m" + String ANSI_BOLD = "\u001B[1m" + String ANSI_RED = "\u001B[31m" + String ANSI_YELLOW = "\u001B[33m" + + stage('checkout public repo') { + cleanWs() + checkout scm + } + + ansiColor('xterm') { + stage('deploy'){ + values = [:] + currentWs = sh(returnStdout: true, script: 'pwd').trim() + envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-3].trim() + module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() + jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() + ansiblePlaybook = "${currentWs}/ansible/monitoring.yml" + ansibleExtraArgs = "--tags metrics-exporter --vault-password-file /var/lib/jenkins/secrets/vault-pass -v" + values.put('currentWs', currentWs) + values.put('env', envDir) + values.put('module', module) + values.put('jobName', jobName) + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + println values + ansible_playbook_run(values) + } + } + } + catch (err) { + throw err + } +} diff --git a/pipelines/deploy/monitor/KnowledgePlatform/Jenkinsfile b/pipelines/deploy/monitor/KnowledgePlatform/Jenkinsfile new file mode 100644 index 0000000000..85f6a1ef2e --- /dev/null +++ b/pipelines/deploy/monitor/KnowledgePlatform/Jenkinsfile @@ -0,0 +1,38 @@ +@Library('deploy-conf') _ +node() { + try { + String ANSI_GREEN = "\u001B[32m" + String ANSI_NORMAL = "\u001B[0m" + String ANSI_BOLD = "\u001B[1m" + String ANSI_RED = "\u001B[31m" + String ANSI_YELLOW = "\u001B[33m" + + stage('checkout public repo') { + cleanWs() + checkout scm + } + + ansiColor('xterm') { + stage('deploy'){ + values = [:] + currentWs = sh(returnStdout: true, script: 'pwd').trim() + envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-3].trim() + module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() + jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() + ansiblePlaybook = "${currentWs}/ansible/monitoring.yml" + ansibleExtraArgs = "--tags metrics-exporter,lp_dp_monitoring --vault-password-file /var/lib/jenkins/secrets/vault-pass -v" + values.put('currentWs', currentWs) + values.put('env', envDir) + values.put('module', module) + values.put('jobName', jobName) + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + println values + ansible_playbook_run(values) + } + } + } + catch (err) { + throw err + } +} diff --git a/pipelines/deploy/player/Jenkinsfile b/pipelines/deploy/player/Jenkinsfile new file mode 100644 index 0000000000..2ce6c06e26 --- /dev/null +++ b/pipelines/deploy/player/Jenkinsfile @@ -0,0 +1,25 @@ +@Library('deploy-conf') _ +node() { + try { + stage('checkout public repo') { + cleanWs() + checkout scm + } + stage('deploy') { + values = docker_params() + currentWs = sh(returnStdout: true, script: 'pwd').trim() + ansiblePlaybook = "$currentWs/ansible/deploy.yml" + ansibleExtraArgs = "--tags \"stack-sunbird\" --extra-vars \"hub_org=$hub_org image_name=$values.image_name image_tag=$values.image_tag service_name=player deploy_stack=True\" --vault-password-file /var/lib/jenkins/secrets/vault-pass" + values.put('currentWs', currentWs) + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + ansible_playbook_run(values) + archiveArtifacts 'metadata.json' + currentBuild.description = "${values.image_tag}" + } + } + catch (err) { + currentBuild.result = "FAILURE" + throw err + } +} diff --git a/pipelines/deploy/proxy/Jenkinsfile b/pipelines/deploy/proxy/Jenkinsfile new file mode 100644 index 0000000000..78696bda7f --- /dev/null +++ b/pipelines/deploy/proxy/Jenkinsfile @@ -0,0 +1,26 @@ +@Library('deploy-conf') _ +node() { + try { + stage('checkout public repo') { + cleanWs() + checkout scm + } + + stage('deploy') { + values = docker_params() + currentWs = sh(returnStdout: true, script: 'pwd').trim() + ansiblePlaybook = "$currentWs/ansible/deploy.yml" + ansibleExtraArgs = "--tags \"stack-proxy\" --extra-vars \"hub_org=$hub_org image_name=$values.image_name image_tag=$values.image_tag\" --vault-password-file /var/lib/jenkins/secrets/vault-pass" + values.put('currentWs', currentWs) + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + ansible_playbook_run(values) + archiveArtifacts 'metadata.json' + currentBuild.description = "${values.image_tag}" + } + } + catch (err) { + currentBuild.result = "FAILURE" + throw err + } +} diff --git a/pipelines/deploy/telemetry-logstash-datapipeline/Jenkinsfile b/pipelines/deploy/telemetry-logstash-datapipeline/Jenkinsfile new file mode 100644 index 0000000000..4d4c74debb --- /dev/null +++ b/pipelines/deploy/telemetry-logstash-datapipeline/Jenkinsfile @@ -0,0 +1,38 @@ +@Library('deploy-conf') _ +node() { + try { + String ANSI_GREEN = "\u001B[32m" + String ANSI_NORMAL = "\u001B[0m" + String ANSI_BOLD = "\u001B[1m" + String ANSI_RED = "\u001B[31m" + String ANSI_YELLOW = "\u001B[33m" + + stage('checkout public repo') { + cleanWs() + checkout scm + } + + ansiColor('xterm') { + stage('deploy'){ + values = [:] + envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-3].trim() + module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() + jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() + currentWs = sh(returnStdout: true, script: 'pwd').trim() + ansiblePlaybook = "${currentWs}/ansible/deploy.yml" + ansibleExtraArgs = "--tags \"stack-sunbird\" --extra-vars \"service_name=telemetry-service deploy_telemetry_logstash_datapipeline=True\" --vault-password-file /var/lib/jenkins/secrets/vault-pass -v" + values.put('currentWs', currentWs) + values.put('env', envDir) + values.put('module', module) + values.put('jobName', jobName) + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + println values + ansible_playbook_run(values) + } + } + } + catch (err) { + throw err + } +} diff --git a/pipelines/deploy/telemetry-logstash/Jenkinsfile b/pipelines/deploy/telemetry-logstash/Jenkinsfile new file mode 100644 index 0000000000..38b6db0a37 --- /dev/null +++ b/pipelines/deploy/telemetry-logstash/Jenkinsfile @@ -0,0 +1,38 @@ +@Library('deploy-conf') _ +node() { + try { + String ANSI_GREEN = "\u001B[32m" + String ANSI_NORMAL = "\u001B[0m" + String ANSI_BOLD = "\u001B[1m" + String ANSI_RED = "\u001B[31m" + String ANSI_YELLOW = "\u001B[33m" + + stage('checkout public repo') { + cleanWs() + checkout scm + } + + ansiColor('xterm') { + stage('deploy'){ + values = [:] + envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-3].trim() + module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() + jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() + currentWs = sh(returnStdout: true, script: 'pwd').trim() + ansiblePlaybook = "${currentWs}/ansible/deploy.yml" + ansibleExtraArgs = "--tags \"stack-sunbird\" --extra-vars \"service_name=telemetry-service deploy_telemetry_logstash=True\" --vault-password-file /var/lib/jenkins/secrets/vault-pass -v" + values.put('currentWs', currentWs) + values.put('env', envDir) + values.put('module', module) + values.put('jobName', jobName) + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + println values + ansible_playbook_run(values) + } + } + } + catch (err) { + throw err + } +} diff --git a/pipelines/deploy/telemetry/Jenkinsfile b/pipelines/deploy/telemetry/Jenkinsfile new file mode 100644 index 0000000000..a7aa5dbcfc --- /dev/null +++ b/pipelines/deploy/telemetry/Jenkinsfile @@ -0,0 +1,26 @@ +@Library('deploy-conf') _ +node() { + try { + stage('checkout public repo') { + cleanWs() + checkout scm + } + + stage('deploy') { + values = docker_params() + currentWs = sh(returnStdout: true, script: 'pwd').trim() + ansiblePlaybook = "$currentWs/ansible/deploy.yml" + ansibleExtraArgs = "--tags \"stack-sunbird\" --extra-vars \"hub_org=$hub_org image_name=$values.image_name image_tag=$values.image_tag service_name=telemetry-service deploy_telemetry=True\" --vault-password-file /var/lib/jenkins/secrets/vault-pass" + values.put('currentWs', currentWs) + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + ansible_playbook_run(values) + archiveArtifacts 'metadata.json' + currentBuild.description = "${values.image_tag}" + } + } + catch (err) { + currentBuild.result = "FAILURE" + throw err + } +} diff --git a/pipelines/dockerTag.sh b/pipelines/dockerTag.sh deleted file mode 100755 index cb006feba5..0000000000 --- a/pipelines/dockerTag.sh +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/sh -# Build script -# set -o errexit -set -e -e () { - echo $( echo ${1} | jq ".${2}" | sed 's/\"//g') -} -m=$(cat $METADATA_FILE) - -org=$(e "${m}" "org") -hubuser=$(e "${m}" "hubuser") -name=$(e "${m}" "name") -version=$(e "${m}" "version") - -artifactLabel=${ARTIFACT_LABEL:-gold} -PREVIOUS_LABEL=silver - -docker pull ${org}/${name}:${version}-${PREVIOUS_LABEL} -docker image tag ${org}/${name}:${version}-${PREVIOUS_LABEL} ${org}/${name}:${version}-${artifactLabel} - -docker login -u "${hubuser}" -p`cat /run/secrets/hub-pass` -docker push ${org}/${name}:${version}-${artifactLabel} -docker logout diff --git a/pipelines/documentation-jenkins-slave/Jenkinsfile.deploy-slave b/pipelines/documentation-jenkins-slave/Jenkinsfile.deploy-slave deleted file mode 100644 index 902988b8ef..0000000000 --- a/pipelines/documentation-jenkins-slave/Jenkinsfile.deploy-slave +++ /dev/null @@ -1,19 +0,0 @@ -pipeline { - agent { - label 'general-dev' - } - stages { - stage('Deploy') { - steps { - step ([$class: 'CopyArtifact', - projectName: 'Build/Documentation_Jenkins_Slave', - filter: 'metadata.json']); - - sh 'METADATA_FILE=metadata.json ENV=dev ./pipelines/documentation-jenkins-slave/deploy.sh' - - archive includes: "metadata.json" - } - } - } -} - diff --git a/pipelines/documentation-jenkins-slave/deploy.sh b/pipelines/documentation-jenkins-slave/deploy.sh deleted file mode 100755 index 625c46c1d6..0000000000 --- a/pipelines/documentation-jenkins-slave/deploy.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/sh -set -e -e () { - echo $( echo ${1} | jq ".${2}" | sed 's/\"//g') -} - -env=${ENV:-null} - -echo "env: ${env}" - -ansible-playbook -i ansible/inventory/$ENV ansible/jenkins-slave.yml --tags "documentation-jenkins-slave" --vault-password-file /run/secrets/vault-pass diff --git a/pipelines/es-backup/Jenkinsfile.sample b/pipelines/es-backup/Jenkinsfile.sample deleted file mode 100644 index b17f44dcc1..0000000000 --- a/pipelines/es-backup/Jenkinsfile.sample +++ /dev/null @@ -1,20 +0,0 @@ -pipeline { - agent { - label 'general-staging' - } - triggers { - cron('H 0 * * *') - } - stages { - stage('Pre-Build'){ - steps { - sh('./pipelines/es-backup/installDeps.sh') - } - } - stage('Deploy') { - steps { - sh 'ENV=staging ./pipelines/es-backup/deploy.sh' - } - } - } -} diff --git a/pipelines/es-backup/deploy.sh b/pipelines/es-backup/deploy.sh deleted file mode 100755 index 663c26c73f..0000000000 --- a/pipelines/es-backup/deploy.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/sh -# Build script -# set -o errexit -set -e -ansible-playbook --version -ANSIBLE_FORCE_COLOR=true ansible-playbook -i ansible/inventory/$ENV ansible/es.yml --tags "es_backup" -v --vault-password-file /run/secrets/vault-pass diff --git a/pipelines/es-backup/installDeps.sh b/pipelines/es-backup/installDeps.sh deleted file mode 100755 index acc98d5f3a..0000000000 --- a/pipelines/es-backup/installDeps.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/sh -# Build script -# set -o errexit -apk -v --update --no-cache add jq -apk -v add ansible=2.3.0.0-r1 diff --git a/pipelines/es-restore/Jenkinsfile.sample b/pipelines/es-restore/Jenkinsfile.sample deleted file mode 100644 index ca04227546..0000000000 --- a/pipelines/es-restore/Jenkinsfile.sample +++ /dev/null @@ -1,17 +0,0 @@ -pipeline { - agent { - label 'general-staging' - } - stages { - stage('Pre-Build'){ - steps { - sh('./pipelines/es-restore/installDeps.sh') - } - } - stage('Deploy') { - steps { - sh 'ENV=staging ./pipelines/es-restore/deploy.sh' - } - } - } -} diff --git a/pipelines/es-restore/deploy.sh b/pipelines/es-restore/deploy.sh deleted file mode 100755 index a0eed000b0..0000000000 --- a/pipelines/es-restore/deploy.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/sh -# Build script -# set -o errexit -set -e -ansible-playbook --version -ANSIBLE_FORCE_COLOR=true ansible-playbook -i ansible/inventory/$ENV ansible/es.yml --tags "es_restore" --extra-vars "snapshot_number=$SNAPSHOT_NUMBER" -v --vault-password-file /run/secrets/vault-pass diff --git a/pipelines/es-restore/installDeps.sh b/pipelines/es-restore/installDeps.sh deleted file mode 100755 index acc98d5f3a..0000000000 --- a/pipelines/es-restore/installDeps.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/sh -# Build script -# set -o errexit -apk -v --update --no-cache add jq -apk -v add ansible=2.3.0.0-r1 diff --git a/pipelines/jenkins-backup-upload/Jenkinsfile.admin b/pipelines/jenkins-backup-upload/Jenkinsfile.admin deleted file mode 100644 index e9554f46f9..0000000000 --- a/pipelines/jenkins-backup-upload/Jenkinsfile.admin +++ /dev/null @@ -1,18 +0,0 @@ -pipeline { - agent { - label 'master' - } - triggers { - cron('@midnight') - } - stages { - stage('Deploy') { - steps { - sh ''' - cd ansible - ansible-playbook -i inventory/admin jenkins-backup.yml --vault-password-file /run/secrets/vault-pass - ''' - } - } - } -} \ No newline at end of file diff --git a/pipelines/keycloak1/deploy.sh b/pipelines/keycloak1/deploy.sh deleted file mode 100755 index 2677a35b36..0000000000 --- a/pipelines/keycloak1/deploy.sh +++ /dev/null @@ -1,29 +0,0 @@ -#!/bin/sh -# Build script -# set -o errexit - -#!/bin/sh -# Build script -# set -o errexit -set -e -e () { - echo $( echo ${1} | jq ".${2}" | sed 's/\"//g') -} -m=$(cat $METADATA_FILE) - -org=$(e "${m}" "org") -name=$(e "${m}" "name") -version=$(e "${m}" "version") - -artifactLabel=${ARTIFACT_LABEL:-bronze} -env=${ENV:-null} - -echo "artifactLabel: ${artifactLabel}" -echo "env: ${env}" -echo "org: ${org}" -echo "name: ${name}" -echo "version: ${version}" -echo "ANSIBLE_PATH: $ANSIBLE_PATH" - -ansible-playbook --version -ansible-playbook -i ansible/inventory/$ENV ansible/deploy.yml --tags "stack-keycloak1" --extra-vars "hub_org=${org} image_name=${name} image_tag=${version}-${artifactLabel} service_name=keycloak1 deploy_keycloak1=True" --vault-password-file /run/secrets/vault-pass diff --git a/pipelines/keycloak1/installDeps.sh b/pipelines/keycloak1/installDeps.sh deleted file mode 100755 index edee05c045..0000000000 --- a/pipelines/keycloak1/installDeps.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/sh -# Build script -# set -o errexit -apk -v --update --no-cache add jq -apk -v --no-cache add ansible=2.3.0.0-r1 diff --git a/pipelines/keycloak1/metadata.json b/pipelines/keycloak1/metadata.json deleted file mode 100644 index f947f2f669..0000000000 --- a/pipelines/keycloak1/metadata.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "name": "keycloak_image", - "version": "3.2.1.Final", - "org": "sunbird", - "hubuser": "purplesunbird" -} \ No newline at end of file diff --git a/pipelines/keycloak2/deploy.sh b/pipelines/keycloak2/deploy.sh deleted file mode 100755 index b1df8b1f96..0000000000 --- a/pipelines/keycloak2/deploy.sh +++ /dev/null @@ -1,29 +0,0 @@ -#!/bin/sh -# Build script -# set -o errexit - -#!/bin/sh -# Build script -# set -o errexit -set -e -e () { - echo $( echo ${1} | jq ".${2}" | sed 's/\"//g') -} -m=$(cat $METADATA_FILE) - -org=$(e "${m}" "org") -name=$(e "${m}" "name") -version=$(e "${m}" "version") - -artifactLabel=${ARTIFACT_LABEL:-bronze} -env=${ENV:-null} - -echo "artifactLabel: ${artifactLabel}" -echo "env: ${env}" -echo "org: ${org}" -echo "name: ${name}" -echo "version: ${version}" -echo "ANSIBLE_PATH: $ANSIBLE_PATH" - -ansible-playbook --version -ansible-playbook -i ansible/inventory/$ENV ansible/deploy.yml --tags "stack-keycloak2" --extra-vars "hub_org=${org} image_name=${name} image_tag=${version}-${artifactLabel} service_name=keycloak2 deploy_keycloak2=True" --vault-password-file /run/secrets/vault-pass diff --git a/pipelines/keycloak2/installDeps.sh b/pipelines/keycloak2/installDeps.sh deleted file mode 100755 index edee05c045..0000000000 --- a/pipelines/keycloak2/installDeps.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/sh -# Build script -# set -o errexit -apk -v --update --no-cache add jq -apk -v --no-cache add ansible=2.3.0.0-r1 diff --git a/pipelines/keycloak2/metadata.json b/pipelines/keycloak2/metadata.json deleted file mode 100644 index f947f2f669..0000000000 --- a/pipelines/keycloak2/metadata.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "name": "keycloak_image", - "version": "3.2.1.Final", - "org": "sunbird", - "hubuser": "purplesunbird" -} \ No newline at end of file diff --git a/pipelines/log-es-backup/Jenkinsfile.sample b/pipelines/log-es-backup/Jenkinsfile.sample deleted file mode 100644 index b7763f2bd9..0000000000 --- a/pipelines/log-es-backup/Jenkinsfile.sample +++ /dev/null @@ -1,20 +0,0 @@ -pipeline { - agent { - label 'general-staging' - } - triggers { - cron('H 0 * * *') - } - stages { - stage('Pre-Build'){ - steps { - sh('./pipelines/log-es-backup/installDeps.sh') - } - } - stage('Deploy') { - steps { - sh 'ENV=staging ./pipelines/log-es-backup/deploy.sh' - } - } - } -} diff --git a/pipelines/log-es-backup/deploy.sh b/pipelines/log-es-backup/deploy.sh deleted file mode 100755 index 868dccaca2..0000000000 --- a/pipelines/log-es-backup/deploy.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/sh -# Build script -# set -o errexit -set -e -ansible-playbook --version -ANSIBLE_FORCE_COLOR=true ansible-playbook -i ansible/inventory/$ENV ansible/es.yml --tags "log_es_backup" -v --vault-password-file /run/secrets/vault-pass diff --git a/pipelines/log-es-backup/installDeps.sh b/pipelines/log-es-backup/installDeps.sh deleted file mode 100755 index acc98d5f3a..0000000000 --- a/pipelines/log-es-backup/installDeps.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/sh -# Build script -# set -o errexit -apk -v --update --no-cache add jq -apk -v add ansible=2.3.0.0-r1 diff --git a/pipelines/log-es-restore/deploy.sh b/pipelines/log-es-restore/deploy.sh deleted file mode 100755 index 2f4de577eb..0000000000 --- a/pipelines/log-es-restore/deploy.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/sh -# Build script -# set -o errexit - -ansible-playbook --version -ANSIBLE_FORCE_COLOR=true ansible-playbook -i ansible/inventory/$ENV ansible/es.yml --tags "log_es_restore" --extra-vars "snapshot_number=$SNAPSHOT_NUMBER" -v --vault-password-file /run/secrets/vault-pass diff --git a/pipelines/log-es-restore/installDeps.sh b/pipelines/log-es-restore/installDeps.sh deleted file mode 100755 index acc98d5f3a..0000000000 --- a/pipelines/log-es-restore/installDeps.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/sh -# Build script -# set -o errexit -apk -v --update --no-cache add jq -apk -v add ansible=2.3.0.0-r1 diff --git a/pipelines/logger-elasticsearch/Jenkinsfile.sample b/pipelines/logger-elasticsearch/Jenkinsfile.sample deleted file mode 100644 index 474ae6faae..0000000000 --- a/pipelines/logger-elasticsearch/Jenkinsfile.sample +++ /dev/null @@ -1,22 +0,0 @@ -pipeline { - agent { - label 'general-staging' - } - stages { - stage('Pre-Build'){ - steps { - sh('chmod a+x ansible/installDeps.sh') - sh('./ansible/installDeps.sh') - } - } - - stage('Deploy') { - steps { - sh ''' - cd ansible - ansible-playbook -i inventory/staging provision.yml --tags log-es --vault-password-file /run/secrets/vault-pass - ''' - } - } - } -} \ No newline at end of file diff --git a/pipelines/logger/deploy.sh b/pipelines/logger/deploy.sh deleted file mode 100755 index 48df1b43a5..0000000000 --- a/pipelines/logger/deploy.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/sh -# Build script -# set -o errexit - -ansible-playbook --version - -ansible-playbook -i ansible/inventory/${ENV} ansible/logging.yml --vault-password-file /run/secrets/vault-pass diff --git a/pipelines/logger/installDeps.sh b/pipelines/logger/installDeps.sh deleted file mode 100755 index acc98d5f3a..0000000000 --- a/pipelines/logger/installDeps.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/sh -# Build script -# set -o errexit -apk -v --update --no-cache add jq -apk -v add ansible=2.3.0.0-r1 diff --git a/pipelines/mongodb-backup/Jenkinsfile.sample b/pipelines/mongodb-backup/Jenkinsfile.sample deleted file mode 100644 index 3098103c8f..0000000000 --- a/pipelines/mongodb-backup/Jenkinsfile.sample +++ /dev/null @@ -1,32 +0,0 @@ -#!groovy - -node('general-staging') { - - currentBuild.result = "SUCCESS" - - try { - - stage('Checkout'){ - - checkout scm - } - - - - stage('Pre-Build'){ - sh('chmod a+x ansible/installDeps.sh') - sh('./ansible/installDeps.sh') - } - - stage('Build'){ - - sh('ansible-playbook -i ansible/inventory/staging ansible/mongobackup.yml --vault-password-file /run/secrets/vault-pass ') - } - - } - catch (err) { - currentBuild.result = "FAILURE" - throw err - } - -} \ No newline at end of file diff --git a/pipelines/mongodb-backup/installDeps.sh b/pipelines/mongodb-backup/installDeps.sh deleted file mode 100644 index 49a927e6e5..0000000000 --- a/pipelines/mongodb-backup/installDeps.sh +++ /dev/null @@ -1 +0,0 @@ -apk -v add ansible=2.3.0.0-r1 diff --git a/pipelines/mongodb/installDeps.sh b/pipelines/mongodb/installDeps.sh deleted file mode 100644 index 49a927e6e5..0000000000 --- a/pipelines/mongodb/installDeps.sh +++ /dev/null @@ -1 +0,0 @@ -apk -v add ansible=2.3.0.0-r1 diff --git a/pipelines/monitor/Jenkinsfile.sample b/pipelines/monitor/Jenkinsfile.sample deleted file mode 100644 index 93c80c93ab..0000000000 --- a/pipelines/monitor/Jenkinsfile.sample +++ /dev/null @@ -1,31 +0,0 @@ -#!groovy - -node('general-staging') { - - currentBuild.result = "SUCCESS" - - try { - - stage('Checkout'){ - - checkout scm - } - - stage('Pre-Build'){ - - sh('./pipelines/monitor/installDeps.sh') - - } - - stage('Deploy'){ - - sh 'TARGET_ENV=staging ./pipelines/monitor/deploy.sh' - - } - } - catch (err) { - currentBuild.result = "FAILURE" - throw err - } - -} diff --git a/pipelines/monitor/deploy.sh b/pipelines/monitor/deploy.sh deleted file mode 100755 index a6655e4763..0000000000 --- a/pipelines/monitor/deploy.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/sh -# Build script -# set -o errexit - -ansible-playbook --version -ansible-playbook -i ansible/inventory/${TARGET_ENV} ansible/monitoring.yml -v --vault-password-file /run/secrets/vault-pass diff --git a/pipelines/monitor/installDeps.sh b/pipelines/monitor/installDeps.sh deleted file mode 100755 index ccc9677a01..0000000000 --- a/pipelines/monitor/installDeps.sh +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/sh -# Build script -# set -o errexit -apk -v --update --no-cache add ansible=2.3.0.0-r1 diff --git a/pipelines/postgresql-backup/Jenkinsfile.sample b/pipelines/postgresql-backup/Jenkinsfile.sample deleted file mode 100644 index 497b0ea9e9..0000000000 --- a/pipelines/postgresql-backup/Jenkinsfile.sample +++ /dev/null @@ -1,24 +0,0 @@ -pipeline { - agent { - label 'general-staging' - } - triggers { - cron('@midnight') - } - stages { - stage('Pre-Build'){ - steps { - sh('chmod a+x ansible/installDeps.sh') - sh('./ansible/installDeps.sh') - } - } - stage('Deploy') { - steps { - sh ''' - cd ansible - ansible-playbook -i inventory/staging postgresql-backup.yml --vault-password-file /run/secrets/vault-pass - ''' - } - } - } -} \ No newline at end of file diff --git a/pipelines/postgresql-data-update/Jenkinsfile.sample b/pipelines/postgresql-data-update/Jenkinsfile.sample deleted file mode 100644 index 7cff5cd9b9..0000000000 --- a/pipelines/postgresql-data-update/Jenkinsfile.sample +++ /dev/null @@ -1,21 +0,0 @@ -pipeline { - agent { - label 'general-staging' - } - stages { - stage('Pre-Build'){ - steps { - sh('chmod a+x ansible/installDeps.sh') - sh('./ansible/installDeps.sh') - } - } - stage('Deploy') { - steps { - sh ''' - cd ansible - ansible-playbook -i inventory/staging postgresql-data-update.yml --vault-password-file /run/secrets/vault-pass - ''' - } - } - } -} \ No newline at end of file diff --git a/pipelines/postgresql-master/Jenkinsfile.sample b/pipelines/postgresql-master/Jenkinsfile.sample deleted file mode 100644 index 05d072e1f2..0000000000 --- a/pipelines/postgresql-master/Jenkinsfile.sample +++ /dev/null @@ -1,21 +0,0 @@ -pipeline { - agent { - label 'general-staging' - } - stages { - stage('Pre-Build'){ - steps { - sh('chmod a+x ansible/installDeps.sh') - sh('./ansible/installDeps.sh') - } - } - stage('Deploy') { - steps { - sh ''' - cd ansible - ansible-playbook -i inventory/staging provision.yml --tags postgresql-master --vault-password-file /run/secrets/vault-pass - ''' - } - } - } -} \ No newline at end of file diff --git a/pipelines/postgresql-restore/Jenkinsfile.sample b/pipelines/postgresql-restore/Jenkinsfile.sample deleted file mode 100644 index baea33c389..0000000000 --- a/pipelines/postgresql-restore/Jenkinsfile.sample +++ /dev/null @@ -1,37 +0,0 @@ -pipeline { - agent { - label 'general-staging' - } - parameters { - string(name: 'postgresql_restore_gzip_file_name', defaultValue: '', description: 'Specify the backup file name in azure which should be restored') - } - stages { - stage('Pre-Build'){ - steps { - sh('chmod a+x ansible/installDeps.sh') - sh('./ansible/installDeps.sh') - } - } - stage('Deploy') { - steps { - sh ''' - cd ansible - ansible-playbook -i inventory/staging postgresql-restore.yml --extra-vars "postgresql_restore_gzip_file_name=${postgresql_restore_gzip_file_name}" --vault-password-file /run/secrets/vault-pass - ''' - } - } - // The postgresql config is set to defaults after restore task which recreates pg cluster - // We need to build master job to ensure configuration is as expected - // We need to build slave job to ensure it has latest restore data - stage('Configure Postgresql Master') { - steps { - build 'Postgresql_Master' - } - } - stage('Configure Postgresql Slave') { - steps { - build 'Postgresql_Slave' - } - } - } -} \ No newline at end of file diff --git a/pipelines/postgresql-slave-to-master-promotion/Jenkinsfile.sample b/pipelines/postgresql-slave-to-master-promotion/Jenkinsfile.sample deleted file mode 100644 index c267f47f47..0000000000 --- a/pipelines/postgresql-slave-to-master-promotion/Jenkinsfile.sample +++ /dev/null @@ -1,22 +0,0 @@ -pipeline { - agent { - label 'general-staging' - } - stages { - stage('Pre-Build'){ - steps { - sh('chmod a+x ansible/installDeps.sh') - sh('./ansible/installDeps.sh') - } - } - stage('Deploy') { - steps { - sh ''' - cd ansible - ansible-playbook -i inventory/staging postgresql-slave-to-master-promotion.yml --tags ensure-postgresql-master-stopped --vault-password-file /run/secrets/vault-pass || echo "Ignoring error while stopping master" - ansible-playbook -i inventory/staging postgresql-slave-to-master-promotion.yml --tags postgresql-slave-to-master-promotion --vault-password-file /run/secrets/vault-pass - ''' - } - } - } -} \ No newline at end of file diff --git a/pipelines/postgresql-slave/Jenkinsfile.sample b/pipelines/postgresql-slave/Jenkinsfile.sample deleted file mode 100644 index 2aae125290..0000000000 --- a/pipelines/postgresql-slave/Jenkinsfile.sample +++ /dev/null @@ -1,21 +0,0 @@ -pipeline { - agent { - label 'general-staging' - } - stages { - stage('Pre-Build'){ - steps { - sh('chmod a+x ansible/installDeps.sh') - sh('./ansible/installDeps.sh') - } - } - stage('Deploy') { - steps { - sh ''' - cd ansible - ansible-playbook -i inventory/staging provision.yml --tags postgresql-slave --vault-password-file /run/secrets/vault-pass - ''' - } - } - } -} \ No newline at end of file diff --git a/pipelines/provision/cassandra/Jenkinsfile b/pipelines/provision/cassandra/Jenkinsfile new file mode 100644 index 0000000000..0acd750e4c --- /dev/null +++ b/pipelines/provision/cassandra/Jenkinsfile @@ -0,0 +1,38 @@ +@Library('deploy-conf') _ +node() { + try { + String ANSI_GREEN = "\u001B[32m" + String ANSI_NORMAL = "\u001B[0m" + String ANSI_BOLD = "\u001B[1m" + String ANSI_RED = "\u001B[31m" + String ANSI_YELLOW = "\u001B[33m" + + stage('checkout public repo') { + cleanWs() + checkout scm + } + + ansiColor('xterm') { + stage('deploy'){ + values = [:] + currentWs = sh(returnStdout: true, script: 'pwd').trim() + envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-3].trim() + module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() + jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() + ansiblePlaybook = "${currentWs}/ansible/provision.yml" + ansibleExtraArgs = "--tags cassandra --vault-password-file /var/lib/jenkins/secrets/vault-pass -v" + values.put('currentWs', currentWs) + values.put('env', envDir) + values.put('module', module) + values.put('jobName', jobName) + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + println values + ansible_playbook_run(values) + } + } + } + catch (err) { + throw err + } +} diff --git a/pipelines/provision/jenkins-slave/Jenkinsfile b/pipelines/provision/jenkins-slave/Jenkinsfile new file mode 100644 index 0000000000..76329059eb --- /dev/null +++ b/pipelines/provision/jenkins-slave/Jenkinsfile @@ -0,0 +1,39 @@ +@Library('deploy-conf') _ +node() { + try { + String ANSI_GREEN = "\u001B[32m" + String ANSI_NORMAL = "\u001B[0m" + String ANSI_BOLD = "\u001B[1m" + String ANSI_RED = "\u001B[31m" + String ANSI_YELLOW = "\u001B[33m" + + stage('checkout public repo') { + cleanWs() + checkout scm + } + + ansiColor('xterm') { + stage('deploy'){ + values = [:] + currentWs = sh(returnStdout: true, script: 'pwd').trim() + envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-3].trim() + module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() + jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() + currentWs = sh(returnStdout: true, script: 'pwd').trim() + ansiblePlaybook = "${currentWs}/devops/jenkins-slave.yml" + ansibleExtraArgs = "--tags jenkins-slave --extra-vars \"jenkins_host=${params.jenkins_host}\" --vault-password-file /var/lib/jenkins/secrets/vault-pass" + values.put('currentWs', currentWs) + values.put('env', envDir) + values.put('module', module) + values.put('jobName', jobName) + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + println values + ansible_playbook_run(values) + } + } + } + catch (err) { + throw err + } +} diff --git a/pipelines/provision/kafka/Jenkinsfile b/pipelines/provision/kafka/Jenkinsfile new file mode 100644 index 0000000000..ed85a29c42 --- /dev/null +++ b/pipelines/provision/kafka/Jenkinsfile @@ -0,0 +1,38 @@ +@Library('deploy-conf') _ +node() { + try { + String ANSI_GREEN = "\u001B[32m" + String ANSI_NORMAL = "\u001B[0m" + String ANSI_BOLD = "\u001B[1m" + String ANSI_RED = "\u001B[31m" + String ANSI_YELLOW = "\u001B[33m" + + stage('checkout public repo') { + cleanWs() + checkout scm + } + + ansiColor('xterm') { + stage('deploy'){ + values = [:] + currentWs = sh(returnStdout: true, script: 'pwd').trim() + envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-3].trim() + module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() + jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() + ansiblePlaybook = "${currentWs}/ansible/provision-kafka.yml" + ansibleExtraArgs = "--vault-password-file /var/lib/jenkins/secrets/vault-pass -v" + values.put('currentWs', currentWs) + values.put('env', envDir) + values.put('module', module) + values.put('jobName', jobName) + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + println values + ansible_playbook_run(values) + } + } + } + catch (err) { + throw err + } +} diff --git a/pipelines/provision/keycloak/Jenkinsfile b/pipelines/provision/keycloak/Jenkinsfile new file mode 100644 index 0000000000..80eb9281fb --- /dev/null +++ b/pipelines/provision/keycloak/Jenkinsfile @@ -0,0 +1,38 @@ +@Library('deploy-conf') _ +node() { + try { + String ANSI_GREEN = "\u001B[32m" + String ANSI_NORMAL = "\u001B[0m" + String ANSI_BOLD = "\u001B[1m" + String ANSI_RED = "\u001B[31m" + String ANSI_YELLOW = "\u001B[33m" + + stage('checkout public repo') { + cleanWs() + checkout scm + } + + ansiColor('xterm') { + stage('deploy'){ + values = [:] + currentWs = sh(returnStdout: true, script: 'pwd').trim() + envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-3].trim() + module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() + jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() + ansiblePlaybook = "${currentWs}/ansible/keycloak.yml" + ansibleExtraArgs = "--tags provision --vault-password-file /var/lib/jenkins/secrets/vault-pass" + values.put('currentWs', currentWs) + values.put('env', envDir) + values.put('module', module) + values.put('jobName', jobName) + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + println values + ansible_playbook_run(values) + } + } + } + catch (err) { + throw err + } +} diff --git a/pipelines/provision/log-es/Jenkinsfile b/pipelines/provision/log-es/Jenkinsfile new file mode 100644 index 0000000000..e4a996a69c --- /dev/null +++ b/pipelines/provision/log-es/Jenkinsfile @@ -0,0 +1,38 @@ +@Library('deploy-conf') _ +node() { + try { + String ANSI_GREEN = "\u001B[32m" + String ANSI_NORMAL = "\u001B[0m" + String ANSI_BOLD = "\u001B[1m" + String ANSI_RED = "\u001B[31m" + String ANSI_YELLOW = "\u001B[33m" + + stage('checkout public repo') { + cleanWs() + checkout scm + } + + ansiColor('xterm') { + stage('deploy'){ + values = [:] + envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-3].trim() + module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() + jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() + currentWs = sh(returnStdout: true, script: 'pwd').trim() + ansiblePlaybook = "${currentWs}/ansible/provision.yml" + ansibleExtraArgs = "--tags log-es --vault-password-file /var/lib/jenkins/secrets/vault-pass" + values.put('currentWs', currentWs) + values.put('env', envDir) + values.put('module', module) + values.put('jobName', jobName) + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + println values + ansible_playbook_run(values) + } + } + } + catch (err) { + throw err + } +} diff --git a/pipelines/provision/postgres-db-update/Jenkinsfile b/pipelines/provision/postgres-db-update/Jenkinsfile new file mode 100644 index 0000000000..f17d40c89d --- /dev/null +++ b/pipelines/provision/postgres-db-update/Jenkinsfile @@ -0,0 +1,38 @@ +@Library('deploy-conf') _ +node() { + try { + String ANSI_GREEN = "\u001B[32m" + String ANSI_NORMAL = "\u001B[0m" + String ANSI_BOLD = "\u001B[1m" + String ANSI_RED = "\u001B[31m" + String ANSI_YELLOW = "\u001B[33m" + + stage('checkout public repo') { + cleanWs() + checkout scm + } + + ansiColor('xterm') { + stage('deploy'){ + values = [:] + currentWs = sh(returnStdout: true, script: 'pwd').trim() + envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-3].trim() + module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() + jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() + ansiblePlaybook = "${currentWs}/ansible/postgresql-data-update.yml" + ansibleExtraArgs = "--vault-password-file /var/lib/jenkins/secrets/vault-pass -v" + values.put('currentWs', currentWs) + values.put('env', envDir) + values.put('module', module) + values.put('jobName', jobName) + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + println values + ansible_playbook_run(values) + } + } + } + catch (err) { + throw err + } +} diff --git a/pipelines/provision/postgres/Jenkinsfile b/pipelines/provision/postgres/Jenkinsfile new file mode 100644 index 0000000000..65cfc5f73e --- /dev/null +++ b/pipelines/provision/postgres/Jenkinsfile @@ -0,0 +1,38 @@ +@Library('deploy-conf') _ +node() { + try { + String ANSI_GREEN = "\u001B[32m" + String ANSI_NORMAL = "\u001B[0m" + String ANSI_BOLD = "\u001B[1m" + String ANSI_RED = "\u001B[31m" + String ANSI_YELLOW = "\u001B[33m" + + stage('checkout public repo') { + cleanWs() + checkout scm + } + + ansiColor('xterm') { + stage('deploy'){ + values = [:] + currentWs = sh(returnStdout: true, script: 'pwd').trim() + envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-3].trim() + module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() + jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() + ansiblePlaybook = "${currentWs}/ansible/provision.yml" + ansibleExtraArgs = "--tags postgresql-master --vault-password-file /var/lib/jenkins/secrets/vault-pass -v" + values.put('currentWs', currentWs) + values.put('env', envDir) + values.put('module', module) + values.put('jobName', jobName) + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + println values + ansible_playbook_run(values) + } + } + } + catch (err) { + throw err + } +} diff --git a/pipelines/provision/registry/Jenkinsfile b/pipelines/provision/registry/Jenkinsfile new file mode 100644 index 0000000000..74e0382a9b --- /dev/null +++ b/pipelines/provision/registry/Jenkinsfile @@ -0,0 +1,50 @@ +@Library('deploy-conf') _ +node() { + try { + String ANSI_GREEN = "\u001B[32m" + String ANSI_NORMAL = "\u001B[0m" + String ANSI_BOLD = "\u001B[1m" + String ANSI_RED = "\u001B[31m" + String ANSI_YELLOW = "\u001B[33m" + + stage('checkout public repo') { + cleanWs() + checkout scm + sh """ + rm -rf opensaber + git clone https://github.com/project-sunbird/open-saber.git opensaber + cd opensaber + ./configure-dependencies.sh + cd java + mvn clean install + cd registry + mvn clean install + cp target/registry.jar ${WORKSPACE}/ansible + cd ${WORKSPACE} + """ + } + + ansiColor('xterm') { + stage('deploy'){ + values = [:] + currentWs = sh(returnStdout: true, script: 'pwd').trim() + envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-3].trim() + module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() + jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() + ansiblePlaybook = "${currentWs}/ansible/registry.yml" + ansibleExtraArgs = "--vault-password-file /var/lib/jenkins/secrets/vault-pass" + values.put('currentWs', currentWs) + values.put('env', envDir) + values.put('module', module) + values.put('jobName', jobName) + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + println values + ansible_playbook_run(values) + } + } + } + catch (err) { + throw err + } +} diff --git a/pipelines/provision/secor/Jenkinsfile b/pipelines/provision/secor/Jenkinsfile new file mode 100644 index 0000000000..69f303cfcf --- /dev/null +++ b/pipelines/provision/secor/Jenkinsfile @@ -0,0 +1,38 @@ +@Library('deploy-conf') _ +node() { + try { + String ANSI_GREEN = "\u001B[32m" + String ANSI_NORMAL = "\u001B[0m" + String ANSI_BOLD = "\u001B[1m" + String ANSI_RED = "\u001B[31m" + String ANSI_YELLOW = "\u001B[33m" + + stage('checkout public repo') { + cleanWs() + checkout scm + } + + ansiColor('xterm') { + stage('deploy'){ + values = [:] + currentWs = sh(returnStdout: true, script: 'pwd').trim() + envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-3].trim() + module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() + jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() + ansiblePlaybook = "${currentWs}/ansible/provision-secor.yml" + ansibleExtraArgs = "--vault-password-file /var/lib/jenkins/secrets/vault-pass" + values.put('currentWs', currentWs) + values.put('env', envDir) + values.put('module', module) + values.put('jobName', jobName) + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + println values + ansible_playbook_run(values) + } + } + } + catch (err) { + throw err + } +} diff --git a/pipelines/proxy/Jenkinsfile.sample b/pipelines/proxy/Jenkinsfile.sample deleted file mode 100644 index cf39631134..0000000000 --- a/pipelines/proxy/Jenkinsfile.sample +++ /dev/null @@ -1,25 +0,0 @@ -pipeline { - agent { - label 'general-staging' - } - stages { - stage('Pre-Build'){ - steps { - sh('chmod a+x ansible/installDeps.sh') - sh('./ansible/installDeps.sh') - } - } - - stage('Deploy') { - steps { - step ([$class: 'CopyArtifact', - projectName: 'Dev/Proxy', - filter: 'metadata.json']); - - sh 'METADATA_FILE=metadata.json ARTIFACT_LABEL=bronze ENV=staging ./pipelines/proxy/deploy.sh' - - archive includes: "metadata.json" - } - } - } -} \ No newline at end of file diff --git a/pipelines/proxy/deploy.sh b/pipelines/proxy/deploy.sh deleted file mode 100755 index be0a7ed992..0000000000 --- a/pipelines/proxy/deploy.sh +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/sh -set -e -e () { - echo $( echo ${1} | jq ".${2}" | sed 's/\"//g') -} -m=$(cat $METADATA_FILE) - -org=$(e "${m}" "org") -name=$(e "${m}" "name") -version=$(e "${m}" "version") - -artifactLabel=${ARTIFACT_LABEL:-bronze} -env=${ENV:-null} - -echo "artifactLabel: ${artifactLabel}" -echo "env: ${env}" -echo "org: ${org}" -echo "name: ${name}" -echo "version: ${version}" - - -ansible-playbook --version -ansible-playbook -i ansible/inventory/$ENV ansible/deploy.yml --tags "stack-proxy" --extra-vars "hub_org=${org} image_name=${name} image_tag=${version}-${artifactLabel}" --vault-password-file /run/secrets/vault-pass diff --git a/pipelines/proxy/metadata.json b/pipelines/proxy/metadata.json deleted file mode 100644 index 28d3fc61c0..0000000000 --- a/pipelines/proxy/metadata.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "name": "proxy", - "version": "0.0.1", - "org": "sunbird", - "hubuser": "purplesunbird" -} \ No newline at end of file diff --git a/pipelines/summary/Jenkinsfile b/pipelines/summary/Jenkinsfile new file mode 100644 index 0000000000..2fe23cebb1 --- /dev/null +++ b/pipelines/summary/Jenkinsfile @@ -0,0 +1,5 @@ +@Library('deploy-conf') _ +node(){ + cleanWs() + deployed_versions() +} diff --git a/pipelines/sunbird-actor-service/Jenkinsfile.sample b/pipelines/sunbird-actor-service/Jenkinsfile.sample deleted file mode 100644 index 34da7fa335..0000000000 --- a/pipelines/sunbird-actor-service/Jenkinsfile.sample +++ /dev/null @@ -1,34 +0,0 @@ -#!groovy - -node('general-staging') { - - currentBuild.result = "SUCCESS" - - try { - - stage('Checkout'){ - - checkout scm - } - - stage('Pre-Build'){ - - sh('./pipelines/sunbird-actor-service/installDeps.sh') - - } - - stage('Deploy'){ - step ([$class: 'CopyArtifact', - projectName: 'Dev/Sunbird_ActorService_Deploy_Dev', - filter: 'metadata.json']); - sh 'METADATA_FILE=metadata.json ARTIFACT_LABEL=silver ENV=staging ./pipelines/sunbird-actor-service/deploy.sh' - archive includes: "metadata.json" - } - - } - catch (err) { - currentBuild.result = "FAILURE" - throw err - } - -} diff --git a/pipelines/sunbird-actor-service/deploy.sh b/pipelines/sunbird-actor-service/deploy.sh deleted file mode 100755 index 71fb4c1c4b..0000000000 --- a/pipelines/sunbird-actor-service/deploy.sh +++ /dev/null @@ -1,29 +0,0 @@ -#!/bin/sh -# Build script -# set -o errexit - -#!/bin/sh -# Build script -# set -o errexit -set -e -e () { - echo $( echo ${1} | jq ".${2}" | sed 's/\"//g') -} -m=$(cat $METADATA_FILE) - -org=$(e "${m}" "org") -name=$(e "${m}" "name") -version=$(e "${m}" "version") - -artifactLabel=${ARTIFACT_LABEL:-bronze} -env=${ENV:-null} - -echo "artifactLabel: ${artifactLabel}" -echo "env: ${env}" -echo "org: ${org}" -echo "name: ${name}" -echo "version: ${version}" -echo "ANSIBLE_PATH: $ANSIBLE_PATH" - -ansible-playbook --version -ansible-playbook -i ansible/inventory/$ENV ansible/deploy.yml --tags "stack-sunbird" --extra-vars "hub_org=${org} image_name=${name} image_tag=${version}-${artifactLabel} service_name=actor-service deploy_actor=True" --vault-password-file /run/secrets/vault-pass diff --git a/pipelines/sunbird-actor-service/installDeps.sh b/pipelines/sunbird-actor-service/installDeps.sh deleted file mode 100755 index edee05c045..0000000000 --- a/pipelines/sunbird-actor-service/installDeps.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/sh -# Build script -# set -o errexit -apk -v --update --no-cache add jq -apk -v --no-cache add ansible=2.3.0.0-r1 diff --git a/pipelines/sunbird-actor-service/metadata.json b/pipelines/sunbird-actor-service/metadata.json deleted file mode 100644 index 950e154ead..0000000000 --- a/pipelines/sunbird-actor-service/metadata.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "name": "actor-service", - "version": "0.0.1", - "org": "sunbird", - "hubuser": "purplesunbird" -} \ No newline at end of file diff --git a/pipelines/sunbird-bootstrap/Jenkinsfile.db.sample b/pipelines/sunbird-bootstrap/Jenkinsfile.db.sample deleted file mode 100644 index a1fe617a3b..0000000000 --- a/pipelines/sunbird-bootstrap/Jenkinsfile.db.sample +++ /dev/null @@ -1,25 +0,0 @@ -#!groovy - -node('general-staging') { - currentBuild.result = "SUCCESS" - - try { - - stage('Checkout'){ - checkout scm - } - - stage('Pre-Build'){ - sh('chmod a+x ansible/installDeps.sh') - sh('./ansible/installDeps.sh') - } - - stage('Build'){ - sh('ansible-playbook -i ansible/inventory/db-bootstrap ansible/bootstrap.yml --extra-vars "hosts=staging bootstrap_secret_file=bootstrap" --vault-password-file /run/secrets/vault-pass ') - } - } - catch (err) { - currentBuild.result = "FAILURE" - throw err - } -} diff --git a/pipelines/sunbird-bootstrap/Jenkinsfile.sample b/pipelines/sunbird-bootstrap/Jenkinsfile.sample deleted file mode 100644 index b200f1fa92..0000000000 --- a/pipelines/sunbird-bootstrap/Jenkinsfile.sample +++ /dev/null @@ -1,32 +0,0 @@ -#!groovy - -node('general-staging') { - - currentBuild.result = "SUCCESS" - - try { - - stage('Checkout'){ - - checkout scm - } - - - - stage('Pre-Build'){ - sh('chmod a+x ansible/installDeps.sh') - sh('./ansible/installDeps.sh') - } - - stage('Build'){ - - sh('ansible-playbook -i ansible/inventory/admin ansible/bootstrap.yml --extra-vars "hosts=staging" --vault-password-file /run/secrets/vault-pass ') - } - - } - catch (err) { - currentBuild.result = "FAILURE" - throw err - } - -} diff --git a/pipelines/sunbird-bootstrap/installDeps.sh b/pipelines/sunbird-bootstrap/installDeps.sh deleted file mode 100644 index 49a927e6e5..0000000000 --- a/pipelines/sunbird-bootstrap/installDeps.sh +++ /dev/null @@ -1 +0,0 @@ -apk -v add ansible=2.3.0.0-r1 diff --git a/pipelines/sunbird-content-service/Jenkinsfile.sample b/pipelines/sunbird-content-service/Jenkinsfile.sample deleted file mode 100644 index f4cece38a3..0000000000 --- a/pipelines/sunbird-content-service/Jenkinsfile.sample +++ /dev/null @@ -1,34 +0,0 @@ -#!groovy - -node('general-staging') { - - currentBuild.result = "SUCCESS" - - try { - - stage('Checkout'){ - - checkout scm - } - - stage('Pre-Build'){ - - sh('./pipelines/sunbird-content-service/installDeps.sh') - - } - - stage('Deploy'){ - step ([$class: 'CopyArtifact', - projectName: 'Dev/Sunbird_ContentService_Deploy_Dev', - filter: 'metadata.json']); - sh 'METADATA_FILE=metadata.json ARTIFACT_LABEL=silver ENV=staging ./pipelines/sunbird-content-service/deploy.sh' - archive includes: "metadata.json" - } - - } - catch (err) { - currentBuild.result = "FAILURE" - throw err - } - -} diff --git a/pipelines/sunbird-content-service/deploy.sh b/pipelines/sunbird-content-service/deploy.sh deleted file mode 100755 index d76111e223..0000000000 --- a/pipelines/sunbird-content-service/deploy.sh +++ /dev/null @@ -1,29 +0,0 @@ -#!/bin/sh -# Build script -# set -o errexit - -#!/bin/sh -# Build script -# set -o errexit -set -e -e () { - echo $( echo ${1} | jq ".${2}" | sed 's/\"//g') -} -m=$(cat $METADATA_FILE) - -org=$(e "${m}" "org") -name=$(e "${m}" "name") -version=$(e "${m}" "version") - -artifactLabel=${ARTIFACT_LABEL:-bronze} -env=${ENV:-null} - -echo "artifactLabel: ${artifactLabel}" -echo "env: ${env}" -echo "org: ${org}" -echo "name: ${name}" -echo "version: ${version}" -echo "ANSIBLE_PATH: $ANSIBLE_PATH" - -ansible-playbook --version -ansible-playbook -i ansible/inventory/$ENV ansible/deploy.yml --tags "stack-sunbird" --extra-vars "hub_org=${org} image_name=${name} image_tag=${version}-${artifactLabel} service_name=content_service deploy_stack=True" --vault-password-file /run/secrets/vault-pass diff --git a/pipelines/sunbird-content-service/installDeps.sh b/pipelines/sunbird-content-service/installDeps.sh deleted file mode 100755 index edee05c045..0000000000 --- a/pipelines/sunbird-content-service/installDeps.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/sh -# Build script -# set -o errexit -apk -v --update --no-cache add jq -apk -v --no-cache add ansible=2.3.0.0-r1 diff --git a/pipelines/sunbird-content-service/metadata.json b/pipelines/sunbird-content-service/metadata.json deleted file mode 100644 index c5b9f7f9f6..0000000000 --- a/pipelines/sunbird-content-service/metadata.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "name": "content_service", - "version": "0.0.1", - "org": "sunbird", - "hubuser": "purplesunbird" -} \ No newline at end of file diff --git a/pipelines/sunbird-learner-service/Jenkinsfile.sample b/pipelines/sunbird-learner-service/Jenkinsfile.sample deleted file mode 100644 index aa21c6bccc..0000000000 --- a/pipelines/sunbird-learner-service/Jenkinsfile.sample +++ /dev/null @@ -1,33 +0,0 @@ -#!groovy - -node('general-staging') { - - currentBuild.result = "SUCCESS" - - try { - - stage('Checkout'){ - - checkout scm - } - - stage('Pre-Build'){ - - sh('./pipelines/sunbird-learner-service/installDeps.sh') - - } - - stage('Deploy'){ - step ([$class: 'CopyArtifact', - projectName: 'Dev/Sunbird_LearnerService_Deploy_Dev', - filter: 'metadata.json']); - sh 'METADATA_FILE=metadata.json ARTIFACT_LABEL=silver ENV=staging ./pipelines/sunbird-learner-service/deploy.sh' - archive includes: "metadata.json" - } - } - catch (err) { - currentBuild.result = "FAILURE" - throw err - } - -} diff --git a/pipelines/sunbird-learner-service/deploy.sh b/pipelines/sunbird-learner-service/deploy.sh deleted file mode 100755 index 6b1a2e3953..0000000000 --- a/pipelines/sunbird-learner-service/deploy.sh +++ /dev/null @@ -1,29 +0,0 @@ -#!/bin/sh -# Build script -# set -o errexit - -#!/bin/sh -# Build script -# set -o errexit -set -e -e () { - echo $( echo ${1} | jq ".${2}" | sed 's/\"//g') -} -m=$(cat $METADATA_FILE) - -org=$(e "${m}" "org") -name=$(e "${m}" "name") -version=$(e "${m}" "version") - -artifactLabel=${ARTIFACT_LABEL:-bronze} -env=${ENV:-null} - -echo "artifactLabel: ${artifactLabel}" -echo "env: ${env}" -echo "org: ${org}" -echo "name: ${name}" -echo "version: ${version}" -echo "ANSIBLE_PATH: $ANSIBLE_PATH" - -ansible-playbook --version -ansible-playbook -i ansible/inventory/$ENV ansible/deploy.yml --tags "stack-sunbird" --extra-vars "hub_org=${org} image_name=${name} image_tag=${version}-${artifactLabel} service_name=learner-service deploy_learner=True" --vault-password-file /run/secrets/vault-pass diff --git a/pipelines/sunbird-learner-service/installDeps.sh b/pipelines/sunbird-learner-service/installDeps.sh deleted file mode 100755 index edee05c045..0000000000 --- a/pipelines/sunbird-learner-service/installDeps.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/sh -# Build script -# set -o errexit -apk -v --update --no-cache add jq -apk -v --no-cache add ansible=2.3.0.0-r1 diff --git a/pipelines/sunbird-learner-service/metadata.json b/pipelines/sunbird-learner-service/metadata.json deleted file mode 100644 index 4c1ea90071..0000000000 --- a/pipelines/sunbird-learner-service/metadata.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "name": "learner_service", - "version": "0.0.1", - "org": "sunbird", - "hubuser": "purplesunbird" -} \ No newline at end of file diff --git a/pipelines/sunbird-player/Jenkinsfile.sample b/pipelines/sunbird-player/Jenkinsfile.sample deleted file mode 100644 index 0ad38e8059..0000000000 --- a/pipelines/sunbird-player/Jenkinsfile.sample +++ /dev/null @@ -1,34 +0,0 @@ -#!groovy - -node('general-staging') { - - currentBuild.result = "SUCCESS" - - try { - - stage('Checkout'){ - - checkout scm - } - - stage('Pre-Build'){ - - sh('./pipelines/sunbird-player/installDeps.sh') - - } - - stage('Deploy'){ - step ([$class: 'CopyArtifact', - projectName: 'Dev/Sunbird_Player_Deploy_Dev', - filter: 'metadata.json']); - sh 'METADATA_FILE=metadata.json ARTIFACT_LABEL=silver ENV=staging ./pipelines/sunbird-player/deploy.sh' - archive includes: "metadata.json" - } - - } - catch (err) { - currentBuild.result = "FAILURE" - throw err - } - -} diff --git a/pipelines/sunbird-player/deploy.sh b/pipelines/sunbird-player/deploy.sh deleted file mode 100755 index ee9df8f02e..0000000000 --- a/pipelines/sunbird-player/deploy.sh +++ /dev/null @@ -1,29 +0,0 @@ -#!/bin/sh -# Build script -# set -o errexit - -#!/bin/sh -# Build script -# set -o errexit -set -e -e () { - echo $( echo ${1} | jq ".${2}" | sed 's/\"//g') -} -m=$(cat $METADATA_FILE) - -org=$(e "${m}" "org") -name=$(e "${m}" "name") -version=$(e "${m}" "version") - -artifactLabel=${ARTIFACT_LABEL:-bronze} -env=${ENV:-null} - -echo "artifactLabel: ${artifactLabel}" -echo "env: ${env}" -echo "org: ${org}" -echo "name: ${name}" -echo "version: ${version}" -echo "ANSIBLE_PATH: $ANSIBLE_PATH" - -ansible-playbook --version -ansible-playbook -i ansible/inventory/$ENV ansible/deploy.yml --tags "stack-sunbird" --extra-vars "hub_org=${org} image_name=${name} image_tag=${version}-${artifactLabel} service_name=player deploy_stack=True" --vault-password-file /run/secrets/vault-pass diff --git a/pipelines/sunbird-player/installDeps.sh b/pipelines/sunbird-player/installDeps.sh deleted file mode 100755 index 7e4676ee49..0000000000 --- a/pipelines/sunbird-player/installDeps.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/sh -# Build script -# set -o errexit -apk -v --update --no-cache add jq -apk -v --update --no-cache add ansible=2.3.0.0-r1 diff --git a/pipelines/sunbird-player/metadata.json b/pipelines/sunbird-player/metadata.json deleted file mode 100644 index 657eb7dc36..0000000000 --- a/pipelines/sunbird-player/metadata.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "name": "player", - "version": "0.0.6", - "org": "sunbird", - "hubuser": "purplesunbird" -} \ No newline at end of file diff --git a/pipelines/sunbird-telemetry-service/Jenkinsfile.sample b/pipelines/sunbird-telemetry-service/Jenkinsfile.sample deleted file mode 100644 index 42a44a13c7..0000000000 --- a/pipelines/sunbird-telemetry-service/Jenkinsfile.sample +++ /dev/null @@ -1,33 +0,0 @@ -#!groovy - -node('general-staging') { - - currentBuild.result = "SUCCESS" - - try { - - stage('Checkout'){ - - checkout scm - } - - stage('Pre-Build'){ - - sh('./pipelines/sunbird-telemetry-service/installDeps.sh') - - } - - stage('Deploy'){ - step ([$class: 'CopyArtifact', - projectName: 'Dev/Sunbird_TelemetryService_Deploy_Dev', - filter: 'metadata.json']); - sh 'METADATA_FILE=metadata.json ARTIFACT_LABEL=silver ENV=staging ./pipelines/sunbird-telemetry-service/deploy.sh' - archive includes: "metadata.json" - } - } - catch (err) { - currentBuild.result = "FAILURE" - throw err - } - -} diff --git a/pipelines/sunbird-telemetry-service/deploy.sh b/pipelines/sunbird-telemetry-service/deploy.sh deleted file mode 100755 index 01a9bb96ba..0000000000 --- a/pipelines/sunbird-telemetry-service/deploy.sh +++ /dev/null @@ -1,29 +0,0 @@ -#!/bin/sh -# Build script -# set -o errexit - -#!/bin/sh -# Build script -# set -o errexit -set -e -e () { - echo $( echo ${1} | jq ".${2}" | sed 's/\"//g') -} -m=$(cat $METADATA_FILE) - -org=$(e "${m}" "org") -name=$(e "${m}" "name") -version=$(e "${m}" "version") - -artifactLabel=${ARTIFACT_LABEL:-bronze} -env=${ENV:-null} - -echo "artifactLabel: ${artifactLabel}" -echo "env: ${env}" -echo "org: ${org}" -echo "name: ${name}" -echo "version: ${version}" -echo "ANSIBLE_PATH: $ANSIBLE_PATH" - -ansible-playbook --version -ansible-playbook -i ansible/inventory/$ENV ansible/deploy.yml --tags "stack-sunbird" --extra-vars "hub_org=${org} image_name=${name} image_tag=${version}-${artifactLabel} service_name=telemetry-service deploy_telemetry=True" --vault-password-file /run/secrets/vault-pass diff --git a/pipelines/sunbird-telemetry-service/installDeps.sh b/pipelines/sunbird-telemetry-service/installDeps.sh deleted file mode 100755 index edee05c045..0000000000 --- a/pipelines/sunbird-telemetry-service/installDeps.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/sh -# Build script -# set -o errexit -apk -v --update --no-cache add jq -apk -v --no-cache add ansible=2.3.0.0-r1 diff --git a/pipelines/sunbird-telemetry-service/metadata.json b/pipelines/sunbird-telemetry-service/metadata.json deleted file mode 100644 index 3a2d5a0fb2..0000000000 --- a/pipelines/sunbird-telemetry-service/metadata.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "name": "telemetry-service", - "version": "0.0.1", - "org": "sunbird", - "hubuser": "purplesunbird" -} \ No newline at end of file diff --git a/pipelines/swarm-agent-docker-prune/Jenkinsfile.sample b/pipelines/swarm-agent-docker-prune/Jenkinsfile.sample deleted file mode 100644 index 67ae6ebf10..0000000000 --- a/pipelines/swarm-agent-docker-prune/Jenkinsfile.sample +++ /dev/null @@ -1,18 +0,0 @@ -pipeline { - agent { - label 'general-staging' - } - triggers { - cron('@midnight') - } - stages { - stage('Deploy') { - steps { - sh ''' - cd ansible - ansible-playbook -v -i inventory/staging swarm-agent-docker-prune.yml --vault-password-file /run/secrets/vault-pass - ''' - } - } - } -} \ No newline at end of file diff --git a/pipelines/upload/artifacts/Jenkinsfile b/pipelines/upload/artifacts/Jenkinsfile new file mode 100644 index 0000000000..1f7a78ae03 --- /dev/null +++ b/pipelines/upload/artifacts/Jenkinsfile @@ -0,0 +1,30 @@ +@Library('deploy-conf') _ +node() { + try { + stage('checkout public repo') { + cleanWs() + checkout scm + } + stage('Artifact Upload') { + values = lp_dp_params() + currentWs = sh(returnStdout: true, script: 'pwd').trim() + artifact = values.artifact_name + ":" + values.artifact_version + if(params.artifact_source == "ArtifactRepo") + { + ansiblePlaybook = "${currentWs}/ansible/artifacts-upload.yml" + ansibleExtraArgs = "--extra-vars \"artifact=${artifact} artifact_path=${currentWs}/${artifact}\" --vault-password-file /var/lib/jenkins/secrets/vault-pass" + values.put('currentWs', currentWs) + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + ansible_playbook_run(values) + } + archiveArtifacts artifacts: "${artifact}", fingerprint: true, onlyIfSuccessful: true + archiveArtifacts artifacts: 'metadata.json', onlyIfSuccessful: true + currentBuild.description = "${values.artifact_version}" + } + } + catch (err) { + currentBuild.result = "FAILURE" + throw err + } +} diff --git a/pipelines/upload/docker/Jenkinsfile b/pipelines/upload/docker/Jenkinsfile new file mode 100644 index 0000000000..efb515bfbb --- /dev/null +++ b/pipelines/upload/docker/Jenkinsfile @@ -0,0 +1,29 @@ +@Library('deploy-conf') _ +node(){ + try { + stage('checkout public repo') { + cleanWs() + checkout scm + } + + stage('Artifact Upload') { + values = docker_params() + if(params.artifact_source == "ArtifactRepo") { + currentWs = sh(returnStdout: true, script: 'pwd').trim() + ansiblePlaybook = "$currentWs/ansible/docker_image_push.yml" + ansibleExtraArgs = "--extra-vars \"hub_org=${hub_org} image_name=${values.image_name} image_tag=${values.image_tag}\" --vault-password-file /var/lib/jenkins/secrets/vault-pass" + values.put('currentWs', currentWs) + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + ansible_playbook_run(values) + } + archiveArtifacts 'metadata.json' + currentBuild.description = "${values.image_tag}" + } + } + + catch (err) { + currentBuild.result = "FAILURE" + throw err + } +} diff --git a/pipelines/upload/plugins/Jenkinsfile b/pipelines/upload/plugins/Jenkinsfile new file mode 100644 index 0000000000..4a02550bbd --- /dev/null +++ b/pipelines/upload/plugins/Jenkinsfile @@ -0,0 +1,31 @@ +@Library('deploy-conf') _ +node() { + try { + stage('checkout public repo') { + cleanWs() + checkout scm + } + stage('Artifact Upload') { + values = lp_dp_params() + values.put('module', 'Core') + currentWs = sh(returnStdout: true, script: 'pwd').trim() + artifact = values.artifact_name + ":" + values.artifact_version + if(params.artifact_source == "ArtifactRepo") + { + ansiblePlaybook = "${currentWs}/ansible/artifacts-upload.yml" + ansibleExtraArgs = "--extra-vars \"artifact=${artifact} artifact_path=${currentWs}/${artifact}\" --vault-password-file /var/lib/jenkins/secrets/vault-pass" + values.put('currentWs', currentWs) + values.put('ansiblePlaybook', ansiblePlaybook) + values.put('ansibleExtraArgs', ansibleExtraArgs) + ansible_playbook_run(values) + } + archiveArtifacts artifacts: "${artifact}", fingerprint: true, onlyIfSuccessful: true + archiveArtifacts artifacts: 'metadata.json', onlyIfSuccessful: true + currentBuild.description = "${values.artifact_version}" + } + } + catch (err) { + currentBuild.result = "FAILURE" + throw err + } +} diff --git a/private_repo/ansible/inventory/dev/Core/common.yml b/private_repo/ansible/inventory/dev/Core/common.yml new file mode 100644 index 0000000000..5dcc809231 --- /dev/null +++ b/private_repo/ansible/inventory/dev/Core/common.yml @@ -0,0 +1,72 @@ +########################################## +# Starting Of Core VARS +env: #Name of the environment, e.g. dev, staging or production. +domain_name: #Domain on which the portal will be accessed. e.g. staging.{implementation-name}.org +proto: # Protocol +bootstrap_user: +bootstrap_key_path: +ssh_public_key_deployer: "" # SSH Public key for deployer user, with which ansible will execute tasks + +ekstep_s3_env: qa # dev or qa of ekstep for plugins +learningservice_ip: # Load balancer IP for learning server +searchservice_ip: # search service Load balancer IP +analyticsapi_ip: # Analytics Service Load Balancer IP +keycloak_url: "" # Keycloak Load balancer IP; eg http://10.10.10.10 +sunbird_default_channel: # Organization channel name which portal will connect to +sunbird_app_name: # By default app name will be sunbird +azure_account_name: # Storage account name for blobs +sunbird_content_azure_storage_container: # Conatainer store assets/public +swarm_load_balancer: # Loadbalancer ip to push the logspout result to logstash in swarm + +artifacts_container: '' # Azure blob container name to save built artifacts + +## Mail config +mail_server_host: +mail_server_username: "" +alerts_mailing_list : "" # Comma separated mail list for Alerts; eg: user1@mail.com, user2@mail.com +sunbird_mail_server_from_email: # Email ID that should be as from address in mails + +# Kibana oauth authorized domains; for accessing kibana dashboard +kibana_oauth_authenticated_email_domains: + - domain1 + - domain2 +kibana_oauth_authenticated_email_ids: + - email1 + - email2 +monitor_alerts_mail_from_email: # From Address for alert mails +sunbird_msg_sender: # SMS from Address; atleast 6 char +sunbird_android_app_url: "" # Playstore url of android app; default is subird.org + +# NOT MANDATORY VARS +keycloak_api_management_user_email: "admin@sunbird.org" +jenkins_url: # Jenkins urls to be accessed from slaves; eg "http://10.20.0.12:8080/jenkins" +sunbird_installation_email: "admin@sunbird.org" # fallback email for badger badge creation if the user doesn't have email address. +upstream_url: "{{azure_account_name}}.blob.core.windows.net/{{sunbird_content_azure_storage_container}}" # Proxy url to get /assets/public + + +####################### Please Check me ############################# +sunbird_ekstep_api_base_url: "https://{{ekstep_s3_env}}.ekstep.in/api" #API base URL of the Ekstep environment. Use `https://qa.ekstep.in/api` for non-prod deployments, and use `https://api.ekstep.in/` for prod deployment. +sunbird_data_service_api_base_url: "{{sunbird_ekstep_api_base_url}}" +telemetry_proxy_url: "" +sunbird_telemetry_api: "{{sunbird_ekstep_api_base_url}}/data/v3/telemetry" +sunbird_language_service_api_base_url: '{{sunbird_ekstep_api_base_url}}/language' + # Following variable gets called for assets/public from Proxy +badger_url: http://azureaccountname.blob.core.windows.net/ # Is it a dummy var? +sunbird_installation_display_name: "{{sunbird_app_name}} {{env}}" + +## Not used +project: "sunbird" + + +################################################ + +# Keycloak values can be merged to keycloak role, once PR is merged +keycloak_build_src: "keycloak_build" +keycloak_ver: "keycloak-3.2.0.Final" +keycloak_sms_provider_build: "keycloak-email-phone-autthenticator-1.0-SNAPSHOT.jar" +keycloak_sms_provider_templates_src: "templates.tar.gz" +keycloak_sms_provider_templates_dest: "/opt/keycloak/themes/sunbird/login" +keycloak_ekstep_sunbird_login_theme_file: "login.tar.gz" +keycloak_ekstep_sunbird_login_theme_dest: "/opt/keycloak/themes/sunbird/login" +keycloak_postgresql: "postgresql-9.4.1212.jar" +sunbird_auth_version: 1.0v diff --git a/private_repo/ansible/inventory/dev/Core/hosts b/private_repo/ansible/inventory/dev/Core/hosts new file mode 100644 index 0000000000..5adff87bb9 --- /dev/null +++ b/private_repo/ansible/inventory/dev/Core/hosts @@ -0,0 +1,126 @@ +[swarm-manager-1] +18.0.0.15 swarm_master=true + +[swarm-manager:children] +swarm-manager-1 + +[keycloak-1] +18.0.0.9 + +[keycloak:children] +keycloak-1 + +[log-es-1] +18.0.0.15 node_name=refactor-log-es-1 es_etc_node_master=true es_etc_node_data=true + +[log-es:children] +log-es-1 + +[swarm-agent-for-prometheus-1] +18.0.0.15 + +[swarm-agent-for-prometheus:children] +swarm-agent-for-prometheus-1 + +[swarm-agent-for-grafana-1] +18.0.0.15 + +[swarm-agent-for-grafana:children] +swarm-agent-for-grafana-1 + +[swarm-agent-for-alertmanager-1] +18.0.0.15 + + +[es-1] +18.0.0.9 es_instance_name=es-1 es_etc_node_master=true es_etc_node_data=true + +[es-backup:children] +es-1 + +[log-es-backup:children] +log-es-1 + +[es:children] +es-1 + +[cassandra-1] +18.0.0.9 + +[cassandra:children] +cassandra-1 + +[postgresql-master-1] +18.0.0.9 + +[postgresql-master:children] +postgresql-master-1 + +[postgresql-slave-1] +18.0.0.9 + +[postgresql-slave:children] +postgresql-slave-1 + +[postgres:children] +postgresql-slave +postgresql-master + +[kafka-1] +18.0.0.13 kafka_id=1 + +[processing-cluster-kafka] +18.0.0.13 + +[telemetry-search-cluster] +18.0.0.13 + +[kafka:children] +kafka-1 + +[local] +localhost + +[swarm-agent-for-alertmanager:children] +swarm-agent-for-alertmanager-1 + +[kong-api] +localhost + +[swarm-bootstrap-manager:children] +swarm-manager + +[swarm-nodes:children] +swarm-manager +swarm-bootstrap-manager +swarm-agent-for-prometheus +swarm-agent-for-grafana +swarm-agent-for-alertmanager + +[node-exporter:children] +swarm-manager + +[log-forwarder:children] +swarm-manager + +[core:children] +es +log-es +cassandra +postgresql-master +postgresql-slave +swarm-nodes +swarm-manager +kafka +keycloak + +[env:children] +core +local + +[log-forwarder:children] +swarm-manager + +[all:vars] +ansible_ssh_user=deployer +ansible_ssh_private_key_file=/run/secrets/deployer_ssh_key \ No newline at end of file diff --git a/private_repo/ansible/inventory/dev/Core/secrets.yml b/private_repo/ansible/inventory/dev/Core/secrets.yml new file mode 100644 index 0000000000..6c499df2d5 --- /dev/null +++ b/private_repo/ansible/inventory/dev/Core/secrets.yml @@ -0,0 +1,63 @@ +# !! Might deprecate +core_vault_sunbird_ekstep_api_key: +core_vault_sunbird_encryption_key: +core_vault_kong__test_jwt: + +############# Core ####################### +####### Secrets ####### + +core_vault_sunbird_trampoline_secret: # some 8 digit password for keycloak sso user +core_vault_postgres_password: +core_vault_sunbird_azure_storage_key : +core_vault_docker_registry_url: "https://index.docker.io/v1" # use this value if using dockerhub +core_vault_docker_registry_user: +core_vault_docker_registry_password: +core_vault_proxy_site_key: |+ + +core_vault_proxy_site_crt: |+ + +core_vault_ansible_vault_password: + +################### DONT FILL THESE VARIABLES INITIALLY ################### + +core_vault_sunbird_sso_publickey: # Get After Keycloak Deployment +core_vault_sunbird_api_auth_token: #Authorization key (JWT) to access Sunbird APIs. This will be in the output of deploy-apis.sh script, extracting it out is documented in the deployment wiki. + +######################## Not mandatory ################################### +core_vault_sunbird_fcm_account_key: "" +core_vault_sunbird_google_oauth_clientSecret: +core_vault_mail_server_password: '' +core_vault_keycloak_api_management_user_password: admin +core_vault_keystore_password: sunbird #Password to use for encrypting cassandra keystore. Use a strong password. +vault_core_url_shortner_access_token: "" # Url shortner access token for learning-service; only if url_shortner enabled +core_vault_sunbird_sso_username: admin +core_vault_sunbird_sso_password: admin +core_vault_keycloak_password: "admin" +core_vault_grafana_admin_password: "sunbird" +core_vault_truststore_password: "sunbird" # Password for cassandra trust store +core_vault_trampoline_secret: "deep-secret" ## any 8 character value +core_vault_msg_91_auth_key: + +# Portal one google sso +core_vault_sunbird_google_oauth_clientId_portal: +core_vault_sunbird_google_oauth_clientSecret_portal: +core_vault_sunbird_google_captcha_site_key_portal: +core_vault_sunbird_google_keycloak_secret: + +# Oauth for logger kibana +core_vault_kibana_google_client_id: +core_vault_kibana_google_client_secret: +core_vault_kibana_cookie_secret: kibanaoauth # Cookie secret for kibana Oauth + +####################### END OF VARS ########################################## + +#NOT REQUIRED TO EDIT ############################## +core_vault_badger_admin_password: "sunbird" +core_vault_badging_authorization_key: +core_vault_jenkins_admin_username: "" #### if it is not required will remove +core_vault_jenkins_admin_password: "" #### if it is not required will remove +core_vault_proxy_prometheus_admin_creds: "admin" +core_vault_postgres_username: postgres # dont change this value +core_vault_grafana_editor_password: "sunbird" +core_vault_grafana_dashboards_git_repo_url_with_credentails: "https://github.com/project-sunbird/grafana-dashboards.git" +core_vault_monitor_alerts_slack_url: "" diff --git a/private_repo/ansible/inventory/dev/DataPipeline/common.yml b/private_repo/ansible/inventory/dev/DataPipeline/common.yml new file mode 100644 index 0000000000..bd03ee5a0e --- /dev/null +++ b/private_repo/ansible/inventory/dev/DataPipeline/common.yml @@ -0,0 +1,40 @@ +############## Common ###################### + +# Common vars for env +env: +proto: +domain_name: +ssh_public_key_deployer: +bootstrap_user: +bootstrap_key_path: +ansible_ssh_private_key_file: + +#################### DP ########################## + + + +# Every where the value is telemetry-data-store +# Shall we change the value to telemetry-data-store in dev also? +# What's the implication +# Is it azure blob or s3 bucket?? +# Is it same as `channel_data_exhaust_bucket` +secor_azure_container_name: + +dp_azure_account_name: # azure storage account name +default_org_hash_id: # channel id of the organization + +# Data products monitoring web hooks +data_exhaust_webhook_url: "" +data_exhaust_Channel: "" +data_exhaust_name: +bucket: +stream_base_url: "" + +# Media content +media_service_azure_tenant: "" # value have to be defined +media_service_azure_tenant: "" +media_service_azure_subscription_id: "" +media_service_azure_account_name: "" +media_service_azure_resource_group_name: "" +media_service_azure_token_client_key: "" +media_service_azure_token_client_secret: "" diff --git a/private_repo/ansible/inventory/dev/DataPipeline/hosts b/private_repo/ansible/inventory/dev/DataPipeline/hosts new file mode 100644 index 0000000000..dd06977aab --- /dev/null +++ b/private_repo/ansible/inventory/dev/DataPipeline/hosts @@ -0,0 +1,145 @@ +################ Core ######################### +[swarm-bootstrap-manager] +15.0.1.4 + +# Sunbird zookeeper +[ingestion-cluster-zookeepers] + + +################# LP ########################## +[search] +15.0.3.5 + +[learning] +15.0.3.11 + +[composite-search-cluster] +15.0.2.6 + +[lp-cassandra] +15.0.2.7 + +[dp-cassandra] +15.0.2.7 + +[lp-redis] +15.0.3.11 + +################# LPA ######################### +[analytics-api] +15.0.3.6 + +[secor] +15.0.3.15 + +[spark] +15.0.3.12 + +[cassandra] +15.0.2.7 + +[postgres] +15.0.3.17 + +[lpa:children] +spark +secor +analytics-api +cassandra +########################### DP ############################# + +[kafka-indexer] +15.0.3.8 + +[influxdb] +#15.0.3.8 +15.0.3.6 + +[processing-cluster-kafka] +15.0.3.8 +15.0.3.7 + +[processing-cluster-zookeepers] +15.0.3.8 +15.0.3.7 + +[telemetry-search-cluster1] +15.0.2.6 + + +[telemetry-search-cluster:children] +telemetry-search-cluster1 + +[zookeeper:children] +processing-cluster-zookeepers + +[telemetry-search-cluster-kibana-node:children] +telemetry-search-cluster1 + +[yarn-master] +15.0.3.10 + +[yarn-slave] +15.0.3.13 + +[yarn:children] +yarn-master +yarn-slave + +[local] +localhost + +[dp:children] +local +processing-cluster-kafka +processing-cluster-zookeepers +zookeeper +postgres +telemetry-search-cluster +telemetry-search-cluster-kibana-node +yarn +kafka-indexer +influxdb +lpa + +[env:children] +swarm-bootstrap-manager +dp + +[env:vars] +ansible_ssh_user=deployer +ansible_ssh_private_key_file=/run/secrets/deployer_ssh_key + + +########################### Monitoring ########################## +[yarn-ps] +15.0.3.10 +15.0.3.13 + +[logstash-ps] +15.0.3.8 + +[es-ps] +15.0.2.6 + +[process-exporter:children] +yarn-ps +logstash-ps +es-ps +secor-ps +analytics-ps +kafka-ps + +[secor-ps] +15.0.3.15 + +[analytics-ps] +15.0.3.6 + +[kafka-ps] +15.0.3.8 +15.0.3.7 + +[all:vars] +ansible_ssh_user=deployer +ansible_ssh_private_key_file=/run/secrets/deployer_ssh_key diff --git a/private_repo/ansible/inventory/dev/DataPipeline/secrets.yml b/private_repo/ansible/inventory/dev/DataPipeline/secrets.yml new file mode 100644 index 0000000000..6b644f6c10 --- /dev/null +++ b/private_repo/ansible/inventory/dev/DataPipeline/secrets.yml @@ -0,0 +1,9 @@ +############## Admin ###################### + +############## DP ###################### +dp_vault_artifacts_container: +dp_vault_azure_backup_storage_secret: +dp_search_service_authorization_token: +dp_vault_pgdb_password: +dp_vault_data_exhaust_token: +dp_vault_azure_account_key: diff --git a/private_repo/ansible/inventory/dev/KnowledgePlatform/common.yml b/private_repo/ansible/inventory/dev/KnowledgePlatform/common.yml new file mode 100644 index 0000000000..3345097159 --- /dev/null +++ b/private_repo/ansible/inventory/dev/KnowledgePlatform/common.yml @@ -0,0 +1,42 @@ +### !!! Remove this from public template !!! +### !!! These are private values only for sunbird/ntp !!! +instance_name: sunbird +instance: dev + +## Mahesh have to come back on this +content_to_vec_url: # content_to_vec_url +orchestrator_url: +s3_public_bucket: "" + +############## Common ###################### + +env: +proto: +domain_name: +ekstep_domain_name: + +#bootstrap +ssh_public_key_deployer: +bootstrap_user: +bootstrap_key_path: +###################### LP ############################ + +azure_public_container: +azure_account_name: + + +# This variable should change value per env +# eg: dev 1xx; staging 2xxx +environment_id: + +########### jenkinspipeline upload artifact ############ +artifacts_container: + + +neo4j_zip: neo4j-enterprise-3.3.9-unix.tar.gz # neo4j enterprise version.zip present in the artifacts folder +neo4j_enterprise: "true" + +## Cassandra-backup +cassandra_backup_azure_container_name: +default_org_hash_id: # channel id of the organization + diff --git a/private_repo/ansible/inventory/dev/KnowledgePlatform/hosts b/private_repo/ansible/inventory/dev/KnowledgePlatform/hosts new file mode 100644 index 0000000000..cb141a673e --- /dev/null +++ b/private_repo/ansible/inventory/dev/KnowledgePlatform/hosts @@ -0,0 +1,106 @@ +######################## LP ######################## + +[learning1] +15.0.3.11 + +[swarm-bootstrap-manager] +15.0.1.4 + +[learningall:children] +learning1 + +[search1] +15.0.3.5 + +[searchall:children] +search1 + +[redis1] +15.0.3.11 + +[redisall:children] +redis1 + +[learning-neo4j-node1] +15.0.2.9 + +# Enable following host, if you're have neo4j cluster and an arbiter for election +# [arbiter] +# dbms_mode=ARBITER + +[learning-neo4j-cluster:children] +learning-neo4j-node1 + +[cassandra] +15.0.2.7 + +[dp-cassandra] +15.0.2.7 + +[core-cassandra] +15.0.2.5 + +[composite-search-cluster] +15.0.2.6 + +[yarn-master] +15.0.3.10 + +[yarn-slave] +15.0.3.10 #yarn master +15.0.3.13 + +[yarn:children] +yarn-master +yarn-slave + +[processing-cluster-kafka] +15.0.3.14 + +[processing-cluster-zookeepers] +15.0.3.14 + +[zookeeper:children] +processing-cluster-zookeepers + +[local] +localhost + +[lp:children] +learningall +searchall +learning-neo4j-cluster +cassandra +redisall +yarn +composite-search-cluster +processing-cluster-kafka +zookeeper +local + +[env:children] +lp +swarm-bootstrap-manager + +[env:vars] +ansible_ssh_user="deployer" +ansible_ssh_private_key_file=/run/secrets/deployer_ssh_key + +####################### Monitoring ######################## +[logstash-ps] +15.0.3.11 + +[process-exporter:children] +logstash-ps +cassandra-ps + +[cassandra-ps] +15.0.2.7 + +[process-exporter:vars] +ansible_ssh_user="deployer" +ansible_ssh_private_key_file=/run/secrets/deployer_ssh_key + +[all:vars] +ansible_ssh_user=deployer +ansible_ssh_private_key_file=/run/secrets/deployer_ssh_key diff --git a/private_repo/ansible/inventory/dev/KnowledgePlatform/secrets.yml b/private_repo/ansible/inventory/dev/KnowledgePlatform/secrets.yml new file mode 100644 index 0000000000..f9ac1ee383 --- /dev/null +++ b/private_repo/ansible/inventory/dev/KnowledgePlatform/secrets.yml @@ -0,0 +1,6 @@ +############## Admin ###################### +############## LP ###################### +lp_vault_azure_storage_secret: +lp_vault_graph_passport_key: # can be any random string; to check integrity of content submitted for reviewal +lp_vault_youtube_api_key: +lp_vault_dial_service_authorization: From 84a37484a3e89b5c742f3bfda0cd6d90a75a513e Mon Sep 17 00:00:00 2001 From: Keshav Prasad Date: Mon, 11 Mar 2019 13:47:44 +0530 Subject: [PATCH 1342/1345] Revert "Merge release-1.14-sprint3 to master (#315)" This reverts commit ee11aba1b4fec2a70efc50101d55526b4abbc7d9. --- .circleci/config.yml | 2 +- Jenkinsfile | 26 + ansible/api-manager.yml | 5 +- ansible/artifacts-download.yml | 10 - ansible/artifacts-upload.yml | 6 +- .../sunbird/email/html/email-test.ftl | 5 - .../sunbird/email/html/email-verification.ftl | 5 - .../sunbird/email/html/event-login_error.ftl | 5 - .../sunbird/email/html/event-remove_totp.ftl | 5 - .../email/html/event-update_password.ftl | 5 - .../sunbird/email/html/event-update_totp.ftl | 5 - .../sunbird/email/html/executeActions.ftl | 5 - .../email/html/identity-provider-link.ftl | 5 - .../sunbird/email/html/password-reset.ftl | 5 - .../email/messages/messages_ca.properties | 21 - .../email/messages/messages_de.properties | 24 - .../email/messages/messages_en.properties | 27 - .../email/messages/messages_es.properties | 21 - .../email/messages/messages_fr.properties | 21 - .../email/messages/messages_it.properties | 24 - .../email/messages/messages_ja.properties | 25 - .../email/messages/messages_lt.properties | 24 - .../email/messages/messages_no.properties | 24 - .../email/messages/messages_pt_BR.properties | 19 - .../email/messages/messages_ru.properties | 25 - .../email/messages/messages_sv.properties | 25 - .../sunbird/email/text/email-test.ftl | 1 - .../sunbird/email/text/email-verification.ftl | 1 - .../sunbird/email/text/event-login_error.ftl | 1 - .../sunbird/email/text/event-remove_totp.ftl | 1 - .../email/text/event-update_password.ftl | 1 - .../sunbird/email/text/event-update_totp.ftl | 1 - .../sunbird/email/text/executeActions.ftl | 1 - .../email/text/identity-provider-link.ftl | 1 - .../sunbird/email/text/password-reset.ftl | 1 - .../artifacts/sunbird/email/theme.properties | 1 - .../sunbird/login/login-page-expired.ftl | 18 - .../sunbird/login/login-reset-password.ftl | 58 - .../sunbird/login/login-update-password.ftl | 64 - ansible/artifacts/sunbird/login/login.ftl | 97 - .../css/fonts/notosans/cyrillic-ext.woff2 | Bin 21740 -> 0 bytes .../css/fonts/notosans/cyrillic.woff2 | Bin 10540 -> 0 bytes .../css/fonts/notosans/devanagari.woff2 | Bin 32696 -> 0 bytes .../css/fonts/notosans/greek-ext.woff2 | Bin 8516 -> 0 bytes .../resources/css/fonts/notosans/greek.woff2 | Bin 12872 -> 0 bytes .../css/fonts/notosans/latin-ext.woff2 | Bin 32276 -> 0 bytes .../resources/css/fonts/notosans/latin.woff2 | Bin 15572 -> 0 bytes .../resources/css/fonts/notosans/notosans.css | 64 - .../css/fonts/notosans/vietnamese.woff2 | Bin 7384 -> 0 bytes .../sunbird/login/resources/css/login.css | 375 +-- .../login/resources/css/semantic.min.css | 2 +- .../css/themes/default/assets/fonts/icons.eot | Bin 60767 -> 0 bytes .../css/themes/default/assets/fonts/icons.svg | 565 ---- .../css/themes/default/assets/fonts/icons.ttf | Bin 122092 -> 0 bytes .../themes/default/assets/fonts/icons.woff | Bin 71508 -> 0 bytes .../themes/default/assets/fonts/icons.woff2 | Bin 56780 -> 0 bytes .../sunbird/login/resources/img/bg.svg | 33 - .../login/resources/img/diksha_gov_logo.svg | 1 - .../sunbird/login/resources/img/favicon.ico | Bin 1150 -> 0 bytes .../sunbird/login/resources/img/google.png | Bin 6739 -> 0 bytes .../sunbird/login/resources/img/logo.png | Bin 14389 -> 68091 bytes .../sunbird/login/resources/js/login.js | 171 -- .../login/resources/login-reset-password.ftl | 43 + .../login/resources/login-update-password.ftl | 48 + .../sunbird/login/resources/login.ftl | 72 + .../messages/messages_en.properties | 56 +- .../login/{ => resources}/theme.properties | 6 +- ansible/artifacts/sunbird/login/template.ftl | 114 - ansible/bootstrap.yml | 20 +- ansible/cassandra-backup.yml | 2 +- ansible/deploy.yml | 1 - ansible/docker_image_push.yml | 17 - ansible/es.yml | 10 - .../sample/group_vars/postgresql-master | 5 + ansible/inventories/sample/hosts | 88 + ansible/inventory/env/common.yml | 0 ansible/inventory/env/group_vars/all.yml | 546 ---- ansible/inventory/env/group_vars/env.yml | 1 - ...d-auth-provision.yml => jmeter-deploy.yml} | 8 +- ansible/jmeter-provision.yml | 6 + ...unbird-auth-deploy.yml => mongobackup.yml} | 10 +- ansible/monitoring.yml | 11 +- ansible/provision.yml | 2 - .../application_elasticsearch/meta/main.yml | 4 +- .../artifacts-download-azure/meta/main.yml | 2 - .../artifacts-download-azure/tasks/main.yml | 8 - .../artifacts-upload-azure/meta/main.yml | 2 +- .../artifacts-upload-azure/tasks/main.yml | 12 +- ansible/roles/azure-cli/tasks/main.yml | 5 +- ansible/roles/bootstrap_any/tasks/main.yml | 15 +- .../roles/cassandra-backup/defaults/main.yml | 3 - ansible/roles/cassandra-backup/tasks/main.yml | 12 +- .../templates/cassandra_backup.j2 | 36 +- .../roles/cassandra-deploy/defaults/main.yml | 4 +- ansible/roles/cassandra/tasks/main.yml | 22 - ansible/roles/changekey/defaults/main.yml | 5 - ansible/roles/changekey/tasks/main.yml | 24 - ansible/roles/curl_es_command/tasks/main.yml | 1 - ansible/roles/elasticsearch/defaults/main.yml | 1 - .../tasks/elasticsearch-Debian.yml | 6 +- ansible/roles/jenkins/defaults/main.yml | 333 +-- ansible/roles/jenkins/meta/main.yml | 3 - ansible/roles/jenkins/tasks/plugins.yml | 70 +- .../jenkins/templates/basic-security.groovy | 19 +- ansible/roles/keycloak/defaults/main.yml | 7 - ansible/roles/keycloak/tasks/deploy.yml | 133 +- .../keycloak/tasks/keycloak_bootstrap.yml | 21 +- .../keycloak/templates/Msg91Creds.json.j2 | 10 +- ansible/roles/kong-api/defaults/main.yml | 99 +- ansible/roles/kong-api/tasks/main.yml | 26 +- ansible/roles/kong-consumer/defaults/main.yml | 2 - ansible/roles/kong-consumer/tasks/main.yml | 24 +- ansible/roles/monit/tasks/main.yml | 1 - .../postgresql-data-update/tasks/main.yml | 4 +- .../templates/tables_postgres.sql | 11 + .../roles/postgresql/tasks/setup-Debian.yml | 1 - .../roles/prometheus-backup/tasks/main.yml | 10 +- .../roles/prometheus_config/defaults/main.yml | 2 - .../roles/prometheus_config/tasks/main.yml | 32 - .../templates/stack-api-manager.yml | 4 +- .../roles/stack-badger/tasks/.user.yml.swp | Bin 12288 -> 0 bytes ansible/roles/stack-badger/tasks/main.yml | 10 +- ansible/roles/stack-badger/tasks/user.yml | 8 + ansible/roles/stack-monitor/defaults/main.yml | 4 +- .../templates/alertrules.process | 2 +- ansible/roles/stack-proxy/tasks/main.yml | 9 +- .../roles/stack-proxy/templates/nginx.conf | 1 - .../stack-proxy/templates/proxy-default.conf | 3 +- ansible/roles/stack-sunbird/defaults/main.yml | 26 +- .../stack-sunbird/tasks/actor_service.yml | 2 +- ansible/roles/stack-sunbird/tasks/common.yml | 7 +- .../stack-sunbird/tasks/config_service.yml | 2 +- .../stack-sunbird/tasks/content_service.yml | 2 +- .../stack-sunbird/tasks/learner_service.yml | 2 +- .../stack-sunbird/tasks/telemetry_service.yml | 4 +- .../templates/sunbird_actor-service.env | 56 + .../templates/sunbird_content-service.env | 2 - .../templates/sunbird_learner-service.env | 6 +- .../templates/sunbird_player.env | 6 +- .../telemetry-logstash-datapipeline.conf | 2 - .../sunbird-auth-deploy/defaults/main.yml | 86 - .../files/python-keycloak-0.12.0/PKG-INFO | 19 - .../files/python-keycloak-0.12.0/README.md | 210 -- .../keycloak-realm.json | 1999 -------------- .../keycloak/__init__.py | 19 - .../keycloak/authorization/__init__.py | 87 - .../keycloak/authorization/permission.py | 98 - .../keycloak/authorization/policy.py | 107 - .../keycloak/authorization/role.py | 39 - .../keycloak/connection.py | 199 -- .../keycloak/exceptions.py | 93 - .../keycloak/keycloak_admin.py | 670 ----- .../keycloak/keycloak_main.py | 87 - .../keycloak/keycloak_openid.py | 390 --- .../python_keycloak.egg-info/PKG-INFO | 18 - .../python_keycloak.egg-info/SOURCES.txt | 0 .../dependency_links.txt | 1 - .../python_keycloak.egg-info/requires.txt | 3 - .../python_keycloak.egg-info/top_level.txt | 1 - .../keycloak/tests/__init__.py | 0 .../keycloak/tests/test_connection.py | 148 - .../keycloak/urls_patterns.py | 54 - .../python_keycloak.egg-info/PKG-INFO | 18 - .../python_keycloak.egg-info/SOURCES.txt | 21 - .../dependency_links.txt | 1 - .../python_keycloak.egg-info/requires.txt | 3 - .../python_keycloak.egg-info/top_level.txt | 1 - .../files/python-keycloak-0.12.0/roles.json | 41 - .../files/python-keycloak-0.12.0/setup.cfg | 7 - .../files/python-keycloak-0.12.0/setup.py | 25 - .../sunbird-auth-deploy/tasks/bootstrap.yml | 77 - .../sunbird-auth-deploy/tasks/deploy.yml | 109 - .../roles/sunbird-auth-deploy/tasks/main.yml | 7 - .../templates/Msg91Creds.json.j2 | 7 - .../templates/keycloak-bootstrap.conf.j2 | 13 - .../templates/keycloak-realm.j2 | 2388 ----------------- .../templates/module.xml.j2 | 10 - .../templates/standalone-ha.xml | 571 ---- .../templates/standalone.xml | 471 ---- .../sunbird-auth-provision/defaults/main.yml | 10 - .../tasks/install-keycloak.yml | 51 - .../sunbird-auth-provision/tasks/main.yml | 3 - .../tasks/prerequisite.yml | 11 - .../templates/keycloak-service.j2 | 117 - .../tasks/main.yml | 11 + .../templates/system_init_upgrade_commands.j2 | 82 + .../roles/sunbird-system-init/tasks/main.yml | 23 + .../templates/system_init_commands.j2 | 415 +++ .../vm-agents-processexporter/tasks/main.yml | 5 + .../templates/config.j2 | 16 +- ansible/rotatekeys.yml | 9 - ansible/run_command.yml | 3 +- ansible/setup-dockerswarm.yml | 14 +- .../swarm/acs-engine/common/azuredeploy.json | 1059 ++++++++ .../acs-engine/production.sample/README.md | 80 + .../azuredeploy.parameters.json.sample | 48 + .../swarm/acs-engine/production.sample/env.sh | 8 + cloud/azure/arm/vm/azuredeploy.json | 162 ++ .../arm/vm/azuredeploy.parameters.json.sample | 48 + cloud/openvpn/openvpn.sh | 15 + deploy/cassandra_restore.py | 9 +- deploy/jenkins/butler | Bin 8166370 -> 0 bytes deploy/jenkins/envOrder.txt.sample | 4 - deploy/jenkins/jenkins-jobs-setup.sh | 103 - deploy/jenkins/jenkins-plugins-setup.sh | 21 - deploy/jenkins/jenkins-server-setup.sh | 70 - deploy/jenkins/jobs/ArtifactUpload/config.xml | 29 - .../jobs/ArtifactUpload/jobs/dev/config.xml | 29 - .../jobs/dev/jobs/Core/config.xml | 29 - .../dev/jobs/Core/jobs/APIManager/config.xml | 108 - .../jobs/Core/jobs/APIManagerEcho/config.xml | 108 - .../dev/jobs/Core/jobs/AdminUtils/config.xml | 108 - .../jobs/dev/jobs/Core/jobs/Badger/config.xml | 108 - .../dev/jobs/Core/jobs/Cassandra/config.xml | 108 - .../jobs/dev/jobs/Core/jobs/Config/config.xml | 108 - .../dev/jobs/Core/jobs/Content/config.xml | 108 - .../dev/jobs/Core/jobs/Keycloak/config.xml | 108 - .../dev/jobs/Core/jobs/Learner/config.xml | 108 - .../jobs/dev/jobs/Core/jobs/Player/config.xml | 108 - .../jobs/dev/jobs/Core/jobs/Proxy/config.xml | 108 - .../dev/jobs/Core/jobs/Telemetry/config.xml | 108 - .../jobs/dev/jobs/DataPipeline/config.xml | 29 - .../DataPipeline/jobs/Analytics/config.xml | 108 - .../DataPipeline/jobs/DataPipeline/config.xml | 108 - .../jobs/DataPipeline/jobs/Secor/config.xml | 108 - .../dev/jobs/KnowledgePlatform/config.xml | 29 - .../jobs/KnowledgePlatform/config.xml | 108 - .../KnowledgePlatform/jobs/Neo4j/config.xml | 108 - .../jobs/SyncTool/config.xml | 108 - .../KnowledgePlatform/jobs/Yarn/config.xml | 108 - .../jobs/dev/jobs/Plugins/config.xml | 28 - .../jobs/Plugins/jobs/CEPlugins/config.xml | 93 - .../Plugins/jobs/CollectionEditor/config.xml | 93 - .../Plugins/jobs/ContentFramework/config.xml | 93 - .../jobs/ContentRendererPreview/config.xml | 93 - .../Plugins/jobs/GenericEditor/config.xml | 93 - deploy/jenkins/jobs/Build/config.xml | 29 - .../jenkins/jobs/Build/jobs/Core/config.xml | 29 - .../jobs/Core/jobs/APIManager/config.xml | 38 - .../jobs/Core/jobs/APIManagerEcho/config.xml | 31 - .../jobs/Core/jobs/AdminUtils/config.xml | 63 - .../Build/jobs/Core/jobs/Badger/config.xml | 84 - .../Build/jobs/Core/jobs/Cassandra/config.xml | 84 - .../jobs/Core/jobs/CloudStorageSDK/config.xml | 84 - .../Build/jobs/Core/jobs/Config/config.xml | 84 - .../Build/jobs/Core/jobs/Content/config.xml | 77 - .../Build/jobs/Core/jobs/Keycloak/config.xml | 77 - .../Build/jobs/Core/jobs/Learner/config.xml | 84 - .../Build/jobs/Core/jobs/Player/config.xml | 84 - .../Build/jobs/Core/jobs/Proxy/config.xml | 75 - .../Build/jobs/Core/jobs/Telemetry/config.xml | 84 - .../jobs/Build/jobs/DataPipeline/config.xml | 29 - .../DataPipeline/jobs/Analytics/config.xml | 84 - .../DataPipeline/jobs/DataPipeline/config.xml | 84 - .../jobs/DataPipeline/jobs/Secor/config.xml | 84 - .../Build/jobs/KnowledgePlatform/config.xml | 29 - .../jobs/KnowledgePlatform/config.xml | 84 - .../KnowledgePlatform/jobs/Neo4j/config.xml | 84 - .../jobs/SyncTool/config.xml | 84 - .../KnowledgePlatform/jobs/Yarn/config.xml | 91 - .../jobs/Build/jobs/Plugins/config.xml | 29 - .../jobs/Plugins/jobs/CEPlugins/config.xml | 70 - .../Plugins/jobs/CollectionEditor/config.xml | 70 - .../Plugins/jobs/ContentFramework/config.xml | 70 - .../jobs/ContentRendererPreview/config.xml | 70 - .../Plugins/jobs/GenericEditor/config.xml | 70 - deploy/jenkins/jobs/Deploy/config.xml | 29 - .../jenkins/jobs/Deploy/jobs/dev/config.xml | 29 - .../jobs/Deploy/jobs/dev/jobs/Core/config.xml | 29 - .../dev/jobs/Core/jobs/APIManager/config.xml | 97 - .../dev/jobs/Core/jobs/AdminUtils/config.xml | 97 - .../jobs/ApplicationElasticSearch/config.xml | 58 - .../jobs/dev/jobs/Core/jobs/Badger/config.xml | 86 - .../dev/jobs/Core/jobs/Bootstrap/config.xml | 61 - .../dev/jobs/Core/jobs/Cassandra/config.xml | 163 -- .../jobs/dev/jobs/Core/jobs/Config/config.xml | 86 - .../dev/jobs/Core/jobs/Content/config.xml | 97 - .../Core/jobs/FuntionalTestCases/config.xml | 65 - .../dev/jobs/Core/jobs/Keycloak/config.xml | 163 -- .../jobs/Core/jobs/KeycloakRealm/config.xml | 68 - .../dev/jobs/Core/jobs/Learner/config.xml | 97 - .../Core/jobs/LoggerElasticSearch/config.xml | 60 - .../dev/jobs/Core/jobs/Logging/config.xml | 60 - .../dev/jobs/Core/jobs/Monitoring/config.xml | 60 - .../dev/jobs/Core/jobs/OnboardAPIs/config.xml | 67 - .../Core/jobs/OnboardConsumers/config.xml | 58 - .../jobs/dev/jobs/Core/jobs/Player/config.xml | 97 - .../jobs/dev/jobs/Core/jobs/Proxy/config.xml | 90 - .../dev/jobs/Core/jobs/Telemetry/config.xml | 97 - .../Core/jobs/TelemetryLogstash/config.xml | 60 - .../TelemetryLogstashDataPipeline/config.xml | 58 - .../jobs/dev/jobs/DataPipeline/config.xml | 29 - .../DataPipeline/jobs/AnalyticsAPI/config.xml | 170 -- .../jobs/AnalyticsFetchLogs/config.xml | 93 - .../AnalyticsGeoLocationDBSetup/config.xml | 67 - .../config.xml | 99 - .../jobs/AnalyticsReplayJobs/config.xml | 113 - .../jobs/AnalyticsStartJobManager/config.xml | 77 - .../jobs/AnalyticsSubmitJobs/config.xml | 76 - .../jobs/CassandraDbUpdate/config.xml | 67 - .../DataPipeline/jobs/DataProducts/config.xml | 170 -- .../DataPipeline/jobs/KafkaIndexer/config.xml | 67 - .../DataPipeline/jobs/KafkaSetup/config.xml | 67 - .../DataPipeline/jobs/Monitoring/config.xml | 74 - .../jobs/SamzaTelemetrySchemas/config.xml | 77 - .../jobs/DataPipeline/jobs/Secor/config.xml | 170 -- .../jobs/DataPipeline/jobs/Yarn/config.xml | 170 -- .../dev/jobs/KnowledgePlatform/config.xml | 29 - .../jobs/CassandraDbUpdate/config.xml | 70 - .../jobs/ContentTool/config.xml | 92 - .../jobs/FileSyncTool/config.xml | 83 - .../jobs/KafkaSetup/config.xml | 70 - .../jobs/Learning/config.xml | 170 -- .../jobs/Monitoring/config.xml | 72 - .../KnowledgePlatform/jobs/Neo4j/config.xml | 159 -- .../jobs/Neo4jDefinitionUpdate/config.xml | 68 - .../Neo4jElasticSearchSyncTool/config.xml | 184 -- .../KnowledgePlatform/jobs/Search/config.xml | 170 -- .../jobs/StartNeo4jCluster/config.xml | 70 - .../jobs/StopNeo4jCluster/config.xml | 70 - .../jobs/ValidateLearning/config.xml | 68 - .../KnowledgePlatform/jobs/Yarn/config.xml | 170 -- .../Deploy/jobs/dev/jobs/Plugins/config.xml | 29 - .../jobs/Plugins/jobs/CEPlugins/config.xml | 161 -- .../Plugins/jobs/CollectionEditor/config.xml | 161 -- .../Plugins/jobs/ContentFramework/config.xml | 161 -- .../jobs/ContentRendererPreview/config.xml | 161 -- .../Plugins/jobs/GenericEditor/config.xml | 161 -- .../Deploy/jobs/dev/jobs/Summary/config.xml | 29 - .../Summary/jobs/DeployedVersions/config.xml | 74 - .../jenkins/jobs/OpsAdministration/config.xml | 29 - .../OpsAdministration/jobs/dev/config.xml | 29 - .../jobs/dev/jobs/Core/config.xml | 29 - .../ApplicationElasticsearchBackup/config.xml | 50 - .../config.xml | 50 - .../dev/jobs/Core/jobs/Bootstrap/config.xml | 75 - .../jobs/Core/jobs/CassandraBackup/config.xml | 50 - .../dev/jobs/Core/jobs/KeyRotation/config.xml | 94 - .../jobs/LoggerElasticSearchBackup/config.xml | 50 - .../LoggerElasticSearchRestore/config.xml | 50 - .../Core/jobs/PostgresqlBackup/config.xml | 51 - .../Core/jobs/PostgresqlRestore/config.xml | 51 - .../Core/jobs/PrometheusBackup/config.xml | 50 - .../jobs/Core/jobs/SwarmBootstrap/config.xml | 50 - .../jobs/dev/jobs/DataPipeline/config.xml | 29 - .../jobs/AnalyticsAPILogs/config.xml | 51 - .../DataPipeline/jobs/Bootstrap/config.xml | 60 - .../jobs/CassandraBackup/config.xml | 81 - .../jobs/CassandraRestore/config.xml | 74 - .../jobs/ElasticsearchBackup/config.xml | 75 - .../jobs/ElasticsearchRestore/config.xml | 75 - .../jobs/InfluxDBBackup/config.xml | 65 - .../jobs/PostgresqlBackup/config.xml | 51 - .../jobs/PostgresqlRestore/config.xml | 51 - .../dev/jobs/KnowledgePlatform/config.xml | 29 - .../jobs/Bootstrap/config.xml | 60 - .../jobs/CassandraBackup/config.xml | 76 - .../jobs/CassandraRestore/config.xml | 67 - .../jobs/ElasticsearchBackup/config.xml | 52 - .../jobs/ElasticsearchRestore/config.xml | 61 - .../jobs/Neo4jBackup/config.xml | 60 - .../jobs/Neo4jRestore/config.xml | 74 - deploy/jenkins/jobs/Provision/config.xml | 29 - .../jobs/Provision/jobs/dev/config.xml | 29 - .../Provision/jobs/dev/jobs/Core/config.xml | 29 - .../dev/jobs/Core/jobs/Cassandra/config.xml | 58 - .../jobs/Core/jobs/JenkinsSlave/config.xml | 70 - .../jobs/dev/jobs/Core/jobs/Kafka/config.xml | 58 - .../dev/jobs/Core/jobs/Keycloak/config.xml | 65 - .../Core/jobs/LogElasticSearch/config.xml | 50 - .../dev/jobs/Core/jobs/Postgres/config.xml | 50 - .../Core/jobs/PostgresDbUpdate/config.xml | 50 - .../dev/jobs/Core/jobs/Registry/config.xml | 58 - .../jobs/dev/jobs/Core/jobs/Secor/config.xml | 58 - .../jobs/dev/jobs/DataPipeline/config.xml | 29 - .../DataPipeline/jobs/AnalyticsAPI/config.xml | 57 - .../jobs/AnalyticsSecor/config.xml | 56 - .../jobs/AnalyticsSpark/config.xml | 57 - .../DataPipeline/jobs/Cassandra/config.xml | 50 - .../DataPipeline/jobs/InfluxDB/config.xml | 56 - .../jobs/DataPipeline/jobs/Kafka/config.xml | 65 - .../jobs/DataPipeline/jobs/Kibana/config.xml | 57 - .../DataPipeline/jobs/Postgres/config.xml | 56 - .../jobs/TelemetrySearch/config.xml | 65 - .../jobs/DataPipeline/jobs/Yarn/config.xml | 57 - .../DataPipeline/jobs/Zookeeper/config.xml | 64 - .../dev/jobs/KnowledgePlatform/config.xml | 29 - .../jobs/Cassandra/config.xml | 61 - .../jobs/CompositeSearch/config.xml | 61 - .../KnowledgePlatform/jobs/Kafka/config.xml | 61 - .../jobs/Learning/config.xml | 68 - .../KnowledgePlatform/jobs/Neo4j/config.xml | 61 - .../KnowledgePlatform/jobs/Redis/config.xml | 61 - .../KnowledgePlatform/jobs/Search/config.xml | 60 - .../KnowledgePlatform/jobs/Yarn/config.xml | 68 - .../jobs/Zookeeper/config.xml | 61 - deploy/jenkins/plugins.txt | 98 - deploy/utilities/kill_samza_app.sh | 13 - images/openbadger/Jenkinsfile | 61 - images/openbadger/build.sh | 19 +- images/proxy/Jenkinsfile | 49 - images/proxy/build.sh | 19 +- pipelines/adminutils/Jenkinsfile.sample | 27 + pipelines/adminutils/deploy.sh | 28 + pipelines/adminutils/installDeps.sh | 5 + pipelines/adminutils/metadata.json | 6 + pipelines/am-onboard-apis/Jenkinsfile.sample | 15 + .../am-onboard-consumers/Jenkinsfile.sample | 15 + pipelines/api-manager/Jenkinsfile.sample | 34 + pipelines/api-manager/deploy.sh | 23 + pipelines/api-manager/installDeps.sh | 5 + pipelines/api-manager/metadata.json | 6 + .../Jenkinsfile.sample | 22 + pipelines/backup/cassandra-backup/Jenkinsfile | 38 - pipelines/backup/es-backup/Jenkinsfile | 38 - pipelines/backup/es-restore/Jenkinsfile | 42 - pipelines/backup/logger-es-backup/Jenkinsfile | 38 - .../backup/logger-es-restore/Jenkinsfile | 42 - .../backup/postgresql-backup/Jenkinsfile | 38 - .../backup/postgresql-restore/Jenkinsfile | 40 - .../backup/prometheus-backup/Jenkinsfile | 38 - pipelines/bootstrap-swarm/Jenkinsfile | 38 - pipelines/bootstrap/Jenkinsfile | 38 - pipelines/bootstrap/Jenkinsfile.rotatekey | 38 - pipelines/cassandra-backup/Jenkinsfile.sample | 32 + .../cassandra-restore/Jenkinsfile.sample | 34 + pipelines/cassandra/Jenkinsfile.sample | 32 + pipelines/cassandra/installDeps.sh | 1 + pipelines/deploy/CEPlugins/Jenkinsfile | 60 - pipelines/deploy/CollectionEditor/Jenkinsfile | 70 - pipelines/deploy/ContentFramework/Jenkinsfile | 78 - .../deploy/ContentRendererPreview/Jenkinsfile | 64 - pipelines/deploy/GenericEditor/Jenkinsfile | 66 - pipelines/deploy/adminutils/Jenkinsfile | 25 - pipelines/deploy/am-onboard-apis/Jenkinsfile | 38 - .../deploy/am-onboard-consumers/Jenkinsfile | 38 - pipelines/deploy/api-manager/Jenkinsfile | 25 - .../application-elasticsearch/Jenkinsfile | 38 - pipelines/deploy/badger/Jenkinsfile | 26 - pipelines/deploy/cassandra-deploy/Jenkinsfile | 59 - pipelines/deploy/config-service/Jenkinsfile | 26 - pipelines/deploy/content/Jenkinsfile | 26 - pipelines/deploy/keycloak-realm/Jenkinsfile | 38 - pipelines/deploy/keycloak/Jenkinsfile | 60 - pipelines/deploy/learner/Jenkinsfile | 26 - .../deploy/logger-elasticsearch/Jenkinsfile | 38 - pipelines/deploy/logger/Jenkinsfile | 39 - pipelines/deploy/monitor/Core/Jenkinsfile | 38 - .../deploy/monitor/DataPipeline/Jenkinsfile | 38 - pipelines/deploy/monitor/Jenkinsfile | 38 - .../monitor/KnowledgePlatform/Jenkinsfile | 38 - pipelines/deploy/player/Jenkinsfile | 25 - pipelines/deploy/proxy/Jenkinsfile | 26 - .../Jenkinsfile | 38 - .../deploy/telemetry-logstash/Jenkinsfile | 38 - pipelines/deploy/telemetry/Jenkinsfile | 26 - pipelines/dockerTag.sh | 23 + .../Jenkinsfile.deploy-slave | 19 + .../documentation-jenkins-slave/deploy.sh | 11 + pipelines/es-backup/Jenkinsfile.sample | 20 + pipelines/es-backup/deploy.sh | 6 + pipelines/es-backup/installDeps.sh | 5 + pipelines/es-restore/Jenkinsfile.sample | 17 + pipelines/es-restore/deploy.sh | 6 + pipelines/es-restore/installDeps.sh | 5 + .../jenkins-backup-upload/Jenkinsfile.admin | 18 + pipelines/keycloak1/deploy.sh | 29 + pipelines/keycloak1/installDeps.sh | 5 + pipelines/keycloak1/metadata.json | 6 + pipelines/keycloak2/deploy.sh | 29 + pipelines/keycloak2/installDeps.sh | 5 + pipelines/keycloak2/metadata.json | 6 + pipelines/log-es-backup/Jenkinsfile.sample | 20 + pipelines/log-es-backup/deploy.sh | 6 + pipelines/log-es-backup/installDeps.sh | 5 + pipelines/log-es-restore/deploy.sh | 6 + pipelines/log-es-restore/installDeps.sh | 5 + .../logger-elasticsearch/Jenkinsfile.sample | 22 + pipelines/logger/deploy.sh | 7 + pipelines/logger/installDeps.sh | 5 + pipelines/mongodb-backup/Jenkinsfile.sample | 32 + pipelines/mongodb-backup/installDeps.sh | 1 + pipelines/mongodb/installDeps.sh | 1 + pipelines/monitor/Jenkinsfile.sample | 31 + pipelines/monitor/deploy.sh | 6 + pipelines/monitor/installDeps.sh | 4 + .../postgresql-backup/Jenkinsfile.sample | 24 + .../postgresql-data-update/Jenkinsfile.sample | 21 + .../postgresql-master/Jenkinsfile.sample | 21 + .../postgresql-restore/Jenkinsfile.sample | 37 + .../Jenkinsfile.sample | 22 + pipelines/postgresql-slave/Jenkinsfile.sample | 21 + pipelines/provision/cassandra/Jenkinsfile | 38 - pipelines/provision/jenkins-slave/Jenkinsfile | 39 - pipelines/provision/kafka/Jenkinsfile | 38 - pipelines/provision/keycloak/Jenkinsfile | 38 - pipelines/provision/log-es/Jenkinsfile | 38 - .../provision/postgres-db-update/Jenkinsfile | 38 - pipelines/provision/postgres/Jenkinsfile | 38 - pipelines/provision/registry/Jenkinsfile | 50 - pipelines/provision/secor/Jenkinsfile | 38 - pipelines/proxy/Jenkinsfile.sample | 25 + pipelines/proxy/deploy.sh | 23 + pipelines/proxy/metadata.json | 6 + pipelines/summary/Jenkinsfile | 5 - .../sunbird-actor-service/Jenkinsfile.sample | 34 + pipelines/sunbird-actor-service/deploy.sh | 29 + .../sunbird-actor-service/installDeps.sh | 5 + pipelines/sunbird-actor-service/metadata.json | 6 + .../sunbird-bootstrap/Jenkinsfile.db.sample | 25 + .../sunbird-bootstrap/Jenkinsfile.sample | 32 + pipelines/sunbird-bootstrap/installDeps.sh | 1 + .../Jenkinsfile.sample | 34 + pipelines/sunbird-content-service/deploy.sh | 29 + .../sunbird-content-service/installDeps.sh | 5 + .../sunbird-content-service/metadata.json | 6 + .../Jenkinsfile.sample | 33 + pipelines/sunbird-learner-service/deploy.sh | 29 + .../sunbird-learner-service/installDeps.sh | 5 + .../sunbird-learner-service/metadata.json | 6 + pipelines/sunbird-player/Jenkinsfile.sample | 34 + pipelines/sunbird-player/deploy.sh | 29 + pipelines/sunbird-player/installDeps.sh | 5 + pipelines/sunbird-player/metadata.json | 6 + .../Jenkinsfile.sample | 33 + pipelines/sunbird-telemetry-service/deploy.sh | 29 + .../sunbird-telemetry-service/installDeps.sh | 5 + .../sunbird-telemetry-service/metadata.json | 6 + .../Jenkinsfile.sample | 18 + pipelines/upload/artifacts/Jenkinsfile | 30 - pipelines/upload/docker/Jenkinsfile | 29 - pipelines/upload/plugins/Jenkinsfile | 31 - .../ansible/inventory/dev/Core/common.yml | 72 - private_repo/ansible/inventory/dev/Core/hosts | 126 - .../ansible/inventory/dev/Core/secrets.yml | 63 - .../inventory/dev/DataPipeline/common.yml | 40 - .../ansible/inventory/dev/DataPipeline/hosts | 145 - .../inventory/dev/DataPipeline/secrets.yml | 9 - .../dev/KnowledgePlatform/common.yml | 42 - .../inventory/dev/KnowledgePlatform/hosts | 106 - .../dev/KnowledgePlatform/secrets.yml | 6 - 541 files changed, 3969 insertions(+), 29125 deletions(-) create mode 100644 Jenkinsfile delete mode 100644 ansible/artifacts-download.yml delete mode 100644 ansible/artifacts/sunbird/email/html/email-test.ftl delete mode 100644 ansible/artifacts/sunbird/email/html/email-verification.ftl delete mode 100644 ansible/artifacts/sunbird/email/html/event-login_error.ftl delete mode 100644 ansible/artifacts/sunbird/email/html/event-remove_totp.ftl delete mode 100644 ansible/artifacts/sunbird/email/html/event-update_password.ftl delete mode 100644 ansible/artifacts/sunbird/email/html/event-update_totp.ftl delete mode 100644 ansible/artifacts/sunbird/email/html/executeActions.ftl delete mode 100644 ansible/artifacts/sunbird/email/html/identity-provider-link.ftl delete mode 100644 ansible/artifacts/sunbird/email/html/password-reset.ftl delete mode 100644 ansible/artifacts/sunbird/email/messages/messages_ca.properties delete mode 100644 ansible/artifacts/sunbird/email/messages/messages_de.properties delete mode 100644 ansible/artifacts/sunbird/email/messages/messages_en.properties delete mode 100644 ansible/artifacts/sunbird/email/messages/messages_es.properties delete mode 100644 ansible/artifacts/sunbird/email/messages/messages_fr.properties delete mode 100644 ansible/artifacts/sunbird/email/messages/messages_it.properties delete mode 100644 ansible/artifacts/sunbird/email/messages/messages_ja.properties delete mode 100644 ansible/artifacts/sunbird/email/messages/messages_lt.properties delete mode 100644 ansible/artifacts/sunbird/email/messages/messages_no.properties delete mode 100644 ansible/artifacts/sunbird/email/messages/messages_pt_BR.properties delete mode 100644 ansible/artifacts/sunbird/email/messages/messages_ru.properties delete mode 100644 ansible/artifacts/sunbird/email/messages/messages_sv.properties delete mode 100644 ansible/artifacts/sunbird/email/text/email-test.ftl delete mode 100644 ansible/artifacts/sunbird/email/text/email-verification.ftl delete mode 100644 ansible/artifacts/sunbird/email/text/event-login_error.ftl delete mode 100644 ansible/artifacts/sunbird/email/text/event-remove_totp.ftl delete mode 100644 ansible/artifacts/sunbird/email/text/event-update_password.ftl delete mode 100644 ansible/artifacts/sunbird/email/text/event-update_totp.ftl delete mode 100644 ansible/artifacts/sunbird/email/text/executeActions.ftl delete mode 100644 ansible/artifacts/sunbird/email/text/identity-provider-link.ftl delete mode 100644 ansible/artifacts/sunbird/email/text/password-reset.ftl delete mode 100644 ansible/artifacts/sunbird/email/theme.properties delete mode 100644 ansible/artifacts/sunbird/login/login-page-expired.ftl delete mode 100644 ansible/artifacts/sunbird/login/login-reset-password.ftl delete mode 100644 ansible/artifacts/sunbird/login/login-update-password.ftl delete mode 100644 ansible/artifacts/sunbird/login/login.ftl delete mode 100644 ansible/artifacts/sunbird/login/resources/css/fonts/notosans/cyrillic-ext.woff2 delete mode 100644 ansible/artifacts/sunbird/login/resources/css/fonts/notosans/cyrillic.woff2 delete mode 100644 ansible/artifacts/sunbird/login/resources/css/fonts/notosans/devanagari.woff2 delete mode 100644 ansible/artifacts/sunbird/login/resources/css/fonts/notosans/greek-ext.woff2 delete mode 100644 ansible/artifacts/sunbird/login/resources/css/fonts/notosans/greek.woff2 delete mode 100644 ansible/artifacts/sunbird/login/resources/css/fonts/notosans/latin-ext.woff2 delete mode 100644 ansible/artifacts/sunbird/login/resources/css/fonts/notosans/latin.woff2 delete mode 100644 ansible/artifacts/sunbird/login/resources/css/fonts/notosans/notosans.css delete mode 100644 ansible/artifacts/sunbird/login/resources/css/fonts/notosans/vietnamese.woff2 delete mode 100644 ansible/artifacts/sunbird/login/resources/css/themes/default/assets/fonts/icons.eot delete mode 100644 ansible/artifacts/sunbird/login/resources/css/themes/default/assets/fonts/icons.svg delete mode 100644 ansible/artifacts/sunbird/login/resources/css/themes/default/assets/fonts/icons.ttf delete mode 100644 ansible/artifacts/sunbird/login/resources/css/themes/default/assets/fonts/icons.woff delete mode 100644 ansible/artifacts/sunbird/login/resources/css/themes/default/assets/fonts/icons.woff2 delete mode 100644 ansible/artifacts/sunbird/login/resources/img/bg.svg delete mode 100644 ansible/artifacts/sunbird/login/resources/img/diksha_gov_logo.svg delete mode 100644 ansible/artifacts/sunbird/login/resources/img/favicon.ico delete mode 100644 ansible/artifacts/sunbird/login/resources/img/google.png delete mode 100644 ansible/artifacts/sunbird/login/resources/js/login.js create mode 100644 ansible/artifacts/sunbird/login/resources/login-reset-password.ftl create mode 100644 ansible/artifacts/sunbird/login/resources/login-update-password.ftl create mode 100644 ansible/artifacts/sunbird/login/resources/login.ftl rename ansible/artifacts/sunbird/login/{ => resources}/messages/messages_en.properties (86%) rename ansible/artifacts/sunbird/login/{ => resources}/theme.properties (84%) delete mode 100644 ansible/artifacts/sunbird/login/template.ftl delete mode 100644 ansible/docker_image_push.yml create mode 100644 ansible/inventories/sample/group_vars/postgresql-master create mode 100644 ansible/inventories/sample/hosts delete mode 100644 ansible/inventory/env/common.yml delete mode 100644 ansible/inventory/env/group_vars/all.yml delete mode 120000 ansible/inventory/env/group_vars/env.yml rename ansible/{sunbird-auth-provision.yml => jmeter-deploy.yml} (57%) create mode 100644 ansible/jmeter-provision.yml rename ansible/{sunbird-auth-deploy.yml => mongobackup.yml} (60%) delete mode 100644 ansible/roles/artifacts-download-azure/meta/main.yml delete mode 100644 ansible/roles/artifacts-download-azure/tasks/main.yml delete mode 100644 ansible/roles/cassandra-backup/defaults/main.yml delete mode 100644 ansible/roles/changekey/defaults/main.yml delete mode 100644 ansible/roles/changekey/tasks/main.yml delete mode 100644 ansible/roles/jenkins/meta/main.yml mode change 100755 => 100644 ansible/roles/keycloak/tasks/deploy.yml delete mode 100644 ansible/roles/prometheus_config/defaults/main.yml delete mode 100644 ansible/roles/prometheus_config/tasks/main.yml delete mode 100644 ansible/roles/stack-badger/tasks/.user.yml.swp create mode 100644 ansible/roles/stack-sunbird/templates/sunbird_actor-service.env delete mode 100644 ansible/roles/sunbird-auth-deploy/defaults/main.yml delete mode 100644 ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/PKG-INFO delete mode 100644 ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/README.md delete mode 100644 ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak-realm.json delete mode 100644 ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/__init__.py delete mode 100644 ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/authorization/__init__.py delete mode 100644 ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/authorization/permission.py delete mode 100644 ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/authorization/policy.py delete mode 100644 ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/authorization/role.py delete mode 100644 ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/connection.py delete mode 100644 ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/exceptions.py delete mode 100644 ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/keycloak_admin.py delete mode 100644 ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/keycloak_main.py delete mode 100644 ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/keycloak_openid.py delete mode 100644 ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/python_keycloak.egg-info/PKG-INFO delete mode 100644 ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/python_keycloak.egg-info/SOURCES.txt delete mode 100644 ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/python_keycloak.egg-info/dependency_links.txt delete mode 100644 ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/python_keycloak.egg-info/requires.txt delete mode 100644 ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/python_keycloak.egg-info/top_level.txt delete mode 100644 ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/tests/__init__.py delete mode 100644 ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/tests/test_connection.py delete mode 100644 ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/urls_patterns.py delete mode 100644 ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/python_keycloak.egg-info/PKG-INFO delete mode 100644 ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/python_keycloak.egg-info/SOURCES.txt delete mode 100644 ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/python_keycloak.egg-info/dependency_links.txt delete mode 100644 ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/python_keycloak.egg-info/requires.txt delete mode 100644 ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/python_keycloak.egg-info/top_level.txt delete mode 100644 ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/roles.json delete mode 100644 ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/setup.cfg delete mode 100644 ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/setup.py delete mode 100644 ansible/roles/sunbird-auth-deploy/tasks/bootstrap.yml delete mode 100644 ansible/roles/sunbird-auth-deploy/tasks/deploy.yml delete mode 100644 ansible/roles/sunbird-auth-deploy/tasks/main.yml delete mode 100644 ansible/roles/sunbird-auth-deploy/templates/Msg91Creds.json.j2 delete mode 100644 ansible/roles/sunbird-auth-deploy/templates/keycloak-bootstrap.conf.j2 delete mode 100644 ansible/roles/sunbird-auth-deploy/templates/keycloak-realm.j2 delete mode 100644 ansible/roles/sunbird-auth-deploy/templates/module.xml.j2 delete mode 100644 ansible/roles/sunbird-auth-deploy/templates/standalone-ha.xml delete mode 100644 ansible/roles/sunbird-auth-deploy/templates/standalone.xml delete mode 100644 ansible/roles/sunbird-auth-provision/defaults/main.yml delete mode 100644 ansible/roles/sunbird-auth-provision/tasks/install-keycloak.yml delete mode 100644 ansible/roles/sunbird-auth-provision/tasks/main.yml delete mode 100644 ansible/roles/sunbird-auth-provision/tasks/prerequisite.yml delete mode 100644 ansible/roles/sunbird-auth-provision/templates/keycloak-service.j2 create mode 100644 ansible/roles/sunbird-system-init-upgrade/tasks/main.yml create mode 100644 ansible/roles/sunbird-system-init-upgrade/templates/system_init_upgrade_commands.j2 create mode 100644 ansible/roles/sunbird-system-init/tasks/main.yml create mode 100644 ansible/roles/sunbird-system-init/templates/system_init_commands.j2 delete mode 100644 ansible/rotatekeys.yml create mode 100644 cloud/azure/arm/swarm/acs-engine/common/azuredeploy.json create mode 100644 cloud/azure/arm/swarm/acs-engine/production.sample/README.md create mode 100644 cloud/azure/arm/swarm/acs-engine/production.sample/azuredeploy.parameters.json.sample create mode 100644 cloud/azure/arm/swarm/acs-engine/production.sample/env.sh create mode 100644 cloud/azure/arm/vm/azuredeploy.json create mode 100644 cloud/azure/arm/vm/azuredeploy.parameters.json.sample create mode 100644 cloud/openvpn/openvpn.sh delete mode 100755 deploy/jenkins/butler delete mode 100644 deploy/jenkins/envOrder.txt.sample delete mode 100755 deploy/jenkins/jenkins-jobs-setup.sh delete mode 100755 deploy/jenkins/jenkins-plugins-setup.sh delete mode 100755 deploy/jenkins/jenkins-server-setup.sh delete mode 100644 deploy/jenkins/jobs/ArtifactUpload/config.xml delete mode 100644 deploy/jenkins/jobs/ArtifactUpload/jobs/dev/config.xml delete mode 100644 deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/config.xml delete mode 100644 deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/APIManager/config.xml delete mode 100644 deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/APIManagerEcho/config.xml delete mode 100644 deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/AdminUtils/config.xml delete mode 100644 deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Badger/config.xml delete mode 100644 deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Cassandra/config.xml delete mode 100644 deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Config/config.xml delete mode 100644 deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Content/config.xml delete mode 100644 deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Keycloak/config.xml delete mode 100644 deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Learner/config.xml delete mode 100644 deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Player/config.xml delete mode 100644 deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Proxy/config.xml delete mode 100644 deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Telemetry/config.xml delete mode 100644 deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/DataPipeline/config.xml delete mode 100644 deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/DataPipeline/jobs/Analytics/config.xml delete mode 100644 deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/DataPipeline/jobs/DataPipeline/config.xml delete mode 100644 deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/DataPipeline/jobs/Secor/config.xml delete mode 100644 deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/KnowledgePlatform/config.xml delete mode 100644 deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/KnowledgePlatform/jobs/KnowledgePlatform/config.xml delete mode 100644 deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4j/config.xml delete mode 100644 deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/KnowledgePlatform/jobs/SyncTool/config.xml delete mode 100644 deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/KnowledgePlatform/jobs/Yarn/config.xml delete mode 100644 deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Plugins/config.xml delete mode 100644 deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Plugins/jobs/CEPlugins/config.xml delete mode 100644 deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Plugins/jobs/CollectionEditor/config.xml delete mode 100644 deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Plugins/jobs/ContentFramework/config.xml delete mode 100644 deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Plugins/jobs/ContentRendererPreview/config.xml delete mode 100644 deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Plugins/jobs/GenericEditor/config.xml delete mode 100644 deploy/jenkins/jobs/Build/config.xml delete mode 100644 deploy/jenkins/jobs/Build/jobs/Core/config.xml delete mode 100644 deploy/jenkins/jobs/Build/jobs/Core/jobs/APIManager/config.xml delete mode 100644 deploy/jenkins/jobs/Build/jobs/Core/jobs/APIManagerEcho/config.xml delete mode 100644 deploy/jenkins/jobs/Build/jobs/Core/jobs/AdminUtils/config.xml delete mode 100644 deploy/jenkins/jobs/Build/jobs/Core/jobs/Badger/config.xml delete mode 100644 deploy/jenkins/jobs/Build/jobs/Core/jobs/Cassandra/config.xml delete mode 100644 deploy/jenkins/jobs/Build/jobs/Core/jobs/CloudStorageSDK/config.xml delete mode 100644 deploy/jenkins/jobs/Build/jobs/Core/jobs/Config/config.xml delete mode 100644 deploy/jenkins/jobs/Build/jobs/Core/jobs/Content/config.xml delete mode 100644 deploy/jenkins/jobs/Build/jobs/Core/jobs/Keycloak/config.xml delete mode 100644 deploy/jenkins/jobs/Build/jobs/Core/jobs/Learner/config.xml delete mode 100644 deploy/jenkins/jobs/Build/jobs/Core/jobs/Player/config.xml delete mode 100644 deploy/jenkins/jobs/Build/jobs/Core/jobs/Proxy/config.xml delete mode 100644 deploy/jenkins/jobs/Build/jobs/Core/jobs/Telemetry/config.xml delete mode 100644 deploy/jenkins/jobs/Build/jobs/DataPipeline/config.xml delete mode 100644 deploy/jenkins/jobs/Build/jobs/DataPipeline/jobs/Analytics/config.xml delete mode 100644 deploy/jenkins/jobs/Build/jobs/DataPipeline/jobs/DataPipeline/config.xml delete mode 100644 deploy/jenkins/jobs/Build/jobs/DataPipeline/jobs/Secor/config.xml delete mode 100644 deploy/jenkins/jobs/Build/jobs/KnowledgePlatform/config.xml delete mode 100644 deploy/jenkins/jobs/Build/jobs/KnowledgePlatform/jobs/KnowledgePlatform/config.xml delete mode 100644 deploy/jenkins/jobs/Build/jobs/KnowledgePlatform/jobs/Neo4j/config.xml delete mode 100644 deploy/jenkins/jobs/Build/jobs/KnowledgePlatform/jobs/SyncTool/config.xml delete mode 100644 deploy/jenkins/jobs/Build/jobs/KnowledgePlatform/jobs/Yarn/config.xml delete mode 100644 deploy/jenkins/jobs/Build/jobs/Plugins/config.xml delete mode 100644 deploy/jenkins/jobs/Build/jobs/Plugins/jobs/CEPlugins/config.xml delete mode 100644 deploy/jenkins/jobs/Build/jobs/Plugins/jobs/CollectionEditor/config.xml delete mode 100644 deploy/jenkins/jobs/Build/jobs/Plugins/jobs/ContentFramework/config.xml delete mode 100644 deploy/jenkins/jobs/Build/jobs/Plugins/jobs/ContentRendererPreview/config.xml delete mode 100644 deploy/jenkins/jobs/Build/jobs/Plugins/jobs/GenericEditor/config.xml delete mode 100644 deploy/jenkins/jobs/Deploy/config.xml delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/config.xml delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/config.xml delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/APIManager/config.xml delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/AdminUtils/config.xml delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/ApplicationElasticSearch/config.xml delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Badger/config.xml delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Bootstrap/config.xml delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Cassandra/config.xml delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Config/config.xml delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Content/config.xml delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/FuntionalTestCases/config.xml delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Keycloak/config.xml delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/KeycloakRealm/config.xml delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Learner/config.xml delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/LoggerElasticSearch/config.xml delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Logging/config.xml delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Monitoring/config.xml delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/OnboardAPIs/config.xml delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/OnboardConsumers/config.xml delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Player/config.xml delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Proxy/config.xml delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Telemetry/config.xml delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/TelemetryLogstash/config.xml delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/TelemetryLogstashDataPipeline/config.xml delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/config.xml delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsAPI/config.xml delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsFetchLogs/config.xml delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsGeoLocationDBSetup/config.xml delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsPopulatePSQLConsumerChannelMapping/config.xml delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsReplayJobs/config.xml delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsStartJobManager/config.xml delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsSubmitJobs/config.xml delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/CassandraDbUpdate/config.xml delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/DataProducts/config.xml delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/KafkaIndexer/config.xml delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/KafkaSetup/config.xml delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/Monitoring/config.xml delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/SamzaTelemetrySchemas/config.xml delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/Secor/config.xml delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/Yarn/config.xml delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/config.xml delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/CassandraDbUpdate/config.xml delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/ContentTool/config.xml delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/FileSyncTool/config.xml delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/KafkaSetup/config.xml delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Learning/config.xml delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Monitoring/config.xml delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4j/config.xml delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4jDefinitionUpdate/config.xml delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4jElasticSearchSyncTool/config.xml delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Search/config.xml delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/StartNeo4jCluster/config.xml delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/StopNeo4jCluster/config.xml delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/ValidateLearning/config.xml delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Yarn/config.xml delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Plugins/config.xml delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Plugins/jobs/CEPlugins/config.xml delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Plugins/jobs/CollectionEditor/config.xml delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Plugins/jobs/ContentFramework/config.xml delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Plugins/jobs/ContentRendererPreview/config.xml delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Plugins/jobs/GenericEditor/config.xml delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Summary/config.xml delete mode 100644 deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Summary/jobs/DeployedVersions/config.xml delete mode 100644 deploy/jenkins/jobs/OpsAdministration/config.xml delete mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/dev/config.xml delete mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/config.xml delete mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/ApplicationElasticsearchBackup/config.xml delete mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/ApplicationElasticsearchRestore/config.xml delete mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/Bootstrap/config.xml delete mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/CassandraBackup/config.xml delete mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/KeyRotation/config.xml delete mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/LoggerElasticSearchBackup/config.xml delete mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/LoggerElasticSearchRestore/config.xml delete mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/PostgresqlBackup/config.xml delete mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/PostgresqlRestore/config.xml delete mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/PrometheusBackup/config.xml delete mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/SwarmBootstrap/config.xml delete mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/config.xml delete mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/AnalyticsAPILogs/config.xml delete mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/Bootstrap/config.xml delete mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/CassandraBackup/config.xml delete mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/CassandraRestore/config.xml delete mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/ElasticsearchBackup/config.xml delete mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/ElasticsearchRestore/config.xml delete mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/InfluxDBBackup/config.xml delete mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/PostgresqlBackup/config.xml delete mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/PostgresqlRestore/config.xml delete mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/KnowledgePlatform/config.xml delete mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/KnowledgePlatform/jobs/Bootstrap/config.xml delete mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/KnowledgePlatform/jobs/CassandraBackup/config.xml delete mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/KnowledgePlatform/jobs/CassandraRestore/config.xml delete mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/KnowledgePlatform/jobs/ElasticsearchBackup/config.xml delete mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/KnowledgePlatform/jobs/ElasticsearchRestore/config.xml delete mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4jBackup/config.xml delete mode 100644 deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4jRestore/config.xml delete mode 100644 deploy/jenkins/jobs/Provision/config.xml delete mode 100644 deploy/jenkins/jobs/Provision/jobs/dev/config.xml delete mode 100644 deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/config.xml delete mode 100644 deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Cassandra/config.xml delete mode 100644 deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/JenkinsSlave/config.xml delete mode 100644 deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Kafka/config.xml delete mode 100644 deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Keycloak/config.xml delete mode 100644 deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/LogElasticSearch/config.xml delete mode 100644 deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Postgres/config.xml delete mode 100644 deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/PostgresDbUpdate/config.xml delete mode 100644 deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Registry/config.xml delete mode 100644 deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Secor/config.xml delete mode 100644 deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/config.xml delete mode 100644 deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/AnalyticsAPI/config.xml delete mode 100644 deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/AnalyticsSecor/config.xml delete mode 100644 deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/AnalyticsSpark/config.xml delete mode 100644 deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/Cassandra/config.xml delete mode 100644 deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/InfluxDB/config.xml delete mode 100644 deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/Kafka/config.xml delete mode 100644 deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/Kibana/config.xml delete mode 100644 deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/Postgres/config.xml delete mode 100644 deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/TelemetrySearch/config.xml delete mode 100644 deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/Yarn/config.xml delete mode 100644 deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/Zookeeper/config.xml delete mode 100644 deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/config.xml delete mode 100644 deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Cassandra/config.xml delete mode 100644 deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/CompositeSearch/config.xml delete mode 100644 deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Kafka/config.xml delete mode 100644 deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Learning/config.xml delete mode 100644 deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4j/config.xml delete mode 100644 deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Redis/config.xml delete mode 100644 deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Search/config.xml delete mode 100644 deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Yarn/config.xml delete mode 100644 deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Zookeeper/config.xml delete mode 100644 deploy/jenkins/plugins.txt delete mode 100644 deploy/utilities/kill_samza_app.sh delete mode 100644 images/openbadger/Jenkinsfile delete mode 100644 images/proxy/Jenkinsfile create mode 100644 pipelines/adminutils/Jenkinsfile.sample create mode 100755 pipelines/adminutils/deploy.sh create mode 100755 pipelines/adminutils/installDeps.sh create mode 100644 pipelines/adminutils/metadata.json create mode 100644 pipelines/am-onboard-apis/Jenkinsfile.sample create mode 100644 pipelines/am-onboard-consumers/Jenkinsfile.sample create mode 100644 pipelines/api-manager/Jenkinsfile.sample create mode 100755 pipelines/api-manager/deploy.sh create mode 100755 pipelines/api-manager/installDeps.sh create mode 100644 pipelines/api-manager/metadata.json create mode 100644 pipelines/application-elasticsearch/Jenkinsfile.sample delete mode 100644 pipelines/backup/cassandra-backup/Jenkinsfile delete mode 100644 pipelines/backup/es-backup/Jenkinsfile delete mode 100644 pipelines/backup/es-restore/Jenkinsfile delete mode 100644 pipelines/backup/logger-es-backup/Jenkinsfile delete mode 100644 pipelines/backup/logger-es-restore/Jenkinsfile delete mode 100644 pipelines/backup/postgresql-backup/Jenkinsfile delete mode 100644 pipelines/backup/postgresql-restore/Jenkinsfile delete mode 100644 pipelines/backup/prometheus-backup/Jenkinsfile delete mode 100644 pipelines/bootstrap-swarm/Jenkinsfile delete mode 100644 pipelines/bootstrap/Jenkinsfile delete mode 100644 pipelines/bootstrap/Jenkinsfile.rotatekey create mode 100644 pipelines/cassandra-backup/Jenkinsfile.sample create mode 100644 pipelines/cassandra-restore/Jenkinsfile.sample create mode 100644 pipelines/cassandra/Jenkinsfile.sample create mode 100644 pipelines/cassandra/installDeps.sh delete mode 100644 pipelines/deploy/CEPlugins/Jenkinsfile delete mode 100644 pipelines/deploy/CollectionEditor/Jenkinsfile delete mode 100644 pipelines/deploy/ContentFramework/Jenkinsfile delete mode 100644 pipelines/deploy/ContentRendererPreview/Jenkinsfile delete mode 100644 pipelines/deploy/GenericEditor/Jenkinsfile delete mode 100644 pipelines/deploy/adminutils/Jenkinsfile delete mode 100644 pipelines/deploy/am-onboard-apis/Jenkinsfile delete mode 100644 pipelines/deploy/am-onboard-consumers/Jenkinsfile delete mode 100644 pipelines/deploy/api-manager/Jenkinsfile delete mode 100644 pipelines/deploy/application-elasticsearch/Jenkinsfile delete mode 100644 pipelines/deploy/badger/Jenkinsfile delete mode 100644 pipelines/deploy/cassandra-deploy/Jenkinsfile delete mode 100644 pipelines/deploy/config-service/Jenkinsfile delete mode 100644 pipelines/deploy/content/Jenkinsfile delete mode 100644 pipelines/deploy/keycloak-realm/Jenkinsfile delete mode 100644 pipelines/deploy/keycloak/Jenkinsfile delete mode 100644 pipelines/deploy/learner/Jenkinsfile delete mode 100644 pipelines/deploy/logger-elasticsearch/Jenkinsfile delete mode 100644 pipelines/deploy/logger/Jenkinsfile delete mode 100644 pipelines/deploy/monitor/Core/Jenkinsfile delete mode 100644 pipelines/deploy/monitor/DataPipeline/Jenkinsfile delete mode 100644 pipelines/deploy/monitor/Jenkinsfile delete mode 100644 pipelines/deploy/monitor/KnowledgePlatform/Jenkinsfile delete mode 100644 pipelines/deploy/player/Jenkinsfile delete mode 100644 pipelines/deploy/proxy/Jenkinsfile delete mode 100644 pipelines/deploy/telemetry-logstash-datapipeline/Jenkinsfile delete mode 100644 pipelines/deploy/telemetry-logstash/Jenkinsfile delete mode 100644 pipelines/deploy/telemetry/Jenkinsfile create mode 100755 pipelines/dockerTag.sh create mode 100644 pipelines/documentation-jenkins-slave/Jenkinsfile.deploy-slave create mode 100755 pipelines/documentation-jenkins-slave/deploy.sh create mode 100644 pipelines/es-backup/Jenkinsfile.sample create mode 100755 pipelines/es-backup/deploy.sh create mode 100755 pipelines/es-backup/installDeps.sh create mode 100644 pipelines/es-restore/Jenkinsfile.sample create mode 100755 pipelines/es-restore/deploy.sh create mode 100755 pipelines/es-restore/installDeps.sh create mode 100644 pipelines/jenkins-backup-upload/Jenkinsfile.admin create mode 100755 pipelines/keycloak1/deploy.sh create mode 100755 pipelines/keycloak1/installDeps.sh create mode 100644 pipelines/keycloak1/metadata.json create mode 100755 pipelines/keycloak2/deploy.sh create mode 100755 pipelines/keycloak2/installDeps.sh create mode 100644 pipelines/keycloak2/metadata.json create mode 100644 pipelines/log-es-backup/Jenkinsfile.sample create mode 100755 pipelines/log-es-backup/deploy.sh create mode 100755 pipelines/log-es-backup/installDeps.sh create mode 100755 pipelines/log-es-restore/deploy.sh create mode 100755 pipelines/log-es-restore/installDeps.sh create mode 100644 pipelines/logger-elasticsearch/Jenkinsfile.sample create mode 100755 pipelines/logger/deploy.sh create mode 100755 pipelines/logger/installDeps.sh create mode 100644 pipelines/mongodb-backup/Jenkinsfile.sample create mode 100644 pipelines/mongodb-backup/installDeps.sh create mode 100644 pipelines/mongodb/installDeps.sh create mode 100644 pipelines/monitor/Jenkinsfile.sample create mode 100755 pipelines/monitor/deploy.sh create mode 100755 pipelines/monitor/installDeps.sh create mode 100644 pipelines/postgresql-backup/Jenkinsfile.sample create mode 100644 pipelines/postgresql-data-update/Jenkinsfile.sample create mode 100644 pipelines/postgresql-master/Jenkinsfile.sample create mode 100644 pipelines/postgresql-restore/Jenkinsfile.sample create mode 100644 pipelines/postgresql-slave-to-master-promotion/Jenkinsfile.sample create mode 100644 pipelines/postgresql-slave/Jenkinsfile.sample delete mode 100644 pipelines/provision/cassandra/Jenkinsfile delete mode 100644 pipelines/provision/jenkins-slave/Jenkinsfile delete mode 100644 pipelines/provision/kafka/Jenkinsfile delete mode 100644 pipelines/provision/keycloak/Jenkinsfile delete mode 100644 pipelines/provision/log-es/Jenkinsfile delete mode 100644 pipelines/provision/postgres-db-update/Jenkinsfile delete mode 100644 pipelines/provision/postgres/Jenkinsfile delete mode 100644 pipelines/provision/registry/Jenkinsfile delete mode 100644 pipelines/provision/secor/Jenkinsfile create mode 100644 pipelines/proxy/Jenkinsfile.sample create mode 100755 pipelines/proxy/deploy.sh create mode 100644 pipelines/proxy/metadata.json delete mode 100644 pipelines/summary/Jenkinsfile create mode 100644 pipelines/sunbird-actor-service/Jenkinsfile.sample create mode 100755 pipelines/sunbird-actor-service/deploy.sh create mode 100755 pipelines/sunbird-actor-service/installDeps.sh create mode 100644 pipelines/sunbird-actor-service/metadata.json create mode 100644 pipelines/sunbird-bootstrap/Jenkinsfile.db.sample create mode 100644 pipelines/sunbird-bootstrap/Jenkinsfile.sample create mode 100644 pipelines/sunbird-bootstrap/installDeps.sh create mode 100644 pipelines/sunbird-content-service/Jenkinsfile.sample create mode 100755 pipelines/sunbird-content-service/deploy.sh create mode 100755 pipelines/sunbird-content-service/installDeps.sh create mode 100644 pipelines/sunbird-content-service/metadata.json create mode 100644 pipelines/sunbird-learner-service/Jenkinsfile.sample create mode 100755 pipelines/sunbird-learner-service/deploy.sh create mode 100755 pipelines/sunbird-learner-service/installDeps.sh create mode 100644 pipelines/sunbird-learner-service/metadata.json create mode 100644 pipelines/sunbird-player/Jenkinsfile.sample create mode 100755 pipelines/sunbird-player/deploy.sh create mode 100755 pipelines/sunbird-player/installDeps.sh create mode 100644 pipelines/sunbird-player/metadata.json create mode 100644 pipelines/sunbird-telemetry-service/Jenkinsfile.sample create mode 100755 pipelines/sunbird-telemetry-service/deploy.sh create mode 100755 pipelines/sunbird-telemetry-service/installDeps.sh create mode 100644 pipelines/sunbird-telemetry-service/metadata.json create mode 100644 pipelines/swarm-agent-docker-prune/Jenkinsfile.sample delete mode 100644 pipelines/upload/artifacts/Jenkinsfile delete mode 100644 pipelines/upload/docker/Jenkinsfile delete mode 100644 pipelines/upload/plugins/Jenkinsfile delete mode 100644 private_repo/ansible/inventory/dev/Core/common.yml delete mode 100644 private_repo/ansible/inventory/dev/Core/hosts delete mode 100644 private_repo/ansible/inventory/dev/Core/secrets.yml delete mode 100644 private_repo/ansible/inventory/dev/DataPipeline/common.yml delete mode 100644 private_repo/ansible/inventory/dev/DataPipeline/hosts delete mode 100644 private_repo/ansible/inventory/dev/DataPipeline/secrets.yml delete mode 100644 private_repo/ansible/inventory/dev/KnowledgePlatform/common.yml delete mode 100644 private_repo/ansible/inventory/dev/KnowledgePlatform/hosts delete mode 100644 private_repo/ansible/inventory/dev/KnowledgePlatform/secrets.yml diff --git a/.circleci/config.yml b/.circleci/config.yml index cbba181959..85e0adb751 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -29,7 +29,7 @@ workflows: nightly: triggers: - schedule: -# cron: "0 17 1,5,9,13,17,21,25,29 * *" +# cron: "0 17 1,17 * *" filters: branches: only: diff --git a/Jenkinsfile b/Jenkinsfile new file mode 100644 index 0000000000..e022376380 --- /dev/null +++ b/Jenkinsfile @@ -0,0 +1,26 @@ +pipeline { + agent { + label 'build-slave' + } + triggers { + pollSCM('H/5 * * * *') + } + stages { + stage('Pre-Build'){ + steps { + sh('chmod a+x ansible/installDeps.sh') + sh('./ansible/installDeps.sh') + } + } + stage('Build') { + steps { + sh './test.sh' + } + } + } + post { + failure { + slackSend channel: '#devops-team', color: 'danger', message: "Build Failed - ${env.JOB_NAME} ${env.BUILD_NUMBER} (<${env.BUILD_URL}|Open>)" + } + } +} \ No newline at end of file diff --git a/ansible/api-manager.yml b/ansible/api-manager.yml index 8413d24952..e71115e2ad 100644 --- a/ansible/api-manager.yml +++ b/ansible/api-manager.yml @@ -1,7 +1,6 @@ --- - name: Kong API - become: yes - hosts: "{{groups['swarm-manager-1'][0]}}" + hosts: kong-api roles: - {role: kong-api, tags: ['kong-api']} - - {role: kong-consumer, tags: ['kong-consumer']} + - {role: kong-consumer, tags: ['kong-consumer']} \ No newline at end of file diff --git a/ansible/artifacts-download.yml b/ansible/artifacts-download.yml deleted file mode 100644 index 93c4af4539..0000000000 --- a/ansible/artifacts-download.yml +++ /dev/null @@ -1,10 +0,0 @@ ---- -- hosts: local - become: yes - vars_files: - - "{{inventory_dir}}/secrets.yml" - environment: - AZURE_STORAGE_ACCOUNT: "{{ azure_account_name }}" - AZURE_STORAGE_KEY: "{{ azure_account_key }}" - roles: - - artifacts-download-azure diff --git a/ansible/artifacts-upload.yml b/ansible/artifacts-upload.yml index c09e66dd2c..6eb883c1e5 100644 --- a/ansible/artifacts-upload.yml +++ b/ansible/artifacts-upload.yml @@ -1,10 +1,6 @@ --- - hosts: localhost - become: yes vars_files: - - "{{inventory_dir}}/secrets.yml" - environment: - AZURE_STORAGE_ACCOUNT: "{{ azure_account_name }}" - AZURE_STORAGE_KEY: "{{ azure_account_key }}" + - ['{{inventory_dir}}/secrets.yml', 'secrets/{{env}}.yml'] roles: - artifacts-upload-azure diff --git a/ansible/artifacts/sunbird/email/html/email-test.ftl b/ansible/artifacts/sunbird/email/html/email-test.ftl deleted file mode 100644 index 604415d22a..0000000000 --- a/ansible/artifacts/sunbird/email/html/email-test.ftl +++ /dev/null @@ -1,5 +0,0 @@ - - -${msg("emailTestBodyHtml",realmName)} - - diff --git a/ansible/artifacts/sunbird/email/html/email-verification.ftl b/ansible/artifacts/sunbird/email/html/email-verification.ftl deleted file mode 100644 index eb7682a272..0000000000 --- a/ansible/artifacts/sunbird/email/html/email-verification.ftl +++ /dev/null @@ -1,5 +0,0 @@ - - -${msg("emailVerificationBodyHtml",link, linkExpiration, realmName)} - - diff --git a/ansible/artifacts/sunbird/email/html/event-login_error.ftl b/ansible/artifacts/sunbird/email/html/event-login_error.ftl deleted file mode 100644 index d31410307c..0000000000 --- a/ansible/artifacts/sunbird/email/html/event-login_error.ftl +++ /dev/null @@ -1,5 +0,0 @@ - - -${msg("eventLoginErrorBodyHtml",event.date,event.ipAddress)} - - diff --git a/ansible/artifacts/sunbird/email/html/event-remove_totp.ftl b/ansible/artifacts/sunbird/email/html/event-remove_totp.ftl deleted file mode 100644 index 91699ea349..0000000000 --- a/ansible/artifacts/sunbird/email/html/event-remove_totp.ftl +++ /dev/null @@ -1,5 +0,0 @@ - - -${msg("eventRemoveTotpBodyHtml",event.date, event.ipAddress)} - - diff --git a/ansible/artifacts/sunbird/email/html/event-update_password.ftl b/ansible/artifacts/sunbird/email/html/event-update_password.ftl deleted file mode 100644 index 8a6da60a50..0000000000 --- a/ansible/artifacts/sunbird/email/html/event-update_password.ftl +++ /dev/null @@ -1,5 +0,0 @@ - - -${msg("eventUpdatePasswordBodyHtml",event.date, event.ipAddress)} - - diff --git a/ansible/artifacts/sunbird/email/html/event-update_totp.ftl b/ansible/artifacts/sunbird/email/html/event-update_totp.ftl deleted file mode 100644 index c0190c7278..0000000000 --- a/ansible/artifacts/sunbird/email/html/event-update_totp.ftl +++ /dev/null @@ -1,5 +0,0 @@ - - -${msg("eventUpdateTotpBodyHtml",event.date, event.ipAddress)} - - diff --git a/ansible/artifacts/sunbird/email/html/executeActions.ftl b/ansible/artifacts/sunbird/email/html/executeActions.ftl deleted file mode 100644 index f75e10fa2e..0000000000 --- a/ansible/artifacts/sunbird/email/html/executeActions.ftl +++ /dev/null @@ -1,5 +0,0 @@ - - -${msg("executeActionsBodyHtml",link, linkExpiration, realmName)} - - diff --git a/ansible/artifacts/sunbird/email/html/identity-provider-link.ftl b/ansible/artifacts/sunbird/email/html/identity-provider-link.ftl deleted file mode 100644 index 9c2db808b2..0000000000 --- a/ansible/artifacts/sunbird/email/html/identity-provider-link.ftl +++ /dev/null @@ -1,5 +0,0 @@ - - -${msg("identityProviderLinkBodyHtml", identityProviderAlias, realmName, identityProviderContext.username, link, linkExpiration)} - - \ No newline at end of file diff --git a/ansible/artifacts/sunbird/email/html/password-reset.ftl b/ansible/artifacts/sunbird/email/html/password-reset.ftl deleted file mode 100644 index 88088d3d16..0000000000 --- a/ansible/artifacts/sunbird/email/html/password-reset.ftl +++ /dev/null @@ -1,5 +0,0 @@ - - -${msg("passwordResetBodyHtml",link,(linkExpiration/60)?string["0"],realmName)} - - diff --git a/ansible/artifacts/sunbird/email/messages/messages_ca.properties b/ansible/artifacts/sunbird/email/messages/messages_ca.properties deleted file mode 100644 index 7f8504ae08..0000000000 --- a/ansible/artifacts/sunbird/email/messages/messages_ca.properties +++ /dev/null @@ -1,21 +0,0 @@ -emailVerificationSubject=Verificaci\u00F3 d''email -emailVerificationBody=Alg\u00FA ha creat un compte de {2} amb aquesta adre\u00E7a de correu electr\u00F2nic. Si has estat tu, fes clic a l''enlla\u00E7 seg\u00FCent per verificar la teva adre\u00E7a de correu electr\u00F2nic.\n\n{0}\n\nAquest enlla\u00E7 expirar\u00E0 en {1} minuts.\n\nSi tu no has creat aquest compte, simplement ignora aquest missatge. -emailVerificationBodyHtml=

      Alg\u00FA ha creat un compte de {2} amb aquesta adre\u00E7a de correu electr\u00F2nic. Si has estat tu, fes clic a l''enlla\u00E7 seg\u00FCent per verificar la teva adre\u00E7a de correu electr\u00F2nic.

      {0}

      Aquest enlla\u00E7 expirar\u00E0 en {1} minuts.

      Si tu no has creat aquest compte, simplement ignora aquest missatge.

      -passwordResetSubject=Reinicia contrasenya -passwordResetBody=Alg\u00FA ha demanat de canviar les credencials del teu compte de {2}. Si has estat tu, fes clic a l''enlla\u00E7 seg\u00FCent per a reiniciar-les.\n\n{0}\n\nAquest enlla\u00E7 expirar\u00E0 en {1} minuts.\n\nSi no vols reiniciar les teves credencials, simplement ignora aquest missatge i no es realitzar\u00E0 cap canvi. -passwordResetBodyHtml=

      Alg\u00FA ha demanat de canviar les credencials del teu compte de {2}. Si has estat tu, fes clic a l''enlla\u00E7 seg\u00FCent per a reiniciar-les.

      {0}

      Aquest enlla\u00E7 expirar\u00E0 en {1} minuts.

      Si no vols reiniciar les teves credencials, simplement ignora aquest missatge i no es realitzar\u00E0 cap canvi.

      -executeActionsSubject=Actualitza el teu compte -executeActionsBody=L''administrador ha sol\u00B7licitat que actualitzis el teu compte de {2}. Fes clic a l''enlla\u00E7 inferior per iniciar aquest proc\u00E9s.\n\n{0}\n\nAquest enlla\u00E7 expirar\u00E0 en {1} minutes.\n\nSi no est\u00E0s al tant que l''administrador hagi sol\u00B7licitat aix\u00F2, simplement ignora aquest missatge i no es realitzar\u00E0 cap canvi. -executeActionsBodyHtml=

      L''administrador ha sol\u00B7licitat que actualitzis el teu compte de {2}. Fes clic a l''enlla\u00E7 inferior per iniciar aquest proc\u00E9s.

      {0}

      Aquest enlla\u00E7 expirar\u00E0 en {1} minutes.

      Si no est\u00E0s al tant que l''administrador hagi sol\u00B7licitat aix\u00F2, simplement ignora aquest missatge i no es realitzar\u00E0 cap canvi.

      -eventLoginErrorSubject=Fallada en l''inici de sessi\u00F3 -eventLoginErrorBody=S''ha detectat un intent d''acc\u00E9s fallit al teu compte el {0} des de {1}. Si no has estat tu, si us plau contacta amb l''administrador. -eventLoginErrorBodyHtml=

      S''ha detectat un intent d''acc\u00E9s fallit al teu compte el {0} des de {1}. Si no has estat tu, si us plau contacta amb l''administrador.

      -eventRemoveTotpSubject=Esborrat TOTP -eventRemoveTotpBody=TOTP s''ha eliminat del teu compte el {0} des de {1}. Si no has estat tu, per favor contacta amb l''administrador. -eventRemoveTotpBodyHtml=

      TOTP s''ha eliminat del teu compte el {0} des de {1}. Si no has estat tu, si us plau contacta amb l''administrador. -eventUpdatePasswordSubject=Actualitzaci\u00F3 de contrasenya -eventUpdatePasswordBody=La teva contrasenya s''ha actualitzat el {0} des de {1}. Si no has estat tu, si us plau contacta amb l''administrador. -eventUpdatePasswordBodyHtml=

      La teva contrasenya s''ha actualitzat el {0} des de {1}. Si no has estat tu, si us plau contacta amb l''administrador.

      -eventUpdateTotpSubject=Actualitzaci\u00F3 de TOTP -eventUpdateTotpBody=TOTP s''ha actualitzat al teu compte el {0} des de {1}. Si no has estat tu, si us plau contacta amb l''administrador. -eventUpdateTotpBodyHtml=

      TOTP s''ha actualitzat al teu compte el {0} des de {1}. Si no has estat tu, si us plau contacta amb l''administrador.

      diff --git a/ansible/artifacts/sunbird/email/messages/messages_de.properties b/ansible/artifacts/sunbird/email/messages/messages_de.properties deleted file mode 100644 index 9068321b7b..0000000000 --- a/ansible/artifacts/sunbird/email/messages/messages_de.properties +++ /dev/null @@ -1,24 +0,0 @@ -emailVerificationSubject=E-Mail verifizieren -emailVerificationBody=Jemand hat ein {2} Konto mit dieser E-Mail Adresse erstellt. Falls Sie das waren, dann klicken Sie auf den Link, um die E-Mail Adresse zu verifizieren.\n\n{0}\n\nDieser Link wird in {1} Minuten ablaufen.\n\nFalls Sie dieses Konto nicht erstellt haben, dann k\u00F6nnen sie diese Nachricht ignorieren. -emailVerificationBodyHtml=

      Jemand hat ein {2} Konto mit dieser E-Mail Adresse erstellt. Falls das Sie waren, klicken Sie auf den Link, um die E-Mail Adresse zu verifizieren.

      {0}

      Dieser Link wird in {1} Minuten ablaufen.

      Falls Sie dieses Konto nicht erstellt haben, dann k\u00F6nnen sie diese Nachricht ignorieren.

      -identityProviderLinkSubject=Link {0} -identityProviderLinkBody=Es wurde beantragt Ihren Account {1} mit dem Account {0} von Benutzer {2} zu verlinken. Sollten Sie dies beantragt haben, klicken Sie auf den unten stehenden Link.\n\n{3}\n\n Die G\u00FCltigkeit des Links wird in {4} Minuten verfallen.\n\nSollten Sie Ihren Account nicht verlinken wollen, ignorieren Sie diese Nachricht. Wenn Sie die Accounts verlinken wird ein Login auf {1} \u00FCber {0} erm\u00F6glicht. -identityProviderLinkBodyHtml=

      Es wurde beantragt Ihren Account {1} mit dem Account {0} von Benutzer {2} zu verlinken. Sollten Sie dies beantragt haben, klicken Sie auf den unten stehenden Link.

      Link zur Best\u00E4tigung der Kontoverkn\u00FCpfung

      Die G\u00FCltigkeit des Links wird in {4} Minuten verfallen.

      Sollten Sie Ihren Account nicht verlinken wollen, ignorieren Sie diese Nachricht. Wenn Sie die Accounts verlinken wird ein Login auf {1} \u00FCber {0} erm\u00F6glicht.

      -passwordResetSubject=Passwort zur\u00FCcksetzen -passwordResetBody=Es wurde eine \u00C4nderung der Anmeldeinformationen f\u00FCr Ihren Account {2} angefordert. Wenn Sie diese \u00C4nderung beantragt haben, klicken Sie auf den unten stehenden Link.\n\n{0}\n\nDie G\u00FCltigkeit des Links wird in {1} Minuten verfallen.\n\nSollten Sie keine \u00C4nderung vollziehen wollen k\u00F6nnen Sie diese Nachricht ignorieren und an Ihrem Account wird nichts ge\u00E4ndert. -passwordResetBodyHtml=

      Es wurde eine \u00C4nderung der Anmeldeinformationen f\u00FCr Ihren Account {2} angefordert. Wenn Sie diese \u00C4nderung beantragt haben, klicken Sie auf den unten stehenden Link.

      Link zum Zur\u00FCcksetzen von Anmeldeinformationen

      Die G\u00FCltigkeit des Links wird in {1} Minuten verfallen.

      Sollten Sie keine \u00C4nderung vollziehen wollen k\u00F6nnen Sie diese Nachricht ignorieren und an Ihrem Account wird nichts ge\u00E4ndert.

      -executeActionsSubject=Aktualisieren Sie Ihr Konto -executeActionsBody=Ihr Administrator hat Sie aufgefordert Ihren Account {2} zu aktualisieren. Klicken Sie auf den unten stehenden Link um den Prozess zu starten.\n\n{0}\n\nDie G\u00FCltigkeit des Links wird in {1} Minuten verfallen.\n\nSollten Sie sich dieser Aufforderung nicht bewusst sein, ignorieren Sie diese Nachricht und Ihr Account bleibt unver\u00E4ndert. -executeActionsBodyHtml=

      Ihr Administrator hat Sie aufgefordert Ihren Account {2} zu aktualisieren. Klicken Sie auf den unten stehenden Link um den Prozess zu starten.

      Link zum Account-Update

      Die G\u00FCltigkeit des Links wird in {1} Minuten verfallen.

      Sollten Sie sich dieser Aufforderung nicht bewusst sein, ignorieren Sie diese Nachricht und Ihr Account bleibt unver\u00E4ndert.

      -eventLoginErrorSubject=Fehlgeschlagene Anmeldung -eventLoginErrorBody=Jemand hat um {0} von {1} versucht, sich mit ihrem Konto anzumelden. Falls das nicht Sie waren, dann kontaktieren Sie bitte Ihren Admin. -eventLoginErrorBodyHtml=

      Jemand hat um {0} von {1} versucht, sich mit ihrem Konto anzumelden. Falls das nicht Sie waren, dann kontaktieren Sie bitte Ihren Admin.

      -eventRemoveTotpSubject=TOTP Entfernt -eventRemoveTotpBody=TOTP wurde von ihrem Konto am {0} von {1} entfernt. Falls das nicht Sie waren, dann kontaktieren Sie bitte Ihren Admin. -eventRemoveTotpBodyHtml=

      TOTP wurde von ihrem Konto am {0} von {1} entfernt. Falls das nicht Sie waren, dann kontaktieren Sie bitte Ihren Admin.

      -eventUpdatePasswordSubject=Passwort Aktualisiert -eventUpdatePasswordBody=Ihr Passwort wurde am {0} von {1} ge\u00E4ndert. Falls das nicht Sie waren, dann kontaktieren Sie bitte Ihren Admin. -eventUpdatePasswordBodyHtml=

      Ihr Passwort wurde am {0} von {1} ge\u00E4ndert. Falls das nicht Sie waren, dann kontaktieren Sie bitte Ihren Admin.

      -eventUpdateTotpSubject=TOTP Aktualisiert -eventUpdateTotpBody=TOTP wurde am {0} von {1} ge\u00E4ndert. Falls das nicht Sie waren, dann kontaktieren Sie bitte Ihren Admin. -eventUpdateTotpBodyHtml=

      TOTP wurde am {0} von {1} ge\u00E4ndert. Falls das nicht Sie waren, dann kontaktieren Sie bitte Ihren Admin.

      diff --git a/ansible/artifacts/sunbird/email/messages/messages_en.properties b/ansible/artifacts/sunbird/email/messages/messages_en.properties deleted file mode 100644 index c2085ec559..0000000000 --- a/ansible/artifacts/sunbird/email/messages/messages_en.properties +++ /dev/null @@ -1,27 +0,0 @@ -emailVerificationSubject=Verify email -emailVerificationBody=Someone has created a {2} account with this email address. If this was you, click the link below to verify your email address\n\n{0}\n\nThis link will expire within {1} minutes.\n\nIf you didn''t create this account, just ignore this message. -emailVerificationBodyHtml=

      Someone has created a {2} account with this email address. If this was you, click the link below to verify your email address

      Link to e-mail address verification

      This link will expire within {1} minutes.

      If you didn''t create this account, just ignore this message.

      -emailTestSubject=[KEYCLOAK] - SMTP test message -emailTestBody=This is a test message -emailTestBodyHtml=

      This is a test message

      -identityProviderLinkSubject=Link {0} -identityProviderLinkBody=Someone wants to link your "{1}" account with "{0}" account of user {2} . If this was you, click the link below to link accounts\n\n{3}\n\nThis link will expire within {4} minutes.\n\nIf you don''t want to link account, just ignore this message. If you link accounts, you will be able to login to {1} through {0}. -identityProviderLinkBodyHtml=

      Someone wants to link your {1} account with {0} account of user {2} . If this was you, click the link below to link accounts

      Link to confirm account linking

      This link will expire within {4} minutes.

      If you don''t want to link account, just ignore this message. If you link accounts, you will be able to login to {1} through {0}.

      -passwordResetSubject=Reset password -passwordResetBody=Someone just requested to change your {2} account''s credentials. If this was you, click on the link below to reset them.\n\n{0}\n\nThis link and code will expire within {1} minutes.\n\nIf you don''t want to reset your credentials, just ignore this message and nothing will be changed. -passwordResetBodyHtml=

      Someone just requested to change your {2} account''s credentials. If this was you, click on the link below to reset them.

      Link to reset credentials

      This link will expire within {1} Hours.

      If you don''t want to reset your credentials, just ignore this message and nothing will be changed.

      -executeActionsSubject=Update Your Account -executeActionsBody=Your administrator has just requested that you update your {2} account. Click on the link below to start this process.\n\n{0}\n\nThis link will expire within {1} minutes.\n\nIf you are unaware that your admin has requested this, just ignore this message and nothing will be changed. -executeActionsBodyHtml=

      Your administrator has just requested that you update your {2} account. Click on the link below to start this process.

      Link to account update

      This link will expire within {1} minutes.

      If you are unaware that your admin has requested this, just ignore this message and nothing will be changed.

      -eventLoginErrorSubject=Login error -eventLoginErrorBody=A failed login attempt was detected to your account on {0} from {1}. If this was not you, please contact an admin. -eventLoginErrorBodyHtml=

      A failed login attempt was detected to your account on {0} from {1}. If this was not you, please contact an admin.

      -eventRemoveTotpSubject=Remove TOTP -eventRemoveTotpBody=TOTP was removed from your account on {0} from {1}. If this was not you, please contact an admin. -eventRemoveTotpBodyHtml=

      TOTP was removed from your account on {0} from {1}. If this was not you, please contact an admin.

      -eventUpdatePasswordSubject=Update password -eventUpdatePasswordBody=Your password was changed on {0} from {1}. If this was not you, please contact an admin. -eventUpdatePasswordBodyHtml=

      Your password was changed on {0} from {1}. If this was not you, please contact an admin.

      -eventUpdateTotpSubject=Update TOTP -eventUpdateTotpBody=TOTP was updated for your account on {0} from {1}. If this was not you, please contact an admin. -eventUpdateTotpBodyHtml=

      TOTP was updated for your account on {0} from {1}. If this was not you, please contact an admin.

      diff --git a/ansible/artifacts/sunbird/email/messages/messages_es.properties b/ansible/artifacts/sunbird/email/messages/messages_es.properties deleted file mode 100644 index 16160143c7..0000000000 --- a/ansible/artifacts/sunbird/email/messages/messages_es.properties +++ /dev/null @@ -1,21 +0,0 @@ -emailVerificationSubject=Verificaci\u00F3n de email -emailVerificationBody=Alguien ha creado una cuenta de {2} con esta direcci\u00F3n de email. Si has sido t\u00FA, haz click en el enlace siguiente para verificar tu direcci\u00F3n de email.\n\n{0}\n\nEste enlace expirar\u00E1 en {1} minutos.\n\nSi t\u00FA no has creado esta cuenta, simplemente ignora este mensaje. -emailVerificationBodyHtml=

      Alguien ha creado una cuenta de {2} con esta direcci\u00F3n de email. Si has sido t\u00FA, haz click en el enlace siguiente para verificar tu direcci\u00F3n de email.

      {0}

      Este enlace expirar\u00E1 en {1} minutos.

      Si t\u00FA no has creado esta cuenta, simplemente ignora este mensaje.

      -passwordResetSubject=Reiniciar contrase\u00F1a -passwordResetBody=Alguien ha solicitado cambiar las credenciales de tu cuenta de {2}. Si has sido t\u00FA, haz clic en el enlace siguiente para reiniciarlas.\n\n{0}\n\nEste enlace expirar\u00E1 en {1} minutos.\n\nSi no quieres reiniciar tus credenciales, simplemente ignora este mensaje y no se realizar\u00E1 ning\u00FAn cambio. -passwordResetBodyHtml=

      Alguien ha solicitado cambiar las credenciales de tu cuenta de {2}. Si has sido t\u00FA, haz clic en el enlace siguiente para reiniciarlas.

      {0}

      Este enlace expirar\u00E1 en {1} minutos.

      Si no quieres reiniciar tus credenciales, simplemente ignora este mensaje y no se realizar\u00E1 ning\u00FAn cambio.

      -executeActionsSubject=Actualiza tu cuenta -executeActionsBody=El administrador ha solicitado que actualices tu cuenta de {2}. Haz clic en el enlace inferior para iniciar este proceso.\n\n{0}\n\nEste enlace expirar\u00E1 en {1} minutes.\n\nSi no est\u00E1s al tanto de que el administrador haya solicitado esto, simplemente ignora este mensaje y no se realizar\u00E1 ning\u00FAn cambio. -executeActionsBodyHtml=

      El administrador ha solicitado que actualices tu cuenta de {2}. Haz clic en el enlace inferior para iniciar este proceso.

      {0}

      Este enlace expirar\u00E1 en {1} minutes.

      Si no est\u00E1s al tanto de que el administrador haya solicitado esto, simplemente ignora este mensaje y no se realizar\u00E1 ning\u00FAn cambio.

      -eventLoginErrorSubject=Fallo en el inicio de sesi\u00F3n -eventLoginErrorBody=Se ha detectado un intento de acceso fallido a tu cuenta el {0} desde {1}. Si no has sido t\u00FA, por favor contacta con el administrador. -eventLoginErrorBodyHtml=

      Se ha detectado un intento de acceso fallido a tu cuenta el {0} desde {1}. Si no has sido t\u00FA, por favor contacta con el administrador.

      -eventRemoveTotpSubject=Borrado TOTP -eventRemoveTotpBody=TOTP fue eliminado de tu cuenta el {0} desde {1}. Si no has sido t\u00FA, por favor contacta con el administrador. -eventRemoveTotpBodyHtml=

      TOTP fue eliminado de tu cuenta el {0} desde {1}. Si no has sido t\u00FA, por favor contacta con el administrador.

      -eventUpdatePasswordSubject=Actualizaci\u00F3n de contrase\u00F1a -eventUpdatePasswordBody=Tu contrase\u00F1a se ha actualizado el {0} desde {1}. Si no has sido t\u00FA, por favor contacta con el administrador. -eventUpdatePasswordBodyHtml=

      Tu contrase\u00F1a se ha actualizado el {0} desde {1}. Si no has sido t\u00FA, por favor contacta con el administrador.

      -eventUpdateTotpSubject=Actualizaci\u00F3n de TOTP -eventUpdateTotpBody=TOTP se ha actualizado en tu cuenta el {0} desde {1}. Si no has sido t\u00FA, por favor contacta con el administrador. -eventUpdateTotpBodyHtml=

      TOTP se ha actualizado en tu cuenta el {0} desde {1}. Si no has sido t\u00FA, por favor contacta con el administrador.

      diff --git a/ansible/artifacts/sunbird/email/messages/messages_fr.properties b/ansible/artifacts/sunbird/email/messages/messages_fr.properties deleted file mode 100644 index 3467dec80c..0000000000 --- a/ansible/artifacts/sunbird/email/messages/messages_fr.properties +++ /dev/null @@ -1,21 +0,0 @@ -emailVerificationSubject=V\u00e9rification du courriel -emailVerificationBody=Quelqu''un vient de cr\u00e9er un compte "{2}" avec votre courriel. Si vous \u00eates \u00e0 l''origine de cette requ\u00eate, veuillez cliquer sur le lien ci-dessous afin de v\u00e9rifier votre adresse de courriel\n\n{0}\n\nCe lien expire dans {1} minute(s).\n\nSinon, veuillez ignorer ce message. -emailVerificationBodyHtml=

      Quelqu''un vient de cr\u00e9er un compte "{2}" avec votre courriel. Si vous \u00eates \u00e0 l''origine de cette requ\u00eate, veuillez cliquer sur le lien ci-dessous afin de v\u00e9rifier votre adresse de courriel

      {0}

      Ce lien expire dans {1} minute(s).

      Sinon, veuillez ignorer ce message.

      -passwordResetSubject=R\u00e9initialiser le mot de passe -passwordResetBody=Quelqu''un vient de demander une r\u00e9initialisation de mot de passe pour votre compte {2}. Si vous \u00eates \u00e0 l''origine de cette requ\u00eate, veuillez cliquer sur le lien ci-dessous pour le mettre \u00e0 jour.\n\n{0}\n\nCe lien expire dans {1} minute(s).\n\nSinon, veuillez ignorer ce message ; aucun changement ne sera effectu\u00e9 sur votre compte. -passwordResetBodyHtml=

      Quelqu''un vient de demander une r\u00e9initialisation de mot de passe pour votre compte {2}. Si vous \u00eates \u00e0 l''origine de cette requ\u00eate, veuillez cliquer sur le lien ci-dessous pour le mettre \u00e0 jour.

      {0}

      Ce lien expire dans {1} minute(s).

      Sinon, veuillez ignorer ce message ; aucun changement ne sera effectu\u00e9 sur votre compte.

      -executeActionsSubject=Mettre \u00e0 jour votre compte -executeActionsBody=Votre administrateur vient de demander une mise \u00e0 jour de votre compte {2}. Veuillez cliquer sur le lien ci-dessous afin de commencer le processus.\n\n{0}\n\nCe lien expire dans {1} minute(s).\n\nSi vous n''\u00eates pas \u00e0 l''origine de cette requ\u00eate, veuillez ignorer ce message ; aucun changement ne sera effectu\u00e9 sur votre compte. -executeActionsBodyHtml=

      Votre administrateur vient de demander une mise \u00e0 jour de votre compte {2}. Veuillez cliquer sur le lien ci-dessous afin de commencer le processus.

      {0}

      Ce lien expire dans {1} minute(s).

      Si vous n''\u00eates pas \u00e0 l''origine de cette requ\u00eate, veuillez ignorer ce message ; aucun changement ne sera effectu\u00e9 sur votre compte.

      -eventLoginErrorSubject=Erreur de connexion -eventLoginErrorBody=Une tentative de connexion a \u00e9t\u00e9 d\u00e9tect\u00e9e sur votre compte {0} depuis {1}. Si vous n''\u00eates pas \u00e0 l''origine de cette requ\u00eate, veuillez contacter votre administrateur. -eventLoginErrorBodyHtml=

      Une tentative de connexion a \u00e9t\u00e9 d\u00e9tect\u00e9e sur votre compte {0} depuis {1}. Si vous n''\u00eates pas \u00e0 l''origine de cette requ\u00eate, veuillez contacter votre administrateur.

      -eventRemoveTotpSubject=Suppression du TOTP -eventRemoveTotpBody=Le TOTP a \u00e9t\u00e9 supprim\u00e9 de votre compte {0} depuis {1}. Si vous n''\u00e9tiez pas \u00e0 l''origine de cette requ\u00eate, veuillez contacter votre administrateur. -eventRemoveTotpBodyHtml=

      Le TOTP a \u00e9t\u00e9 supprim\u00e9 de votre compte {0} depuis {1}. Si vous n''\u00e9tiez pas \u00e0 l''origine de cette requ\u00eate, veuillez contacter votre administrateur.

      -eventUpdatePasswordSubject=Mise \u00e0 jour du mot de passe -eventUpdatePasswordBody=Votre mot de passe pour votre compte {0} a \u00e9t\u00e9 modifi\u00e9 depuis {1}. Si vous n''\u00e9tiez pas \u00e0 l''origine de cette requ\u00eate, veuillez contacter votre administrateur. -eventUpdatePasswordBodyHtml=

      Votre mot de passe pour votre compte {0} a \u00e9t\u00e9 modifi\u00e9 depuis {1}. Si vous n''\u00e9tiez pas \u00e0 l''origine de cette requ\u00eate, veuillez contacter votre administrateur.

      -eventUpdateTotpSubject=Mise \u00e0 jour du TOTP -eventUpdateTotpBody=Le TOTP a \u00e9t\u00e9 mis \u00e0 jour pour votre compte {0} depuis {1}. Si vous n''\u00e9tiez pas \u00e0 l''origine de cette requ\u00eate, veuillez contacter votre administrateur. -eventUpdateTotpBodyHtml=

      Le TOTP a \u00e9t\u00e9 mis \u00e0 jour pour votre compte {0} depuis {1}. Si vous n''\u00e9tiez pas \u00e0 l''origine de cette requ\u00eate, veuillez contacter votre administrateur.

      diff --git a/ansible/artifacts/sunbird/email/messages/messages_it.properties b/ansible/artifacts/sunbird/email/messages/messages_it.properties deleted file mode 100644 index b877b91ab5..0000000000 --- a/ansible/artifacts/sunbird/email/messages/messages_it.properties +++ /dev/null @@ -1,24 +0,0 @@ -emailVerificationSubject=Verifica l''email -emailVerificationBody=Qualcuno ha creato un {2} account con questo indirizzo email. Se sei stato tu, fai clic sul pulsante seguente per verificare il tuo indirizzo email\n\n{0}\n\nQuesto link scadr\u00e0 in {1} minuti.\n\nSe non sei stato tu a creare questo account, ignora questo messaggio. -emailVerificationBodyHtml=

      Qualcuno ha creato un {2} account con questo indirizzo email. Se sei stato tu, fai clic sul pulsante seguente per verificare il tuo indirizzo email

      {0}

      Questo link scadr\u00e0 in {1} minuti.

      Se non sei stato tu a creare questo account, ignora questo messaggio.

      -identityProviderLinkSubject=Link {0} -identityProviderLinkBody=Qualcuno vuole associare il tuo "{1}" account con "{0}" l''account dell''utente {2} . Se sei stato tu, fai clic sul pulsante seguente per associare gli account\n\n{3}\n\nQuesto link scadr\u00e0 in {4} minuti.\n\nSe non vuoi associare l''account, ignora questo messaggio. Se associ gli account, potrai accedere a {1} attraverso {0}. -identityProviderLinkBodyHtml=

      Qualcuno vuole associare il tuo {1} account con {0} l''account dell''utente {2} . Se sei stato tu, fai clic sul pulsante seguente per associare gli account

      {3}

      Questo link scadr\u00e0 in {4} minuti.

      Se non vuoi associare l''account, ignora questo messaggio. Se associ gli account, potrai accedere a {1} attraverso {0}.

      -passwordResetSubject=Reimposta la password -passwordResetBody= Qualcuno ha appena richiesto di cambiare le {2} credenziali di accesso al tuo account. Se sei stato tu, fai clic sul pulsante seguente reimpostarle.\n\n{0}\n\nQuesto link e codice scadranno in {1} minuti.\n\nSe non vuoi reimpostare le tue credenziali di accesso, ignora questo messaggio e non verr\u00e0 effettuato nessun cambio. -passwordResetBodyHtml=

      Qualcuno ha appena richiesto di cambiare le {2} credenziali di accesso al tuo account. Se sei stato tu, fai clic sul pulsante seguente reimpostarle.

      {0}

      Questo link scadr\u00e0 in {1} minuti.

      Se non vuoi reimpostare le tue credenziali di accesso, ignora questo messaggio e non verr\u00e0 effettuato nessun cambio.

      -executeActionsSubject=Aggiorna il tuo account -executeActionsBody=Il tuo amministratore ha appena richiesto un aggiornamento del tuo {2} account. Fai clic sul pulsante seguente per iniziare questo processo.\n\n{0}\n\nQuesto link scadr\u00e0 in {1} minuti.\n\nSe non sei a conoscenza della richiesta del tuo amministratore, ignora questo messaggio e non verr\u00e0 effettuato nessun cambio. -executeActionsBodyHtml=

      Il tuo amministratore ha appena richiesto un aggiornamento del tuo {2} account. Fai clic sul pulsante seguente per iniziare questo processo.

      {0}

      Questo link scadr\u00e0 in {1} minuti.

      Se non sei a conoscenza della richiesta del tuo amministratore, ignora questo messaggio e non verr\u00e0 effettuato nessun cambio.

      -eventLoginErrorSubject=Errore di accesso -eventLoginErrorBody=\u00c8 stato rilevato un tentativo fallito di accesso al tuo account il {0} da {1}. Se non sei stato tu, per favore contatta l''amministratore. -eventLoginErrorBodyHtml=

      \u00c8 stato rilevato un tentativo fallito di accesso al tuo account il {0} da {1}. Se non sei stato tu, per favore contatta l''amministratore.

      -eventRemoveTotpSubject=Rimuovi TOTP (Password temporanea valida una volta sola) -eventRemoveTotpBody=TOTP (Password temporanea valida una volta sola) \u00e8 stata rimossa dal tuo account il {0} da {1}. Se non sei stato tu, per favore contatta l''amministratore. -eventRemoveTotpBodyHtml=

      TOTP (Password temporanea valida una volta sola) \u00e8 stata rimossa dal tuo account il {0} da {1}. Se non sei stato tu, per favore contatta l''amministratore.

      -eventUpdatePasswordSubject=Aggiornamento password -eventUpdatePasswordBody=La tua password \u00e8 stata cambiata il {0} da {1}. Se non sei stato tu, per favore contatta l''amministratore. -eventUpdatePasswordBodyHtml=

      La tua password \u00e8 stata cambiata il {0} da {1}. Se non sei stato tu, per favore contatta l''amministratore.

      -eventUpdateTotpSubject=Aggiornamento TOTP (Password temporanea valida una volta sola) -eventUpdateTotpBody=TOTP (Password temporanea valida una volta sola) \u00e8 stata aggiornata per il tuo account il {0} da {1}. Se non sei stato tu, per favore contatta l''amministratore. -eventUpdateTotpBodyHtml=

      TOTP (Password temporanea valida una volta sola) \u00e8 stata aggiornata per il tuo account il {0} da {1}. Se non sei stato tu, per favore contatta l''amministratore.

      diff --git a/ansible/artifacts/sunbird/email/messages/messages_ja.properties b/ansible/artifacts/sunbird/email/messages/messages_ja.properties deleted file mode 100644 index a60ffe3d2b..0000000000 --- a/ansible/artifacts/sunbird/email/messages/messages_ja.properties +++ /dev/null @@ -1,25 +0,0 @@ -# encoding: utf-8 -emailVerificationSubject=Eメールの確認 -emailVerificationBody=このメールアドレスで {2} アカウントが作成されたました。以下のリンクをクリックしてメールアドレスの確認を完了してください。\n\n{0}\n\nこのリンクは {1} 分間だけ有効です。\n\nもしこのアカウントの作成に心当たりがない場合は、このメールを無視してください。 -emailVerificationBodyHtml=

      このメールアドレスで {2} アカウントが作成されました。以下のリンクをクリックしてメールアドレスの確認を完了してください。

      メールアドレスの確認

      このリンクは {1} 分間だけ有効です。

      もしこのアカウントの作成に心当たりがない場合は、このメールを無視してください。

      -identityProviderLinkSubject=リンク {0} -identityProviderLinkBody=あなたの "{1}" アカウントと {2} ユーザーの "{0}" アカウントのリンクが要求されました。以下のリンクをクリックしてアカウントのリンクを行ってください。\n\n{3}\n\nこのリンクは {4} 分間だけ有効です。\n\nもしアカウントのリンクを行わない場合は、このメッセージを無視してください。アカウントのリンクを行うことで、{0} 経由で {1} にログインすることができるようになります。 -identityProviderLinkBodyHtml=

      あなたの {1} アカウントと {2} ユーザーの {0} アカウントのリンクが要求されました。以下のリンクをクリックしてアカウントのリンクを行ってください。

      アカウントリンクの確認

      このリンクは {4} 分間だけ有効です。

      もしアカウントのリンクを行わない場合は、このメッセージを無視してください。アカウントのリンクを行うことで、{0} 経由で {1} にログインすることができるようになります。

      -passwordResetSubject=パスワードのリセット -passwordResetBody=あなたの {2} アカウントのパスワードの変更が要求されています。以下のリンクをクリックしてパスワードのリセットを行ってください。\n\n{0}\n\nこのリンクは {1} 分間だけ有効です。\n\nもしパスワードのリセットを行わない場合は、このメッセージを無視してください。何も変更されません。 -passwordResetBodyHtml=

      あなたの {2} アカウントのパスワードの変更が要求されています。以下のリンクをクリックしてパスワードのリセットを行ってください。

      パスワードのリセット

      このリンクは {1} 分間だけ有効です。

      もしパスワードのリセットを行わない場合は、このメッセージを無視してください。何も変更されません。

      -executeActionsSubject=アカウントの更新 -executeActionsBody=管理者よりあなたの {2} アカウントの更新が要求されています。以下のリンクをクリックしてこのプロセスを開始してください。\n\n{0}\n\nこのリンクは {1} 分間だけ有効です。\n\n管理者からのこの変更要求についてご存知ない場合は、このメッセージを無視してください。何も変更されません。 -executeActionsBodyHtml=

      管理者よりあなたの {2} アカウントの更新が要求されています。以下のリンクをクリックしてこのプロセスを開始してください。

      アカウントの更新

      このリンクは {1} 分間だけ有効です。

      管理者からのこの変更要求についてご存知ない場合は、このメッセージを無視してください。何も変更されません。

      -eventLoginErrorSubject=ログインエラー -eventLoginErrorBody={0} に {1} からのログイン失敗があなたのアカウントで検出されました。心当たりがない場合は、管理者に連絡してください。 -eventLoginErrorBodyHtml=

      {0} に {1} からのログイン失敗があなたのアカウントで検出されました。心当たりがない場合は管理者に連絡してください。

      -eventRemoveTotpSubject=TOTPの削除 -eventRemoveTotpBody={0} に {1} からの操作で TOTP が削除されました。心当たりがない場合は、管理者に連絡してください。 -eventRemoveTotpBodyHtml=

      {0} に {1} からの操作で TOTP が削除されました。心当たりがない場合は、管理者に連絡してください。

      -eventUpdatePasswordSubject=パスワードの更新 -eventUpdatePasswordBody={0} に {1} からの操作であなたのパスワードが変更されました。心当たりがない場合は、管理者に連絡してください。 -eventUpdatePasswordBodyHtml=

      {0} に {1} からの操作であなたのパスワードが変更されました。心当たりがない場合は、管理者に連絡してください。

      -eventUpdateTotpSubject=TOTPの更新 -eventUpdateTotpBody={0} に {1} からの操作で TOTP が更新されました。心当たりがない場合は、管理者に連絡してください。 -eventUpdateTotpBodyHtml=

      {0} に {1} からの操作で TOTP が更新されました。心当たりがない場合は、管理者に連絡してください。

      diff --git a/ansible/artifacts/sunbird/email/messages/messages_lt.properties b/ansible/artifacts/sunbird/email/messages/messages_lt.properties deleted file mode 100644 index a1b59ade93..0000000000 --- a/ansible/artifacts/sunbird/email/messages/messages_lt.properties +++ /dev/null @@ -1,24 +0,0 @@ -emailVerificationSubject=El. pa\u0161to patvirtinimas -emailVerificationBody=Paskyra {2} sukurta naudojant \u0161\u012F el. pa\u0161to adres\u0105. Jei tai buvote J\u016Bs, tuomet paspauskite \u017Eemiau esan\u010Di\u0105 nuorod\u0105\n\n{0}\n\n\u0160i nuoroda galioja {1} min.\n\nJei paskyros nek\u016Br\u0117te, tuomet ignuoruokite \u0161\u012F lai\u0161k\u0105. -emailVerificationBodyHtml=

      Paskyra {2} sukurta naudojant \u0161\u012F el. pa\u0161to adres\u0105. Jei tao buvote J\u016Bs, tuomet paspauskite \u017Eemiau esan\u010Di\u0105 nuorod\u0105

      {0}

      \u0160i nuoroda galioja {1} min.

      nJei paskyros nek\u016Br\u0117te, tuomet ignuoruokite \u0161\u012F lai\u0161k\u0105.

      -identityProviderLinkSubject=S\u0105saja {0} -identityProviderLinkBody=Ka\u017Eas pageidauja susieti J\u016Bs\u0173 "{1}" paskyr\u0105 su "{0}" {2} naudotojo paskyr\u0105. Jei tai buvote J\u016Bs, tuomet paspauskite \u017Eemiau esan\u010Di\u0105 nuorod\u0105 nor\u0117dami susieti paskyras\n\n{3}\n\n\u0160i nuoroda galioja {4} min.\n\nJei paskyr\u0173 susieti nenorite, tuomet ignoruokite \u0161\u012F lai\u0161k\u0105. Jei paskyras susiesite, tuomet prie {1} gal\u0117siste prisijungti per {0}. -identityProviderLinkBodyHtml=

      \u017Eas pageidauja susieti J\u016Bs\u0173 {1} paskyr\u0105 su {0} {2} naudotojo paskyr\u0105. Jei tai buvote J\u016Bs, tuomet paspauskite \u017Eemiau esan\u010Di\u0105 nuorod\u0105 nor\u0117dami susieti paskyras

      {3}

      \u0160i nuoroda galioja {4} min.

      Jei paskyr\u0173 susieti nenorite, tuomet ignoruokite \u0161\u012F lai\u0161k\u0105. Jei paskyras susiesite, tuomet prie {1} gal\u0117siste prisijungti per {0}.

      -passwordResetSubject=Slapta\u017Eod\u017Eio atk\u016Brimas -passwordResetBody=Ka\u017Ekas pageidauja pakeisti J\u016Bs\u0173 paskyros {2} slapta\u017Eod\u012F. Jei tai buvote J\u016Bs, tuomet paspauskite \u017Eemiau esan\u010Di\u0105 nuorod\u0105 slapta\u017Eod\u017Eio pakeitimui.\n\n{0}\n\n\u0160i nuoroda ir kodas galioja {1} min.\n\nJei nepageidajate keisti slapta\u017Eod\u017Eio, tuomet ignoruokite \u0161\u012F lai\u0161k\u0105 ir niekas nebus pakeista. -passwordResetBodyHtml=

      Ka\u017Ekas pageidauja pakeisti J\u016Bs\u0173 paskyros {2} slapta\u017Eod\u012F. Jei tai buvote J\u016Bs, tuomet paspauskite \u017Eemiau esan\u010Di\u0105 nuorod\u0105 slapta\u017Eod\u017Eio pakeitimui.

      {0}

      \u0160i nuoroda ir kodas galioja {1} min.

      Jei nepageidajate keisti slapta\u017Eod\u017Eio, tuomet ignoruokite \u0161\u012F lai\u0161k\u0105 ir niekas nebus pakeista.

      -executeActionsSubject=Atnaujinkite savo paskyr\u0105 -executeActionsBody=Sistemos administratorius pageidauja, kad J\u016Bs atnaujintum\u0117te savo {2} paskyr\u0105. Paspauskite \u017Eemiau esan\u010Di\u0105 nuorod\u0105 paskyros duomen\u0173 atnaujinimui.\n\n{0}\n\n\u0160i nuoroda galioja {1} min.\n\nJei J\u016Bs neasate tikri, kad tai administratoriaus pageidavimas, tuomet ignoruokite \u0161\u012F lai\u0161k\u0105 ir niekas nebus pakeista. -executeActionsBodyHtml=

      Sistemos administratorius pageidauja, kad J\u016Bs atnaujintum\u0117te savo {2} paskyr\u0105. Paspauskite \u017Eemiau esan\u010Di\u0105 nuorod\u0105 paskyros duomen\u0173 atnaujinimui.

      {0}

      \u0160i nuoroda galioja {1} min.

      Jei J\u016Bs neasate tikri, kad tai administratoriaus pageidavimas, tuomet ignoruokite \u0161\u012F lai\u0161k\u0105 ir niekas nebus pakeista.

      -eventLoginErrorSubject=Nes\u0117kmingas bandymas prisijungti prie j\u016Bs\u0173 paskyros -eventLoginErrorBody=Bandymas prisijungti prie j\u016Bs\u0173 paskyros {0} i\u0161 {1} nes\u0117kmingas. Jei tai nebuvote j\u016Bs, tuomet susisiekite su administratoriumi -eventLoginErrorBodyHtml=

      Bandymas prisijungti prie j\u016Bs\u0173 paskyros {0} i\u0161 {1} nes\u0117kmingas. Jei tai nebuvote j\u016Bs, tuomet susisiekite su administratoriumi

      -eventRemoveTotpSubject=TOTP pa\u0161alinimas -eventRemoveTotpBody=Ka\u017Ekas pageidauja atsieti TOPT J\u016Bs\u0173 {1} paskyroje su {0}. Jei tai nebuvote J\u016Bs, tuomet susisiekite su administratoriumi -eventRemoveTotpBodyHtml=

      Ka\u017Ekas pageidauja atsieti TOPT J\u016Bs\u0173 {1} paskyroje su {0}. Jei tai nebuvote J\u016Bs, tuomet susisiekite su administratoriumi

      -eventUpdatePasswordSubject=Slapta\u017Eod\u017Eio atnaujinimas -eventUpdatePasswordBody={1} paskyroje {0} pakeisas j\u016Bs\u0173 slapta\u017Eodis. Jei J\u016Bs nekeit\u0117te, tuomet susisiekite su administratoriumi -eventUpdatePasswordBodyHtml=

      {1} paskyroje {0} pakeisas j\u016Bs\u0173 slapta\u017Eodis. Jei J\u016Bs nekeit\u0117te, tuomet susisiekite su administratoriumi

      -eventUpdateTotpSubject=TOTP atnaujinimas -eventUpdateTotpBody=TOTP J\u016Bs\u0173 {1} paskyroje su {0} buvo atnaujintas. Jei tai nebuvote J\u016Bs, tuomet susisiekite su administratoriumi -eventUpdateTotpBodyHtml=

      TOTP J\u016Bs\u0173 {1} paskyroje su {0} buvo atnaujintas. Jei tai nebuvote J\u016Bs, tuomet susisiekite su administratoriumi

      \ No newline at end of file diff --git a/ansible/artifacts/sunbird/email/messages/messages_no.properties b/ansible/artifacts/sunbird/email/messages/messages_no.properties deleted file mode 100644 index 32334e9d8d..0000000000 --- a/ansible/artifacts/sunbird/email/messages/messages_no.properties +++ /dev/null @@ -1,24 +0,0 @@ -emailVerificationSubject=Bekreft e-postadresse -emailVerificationBody=Noen har opprettet en {2} konto med denne e-postadressen. Hvis dette var deg, klikk p\u00E5 lenken nedenfor for \u00E5 bekrefte e-postadressen din\n\n{0}\n\nDenne lenken vil utl\u00F8pe om {1} minutter.\n\nHvis du ikke opprettet denne kontoen, vennligst ignorer denne meldingen. -emailVerificationBodyHtml=

      Noen har opprettet en {2} konto med denne e-postadressen. Hvis dette var deg, klikk p\u00E5 lenken nedenfor for \u00E5 bekrefte e-postadressen din

      {0}

      Denne lenken vil utl\u00F8pe om {1} minutter.

      Hvis du ikke opprettet denne kontoen, vennligst ignorer denne meldingen.

      -identityProviderLinkSubject=Lenke {0} -identityProviderLinkBody=Noen vil koble din {1} konto med {0} konto til bruker {2}. Hvis dette var deg, klikk p\u00E5 lenken nedenfor for \u00E5 koble kontoene\n\n{3}\n\nDenne lenken vil utl\u00F8pe om {4} minutter\n\nHvis du ikke vil koble kontoene, vennligst ignorer denne meldingen. Hvis du kobler kontoene sammen vil du kunne logge inn til {1} gjennom {0}. -identityProviderLinkBodyHtml=

      Noen vil koble din {1} konto med {0} konto til bruker {2}. Hvis dette var deg, klikk p\u00E5 lenken nedenfor for \u00E5 koble kontoene.

      {3}

      Denne lenken vil utl\u00F8pe om {4} minutter.

      Hvis du ikke vil koble kontoene, vennligst ignorer denne meldingen. Hvis du kobler kontoene sammen vil du kunne logge inn til {1} gjennom {0}.

      -passwordResetSubject=Tilbakestill passord -passwordResetBody=Noen har bedt om \u00E5 endre innloggingsdetaljene til din konto {2}. Hvis dette var deg, klikk p\u00E5 lenken nedenfor for \u00E5 tilbakestille dem.\n\n{0}\n\nDenne lenken vil utl\u00F8pe om {1} minutter.\n\nHvis du ikke vil tilbakestille din innloggingsdata, vennligst ignorer denne meldingen og ingenting vil bli endret. -passwordResetBodyHtml=

      Noen har bedt om \u00E5 endre innloggingsdetaljene til din konto {2}. Hvis dette var deg, klikk p\u00E5 lenken nedenfor for \u00E5 tilbakestille dem.

      {0}

      Denne lenken vil utl\u00F8pe om {1} minutter.

      Hvis du ikke vil tilbakestille din innloggingsdata, vennligst ignorer denne meldingen og ingenting vil bli endret.

      -executeActionsSubject=Oppdater kontoen din -executeActionsBody=Administrator har anmodet at du oppdaterer din {2} konto. Klikk p\u00E5 lenken nedenfor for \u00E5 starte denne prosessen\n\n{0}\n\nDenne lenken vil utl\u00F8pe om {1} minutter.\n\nHvis du ikke var klar over at administrator har bedt om dette, vennligst ignorer denne meldingen og ingenting vil bli endret. -executeActionsBodyHtml=

      Administrator har anmodet at du oppdaterer din {2} konto. Klikk p\u00E5 linken nedenfor for \u00E5 starte denne prosessen.

      {0}

      Denne lenken vil utl\u00F8pe om {1} minutter.

      Hvis du ikke var klar over at administrator har bedt om dette, ignorer denne meldingen og ingenting vil bli endret.

      -eventLoginErrorSubject=Innlogging feilet -eventLoginErrorBody=Et mislykket innloggingsfors\u00F8k ble oppdaget p\u00E5 din konto p\u00E5 {0} fra {1}. Hvis dette ikke var deg, vennligst kontakt administrator. -eventLoginErrorBodyHtml=

      Et mislykket innloggingsfors\u00F8k ble oppdaget p\u00E5 din konto p\u00E5 {0} fra {1}. Hvis dette ikke var deg, vennligst kontakt administrator.

      -eventRemoveTotpSubject=Fjern engangskode -eventRemoveTotpBody=Engangskode ble fjernet fra kontoen din p\u00E5 {0} fra {1}. Hvis dette ikke var deg, vennligst kontakt administrator. -eventRemoveTotpBodyHtml=

      Engangskode ble fjernet fra kontoen din p\u00E5 {0} fra {1}. Hvis dette ikke var deg, vennligst kontakt administrator.

      -eventUpdatePasswordSubject=Oppdater passord -eventUpdatePasswordBody=Ditt passord ble endret i {0} fra {1}. Hvis dette ikke var deg, vennligst kontakt administrator. -eventUpdatePasswordBodyHtml=

      Ditt passord ble endret i {0} fra {1}. Hvis dette ikke var deg, vennligst kontakt administrator.

      -eventUpdateTotpSubject=Oppdater engangskode -eventUpdateTotpBody=Engangskode ble oppdatert for kontoen din p\u00E5 {0} fra {1}. Hvis dette ikke var deg, vennligst kontakt administrator. -eventUpdateTotpBodyHtml=

      Engangskode ble oppdatert for kontoen din p\u00E5 {0} fra {1}. Hvis dette ikke var deg, vennligst kontakt administrator.

      diff --git a/ansible/artifacts/sunbird/email/messages/messages_pt_BR.properties b/ansible/artifacts/sunbird/email/messages/messages_pt_BR.properties deleted file mode 100644 index cfe973767d..0000000000 --- a/ansible/artifacts/sunbird/email/messages/messages_pt_BR.properties +++ /dev/null @@ -1,19 +0,0 @@ -emailVerificationSubject=Verifica\u00E7\u00E3o de e-mail -emailVerificationBody=Algu\u00E9m criou uma conta {2} com este endere\u00E7o de e-mail. Se foi voc\u00EA, clique no link abaixo para verificar o seu endere\u00E7o de email\n\n{0}\n\nEste link ir\u00E1 expirar dentro de {1} minutos.\n\nSe n\u00E3o foi voc\u00EA que criou esta conta, basta ignorar esta mensagem. -emailVerificationBodyHtml=

      Algu\u00E9m criou uma conta {2} com este endere\u00E7o de e-mail. Se foi voc\u00EA, clique no link abaixo para verificar o seu endere\u00E7o de email

      {0}

      Este link ir\u00E1 expirar dentro de {1} minutos.

      Se n\u00E3o foi voc\u00EA que criou esta conta, basta ignorar esta mensagem.

      -identityProviderLinkSubject=Vincular {0} -identityProviderLinkBody=Algu\u00E9m quer vincular sua conta "{1}" com a conta "{0}" do usu\u00E1rio {2} . Se foi voc\u00EA, clique no link abaixo para vincular as contas.\n\n{3}\n\nEste link ir\u00E1 expirar em {4} minutos.\n\nSe voc\u00EA n\u00E3o quer vincular a conta, apenas ignore esta mensagem. Se voc\u00EA vincular as contas, voc\u00EA ser\u00E1 capaz de logar em {1} atr\u00E1v\u00E9s de {0}. -identityProviderLinkBodyHtml=

      Algu\u00E9m quer vincular sua conta {1} com a conta {0} do usu\u00E1rio {2} . Se foi voc\u00EA, clique no link abaixo para vincular as contas.

      {3}

      Este link ir\u00E1 expirar em {4} minutos.

      Se voc\u00EA n\u00E3o quer vincular a conta, apenas ignore esta mensagem. Se voc\u00EA vincular as contas, voc\u00EA ser\u00E1 capaz de logar em {1} atr\u00E1v\u00E9s de {0}.

      -passwordResetSubject=Redefini\u00E7\u00E3o de senha -eventLoginErrorSubject=Erro de login -eventLoginErrorBody=Uma tentativa de login mal sucedida para a sua conta foi detectada em {0} de {1}. Se n\u00E3o foi voc\u00EA, por favor, entre em contato com um administrador. -eventLoginErrorBodyHtml=

      Uma tentativa de login mal sucedida para a sua conta foi detectada em {0} de {1}. Se n\u00E3o foi voc\u00EA, por favor, entre em contato com um administrador.

      -eventRemoveTotpSubject=Remover TOTP -eventRemoveTotpBody=TOTP foi removido da sua conta em {0} de {1}. Se n\u00E3o foi voc\u00EA, por favor, entre em contato com um administrador. -eventRemoveTotpBodyHtml=

      TOTP foi removido da sua conta em {0} de {1}. Se n\u00E3o foi voc\u00EA, por favor, entre em contato com um administrador.

      -eventUpdatePasswordSubject=Atualiza\u00E7\u00E3o de senha -eventUpdatePasswordBody=Sua senha foi alterada em {0} de {1}. Se n\u00E3o foi voc\u00EA, por favor, entre em contato com um administrador. -eventUpdatePasswordBodyHtml=

      Sua senha foi alterada em {0} de {1}. Se n\u00E3o foi voc\u00EA, por favor, entre em contato com um administrador.

      -eventUpdateTotpSubject=Atualiza\u00E7\u00E3o TOTP -eventUpdateTotpBody=TOTP foi atualizado para a sua conta em {0} de {1}. Se n\u00E3o foi voc\u00EA, por favor, entre em contato com um administrador. -eventUpdateTotpBodyHtml=

      TOTP foi atualizado para a sua conta em {0} de {1}. Se n\u00E3o foi voc\u00EA, por favor, entre em contato com um administrador.

      \ No newline at end of file diff --git a/ansible/artifacts/sunbird/email/messages/messages_ru.properties b/ansible/artifacts/sunbird/email/messages/messages_ru.properties deleted file mode 100644 index 135578863b..0000000000 --- a/ansible/artifacts/sunbird/email/messages/messages_ru.properties +++ /dev/null @@ -1,25 +0,0 @@ -# encoding: utf-8 -emailVerificationSubject=Подтверждение E-mail -emailVerificationBody=Кто-то создал учетную запись {2} с этим E-mail. Если это были Вы, нажмите на следующую ссылку для подтверждения вашего email\n\n{0}\n\nЭта ссылка устареет через {1} минут.\n\nЕсли Вы не создавали учетную запись, просто проигнорируйте это письмо. -emailVerificationBodyHtml=

      Кто-то создал учетную запись {2} с этим E-mail. Если это были Вы, нажмите по ссылке для подтверждения вашего E-mail

      {0}

      Эта ссылка устареет через {1} минут.

      Если Вы не создавали учетную запись, просто проигнорируйте это письмо.

      -identityProviderLinkSubject=Ссылка {0} -identityProviderLinkBody=Кто-то хочет связать вашу учетную запись "{1}" с "{0}" учетной записью пользователя {2} . Если это были Вы, нажмите по следующей ссылке, чтобы связать учетные записи\n\n{3}\n\nЭта ссылка устареет через {4} минут.\n\nЕсли это не хотите объединять учетные записи, просто проигнориуйте это письмо. После объединения учетных записей Вы можете войти в {1} через {0}. -identityProviderLinkBodyHtml=

      Кто-то хочет связать вашу учетную запись {1} с {0} учетной записью пользователя {2} . Если это были Вы, нажмите по следующей ссылке, чтобы связать учетные записи

      {3}

      Эта ссылка устареет через {4} минут.

      Если это не хотите объединять учетные записи, просто проигнориуйте это письмо. После объединения учетных записей Вы можете войти в {1} через {0}.

      -passwordResetSubject=Сброс пароля -passwordResetBody=Кто-то только что запросил изменение пароля от Вашей учетной записи {2}. Если это были Вы, нажмите на следующую ссылку, чтобы сбросить его.\n\n{0}\n\nЭта ссылка устареет через {1} минут.\n\nЕсли Вы не хотите сбрасывать пароль, просто проигнорируйте это письмо. -passwordResetBodyHtml=

      Кто-то только что запросил изменение пароля от Вашей учетной записи {2}. Если это были Вы, нажмите на следующую ссылку, чтобы сбросить его.

      {0}

      Эта ссылка устареет через {1} минут.

      Если Вы не хотите сбрасывать пароль, просто проигнорируйте это письмо и ничего не изменится.

      -executeActionsSubject=Обновление Вашей учетной записи -executeActionsBody=Администратор просит Вас обновить данные Вашей учетной записи {2}. Нажмите по следующей ссылке чтобы начать этот процесс.\n\n{0}\n\nЭта ссылка устареет через {1} минут.\n\nЕсли у вас есть подозрения, что администратор не мог сделать такой запрос, просто проигнорируйте это письмо. -executeActionsBodyHtml=

      Администратор просит Вас обновить данные Вашей учетной записи {2}. Нажмите по следующей ссылке чтобы начать этот процесс.

      {0}

      Эта ссылка устареет через {1} минут.

      Если у вас есть подозрения, что администратор не мог сделать такой запрос, просто проигнорируйте это письмо.

      -eventLoginErrorSubject=Ошибка входа -eventLoginErrorBody=Была зафиксирована неудачная попытка входа в Вашу учетную запись {0} с {1}. Если это были не Вы, пожалуйста, свяжитесь с администратором. -eventLoginErrorBodyHtml=

      Была зафиксирована неудачная попытка входа в Вашу учетную запись {0} с {1}. Если это были не Вы, пожалуйста, свяжитесь с администратором.

      -eventRemoveTotpSubject=Удалить TOTP -eventRemoveTotpBody=TOTP был удален из вашей учетной записи {0} c {1}. Если это были не Вы, пожалуйста, свяжитесь с администратором. -eventRemoveTotpBodyHtml=

      TOTP был удален из вашей учетной записи {0} c {1}. Если это были не Вы, пожалуйста, свяжитесь с администратором.

      -eventUpdatePasswordSubject=Обновление пароля -eventUpdatePasswordBody=Ваш пароль был изменен в {0} с {1}. Если это были не Вы, пожалуйста, свяжитесь с администратором. -eventUpdatePasswordBodyHtml=

      Ваш пароль был изменен в {0} с {1}. Если это были не Вы, пожалуйста, свяжитесь с администратором.

      -eventUpdateTotpSubject=Обновление TOTP -eventUpdateTotpBody=TOTP был обновлен в вашей учетной записи {0} с {1}. Если это были не Вы, пожалуйста, свяжитесь с администратором. -eventUpdateTotpBodyHtml=

      TOTP был обновлен в вашей учетной записи {0} с {1}. Если это были не Вы, пожалуйста, свяжитесь с администратором.

      diff --git a/ansible/artifacts/sunbird/email/messages/messages_sv.properties b/ansible/artifacts/sunbird/email/messages/messages_sv.properties deleted file mode 100644 index 5b5ac6d582..0000000000 --- a/ansible/artifacts/sunbird/email/messages/messages_sv.properties +++ /dev/null @@ -1,25 +0,0 @@ -# encoding: utf-8 -emailVerificationSubject=Verifiera e-post -emailVerificationBody=Någon har skapat ett {2} konto med den här e-postadressen. Om det var du, klicka då på länken nedan för att verifiera din e-postadress\n\n{0}\n\nDen här länken kommer att upphöra inom {1} minuter.\n\nOm det inte var du som skapade det här kontot, ignorera i så fall det här meddelandet. -emailVerificationBodyHtml=

      Någon har skapat ett {2} konto med den här e-postadressen. Om det var du, klicka då på länken nedan för att verifiera din e-postadress

      {0}

      Den här länken kommer att upphöra inom {1} minuter.

      Om det inte var du som skapade det här kontot, ignorera i så fall det här meddelandet.

      -identityProviderLinkSubject=Länk {0} -identityProviderLinkBody=Någon vill länka ditt "{1}" konto med "{0}" kontot tillhörande användaren {2} . Om det var du, klicka då på länken nedan för att länka kontona\n\n{3}\n\nDen här länken kommer att upphöra inom {4} minuter.\n\nOm du inte vill länka kontot, ignorera i så fall det här meddelandet. Om du länkar kontona, så kan du logga in till {1} genom {0}. -identityProviderLinkBodyHtml=

      Någon vill länka ditt {1} konto med {0} kontot tillhörande användaren {2} . Om det var du, klicka då på länken nedan för att länka kontona

      {3}

      Den här länken kommer att upphöra inom {4} minuter.

      Om du inte vill länka kontot, ignorera i så fall det här meddelandet. Om du länkar kontona, så kan du logga in till {1} genom {0}.

      -passwordResetSubject=Återställ lösenord -passwordResetBody=Någon har precis bett om att ändra ditt {2} kontos användaruppgifter. Om det var du, klicka då på länken nedan för att återställa dem.\n\n{0}\n\nDen här länken och koden kommer att upphöra inom {1} minuter.\n\nOm du inte vill återställa dina kontouppgifter, ignorera i så fall det här meddelandet så kommer inget att ändras. -passwordResetBodyHtml=

      Någon har precis bett om att ändra ditt {2} kontos användaruppgifter. Om det var du, klicka då på länken nedan för att återställa dem.

      {0}

      Den här länken och koden kommer att upphöra inom {1} minuter.

      Om du inte vill återställa dina kontouppgifter, ignorera i så fall det här meddelandet så kommer inget att ändras.

      -executeActionsSubject=Uppdatera Ditt Konto -executeActionsBody=Din administratör har precis bett om att du skall uppdatera ditt {2} konto. Klicka på länken för att påbörja processen.\n\n{0}\n\nDen här länken kommer att upphöra inom {1} minuter.\n\nOm du är omedveten om att din administratör har bett om detta, ignorera i så fall det här meddelandet så kommer inget att ändras. -executeActionsBodyHtml=

      Din administratör har precis bett om att du skall uppdatera ditt {2} konto. Klicka på länken för att påbörja processen.

      {0}

      Den här länken kommer att upphöra inom {1} minuter.

      Om du är omedveten om att din administratör har bett om detta, ignorera i så fall det här meddelandet så kommer inget att ändras.

      -eventLoginErrorSubject=Inloggningsfel -eventLoginErrorBody=Ett misslyckat inloggningsförsök har upptäckts på ditt konto på {0} från {1}. Om det inte var du, vänligen kontakta i så fall en administratör. -eventLoginErrorBodyHtml=

      Ett misslyckat inloggningsförsök har upptäckts på ditt konto den {0} från {1}. Om det inte var du, vänligen kontakta i så fall en administratör.

      -eventRemoveTotpSubject=Ta bort TOTP -eventRemoveTotpBody=TOTP togs bort från ditt konto den {0} från {1}. Om det inte var du, vänligen kontakta i så fall en administratör. -eventRemoveTotpBodyHtml=

      TOTP togs bort från ditt konto den {0} från {1}. Om det inte var du, vänligen kontakta i så fall en administratör.

      -eventUpdatePasswordSubject=Uppdatera lösenord -eventUpdatePasswordBody=Ditt lösenord ändrades den {0} från {1}. Om det inte var du, vänligen kontakta i så fall en administratör. -eventUpdatePasswordBodyHtml=

      Ditt lösenord ändrades den {0} från {1}. Om det inte var du, vänligen kontakta i så fall en administratör.

      -eventUpdateTotpSubject=Uppdatera TOTP -eventUpdateTotpBody=TOTP uppdaterades för ditt konto den {0} från {1}. Om det inte var du, vänligen kontakta i så fall en administratör. -eventUpdateTotpBodyHtml=

      TOTP uppdaterades för ditt konto den {0} från {1}. Om det inte var du, vänligen kontakta i så fall en administratör.

      \ No newline at end of file diff --git a/ansible/artifacts/sunbird/email/text/email-test.ftl b/ansible/artifacts/sunbird/email/text/email-test.ftl deleted file mode 100644 index 19942c791f..0000000000 --- a/ansible/artifacts/sunbird/email/text/email-test.ftl +++ /dev/null @@ -1 +0,0 @@ -${msg("emailTestBody", realmName)} \ No newline at end of file diff --git a/ansible/artifacts/sunbird/email/text/email-verification.ftl b/ansible/artifacts/sunbird/email/text/email-verification.ftl deleted file mode 100644 index 0ae601f723..0000000000 --- a/ansible/artifacts/sunbird/email/text/email-verification.ftl +++ /dev/null @@ -1 +0,0 @@ -${msg("emailVerificationBody",link, linkExpiration, realmName)} \ No newline at end of file diff --git a/ansible/artifacts/sunbird/email/text/event-login_error.ftl b/ansible/artifacts/sunbird/email/text/event-login_error.ftl deleted file mode 100644 index 7835c91464..0000000000 --- a/ansible/artifacts/sunbird/email/text/event-login_error.ftl +++ /dev/null @@ -1 +0,0 @@ -${msg("eventLoginErrorBody",event.date,event.ipAddress)} \ No newline at end of file diff --git a/ansible/artifacts/sunbird/email/text/event-remove_totp.ftl b/ansible/artifacts/sunbird/email/text/event-remove_totp.ftl deleted file mode 100644 index 8930b64d57..0000000000 --- a/ansible/artifacts/sunbird/email/text/event-remove_totp.ftl +++ /dev/null @@ -1 +0,0 @@ -${msg("eventRemoveTotpBody",event.date, event.ipAddress)} \ No newline at end of file diff --git a/ansible/artifacts/sunbird/email/text/event-update_password.ftl b/ansible/artifacts/sunbird/email/text/event-update_password.ftl deleted file mode 100644 index 754daac5c3..0000000000 --- a/ansible/artifacts/sunbird/email/text/event-update_password.ftl +++ /dev/null @@ -1 +0,0 @@ -${msg("eventUpdatePasswordBody",event.date, event.ipAddress)} \ No newline at end of file diff --git a/ansible/artifacts/sunbird/email/text/event-update_totp.ftl b/ansible/artifacts/sunbird/email/text/event-update_totp.ftl deleted file mode 100644 index 3a7b0f7123..0000000000 --- a/ansible/artifacts/sunbird/email/text/event-update_totp.ftl +++ /dev/null @@ -1 +0,0 @@ -${msg("eventUpdateTotpBody",event.date, event.ipAddress)} \ No newline at end of file diff --git a/ansible/artifacts/sunbird/email/text/executeActions.ftl b/ansible/artifacts/sunbird/email/text/executeActions.ftl deleted file mode 100644 index a33758f152..0000000000 --- a/ansible/artifacts/sunbird/email/text/executeActions.ftl +++ /dev/null @@ -1 +0,0 @@ -${msg("executeActionsBody",link, linkExpiration, realmName)} \ No newline at end of file diff --git a/ansible/artifacts/sunbird/email/text/identity-provider-link.ftl b/ansible/artifacts/sunbird/email/text/identity-provider-link.ftl deleted file mode 100644 index a8c0d54e92..0000000000 --- a/ansible/artifacts/sunbird/email/text/identity-provider-link.ftl +++ /dev/null @@ -1 +0,0 @@ -${msg("identityProviderLinkBody", identityProviderAlias, realmName, identityProviderContext.username, link, linkExpiration)} \ No newline at end of file diff --git a/ansible/artifacts/sunbird/email/text/password-reset.ftl b/ansible/artifacts/sunbird/email/text/password-reset.ftl deleted file mode 100644 index 3520c418e3..0000000000 --- a/ansible/artifacts/sunbird/email/text/password-reset.ftl +++ /dev/null @@ -1 +0,0 @@ -${msg("passwordResetBodyHtml",link,(linkExpiration/60)?string["0"],realmName)} diff --git a/ansible/artifacts/sunbird/email/theme.properties b/ansible/artifacts/sunbird/email/theme.properties deleted file mode 100644 index 6b2b6e8fac..0000000000 --- a/ansible/artifacts/sunbird/email/theme.properties +++ /dev/null @@ -1 +0,0 @@ -locales=ca,de,en,es,fr,it,ja,lt,no,pt-BR,ru,sv \ No newline at end of file diff --git a/ansible/artifacts/sunbird/login/login-page-expired.ftl b/ansible/artifacts/sunbird/login/login-page-expired.ftl deleted file mode 100644 index b266614420..0000000000 --- a/ansible/artifacts/sunbird/login/login-page-expired.ftl +++ /dev/null @@ -1,18 +0,0 @@ -<#import "template.ftl" as layout> -<@layout.registrationLayout; section> - <#if section = "title"> - ${msg("pageExpiredTitle")} - <#elseif section = "form"> -
      -
      -
      -
      -

      - ${msg("pageExpiredMsg1")} ${msg("doClickHere")}. - ${msg("pageExpiredMsg2")} ${msg("doClickHere")}. -

      -
      -
      -
      - - diff --git a/ansible/artifacts/sunbird/login/login-reset-password.ftl b/ansible/artifacts/sunbird/login/login-reset-password.ftl deleted file mode 100644 index 5d81b0c7ad..0000000000 --- a/ansible/artifacts/sunbird/login/login-reset-password.ftl +++ /dev/null @@ -1,58 +0,0 @@ -<#import "template.ftl" as layout> -<@layout.registrationLayout displayInfo=true; section> - <#if section = "title"> - ${msg("emailForgotTitle")} - <#elseif section = "form"> - -
      -
      -
      -
      -
      - -
      ${msg("emailForgotTitle")}
      -
      -
      - ${msg("enterEmailPhonenumberToGetCode")} -
      -
      - <#if message?has_content> -
      - ${message.summary} -
      - -
      -
      -
      - - - -
      -
      - -
      -
      - -
      -
      -
      -
      - <#elseif section = "info" > - - diff --git a/ansible/artifacts/sunbird/login/login-update-password.ftl b/ansible/artifacts/sunbird/login/login-update-password.ftl deleted file mode 100644 index 434a269858..0000000000 --- a/ansible/artifacts/sunbird/login/login-update-password.ftl +++ /dev/null @@ -1,64 +0,0 @@ -<#import "template.ftl" as layout> -<@layout.registrationLayout displayInfo=true; section> - <#if section = "title"> - ${msg("updatePasswordTitle")} - <#elseif section = "form"> -
      -
      -
      -
      -
      - -
      ${msg("newPasswordTitle")}
      -
      -
      - <#if message?has_content> -
      - ${message.summary} -
      - -
      -
      -
      - - - -
      -
      - - - -
      -
      - -
      -
      - -
      -
      -
      -
      - - diff --git a/ansible/artifacts/sunbird/login/login.ftl b/ansible/artifacts/sunbird/login/login.ftl deleted file mode 100644 index 1cc22c9e37..0000000000 --- a/ansible/artifacts/sunbird/login/login.ftl +++ /dev/null @@ -1,97 +0,0 @@ -<#import "template.ftl" as layout> -<@layout.registrationLayout displayInfo=social.displayInfo; section> -<#if section = "title"> - ${msg("loginTitle",(realm.displayName!''))} - <#elseif section = "header"> - <#elseif section = "form"> - <#if realm.password> -
      -
      -
      -
      -
      - -
      ${msg("doSignIn")}
      -
      -
      - <#if message?has_content> -
      - ${message.summary} -
      - -
      suceess
      -
      error
      -
      -
      -
      - - - <#if usernameEditDisabled??> - - <#else> - - -
      -
      -
      - - -
      - -
      -
      - -
      - <#if realm.resetPasswordAllowed> - ${msg("doForgotPassword")} - -
      -

      OR

      -
      - <#if realm.password && social.providers??> - - - - -
      - <#if realm.password && realm.registrationAllowed && !usernameEditDisabled??> -
      -
      - ${msg("noAccount")} ${msg("doRegister")} to access relevant learning material and enroll for courses. -
      -
      - -
      -
      -
      -
      -
      -
      - - - diff --git a/ansible/artifacts/sunbird/login/resources/css/fonts/notosans/cyrillic-ext.woff2 b/ansible/artifacts/sunbird/login/resources/css/fonts/notosans/cyrillic-ext.woff2 deleted file mode 100644 index 1d76abd4cda38c17a67f5173eb9ad648cab61c8c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21740 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 diff --git a/ansible/artifacts/sunbird/login/resources/css/fonts/notosans/devanagari.woff2 b/ansible/artifacts/sunbird/login/resources/css/fonts/notosans/devanagari.woff2 deleted file mode 100644 index f228192f296147f3df3b60aca44a812819631e34..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32696 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 diff --git a/ansible/artifacts/sunbird/login/resources/css/fonts/notosans/latin-ext.woff2 b/ansible/artifacts/sunbird/login/resources/css/fonts/notosans/latin-ext.woff2 deleted file mode 100644 index f330caf6dadef7ee58c8341d2812312af1e770e2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32276 zcmV)JK)b(pPew8T0RR910Dcqz5dZ)H0THwS0DZ9l0RR9100000000000000000000 z0000QQX7tD95M!A0D^1?fqn^(G!YOAgVa=mp>zw1C;$OA0we>JOaveWgBS-O41^jR z1M)S>wq2A0-9aHiy{}Ox(`}w|JE;Va_rZj_=yoFF{Zm}_|DTbZ$WXuyl2)xce>kG7 z3!O2WyD^Ikj>TvMcG!sbz=b1-dDlaqn`7y1OPp=8SHi~O@KtB2vN~rSX&rUtehwNN z*6(XyUX~W#yz|BW+c{w(0s=fAmJ{-2VysUx;zcN=~KPV&OAKlXQ zaEp+I$;wp7@SLO280fcE;1a=(^QKw_#x9!?tLnrH{gZ$HU#*Sq^X|vUhyX+oLpp;q z2ARSMCxUoCdLQohyY1taSVoiHz(dlIUq+g>Od}EcMA4`lstx`H?`FR|9@vl&e2Rq7 zY#rVi(lDLmh@X^h2 z>G;U|wKC-_`)BF&y|VM4{yv@dz62O|NF}Qc`s@#+;7&?M6v+^|P$aK}QzRP_NNJ>3 zrQWv9Jx4!n#kU-{wBsI2DOX?Zw|^yUW+;)FLrW#m77fYMn@fl;+QcMz-jIG1kpLKg zZOTefZ0uPzqflpHAO>J0R$%s=Q80`KbJ&QLpn{b%dg@%XTf4gJJ9wZuU%((;(hE=t z2gq+Ir~8GOH7kIBaKZ`dc^t>%3uNkIT$-`0T}WOC`xb$QneW$KI}UZGWEW+-$as!gyLlAIE9@nbSu23>bE zrLwi{l+Gcf;(ntQ)3Y;s0F8|^z`l2_*Cv;lds+HL+?IuKnc2z0-Q@#;E0DeYRlvek z*a`zIbcInpY!iFQN$_EXN|XeqFMHZ=`(xvKm_H)qbTT9-%(!Z(mP2Qkm`1B3Y$1op z^L&*ubf+a8$0$?#EY)~&VI}n&hSG7mu7jzZh@=x(Iy~V#USX8E5 zDWTl3-6e?8jHmdphV6(A4S0`JdP+D_A=6b-2 zRsc0+6+odTTn8goSrb$M6n7yiqp--1RSN`YnfSOw0R^@|k$r=4SxAwPtH;u#c-mB$ zk~7_|x;&@RE_?>tP~v`ZZkiQU2?lc2{nS%^R|dK%_HK*1EdKXUV1g-3V+J$%mf8G| zIm}}ri&;t%YBsZlEPi4u+u6x(N-4+4UiNd4IvO~_QI2zxQ=H~3=ebA=t+Zp|DmQq{ zQ=apJzv-qI7kq**Fbn}4l#{k{(V7#TsT|ok20sS7r36VMtl048%U^&JWe6617+fF- z3f64dbL7m08xLMel_Og6@pO_iwP;;Ct_wZ-3>XUaSV#UCWzS*m;eH<8eaPudzF+x? z-~J6@Om}9nIDc)O)#v;QM&O6_%<35nY<^}O-jKKVyc=B;L2r1! z(0mwjuz~GvsTd{>+7i+EwN27*x%*Px6vlEu^WTH1P6zu z@XoLrE`^^oe`}wkP1>gOK3kve8Li%{;eSg_sY%sPlPag8E4vbFdrhkJ@mAikuOy&! zqgg+GdHMEQ*YR|yJlp;SCXK{<=$#dR^-{JPa0D7C`PJ`}VIuMM%}(GAz>}1d&o<07 z;-DDO{sK)@##^#k{XYCG)di;*S$DeqVgh6>ctaYUu9$|dl}p9KRpe|Y zosyC}cWmFbb<5^W8#fFO4G#48tyvw5u3|4m#L$vpptq;Hv!mVrA8xWEv1H_j>(~V_CBl36bq?Mafv6!ayj8=HW5pUDX)EwASzwb{sQSJDTxH=cG!+TDx>&G zmeCfe6pa^obh=6LH}`m*Csxz$KqOMEIs}f^QtGIjsXMZj?Nf={*^yzHS_jMrx1;l^ zb>ii54Lk0VH9JWaoKE5Q&)ml05dXYBRjn8ICn7^$F(dwhc0{@@?&xh``#il#x>4W zOD59P>E12`z0m-p&VNWO_S>)T3T@((4LtQiE`y|GL@qiC3R5h{SwmEDq|I(EgigKl z0CU`~F6X#xQG|klBz6mn6i|6+V!*1Ct)|~2C?ypa7pD#6RG8LnPpMW-vdCs366{~A z!iSOo+cM}QSEn&dEf@}!od?+n1>~$wMDSYCh)u2sEebQjn;;FwP2?=;l;_iy>Qk;^ zM+XUJEEcg+)Ux5ACz^-Mas#CYHeQ=SY9E}Pn_>a%`CllRvnWWn44SZFihOc|qBn*< z1z~UmJ+U_E*cZxpppJzylP%HlOg)6xW~d*bwrwiwY6bby({fm-5m{m15l= zQD3f`@G>j@@mw^6H0q(uPoV~@F_YC_5vgE=1+h^HW|2_oW@%bed&MG!B8(78;SokM zj7nTvTlXj|nH1zShM-N0b}bw(AXyblU8^^Mxwt9F6c@GhSq-Y$HIgaUZ!HNxO{P zE4mW7SFRW?2ZzrG0O&oM@g_&OjFmRsRYzTnc?uv&TpU#J!bL%oRsxqlW(xCCp8J~N zd81aXvn>MWQ~VO4fHMP=xMOmZas?ir1f-qr z1A&3x;^;Ty%Osq@cl{57GcjW+y%r1raF5rLck8=MUIY-%09gAju;hQ}dH`Uy4&0BV z3~L^ip-XCgl=55t$mNb;E_A=VZdH9*&;q?ql7Yx8@!jVNIiliPZD;Stt&wnI#0y)n zs_B<-XSb^Xy%&UC{dluS@uO%&{K`5Rc-M6laOgG4%H9cxfeovFyINfU4~y0H9rrVe zKp%RQj~3>vMBabg{bF^xmZ6fism=snwDy;8YQDn=@29&6h+zX!drh~Jmp6!(*r`h3J*i>gK`V(Vzw?V#m= z=ufNkpQNMD!Zxm^_~hS1?TJd?9WVCAcu#djyG(FZ1&E1Mr?$1qsJK>FM*E9~eL8JH zGy7TJ=$?0gGfE5Vr6##zG#iIrj7-^N7*!CnIx57%0JXY>JbSTPTIzBRaz``}p`JgF5PQTb3n(w;EANN5PUVO+itwU?GI%5t?4?+pO$=03Wc+!PJ|4{Oq)u*zso!IeT{%GelT zoq@vffF6lyC->T`>PD>^!_++TGI1kj3^C99Dq*2IF-D=zos!oEMx=e-G{#BRWmpMO z>&9=yB)2St7!}EbwOnV^Yn5GbHn`l$O@(NuT?NNFQ+9Z(tz=4(an^_mQk=bKcl-Zr zoQ!Zfq4AVP_f094=*;NszF<%Ikos9)_>7HtAgI>&{RpcBCeau)qOc$eQ9HA}Bqm8_PLCKWlwpLG(CIAz z9+lRJfJX@AM9y5PKsN^64z8duf@zGLhX8fk*cHtNE2ckUsGEOI)g!!A#_e^2V6c5eqf#jEge17{Kp6C>K4Sr2bcCJ zJf~Q>4TUiT3S60Ml$eVebusC=o0`#D&FR6xc(5? zPHo@TrxV&cpwSrjcacYhpR^azs4Sx2N2T$ZMs!SbG3S{xRHnB+`|-=1WP-2MJKPK8 zge&6xUcyjNqi1g?eBrmwl!H6Nat8%DyF;?2z_sW^XNV#=r8i4*;>k@I)TxC?YcG@B zoO8n%W*4oQ%_^PW0^90O1yz)lpuv>H0OQ-RRG`WsWgNS}n?IHF=@1_-#Av96-{gVU zH(a3v0ReV-u3^xtKcMbX8}FgWga_Huih@L%`hjfqF$eYDx*LljJBZ8*$(?Z1(!eGR zz;NDrGbVfGZbm55(6;4)l>EFN+L^helPk1$8;Ix?Bs#9RZTT{HblAi52d*KAUZo;k z>@9+f^R@HPVVwrS#g(h*wG2N&V3xM(Ps4XUO>DKbX9-?YuW(Q-#^(vK;N{Y81dL%= z1^`eoB_qDHCl$POLe(6vIp7W%L8it}@KkJ_KZVqmn@PJ3p>$mGeZmd#d}a+ig@lYM zJX{*nMd$aSZJ=k`(m|HjA;6uWdGWE4vnL2pzhjuhbRvB4qVZ@)LDs7ay{k)%Df^4) zs4%sk!#dUL>kr(U;wP3;rXUM=VU@x&@}O@7&`$Y!dJ}8KM`}^7lfZ|w(1xpZ99$q^ zs0BAgln|gbKu)*W0A@#Q?LmU4R08+jwer{N_Z{+EY9ESc?MJ$!Gz;dfhO`53Ewu}W zAyDg7L1DIN{$n^oCl&_YnAx!g{(hm%9WQKp3-fnMezKP8* zs7&(l^{J3GH?;yF*qhw0Sd!~JK2ou^xNCsHT8tB<%OSQooh93?SC-fE3 ztj{v+=Ruw)&2-3R%&#I%`lT?eDH|;%t%ExAz`hJb3hTQqS5fL&11xjWl+wZowb%OB zOKj1mJU^fioOUbM*!_Bt06-LdpkdIShK-1~Z4sahIm0H?2rL|L<+q(Tz7E&n1IFol z(}1W?eBmW;l*l~c>kKr*5kfYLNpBd&M8J*xrnGL*ZBjii!eNq=~RO@IAOt>zPNYU7(;c8f&tBH<=TTViVhwrJV!V5#0}PGh{v|qC{Qj^E!Azn$Z1F6Eki$WRR{R>apy^-8v$* z0qr;-U8k-JHL}MR@xLp@Op24?n)uY)SY8sp%7!^!Bqj|mpUc>wKj%=RjEF+vx~N43 zl38{M+>sA`Ox+EYc*Ppxsj+^n2gtQ9RBzFEp6l)PO4F9K@~aImct-59606ag+$(F` zi1#vgdm~~vpHd0Dt}X`z?rW+IvJ^8eTOp@?(7}}n(M5x>Q5%H@##rH8KR<0t@y&Jz zL0xnU^C14OsW<%&rzEZ%lDB#ATS5t!mryC2)|f&=6_}~spO#j7wMNzd*T%A>O>wKe zZKdrhudn_?m2-rm6pHDl7efws=ZXEi|l!23^F5 z&eK9_+snSl8rotj28mv6)Ie5`JCKBxJ=IFEdt!VcxPAMj~3M`zxc7 z;lW!FwQ_5@L~&`$yBgm&#A*N=v!$&?wDi3`#%5y|3q}N|8E*$ARCe9$}2aOke$268ls(4!gg(9jE!o;mbZISL%$&h1UQmt$2fId;hRx{TVHdSQQ=-0 z*Zzj}3MFQ=G9i$l@zdpM8-VWLNKWq~uUJ=zgCzR|wj=hsNsyqR6-s1oP+u%l@A>1h z%8~$qYcXKf;!-=Qbm?BHLty}PwAE`j8=yhfW<-hGr41aE#CG#>LUFALxbe@*2FeLA zV~mnP^H{uD^Mr*$-3jSEn#@)D#0fT8q8}oTW$0+QptYtxXg<|CXbzyoB!GU&lyuui ztlST#N&m>Yii2y6wCpoR_ie&CH|5*zYu>xu2Gia#{$VsARtd!fxO++4r!GSpC+@~i z@8JD4Ml3*g(`MaT^Ni8Y9wQ37lZXwW6swuJ?xG_bp+&Z=dX9>VV&j}?xj7!cU>uy= z2I=5RQ44l@x0X3{B!#bMdo}r?WYmqH-55eFUwjqOaMckpV#dy<9B>IeQ&>kTR*l6X+hN$MI z`*phM4M14tI?5V>F(j8F9M+o@Wx@J5$eIc$7maZ}YA`c17TWJ5bgH0!og==hZ;YCX z5PX5=g0>x9#q~u4AQKM* zoDPyEwj%+rWr%o-80J9G8y2dCD~{|WY;}~T&0>!W>e&|6FkM?(>B24Izeb9;3IYV5 zRY)Z(fZ06ay(%2G(z^Y4OF{x1@D%_apyhgRP^u!=(0K%W3yptT=?VQWsl()N1a45^ z{YC9=kh(;XqSpO^ffsjfG-lSKySHI!=nGB>umjE!iXt*CkDOWBUSRygIcS%Iwa<6% z|A=Fam4XLP48>&ci)Ou${$%k-S&^Os%`M*pXlgyg0Z0s@M;&UP(+1qNHmNK5+iKYJl~ z!WJ4vV?vDUTGbN<)fp{K`ShP&;q~fMSZ|4q5LELSH(RhUoqwxb5KgQC4BFbv{JM`* zlLqg!H_ew--{snir#{0E3D^IIj+>HNHq+qkfiPmu*CuNRHerV=1$($}XlVoal?nM75Q$XJ zZ;_ZRBLR%I14(uO!*>)3aMYjdAt5QRQp9ZPk}hcpKj3g!nwnS`8JQqVOiZnyhA^a_ z*TAA#-{QFR$Yi^8+hkiv>$v%S(PRls+qg1Y(rAm^<^Bn5NoSrQYo|!#0AUei|9laY zjo|35i^{p#9me#iZ*YWb)sL9HQOSqha%c4L({Q>uhAX^Bj@Y9Rz7d68meXUt8e}1OuREdGSE}zhkDh zO6>KkGVEp)0?m(1({)#lb_&4GqKI3I$zB99Yu+b!`#rftwEBS}w0@2@?@?Se`zxRT z57-Nz0zUQsrh%8|f<|&RE_wPMC|f)^IWGnZfaFZ|dX>F2ANgVk#&EyF&>)|DOC$eM z1k7LROwIZJn^K7E7lnUM&y>R~{&Rn-amwGRmyOBcWIsKwxW7Zxucp zOQ6J`eg=&?y)Zj6KQ}fk3!ss6ycOL>Ln6h38Sq8kg!ToAwo!(#Hy5Ctdw<&KfK|yE zuTABK)5it1M`tKU}qbE|%QguLwU@{_|Jl0ib%fZ>k1j~rHk?cx>z{PcP9hDX|{8r`$W(GT|zz4N`YR-?-kj&J}Df;^x5gya)>26<^aNIsc|f^tkJE@mF;B{ zPl27p*^bKcdz(9iZDvcecTKXvKLjI~fV8ns zw$E5!Mtw%dsdH^^4Ps%+jUIAM;w-ICa;nKAe91`?=D*y$O9*LT)7>Nz=JEuvr}>#^Lpxezel=cr>x8+fm))?yOGlt!rUu zDB7F?bV)_=1ZwbFQDxKG*1{ZeKj_*hKhc8Y0F}Iktg@x^PO$)3%J7@Igs*}RBOTBEM zh_7$B)FHb}cgTlL4XuaU+mxLqV}%j$qZ^HEy396)3p7AuDg~;5#_k<<(T5)tIM};Y zIGrA}mXBRnlzvjN++Ij}a%Yuv*F^E94>FCfZByU1($}do1Vuwtg6{wmB70(#uM^Zr zC!IUTS!NWPYiE9%D++eQy+)5@km0N!W}Ww-ZgzrL+Yu5o5BqO4eP0bW$K%X zBdR0os(>Kn+=p1yI+qXdmhqa`0a)NZS%nM7U z;xBnJPP)#zV7>(HOa=KyZEb?QLR_}iTY=oGj$E9&pw?I4#6fwRW4;;2+|y*KA(4RU zh*}sbRu5riEeCNQ7jPX&)`}dG)d=GPeBJ^6#c8FW(MM$19pPqSR+yFKGNU^=7EOK| zlAn{5hpTO_t)QXPZqB(2@`-|QW5Y{wcB1hglBDdTnKZ3%3U8H5h>6!9(-s-mBMvO6;r^Y5F7IipX z&$Wtd>jH2X^d^ERSlSrH&cylXgzcm=KynXc=>z^@_`^`W?6R5f36)pNmXHq zQplj?(MDlOeO~=h1<;IZuCldia83GE%~V@)<-yKU*|AZ;+11H=Y_ysW=ngE_}1?&2|~`zFxA zk%(7!Le04ElgHw-l6KDcxes78go5q)UCbl)D|HK3sg zB2}yq2dZoI+RF4^9I3PqD$2pfA;8WD;_&jV3`|4W-Wx@!8qZcJ2+Ha+^%`{&oupA? zDUpf(UQ`zj)`R+dE6y+a)n9x6QYuh-8}1w)SO)*G&4q$2oERmb!{jiE6R&Q`qyit8 z#2byY#+-=25INNncQHxid!#8(l{vS8mz8hA{E_paA%3of%J5E9R4xjV(DShgNGahh z=9-^q?K8X1R}0hjUX|p1GSiXo)s#OedHGR*HV%_~BP1j<`GWLXPe-pRK`dN8q^lM9 zU%sxXPm#+p*YRNM+mt^DSWqJLed_d4Wvik>|1!d2IU(vyNiZYBlzCntplWhBM= z>6kz@G)D3D*w|*ahGxM_`AYJ)WR}_It@z-qR5~PZeO(~SUF#MW zo8@{vO_9q&GA#}n8lREjXOwkyV?)!IZV)uHtjIGG?nm&GkiB(WLM{O2M>AVE=_dsF z8!?;4v0;14lv%In^-HUa<{2$VvE;-+%sfDdc%f7u`KZdSq#T)G#-qPKSJZSP%N%AN zDWM_rK*>SIRuLg1r6K$v6qJ%s;UvVC1QYNxji*Yo=r1fkJ;@6rRdW&kpf+3cPz&n{f|mg^!RF1~*$I2%2IET;+J%|*nIcqU49@H(u+to`_Yc_DJh zMUxg2f2Av{%M?4~;wrO>kLR=od_!|XUQ?V=xwSHw!c@Di$hDle+`Nom&RZyP@yn34 zXXnG4ipSnaFD;mBbZkNx&4(R4D|pszt>qw)Q1p`j9or>g{i|8?RON>x-kE1q&88*yw?l-Q45mC?qc0(9p!{FDL8IeFK z5E#VnJ;o^@Jvp@I+X7P(g93)%3C9KK!t^yDzjepd>p}i%sd*k@Fr|iYzx?n}KfJj) z?Jk_hD6M4vM63zl7b54?hmbgz{-E0P@spyw%;~icU%p09A`mZ*ks}BgTuk5eYGC-> zp?Gsff0&$E5oBlRUc)A(tL9*5leE{>Rki2na7HdWuv%x=&KyY42N)!wD8LmQRxTy+ zzx|BSp}B=6+QbxtrptE=F=x~}>W`$@u_3aGdmV~T4^CEc*_-&P8n#2|#MRXg9Gf13 zRY%2bvMiA??0rZ!R~2=~Ti6Wpn(u%6&329R{5bvP?r2XLlpV|&?fz^fy+VFoJ?f!|S9t}M{U zqf}Q#{pJk|HLi;n=w9y{H@{uxbVmG>{pM49?>HGBe<{a5`qxf+|=U;XEwj z_qMk$|Ml_WH53v2{vY_hI1&0u?E97Hw;W${vHiHBqWpMcr+mA%t!(m%p1AC~nMXnB zvld59`dZwekc&j~tX`cp{U#xFS?jE!-ws*VgO+ozk5qbsi0G}Tl1#(Z%FB9w0inny zxLAX_rKR!?(@g}8--;~FgubhKVc?HBw_4)*PQx$k@l2o6mK`Nd1l?|?I=bqlb|_c7 zYIhFR+3W8-Ud$=Yp=Hi*gK`Dyw_~kr^`6QL;i)^lWGB09_ohBI+wtl5g;Vr`DBfM; zW5saKvrcLXxV3P*H*`uR%h;yaO0fqT>ga0)Gmi|Xc-&3w`PT4(-Lv1p{bP^%=-+x? zW-2w;Y*Kmdprx>@lhD{fgQvEnusSz8-$^0!2ro)bAQ``op9}YH{bwD3a!n6M^gzO~ z73raAi{;BJq}^xFa&ZMqgo&fa;hkgdKwhc+?fU64x*(7!*h2I6d~eEHUkO3zI-&uc zrCx}KDPZal#EEz*=~9;rei8ivA~}iQdOUg_!trJ=ZBno`;n7*78%_EAVpoS^xG(l&UP7)!M~WzEB4;gDq+%QiON}HCS#qHnFyN z{J=G6I$2kdmF?lWZ;$ZNr>6xx2%xcK?w!U?!iL+5`S(Uof*b>zD z74uo3EBDV*K==s`6Rvt;pvDJ-@k@J^=anDO4$AV%=rl7n(MoMq>^&2?>{Vz3T;9OQ ziU8+=M-`$qF;C#K+1oJw7k_jeGJ;6F0379x6!)lVb^gkl50uEToBCyxCcrn!R+dzj z(?^-zY+$gJ-6+HNHm|==WB`yv(GHNN%SvE!QGbAP2&1hypJMJcrK zGAkZ*71kEk?H^G(Zaj}L4y9@kyMnMF+k74Aj&WVr4NThZ+|g@}R*v$dQfy>_VRYoA znIyl|OSOj&o-4`8K2><|_@%Nr+)}*x<66GzW4jG--_gcM7{}Z)O0-bt{9=6y*I9I$=napiWKhPR_zjs!?kcC9VRi#gRcphj zY}Y~v%`C{)&?vzoHl*F$u#|$VTivTFvDOdEa3&cQnJkMjT!KL6O+W;&2jVM~sxPH1x7)WUe{8~J-`Z8mvU z#)Xq@D~7Wu<`2Jr9afOMlqk=;0@4_UMBC^bFLm6ADpJHI>#7*UZ_?LX+OpG-v z>+d`9DqOiDQL?M5hFN)9$U0uJiZ_zz{%+9KtQgXk%0|3CZ~;70P-e+ZAmP8s!?VpL zw)a)~k#kyvs}x)JJU17@;RR_@F51IIi&fe*MQfWe%gg-DZ=#1MNPzOaC_+ZiH8C6c z1nQ*!_wDDf?K15@!Olg}$taQ)RFkrn;A(q*J|Z)nRfduUDLx0-?mO8gRki-MQR4KUP}6S-CdpJ9+DCl>0Jp& znfl(G?s-1@V7b>tv02k&vrOI|Vv5~j87g0?4j%JOFYpl=;VE)yJd47w=NGMG(M&_n zxl|n=WC~m;VEB{TgVU+8jvwQXzTzy%qv)xUn#jng+hI)$xUAZDwQ%kPCi;ZSq@{)I zWtcR-X5!Fkgd>D|fatyB2V8r12*o(zwfz(jID7y1KBlKaOxNATlP`x8S~= zN?zcow4x)Ys(`u*^?lz2m{7wHbh-|G)bt2i0X>KAosFiT2UH^_zzbscHc=lAu$3CR z$|YA5p6g4<`26JXhF=VWI!}lhs`FZ0ukx^SNpKjj?eQ?w~k- zxP!KnqYsiG=I(2E|G1I@B#Btz_eaYi=BRQE(jZ1c^{G9C{#i->F=uh*_C{?E7{td9 z0tNH)bFc$Vpv*4Z`CQ}^&ItDQ4)XK#3-wHjRZpv|C?1O2s{X+}Y$>w_gEh5P zDC-zHKr2CPf)(cVQ=jph4>U7f@4JmNk3|WJ~93U?qmjoA>gNt1h#QFy> z&E<_vdP#m%dLD-MXsPDb*7-oD%vMHMo*ak9E7nP?Qd|4r+Tk&vg=x4=1KbBvQ(rcMT5}4!J{5iCC^Y!}FG*jDcYQq| zPA`W7=jQz@;}nkjxBjo3RB7KKY}XL$t#m&lG(25>UOmx{7`u^non3i-;u!tj_n&?V>7K%qPyi=WLkz#Qr`Gv?MdZy*Bx;(e#Kiebk!L% zGq9+(<5RHbQ#$OmZNokrntU0^!j??CehVDDsGB#VgS=sR>i;p9if0{@|s0}Wkx+cwL{I#sXaxf3{Y z5%fA^m$#SD?SX>6H%n#qnEVfPigh%MNrAsDTLu5K?oAClUKikc)C_ut7s2at7Ug;; z)zGw>SJ~T-+*>_i>r?H4XQP(&5tV%61+X!c-2COGZNO`+`chyx0{xYwicM!QWVdYUX6PBf)d?a@pKTYBQfV33!?pXORZY4P0 z;ugz#T|-yb`@>Re=sW`A9d%O$9WP^b(_c45^{4vZcUPg8kBV@=S~g4MSt{7E(Thcn4J1ZC!?al3x%Zmrbo{rA#Bm!xQHnsNOJXZ27 zbXV0@T6wG^#P>*lt#QHAW270{;yJS9!6SQ7huMo&*Y{;i+XQ%|9DU+%Q7m2lF-jl9 zDmFm?v=pcO_V^AiZHjcrZmAf!v?lwaX0ffL>e0q(<=s0q(RFO`?I(BNDuLK~R1cmd zb^(Q}${xikJL{UD3(A8&FSg3`^rCxF>#5TNii4!;#v7BZ0{$R>FZ|8CXXwKW8WMS` zBn`KLbI%?5WCmXpU0E)@lGeO?;pugT+NG!4%_+rKR#Ug?6%4F5Y#4;B^61;?jcBD zSI2XIrkF%;NLkKs#(_825JWKN!3Pw{S!7*betDknd+^Rp=p0H)h}&`ASLNIVA$;%r zqIGt)a)n~byl&OeywwQ$8{+f-M1rsp6DQ8eCB$JU=(%6_JFg4>k$S{0!HzXPg#EQH zSIp?(p|X>nk)5nz9>Z~FHY1Y&&49H*rc6DVa1%^ zM9hNNW6hSZj~~#jv6rY74ws?k$c?*!EW}h#atvf%bY}kjF#jn;j*%nPh84T_1#eO~j^^0=nav!gR`amKJhTJ< zc6Ryy72-Hkfy9e}F77`>R6N^b7mI1*URO`AegIPG>Cx6sS=4g4hD7PYzl2ejmlt1D zSeBN7#o1pvt)sQ|b$Xk$o7Jf6(a44t4$;OD2Hx%}QOH|Ejg_uBN-ePbvOsA)OB)2# z0O1g89H#H>t`eCzP%hGug$r~2)oAz2?)}T+_seeetIp}yN?e+7M>Vb&&Cc*=|8F__ zs3-df4mvN|k*D90EYL9s?T8oa=*3R5VI@c1#9Dav3oc`>9v~&}d!yO8$Jt#G;^XTI zUVBaNaPkAE*8AUcIozS`oMOiGqmGJ>34(hKSTX9H-lVYDGrs z9d3LgBO~+<>8oS}c_l8HkP{Qgphu)@2P)J7IalyzSeo>*;$&rp?@Zjj-A*zFIfaD? zCGdsGyT$}y3GoP|18QM-4RX6pZ2HeSK5_5#9p{baL3Y|@@VrD{t?|ww(@>Yok}Oiv zkYFYALfIE~mvSq~I-&=wgfR-QBzKh~9C%3%5(q;(H`lg~g15K3crtz+lND=K>{GU* zIP2b|R1M|kRMfZC_r@hHI_h6k@k#%dWcgok?j@u=vspn*yH5E(<4pXcZorM9j#8tk z(#D0(QY5XJYi|3ayXp5{4I+z<%0jwQ8cnVtyNlNUv=TMAt@E6W9deZ=?QoWlFa7Lb z-ZWy{b6IwBbJO(Wl|3@jSxnCr9tfB3i@(!^MIDq}OcEas(*sxN;(*YObzFVl%lWRC zSDIcf^t~kERt-9?;ItN`=D-l!HvJ9_W$Y0@VoUNCr>)(8hQsnwl2wW_H}1EauZ#V5 zbrXa|;O5-X14dHkxSwx)-0ZtEW5I6{fXjQ>N|fc%%SD^O3PnY1aF+Wll~(dhB$*d5 zlkzY3YBg7Aw_GGjfwTUdMBfoEpA&tcWeawtj#7zKemcJw(QDL;;3b_!xxPY;^e-k6 zNKmeg&0%AjvAlQq-m?)G7&{M(6r1enNlz<{Mr+g%RJB(kE^dN*aIiSRSf=YWQ zwV4_%8$>BJEA4tT*2tcw(hSh%MBk{XlqsN-tX<|xTMb6NZJAXCw>rYbBAODFS`~v} z+&oY3<#OP{iGr%b02!aw{0~mtoV%ICstX-$gaFXn2y3O-Aa7n@47+_HTp!JLo2h(U zJ=NFbYW`3`8@qObvj#tRx0kOL);vv;<%C=wx4&7sR2FXgw3d&W(K7qtVL;5UP7vDc z)5?0;p&WCMc?|+XwuPXFWWM1Hl_R2k{=&em=%_oIdlUOz#^Cm-2|{T_)&l&EiNVhJ^bTi$O8jxscWA)lEV zA&iV+mhj{4%4zN~8CM8E;tEk}F5NhJcwcBIX=Xp*;XZ@JNvo>zscIACu1$3?S~gD|^)fj`(!l-j1gjL<;Q$ryRhBXzYOA-uXtp} zOgmYciAk%|ou;cpegoi%^=3h+L(UKrKZ~)?mwY1xh;3t3fl}XP-$x+N! z8X+d7apjROC?-0^OT}5tM#fT1LXGd#n=LLX*@lJpSl(I;A#E-uE?4(DlqDu41+8c& zhLAB86H`Jz4rYxBOo`NDjmnTRyU(j*`*AoK&vRDbNAMeYm-22x$Bp+$J%HGw^!A;$ z>ry-c>cMlL_y5*9KUA_(Dg7Gyqan>S-bOAt*4i;k7-n2mB9EdgAJA%x3j_Eu)&XHJB8M* zL^!zqz7_sHk~}F@huA?#TRA?5@w6wm5#p3z=(6YZHT4M%{@EM&2{w9ZAep0Ya4^`+ zD~ZG#a%mo5>wKagF`hS-MrzV>bg1kQ|b zn{v5#AYj0c5MOe+A%Cf?u|ZoyMsnWnw8$?+JbUlL%;$bpt zZXVBpZ^!A(oe5_P`6293zVd5xf z3pvTtMKKT()QOi)PUsUK2S3Ty36g)JkC&^M*pq65-B59z(PALxqmN3PK^`#K2CRrG zoxh-qDs(tBMK* z6PUld7ZM=H_fS}AYMavGZ;a_%#>fuGmc zf0mV+FYCwVlP;w#1Y%V%?Q(m%+R0 z#(zI^YxLz-4}eCrGLFADIvi0&A|tdwC8kKBz!v{sFy2>VjL|~;BtBXtx7NJRm6r3Pz@BBKC*6Sk=#M*p=u3)HL^#quy3el@lLo~Q^6unB*<*Ceq)%Z9U+Ze1f zz7GA(#5r`9@pZP%#-Y#pW9cYv{GIh!Jk6S+!|4-m8z>HH@qLvHMyFhj|6Bh^M~9chnke{;i7G&h3ouOfb~n;Dmt6q7oB&bjWKC->R{& z;*C{i0b`&I9HToR4}oy?jqVRKY3c$eHS%$_BxxR&!qunD;|Wq^$tNKA@^qFX#r3&j z9S76|t%9K$H+??uLW<;$;0oKkV)}|tF0%EX(-ODPlZYG{gNu$CX7K9k2+Vbm(ITE_ zXn|%js3OUR;w2cfNK?-~Buxt+(P8qSKjfcivk$eQa^BXD;I*%kCJQqRXTnx&L$ak* zbR1wr$!R5kXS-8>U$n(WP6SZI$+Isy#M*&nICcBA{2C_$%)&byXhcxOB_%F+2I z-q8xlqYRZ9GZa?eh|pKi0Y6OS%4(bzgolPujX%EHl=lJ1Hw%Je3n<9n6FzY)klPPE z`XH5O;}h2+rQ=DEy-H8t)8}K^Vd>$ry_0w#gVEvZ$=Uo?zWnE1^}5dQ`fMBi9RBxN z|38O79rQQ;`H@XSJO%#i{Y~3L{+oXE_tp9Y3eCfK@B`RO@zdlr3z~BJlU!Y{?g@!= zVaU(q=yd)ObX3i@a>kvmN5{9OCf4~QL55S)k)C>O1u_YTWqHGp8{K4*we$X|S+;|h ztC95tbmA!Gu)|=Jw8J_R8U?*rn9K=sWkARwAxkI9l*0~@=5OAj4*ojyswqoWTL&QLmlqI}jE9oJAS8;JlZ@!CsNU2AZaxPmS#>mo;`UbGNhc1qSPVYOgFa02XED@45# z+hMRtI&a3RP=?z?U+kO%H2eS{@_ic_S~IYPa8z!lKjm`)*NcGcgXy@lbw1vV@aavp zU7igcjJ1WCpfIA%!t<06{=s}=vG80!b$8dG8T!VkJz9p9_fFnr!k;h? z;M-s<0sm@tq8qz-)-bS5c4RL|Z9|I4Bd(k6TOMtkVDs z@9l1x_X3uA%_aoTpb|fU=7XJaC$qB&dC?geoby21Ebrv%D669B6vV(h-px!712baY z5ZY79q*?fM)vR9hD!z467^XBbOY)`IjNxbyW?g-IR=l7#f?Ffp7Jl5)bXQ3LV{yvY zhen@KtANdjl=jF8O%b94$6^5qG-^B9_7hjCPlY0Xi}s#*)n_uaVW@_4hMdnGPS=Zo ztjHV$4c@CW6W{8K&y->vWx;WW$l%<`q|GAP%aK{E)ZARrMBm`yntBo0fq-mydE0=D zy)wW}GIJpBEu_&QB{DJ!6o>|k9j24!gPj3x^-K&pp+u>`XK$6|#G^vMxjor)X|v4a zYM`tyv#x_Rp%di}!>>n@G@zFdA%z6BwWHosFNd^;o~Vj^b7wjT2W<1CtXCs^imj)_ ztZ@KwDUth>u~(}HNk3U^HInve}Jf$aUlsY=0phL-$x|9l2~jnv3ZK zN|cCzhetaKJGQN`b^KalWoLG38)J<1bO70SI=UT1BgKgtuH2(Irh;v7JRrQvaFCJO zpBOWPBFvEM$c8n+CnBtZ?Wqt7vpf_=d!uyR_cjM}^yFi~eDpv1Jan?3s>6qV6w(<| zj$A5+0l?;LvrQejbt~Pb+m}u+BxR_Xw&`1kcRMwNgh&XDA7?O!wlLaRlbze0%P0ZAMV;LV4@V>|OBDybGkvZPOT*hkc(LoXvyU z+WMN$ExBz88cPhf)&Nx30Gj3+_ypV zfFdAk!ay;VIv!u+$dYvsbApGJZ6&lO3_uc$Vxc7VxzO#2sQbDB@l;TULJ&&%9z~+} zh@0fnx0{q9mP`bI!qap}-q?u|=i;i~t;gbt5FyQ@#1)7YaJN1VKfoqikubY8AMsMI>`D67#2mlr(mco zl%VvC#4@`JL=Z%&hzpS69(fXKSw$l`Iv_T%E=#46;(b9@W1C%*5rj+!fZDU7iS-vm+#!q#7Wkobf1@lqrFPB|*&U92V69<6LRrBtWh}#dxLm zW*jgQ0H7pHhr_nQ_Bc{Wh+Mk3SlGFBt?l5O;3bSu*lg{FIk}VJy9?ouo)TinRi^|t zyI;+xJ8{St*?ca;z9FQSxH_Ovgu`7-ID`)ePB07$@P)ZlSl(X3i!|`XE}G}5{H1kT z$2i2pY_6Pu1Y!?<2UyYV5bAT!Q;zZ~t3l<_mz9X#CM>vheNc$}%O0cBs5C7Rr!yx( z#9+N>cO#^H=QIT^J@u{*ovuREHP+pv3NO_aK~oVcstSbg7}JxtZFhBx3(VKa$7N1w zfPfr}5`AcQgoN;bU&;dm=UX=7xt#-dubb%{4<}8M9Ok$_GId(ErVMsUn*x7=v>2B= z#+F~(1_H$xlO&Q-6`-K366G|2@{V0Q+F5OTK_D6GJ&J&6!qBEc{0$#;avqR?8sg#n z{F7ZAKjl72q0D81O`DeA;BHDxN+L{^0lou{rG2vX%%( z&;+4x8_(0au!Q1r3J}6L1uMW_O!c1U)~11+0mu~Ri^ivwGayrsQ5Egd7s?VJXAK% zm1ByPRbnsHEVeeghcyB01miTw9o|&-QySFvWB2I??<3#3*0aT;U&ZJ9V_K>Ab?qT)dyRHeXohQg2$BSU{D16_l)WmPjMy#kYD zJCe3O`3fQRq7Vd#l979EL+)KVKe-Dbz(o*MwL$dHl|YS(o~lQRDxe(jxcI_U?o`E# zCW1s&sH;$Q)c1BLHX*k$gmLJy*j{MKo!cf7+XOZy(z3zrnD23&Bq@;q5wR@yI^O$S z>-I#{9vje4HFc;p5f=BXC4xJZiENKRk{~{hUWC~Dg8j^G$Ib9mFjo|kL2UF!t{X1` zvFECQ{PaZbjB0{+*N5wq;908RdnJ<&o3bV3Qk;S?m5Z6bt0Z}9-xgwLMGBh=2 zFf>PFL<*G`^Bo|p7zHX6Dj6^g>}ABR;Hg_y?w_gLPRJ(@t;gnxd1jd5D*`5=VfM5g zEt?EI>cY{eS)1~lf~Vxe0rg+dM(#x4&ANY!{HG!%&@9~v`EWHwcMUDRkghW6aLyKV zJ>#cGb4e@HS5NZ^?Y`hoqB%jp8PC*HVu7XFab*!??S z4oNbR7r2YGpp|sd>mt|1Er+EsV1qDZc~oCuOye$d_brNF;>>1uJ&Z8REGd&crzQEI zBxPwi!N}Tn76oE#x1Kc$MXO3Ha^Hc8dj=LLWvqHoFpPz2vM>s-urjJ5nwp5@7)4Fe zupJ-u1RC3n4K|HR0F;S=#0q|i@*tQ~Z~4sX`E2T^;#`ErHAUOjLTEMd%@P&}iiBEY zD1yM?avm1$-Hm^X>TW`y4H1|kJjAJ{kH{N_QevgN-;Haf4!I)>BisBx1}F46uA!q|QRHtm+)5DVS? z?>(vGILT${oTLeBTICXNP$tfYAz~;VV!n+!cF$_hPrZ$Uh2yYf**9oOD&Nr>Zo1Jh_;@ zHKix&2Oa4y40k8vO8V*vmgA* zFVo{!-c!k)WrVN4b%%cam9GpN!ZP2|^9^obZP()(6|M^gtnZ#LmWP1-_w)w(x4ZYZ zXa9cp$?*=UM?Rzzu(=@F{hw-Xx_t}pKe_;A;>R1wRq!{?)*80Uzj|`0Veu9AEsoE8 zY_`rjii5=H*xrUqz1#yC!8+aEA@N`CuzEY{aNWr=5 zROII&WgHD`;EIPl;duiHWt+(e3=^Xb4!FT5$Pk04Knz?#;ZFXuGxBXVug?HP6ytOC zn=*TuhbJXYKqTDiR5d7~KK4&hmE+Yh#o8@B#QU4GMK&`A&|26OM@eLqK{i6z9Z!|7 z>YP7|Nc2dhcMr%@_}C0Q&s^;fQ>giLxA3%AHat@-_Z66)+3P5vgs`8rK-qHEr zuc(ojUM>eWwq)9_>(|*r^a*1S{g5=O^2}y=hVs0)#ktmSZ zM2n;4SXF!d7vG*|*nOt@=!Zn7^3B!~7tp00rYSgBJ76S`Od$9+oPSpi5?2Eb38s5r zk1XZPWf;idCxDbZNzxzXjf9xwJh?jGJz0oJqIsp`AEU+Sm$NElPm}!Ms!8o5Y0S`8 zI>~8Lc|Mz)x~YGH$OVz8iiMMY^8Vi1$W2d7KlJDQoAO!zQ7;tsy$9ew0)oPM?|uwl zF;<*kF}9n5Dl?qE%}DR7p_+Exq+BwBS(sDH2|qeclGy5u$kop}JL%i$HEr8Zs(yV< zF9ci?H2|h>^uO5L;y4=f72673W6CyvH$*)`fO8Mo9OK=HL81z*`=HB5HHtPO3Hv74 z)l6BJZxLv`YGe!TJ}!vMF8_ya29&a#<_Qbnpn{*QWYc&dVJWM(I3h*!Ziu@0b$1pi z@fKloeEk0AlN~gTGqnRWIZpAxcf41HJlBA-`EYZ5Qb=xsegv3pXaj_@P2IczS=Hgkf zHUsH&mIc1^{qUASARgnV@n;;ViAjlZQBR!Kxty5X*KDWG3dZG2nH2B)ceSi@OUk(( z3^Bk)_C?_L8&BIv;^F*UWfS(;zyHZ@eQUGD1$dFS6tU_d97|!XfYJ!lw1wSM738NU z^2Rvc{T_zY6weA8Vo{({S$WgQRy8>f66;&#d&nW?6p<^mX%y^z9_e;OR74C!Pb2Cu zig=%p@;y=hta*b~QtwTT z1ycIuflRTc%>lAY0D`(G%VI}qf@mioV_w%K?OZ%WuT9o)%eZ1u_2KfZvI)dCrZHcU z!$JiVc`uqSE9ga3%>dU2v)-fK$2S>-Mm4XlLthtg)TUnYKJ6M{d zwcsH3FxdfMVFXkNRxEZ1Z=e0J^t1Sm%d(NmZnbL6SR5UVjbt}BoHwCccHQ!t&pUFv zBWOBec-J){EW*V#AvUXP8tK4$+fE8ezXg`~pyq3!ymtQXU{E7RdNK;HoEc-!1 z$RKQXgafQjV~bD^oppg#4VezHAYKOu=D1|*yOo-vnR?@wtGeeml&Ob$Q=`HsnfaJEm`jwid6d3QL_|4yeAEQL*xz(FvYML^z|=VDi^6m%>)5pp4e$Cj z^=CubF22ZEtWz1wMoVS~X$pUi2K&@fht`I9p6$so46cRvi+A&sQET60+)@zzDCf`h z)>Vn0jytAM1v`~>u;YsHV9eQ`R$$dopzW4RTj22t%y7tTQ6KK8LBukInXx0J__UK{ z5Nb{ch8V>RHDQENR?MEVH(tg>qqf+7 z-&V1+Ma)G&v z*~s?lF`Mq7kY(dp{ZfcBac&YyKH>eq;z$8T&Nq8}OVT_$p5EB&X4VOqxh$IrJX|+n zs4`bB)sj~vis3+}FkQ?)&o}oS?J2YYOtU20mJ7YuVYJ1bxO!q3FkRp6 z+P7eB8Zwr)IE+=5_6DvQ)2A+zy?n0Gvzn~C*~T#0;ZoHRn@sxb_!xV6Q$CV2gfBWZ-1k)n5ej% zWHF*>GB!>{Q|YoYTL>z&uxGo6AVU_BfTKkzN{^0O@!rh1?>;6Xjuj1Tm?qL?I)(H; zfdS$;Kq8RMscbW0l7v7Lfo(8dpbDW*GTjbntOTZl(z_OLa(Sz-z^`e4prHhk8X!5w zPwu%5xi@<+3tQW(@<|l7Va!^{OU2vH1LW5L1Wj2rhm4g$d@XRcj95F`bEZL8DT=P* zlb&~7aINcdV1%$ef_aRUo$tYN0?%1JS}Q8g>V{WUaA`5zlI*@cjf;0&>j}ntHBYJz z6F2iS*(FIWak&bI-ONlsRUFIe+VMNKu6gB)!tW>yhaDa(x|2L^ku1H}Wh|WduCvo- zVi_AJIGYz!nBFHdKtcqFCvk8sCVew$?lUp)e1|WNF&~b)6%{Fjb47^VgcR2hqH3t> zYEO;ITvMgVRi#}SOth+bp-IkdZkv|mI|z{_6gICUV_o&HKYyvj=&~H(TFqm9H%zc zXrB@5%rF^6B#njEvBBI28D#fiV1RfGjkLzz=VK!m+4UI4J*Jx`9E-sQgAYz#N`^8&Uq-24jAz&PbZp_!`w2Z>?{zVY3-nWg;vm zHl*0}A)O5&f97Y<&K(qNvde=*Uk^2&B&J=&LOMH1S)2HclR-aqEr+QRC8wJ`98>$U zya=I-pTR(}8P(pq5{ zRtmd`t}juVIHLzmjo#>U{ZM_Zd4^gGfaGls!R>8%F+oMZVib!Zg)!k`xf_#a(q0ir zzlb4S(C^x+u~g=?0+O5y^A|&o*}V)6b0pEZvJkE1NaZ~{FJq8BYz%xF=D{*D5M^2JzYbbT+?2+f)@#*lg zpXRQ<5xCXN#)QnKL%=tuF=g5h<8X;H<1lVUoZ>i^EHV1X|0=P08@up|JBy?yEBUh9 zQ7Yc_V*+UbN0FXeiAO{ut65t$hSU33V1U_O4!22iIZq~EelA@(`KGaIx-x8U<9>UR(t`xeqULc*J1c25OlMmyq@00l%^iNd@U zAmGRys2A?&r}UzT>=Nm;d{}N)X|%QxRSoUWQqww%t#Gc_!ikS)u?i+y%Y}7FA}&+| zODy_ayC(8rRr)9Kv6}QKvsldMc%VDJKFSUb4-YPZLz3X(VH3w<7A|ep-?R!uRE%hz zs)ORzZRYbHebWw^>mmsdSz?&U@_>azzs|Jw%-XSm-AVKk^SX0&AuycHuyAa3AoB&l z0@YSYSc%Dyo($fouOd$2@eozoOk7izM)NtArRyV=ucoec9Sp0$jE@J@6k_FX5y zrW8+0@)~8ycdipQUGXFr(S>%_p~)>_NDsiEJo@%bfWUW1fP&~teqs9Ylx{&K%`I=V zLho*^od+z!H9fBCao*X{anB;3aIb`_tK>I#pw2y-b$=W^iJnC)`UWHl1GmI1&&uH7P%H+O6Vqk~ z{YACDvq(yu+P1@KvHIe5qFX7)_)wPoNO?A@IY#ZJhjPn4h|6?#Y+gAj`{ zCnN!v1bYcf264^e3{0uU+`I3L2z(@VB0K)qVH7P%HuZIlnOvI5WLakH=(qx=#^hs4 z9HTS~^XW9d=JhH0I}_R8$IWz@QiaoL#@PBAhFN`0rj9|?Hy5cmomqR12_cU|*S01k zoM%;7^#f~iE7c{5%q>d)8YHuY#W0`VvTF^VUSGoi^Qy9uQMGKiCk`2Ng>Pz;Sk+A+ zBU8-M3)9LrZ};%eJ-MBe`jIE(Pjl)p&uz-ewA@2dRFyjYp+wfza+xiXCr`}`H}+qW zbJ51a^#bu0P?x1S#Ezs#_V{47nupRX7IHp2J|ZYjZotuDwwm@NY=k{HoK6ofsiy?Z zlvpvHHbQ}9b`xxqy-gz*wMwj56|-0VI##$NPSZ?FlVy>VMd@^?_e>Z{LtRks39yKYOMb@GT@lm;nOEt7rV_@4=sS6-0AU3UQ3#X< zeUkkUiFTgN6i--U4H{ozGnFeXm^Lx@g$%U~@>7XH%sEZPt7+gu1riR@Jd4=-bv2&^ zk!B>*LD2M=@!5RJ8sEo+l1o}pno4HUVn^CmNyu6!LG<{C;^t94nQLg0MCW+pW@FN_ zhw=c2>>4GBmtK1IRA0ms^8^9}quq$`M!YH7Lr8jF{8mgtzX$X{=(;`(*4*SLcmSB8 z2wi`W+OjkTrDB(aJojm0OmdGgkqbk2kI>WLZFJsFtKu*B@kaBvE4D)ujt%vp9|Ym- zc>J=94OlD8>@dNd=m@iM_Fna3#%B1PjHAy*7}DKAHA*OT9hcw)TzbY=t7+aO%4LT+~@`m(=tb^{fFTJC0emAa(8l^;wGFowu_oBqddfscS12n8666~E`a zP~b)i_>4msXPu7I_sSPjHod?{%^Z!&WmuuU;Cb3x;}t}w6%}}WqybzagkB-maccE(R^XdTsYYsYaZ7^Oft`n9>0G%9QPUg+_kYo z(ud@;id3rC*D2EOPCO^H&S)6T=0kGmwVC0ZF4l9@SEH%qSx)kcq`l*3geb{|L<4hr zG!;@Mr<^`JB!`8=;E;lN#qCSTneHOGs!$vn0)PZe!;G(j>&+25Bm^n|mo%#s+EUi} zLL+U_$=W;2CDmEVtoh^N$?$Ao!&mr;yqAlqJUOQGQU4Gmax>H8UoR(QX3z9oBvdYozd4KWZ>KX&ajPbIs619r)HB6YlTrIYg|&r}6;w$=fxWygGIDkP z?l}!E?Cj1tT~UxpX*`7n0upAcIsq|?_s(935G8)GA_)&6aWk=zy?6401tYK>yMg-F zl##6R*LibTdYBgzUgORopQR-I6waKGG^EJjno7u^Xw*G{ zRaSglaqU}7EcPecBQng7%jaYMp8q0c`PS2qg0su}(Z3hG@XQ~~@VM0Z!8T9H^n#Sv zgK4X>tEL&5C5EfI(4eZ*Ie_=jK85~tf=pGZ%#fb?rkQecDLnZMw|))6@yJDv zxzC~fJPqkvDQ#UX6nO^x@&)sYQ}nKttq_8t-LRyqg1)Q#YsUx5=^uJ1>U#HhbpX*U z`mQ?kb`KY67P}~;WRP27`;0j+WG8~Fa$cD9Ve+_sQa`I%%~zQERm2!(OS+LxNflYJ zJ5HhKc7SfMHOM2nfF5$zVl3VZUlgp+A8xTmR{VRr(Y@!saLj26G=!Q#@uiz@U{@ys zKuXkfz(rk)#@axqKdbiOWYHhxQ6eR8&F;?Vc;kziJ-&05_8qO58E>Im&<+W%XF+7Cjuo_kWr6TAn&>MV3-zQgVBgS^N=ju& zHVkB@*n9!j&aSaGRxV~vP%4Y=ngSjzHr6hod|G`7`&2Z2?@0yF5y8eOPV%Oiyu(p* zyP>KfvibkQ+@prP=)VvaHKf3%`B_%f?*IicSQJF5X%y}8PdH6E9%8?g-z$rOc{t`Dud;Y;<>S)SZD3^Y$BYkh*TxH%u@*Ua8b zuTuJ?C2d1m9AHy!r;<3cRo>Ve576nJ&3DH!WJ{%H6^&;ZKR8^fIiL}uV2kwZ!e+{< zYcnpmvC-$X#lJs2w?MM7>n0|*WEDucvJ-Z=9#DKE>@L+>Ph2Dt~W`>&4L_?Yd@mxWc+-&D~b*c0v_S@KD8eSPF_r-!UNB;4}OPzyG@&;?V}1kYmx<+VGXfwI!)AEPgtR z2bH?8^yqzkbZyEo(5_o2gwVjfx-Mt4wWI87UtiAFx5`&fwwIh(4GCOJ5{#(B;u^$e zyrl7k*tuhNvU!=|z(Q3J^ zr?ZVbTHl%gVeYG6I~*5T@p5xp_QTM>0}OVc3I_~shQ=Mtk7askzsU&U$*V6R>tZEG zSKaC!_x+xcHWE2wWoqd6OGeS_h!-UWQ5?O)r+}OIIa?g-%plj6QCNw$2gIJ4_iO}A z$~0C~6hcKAuj)w0ED(Z+Hc1hvASUF%EvE_%xmXA%xpHNOSzyH;jf{egb%Y@=SVW!W zD6uQ^Q|QN0MyE%|hp)-oUs-p>v(k;r`;1H__bG!%eao@`GuV(9o~PB( zTtH@q*$GCGPh-MZ3w7O2#(8Xl8#hUx<=F%3*_adh)=M7cALJBrd(Y!({tG!*nA_mk zSn~iI4s`y;qLNrxgeQ>ac}U(ISL0duQTQAaLK}XD9@$nbja{+279FTMxw*lTw9)r} z_-c1{md!%_d>BiS8Iy!*>!G1SFsAEf;$51k`C^O5XWqCLG zX}>w$yhCeFhtu=ZH<#}&zkm9J)4<~C>Dn4vOY6CNZEwuTBI4AOa)Q-OmrUED2pWho zV5}e71l3jgN>OdBvEEXIfKON4BeeB%jxU6YGv*uUeI_GoImvY5k_?M7M251*(lDZs zf$`w)6B#%M8X`a@Ftd9y*<0VEoxVL8W#uSkVGwZ3NwMNQ_ZE`KWwMEg!boBw$R+s* zsLz}T;mDcAK$JrsvDhOz!CQg-Km$sFZm8HF; zw0vQkg0# zNsJ*3Qx}jBDP_vIrf3GyvEb--pfdgAeVj@TWeG{0E6Y7eOBz&}Hbi;Jyd&GndbR?Gwhb$S$DxS%ay3~@TOXrL;$+9f#9zxj0S`fD`s0HlyTT>zw6K-^eu{!^AL(~{;A`yye~!<;w^Dk z{6h0_^I0SAiuc5$2AfA?Y3X#xF(~iRm@A7K*z68Qp;qy|_kVc1k+Qe4yV);vA9tU1 zx2oBD*`p4-?{IDF(;DmA{b`;7s&_479$f_T)PE6}@mB%$io?YF&G&ZSJub}=6iF0m z^qww_h(+ci%q%Lt2rG)KkQV;!b}=^NXcY?tPF`h0?5!x(jukQ0!}v*smDJMXFe_~E z$5p_;Y3klp{5TMk6NPU!A1$6QaB--jJI#8!z>AnXt-grOR97*rg3?QOM#=&TPGh&H z+Y_-iZ|ON}|3v%O+7DZnw~O6CAgJh#tlZC!{`~TH$A2{9Vtjd|FxrtSI_4ush-^e} z-__sKA4T}4{!#Qi^2p~BJyj97zj1v*uaMER!2YsAU68isd&loz?tt{xKX4n9uX+UB z@>7nS;|RpSL!N+e;K8%AWXJVNgQo!vzQeJNPh*T@*Y^_5&@JCQ>@hv6KB#`7`ndY6 z;$w9YQ(K)@KBP-9tMVI}ZtlFsnvZkpF)lw?K3(G2zX2&M?ecVq%VjZ;+1QA->UORW z{!s1qZcM6bBeib#Y@byhRnIGgf_PqWOe<=aK4uvOO|))wY|=av zuDZ(J%_ww_x(_-GkteRJs?H^xYcDkY5xS15)=_dL+(E|LOw^3B(B}2>015yQPq~zT zScfks^b81chknq7L2<(U%H{bdZtyp~CQyUha#I|UqU&3i< zSN1NJ&u9%B&~$TtH=mUv{=mrKH2v)U{-Ki^sgHFpykmhHfa~ zq`>PQFJ`e5=$nFV(SxqZ)g#lW2UenW>ykE=ZOs!z{!Nw-!k=M#fk&?fEVqk<%R1Q! zJD-5rhI0xerep`lk_odupC0t6yczC^Rw4Nj8KK88D-aj1XlT9l?yZ#rJqyBqq18wf z{*$>0gt52=CONGQtG6B^Q?EExvaMZ5mt(y|Y$THX5o(^TmQ|(p(#*b4R`kR;QP&}h z`Ch}#%&Ib-528qni*iza&+1O5`vsJ74kEAgEylV~S!E*7wdAR7YP%R> zny%Vl26u%0$|O{TRRjLGMm#w@veCwh=r!B3XRPec3s!)gTCMVSsqgZq5`Lz3a~>`9 z)J9K=k(Fz#(#TZ!1FfDgZ7K}xmskb7J=_PuA_^lgs$p|4+XbJ^RG8s-dHk7^%77-C z3&MHuyA|Dc7~_fDcu2rJ0H+BvN_{^lwKq3$g!v5Y6#1Gg2J2cNCs>PObFfozIlGhz z7#()Kxc_Z0G459rh}8uNg{-rUeJ7zwzJ!wH0WGKDzVDu~SB!X49jG&#_sfR5r@n!B zL5Pv>jMdwp`Ggf0n>^^J8tbhWa0bJ*niFbdP!?1BXpWr0{n@~Ud8AJn0z6BFrk!t1Agl-S**O5TE2DX3jt(GRj1dmI`l2cN@;|cJB z(J)Jm`8H43Pg$hM@>o$lo-r8cX1FZ_PV}}<$Li!<*oIDK-}fBMkzh=2BHco1`hF@f zUPB%j(BvMIV-fc~v`pr`^IpGG?B_5M9$HLL0L-NMEF=dnpwI#bHK1R7HdG)0Oi(;t z3H1QrJfN*4(1xaxLKCc2mSBSI=@tEzmCyrOSp_ZJzUNJ_$}6Uk!H;B-$tr$8%LYV9 zi9>=^@iOxu8L`b;R-XTs^`x>w4H&c1gzL{b>Koc{r{=N222ZG&l$B^v_>tFqM;AxzSL)DrJ}fhFA~cjq*(?(taGa zGB~==Y6EfYc&E*Fv({jMV{j4Seks(deu4$iZUuxc=aWc+L=%ZCdPbzZ?rw~=&Rmkgk@=q3m z^Ai(fV(^a@=Io+Mdex*lr}E`ON#9l?94qL>0^HtBtH>3*DjJu`*=ATg(@cq{n zIrd7Ew2*x9bYGDO>1_#K_wfs&r?Emj+=z*X8au>;jhy(bK`JrgkL6-qE_N^WeoU^i zC+ssOixZ2aBf6LHy2o3>-vd6$&+&Y9&wBCPEScHEM0-y{wDznM_bF}f>u$I9yuXM0 zV)x@7?!~I0FH0=d1BqU}w|BCa6MH{1#$@5?;Nu9KN~)kAgR3wHf5fUl?p{W`q(z>( zS~(t9TWt#^726BbNbX^@eA^}!E9j%KgI<|7TtXh3w;w%%^hy;+$_831O?g#UJCeTk zr@%^g8Kli-GaldDJat;BI3Z~%>!x-eATE6@EstpDwg5D7k1H>2n*C&GF8}}lt)R}+ diff --git a/ansible/artifacts/sunbird/login/resources/css/fonts/notosans/latin.woff2 b/ansible/artifacts/sunbird/login/resources/css/fonts/notosans/latin.woff2 deleted file mode 100644 index 22818e7d4c3314490e1566fe3b3dfeb8ab0b174a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15572 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 diff --git a/ansible/artifacts/sunbird/login/resources/css/fonts/notosans/notosans.css b/ansible/artifacts/sunbird/login/resources/css/fonts/notosans/notosans.css deleted file mode 100644 index f8c30bf428..0000000000 --- a/ansible/artifacts/sunbird/login/resources/css/fonts/notosans/notosans.css +++ /dev/null @@ -1,64 +0,0 @@ -/* cyrillic-ext */ -@font-face { - font-family: 'Noto Sans'; - font-style: normal; - font-weight: 400; - src: local('Noto Sans'), local('NotoSans'), url(./cyrillic-ext.woff2) format('woff2'); - unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; - } - /* cyrillic */ - @font-face { - font-family: 'Noto Sans'; - font-style: normal; - font-weight: 400; - src: local('Noto Sans'), local('NotoSans'), url(./cyrillic.woff2) format('woff2'); - unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; - } - /* devanagari */ - @font-face { - font-family: 'Noto Sans'; - font-style: normal; - font-weight: 400; - src: local('Noto Sans'), local('NotoSans'), url(./devanagari.woff2) format('woff2'); - unicode-range: U+0900-097F, U+1CD0-1CF6, U+1CF8-1CF9, U+200C-200D, U+20A8, U+20B9, U+25CC, U+A830-A839, U+A8E0-A8FB; - } - /* greek-ext */ - @font-face { - font-family: 'Noto Sans'; - font-style: normal; - font-weight: 400; - src: local('Noto Sans'), local('NotoSans'), url(./greek-ext.woff2) format('woff2'); - unicode-range: U+1F00-1FFF; - } - /* greek */ - @font-face { - font-family: 'Noto Sans'; - font-style: normal; - font-weight: 400; - src: local('Noto Sans'), local('NotoSans'), url(./greek.woff2) format('woff2'); - unicode-range: U+0370-03FF; - } - /* vietnamese */ - @font-face { - font-family: 'Noto Sans'; - font-style: normal; - font-weight: 400; - src: local('Noto Sans'), local('NotoSans'), url(./vietnamese.woff2) format('woff2'); - unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB; - } - /* latin-ext */ - @font-face { - font-family: 'Noto Sans'; - font-style: normal; - font-weight: 400; - src: local('Noto Sans'), local('NotoSans'), url(./latin-ext.woff2) format('woff2'); - unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; - } - /* latin */ - @font-face { - font-family: 'Noto Sans'; - font-style: normal; - font-weight: 400; - src: local('Noto Sans'), local('NotoSans'), url(./latin.woff2) format('woff2'); - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; - } \ No newline at end of file diff --git a/ansible/artifacts/sunbird/login/resources/css/fonts/notosans/vietnamese.woff2 b/ansible/artifacts/sunbird/login/resources/css/fonts/notosans/vietnamese.woff2 deleted file mode 100644 index b28836f20376c17636d8fa3fa2fca8e43d5d9fff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7384 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 { + color: #979797 !important; + font-size: 1rem !important; + font-weight: bold !important; } -.signUpMsg{ - font-size: 12px; + +.forgot-passwordText { + height: 17px; + color: #007AFF; + font-size: 1.1em; + font-weight: 700; line-height: 17px; - text-align: center; - /*margin-top: auto !important;*/ - margin-bottom: 10px !important; -} -.formMsg{ - font-size: 16px; - line-height: 22px; -} -.signInHead{ - font-size: 14px; - font-weight: bold; + padding-top: 0.6em; } -.ui.form .field>label { - font-size: 1.05em; - font-weight: 500; + +@media screen and (max-width: 900px) and (min-width: 300px) { + + .forgot-passwordText { + height: 17px; + color: #007AFF; + font-size: 1em; + font-weight: 700; + line-height: 17px; + padding-top: 0em; + } } -.forgetPasswordLink{ - color: #9B9B9B !important; - font-size: 12px; + +.no-account-sign-up { + text-align: center; + padding: 2em 0em 0em 0em; + color: #007AFF; + font-size: 1.1em; + font-weight: 700; line-height: 17px; - position: absolute; - right: 0; - top: 85px; -} -.forgetPasswordLink:hover, -.forgetPasswordLink:focus{ - color:#024f9d !important; - outline: none; - font-weight:bold; -} -.textCenter { - text-align: center !important; -} -.mb-28{ - margin-bottom: 28px !important; -} -.mt-46{ - margin-top: 46px; -} -.mt-40{ - margin-top: 40px; -} -.mt-8 { - margin-top: 8px !important; -} -.mb-18 { - margin-bottom: 18px !important; -} -.mt-90{ - margin-top: 90px; -} -.mt-65{ - margin-top: 65px !important; -} -.mt-127{ - margin-top: 127px; -} -.mt-27{ - margin-top: 27px; -} -.mb-36 { - margin-bottom: 36px !important; -} -.mt-36{ - margin-top: 36px !important; -} -.mb-30 { - margin-bottom: 30px !important; -} -.mt-30{ - margin-top: 30px !important; -} -.mb-56{ - margin-bottom: 56px; -} -.mt-76{ - margin-top: 76px; -} -.backToLogin { - color: #E76026 !important; - font-size: 14px; - line-height: 19px; - margin-top: 10px; - display: block; -} -.logo-image{ - max-width: 100% !important; - width: auto !important; - max-height: 56px !important; - margin-top: 20px!important; -} -.button{ - color: #F9F9F9 !important; - font-size: 14px; - line-height: 19px; - background-color:#2CA58D !important; } -.ui.text.success{ - color: #33B17B; -} -.ui.text.warning{ - color: #794b02; -} -.ui.text.error{ - color:#9f3a38; -} -.ui.text.info{ - color:#276f86; -} -.hide{ - display: none !important; -} -i.icon.eye.slash:before { - content: "\f070"; +@media screen and (max-width: 900px) and (min-width: 300px) { + .no-account-sign-up { + text-align: center; + padding: 2em 0em 0em 0em; + color: #007AFF; + font-size: 0.9em; + font-weight: 600; + line-height: 17px; + } + } -.mt-45{ - margin-top: 45px; + +@media screen and (max-width: 900px) and (min-width: 300px) { + .signInLogo { + width:60% !important; + margin-bottom: 2em !important; + } } -a{ - color: #024f9d !important; + +.margin-top3em { + margin-top:3em !important; } -.registerLink{ - color: #024f9d !important; - font-weight: bold; + +.margin-top2em { + margin-top:2em !important; } -.registerLink:hover, -.registerLink:focus{ - font-weight: bold; - outline:none; - cursor: pointer; + +.signin-contentPadding { + padding: 2em !important; + border: none !important; } -.ui.blue.button{ - box-shadow: 0 0 0 1px #024f9d inset!important; + +@media screen and (max-width: 900px) and (min-width: 300px) { + .signin-contentPadding { + padding: 1em !important; + } } -.smsinput{ - letter-spacing: 3px; + +@media screen and (max-width: 900px) and (min-width: 300px) { + .ui.button.buttonResizeClass { + font-size: 0.9rem !important; + } } -.ui.form input:not([type]), .ui.form input[type=date], .ui.form input[type=datetime-local], .ui.form input[type=email], .ui.form input[type=file], .ui.form input[type=number], .ui.form input[type=password], .ui.form input[type=search], .ui.form input[type=tel], .ui.form input[type=text], .ui.form input[type=time], .ui.form input[type=url]{ - font-family: inherit !important; + +@media screen and (max-width: 900px) and (min-width: 300px) { + .ui.form.pre-signin .field { + clear: both; + margin: 0 0 2em !important; + } + } -.loginupdate .ui.text.warning { - color: #333; + +@media screen and (max-width: 900px) and (min-width: 300px) { + .signInButtonAlign{ + margin-bottom:2em !important; + } } -button,input,textarea,optgroup,select, -h1, h2, h3, h4, h5, -.ui.header, -.ui.text.container, -.ui.input input, -.ui.list .list>.item .header, -.ui.list>.item .header, -.ui.steps .step .title, -.ui.ordered.steps .step:before, -.ui.ordered.steps .step.completed:before, -.ui.message .header, -.ui.sortable.table thead th:after, -.ui.card>.content>.header, -.ui.cards>.card>.content>.header, -.ui.items>.item>.content>.header, -.ui.statistic>.value, -.ui.statistics .statistic>.value, -.ui.statistic>.label, -.ui.statistics .statistic>.label, -.ui.accordion .title:not(.ui), -.ui.checkbox label, -.ui.modal>.header, -.ui.popup>.header, -.ui.search>.results .result .title, -.ui.search>.results>.message .header, -.ui.button, -.ui.form input:not([type]), -.ui.form input[type=date], -.ui.form input[type=datetime-local], -.ui.form input[type=email], -.ui.form input[type=file], -.ui.form input[type=number], -.ui.form input[type=password], -.ui.form input[type=search], -.ui.form input[type=tel], -.ui.form input[type=text], -.ui.form input[type=time], -.ui.form input[type=url], -.ui.menu, -.ui.dropdown, -.ui.category.search>.results .category>.name -{ - font-family: inherit; + +@media screen and (max-width: 900px) and (min-width: 300px) { + .signInGridAlign { + padding: 10px 0px 0px 0px !important; + } } -.height-fix{ - min-height:90vh; - display: flex !important; - flex-direction: column; - justify-content: center; + +@media screen and (max-width: 900px) and (min-width: 300px) { + .page-login .ui.container { + margin-left: 0em!important; + margin-right: 0em!important; + } } + +@media screen and (max-width: 900px) and (min-width: 300px) { + .signInGridAlign .ui.card { + border: none; + border-radius: 0rem !important; + box-shadow: unset !important; + } +} \ No newline at end of file diff --git a/ansible/artifacts/sunbird/login/resources/css/semantic.min.css b/ansible/artifacts/sunbird/login/resources/css/semantic.min.css index 3c9982667b..8b2670a045 100644 --- a/ansible/artifacts/sunbird/login/resources/css/semantic.min.css +++ b/ansible/artifacts/sunbird/login/resources/css/semantic.min.css @@ -8,7 +8,7 @@ * http://opensource.org/licenses/MIT * */ -/*! +@import url(https://fonts.googleapis.com/css?family=Roboto:400,700,400italic,700italic&subset=latin);@import url(https://fonts.googleapis.com/css?family=Roboto);@import url(https://fonts.googleapis.com/css?family=Roboto:400,700);/*! * # Semantic UI 2.2.10 - Reset * http://github.com/semantic-org/semantic-ui/ * diff --git a/ansible/artifacts/sunbird/login/resources/css/themes/default/assets/fonts/icons.eot b/ansible/artifacts/sunbird/login/resources/css/themes/default/assets/fonts/icons.eot deleted file mode 100644 index 33b2bb80055cc480e797de704925acaba4ba7d7d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 60767 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%0DKehr}RFC`2XTB_?==0w^)u1m5PYii@6f)6_5Ydu zv+NIZ_(Rt}Q++LT5!n8!J4x!>sE&v_3*cXat{Zq5;17w;B6$epw}$Rg`0nFJg5D-L zYvw@(goc5TeJjM($AJAZxZHZN}RzBcP0=_>ZI6WVGU zO#Nk-YqZTa3{!84P0K~GsI#32<+_AsXU43wILwZS(8n%S9)lP!Dg$$e2$$9$E?^Nj zql4do#+a8qEP(bD2)DpP|$dp<`TZ#bY6^~7Xv_Lle)77^OsVhMOm(@ z??8O8kA%}ZWpR&2v!7qFSw@TF6d*=9YT^Rtk(n8p=CQWvt1Om=n&5uP;GiT6 zMRvbm39kbp*KB`qoVg12w52Z)T}`X41P>D|q_%K#zuhwb+BpEogY0E)KnSy#@+(m5 z20@LG@LUEvk`I|OIUV^^0_YtG9AElBS!Dsh%k^P9r0moJ25Lkm-gh#igwBDhAOj0!EF&8MxV^-m1U1MEd?H7} zL;r;tfFIT|ei3-Z@gyM=!%Ba7Pa626JRAA`V<2D<{RLRT@0o=bE)XF)nFtUL67`2L z{?_Qz_`Yy2t+I)?9&z#z__Q%L3pnhN}U z_rN#WU)kD59D4whbSYERHY01jM7id50EuI1ctl?<_IT=Y5vP>(sNNkB&U5&F&^kBhm5y{o!y!F+4wdxXoy;!4$W`?_nL(+bK_QDAMUV1O0AwZ| z6j)s}9YEZbY-C^Y)9Ej`aS&~{sXCG2SS3ce$EY;Yv-c8TlrD$C85ATlLZpGP_YWfi z`RQ?z1@zIfa{yqfsUDMEPpwuX%XHdO+ASb3EPi1fBPocvfgsC0xa^CG2SWBPWQ&GS zpCXPti8b>WkYbf#Vg%A?&_UwUsUQE_t4GX?7QqUpKJ2Iw#%)Q4Ft(`9Ja&Yk{C@38 z@%T`)#wWy(kKfEH;ZBQ(m*Iq&L=<)4D7tNO{SsA4Fp4D?(Ex6nQS&f3TK|atgj`fE z2|OX0(&(ZqxJd~IANX&dvX?U14_<~h2(lP6k^H8ep;2HW6oPo?U%v{M>|{sU~;p zLTv$OTx3H^4zNUn4wUfo>j{CEvTC@C+cw+cW*ABH6u@!M2EdBL?1GbL_#e;7YDBas zic?MTazk(khXSyPeDom_I~wkLv?Wr8<%egEfM!*M9^kl$>zsVzaP}S!gcD3;Czy#58RTm?`p)RTS8I<-sC3+*n{A)P*rU!@Npj`e{x9xsif2v zTW`{q3p^?A!Mk60Q{(FLt(&TVe9z z0-!PiOV02JcNeq?AbJaI+B9xC;LB=}Ho0vH(@;Qe0zq~-8ckOa!(u@Wou`p_TR|QT z38H`lJE$G{q1egUX@&v$x7wNLWD#j*!D58GLv^bT+jpdKBrK#SsQsWK(+RO40VA^w z0nA7MN1Y1Fc#5JkwD5TtHG1t;lo=i)U+kFG?1Jh11h9382!marrRE2eZh;JGh`wNO zQA_~n?%97HOKLA^#oG(5*bgSllS%rOc(S%Yj00cYR;!D9G_90{pfq7D4I*$k?byOV zR|epi%oIJ{ou`5zS!-_dnxOa{uNv)(luMo^5TCOItq}2}sxCztLEzBGS)Mf6dzaw< z!GweAgvFYJu&mH(Vl9HJBV%=Jz~~i%nDGIF9ncTET-AQ=fv{L11&K_;ei!iht(!De;ym|y7ksL|^5Ko~B-vSh80++s?unD}bZaYa@ zPH4M$&fw;xEGN3_H1vHW><%-+dg7dfW)F8$bB+h7sThoOtteO(v{&-+iK}r$%G))# z*Nhx^!ZMj1VeG?EkWg+0CYQSX1t96fV9^3c+9C393LU&CHsFCa1q99$`zTMsEWwLc zxsw1|A?k8-m8HCrk6;K7dhNDJN3R9iws%6vTq_}PtR2CZ8TG;ltZ4I}sU+^s8`P3F5QxrypG1-{ zGlr^7$Wsy(lo=xfC~BpKfg<2z4OEeEF@~x{Pi7O#CvqMJy+f+}=CB_$&IuEslB@s# J000000038FvZ??8 diff --git a/ansible/artifacts/sunbird/login/resources/css/themes/default/assets/fonts/icons.svg b/ansible/artifacts/sunbird/login/resources/css/themes/default/assets/fonts/icons.svg deleted file mode 100644 index 1ee89d4368..0000000000 --- a/ansible/artifacts/sunbird/login/resources/css/themes/default/assets/fonts/icons.svg +++ /dev/null @@ -1,565 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/ansible/artifacts/sunbird/login/resources/css/themes/default/assets/fonts/icons.ttf b/ansible/artifacts/sunbird/login/resources/css/themes/default/assets/fonts/icons.ttf deleted file mode 100644 index ed9372f8ea0fbaa04f42630a48887e4b38945345..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 122092 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 +|+&Vdls@0SAya!5R?! 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
      6YuX1v{q9=vI}{pN+P4FW!CI?#11< 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 z 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 diff --git a/ansible/artifacts/sunbird/login/resources/css/themes/default/assets/fonts/icons.woff b/ansible/artifacts/sunbird/login/resources/css/themes/default/assets/fonts/icons.woff deleted file mode 100644 index 8b280b98fa2fa261aa4b0f8fd061f772073ef83e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 71508 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 diff --git a/ansible/artifacts/sunbird/login/resources/img/bg.svg b/ansible/artifacts/sunbird/login/resources/img/bg.svg deleted file mode 100644 index c5d85d8920..0000000000 --- a/ansible/artifacts/sunbird/login/resources/img/bg.svg +++ /dev/null @@ -1,33 +0,0 @@ - - - - bg - Created with Sketch. - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/ansible/artifacts/sunbird/login/resources/img/diksha_gov_logo.svg b/ansible/artifacts/sunbird/login/resources/img/diksha_gov_logo.svg deleted file mode 100644 index fd3c8c70ae..0000000000 --- a/ansible/artifacts/sunbird/login/resources/img/diksha_gov_logo.svg +++ /dev/null @@ -1 +0,0 @@ -diksha and gov logo \ No newline at end of file diff --git a/ansible/artifacts/sunbird/login/resources/img/favicon.ico b/ansible/artifacts/sunbird/login/resources/img/favicon.ico deleted file mode 100644 index 4efa5f58112409a2caeaab80c6852655a5a413e0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1150 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%0AGd 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 diff --git a/ansible/artifacts/sunbird/login/resources/js/login.js b/ansible/artifacts/sunbird/login/resources/js/login.js deleted file mode 100644 index a4a1a0ff8d..0000000000 --- a/ansible/artifacts/sunbird/login/resources/js/login.js +++ /dev/null @@ -1,171 +0,0 @@ -function getQueryStringValue (key) { - return decodeURIComponent(window.location.search.replace(new RegExp("^(?:.*[&\\?]" + encodeURIComponent(key).replace(/[\.\+\*]/g, "\\$&") + "(?:\\=([^&]*))?)?.*$", "i"), "$1")); -} - -window.onload = function(){ - - addVersionToURL(); - var error_message = (new URLSearchParams(window.location.search)).get('error_message'); - var success_message = (new URLSearchParams(window.location.search)).get('success_message'); - - if(error_message){ - var error_msg = document.getElementById('error-msg'); - error_msg.className = error_msg.className.replace("hide",""); - error_msg.innerHTML = error_message; - }else if(success_message){ - var success_msg = document.getElementById("success-msg"); - success_msg.className = success_msg.className.replace("hide",""); - success_msg.innerHTML = success_message; - } -} - -var storeLocation = function(){ - sessionStorage.setItem('url', window.location.href); -} - -var addVersionToURL = function (){ - var version = getQueryStringValue("version"); - - if (version == 1 || version == 2){ - - var selfSingUp = document.getElementById("selfSingUp"); - - if(selfSingUp) { - selfSingUp.className = selfSingUp.className.replace(/\bhide\b/g, ""); - } - - var stateButton = document.getElementById("stateButton"); - - if (version == 2 && stateButton) { - stateButton.className = stateButton.className.replace(/\bhide\b/g, ""); - } - - var versionLink = document.getElementById("versionLink"); - - if(versionLink){ - versionLink.href = versionLink.href + '&version=' + version ; - } - } - -} -var makeDivUnclickable = function() { - var containerElement = document.getElementById('kc-form'); - var overlayEle = document.getElementById('kc-form-wrapper'); - overlayEle.style.display = 'block'; - containerElement.setAttribute('class', 'unClickable'); -}; - -var inputBoxFocusIn = function(currentElement){ - if(currentElement.id !== 'totp'){ - var placeholderElement = document.querySelector("label[id='"+currentElement.id+"LabelPlaceholder']"); - var labelElement = document.querySelector("label[id='"+currentElement.id+"Label']"); - placeholderElement.className = placeholderElement.className.replace("hide", ""); - addClass(labelElement,"hide"); - } -}; -var inputBoxFocusOut = function(currentElement){ - if(currentElement.id !== 'totp'){ - var placeholderElement = document.querySelector("label[id='"+currentElement.id+"LabelPlaceholder']"); - var labelElement = document.querySelector("label[id='"+currentElement.id+"Label']"); - labelElement.className = labelElement.className.replace("hide", ""); - addClass(placeholderElement,"hide"); - } -}; - -function addClass(element,classname) -{ - var arr; - arr = element.className.split(" "); - if (arr.indexOf(classname) == -1) { - element.className += " " + classname; - } -} -const redirect = (redirectUrlPath) => { - const curUrlObj = window.location; - var redirect_uri = (new URLSearchParams(curUrlObj.search)).get('redirect_uri'); - var client_id = (new URLSearchParams(curUrlObj.search)).get('client_id'); - const sessionUrl = sessionStorage.getItem('url'); - if (redirect_uri) { - const updatedQuery = curUrlObj.search + '&error_callback=' + curUrlObj.href.split('?')[0]; - const redirect_uriLocation = new URL(redirect_uri); - sessionStorage.setItem('url', window.location.href); - - if(client_id === 'android'){ - window.location.href = curUrlObj.protocol + '//' + curUrlObj.host + redirectUrlPath + updatedQuery; - } - else - { - window.location.href = redirect_uriLocation.protocol + '//' + redirect_uriLocation.host + redirectUrlPath + updatedQuery; - } - } else if (sessionUrl) { - const sessionUrlObj = new URL(sessionUrl); - const updatedQuery = sessionUrlObj.search + '&error_callback=' + sessionUrlObj.href.split('?')[0]; - redirect_uri = (new URLSearchParams(sessionUrlObj.search)).get('redirect_uri'); - client_id = (new URLSearchParams(sessionUrlObj.search)).get('client_id'); - - if (redirect_uri) { - const redirect_uriLocation = new URL(redirect_uri); - if(client_id === 'android'){ - window.location.href = sessionUrlObj.protocol + '//' + sessionUrlObj.host + redirectUrlPath + updatedQuery; - } - else{ - window.location.href = redirect_uriLocation.protocol + '//' + redirect_uriLocation.host + - redirectUrlPath + updatedQuery; - } - } else { - redirectToLib(); - } - } else { - redirectToLib(); - } -}; -const redirectToLib = () => { - window.location.href = window.location.protocol + '//' + window.location.host + '/resource'; -}; - -const viewPassword = function(previewButton){ - console.log('Show Password'); - - var newPassword = document.getElementById("password-new"); - if (newPassword.type === "password") { - newPassword.type = "text"; - addClass(previewButton,"slash"); - } else { - newPassword.type = "password"; - previewButton.className = previewButton.className.replace("slash",""); - } -} -const handleSsoEvent = () => { - const ssoPath = '/sign-in/sso/select-org'; - const curUrlObj = window.location; - let redirect_uri = (new URLSearchParams(curUrlObj.search)).get('redirect_uri'); - let client_id = (new URLSearchParams(curUrlObj.search)).get('client_id'); - const sessionUrl = sessionStorage.getItem('url'); - if (redirect_uri) { - const redirect_uriLocation = new URL(redirect_uri); - sessionStorage.setItem('url', window.location.href); - if (client_id === 'android') { - const ssoUrl = curUrlObj.protocol + '//' + curUrlObj.host + ssoPath; - window.location.href = redirect_uri + '?ssoUrl=' + ssoUrl; - } else { - window.location.href = redirect_uriLocation.protocol + '//' + redirect_uriLocation.host + ssoPath; - } - } else if (sessionUrl) { - const sessionUrlObj = new URL(sessionUrl); - redirect_uri = (new URLSearchParams(sessionUrlObj.search)).get('redirect_uri'); - client_id = (new URLSearchParams(sessionUrlObj.search)).get('client_id'); - if (redirect_uri) { - const redirect_uriLocation = new URL(redirect_uri); - if (client_id === 'android') { - const ssoUrl = sessionUrlObj.protocol + '//' + sessionUrlObj.host + ssoPath; - window.location.href = redirect_uri + '?ssoUrl=' + ssoUrl; - } else { - window.location.href = redirect_uriLocation.protocol + '//' + redirect_uriLocation.host + ssoPath; - } - } else { - redirectToLib(); - } - } else { - redirectToLib(); - } -}; diff --git a/ansible/artifacts/sunbird/login/resources/login-reset-password.ftl b/ansible/artifacts/sunbird/login/resources/login-reset-password.ftl new file mode 100644 index 0000000000..5232e86d99 --- /dev/null +++ b/ansible/artifacts/sunbird/login/resources/login-reset-password.ftl @@ -0,0 +1,43 @@ +<#import "template.ftl" as layout> +<@layout.registrationLayout displayInfo=true; section> + <#if section = "title"> + ${msg("emailForgotTitle")} + <#elseif section = "header"> + ${msg("emailForgotTitle")} + <#elseif section = "form"> +

      + <#elseif section = "info" > + ${msg("emailInstruction")} + + \ No newline at end of file diff --git a/ansible/artifacts/sunbird/login/resources/login-update-password.ftl b/ansible/artifacts/sunbird/login/resources/login-update-password.ftl new file mode 100644 index 0000000000..bb2fee49c4 --- /dev/null +++ b/ansible/artifacts/sunbird/login/resources/login-update-password.ftl @@ -0,0 +1,48 @@ +<#import "template.ftl" as layout> +<@layout.registrationLayout displayInfo=true; section> + <#if section = "title"> + ${msg("updatePasswordTitle")} + <#elseif section = "header"> + ${msg("updatePasswordTitle")} + <#elseif section = "form"> + + + \ No newline at end of file diff --git a/ansible/artifacts/sunbird/login/resources/login.ftl b/ansible/artifacts/sunbird/login/resources/login.ftl new file mode 100644 index 0000000000..9115c346f3 --- /dev/null +++ b/ansible/artifacts/sunbird/login/resources/login.ftl @@ -0,0 +1,72 @@ +<#import "template.ftl" as layout> +<@layout.registrationLayout displayInfo=social.displayInfo; section> + <#if section = "title"> + ${msg("loginTitle",(realm.displayName!''))} + <#elseif section = "header"> + ${msg("loginTitleHtml",(realm.displayNameHtml!''))} + <#elseif section = "form"> + <#if realm.password> + + + <#elseif section = "info" > + <#if realm.password && realm.registrationAllowed && !usernameEditDisabled??> + + + + <#if realm.password && social.providers??> +
      + +
      + + + \ No newline at end of file diff --git a/ansible/artifacts/sunbird/login/messages/messages_en.properties b/ansible/artifacts/sunbird/login/resources/messages/messages_en.properties similarity index 86% rename from ansible/artifacts/sunbird/login/messages/messages_en.properties rename to ansible/artifacts/sunbird/login/resources/messages/messages_en.properties index ff12e19966..7c50cd1bef 100644 --- a/ansible/artifacts/sunbird/login/messages/messages_en.properties +++ b/ansible/artifacts/sunbird/login/resources/messages/messages_en.properties @@ -1,17 +1,13 @@ -doLogIn=Log In -doRegister=Sign Up -doSignIn=Sign In -doSignWithGoogle=with Google -doSignWithState=Sign In with State System +doLogIn=Log in +doRegister=Register doCancel=Cancel doSubmit=Submit -doReset=Reset doYes=Yes doNo=No doContinue=Continue doAccept=Accept doDecline=Decline -doForgotPassword=Forgot? +doForgotPassword=Forgot Password? doClickHere=Click here doImpersonate=Impersonate kerberosNotConfigured=Kerberos Not Configured @@ -28,17 +24,14 @@ realmChoice=Realm unknownUser=Unknown user loginTotpTitle=Mobile Authenticator Setup loginProfileTitle=Update Account Information -enterCode=Enter the code we sent to you -loginTimeout=You took too long to sign in. Sign in process starting from beginning. +loginTimeout=You took too long to login. Login process starting from beginning. oauthGrantTitle=Grant Access oauthGrantTitleHtml={0} errorTitle=We''re sorry... errorTitleHtml=We''re sorry ... emailVerifyTitle=Email verification emailForgotTitle=Forgot Your Password? -updatePasswordTitle=Update Password -newPasswordTitle=Create New Password -enterEmailPhonenumberToGetCode=Enter your Email ID/ Mobile number and we will send you instructions on how to reset your password +updatePasswordTitle=Update password codeSuccessTitle=Success code codeErrorTitle=Error code\: {0} @@ -50,10 +43,9 @@ recaptchaFailed=Invalid Recaptcha recaptchaNotConfigured=Recaptcha is required, but not configured consentDenied=Consent denied. -noAccount=Don''t have an account? -username=Username or Mobile number -emailOrPhone=Mobile number / Email ID -placeholderForEmailOrPhone=Enter Mobile number / Email ID +noAccount=New user? +username=Username +usernameOrEmail=Username or email firstName=First name givenName=Given name fullName=Full name @@ -61,8 +53,7 @@ lastName=Last name familyName=Family name email=Email password=Password -placeholderForPassword=Enter Password -passwordConfirm=Confirm Password +passwordConfirm=Confirm password passwordNew=New Password passwordNewConfirm=New Password confirmation rememberMe=Remember me @@ -95,13 +86,15 @@ emailLinkIdp3=to re-send the email. emailLinkIdp4=If you already verified the email in different browser emailLinkIdp5=to continue. -backToLogin= Back to Sign In +backToLogin=« Back to Login + +emailInstruction=Enter your username or email address and we will send you instructions on how to create a new password. copyCodeInstruction=Please copy this code and paste it into your application: pageExpiredTitle=Page has expired -pageExpiredMsg1=To restart the sign in process -pageExpiredMsg2=To continue the sign in process +pageExpiredMsg1=To restart the login process +pageExpiredMsg2=To continue the login process personalInfo=Personal Info: role_admin=Admin @@ -131,19 +124,19 @@ client_admin-cli=Admin CLI client_realm-management=Realm Management client_broker=Broker -invalidUserMessage=Invalid email ID/Mobile number or password. Please try again with valid credentials. +invalidUserMessage=Invalid username or password. invalidEmailMessage=Invalid email address. accountDisabledMessage=Account is disabled, contact admin. -accountTemporarilyDisabledMessage=Invalid username or password. You can try again after 24 hours or ask your organisation administrator to reset your credentials. -expiredCodeMessage=Sign in timeout. Please Sign In again. -expiredActionMessage=Action expired. Please continue with Sign In now. +accountTemporarilyDisabledMessage=Account is temporarily disabled, contact admin or try again later. +expiredCodeMessage=Login timeout. Please login again. +expiredActionMessage=Action expired. Please continue with login now. expiredActionTokenNoSessionMessage=Action expired. expiredActionTokenSessionExistsMessage=Action expired. Please start again. missingFirstNameMessage=Please specify first name. missingLastNameMessage=Please specify last name. missingEmailMessage=Please specify email. -missingUsernameMessage=Please specify Email or Mobile number. +missingUsernameMessage=Please specify username. missingPasswordMessage=Please specify password. missingTotpMessage=Please specify authenticator code. notMatchPasswordMessage=Passwords don''t match. @@ -155,7 +148,7 @@ invalidTotpMessage=Invalid authenticator code. usernameExistsMessage=Username already exists. emailExistsMessage=Email already exists. -federatedIdentityExistsMessage=User with {0} {1} already exists. Please Sign In to account management to link the account. +federatedIdentityExistsMessage=User with {0} {1} already exists. Please login to account management to link the account. confirmLinkIdpTitle=Account already exists federatedIdentityConfirmLinkMessage=User with {0} {1} already exists. How do you want to continue? @@ -165,7 +158,7 @@ confirmLinkIdpContinue=Add to existing account configureTotpMessage=You need to set up Mobile Authenticator to activate your account. updateProfileMessage=You need to update your user profile to activate your account. -updatePasswordMessage=Enter the new password you would like to use to Sign In. +updatePasswordMessage=You need to change your password to activate your account. verifyEmailMessage=You need to verify your email address to activate your account. linkIdpMessage=You need to verify your email address to link your account with {0}. @@ -191,7 +184,7 @@ failedToProcessResponseMessage=Failed to process response httpsRequiredMessage=HTTPS required realmNotEnabledMessage=Realm not enabled invalidRequestMessage=Invalid Request -failedLogout=Sign out failed +failedLogout=Logout failed unknownLoginRequesterMessage=Unknown login requester loginRequesterNotEnabledMessage=Login requester not enabled bearerOnlyMessage=Bearer-only applications are not allowed to initiate browser login @@ -216,7 +209,7 @@ couldNotSendAuthenticationRequestMessage=Could not send authentication request t unexpectedErrorHandlingRequestMessage=Unexpected error when handling authentication request to identity provider. invalidAccessCodeMessage=Invalid access code. sessionNotActiveMessage=Session not active. -invalidCodeMessage=An error occurred, please sign in again through your application. +invalidCodeMessage=An error occurred, please login again through your application. identityProviderUnexpectedErrorMessage=Unexpected error when authenticating with identity provider identityProviderNotFoundMessage=Could not find an identity provider with the identifier. identityProviderLinkSuccess=You successfully verified your email. Please go back to your original browser and continue there with the login. @@ -261,6 +254,5 @@ requiredAction.terms_and_conditions=Terms and Conditions requiredAction.UPDATE_PASSWORD=Update Password requiredAction.UPDATE_PROFILE=Update Profile requiredAction.VERIFY_EMAIL=Verify Email -user_not_found=This email ID/mobile number doesn''t belong to a valid user -p3pPolicy=CP="This is not a P3P policy!" +p3pPolicy=CP="This is not a P3P policy!" \ No newline at end of file diff --git a/ansible/artifacts/sunbird/login/theme.properties b/ansible/artifacts/sunbird/login/resources/theme.properties similarity index 84% rename from ansible/artifacts/sunbird/login/theme.properties rename to ansible/artifacts/sunbird/login/resources/theme.properties index 20358b79fa..d5c984f74f 100644 --- a/ansible/artifacts/sunbird/login/theme.properties +++ b/ansible/artifacts/sunbird/login/resources/theme.properties @@ -16,6 +16,6 @@ # parent=base -styles=css/semantic.min.css?v=1.14.b css/login.css?v=1.14.b -scripts=js/login.js?v=1.14.b -kcFeedbackAreaClass=ui info message +styles=css/semantic.min.css css/login.css + +kcFeedbackAreaClass=ui info message \ No newline at end of file diff --git a/ansible/artifacts/sunbird/login/template.ftl b/ansible/artifacts/sunbird/login/template.ftl deleted file mode 100644 index 23e7579f51..0000000000 --- a/ansible/artifacts/sunbird/login/template.ftl +++ /dev/null @@ -1,114 +0,0 @@ -<#macro registrationLayout bodyClass="" displayInfo=false displayMessage=true> - - - - - - - - - - - - - - <#if properties.meta?has_content> - <#list properties.meta?split(' ') as meta> - - - - <#nested "title"> - - <#if properties.styles?has_content> - <#list properties.styles?split(' ') as style> - - - - <#if properties.scripts?has_content> - <#list properties.scripts?split(' ') as script> - - - - <#if scripts??> - <#list scripts as script> - - - - - - - - -
      -
      - -
      -
      <#nested "header">
      -
      - - <#if realm.internationalizationEnabled> -
      -
      -
      - ${locale.current} -
        - <#list locale.supported as l> -
      • ${l.label}
      • - -
      -
      -
      -
      - - -
      -
      - <#if displayMessage && message?has_content> - - - -
      -
      - <#nested "form"> -
      -
      - - <#if displayInfo> -
      -
      - <#nested "info"> -
      -
      - -
      -
      -
      -
      - - - diff --git a/ansible/bootstrap.yml b/ansible/bootstrap.yml index a31e1339e7..45286dabf8 100644 --- a/ansible/bootstrap.yml +++ b/ansible/bootstrap.yml @@ -1,24 +1,12 @@ -- hosts: 'all' +- hosts: "{{hosts}}" become: yes - gather_facts: no - pre_tasks: - - name: Python predependency - raw: sudo apt update && sudo apt install -y python python-pkg-resources python-pip - vars_files: - - "{{inventory_dir}}/secrets.yml" - vars: - ansible_ssh_user: "{{bootstrap_user}}" - ansible_ssh_private_key_file: "{{bootstrap_key_path}}" roles: - - bootstrap_any + - role: bootstrap_any tags: - bootstrap_any - hosts: "{{hosts}}" - gather_facts: no become: yes - vars_files: - - "{{inventory_dir}}/secrets.yml" roles: - role: bootstrap_swarm when: swarm_master @@ -26,12 +14,8 @@ - bootstrap_swarm - hosts: "{{hosts}}" - gather_facts: no become: yes - vars_files: - - "{{inventory_dir}}/secrets.yml" roles: - role: azure-cli tags: - azure_cli - diff --git a/ansible/cassandra-backup.yml b/ansible/cassandra-backup.yml index f5555d540a..be013b2ba4 100644 --- a/ansible/cassandra-backup.yml +++ b/ansible/cassandra-backup.yml @@ -1,6 +1,6 @@ - hosts: cassandra become: yes vars_files: - - ['{{inventory_dir}}/secrets.yml'] + - ['{{inventory_dir}}/secrets.yml', 'secrets/{{env}}.yml'] roles: - cassandra-backup diff --git a/ansible/deploy.yml b/ansible/deploy.yml index 492d82d18d..1cc400f74f 100644 --- a/ansible/deploy.yml +++ b/ansible/deploy.yml @@ -23,7 +23,6 @@ vars_files: - ['{{inventory_dir}}/secrets.yml', 'secrets/{{env}}.yml'] roles: -# - acr-docker - stack-sunbird tags: - stack-sunbird diff --git a/ansible/docker_image_push.yml b/ansible/docker_image_push.yml deleted file mode 100644 index a9bb19b231..0000000000 --- a/ansible/docker_image_push.yml +++ /dev/null @@ -1,17 +0,0 @@ ---- -- name: "Push docker images to any docker registry" - hosts: localhost - vars_files: - - ['{{inventory_dir}}/secrets.yml'] - become: yes - tasks: - - name: login to registry - docker_login: - registry: "{{ vault_docker_registry_url }}" - username: "{{ vault_docker_registry_user }}" - password: "{{ vault_docker_registry_password }}" - - - name: Push image to registry - docker_image: - name: "{{ hub_org }}/{{ image_name }}:{{ image_tag }}" - push: yes diff --git a/ansible/es.yml b/ansible/es.yml index ab6aaf2ce8..783fc96ee5 100644 --- a/ansible/es.yml +++ b/ansible/es.yml @@ -2,9 +2,6 @@ become: yes vars_files: - ['{{inventory_dir}}/secrets.yml', 'secrets/{{env}}.yml'] - vars: - - es_snapshot_host: "{{app_es_snapshot_host}}" - - snapshot_base_path: "{{app_snapshot_base_path}}" roles: - es-azure-snapshot - es5-snapshot-purge @@ -15,8 +12,6 @@ become: yes vars_files: - ['{{inventory_dir}}/secrets.yml', 'secrets/{{env}}.yml'] - vars: - - es_restore_host: "{{app_es_restore_host}}" roles: - es-azure-restore tags: @@ -26,9 +21,6 @@ become: yes vars_files: - ['{{inventory_dir}}/secrets.yml', 'secrets/{{env}}.yml'] - vars: - - es_snapshot_host: "{{log_es_snapshot_host}}" - - snapshot_base_path: "{{log_snapshot_base_path}}" roles: - es-azure-snapshot - es2-snapshot-purge @@ -39,8 +31,6 @@ become: yes vars_files: - ['{{inventory_dir}}/secrets.yml', 'secrets/{{env}}.yml'] - vars: - - es_restore_host: "{{log_es_restore_host}}" roles: - es-azure-restore tags: diff --git a/ansible/inventories/sample/group_vars/postgresql-master b/ansible/inventories/sample/group_vars/postgresql-master new file mode 100644 index 0000000000..5602fcf220 --- /dev/null +++ b/ansible/inventories/sample/group_vars/postgresql-master @@ -0,0 +1,5 @@ +postgresql_databases: + - name: "{{kong_postgres_database}}" + - name: "{{keycloak_postgres_database}}" + - name: "{{application_postgres_database}}" + - name: "{{badger_postgres_database}}" diff --git a/ansible/inventories/sample/hosts b/ansible/inventories/sample/hosts new file mode 100644 index 0000000000..104b73ac22 --- /dev/null +++ b/ansible/inventories/sample/hosts @@ -0,0 +1,88 @@ +[swarm-manager-1] +"{{application_host}}" ansible_ssh_user="{{ssh_ansible_user}}" ansible_ssh_private_key_file="{{ansible_private_key_path}}" ansible_sudo_pass="{{sudo_passwd|default('')}}" swarm_master=true + +[swarm-manager:children] +swarm-manager-1 + +[swarm-bootstrap-manager:children] +swarm-manager-1 + +[postgresql-1] +"{{database_host}}" ansible_ssh_user="{{ssh_ansible_user}}" ansible_sudo_pass="{{sudo_passwd|default('')}}" ansible_ssh_private_key_file="{{ansible_private_key_path}}" + +[es-1] +"{{database_host}}" ansible_ssh_user="{{ssh_ansible_user}}" ansible_ssh_private_key_file="{{ansible_private_key_path}}" es_instance_name=es-1 es_etc_node_master=true ansible_sudo_pass="{{sudo_passwd|default('')}}" es_etc_node_data=true + +[cassandra-1] +"{{database_host}}" ansible_ssh_user="{{ssh_ansible_user}}" ansible_sudo_pass="{{sudo_passwd|default('')}}" ansible_ssh_private_key_file="{{ansible_private_key_path}}" + +[keycloak-1] +"{{application_host}}" ansible_ssh_user="{{ssh_ansible_user}}" ansible_sudo_pass="{{sudo_passwd|default('')}}" ansible_ssh_private_key_file="{{ansible_private_key_path}}" + +[keycloak:children] +keycloak-1 + +[postgresql-master:children] +postgresql-1 + +[postgresql-slave:children] + +[es:children] +es-1 + +[cassandra:children] +cassandra-1 + +[kong-api] +"{{application_host}}" ansible_ssh_user="{{ssh_ansible_user}}" ansible_sudo_pass="{{sudo_passwd|default('')}}" ansible_ssh_private_key_file="{{ansible_private_key_path}}" + +[swarm-agent-for-prometheus] +"{{application_host}}" ansible_ssh_user="{{ssh_ansible_user}}" ansible_sudo_pass="{{sudo_passwd|default('')}}" ansible_ssh_private_key_file="{{ansible_private_key_path}}" + +[swarm-agent-for-grafana] +"{{application_host}}" ansible_ssh_user="{{ssh_ansible_user}}" ansible_sudo_pass="{{sudo_passwd|default('')}}" ansible_ssh_private_key_file="{{ansible_private_key_path}}" + +[swarm-agent-for-alertmanager] +"{{application_host}}" ansible_ssh_user="{{ssh_ansible_user}}" ansible_sudo_pass="{{sudo_passwd|default('')}}" ansible_ssh_private_key_file="{{ansible_private_key_path}}" + + +[dev-log-es-1] +"{{application_host}}" ansible_ssh_user="{{ssh_ansible_user}}" ansible_sudo_pass="{{sudo_passwd|default('')}}" node_name=dev-log-es-1 es_etc_node_master=true es_etc_node_data=true ansible_ssh_private_key_file="{{ansible_private_key_path}}" + + +[dev-log-es:children] +dev-log-es-1 + + +[log-es:children] +dev-log-es + + +[non-swarm-nodes:children] +postgresql-master +postgresql-slave +es +cassandra +kong-api +keycloak +log-es + + +[swarm-nodes:children] +swarm-manager +swarm-bootstrap-manager +swarm-agent-for-prometheus +swarm-agent-for-grafana +swarm-agent-for-alertmanager + +[node-exporter:children] +non-swarm-nodes +swarm-manager + +[log-forwarder:children] +non-swarm-nodes +swarm-manager + +[sample:children] +non-swarm-nodes +swarm-nodes diff --git a/ansible/inventory/env/common.yml b/ansible/inventory/env/common.yml deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/ansible/inventory/env/group_vars/all.yml b/ansible/inventory/env/group_vars/all.yml deleted file mode 100644 index 73e2e12e97..0000000000 --- a/ansible/inventory/env/group_vars/all.yml +++ /dev/null @@ -1,546 +0,0 @@ -###################### Core ############################ - -# ENVIRONMENT CONFIGURATION -proxy_server_name: "{{domain_name}}" -keycloak_auth_server_url: "{{proto}}://{{ proxy_server_name }}/auth" -sunbird_echo_api_url: "{{proto}}://{{ proxy_server_name }}/api/echo/" -sunbird_web_url: "{{proto}}://{{ proxy_server_name }}" -sunbird_dataservice_url: "{{proto}}://{{ proxy_server_name }}/api/" -api_proxy_name: "{{proto}}://api.{{proxy_server_name}}" # Domain name on which device register and other api's will be accessed -swarm_load_balancer: "{{proxy_server_name}}" -proxy_site_key: "{{ core_vault_proxy_site_key }}" #SSL certificate's site.key file contents. More details in this wiki: {{proto}}://github.com/project-sunbird/sunbird-commons/wiki/Updating-SSL-certificates-in-Sunbird-Proxy-service -proxy_site_crt: "{{ core_vault_proxy_site_crt }}" #SSL certificate's site.crt file contents. More details in this wiki: {{proto}}://github.com/project-sunbird/sunbird-commons/wiki/Updating-SSL-certificates-in-Sunbird-Proxy-service -sunbird_environment: "{{env}}" # +content-service learner -sunbird_installation: "{{env}}" # +keycloak -sunbird_instance: "{{env}}" -env_short_name: "{{env}}" -sunbird_env: "{{env}}" #Ekstep environment to connect to. Use `qa` for non-prod deployments, and `prod` for prod deployment. -sunbird_app_name: "{{env}}" -azure_account_key: "{{core_vault_sunbird_azure_storage_key}}" - -# Keycloak -keycloak_api_management_user_first_name: "admin" -keycloak_api_management_user_last_name: "admin" -keycloak_api_management_user_email: "{{keycloak_api_management_user_email}}" -keycloak_api_management_username: "{{core_vault_sunbird_sso_username}}" -keycloak_api_management_user_password: "{{core_vault_sunbird_sso_password}}" -keycloak_management_user: "admin" -keycloak_management_password: "{{core_vault_keycloak_password}}" - -## Learner service -sunbird_url_shortner_access_token: "{{vault_core_url_shortner_access_token}}" -sunbird_url_shortner_enable: 'false' - -sunbird_keycloak_required_action_link_expiration_seconds: 2592000 - -sunbird_es_port: 9300 -mail_server_port: 587 -upstream_url: "{{azure_account_name}}.blob.core.windows.net/{{sunbird_content_azure_storage_container}}" -## Mailing list -# !! Override for specific alert groups; Default will be alerts_mailing_list -monitor_alerts_slack_channel: -app_alerts_mailing_list: "" -devops_alerts_mailing_list: "" -site_alerts_mailing_list: "" -keycloak_alerts_mailing_list: "" -api_manager_alerts_mailing_list: "" - -# Learner -sunbird_user_profile_field_default_visibility: private - -# Player -sunbird_external_content_whitelisted_domains: "" -sunbird_portal_user_upload_ref_link: http://www.sunbird.org/features-documentation/register_user - -# Content -content_service_whitelisted_channels: "" -content_service_blacklisted_channels: "" - -# Badger -badger_file_storage: storages.backends.azure_storage.AzureStorage -badger_admin_email: - -## Below passwords are used by DB install scripts when creating databases. Please use strong passwords. -sunbird_pg_user: "{{core_vault_postgres_username}}" -application_postgres_user: "{{core_vault_postgres_username}}" -application_postgres_password: "{{core_vault_postgres_password}}" -keycloak_postgres_user: "{{core_vault_postgres_username}}" -keycloak_postgres_password: "{{core_vault_postgres_password}}" -badger_postgres_password: "{{core_vault_postgres_password}}" -kong_postgres_user: "{{core_vault_postgres_username}}" -kong_postgres_password: "{{core_vault_postgres_password}}" -enc_postgres_user: "{{core_vault_postgres_username}}" -badger_postgres_user: "{{core_vault_postgres_username}}" -backup_storage_account: "{{azure_account_name}}" -backup_storage_key: "{{core_vault_sunbird_azure_storage_key}}" -sunbird_account_name: "{{azure_account_name}}" -sunbird_account_key: "{{core_vault_sunbird_azure_storage_key}}" -ansible_vault_password: "{{ core_vault_ansible_vault_password }}" -sunbird_azure_account_name: "{{azure_account_name}}" -jenkins_admin_username: "{{core_vault_jenkins_admin_username}}" -jenkins_admin_password: "{{core_vault_jenkins_admin_password}}" -vault_badging_authorization_key: "{{core_vault_badging_authorization_key}}" -vault_postgres_exporter_password: "{{core_vault_postgres_password}}" - -## Postgres configuration -swarm_address_space: "{{groups['swarm-manager'][0].split(\".\")[0]}}.0.0.0/8" #Application server address space (e.g. 10.3.0.0/24), also the agentpublicSubnet if using Azure scripts provided -keycloak_address_space: "{{groups['keycloak'][0].split(\".\")[0]}}.0.0.0/8" -postgres_address_space: "{{groups['postgresql-master'][0].split(\".\")[0]}}.0.0.0/8" - -## Cassandra configuration -cassandra_server_private_ip: "{{groups['cassandra']|join(',')}}" #Private IP of cassandra server -keystore_password: "{{core_vault_keystore_password}}" #Password to use for encrypting cassandra keystore. Use a strong password. -truststore_password: "{{core_vault_truststore_password}}" #Password to use for encrypting cassandra truststore. Use a strong password. - -# APPLICATION CONFIGURATION -kong_host: api-manager_kong - -## DB address -application_postgres_host: "{{groups['postgres'][0]}}" #Private IP of Postgres server -keycloak_postgres_host: "{{groups['postgres'][0]}}" #Private IP of Postgres server -kong_postgres_host: "{{groups['postgres'][0]}}" #Private IP of Postgres server -sunbird_cassandra_host: "{{groups['cassandra'][0]}}" #Private IP of Cassandra server -sunbird_es_host: "{{groups['es']| join(',')}}" - -## Application server configurations -sunbird_analytics_api_base_url: "http://{{analyticsapi_ip}}:9000" -sunbird_search_service_api_base_url: "http://{{searchservice_ip}}:9000" -sunbird_mail_server_host: "{{ mail_server_host }}" #SMTP server IP. Could be ignored if not mails are to be sent. -sunbird_mail_server_port: "{{ mail_server_port }}" #SMTP port. Could be ignored if not mails are to be sent. -sunbird_mail_server_username: "{{ mail_server_username }}" #SMTP username. Could be ignored if not mails are to be sent. -sunbird_mail_server_password: "{{ core_vault_mail_server_password }}" #SMTP server pasword. Could be ignored if not mails are to be sent. - -## Keycloak (auth server) login details -sunbird_sso_username: "{{ core_vault_sunbird_sso_username }}" -sunbird_sso_password: "{{ core_vault_sunbird_sso_password }}" -keycloak_admin_initial_password: "{{ core_vault_keycloak_password }}" -keycloak_build_src: "keycloak_build" -keycloak_ver: "keycloak-3.2.0.Final" -keycloak_sms_provider_build: "keycloak-email-phone-autthenticator-1.0-SNAPSHOT.jar" -keycloak_sms_provider_templates_src: "templates.tar.gz" -keycloak_sms_provider_templates_dest: "/opt/keycloak/themes/sunbird/login" -keycloak_ekstep_sunbird_login_theme_file: "login.tar.gz" -keycloak_ekstep_sunbird_login_theme_dest: "/opt/keycloak/themes/sunbird/login" -keycloak_postgresql: "postgresql-9.4.1212.jar" -sunbird_auth_version: 1.0v - - -## Content Repo configuration -sunbird_api_auth_token: "{{ core_vault_sunbird_api_auth_token }}" #Authorization key (JWT) to access Sunbird APIs. This will be in the output of deploy-apis.sh script, extracting it out is documented in the deployment wiki. -sunbird_ekstep_api_key: "{{ core_vault_sunbird_ekstep_api_key }}" #Authorization key (JWT) to access Ekstep APIs. Steps to generate this are documented on {{proto}}://github.com/project-sunbird/sunbird-commons/wiki/Obtaining-API-token-for-accessing-ekstep-APIs -sunbird_plugin_repo_api_key: "{{ core_vault_sunbird_ekstep_api_key }}" -sunbird_trampoline_secret: "{{ core_vault_sunbird_trampoline_secret }}" - -# ADVANCED CONFIGURATIONS - -cassandra_listen_address: "{{ cassandra_server_private_ip }}" -cassandra_seeds: "{{ cassandra_server_private_ip }}" -cassandra_broadcast_rpc_address: "{{ cassandra_server_private_ip }}" -cassandra_broadcast_address: "{{ cassandra_server_private_ip }}" -cassandra_listen_interface: '' -cassandra_log_dir: '/var/log/cassandra' -cassandra_root_dir: '/etc/cassandra' -cassandra_version: '3.9' -cassandra_port: 9042 -cassandra_rpc_address: 0.0.0.0 -cassandra_restore_dir: /home/deployer/ -cassandra_backup_azure_container_name: cassandra-backup -cassandra_backup_azure_storage_account_name: "{{azure_account_name}}" -cassandra_backup_azure_storage_access_key: "{{backup_storage_key}}" -cassandra_backup_dir: /data/cassandra/backup - - -keycloak_realm: sunbird -sunbird_content_player_url: "http://api-manager_kong:8000/" -sunbird_learner_player_url: "http://api-manager_kong:8000/" -sunbird_sso_client_id: admin-cli -sunbird_portal_realm: sunbird -sunbird_portal_auth_server_client: portal -sunbird_trampoline_client_id: trampoline -sunbird_appid: "{{env}}.sunbird.portal" -sunbird_pg_db: quartz -sunbird_pg_host: "{{ application_postgres_host }}" -sunbird_pg_port: 5432 -sunbird_pg_password: "{{ core_vault_postgres_password }}" -sunbird_sunbird_quartz_mode: cluster -sunbird_encryption_mode: local -sunbird_cassandra_urls: "{{ cassandra_server_private_ip }}:{{ cassandra_port }}" -sunbird_session_store_type: cassandra -sunbird_keycloak_client_id: 'portal' -sunbird_keycloak_public: true -sunbird_cache_store: "memory" -sunbird_portal_title_name: "{{sunbird_app_name}}" -sunbird_sso_publickey: "{{core_vault_sunbird_sso_publickey}}" -sunbird_azure_storage_account: "{{azure_account_name}}" -sunbird_azure_storage_key: "{{core_vault_sunbird_azure_storage_key}}" -sunbird_fcm_account_key: "{{core_vault_sunbird_fcm_account_key}}" -sunbird_env_logo_url: "{{proto}}://{{proxy_server_name}}/common/images/sunbird_logo.png" -sunbird_msg_91_auth: "{{core_vault_msg_91_auth_key}}" -sunbird_telemetry_pdata_id: "{{env}}.sunbird.learning.service" -sunbird_encryption_key: "{{ core_vault_sunbird_encryption_key }}" -#player_tenant_dir: -application_postgres_database: quartz -keycloak_postgres_database: keycloak -keyclaok_deployer_sudo_pass: "{{core_vault_keyclaok_deployer_sudo_pass}}" -keycloak_password: "{{core_vault_keycloak_password}}" - -#Content Service Vars -sunbird_content_repo_api_base_url: "http://{{learningservice_ip}}:8080/learning-service" -sunbird_content_repo_api_key: "{{ core_vault_sunbird_ekstep_api_key }}" -sunbird_search_service_api_key: "{{ core_vault_sunbird_ekstep_api_key }}" -sunbird_dial_repo_api_base_url: "{{sunbird_ekstep_api_base_url}}" -sunbird_dial_repo_api_key: "{{ core_vault_sunbird_ekstep_api_key }}" -sunbird_plugin_repo_api_base_url: "{{sunbird_ekstep_api_base_url}}" -sunbird_data_service_api_base_url: "{{sunbird_ekstep_api_base_url}}" -sunbird_data_service_api_key: "{{ core_vault_sunbird_ekstep_api_key }}" - -#API Manager -kong_postgres_port: 5432 -kong_postgres_database: "api_manager_{{env}}" -es_curl_host: "{{groups['es'][0]}}" - -## Logging details -syslog: - host: "{{groups['swarm-manager'][0]}}" - port: 51415 - -jenkins_replicas: 2 - -## PostgreSQL config -postgres_replication_user_name: "{{ core_vault_postgres_username }}" -postgres_password: "{{ core_vault_postgres_password }}" - - -postgresql_hba_entries: - - { type: local, database: all, user: postgres, auth_method: peer } - - { type: local, database: all, user: all, auth_method: peer } - - { type: host, database: all, user: all, address: '127.0.0.1/32', auth_method: md5 } - - { type: host, database: all, user: all, address: '::1/128', auth_method: md5 } - - { type: host, database: all, user: "{{ postgres_exporter_user }}", address: '{{ swarm_address_space }}', auth_method: md5 } - - { type: host, database: replication, user: "{{ postgres_replication_user_name }}", address: '{{ postgres_address_space }}', auth_method: md5 } - - { type: host, database: all, user: all, address: '{{ swarm_address_space }}', auth_method: md5 } - - { type: host, database: all, user: all, address: '{{ keycloak_address_space }}', auth_method: md5 } - - -proxy_prometheus_admin_creds: "{{ core_vault_proxy_prometheus_admin_creds }}" -vault_docker_registry_url: "{{core_vault_docker_registry_url}}" -vault_docker_registry_user: "{{core_vault_docker_registry_user}}" -vault_docker_registry_password: "{{core_vault_docker_registry_password}}" - -# ADDITIONAL CONFIGURATION -curl_host: "{{proxy_server_name}}" -prometheus_data_dir: /var/dockerdata/prometheus/data - -logger_es_host: "{{ groups['log-es'][0] }}" -logger_es_port: 9200 -#kibana_image: kibana:5.4.3 - -kibana_oauth_redirect_url: "{{proto}}://{{proxy_server_name}}/oauth2/callback" -keycloak: True - -api__host: "{{proxy_server_name}}" - -# New variable -sunbird_enable_signup: 'true' -sunbird_portal_base_url: "{{proto}}://{{proxy_server_name}}" - -monitor_es_host: "{{ groups['es'][0] }}" -alertmanager_host: "{{ groups['swarm-agent-for-alertmanager'][0] }}" -prometheus_host: "{{ groups['swarm-agent-for-prometheus'][0] }}" - -filebeat_logtsash_host: "{{ swarm_load_balancer }}" -expected_minimum_logs_per_minute: 30 -proxy_prometheus: false -enable_scraping_docker_metrics: false -postgres_exporter_postgres_port: 5432 -postgres_exporter_user: postgres_exporter -sunbird_cs_base_url: "{{proto}}://{{proxy_server_name}}/api" -kong_admin_api_url: http://localhost:8001 - -postgresql_backup_azure_storage_account_name: "{{azure_account_name}}" -postgresql_backup_azure_storage_access_key: "{{ backup_storage_key }}" -postgresql_restore_azure_storage_account_name: "{{azure_account_name}}" -postgresql_restore_azure_storage_access_key: "{{ backup_storage_key }}" - -grafana_url: "{{proto}}://{{proxy_server_name}}/grafana" -grafana_editor_username: editor - -monitor_alerts_mail_server_host: "{{ mail_server_host }}" -monitor_alerts_mail_server_port: "{{ mail_server_port }}" -monitor_alerts_mail_server_username: "{{ mail_server_username }}" -monitor_alerts_mail_server_password: "{{ core_vault_mail_server_password }}" - -#badger -badger_admin_password: "{{core_vault_badger_admin_password}}" -badger_postgres_database: badger -badger_host: "{{ groups['postgresql-master'][0]}}" -badger_container: badgr -sunbird_http_orgin: "{{proto}}://{{proxy_server_name}}/badging" - -#enc-service -enc_postgres_database: encryption - -#kafka vars -zk_hosts: "127.0.0.1:2181" -kafka_conf_dir: /etc/kafka -kafka_data_dir: /var/kafka -kafka_group: kafka -kafka_user: kafka -kafka_log_dir: /var/log/kafka -kafka_upstart_conf: /etc/init/kafka.conf -kafka_systemd_service: /etc/systemd/system/kafka.service -zookeeper_systemd_service: /etc/systemd/system/zookeeper.service -kafka_jvm_opts: "-Xmx1G -Xms1G" -kafka_log_retention_hours: 2400 -kafka_auto_create_topics: "false" -monasca_log_level: ERROR -delete_topic_enable: "true" -zk_port: 2181 - -kafka_broker_host: "{{groups['kafka']|join(',')}}" -zookeeper_quorum: "{{groups['kafka']|join(':2182,')}}:2181" -sunbird_telemetry_kafka_topic: "{{env}}.telemetry.ingestion" -sunbird_data_pipeline_kafka_topic: "{{env}}.telemetry.ingest" -telemetry_proxy_url: "{{sunbird_ekstep_api_base_url}}/data/v3/telemetry" -sunbird_telemetry_request_max_count: 100 -sunbird_telemetry_api: "{{sunbird_ekstep_api_base_url}}/data/v3/telemetry" - -sunbird_portal_cdn_url: "" -sunbird_tenant_cdn_url: "" - -# sunbird_cdn_url -player_cdn_account_key: "{{core_vault_sunbird_azure_storage_key}}" -player_cdn_container: player -player_cdn_account: "{{azure_account_name}}" - - -#Additional Variables -sunbird_user_bulk_upload_size: 1001 - -sunbird_open_saber_bridge_enable: 'false' - -# --- Content service specific ENV vars --- # -sunbird_content_service_enable_logging: 'true' -sunbird_language_service_api_key: "{{core_vault_sunbird_ekstep_api_key}}" -sunbird_language_service_api_base_url: '{{sunbird_ekstep_api_base_url}}/language' - -kong_version: 1.5.0-gold - -# Data pipeline vars -learning_analytics_service_url: 'http://{{learningservice_ip}}:9000' -ep_es_host: "{{ groups['telemetry-search-cluster'][0] }}" #For kibana pipeline-dashboard - - -#encryption Service -encryption_service_user: encryption -encryption_db_name: encryption -encryption_db_dialect: postgres -encryption_reservation_memory: 750MB -encryption_replicas: 1 -encryption_limit_memory: 750MB -encryption_limit_cpu: 1 -encryption_reservation_cpu: 1 -sunbird_allowed_login: -sunbird_course_batch_notification_enabled: 'true' -sunbird_device_register_api: "{{proto}}://{{api_proxy_name}}/v3/device/register/" -sunbird_course_batch_notification_signature: sunbird - -sunbird_authorization: "{{core_vault_sunbird_api_auth_token}}" -sunbird_lms_base_url: "{{proto}}://{{proxy_server_name}}/api" -sunbird_content_service_local_base_url: http://content-service:5000 -sunbird_kafka_host: "{{groups['kafka']|join(':9092,')}}:9092" -sunbird_qrimage_topic: "{{env}}.qrimage.request" - - -sunbird_azure_report_container_name: reports -sunbird_azure_account_key: "{{core_vault_sunbird_azure_storage_key}}" - -sunbird_google_captcha_site_key: "{{core_vault_sunbird_google_captcha_site_key_portal}}" -sunbird_google_oauth_clientId: "{{core_vault_sunbird_google_oauth_clientId_portal}}" -sunbird_google_oauth_clientSecret: "{{core_vault_sunbird_google_oauth_clientSecret_portal}}" -sunbird_google_keycloak_client_id: "google-auth" -sunbird_google_keycloak_secret: "{{core_vault_sunbird_google_keycloak_secret}}" -google_client_id: "{{core_vault_kibana_google_client_id}}" -google_client_secret: "{{core_vault_kibana_google_client_secret}}" -cookie_secret: "{{core_vault_kibana_cookie_secret}}" -grafana_admin_password: "{{core_vault_grafana_admin_password}}" -grafana_editor_password: "{{core_vault_grafana_editor_password}}" -grafana_dashboards_git_repo_url_with_credentails: "{{core_vault_grafana_dashboards_git_repo_url_with_credentails}}" -monitor_alerts_slack_url: "{{core_vault_monitor_alerts_slack_url}}" -kong__test_jwt: "{{core_vault_kong__test_jwt}}" - -# postgresql_users should only be created in master and replicated to slave -postgresql_users: - - name: "{{kong_postgres_user}}" - password: "{{postgres_password}}" - db: "{{kong_postgres_database}}" - priv: "ALL" - - name: "{{keycloak_postgres_user}}" - password: "{{postgres_password}}" - db: "{{keycloak_postgres_database}}" - priv: "ALL" - - name: "{{application_postgres_user}}" - password: "{{postgres_password}}" - db: "{{application_postgres_database}}" - priv: "ALL" - - name: "{{badger_postgres_user}}" - password: "{{postgres_password}}" - db: "{{badger_postgres_database}}" - priv: "ALL" - - -postgresql_databases: - - name: "{{kong_postgres_database}}" - - name: "{{keycloak_postgres_database}}" - - name: "{{application_postgres_database}}" - - name: "{{badger_postgres_database}}" - - name: "{{enc_postgres_database}}" - -#######App ES - -app_es_etc_cluster_name: "{{env}}" -app_es_etc_discovery_zen_minimum_master_nodes: "{{groups['es']| length | int}}" -app_es_snapshot_host: "{{ groups['es'][0] }}" -app_es_restore_host: "{{ groups['es'][0] }}" -app_es_snapshot_base_path: application - - -#######Log Es -log_es_etc_cluster_name: "{{env}}-log" -log_es_snapshot_host: "{{ groups['log-es'][0] }}" -log_es_restore_host: "{{ groups['log-es'][0] }}" -log_snapshot_base_path: logger -log_es_host: "{{ groups['log-es'][0] }}" - -####### Advanced Config ########## -keycloak_tar_path: keycloak.tar.gz -keycloak_theme_path: artifacts/sunbird -sunbird_telemetry_packet_size: 200 -sunbird_telemetry_sync_batch_size: 200 -content_service_channel_refresh_cron: '*/5 * * * *' -content_service_whitelisted_framework: '' -content_service_blacklisted_framework: '' -content_service_blacklisted_contenttype: '' -content_service_blacklisted_resourcetype: '' -content_service_whitelisted_resourcetype: '' -content_service_whitelisted_mimetype: '' -content_service_blacklisted_mimetype: '' -prometheus_storage_retention_time: 72h0m0s -sunbird_cloud_storage_urls: 'https://s3.ap-south-1.amazonaws.com/ekstep-public-{{ekstep_s3_env}}/,https://ekstep-public-{{ekstep_s3_env}}.s3-ap-south-1.amazonaws.com/,https://{{azure_account_name}}.blob.core.windows.net/{{sunbird_content_azure_storage_container}}/' -sunbird_email_max_recipients_limit: 100 -sunbird_cassandra_consistency_level: one -sunbird_cassandra_replication_strategy: '{"class":"SimpleStrategy","replication_factor":"1"}' -medium_rate_limit_per_hour: 5000 -sunbird_lock_expiry_time: 3600 -app_es_heap_size: 1500m -log_es_heap_size: 1500m -sunbird_otp_expiration: 1800 -sunbird_otp_length: 6 -sunbird_help_link_visibility: FALSE - - - -#Container Limits -proxy_replicas: 1 -proxy_reservation_memory: 64M -proxy_limit_memory: 128M -kong_replicas: 1 -kong_reservation_memory: 64M -kong_limit_memory: 256M -echo_service_replicas: 1 -echo_service_reservation_memory: 8M -echo_service_limit_memory: 16M -adminutil_replicas: 1 -adminutil_reservation_memory: 300M -adminutil_limit_memory: 300M -learner_limit_cpu: 1 -learner_replicas: 1 -learner_reservation_memory: 1000M -learner_limit_memory: 1000M -logger_logstash_heap_size: 512M -logger_logstash_replicas: 1 -logger_logstash_reservation_memory: 512M -logger_logstash_limit_memory: 750M -logger_kibana_reservation_memory: 750M -logger_kibana_limit_memory: 750M -logger_logspout_reservation_memory: 200M -logger_logspout_limit_memory: 200M -logger_oauth_reservation_memory: 32M -logger_oauth_limit_memory: 32M -prometheus_reservation_memory: 1G -prometheus_limit_memory: 1G -alertmanager_reservation_memory: 100M -alertmanager_limit_memory: 100M -node_exporter_reservation_memory: 16M -node_exporter_limit_memory: 32M -cadvisor_reservation_memory: 100M -cadvisor_limit_memory: 100M -elasticsearch_exporter_reservation_memory: 8M -elasticsearch_exporter_limit_memory: 24M -postgres_exporter_reservation_memory: 16M -postgres_exporter_limit_memory: 32M -statsd_exporter_reservation_memory: 8M -statsd_exporter_limit_memory: 16M -blackbox_exporter_reservation_memory: 16M -blackbox_exporter_limit_memory: 32M -jsonpath_exporter_reservation_memory: 32M -jsonpath_exporter_limit_memory: 64M -azure_blob_exporter_reservation_memory: 16M -azure_blob_exporter_limit_memory: 64M -grafana_reservation_memory: 100M -grafana_limit_memory: 100M -monitor_logstash_replicas: 1 -monitor_logstash_heap_size: 256m -monitor_logstash_reservation_memory: 256M -monitor_logstash_limit_memory: 350M -monitor_logspout_reservation_memory: 150M -monitor_logspout_limit_memory: 150M -player_replicas: 1 -player_reservation_memory: 256M -player_limit_memory: 512M -content_replicas: 1 -content_reservation_memory: 1000M -content_limit_memory: 1000M -learner_reservation_cpu: 1 -badger_replicas: 1 -badger_reservation_memory: 500MB -badger_limit_memory: 500MB - - -# not required -sunbird_image_storage_url: "https://{{azure_account_name}}.blob.core.windows.net/dial/" -vault_auth_key: "{{core_vault_auth_key}}" -vault_sender: "{{core_vault_sender}}" -vault_country: "{{core_vault_country}}" -vault_route: "{{core_vault_route}}" -vault_sms_method_type: "{{core_vault_sms_method_type}}" - -# telemetry -default_channel_id: "in.ekstep" - -## - -trampoline_secret: "{{core_vault_trampoline_secret}}" -es_api_host: "{{inventory_hostname}}" -sunbird_linked_content_base_url: "{{proto}}://{{proxy_server_name}}/play/content/" -enc_postgres_password: "{{core_vault_postgres_password}}" - -# Depricated value ?? -postgres_replication_user_password: "{{core_vault_postgres_password}}" -# Content service is calling ekstep ?? -# Config service variables, not required -sunbird_config_service_url: -config_refresh_interval: 10 -config_service_enabled: false -config_cache_ttl: 600 - -#### backup storage secret -backup_azure_storage_access_key: "{{core_vault_azure_storage_secret}}" - -#es-backup -app_es_snapshot_host: "{{ groups['es'][0] }}" -app_snapshot_base_path: applicationelasticsearch - -#log es backup -log_es_snapshot_host: "{{ groups['log-es'][0] }}" -log_snapshot_base_path: loggerelasticsearch diff --git a/ansible/inventory/env/group_vars/env.yml b/ansible/inventory/env/group_vars/env.yml deleted file mode 120000 index a9c19506c3..0000000000 --- a/ansible/inventory/env/group_vars/env.yml +++ /dev/null @@ -1 +0,0 @@ -../common.yml \ No newline at end of file diff --git a/ansible/sunbird-auth-provision.yml b/ansible/jmeter-deploy.yml similarity index 57% rename from ansible/sunbird-auth-provision.yml rename to ansible/jmeter-deploy.yml index 3142f079d5..c452b2f500 100644 --- a/ansible/sunbird-auth-provision.yml +++ b/ansible/jmeter-deploy.yml @@ -1,9 +1,5 @@ ---- -- hosts: all - become: true +- hosts: "jmeter" vars_files: - ['{{inventory_dir}}/secrets.yml', 'secrets/{{env}}.yml'] - roles: - - sunbird-auth-provision - + - jmeter-deploy \ No newline at end of file diff --git a/ansible/jmeter-provision.yml b/ansible/jmeter-provision.yml new file mode 100644 index 0000000000..ef0fc1c866 --- /dev/null +++ b/ansible/jmeter-provision.yml @@ -0,0 +1,6 @@ +- hosts: "jmeter" + become: yes + vars_files: + - ['{{inventory_dir}}/secrets.yml', 'secrets/{{env}}.yml'] + roles: + - jmeter-provision \ No newline at end of file diff --git a/ansible/sunbird-auth-deploy.yml b/ansible/mongobackup.yml similarity index 60% rename from ansible/sunbird-auth-deploy.yml rename to ansible/mongobackup.yml index 67f9eff57b..f17a55222c 100644 --- a/ansible/sunbird-auth-deploy.yml +++ b/ansible/mongobackup.yml @@ -1,8 +1,8 @@ ---- -- hosts: all - become: true +- hosts: mongodb vars_files: - ['{{inventory_dir}}/secrets.yml', 'secrets/{{env}}.yml'] - + become: yes roles: - - sunbird-auth-deploy + - mongo-backup + + diff --git a/ansible/monitoring.yml b/ansible/monitoring.yml index 74b04dd86d..5bf4544b40 100644 --- a/ansible/monitoring.yml +++ b/ansible/monitoring.yml @@ -55,7 +55,7 @@ tags: - stack-monitor -- hosts: all +- hosts: node-exporter become: yes vars_files: - ['{{inventory_dir}}/secrets.yml', 'secrets/{{env}}.yml'] @@ -72,12 +72,3 @@ - vm-agents-processexporter tags: - metrics-exporter - -- hosts: swarm-bootstrap-manager - become: yes - vars_files: - - ['{{inventory_dir}}/secrets.yml','secrets/{{env}}.yml'] - roles: - - prometheus_config - tags: - - lp_dp_monitoring diff --git a/ansible/provision.yml b/ansible/provision.yml index 5459418164..98c5aa551d 100644 --- a/ansible/provision.yml +++ b/ansible/provision.yml @@ -5,7 +5,6 @@ roles: - jre-1.8.0_144 - cassandra - - cassandra-cql-update tags: - cassandra @@ -16,7 +15,6 @@ roles: - openjdk - application_elasticsearch - - curl_es_command tags: - es diff --git a/ansible/roles/application_elasticsearch/meta/main.yml b/ansible/roles/application_elasticsearch/meta/main.yml index 0091abe7ea..c38ad624bb 100755 --- a/ansible/roles/application_elasticsearch/meta/main.yml +++ b/ansible/roles/application_elasticsearch/meta/main.yml @@ -8,12 +8,12 @@ dependencies: es_api_host: "{{ hostvars[inventory_hostname]['ansible_default_ipv4']['address'] }}", es_config: { node.name: "{{ es_instance_name }}", - cluster.name: "{{ app_es_etc_cluster_name }}", + cluster.name: "{{ es_etc_cluster_name }}", network.host: "{{ es_api_host }}", discovery.zen.ping.unicast.hosts: "{{ groups['es'] }}", node.data: "{{ es_etc_node_data }}", node.master: "{{ es_etc_node_master }}", - discovery.zen.minimum_master_nodes: "{{ app_es_etc_discovery_zen_minimum_master_nodes }}", + discovery.zen.minimum_master_nodes: "{{ es_etc_discovery_zen_minimum_master_nodes }}", bootstrap.memory_lock: true, cloud.azure.storage.my_account: { account: "{{ backup_storage_name }}", diff --git a/ansible/roles/artifacts-download-azure/meta/main.yml b/ansible/roles/artifacts-download-azure/meta/main.yml deleted file mode 100644 index a124d4f7cb..0000000000 --- a/ansible/roles/artifacts-download-azure/meta/main.yml +++ /dev/null @@ -1,2 +0,0 @@ -dependencies: - - azure-cli diff --git a/ansible/roles/artifacts-download-azure/tasks/main.yml b/ansible/roles/artifacts-download-azure/tasks/main.yml deleted file mode 100644 index 820039c25a..0000000000 --- a/ansible/roles/artifacts-download-azure/tasks/main.yml +++ /dev/null @@ -1,8 +0,0 @@ ---- -- name: Ensure azure blob storage container exists - command: az storage container exists --name {{ artifacts_container }} - -- name: Download from azure blob storage - command: az storage blob download -c {{ artifacts_container }} --name {{ artifact }} -f {{ artifact_path }} - async: 100 - poll: 10 diff --git a/ansible/roles/artifacts-upload-azure/meta/main.yml b/ansible/roles/artifacts-upload-azure/meta/main.yml index a124d4f7cb..23b18a800a 100644 --- a/ansible/roles/artifacts-upload-azure/meta/main.yml +++ b/ansible/roles/artifacts-upload-azure/meta/main.yml @@ -1,2 +1,2 @@ dependencies: - - azure-cli + - azure-cli \ No newline at end of file diff --git a/ansible/roles/artifacts-upload-azure/tasks/main.yml b/ansible/roles/artifacts-upload-azure/tasks/main.yml index 785dc1a455..62c424f87a 100644 --- a/ansible/roles/artifacts-upload-azure/tasks/main.yml +++ b/ansible/roles/artifacts-upload-azure/tasks/main.yml @@ -1,8 +1,16 @@ --- - name: Ensure azure blob storage container exists command: az storage container create --name {{ artifacts_container }} + ignore_errors: true + environment: + AZURE_STORAGE_ACCOUNT: "{{ artifacts_storage_account }}" + AZURE_STORAGE_KEY: "{{ artifact_storage_key }}" + - name: Upload to azure blob storage - command: az storage blob upload -c {{ artifacts_container }} --name {{ artifact }} -f {{ artifact_path }} - async: 3600 + command: az storage blob upload-batch -d {{ artifacts_container }} -s {{ artifacts }} + environment: + AZURE_STORAGE_ACCOUNT: "{{ artifacts_storage_account }}" + AZURE_STORAGE_KEY: "{{ artifacts_storage_key }}" + async: 100 poll: 10 diff --git a/ansible/roles/azure-cli/tasks/main.yml b/ansible/roles/azure-cli/tasks/main.yml index 0da83e8fbd..24c64bffc1 100644 --- a/ansible/roles/azure-cli/tasks/main.yml +++ b/ansible/roles/azure-cli/tasks/main.yml @@ -6,7 +6,4 @@ shell: curl -L https://packages.microsoft.com/keys/microsoft.asc | apt-key add - - name: ensure azure-cli and apt-transport-https is installed - apt: name={{ item }} state=present update_cache=yes cache_valid_time=3600 - with_items: - - apt-transport-https - - azure-cli + shell: apt update && apt install -y apt-transport-https azure-cli diff --git a/ansible/roles/bootstrap_any/tasks/main.yml b/ansible/roles/bootstrap_any/tasks/main.yml index 3dcfd77a53..e7d5e92d1a 100644 --- a/ansible/roles/bootstrap_any/tasks/main.yml +++ b/ansible/roles/bootstrap_any/tasks/main.yml @@ -1,19 +1,20 @@ +- include_vars: "{{inventory_dir}}/secrets.yml" + - name: Create group deployer group: name=deployer state=present + become: yes - name: Create user deployer - user: name=deployer comment="deployer" group=deployer groups=sudo shell=/bin/bash - -- name: Giving access to sudo without password - lineinfile: - path: /etc/sudoers - line: 'deployer ALL=(ALL) NOPASSWD:ALL' - state: present + user: name=deployer comment="deployer" group=deployer groups=sudo shell=/bin/bash password="{{sudo_crypt_deployer}}" update_password=always + become: yes - name: Add ssh public key deployer authorized_key: user=deployer key='{{ssh_public_key_deployer}}' + become: yes + - name: Create ulimit configuration template: src: limits.conf.j2 dest: "{{ ulimit_config_location }}" + become: yes diff --git a/ansible/roles/cassandra-backup/defaults/main.yml b/ansible/roles/cassandra-backup/defaults/main.yml deleted file mode 100644 index 148bcf83b2..0000000000 --- a/ansible/roles/cassandra-backup/defaults/main.yml +++ /dev/null @@ -1,3 +0,0 @@ -cassandra_root_dir: '/etc/cassandra' -data_dir: '/var/lib/cassandra/data' -cassandra_backup_azure_container_name: core-cassandra \ No newline at end of file diff --git a/ansible/roles/cassandra-backup/tasks/main.yml b/ansible/roles/cassandra-backup/tasks/main.yml index db4a3af231..aef9c4e1c4 100755 --- a/ansible/roles/cassandra-backup/tasks/main.yml +++ b/ansible/roles/cassandra-backup/tasks/main.yml @@ -14,7 +14,7 @@ - name: run the backup script become: yes - shell: python cassandra_backup.py "{{ cassandra_backup_gzip_file_name }}" + shell: python cassandra_backup.py "{{ cassandra_backup_gzip_file_name }}" -d "{{ data_dir }}" args: chdir: /data/cassandra/backup async: 7200 @@ -32,16 +32,16 @@ command: az storage container create --name {{ cassandra_backup_azure_container_name }} ignore_errors: true environment: - AZURE_STORAGE_ACCOUNT: "{{ backup_azure_storage_account_name }}" - AZURE_STORAGE_KEY: "{{ backup_azure_storage_access_key }}" + AZURE_STORAGE_ACCOUNT: "{{ cassandra_backup_azure_storage_account_name }}" + AZURE_STORAGE_KEY: "{{ cassandra_backup_azure_storage_access_key }}" - name: Upload to azure blob storage command: az storage blob upload --name "{{ cassandra_backup_gzip_file_name }}".tar.gz --file {{ cassandra_backup_gzip_file_path }} --container-name {{ cassandra_backup_azure_container_name }} environment: - AZURE_STORAGE_ACCOUNT: "{{ backup_azure_storage_account_name }}" - AZURE_STORAGE_KEY: "{{ backup_azure_storage_access_key }}" + AZURE_STORAGE_ACCOUNT: "{{ cassandra_backup_azure_storage_account_name }}" + AZURE_STORAGE_KEY: "{{ cassandra_backup_azure_storage_access_key }}" async: 3600 poll: 10 - name: clean up backup dir after upload - file: path="{{ cassandra_backup_dir }}" state=absent + file: path="{{ cassandra_backup_dir }}" state=absent \ No newline at end of file diff --git a/ansible/roles/cassandra-backup/templates/cassandra_backup.j2 b/ansible/roles/cassandra-backup/templates/cassandra_backup.j2 index 2978d1f2d4..5c6da8ca16 100644 --- a/ansible/roles/cassandra-backup/templates/cassandra_backup.j2 +++ b/ansible/roles/cassandra-backup/templates/cassandra_backup.j2 @@ -3,45 +3,30 @@ # Author: Rajesh Rajendran ''' -Create cassandra snapshot with specified name, -and create tar ball in targetdirectory name - -By default - -Cassandra data directory : /var/lib/cassandra/data -Snapshot name : cassandra_backup-YYYY-MM-DD -Backup name : cassandra_backup-YYYY-MM-DD.tar.gz +Create a snapshot and create tar ball in targetdirectory name usage: script snapshot_name -eg: ./cassandra_backup.py - -for help ./cassandra_backup.py -h +eg: ./cassandra_backup.py my_snapshot ''' -from os import walk, sep, system, getcwd, makedirs -from argparse import ArgumentParser +from os import path, walk, sep, system, getcwd, makedirs +from argparse import ArgumentParser from shutil import rmtree, ignore_patterns, copytree from re import match, compile from sys import exit from tempfile import mkdtemp -from time import strftime parser = ArgumentParser(description="Create a snapshot and create tar ball inside tardirectory") -parser.add_argument("-d", "--datadirectory", metavar="datadir", default='/var/lib/cassandra/data', - help="Path to cassadandra keyspaces. Default /var/lib/cassadra/data") -parser.add_argument("-s", "--snapshotname", metavar="snapshotname", - default="cassandra_backup-"+strftime("%Y-%m-%d"), - help="Name with which snapshot to be taken. Default {}".format("cassandra_backup-"+strftime("%Y-%m-%d"))) -parser.add_argument("-t", "--tardirectory", metavar="tardir", - default=getcwd(), help="Path to create the tarball. Default {}".format(getcwd())) +parser.add_argument("-d","--datadirectory", metavar="datadir", default='/data/cassandra/data', help="path to create the tarball. Default /var/lib/cassadra/data") +parser.add_argument("snapshotname", help="name in which you want to take the snapshot") +parser.add_argument("-t","--tardirectory", metavar="tardir", default=getcwd(), help="path to create the tarball. Default {}".format(getcwd())) args = parser.parse_args() # Create temporary directory to copy data -tmpdir = mkdtemp() +tmpdir=mkdtemp() makedirs(tmpdir+sep+"cassandra_backup") - def copy(): ''' Copying the data sanpshots to the target directory @@ -51,7 +36,7 @@ def copy(): try: for root, dirs, files in walk(args.datadirectory): - root_target_dir = tmpdir+sep+"cassandra_backup"+sep+sep.join(root.split(sep)[root_levels+1:-2]) + root_target_dir=tmpdir+sep+"cassandra_backup"+sep+sep.join(root.split(sep)[root_levels+1:-2]) if match(ignore_list, root_target_dir): continue if root.split(sep)[-1] == args.snapshotname: @@ -59,7 +44,6 @@ def copy(): except Exception as e: print(e) - # Creating schema command = "cqlsh -e 'DESC SCHEMA' > {}/cassandra_backup/db_schema.cql".format(tmpdir) rc = system(command) @@ -81,4 +65,4 @@ if rc == 0: system(command) # Cleaning up backup directory rmtree(tmpdir) - print("Cassandra backup completed and stored in {}/{}.tar.gz".format(args.tardirectory, args.snapshotname)) + print("Cassandra backup completed and stored in {}/{}.tar.gz".format(args.tardirectory,args.snapshotname)) \ No newline at end of file diff --git a/ansible/roles/cassandra-deploy/defaults/main.yml b/ansible/roles/cassandra-deploy/defaults/main.yml index c38c2c9d3a..42aa229991 100644 --- a/ansible/roles/cassandra-deploy/defaults/main.yml +++ b/ansible/roles/cassandra-deploy/defaults/main.yml @@ -1,2 +1,2 @@ -cassandra_jar_path: ../ -cassandra_deploy_path: /home/deployer +cassandra_jar_path: ../../cassandra-migration/target +cassandra_deploy_path: /home/deployer \ No newline at end of file diff --git a/ansible/roles/cassandra/tasks/main.yml b/ansible/roles/cassandra/tasks/main.yml index 286405a236..0ca53a2177 100755 --- a/ansible/roles/cassandra/tasks/main.yml +++ b/ansible/roles/cassandra/tasks/main.yml @@ -5,16 +5,6 @@ tags: - provision -- name: getting the server hostname - command: hostname - register: hostnameOfCql - -- name: add entry in hosts file - become: yes - lineinfile: - line: "127.0.0.1 {{hostnameOfCql.stdout}}" - path: /etc/hosts - - name: debian | Adding Cassandra Debian Repo Key apt_key: url: "{{ cassandra_repo_key }}" @@ -47,15 +37,3 @@ group: "root" mode: 0644 notify: "restart cassandra" - -- name: wait for cassandra to gossip with seed nodes - pause: - seconds: 10 - -- name: Restart Cassandra now - service: - name: cassandra - state: restarted - -- name: wait for cassandra to be up and running - wait_for: host={{inventory_hostname}} port=9042 delay=30 diff --git a/ansible/roles/changekey/defaults/main.yml b/ansible/roles/changekey/defaults/main.yml deleted file mode 100644 index 1529919bbf..0000000000 --- a/ansible/roles/changekey/defaults/main.yml +++ /dev/null @@ -1,5 +0,0 @@ -bootstrap_user_public_key: "" -bootstrap_user: -ssh_user: -ssh_private_file: -ssh_public_key: diff --git a/ansible/roles/changekey/tasks/main.yml b/ansible/roles/changekey/tasks/main.yml deleted file mode 100644 index 92253778df..0000000000 --- a/ansible/roles/changekey/tasks/main.yml +++ /dev/null @@ -1,24 +0,0 @@ -- name: Create group "{{bootstrap_user}}" - group: name="{{bootstrap_user}}" state=present - -- name: Create user "{{bootstrap_user}}" - user: - name: "{{bootstrap_user}}" - comment: "{{bootstrap_user}}" - group: "{{bootstrap_user}}" - groups: sudo - shell: /bin/bash - -- name: Giving access to sudo without password - lineinfile: - path: /etc/sudoers - line: '{{bootstrap_user}} ALL=(ALL) NOPASSWD:ALL' - state: present - -- name: Remove existing authorized_keys from the "{{bootstrap_user}}" file and add a single key to its authorized_keys - become: yes - command: bash -lc "echo \"{{bootstrap_user_public_key}}\" > /home/{{bootstrap_user}}/.ssh/authorized_keys" - -- name: Remove existing authorized_keys from the "{{ssh_user}}" file and add a single key to its authorized_keys - become: yes - command: bash -lc "echo \"{{ssh_public_key}}\" > /home/{{ssh_user}}/.ssh/authorized_keys" diff --git a/ansible/roles/curl_es_command/tasks/main.yml b/ansible/roles/curl_es_command/tasks/main.yml index f539b182c5..5ca8800891 100644 --- a/ansible/roles/curl_es_command/tasks/main.yml +++ b/ansible/roles/curl_es_command/tasks/main.yml @@ -9,4 +9,3 @@ args: chdir: /tmp/ run_once: true - no_log: false diff --git a/ansible/roles/elasticsearch/defaults/main.yml b/ansible/roles/elasticsearch/defaults/main.yml index 589464a655..59f01afd19 100755 --- a/ansible/roles/elasticsearch/defaults/main.yml +++ b/ansible/roles/elasticsearch/defaults/main.yml @@ -29,7 +29,6 @@ es_xpack_features: ["alerting","monitoring","graph","security"] #They do not effect the current configuration es_api_host: "localhost" es_api_port: 9200 -es_heap_size: 1500m # Since ansible 2.2 the following variables need to be defined # to allow the role to be conditionally played with a when condition. diff --git a/ansible/roles/elasticsearch/tasks/elasticsearch-Debian.yml b/ansible/roles/elasticsearch/tasks/elasticsearch-Debian.yml index 7f565ca63d..83748b04e0 100755 --- a/ansible/roles/elasticsearch/tasks/elasticsearch-Debian.yml +++ b/ansible/roles/elasticsearch/tasks/elasticsearch-Debian.yml @@ -6,7 +6,7 @@ when: es_allow_downgrades - name: Debian - Install apt-transport-https to support https APT downloads - apt: name=apt-transport-https state=present update_cache=yes + apt: name=apt-transport-https state=present when: es_use_repository - name: Debian - Add Elasticsearch repository key @@ -14,7 +14,7 @@ when: es_use_repository and es_apt_key - name: Debian - Add elasticsearch repository - apt_repository: repo={{ item.repo }} state={{ item.state}} + apt_repository: repo={{ item.repo }} state={{ item.state}} with_items: - { repo: "{{ es_apt_url_old }}", state: "absent" } - { repo: "{{ es_apt_url }}", state: "present" } @@ -25,7 +25,7 @@ when: es_version_lock - name: Debian - Ensure elasticsearch is installed - apt: name=elasticsearch{% if es_version is defined and es_version != "" %}={{ es_version }}{% endif %} state=present force={{force_install}} allow_unauthenticated={{ 'no' if es_apt_key else 'yes' }} update_cache=yes + apt: name=elasticsearch{% if es_version is defined and es_version != "" %}={{ es_version }}{% endif %} state=present force={{force_install}} allow_unauthenticated={{ 'no' if es_apt_key else 'yes' }} cache_valid_time=86400 when: es_use_repository register: debian_elasticsearch_install_from_repo diff --git a/ansible/roles/jenkins/defaults/main.yml b/ansible/roles/jenkins/defaults/main.yml index 750e2624da..55d708ba8a 100644 --- a/ansible/roles/jenkins/defaults/main.yml +++ b/ansible/roles/jenkins/defaults/main.yml @@ -1,7 +1,7 @@ --- # Optional method of pinning a specific version of Jenkins and/or overriding the # default Jenkins packaging URL. -jenkins_version: "2.154" +# jenkins_version: "1.644" # jenkins_pkg_url: "https://www.example.com" jenkins_connection_delay: 5 @@ -13,11 +13,6 @@ jenkins_jar_location: /opt/jenkins-cli.jar jenkins_plugins: [] jenkins_url_prefix: "" jenkins_java_options: "-Djenkins.install.runSetupWizard=false" -jenkins_plugins_install_dependencies: true -jenkins_plugins_state: present -jenkins_plugin_updates_expiration: 86400 -jenkins_plugin_timeout: 30 - jenkins_admin_username: admin jenkins_admin_password: admin @@ -27,328 +22,4 @@ jenkins_init_changes: - option: "JENKINS_ARGS" value: "--prefix={{ jenkins_url_prefix }}" - option: "{{ jenkins_java_options_env_var }}" - value: "{{ jenkins_java_options }}" -jenkins_plugins: - ansicolor: - version: "0.5.2" - blueocean-pipeline-editor: - version: "0.2.0" - blueocean-personalization: - version: "1.1.4" - nodejs: - version: "1.2.2" - blueocean-i18n: - version: "1.1.4" - sse-gateway: - version: "1.15" - jquery: - version: "1.11.2-0" - blueocean-events: - version: "1.1.4" - role-strategy: - version: "2.5.1" - pipeline-milestone-step: - version: "1.3.1" - durable-task: - version: "1.28" - token-macro: - version: "2.5" - pipeline-stage-tags-metadata: - version: "1.3.4" - rebuild: - version: "1.29" - pipeline-input-step: - version: "2.9" - branch-api: - version: "2.1.1" - antisamy-markup-formatter: - version: "1.5" - pubsub-light: - version: "1.12" - conditional-buildstep: - version: "1.3.6" - ws-cleanup: - version: "0.36" - greenballs: - version: "1.15" - workflow-aggregator: - version: "2.6" - command-launcher: - version: "1.2" - workflow-durable-task-step: - version: "2.27" - favorite: - version: "2.3.2" - workflow-cps-global-lib: - version: "2.12" - email-ext: - version: "2.63" - cloudbees-folder: - version: "6.7" - blueocean-web: - version: "1.9.0" - pipeline-rest-api: - version: "2.10" - workflow-step-api: - version: "2.17" - plain-credentials: - version: "1.4" - trilead-api: - version: "1.0.1" - uno-choice: - version: "2.1" - scm-api: - version: "2.3.0" - credentials: - version: "2.1.18" - blueocean-pipeline-scm-api: - version: "1.9.0" - git-server: - version: "1.7" - github: - version: "1.29.3" - jacoco: - version: "3.0.4" - github-branch-source: - version: "2.4.1" - authentication-tokens: - version: "1.3" - display-url-api: - version: "2.3.0" - external-monitor-job: - version: "1.7" - docker-workflow: - version: "1.17" - junit: - version: "1.26.1" - resource-disposer: - version: "0.12" - script-security: - version: "1.49" - jobgenerator: - version: "1.22" - pipeline-model-declarative-agent: - version: "1.1.1" - pipeline-utility-steps: - version: "2.2.0" - javadoc: - version: "1.4" - pipeline-model-api: - version: "1.3.4" - thinBackup: - version: "1.9" - lockable-resources: - version: "2.3" - ssh-slaves: - version: "1.29.1" - handlebars: - version: "1.1.1" - jdk-tool: - version: "1.1" - pam-auth: - version: "1.4" - subversion: - version: "2.12.1" - blueocean-core-js: - version: "1.9.0" - maven-plugin: - version: "3.1.2" - github-api: - version: "1.95" - job-dsl: - version: "1.71" - code-coverage-api: - version: "1.0.5" - blueocean-pipeline-api-impl: - version: "1.9.0" - jackson2-api: - version: "2.9.7.1" - pipeline-build-step: - version: "2.7" - blueocean-rest: - version: "1.9.0" - s3: - version: "0.11.2" - backup: - version: "1.6.1" - ldap: - version: "1.20" - workflow-scm-step: - version: "2.7" - multiple-scms: - version: "0.6" - matrix-auth: - version: "2.3" - timestamper: - version: "1.8.10" - ssh-agent: - version: "1.17" - pipeline-model-extensions: - version: "1.3.4" - build-user-vars-plugin: - version: "1.5" - matrix-project: - version: "1.13" - pipeline-stage-step: - version: "2.3" - blueocean-jwt: - version: "1.9.0" - pipeline-graph-analysis: - version: "1.9" - workflow-support: - version: "2.24" - run-condition: - version: "1.2" - icon-shim: - version: "2.0.3" - git: - version: "3.9.1" - workflow-basic-steps: - version: "2.13" - gradle: - version: "1.29" - jenkins-design-language: - version: "1.9.0" - ant: - version: "1.9" - pipeline-stage-view: - version: "2.10" - git-client: - version: "2.7.4" - workflow-multibranch: - version: "2.20" - parameterized-trigger: - version: "2.35.2" - hudson-wsclean-plugin: - version: "1.0.5" - audit-trail: - version: "2.3" - blueocean-rest-impl: - version: "1.9.0" - pipeline-model-definition: - version: "1.3.4" - generic-webhook-trigger: - version: "1.50" - workflow-api: - version: "2.33" - ssh-credentials: - version: "1.14" - bouncycastle-api: - version: "2.17" - workflow-job: - version: "2.31" - credentials-binding: - version: "1.17" - docker-commons: - version: "1.13" - momentjs: - version: "1.1.1" - apache-httpcomponents-client-4-api: - version: "4.5.5-3.0" - blueocean-commons: - version: "1.9.0" - envinject-api: - version: "1.5" - cobertura: - version: "1.13" - aws-java-sdk: - version: "1.11.457" - ace-editor: - version: "1.1" - jsch: - version: "0.1.54.2" - config-file-provider: - version: "3.4.1" - mailer: - version: "1.22" - mapdb-api: - version: "1.0.9.0" - variant: - version: "1.1" - jquery-detached: - version: "1.2.1" - structs: - version: "1.17" - windows-slaves: - version: "1.3.1" - pipeline-github-lib: - version: "1.0" - jobConfigHistory: - version: "2.19" - build-timeout: - version: "1.19" - workflow-cps: - version: "2.61" - pipeline-maven: - version: "3.6.6" - build-pipeline-plugin: - version: "1.5.8" - copyartifact: - version: "1.41" - slack: - version: "2.3" - htmlpublisher: - version: "1.14" - metrics: - version: "3.1.2.10" - blueocean-dashboard: - version: "1.1.4" - blueocean-display-url: - version: "2.0" - blueocean-github-pipeline: - version: "1.1.4" - swarm: - version: "3.4" - blueocean-config: - version: "1.1.4" - delivery-pipeline-plugin: - version: "1.0.3" - blueocean-git-pipeline: - version: "1.1.4" - blueocean-autofavorite: - version: "1.0.0" - blueocean: - version: "1.1.4" - # - ant - # - antisamy-markup-formatter - # - artifact-promotion - # - cloudbees-credentials - # - cobertura - # - copyartifact - # - credentials - # - cvs - # - delivery-pipeline-plugin - # - discard-old-build - # - envfile - # - external-monitor-job - # - git - # - git-client - # - gradle - # - greenballs - # - jacoco - # - javadoc - # - jquery - # - junit - # - ldap - # - mailer - # - mapdb-api - # - matrix-auth - # - matrix-project - # - maven-plugin - # - next-build-number - # - pam-auth - # - parameterized-trigger - # - scm-api - # - script-security - # - slack - # - ssh - # - ssh-credentials - # - ssh-slaves - # - subversion - # - token-macro - # - thinBackup - # - translation - # - windows-slaves - # - s3 - # - publish-over-ssh - # - timestamper \ No newline at end of file + value: "{{ jenkins_java_options }}" \ No newline at end of file diff --git a/ansible/roles/jenkins/meta/main.yml b/ansible/roles/jenkins/meta/main.yml deleted file mode 100644 index ab47bd76ed..0000000000 --- a/ansible/roles/jenkins/meta/main.yml +++ /dev/null @@ -1,3 +0,0 @@ ---- -dependencies: - - java8 \ No newline at end of file diff --git a/ansible/roles/jenkins/tasks/plugins.yml b/ansible/roles/jenkins/tasks/plugins.yml index 98f2469a6f..9c0788d10b 100644 --- a/ansible/roles/jenkins/tasks/plugins.yml +++ b/ansible/roles/jenkins/tasks/plugins.yml @@ -1,20 +1,6 @@ --- # Jenkins doesn't allow updates via CLI, though that is required before plugins # can be installed via CLI. See: https://gist.github.com/rowan-m/1026918 -# jenkins_plugin module doesn't support password files. -- name: Get Jenkins admin password from file. - slurp: - src: "{{ jenkins_admin_password_file }}" - register: adminpasswordfile - no_log: true - when: jenkins_admin_password_file != "" - tags: ['skip_ansible_lint'] - -- name: Set Jenkins admin password fact. - set_fact: - jenkins_admin_password: "{{ adminpasswordfile['stdout'] | default(jenkins_admin_password) }}" - no_log: true - - name: Create Jenkins updates folder. file: path: "{{ jenkins_home }}/updates" @@ -42,44 +28,24 @@ path: "{{ jenkins_admin_password_file }}" register: adminpasswordfile -# - name: Install Jenkins plugins using password. -# command: > -# java -jar {{ jenkins_jar_location }} -s http://{{ jenkins_hostname }}:{{ jenkins_http_port }}{{ jenkins_url_prefix | default('') }}/ -# install-plugin {{ item }} -# --username {{ jenkins_admin_username }} -# --password {{ jenkins_admin_password }} -# creates="{{ jenkins_home }}/plugins/{{ item }}.jpi" -# with_items: "{{ jenkins_plugins }}" -# when: jenkins_admin_password != "" -# notify: restart jenkins - -# - name: Install Jenkins plugins using password-file. -# command: > -# java -jar {{ jenkins_jar_location }} -s http://{{ jenkins_hostname }}:{{ jenkins_http_port }}{{ jenkins_url_prefix | default('') }}/ -# install-plugin {{ item }} -# --username {{ jenkins_admin_username }} -# --password-file {{ jenkins_admin_password_file }} -# creates={{ jenkins_home }}/plugins/{{ item }}.jpi -# with_items: "{{ jenkins_plugins }}" -# when: adminpasswordfile.stat.exists == True -# notify: restart jenkins - - name: Install Jenkins plugins using password. - jenkins_plugin: - name: "{{ item.key }}" - version: "{{ item.value['version'] }}" - jenkins_home: "{{ jenkins_home }}" - url_username: "{{ jenkins_admin_username }}" - url_password: "{{ jenkins_admin_password }}" - state: "{{ jenkins_plugins_state }}" - timeout: "{{ jenkins_plugin_timeout }}" - updates_expiration: "{{ jenkins_plugin_updates_expiration }}" - url: "http://{{ jenkins_hostname }}:{{ jenkins_http_port }}{{ jenkins_url_prefix }}" - with_dependencies: "{{ jenkins_plugins_install_dependencies }}" - when: > - 'version' in item.value - with_dict: "{{ jenkins_plugins }}" - #with_items: "{{ jenkins_plugins }}" + command: > + java -jar {{ jenkins_jar_location }} -s http://{{ jenkins_hostname }}:{{ jenkins_http_port }}{{ jenkins_url_prefix | default('') }}/ + install-plugin {{ item }} + --username {{ jenkins_admin_username }} + --password {{ jenkins_admin_password }} + creates="{{ jenkins_home }}/plugins/{{ item }}.jpi" + with_items: "{{ jenkins_plugins }}" when: jenkins_admin_password != "" notify: restart jenkins - tags: ['skip_ansible_lint'] \ No newline at end of file + +- name: Install Jenkins plugins using password-file. + command: > + java -jar {{ jenkins_jar_location }} -s http://{{ jenkins_hostname }}:{{ jenkins_http_port }}{{ jenkins_url_prefix | default('') }}/ + install-plugin {{ item }} + --username {{ jenkins_admin_username }} + --password-file {{ jenkins_admin_password_file }} + creates={{ jenkins_home }}/plugins/{{ item }}.jpi + with_items: "{{ jenkins_plugins }}" + when: adminpasswordfile.stat.exists == True + notify: restart jenkins diff --git a/ansible/roles/jenkins/templates/basic-security.groovy b/ansible/roles/jenkins/templates/basic-security.groovy index eddd0fdf07..847aa5a7c9 100755 --- a/ansible/roles/jenkins/templates/basic-security.groovy +++ b/ansible/roles/jenkins/templates/basic-security.groovy @@ -3,26 +3,17 @@ import hudson.security.* import jenkins.model.* def instance = Jenkins.getInstance() -def hudsonRealm = new HudsonPrivateSecurityRealm(false) -def users = hudsonRealm.getAllUsers() -users_s = users.collect { it.toString() } -// Create the admin user account if it doesn't already exist. -if ("{{ jenkins_admin_username }}" in users_s) { - println "Admin user already exists - updating password" +println "--> Checking if security has been set already" - def user = hudson.model.User.get('{{ jenkins_admin_username }}'); - def password = hudson.security.HudsonPrivateSecurityRealm.Details.fromPlainPassword('{{ jenkins_admin_password }}') - user.addProperty(password) - user.save() -} -else { - println "--> creating local admin user" +if (!instance.isUseSecurity()) { + println "--> creating local user 'admin'" + def hudsonRealm = new HudsonPrivateSecurityRealm(false) hudsonRealm.createAccount('{{ jenkins_admin_username }}', '{{ jenkins_admin_password }}') instance.setSecurityRealm(hudsonRealm) def strategy = new FullControlOnceLoggedInAuthorizationStrategy() instance.setAuthorizationStrategy(strategy) instance.save() -} \ No newline at end of file +} diff --git a/ansible/roles/keycloak/defaults/main.yml b/ansible/roles/keycloak/defaults/main.yml index 250308ff76..9325607e66 100644 --- a/ansible/roles/keycloak/defaults/main.yml +++ b/ansible/roles/keycloak/defaults/main.yml @@ -100,16 +100,9 @@ keycloak_custom_ds: ' ' keycloak_management_user: "admin" -keycloak_api_management_username: "admin" keycloak_management_password: "{{keycloak_password}}" theme: "sunrise.tar.gz" dest_theme: "/opt/keycloak/themes/" theme_file: sunrise keycloak_home: /opt/keycloak -# Sms Defaults -sunbird_msg_91_auth: -sunbird_msg_91_sender: -sunbird_msg_91_country_ID: -sunbird_msg_91_route: -sunbird_msg_91_method_type: diff --git a/ansible/roles/keycloak/tasks/deploy.yml b/ansible/roles/keycloak/tasks/deploy.yml old mode 100755 new mode 100644 index 49e259cfd7..998ba8b0f2 --- a/ansible/roles/keycloak/tasks/deploy.yml +++ b/ansible/roles/keycloak/tasks/deploy.yml @@ -1,56 +1,41 @@ -- stat: - path: /etc/init.d/keycloak - register: keycloak_service - - name: status service become: yes command: /etc/init.d/keycloak status register: keycloak poll: 5 async: 10 - when: keycloak_service.stat.islnk is defined - name: stop service become: yes - command: /etc/init.d/keycloak stop && pkill keycloak + command: /etc/init.d/keycloak stop && Pkill keycloak poll: 5 async: 10 ignore_errors: yes - when: - - keycloak_service.stat.islnk is defined - name: remove keycloak become: yes - file: path="{{keycloak_home}}" state=absent owner={{wildfly_user}} group={{wildfly_group}} force=yes + file: path="{{keycloak_home}}" state=absent + - name: change build script permissions become: yes file: path=/opt owner={{wildfly_user}} group={{wildfly_group}} mode=0755 recurse=yes -- name: Paste keycloak package on server - copy: src="{{keycloak_build_src}}/{{keycloak_ver}}.tar.gz" dest="/opt/" force=no owner={{wildfly_user}} group={{wildfly_group}} +- name: get the keycloak tarball + get_url: url=https://downloads.jboss.org/keycloak/3.2.0.Final/keycloak-3.2.0.Final.tar.gz dest=/opt/keycloak-3.2.0.Final.tar.gz force=no owner={{wildfly_user}} group={{wildfly_group}} - name: extarct the folder - unarchive: src="/opt/{{keycloak_ver}}.tar.gz" dest=/opt/ copy=no owner={{wildfly_user}} group={{wildfly_group}} + unarchive: src=/opt/keycloak-3.2.0.Final.tar.gz dest=/opt/ copy=no owner={{wildfly_user}} group={{wildfly_group}} - name: move the folder name - command: mv {{keycloak_ver}} keycloak + command: mv keycloak-3.2.0.Final keycloak args: chdir: /opt -- name: remove the {{keycloak_ver}} - become: yes - file: path=/opt/{{keycloak_ver}} state=absent - -- name: remove the {{keycloak_ver}} +- name: remove the keycloak-3.2.0.Final become: yes - file: path=/opt/{{keycloak_ver}}.tar.gz state=absent + file: path=/opt/keycloak-3.2.0.Final state=absent -- name: Create configuration directory - file: - path: "{{keycloak_home}}/standalone/configuration" - state: directory - mode: 0755 - name: copy the custom theme copy: src={{keycloak_theme_path}} dest="{{keycloak_home}}/themes/" owner={{wildfly_user}} group={{wildfly_group}} @@ -58,40 +43,41 @@ - name: XML file template: - src: "{{keycloak_build_src}}/ansible-templates/standalone-ha.xml" + src: standalone-ha.xml dest: "{{keycloak_home}}/standalone/configuration/standalone-ha.xml" owner: "{{ wildfly_user }}" group: "{{ wildfly_group }}" mode: 0750 -- name: Create driver directory postgresql - file: - path: "{{keycloak_home}}/modules/system/layers/keycloak/org/postgresql/main" - state: directory - mode: 0755 - -- name: Create driver directory {{keycloak_home}}/modules/system/layers/keycloak/org/postgresql/main +- name: Create driver directory file: path: "{{keycloak_home}}/modules/system/layers/keycloak/org/postgresql/main" owner: "{{ wildfly_user }}" group: "{{ wildfly_group }}" - mode: 0755 + mode: 750 state: directory when: keycloak_ds_driver_url and keycloak_ds_driver_name and keycloak_ds_driver_module and keycloak_custom_driver -- name: Deploy postgresql driver - copy: src="{{keycloak_build_src}}/{{keycloak_postgresql}}" dest="{{keycloak_home}}/modules/system/layers/keycloak/org/postgresql/main/" owner={{wildfly_user}} group={{wildfly_group}} mode=0755 + +- name: Download driver + get_url: + url: https://jdbc.postgresql.org/download/postgresql-9.4.1212.jar + dest: "{{keycloak_home}}/modules/system/layers/keycloak/org/postgresql/main" + owner: "{{ wildfly_user }}" + group: "{{ wildfly_group }}" + mode: 0750 when: keycloak_ds_driver_url and keycloak_ds_driver_name and keycloak_ds_driver_module and keycloak_custom_driver + - name: Copy module.xml template: - src: "{{keycloak_build_src}}/ansible-templates/module.xml.j2" + src: module.xml.j2 dest: "{{keycloak_home}}/modules/system/layers/keycloak/org/postgresql/main/module.xml" owner: "{{ wildfly_user }}" group: "{{ wildfly_group }}" @@ -108,90 +94,17 @@ keycloak_management_password is defined ignore_errors: yes -- name: Create providers directory - file: - path: "{{wildfly_dir}}/providers" - owner: "{{ wildfly_user }}" - group: "{{ wildfly_group }}" - mode: 0755 - state: directory - -- name: Deploy SMS plugin - copy: src="{{keycloak_build_src}}/{{keycloak_sms_provider_build}}" dest="{{wildfly_dir}}/providers/" owner={{wildfly_user}} group={{wildfly_group}} mode=0755 - -- name: Create sms-provider directory to store configuration - file: - path: "{{wildfly_dir}}/bin/sms-provider" - owner: "{{ wildfly_user }}" - group: "{{ wildfly_group }}" - mode: 0755 - state: directory - -- name: Create configuration file - template: - src: "{{keycloak_build_src}}/ansible-templates/Msg91Creds.json.j2" - dest: "{{wildfly_dir}}/bin/sms-provider/Msg91Creds.json" - owner: "{{wildfly_user}}" - group: "{{wildfly_group}}" - mode: 0755 - -- name: Create theme directory - file: - path: "{{keycloak_ekstep_sunbird_login_theme_dest}}" - state: directory - owner: "{{wildfly_user}}" - group: "{{wildfly_group}}" - mode: 0755 - recurse: yes - -- name: Deploy sms-provider templates - copy: src="{{keycloak_build_src}}/{{keycloak_sms_provider_templates_src}}" dest={{keycloak_sms_provider_templates_dest}} owner={{wildfly_user}} group={{wildfly_group}} - -- name: extarct Deploy sms-provider templates - unarchive: src="{{keycloak_sms_provider_templates_dest}}/templates.tar.gz" dest={{keycloak_sms_provider_templates_dest}} copy=no owner={{wildfly_user}} group={{wildfly_group}} mode=0755 - -- name: remove templates.tar.gz - become: yes - file: path="{{keycloak_sms_provider_templates_dest}}/templates.tar.gz" state=absent - -- name: Deploy ekstep login themes - copy: src="{{keycloak_build_src}}/{{keycloak_ekstep_sunbird_login_theme_file}}" dest="{{keycloak_ekstep_sunbird_login_theme_dest}}" owner={{wildfly_user}} group={{wildfly_group}} - -- name: Ekstract the folder - unarchive: src="{{keycloak_ekstep_sunbird_login_theme_dest}}/{{keycloak_ekstep_sunbird_login_theme_file}}" dest="{{keycloak_ekstep_sunbird_login_theme_dest}}/" copy=no owner={{wildfly_user}} group={{wildfly_group}} - -- name: remove email folder - become: yes - file: path="{{keycloak_home}}/themes/base/email" state=absent owner={{wildfly_user}} group={{wildfly_group}} force=yes - -- name: Create email theme directory - file: - path: "{{wildfly_dir}}/themes/base/email" - state: directory - owner: "{{wildfly_user}}" - group: "{{wildfly_group}}" - mode: 0755 - recurse: yes - -- name: Deploy ekstep Email themes - copy: src="{{keycloak_build_src}}/email.tar.gz" dest="{{wildfly_dir}}/themes/base/email" owner={{wildfly_user}} group={{wildfly_group}} - -- name: Ekstract the folder - unarchive: src="{{wildfly_dir}}/themes/base/email/email.tar.gz" dest="{{wildfly_dir}}/themes/base/email/" copy=no owner={{wildfly_user}} group={{wildfly_group}} - - name: status service become: yes command: /etc/init.d/keycloak status register: keycloak_status poll: 5 async: 10 - when: keycloak_service.stat.islnk is defined - name: start service become: yes command: /etc/init.d/keycloak start + when: "keycloak_status.stdout.find('running') == -1" poll: 5 async: 5 ignore_errors: yes - when: - - keycloak_service.stat.islnk is defined diff --git a/ansible/roles/keycloak/tasks/keycloak_bootstrap.yml b/ansible/roles/keycloak/tasks/keycloak_bootstrap.yml index af76e2416d..27ea05bc68 100644 --- a/ansible/roles/keycloak/tasks/keycloak_bootstrap.yml +++ b/ansible/roles/keycloak/tasks/keycloak_bootstrap.yml @@ -1,22 +1,10 @@ - name: Waiting Until Keycloak is fully functional wait_for: - host: "{{ inventory_hostname }}" port: 8080 delay: 5 -- name: Install dependencies for keycloak - apt: - name: "{{item}}" - update_cache: yes - with_items: - - python-pip - - python-setuptools - -- name: Copying python libraries - copy: src={{ role_path }}/files/python-keycloak-0.12.0 dest=/tmp/ - - name: Initialize python library to run keycloak bootstrap script - shell: cd /tmp/python-keycloak-0.12.0 && python setup.py install + shell: cd {{ role_path }}/files/python-keycloak-0.12.0 && python setup.py install - name: Save keycalok vars to json template: src="keycloak-bootstrap.conf.j2" dest="/tmp/keycloak-bootstrap.conf.json" mode="0644" @@ -29,13 +17,10 @@ - name: Pausing for 100 seconds sometime for keycloak to run completely pause: - seconds: 10 - -- name: Copy the keycloak bootstrap script - copy: src={{ role_path }}/files/python-keycloak-0.12.0/keycloak dest=/tmp + seconds: 100 - name: Run the keycloak bootstrap script - shell: cd /tmp/keycloak/ && python keycloak_main.py /tmp/keycloak-bootstrap.conf.json + shell: cd {{ role_path }}/files/python-keycloak-0.12.0/keycloak/ && python keycloak_main.py /tmp/keycloak-bootstrap.conf.json register: out until: '"404" not in out.stderr' retries: 2 diff --git a/ansible/roles/keycloak/templates/Msg91Creds.json.j2 b/ansible/roles/keycloak/templates/Msg91Creds.json.j2 index 1ce6e818d4..d584b8be72 100644 --- a/ansible/roles/keycloak/templates/Msg91Creds.json.j2 +++ b/ansible/roles/keycloak/templates/Msg91Creds.json.j2 @@ -1,7 +1,7 @@ { - "auth_key": "{{sunbird_msg_91_auth}}", - "sender": "{{sunbird_msg_91_sender}}", - "country": "{{sunbird_msg_91_country_ID}}", - "route": "{{sunbird_msg_91_route}}", - "sms_method_type": "{{sunbird_msg_91_method_type}}" + "auth_key": "{{vault_auth_key}}", + "sender": "{{vault_sender}}", + "country": "{{vault_country}}", + "route": "{{vault_route}}", + "sms_method_type": "{{vault_sms_method_type}}" } diff --git a/ansible/roles/kong-api/defaults/main.yml b/ansible/roles/kong-api/defaults/main.yml index 1f0383d3b3..49c03e682c 100644 --- a/ansible/roles/kong-api/defaults/main.yml +++ b/ansible/roles/kong-api/defaults/main.yml @@ -30,7 +30,6 @@ medium_request_size_limit: 10 large_request_size_limit: 100 # Default service prefixes -private_content_prefix: /private/content content_service_prefix: /content course_service_prefix: /course user_service_prefix: /user @@ -52,12 +51,10 @@ config_service_prefix: /config textbook_service_prefix: /textbook lock_service_prefix: /lock otp_service_prefix: /otp -sso_service_prefix: /sso # Service URLs content_service_url: "http://content-service:5000" learning_service_url: "http://learner-service:9000" -vm_learning_service_url: "http://{{learningservice_ip}}:8080/learning-service" telemetry_service_url: "http://telemetry-service:9001" player_service_url: "http://player_player:3000" echo_service_url: "http://api-manager_echo:9595" @@ -92,23 +89,6 @@ premium_consumer_rate_limits: # - {name: 'rate-limiting', config.hour: "{{ medium_rate_limit_per_hour }}"} # - {name: 'request-size-limiting', config.allowed_payload_size: "{{ medium_request_size_limit }}" } kong_apis: - - - name: PrivateContentAPIs - request_path: "{{ private_content_prefix }}/v3" - upstream_url: "{{ vm_learning_service_url }}/content/v3" - strip_request_path: true - plugins: - - name: jwt - - name: cors - - "{{ statsd_pulgin }}" - - name: acl - config.whitelist: privateContentMgmt - - name: rate-limiting - config.policy: local - config.hour: "{{ medium_rate_limit_per_hour }}" - config.limit_by: credential - - name: request-size-limiting - config.allowed_payload_size: "{{ small_request_size_limit }}" - name: createContent request_path: "{{ content_service_prefix }}/v1/create" upstream_url: "{{ content_service_url }}/v1/content/create" @@ -1201,22 +1181,6 @@ kong_apis: config.limit_by: credential - name: request-size-limiting config.allowed_payload_size: "{{ small_request_size_limit }}" - - name: getCourseProgressDashboardV2 - request_path: "{{ dashboard_service_prefix }}/v2/progress/course" - upstream_url: "{{ learning_service_url }}/v2/dashboard/progress/course" - strip_request_path: true - plugins: - - name: jwt - - name: cors - - "{{ statsd_pulgin }}" - - name: acl - config.whitelist: courseUser - - name: rate-limiting - config.policy: local - config.hour: "{{ medium_rate_limit_per_hour }}" - config.limit_by: credential - - name: request-size-limiting - config.allowed_payload_size: "{{ small_request_size_limit }}" - name: getCourseConsumptionDashboard request_path: "{{ dashboard_service_prefix }}/v1/consumption/course" upstream_url: "{{ learning_service_url }}/v1/dashboard/consumption/course" @@ -2529,7 +2493,7 @@ kong_apis: config.allowed_payload_size: "{{ small_request_size_limit }}" - name: searchChannel request_path: "{{ channel_service_prefix }}/v1/search" - upstream_url: "{{ content_service_url }}/v1/channel/search" + upstream_url: "{{ content_service_url }}v1/channel/search" strip_request_path: true plugins: - name: jwt @@ -3387,22 +3351,6 @@ kong_apis: config.limit_by: credential - name: request-size-limiting config.allowed_payload_size: "{{ small_request_size_limit }}" - - name: createSession - request_path: "{{ sso_service_prefix }}/v1/create/session" - upstream_url: "{{ player_service_url }}/v1/sso/create/session" - strip_request_path: true - plugins: - - name: jwt - - name: cors - - "{{ statsd_pulgin }}" - - name: acl - config.whitelist: publicUser - - name: rate-limiting - config.policy: local - config.hour: "{{ medium_rate_limit_per_hour }}" - config.limit_by: credential - - name: request-size-limiting - config.allowed_payload_size: "{{ small_request_size_limit }}" # Data pipeline - name: "datasetSubmitRequest" @@ -3700,48 +3648,3 @@ kong_apis: config.limit_by: credential - name: request-size-limiting config.allowed_payload_size: "{{ small_request_size_limit }}" - - name: "contentBadgeLink" - request_path: "{{ badge_service_prefix }}/v1/content/link" - upstream_url: "{{ learning_service_url }}/v1/content/link" - strip_request_path: true - plugins: - - {name: 'jwt'} - - {name: 'cors'} - - "{{ statsd_pulgin }}" - - {name: 'acl', config.whitelist: 'publicUser'} - - {name: 'rate-limiting', config.policy: "local", config.hour: "{{ medium_rate_limit_per_hour }}"} - - {name: 'request-size-limiting', config.allowed_payload_size: "{{ small_request_size_limit }}" } - - name: "contentBadgeUnLink" - request_path: "{{ badge_service_prefix }}/v1/content/unlink" - upstream_url: "{{ learning_service_url }}/v1/content/unlink" - strip_request_path: true - plugins: - - {name: 'jwt'} - - {name: 'cors'} - - "{{ statsd_pulgin }}" - - {name: 'acl', config.whitelist: 'publicUser'} - - {name: 'rate-limiting', config.policy: "local", config.hour: "{{ medium_rate_limit_per_hour }}"} - - {name: 'request-size-limiting', config.allowed_payload_size: "{{ small_request_size_limit }}" } - - name: "privateUserUpdate" - request_path: "{{ user_service_prefix }}/private/v1/update" - upstream_url: "{{ learning_service_url }}/private/user/v1/update" - strip_request_path: true - plugins: - - {name: 'jwt'} - - {name: 'cors'} - - "{{ statsd_pulgin }}" - - {name: 'acl', config.whitelist: 'publicUser'} - - {name: 'rate-limiting', config.policy: "local", config.hour: "{{ medium_rate_limit_per_hour }}"} - - {name: 'request-size-limiting', config.allowed_payload_size: "{{ small_request_size_limit }}" } - - - name: "getUserType" - request_path: "{{ user_service_prefix }}/v1/type/list" - upstream_url: "{{ learning_service_url }}/v1/user/type/list" - strip_request_path: true - plugins: - - {name: 'jwt'} - - {name: 'cors'} - - "{{ statsd_pulgin }}" - - {name: 'acl', config.whitelist: 'publicUser'} - - {name: 'rate-limiting', config.policy: "local", config.hour: "{{ medium_rate_limit_per_hour }}"} - - {name: 'request-size-limiting', config.allowed_payload_size: "{{ small_request_size_limit }}" } diff --git a/ansible/roles/kong-api/tasks/main.yml b/ansible/roles/kong-api/tasks/main.yml index e38ef68762..3187857905 100644 --- a/ansible/roles/kong-api/tasks/main.yml +++ b/ansible/roles/kong-api/tasks/main.yml @@ -1,6 +1,6 @@ --- - name: Ensure pip is installed - apt: name=python-pip update_cache=yes + apt: name=python-pip when: ansible_os_family == 'Debian' - name: Ensure retry is installed @@ -12,22 +12,14 @@ - name: Copy kong api scripts copy: src=static-files/kong-api-scripts dest=/tmp mode=0755 - #- name: "Ensure kong_admin_api_url is available before running the scripts" - # uri: - # url: "{{ kong_admin_api_url }}/status" - # status_code: 200 - # register: result - # until: result.status == 200 - # retries: 60 - # delay: 5 - -- name: Extracting where the host in which api manager is running - command: bash -lc "sudo docker service ps api-manager_kong | grep Runn | head -n1 | awk '{print $4}'" - register: kong_running_host - delegate_to: "{{groups['swarm-manager-1'][0]}}" - -- set_fact: - kong_admin_api_url: "http://{{kong_running_host.stdout}}:8001" +- name: "Ensure kong_admin_api_url is available before running the scripts" + uri: + url: "{{ kong_admin_api_url }}/status" + status_code: 200 + register: result + until: result.status == 200 + retries: 60 + delay: 5 - name: waiting for 30 seconds for api manager to be fully functional pause: diff --git a/ansible/roles/kong-consumer/defaults/main.yml b/ansible/roles/kong-consumer/defaults/main.yml index 57f85f48f7..955e7f05c7 100644 --- a/ansible/roles/kong-consumer/defaults/main.yml +++ b/ansible/roles/kong-consumer/defaults/main.yml @@ -64,7 +64,6 @@ implementaion_user_groups: - dialcodeAdmin - dialcodeUpdate - dialcodeUser - - privateContentMgmt # List all consumer groups in group_vars kong_all_consumer_groups: @@ -97,7 +96,6 @@ kong_all_consumer_groups: - domainAdmin - domainUpdate - domainUser - - privateContentMgmt kong_admin_groups: - kongConsumer diff --git a/ansible/roles/kong-consumer/tasks/main.yml b/ansible/roles/kong-consumer/tasks/main.yml index 155fa8ac13..11c10b1e43 100644 --- a/ansible/roles/kong-consumer/tasks/main.yml +++ b/ansible/roles/kong-consumer/tasks/main.yml @@ -15,22 +15,14 @@ - name: Copy kong api scripts copy: src=static-files/kong-api-scripts dest=/tmp mode=0755 - #- name: "Ensure kong_admin_api_url is available before running the scripts" - # uri: - # url: "{{ kong_admin_api_url }}/status" - # status_code: 200 - # register: result - # until: result.status == 200 - # retries: 60 - # delay: 5 - -- name: Extracting where the host in which api manager is running - command: bash -lc "sudo docker service ps api-manager_kong | grep Runn | head -n1 | awk '{print $4}'" - register: kong_running_host - delegate_to: "{{groups['swarm-manager-1'][0]}}" - -- set_fact: - kong_admin_api_url: "http://{{kong_running_host.stdout}}:8001" +- name: "Ensure kong_admin_api_url is available before running the scripts" + uri: + url: "{{ kong_admin_api_url }}/status" + status_code: 200 + register: result + until: result.status == 200 + retries: 60 + delay: 5 - name: Run script to save consumers shell: "python /tmp/kong-api-scripts/kong_consumers.py /tmp/kong_consumers.json --kong-admin-api-url={{ kong_admin_api_url }}" diff --git a/ansible/roles/monit/tasks/main.yml b/ansible/roles/monit/tasks/main.yml index 418f8c4f4a..df229660e0 100755 --- a/ansible/roles/monit/tasks/main.yml +++ b/ansible/roles/monit/tasks/main.yml @@ -19,7 +19,6 @@ state: present force: yes notify: restart monit - ignore_errors: yes - name: Create monit folder file: path={{ item }} state=directory diff --git a/ansible/roles/postgresql-data-update/tasks/main.yml b/ansible/roles/postgresql-data-update/tasks/main.yml index 615f9188cf..800624ff43 100644 --- a/ansible/roles/postgresql-data-update/tasks/main.yml +++ b/ansible/roles/postgresql-data-update/tasks/main.yml @@ -1,7 +1,7 @@ -- name: Verifying db users are present else creating them +- name: creating database include: databases.yml -- name: creating database +- name: Verifying db users are present else creating them include: users.yml - name: Copy the templates diff --git a/ansible/roles/postgresql-data-update/templates/tables_postgres.sql b/ansible/roles/postgresql-data-update/templates/tables_postgres.sql index 9c5beaa1cd..b72eaf5d24 100644 --- a/ansible/roles/postgresql-data-update/templates/tables_postgres.sql +++ b/ansible/roles/postgresql-data-update/templates/tables_postgres.sql @@ -1,3 +1,14 @@ +tables_postgres.sql +9072cfb 7 days ago + manzarul.haque issue #485 feat:quartz chnages +0 contributors +RawBlameHistory +188 lines (169 sloc) 6.54 KB +-- Thanks to Patrick Lightbody for submitting this... +-- +-- In your Quartz properties file, you'll need to set +-- org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.PostgreSQLDelegate + drop table qrtz_fired_triggers; DROP TABLE QRTZ_PAUSED_TRIGGER_GRPS; DROP TABLE QRTZ_SCHEDULER_STATE; diff --git a/ansible/roles/postgresql/tasks/setup-Debian.yml b/ansible/roles/postgresql/tasks/setup-Debian.yml index 8a9b683769..fdfcc44f0c 100755 --- a/ansible/roles/postgresql/tasks/setup-Debian.yml +++ b/ansible/roles/postgresql/tasks/setup-Debian.yml @@ -7,7 +7,6 @@ - name: Ensure PostgreSQL packages are installed. apt: name: "{{ item }}" - update_cache: yes state: installed with_items: "{{ postgresql_packages }}" diff --git a/ansible/roles/prometheus-backup/tasks/main.yml b/ansible/roles/prometheus-backup/tasks/main.yml index 9fda4a9327..274c23d0cc 100644 --- a/ansible/roles/prometheus-backup/tasks/main.yml +++ b/ansible/roles/prometheus-backup/tasks/main.yml @@ -1,5 +1,5 @@ - name: ensure prometheus is stopped before backup - shell: "docker service scale monitor_prometheus=0 && sleep 10" + shell: "docker service scale monitor_prometheus=0" delegate_to: "{{groups['swarm-bootstrap-manager'][0]}}" - name: Starting Prometheus backup @@ -29,14 +29,14 @@ command: az storage container create --name {{ prometheus_backup_azure_container_name }} ignore_errors: true environment: - AZURE_STORAGE_ACCOUNT: "{{ backup_azure_storage_account_name }}" - AZURE_STORAGE_KEY: "{{ backup_azure_storage_access_key }}" + AZURE_STORAGE_ACCOUNT: "{{ backup_storage_name }}" + AZURE_STORAGE_KEY: "{{ backup_storage_key }}" - name: Upload to azure blob storage command: az storage blob upload --name {{ prometheus_backup_gzip_file_name }} --file {{ prometheus_backup_gzip_file_path }} --container-name {{ prometheus_backup_azure_container_name }} environment: - AZURE_STORAGE_ACCOUNT: "{{ backup_azure_storage_account_name }}" - AZURE_STORAGE_KEY: "{{ backup_azure_storage_access_key }}" + AZURE_STORAGE_ACCOUNT: "{{ backup_storage_name }}" + AZURE_STORAGE_KEY: "{{ backup_storage_key }}" async: 3600 poll: 10 diff --git a/ansible/roles/prometheus_config/defaults/main.yml b/ansible/roles/prometheus_config/defaults/main.yml deleted file mode 100644 index 7b16927069..0000000000 --- a/ansible/roles/prometheus_config/defaults/main.yml +++ /dev/null @@ -1,2 +0,0 @@ -prometheus_file_path: "/opt/docker/stacks/monitor/config/prometheus.yml" - diff --git a/ansible/roles/prometheus_config/tasks/main.yml b/ansible/roles/prometheus_config/tasks/main.yml deleted file mode 100644 index 84a6485fe4..0000000000 --- a/ansible/roles/prometheus_config/tasks/main.yml +++ /dev/null @@ -1,32 +0,0 @@ ---- - -- name: Update node exporter ip - replace: - path: "{{ prometheus_file_path }}" - regexp: ":9101']$" - replace: ":9101{% for ip in groups['all'] %}','{{ ip }}:9101{% endfor %}']" - - -- name: Update process exporter ip - replace: - path: "{{ prometheus_file_path }}" - regexp: ":1111']$" - replace: ":1111{% for ip in groups['process-exporter'] %}','{{ ip }}:1111{% endfor %}']" - - -- name: Remove monitoring stack - shell: "docker stack rm monitor" - -- name: Remove docker config - shell: "docker config rm prometheus.yml" - ignore_errors: yes - -- name: Create docker config - command: "docker config create prometheus.yml prometheus.yml" - args: - chdir: /opt/docker/stacks/monitor/config/ - -- name: Deploy monitoring - command: "docker stack deploy -c monitor.yml monitor" - args: - chdir: /opt/docker/stacks/monitor/stack/ diff --git a/ansible/roles/stack-api-manager/templates/stack-api-manager.yml b/ansible/roles/stack-api-manager/templates/stack-api-manager.yml index dfe7922605..388f2cbc87 100644 --- a/ansible/roles/stack-api-manager/templates/stack-api-manager.yml +++ b/ansible/roles/stack-api-manager/templates/stack-api-manager.yml @@ -2,7 +2,7 @@ version: '3' services: kong: - image: "sunbird/kong:1.5.0-gold" + image: sunbird/kong:{{kong_version}} env_file: /home/deployer/env/api-manager.env ports: @@ -27,7 +27,7 @@ services: retries: 10 echo: - image: "sunbird/echo-server:1.5.0-bronze" + image: "{{hub_org}}/{{echo_server_image_name}}:{{echo_server_image_tag}}" networks: - application_default ports: diff --git a/ansible/roles/stack-badger/tasks/.user.yml.swp b/ansible/roles/stack-badger/tasks/.user.yml.swp deleted file mode 100644 index a5900099174a499850ce5d17806a36032e0bdd3a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12288 zcmeI2F>f426vrni0fQ9^C?A(7M}+qF9Bdq|WF&+TiUcBx2}yyl=60Wb%k9mKW@ZT| zbMO&>Z$O1a2@RA`@DXTG(o@hvMZtge&USLxAR!u}x4QrCy_wya|NHHm;&d|_zH|Le z+8%5w9P3KCwL9#P$43L^ zmD}^|Y{)}vMzyap*N&RHJPs@V03+twgnHC)?rp=kH|lbdjdXRuK94#~Lf!`UgW0q> zWin|J0zzPgz?ypT>PELTFZQ0Jr!U-E>6cIl2mv7=1cZPP5CTF#2nc~knLu>s)F(*r z{4&YQ%j>z7>oSy!5D)@FKnMr{As_^VfDjM@LO=)z0U_`|B%mv$?mec|XOF`?{{KJv z{r|^PO8p3Z3%vrp0Ifskq2HfW>Nn^I=sV~u=u5~#8oC9&4E3RBp=Y39)|C1g3Xq3x zL)W2SpHS*PbPxI-`UcvCZbIA8*YNcP^f{C~ehSGU1cZPP5CTF#2nYcoAOs#60z}5{ zHTIyO=v!7qo)78}*%wr{zClA6bJHv$%I?sOw|3vA{y0Wgkjg_EN`u-n;B{2zRZoc2@e2+HsG{C=F52 z>l|Zk4k%4R-6ZP7VP(q+d*Tndq)X2)BNyl+I>7EV9XpKC9C_**9l5~wQ(xCV*zi2Hk!h;Sac$Bn=%zxI zwvj_Y8wj1obj5K2+(4KT+qcNe8jZ(%N@&Ei-!{z*XH%wRb(6BIxY08VG{koli?7qL zS5wrQSf}M>P3#64_>y*ZXmR85QatL#11m*Uo8Y*Nlb!rvP}I6lsv^d diff --git a/ansible/roles/stack-badger/tasks/main.yml b/ansible/roles/stack-badger/tasks/main.yml index 8050187369..e589e25ce0 100644 --- a/ansible/roles/stack-badger/tasks/main.yml +++ b/ansible/roles/stack-badger/tasks/main.yml @@ -1,10 +1,4 @@ --- -- name: Login to docker - shell: "docker login {{ vault_docker_registry_url }} -u {{ vault_docker_registry_user }} -p {{ vault_docker_registry_password }}" - become: yes - # no_log: True - ignore_errors: yes - - name: Remove badger service become: yes shell: "docker service rm badger-service" @@ -28,7 +22,7 @@ - name: Deploy badger service become: yes - shell: "docker service create --with-registry-auth --replicas {{ badger_replicas }} -p 8004:8004 --name badger-service --hostname badger-service --reserve-memory {{ badger_reservation_memory }} --limit-memory {{ badger_limit_memory }} --network application_default --config source=settings_local.py,target=/badger/code/apps/mainsite/settings_local.py,mode=0644 {{hub_org}}/{{image_name}}:{{image_tag}}" + shell: "docker service create --replicas {{ badger_replicas }} -p 8004:8004 --name badger-service --hostname badger-service --reserve-memory {{ badger_reservation_memory }} --limit-memory {{ badger_limit_memory }} --network application_default --config source=settings_local.py,target=/badger/code/apps/mainsite/settings_local.py,mode=0644 {{hub_org}}/{{image_name}}:{{image_tag}}" args: chdir: /home/deployer/stack @@ -46,7 +40,7 @@ - name: Including task run_once: true - include: user.yml + include_tasks: user.yml delegate_to: "{{server.stdout}}" - name: Copy admin auth token to desktop diff --git a/ansible/roles/stack-badger/tasks/user.yml b/ansible/roles/stack-badger/tasks/user.yml index 3334564a35..19b1ebf225 100644 --- a/ansible/roles/stack-badger/tasks/user.yml +++ b/ansible/roles/stack-badger/tasks/user.yml @@ -1,4 +1,11 @@ --- +- name: Waiting for the container to be in start state + become: yes + shell: "docker inspect -f '{{'{{'}}.State.Running{{'}}'}}' $(docker ps | grep badger| head -n1 | awk '{print $1}')" + register: container + until: container.rc == 0 + retries: 20 + delay: 10 - name: Pausing for conainer to be fully functional pause: @@ -28,3 +35,4 @@ shell: curl -X POST 'http://localhost:8004/api-auth/token' -d "username="{{badger_admin_user}}"&password={{badger_admin_password}}" register: curl no_log: true + diff --git a/ansible/roles/stack-monitor/defaults/main.yml b/ansible/roles/stack-monitor/defaults/main.yml index 2a94284261..e2203694aa 100644 --- a/ansible/roles/stack-monitor/defaults/main.yml +++ b/ansible/roles/stack-monitor/defaults/main.yml @@ -1,6 +1,5 @@ prometheus_reservation_memory: 1G prometheus_limit_memory: 1G -prometheus_storage_retention_time: 72h0m0s alertmanager_reservation_memory: 100M alertmanager_limit_memory: 100M @@ -63,6 +62,7 @@ docker_metrics_port: "2377" kong_cluster_expected_number_of_nodes: "{{ kong_replicas | default(1) }}" monitor_config_files_dest_dir: /opt/docker/stacks/monitor/config +prometheus_storage_retention_time: 168h0m0s docker_service_replicas_exporter_version: v0.0.3 docker_service_replicas_exporter_name: docker-service-replicas-exporter @@ -183,7 +183,7 @@ prometheus_web_external_url: "{{proto}}://{{api__host}}:9090/{{ prometheus_route prometheus_alertmanager_route_prefix: alertmanager prometheus_alertmanager_web_external_url: "{{proto}}://{{api__host}}:9093/{{ prometheus_alertmanager_route_prefix }}" -postgres_exporter_password: +postgres_exporter_password: "{{ vault_postgres_exporter_password }}" postgres_exporter_postgres_port: 5432 postgres_exporter_user: postgres_exporter diff --git a/ansible/roles/stack-monitor/templates/alertrules.process b/ansible/roles/stack-monitor/templates/alertrules.process index d10e61a7c6..f860b0683b 100644 --- a/ansible/roles/stack-monitor/templates/alertrules.process +++ b/ansible/roles/stack-monitor/templates/alertrules.process @@ -6,7 +6,7 @@ ALERT kafka_process_not_running description = "Number of running processes are: {% raw %}{{$value}}{% endraw %}", } ALERT secor_process_not_running - IF namedprocess_namegroup_states{groupname="secor",state="Sleeping"} != 8 + IF namedprocess_namegroup_states{groupname="secor",state="Sleeping"} < 6 FOR 1m ANNOTATIONS { summary = "Secor process is not running", diff --git a/ansible/roles/stack-proxy/tasks/main.yml b/ansible/roles/stack-proxy/tasks/main.yml index 71bdeac681..82ac27d507 100644 --- a/ansible/roles/stack-proxy/tasks/main.yml +++ b/ansible/roles/stack-proxy/tasks/main.yml @@ -73,16 +73,11 @@ - name: Save proxy-default.conf as docker config shell: "docker config create proxy-default.conf /home/deployer/config/proxy-default.conf" -- name: Login to docker - shell: "docker login {{ vault_docker_registry_url }} -u {{ vault_docker_registry_user }} -p {{ vault_docker_registry_password }}" - no_log: True - ignore_errors: yes - -- debug: msg="Image details= {{hub_org}}/{{image_name}}:{{image_tag}}" +- debug: msg="Image details= {{hub_org}}:{{image_name}}:{{image_tag}}" - debug: msg="server name= {{proxy_server_name}}" - name: Deploy stack - shell: "docker stack deploy -c proxy.yml proxy --with-registry-auth" + shell: "docker stack deploy -c proxy.yml proxy" args: chdir: /home/deployer/stack diff --git a/ansible/roles/stack-proxy/templates/nginx.conf b/ansible/roles/stack-proxy/templates/nginx.conf index 923f5d21c3..d85ce8b761 100644 --- a/ansible/roles/stack-proxy/templates/nginx.conf +++ b/ansible/roles/stack-proxy/templates/nginx.conf @@ -22,7 +22,6 @@ http { sendfile on; #tcp_nopush on; - client_max_body_size 60M; keepalive_timeout 65; diff --git a/ansible/roles/stack-proxy/templates/proxy-default.conf b/ansible/roles/stack-proxy/templates/proxy-default.conf index 6e0a39187c..312b88fedf 100644 --- a/ansible/roles/stack-proxy/templates/proxy-default.conf +++ b/ansible/roles/stack-proxy/templates/proxy-default.conf @@ -45,7 +45,7 @@ server { location ~* ^/auth/realms/(.+)/clients-registrations/ { return 301 {{proto}}://$host/api/auth/v1/realms/$1/clients-registrations/; } - + location /auth/ { set $target {{ keycloak_url }}; rewrite ^/auth/(.*) /auth/$1 break; @@ -72,7 +72,6 @@ server { # root /usr/share/nginx/www; } location /api/ { - client_max_body_size 60M; set $target http://api-manager_kong:8000; rewrite ^/api/(.*) /$1 break; proxy_pass $target; diff --git a/ansible/roles/stack-sunbird/defaults/main.yml b/ansible/roles/stack-sunbird/defaults/main.yml index 8accbbc5e6..4855632f31 100644 --- a/ansible/roles/stack-sunbird/defaults/main.yml +++ b/ansible/roles/stack-sunbird/defaults/main.yml @@ -8,8 +8,8 @@ sunbird_keycloak_realm: sunbird_keycloak_clientId: sunbird_keycloak_public: sunbird_cache_store: -sunbird_cache_ttl: 1800 -sunbird_es_port: 9300 # If this port is same for all the machines, single vaule is enough! else comma seperated values +sunbird_cache_ttl: +sunbird_es_port: 9300 actor_replicas: 1 actor_reservation_memory: 768M actor_limit_memory: 1024M @@ -30,8 +30,8 @@ config_reservation_cpu: 1 sunbird_learner_service_base_url: http://api-manager_kong:8000 telemetry_replicas: 1 -telemetry_reservation_memory: 300M -telemetry_limit_memory: 300M +telemetry_reservation_memory: 256M +telemetry_limit_memory: 512M sunbird_telemetry_kafka_servers: "{{groups['kafka']|join(':9092,')}}:9092" sunbird_data_pipeline_kafka_servers: "{{groups['processing-cluster-kafka']|join(':9092,')}}:9092" @@ -46,7 +46,6 @@ keycloak_auth_server_url: "{{proto}}://{{proxy_server_name}}/auth" keycloak_realm: sunbird sunbird_web_url: "{{proto}}://{{proxy_server_name}}" sunbird_env_logo_url: http://www.paramountias.com/media/images/current-affairs/diksha-portal.jpg -sunbird_cassandra_port: 9042 sunbird_portal_title_name: 'portal' sunbird_keycloak_client_id: 'portal' vault_sunbird_api_auth_token: @@ -55,11 +54,13 @@ sunbird_azure_storage_key: sunbird_container_name: sunbird_portal_cdn_url: sunbird_dataservice_url: +sunbird_background_actor_host: sunbird_background_actor_port: +sunbird_actor_system_name: sunbird_fcm_account_key: sunbird_app_url: sunbird_image_storage_url: -sunbird_telemetry_dispatchers: kafka +sunbird_telemetry_dispatchers: content_service_whitelisted_channels: content_service_blacklisted_channels: sunbird_env_logo_url: @@ -84,16 +85,3 @@ telemetry_kafka_topic: encryption_replicas: 1 encryption_reservation_memory: "256M" encryption_limit_memory: "512M" - -# Learner -sunbird_keycloak_required_action_link_expiration_seconds: 2592000 -sunbird_time_zone: "Asia/Kolkata" -# Content-service -sunbird_content_service_log_level: info -sunbird_response_cache_ttl: 180 - -#learner -sunbird_time_zone: "Asia/Kolkata" - -# Telemetry-logstash-datapipline -max_kafka_message_size: "5242880" diff --git a/ansible/roles/stack-sunbird/tasks/actor_service.yml b/ansible/roles/stack-sunbird/tasks/actor_service.yml index f6b91ee132..073b7f571f 100644 --- a/ansible/roles/stack-sunbird/tasks/actor_service.yml +++ b/ansible/roles/stack-sunbird/tasks/actor_service.yml @@ -4,6 +4,6 @@ ignore_errors: yes - name: Deploy actor service - shell: "docker service create --with-registry-auth --replicas {{ actor_replicas }} -p 8088:8088 --name actor-service --hostname actor-service --reserve-memory {{ actor_reservation_memory }} --limit-memory {{ actor_limit_memory }} --network application_default --env-file /home/deployer/env/sunbird_actor-service.env {{hub_org}}/{{image_name}}:{{image_tag}}" + shell: "docker service create --replicas {{ actor_replicas }} -p 8088:8088 --name actor-service --hostname actor-service --reserve-memory {{ actor_reservation_memory }} --limit-memory {{ actor_limit_memory }} --network application_default --env-file /home/deployer/env/sunbird_actor-service.env {{hub_org}}/{{image_name}}:{{image_tag}}" args: chdir: /home/deployer/stack diff --git a/ansible/roles/stack-sunbird/tasks/common.yml b/ansible/roles/stack-sunbird/tasks/common.yml index 45a1ceafe0..a96c9c3b16 100644 --- a/ansible/roles/stack-sunbird/tasks/common.yml +++ b/ansible/roles/stack-sunbird/tasks/common.yml @@ -1,9 +1,4 @@ --- -- name: Login to docker - shell: "docker login {{ vault_docker_registry_url }} -u {{ vault_docker_registry_user }} -p {{ vault_docker_registry_password }}" - no_log: True - ignore_errors: yes - - name: Ensure env directory exists file: path: /home/deployer/env @@ -24,4 +19,4 @@ - name: Save service configurations into an env file template: src="sunbird_{{service_name}}.env" dest="/home/deployer/env/sunbird_{{service_name}}.env" mode=0644 - ignore_errors: yes + ignore_errors: yes \ No newline at end of file diff --git a/ansible/roles/stack-sunbird/tasks/config_service.yml b/ansible/roles/stack-sunbird/tasks/config_service.yml index 8086fe1571..ffce431299 100644 --- a/ansible/roles/stack-sunbird/tasks/config_service.yml +++ b/ansible/roles/stack-sunbird/tasks/config_service.yml @@ -4,6 +4,6 @@ ignore_errors: yes - name: Deploy config service - shell: "docker service create --with-registry-auth --replicas {{ config_replicas }} -p 6000:8080 --name config-service --hostname config-service --reserve-memory {{ config_reservation_memory }} --limit-memory {{ config_limit_memory }} --network application_default --env-file /home/deployer/env/sunbird_config-service.env {{hub_org}}/{{image_name}}:{{image_tag}}" + shell: "docker service create --replicas {{ config_replicas }} -p 6000:8080 --name config-service --hostname config-service --reserve-memory {{ config_reservation_memory }} --limit-memory {{ config_limit_memory }} --network application_default --env-file /home/deployer/env/sunbird_config-service.env {{hub_org}}/{{image_name}}:{{image_tag}}" args: chdir: /home/deployer/stack diff --git a/ansible/roles/stack-sunbird/tasks/content_service.yml b/ansible/roles/stack-sunbird/tasks/content_service.yml index 6f2a01cc02..09ff768c47 100644 --- a/ansible/roles/stack-sunbird/tasks/content_service.yml +++ b/ansible/roles/stack-sunbird/tasks/content_service.yml @@ -8,6 +8,6 @@ ignore_errors: yes - name: Deploy content service - shell: "docker service create --with-registry-auth --replicas {{ content_replicas }} -p 5000:5000 --name content-service --hostname content-service --reserve-memory {{ content_reservation_memory }} --limit-memory {{ content_limit_memory }} --limit-cpu {{ content_limit_cpu }} --reserve-cpu {{ content_reservation_cpu }} --health-cmd 'wget -qO- content-service:5000/health || exit 1' --health-timeout 3s --health-retries 3 --network application_default --env-file /home/deployer/env/sunbird_content-service.env {{hub_org}}/{{image_name}}:{{image_tag}}" + shell: "docker service create --replicas {{ content_replicas }} -p 5000:5000 --name content-service --hostname content-service --reserve-memory {{ content_reservation_memory }} --limit-memory {{ content_limit_memory }} --limit-cpu {{ content_limit_cpu }} --reserve-cpu {{ content_reservation_cpu }} --health-cmd 'wget -qO- content-service:5000/health || exit 1' --health-timeout 3s --health-retries 3 --network application_default --env-file /home/deployer/env/sunbird_content-service.env {{hub_org}}/{{image_name}}:{{image_tag}}" args: chdir: /home/deployer/stack diff --git a/ansible/roles/stack-sunbird/tasks/learner_service.yml b/ansible/roles/stack-sunbird/tasks/learner_service.yml index b3845bf88c..cd421eb9d7 100644 --- a/ansible/roles/stack-sunbird/tasks/learner_service.yml +++ b/ansible/roles/stack-sunbird/tasks/learner_service.yml @@ -4,6 +4,6 @@ ignore_errors: yes - name: Deploy learner service - shell: "docker service create --with-registry-auth --replicas {{ learner_replicas }} -p 9000:9000 --name learner-service --hostname learner-service --reserve-memory {{ learner_reservation_memory }} --limit-memory {{ learner_limit_memory }} --limit-cpu {{ learner_limit_cpu }} --reserve-cpu {{ learner_reservation_cpu }} --health-cmd 'wget -qO- learner-service:9000/health || exit 1' --health-timeout 3s --health-retries 3 --network application_default --env-file /home/deployer/env/sunbird_learner-service.env {{hub_org}}/{{image_name}}:{{image_tag}}" + shell: "docker service create --replicas {{ learner_replicas }} -p 9000:9000 --name learner-service --hostname learner-service --reserve-memory {{ learner_reservation_memory }} --limit-memory {{ learner_limit_memory }} --limit-cpu {{ learner_limit_cpu }} --reserve-cpu {{ learner_reservation_cpu }} --health-cmd 'wget -qO- learner-service:9000/health || exit 1' --health-timeout 3s --health-retries 3 --network application_default --env-file /home/deployer/env/sunbird_learner-service.env {{hub_org}}/{{image_name}}:{{image_tag}}" args: chdir: /home/deployer/stack diff --git a/ansible/roles/stack-sunbird/tasks/telemetry_service.yml b/ansible/roles/stack-sunbird/tasks/telemetry_service.yml index 2fec63d0cf..3e4c647f95 100644 --- a/ansible/roles/stack-sunbird/tasks/telemetry_service.yml +++ b/ansible/roles/stack-sunbird/tasks/telemetry_service.yml @@ -1,9 +1,9 @@ --- -- name: Remove telemetry service +- name: Remove learner service shell: "docker service rm telemetry-service" ignore_errors: yes - name: Deploy telemetry service - shell: "docker service create --replicas {{ telemetry_replicas }} -p 9001:9001 --name telemetry-service --hostname telemetry-service --reserve-memory {{ telemetry_reservation_memory }} --limit-memory {{ telemetry_limit_memory }} --network application_default --env-file /home/deployer/env/sunbird_telemetry-service.env --with-registry-auth {{hub_org}}/{{image_name}}:{{image_tag}}" + shell: "docker service create --replicas {{ telemetry_replicas }} -p 9001:9001 --name telemetry-service --hostname telemetry-service --reserve-memory {{ telemetry_reservation_memory }} --limit-memory {{ telemetry_limit_memory }} --network application_default --env-file /home/deployer/env/sunbird_telemetry-service.env {{hub_org}}/{{image_name}}:{{image_tag}}" args: chdir: /home/deployer/stack diff --git a/ansible/roles/stack-sunbird/templates/sunbird_actor-service.env b/ansible/roles/stack-sunbird/templates/sunbird_actor-service.env new file mode 100644 index 0000000000..7e7f970bc1 --- /dev/null +++ b/ansible/roles/stack-sunbird/templates/sunbird_actor-service.env @@ -0,0 +1,56 @@ +sunbird_cassandra_host={{sunbird_cassandra_host}} +sunbird_cassandra_port=9042 +sunbird_es_host={{sunbird_es_host}} +sunbird_es_port=9300,9300,9300 +sunbird_cassandra_username=cassandra +sunbird_cassandra_password=password +actor_hostname=actor-service +bind_hostname=0.0.0.0 +sunbird_sso_url={{keycloak_auth_server_url}}/ +sunbird_sso_realm={{keycloak_realm}} +sunbird_sso_username={{sunbird_sso_username}} +sunbird_sso_password={{sunbird_sso_password}} +sunbird_sso_client_id={{sunbird_sso_client_id}} +ekstep_authorization={{sunbird_ekstep_api_key}} +sunbird_pg_host={{sunbird_pg_host}} +sunbird_pg_port={{sunbird_pg_port}} +sunbird_pg_db={{sunbird_pg_db}} +sunbird_pg_user={{sunbird_pg_user}} +sunbird_pg_password={{sunbird_pg_password}} +sunbird_installation={{sunbird_installation}} +ekstep_api_base_url={{sunbird_ekstep_api_base_url}} +sunbird_mail_server_host={{sunbird_mail_server_host}} +sunbird_mail_server_port={{sunbird_mail_server_port}} +sunbird_mail_server_username={{sunbird_mail_server_username}} +sunbird_mail_server_password={{sunbird_mail_server_password}} +sunbird_mail_server_from_email={{sunbird_mail_server_from_email}} +sunbird_encryption_key={{sunbird_encryption_key}} +sunbird_encryption_mode={{sunbird_encryption_mode}} +sunbird_sso_publickey={{sunbird_sso_publickey}} +sunbird_account_name={{sunbird_account_name}} +sunbird_account_key={{sunbird_account_key}} +sunbird_quartz_mode={{sunbird_sunbird_quartz_mode}} +sunbird_env_logo_url={{sunbird_env_logo_url}} +sunbird_web_url={{sunbird_web_url}} +sunbird_actor_system_name={{sunbird_actor_system_name}} +sunbird_fcm_account_key={{sunbird_fcm_account_key}} +sunbird_app_url={{sunbird_app_url}} +sunbird_msg_91_auth={{sunbird_msg_91_auth}} +sunbird_msg_sender={{sunbird_msg_sender}} +sunbird_installation_email={{sunbird_installation_email}} +#New +sunbird_mw_system_host=actor-service +sunbird_mw_system_port=8088 +background_actor_provider=remote +api_actor_provider=off +badging_authorization_key={{vault_badging_authorization_key}} +sunbird_badger_baseurl=http://badger-service:8004 +sunbird_remote_req_router_path=akka.tcp://SunbirdMWSystem@learner-service:8088/user/RequestRouter +sunbird_remote_bg_req_router_path=akka.tcp://SunbirdMWSystem@actor-service:8088/user/BackgroundRequestRouter +sunbird_api_base_url=http://content_service:5000 +sunbird_authorization={{sunbird_api_auth_token}} +telemetry_pdata_id={{sunbird_telemetry_pdata_id}} +telemetry_pdata_pid=actor-service +telemetry_pdata_ver=1.7 +sunbird_lms_base_url={{sunbird_learner_service_base_url}} +telemetry_queue_threshold_value=100 diff --git a/ansible/roles/stack-sunbird/templates/sunbird_content-service.env b/ansible/roles/stack-sunbird/templates/sunbird_content-service.env index b89d063219..323777b2d1 100644 --- a/ansible/roles/stack-sunbird/templates/sunbird_content-service.env +++ b/ansible/roles/stack-sunbird/templates/sunbird_content-service.env @@ -45,5 +45,3 @@ sunbird_qrimage_topic={{sunbird_qrimage_topic}} #Release-1.13 sunbird_lock_expiry_time={{sunbird_lock_expiry_time}} -# Release-1.14 -sunbird_content_service_log_level={{sunbird_content_service_log_level}} diff --git a/ansible/roles/stack-sunbird/templates/sunbird_learner-service.env b/ansible/roles/stack-sunbird/templates/sunbird_learner-service.env index 3a01726fda..a1e80f4d10 100644 --- a/ansible/roles/stack-sunbird/templates/sunbird_learner-service.env +++ b/ansible/roles/stack-sunbird/templates/sunbird_learner-service.env @@ -33,11 +33,12 @@ sunbird_quartz_mode={{sunbird_sunbird_quartz_mode}} sunbird_env_logo_url={{sunbird_env_logo_url}} sunbird_web_url={{sunbird_web_url}} sunbird_fcm_account_key={{sunbird_fcm_account_key}} +sunbird_app_url={{sunbird_app_url}} sunbird_msg_91_auth={{sunbird_msg_91_auth}} sunbird_msg_sender={{sunbird_msg_sender}} sunbird_installation_email={{sunbird_installation_email}} {% if groups['cassandra-2'] is defined %} -sunbird_cassandra_host="{{sunbird_cassandra_host}}" +sunbird_cassandra_host="{{groups['cassandra'][0]}},{{groups['cassandra'][1]}},{{groups['cassandra'][2]}}" sunbird_cassandra_port="9042,9042,9042" sunbird_cassandra_consistency_level=quorum {% else %} @@ -83,6 +84,3 @@ sunbird_course_batch_notification_signature={{sunbird_course_batch_notification_ sunbird_otp_expiration={{sunbird_otp_expiration}} sunbird_otp_length={{sunbird_otp_length}} sunbird_content_azure_storage_container={{sunbird_content_azure_storage_container}} -sunbird_linked_content_base_url={{sunbird_linked_content_base_url}} -# Release-1.14 -sunbird_time_zone={{sunbird_time_zone}} diff --git a/ansible/roles/stack-sunbird/templates/sunbird_player.env b/ansible/roles/stack-sunbird/templates/sunbird_player.env index be598d3fba..102bbff141 100644 --- a/ansible/roles/stack-sunbird/templates/sunbird_player.env +++ b/ansible/roles/stack-sunbird/templates/sunbird_player.env @@ -17,6 +17,7 @@ sunbird_cassandra_urls={{sunbird_cassandra_urls}} sunbird_session_store_type={{sunbird_session_store_type}} AZURE_STORAGE_ACCOUNT={{sunbird_azure_storage_account}} AZURE_STORAGE_KEY={{sunbird_azure_storage_key}} +CONTAINER_NAME={{sunbird_container_name}} sunbird_dataservice_url={{sunbird_dataservice_url}} sunbird_telemetry_packet_size={{sunbird_telemetry_packet_size}} sunbird_environment={{sunbird_environment}} @@ -29,6 +30,7 @@ sunbird_enable_signup={{sunbird_enable_signup}} sunbird_tenant_cdn_url={{sunbird_tenant_cdn_url}} sunbird_cloud_storage_urls={{sunbird_cloud_storage_urls}} sunbird_config_service_url={{sunbird_config_service_url}} +config_cache_ttl={{config_cache_ttl}} sunbird_portal_user_upload_ref_link={{sunbird_portal_user_upload_ref_link}} sunbird_build_number={{sunbird_build_number}} config_service_enabled={{config_service_enabled}} @@ -43,7 +45,3 @@ sunbird_google_captcha_site_key={{sunbird_google_captcha_site_key}} sunbird_google_keycloak_client_id={{sunbird_google_keycloak_client_id}} sunbird_google_keycloak_secret={{sunbird_google_keycloak_secret}} sunbird_help_link_visibility={{sunbird_help_link_visibility|default('FALSE')}} -sunbird_azure_report_container_name={{sunbird_azure_report_container_name}} -sunbird_azure_account_name={{sunbird_azure_account_name}} -sunbird_azure_account_key={{sunbird_azure_storage_key}} -sunbird_response_cache_ttl={{sunbird_response_cache_ttl}} diff --git a/ansible/roles/stack-sunbird/templates/telemetry-logstash-datapipeline.conf b/ansible/roles/stack-sunbird/templates/telemetry-logstash-datapipeline.conf index e2e035ad0b..12d8707c8a 100644 --- a/ansible/roles/stack-sunbird/templates/telemetry-logstash-datapipeline.conf +++ b/ansible/roles/stack-sunbird/templates/telemetry-logstash-datapipeline.conf @@ -5,7 +5,6 @@ input { codec => "json" topics => ["{{sunbird_telemetry_kafka_topic}}"] retry_backoff_ms => 180000 - max_partition_fetch_bytes => "5242880" } } output { @@ -13,6 +12,5 @@ output { codec => json topic_id => "{{sunbird_data_pipeline_kafka_topic}}" bootstrap_servers => "{{sunbird_data_pipeline_kafka_servers}}" - max_request_size => "{{max_kafka_message_size}}" } } diff --git a/ansible/roles/sunbird-auth-deploy/defaults/main.yml b/ansible/roles/sunbird-auth-deploy/defaults/main.yml deleted file mode 100644 index b686044496..0000000000 --- a/ansible/roles/sunbird-auth-deploy/defaults/main.yml +++ /dev/null @@ -1,86 +0,0 @@ ---- -sunbird_auth_version: 1.0v -keycloak_pkg_src: https://downloads.jboss.org/keycloak/3.2.0.Final/keycloak-3.2.0.Final.tar.gz -postgresql_driver_src: https://jdbc.postgresql.org/download/postgresql-9.4.1212.jar -keycloak_pkg_file: "keycloak-3.2.0.Final.tar.gz" -keycloak_sms_provider_build: "keycloak-email-phone-autthenticator-1.0-SNAPSHOT.jar" -keycloak_subsystem: ' - - auth - ' -keycloak_cache_container: ' - - - - - - - ' -keycloak_default_ds: ' - - - jdbc:h2:${jboss.server.data.dir}/keycloak;AUTO_SERVER=TRUE - - h2 - - sa - sa - - ' - -keycloak_ds_driver_path: "/opt/keycloak/modules/system/layers/keycloak/org/postgresql/main" -wildfly_dir: /opt/keycloak -keycloak_download_dir: /opt -keycloak_download_url: https://downloads.jboss.org/keycloak/3.2.0.Final/keycloak-3.2.0.Final.tar.gz -wildfly_user: keycloak -wildfly_group: keycloak -wildfly_standalone_config_path: /opt/keycloak/keycloak/standalone/configuration/standalone-ha.xml -keycloak_ext: -keycloak_download_file: keycloak-3.2.0.Final.tar.gz - -keycloak_ds_driver_url: https://jdbc.postgresql.org/download/postgresql-9.2.1212.jar -keycloak_ds_driver_name: "postgresql" -keycloak_ds_driver_module: ' - - - - - - - - - - - - ' -keycloak_custom_driver: ' - - - org.postgresql.xa.PGXADataSource - - org.postgresql.ds.PGPoolingDataSource - ' -keycloak_custom_ds: ' - - jdbc:postgresql://11.0.0.6:5432/keycloak - org.postgresql.Driver - postgresql - - keycloak - KeyCloaK#2 - - - - true - - - ' - -theme: "sunrise.tar.gz" -dest_theme: "/opt/keycloak/themes/" -theme_file: sunrise -keycloak_home: /opt/keycloak -login_theme: artifacts/sunbird/login -email_theme: artifacts/sunbird/email -tenant_name: sunbird diff --git a/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/PKG-INFO b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/PKG-INFO deleted file mode 100644 index e71b54e3b9..0000000000 --- a/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/PKG-INFO +++ /dev/null @@ -1,19 +0,0 @@ -Metadata-Version: 1.1 -Name: python-keycloak -Version: 0.12.0 -Summary: python-keycloak is a Python package providing access to the Keycloak API. -Home-page: https://bitbucket.org/agriness/python-keycloak -Author: Marcos Pereira -Author-email: marcospereira.mpj@gmail.com -License: GNU General Public License - V3 -Description-Content-Type: UNKNOWN -Description: UNKNOWN -Keywords: keycloak openid -Platform: UNKNOWN -Classifier: Programming Language :: Python :: 3 -Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3) -Classifier: Development Status :: 3 - Alpha -Classifier: Operating System :: MacOS -Classifier: Operating System :: Unix -Classifier: Operating System :: Microsoft :: Windows -Classifier: Topic :: Utilities diff --git a/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/README.md b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/README.md deleted file mode 100644 index c6b0940b08..0000000000 --- a/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/README.md +++ /dev/null @@ -1,210 +0,0 @@ -[![Documentation Status](https://readthedocs.org/projects/python-keycloak/badge/?version=latest)](http://python-keycloak.readthedocs.io/en/latest/?badge=latest) - -Python Keycloak -==================== - -For review- see https://bitbucket.org/agriness/python-keycloak - -**python-keycloak** is a Python package providing access to the Keycloak API. - -## Installation - -### Via Pypi Package: - -``` $ pip install python-keycloak ``` - -### Manually - -``` $ python setup.py install ``` - -## Dependencies - -python-keycloak depends on: - -* Python 3 -* [requests](http://docs.python-requests.org/en/master/) -* [python-jose](http://python-jose.readthedocs.io/en/latest/) - -### Tests Dependencies - -* unittest -* [httmock](https://github.com/patrys/httmock) - -## Bug reports - -Please report bugs and feature requests at -https://bitbucket.org/agriness/python-keycloak/issues - -## Documentation - -The documentation for python-keycloak is available on [readthedocs](http://python-keycloak.readthedocs.io). - -## Contributors - -* [Agriness Team](http://www.agriness.com/pt/) -* [Marcos Pereira](marcospereira.mpj@gmail.com) -* [Martin Devlin](martin.devlin@pearson.com) -* [Shon T. Urbas](shon.urbas@gmail.com>) - -## Usage - -```python -from keycloak import KeycloakOpenID - -# Configure client -keycloak_openid = KeycloakOpenID(server_url="http://localhost:8080/auth/", - client_id="example_client", - realm_name="example_realm", - client_secret_key="secret") - -# Get WellKnow -config_well_know = keycloak_openid.well_know() - -# Get Token -token = keycloak_openid.token("user", "password") - -# Get Userinfo -userinfo = keycloak_openid.userinfo(token['access_token']) - -# Refresh token -token = keycloak_openid.refresh_token(token['refresh_token']) - -# Logout -keycloak_openid.logout(token['refresh_token']) - -# Get Certs -certs = keycloak_openid.certs() - -# Get RPT (Entitlement) -token = keycloak_openid.token("user", "password") -rpt = keycloak_openid.entitlement(token['access_token'], "resource_id") - -# Instropect RPT -token_rpt_info = keycloak_openid.introspect(keycloak_openid.introspect(token['access_token'], rpt=rpt['rpt'], - token_type_hint="requesting_party_token")) - -# Introspect Token -token_info = keycloak_openid.introspect(token['access_token'])) - -# Decode Token -KEYCLOAK_PUBLIC_KEY = "secret" -options = {"verify_signature": True, "verify_aud": True, "exp": True} -token_info = keycloak_openid.decode_token(token['access_token'], key=KEYCLOAK_PUBLIC_KEY, options=options) - -# Get permissions by token -token = keycloak_openid.token("user", "password") -keycloak_openid.load_authorization_config("example-authz-config.json") -policies = keycloak_openid.get_policies(token['access_token'], method_token_info='decode', key=KEYCLOAK_PUBLIC_KEY) -permissions = keycloak_openid.get_permissions(token['access_token'], method_token_info='introspect') - -# KEYCLOAK ADMIN - -from keycloak import KeycloakAdmin - -keycloak_admin = KeycloakAdmin(server_url="http://localhost:8080/auth/", - username='example-admin', - password='secret', - realm_name="example_realm", - verify=True) - -# Add user -new_user = keycloak_admin.create_user({"email": "example@example.com", - "username": "example@example.com", - "enabled": True, - "firstName": "Example", - "lastName": "Example", - "realmRoles": ["user_default", ], - "attributes": {"example": "1,2,3,3,"}}) - - -# Add user and set password -new_user = keycloak_admin.create_user({"email": "example@example.com", - "username": "example@example.com", - "enabled": True, - "firstName": "Example", - "lastName": "Example", - "credentials": [{"value": "secret","type": "password",}], - "realmRoles": ["user_default", ], - "attributes": {"example": "1,2,3,3,"}}) - -# User counter -count_users = keycloak_admin.users_count() - -# Get users Returns a list of users, filtered according to query parameters -users = keycloak_admin.get_users({}) - -# Get user ID from name -user-id-keycloak = keycloak_admin.get_user_id("example@example.com") - -# Get User -user = keycloak_admin.get_user("user-id-keycloak") - -# Update User -response = keycloak_admin.update_user(user_id="user-id-keycloak", - payload={'firstName': 'Example Update'}) - -# Update User Password -response = set_user_password(user_id="user-id-keycloak", password="secret", temporary=True) - -# Delete User -response = keycloak_admin.delete_user(user_id="user-id-keycloak") - -# Get consents granted by the user -consents = keycloak_admin.consents_user(user_id="user-id-keycloak") - -# Send User Action -response = keycloak_admin.send_update_account(user_id="user-id-keycloak", - payload=json.dumps(['UPDATE_PASSWORD'])) - -# Send Verify Email -response = keycloak_admin.send_verify_email(user_id="user-id-keycloak") - -# Get sessions associated with the user -sessions = keycloak_admin.get_sessions(user_id="user-id-keycloak") - -# Get themes, social providers, auth providers, and event listeners available on this server -server_info = keycloak_admin.get_server_info() - -# Get clients belonging to the realm Returns a list of clients belonging to the realm -clients = keycloak_admin.get_clients() - -# Get client - id (not client-id) from client by name -client_id=keycloak_admin.get_client_id("my-client") - -# Get representation of the client - id of client (not client-id) -client = keycloak_admin.get_client(client_id="client_id") - -# Get all roles for the realm or client -realm_roles = keycloak_admin.get_realm_roles() - -# Get all roles for the client -client_roles = keycloak_admin.get_client_roles(client_id="client_id") - -# Get client role -role = keycloak_admin.get_client_role(client_id="client_id", role_name="role_name") - -# Warning: Deprecated -# Get client role id from name -role_id = keycloak_admin.get_client_role_id(client_id="client_id", role_name="test") - -# Create client role -keycloak_admin.create_client_role(client_id, "test") - -# Assign client role to user. Note that BOTH role_name and role_id appear to be required. -keycloak_admin.assign_client_role(client_id="client_id", user_id="user_id", role_id="role_id", role_name="test") - -# Create new group -group = keycloak_admin.create_group(name="Example Group") - -# Get all groups -groups = keycloak_admin.get_groups() - -# Get group -group = keycloak_admin.get_group(group_id='group_id') - -# Get group by name -group = keycloak_admin.get_group_by_name(name_or_path='group_id', search_in_subgroups=True) - -# Function to trigger user sync from provider -sync_users(storage_id="storage_di", action="action") -``` diff --git a/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak-realm.json b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak-realm.json deleted file mode 100644 index 72416d4de4..0000000000 --- a/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak-realm.json +++ /dev/null @@ -1,1999 +0,0 @@ -{ - "id": "sunbird", - "realm": "sunbird", - "notBefore": 0, - "revokeRefreshToken": false, - "accessTokenLifespan": 21600, - "accessTokenLifespanForImplicitFlow": 7200, - "ssoSessionIdleTimeout": 1800, - "ssoSessionMaxLifespan": 21600, - "offlineSessionIdleTimeout": 43200, - "accessCodeLifespan": 60, - "accessCodeLifespanUserAction": 300, - "accessCodeLifespanLogin": 1800, - "actionTokenGeneratedByAdminLifespan": 43200, - "actionTokenGeneratedByUserLifespan": 300, - "enabled": true, - "sslRequired": "external", - "registrationAllowed": false, - "registrationEmailAsUsername": false, - "rememberMe": true, - "verifyEmail": false, - "loginWithEmailAllowed": true, - "duplicateEmailsAllowed": false, - "resetPasswordAllowed": true, - "editUsernameAllowed": false, - "bruteForceProtected": false, - "permanentLockout": false, - "maxFailureWaitSeconds": 900, - "minimumQuickLoginWaitSeconds": 60, - "waitIncrementSeconds": 60, - "quickLoginCheckMilliSeconds": 1000, - "maxDeltaTimeSeconds": 43200, - "failureFactor": 30, - "roles": { - "realm": [ - { - "id": "7b955d7f-0a1e-4935-8391-642886d34612", - "name": "offline_access", - "description": "${role_offline-access}", - "scopeParamRequired": true, - "composite": false, - "clientRole": false, - "containerId": "sunbird" - }, - { - "id": "96adf368-c8e2-4b39-b2a5-2559573edb63", - "name": "uma_authorization", - "description": "${role_uma_authorization}", - "scopeParamRequired": false, - "composite": false, - "clientRole": false, - "containerId": "sunbird" - } - ], - "client": { - "realm-management": [ - { - "id": "3f8bf7e5-5d66-4394-8f06-1270529c605f", - "name": "manage-authorization", - "description": "${role_manage-authorization}", - "scopeParamRequired": false, - "composite": false, - "clientRole": true, - "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" - }, - { - "id": "601fa2c9-29d4-49c1-87ac-939a1260f6ce", - "name": "query-realms", - "description": "${role_query-realms}", - "scopeParamRequired": false, - "composite": false, - "clientRole": true, - "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" - }, - { - "id": "9aa1dcd9-cb93-4496-af5f-41b9ecacc1da", - "name": "view-authorization", - "description": "${role_view-authorization}", - "scopeParamRequired": false, - "composite": false, - "clientRole": true, - "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" - }, - { - "id": "98999987-faf5-4c4e-958a-e5463bc4edc6", - "name": "manage-events", - "description": "${role_manage-events}", - "scopeParamRequired": false, - "composite": false, - "clientRole": true, - "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" - }, - { - "id": "f898fca8-5361-49d5-900a-ebf5b775a939", - "name": "impersonation", - "description": "${role_impersonation}", - "scopeParamRequired": false, - "composite": false, - "clientRole": true, - "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" - }, - { - "id": "698dfeb0-b8d2-4240-b8a8-acd4b7a12ad3", - "name": "view-realm", - "description": "${role_view-realm}", - "scopeParamRequired": false, - "composite": false, - "clientRole": true, - "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" - }, - { - "id": "3ff462fc-b33c-431a-b54b-861c3298d910", - "name": "manage-users", - "description": "${role_manage-users}", - "scopeParamRequired": false, - "composite": false, - "clientRole": true, - "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" - }, - { - "id": "be1802b1-558c-404c-bcb9-b9bf77af9788", - "name": "manage-identity-providers", - "description": "${role_manage-identity-providers}", - "scopeParamRequired": false, - "composite": false, - "clientRole": true, - "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" - }, - { - "id": "387b44e4-e901-4431-b9af-6abd9377ed46", - "name": "query-clients", - "description": "${role_query-clients}", - "scopeParamRequired": false, - "composite": false, - "clientRole": true, - "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" - }, - { - "id": "a408b6e8-03c9-46a2-97ba-305d09db0c3c", - "name": "view-events", - "description": "${role_view-events}", - "scopeParamRequired": false, - "composite": false, - "clientRole": true, - "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" - }, - { - "id": "41c2f39a-3008-4f9d-9e1e-a7738c118570", - "name": "query-groups", - "description": "${role_query-groups}", - "scopeParamRequired": false, - "composite": false, - "clientRole": true, - "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" - }, - { - "id": "26d3289b-d2eb-4cf2-a501-f1e3fa07344c", - "name": "manage-clients", - "description": "${role_manage-clients}", - "scopeParamRequired": false, - "composite": false, - "clientRole": true, - "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" - }, - { - "id": "e2077ab0-6efb-450d-9cba-89cacd887b71", - "name": "create-client", - "description": "${role_create-client}", - "scopeParamRequired": false, - "composite": false, - "clientRole": true, - "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" - }, - { - "id": "46019462-3dc8-46a8-9786-ffcbad293f43", - "name": "view-users", - "description": "${role_view-users}", - "scopeParamRequired": false, - "composite": true, - "composites": { - "client": { - "realm-management": [ - "query-groups", - "query-users" - ] - } - }, - "clientRole": true, - "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" - }, - { - "id": "d269f220-e93f-4b43-96a1-9f2c117a2dfb", - "name": "view-clients", - "description": "${role_view-clients}", - "scopeParamRequired": false, - "composite": true, - "composites": { - "client": { - "realm-management": [ - "query-clients" - ] - } - }, - "clientRole": true, - "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" - }, - { - "id": "0c998f1b-7363-47fb-a493-4b6f4aacb0ba", - "name": "realm-admin", - "description": "${role_realm-admin}", - "scopeParamRequired": false, - "composite": true, - "composites": { - "client": { - "realm-management": [ - "manage-authorization", - "query-realms", - "view-authorization", - "manage-events", - "impersonation", - "view-realm", - "manage-users", - "manage-identity-providers", - "query-clients", - "view-events", - "query-groups", - "manage-clients", - "create-client", - "view-users", - "view-clients", - "manage-realm", - "view-identity-providers", - "query-users" - ] - } - }, - "clientRole": true, - "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" - }, - { - "id": "d77bf5a5-5877-450b-b11e-5f874f410e10", - "name": "manage-realm", - "description": "${role_manage-realm}", - "scopeParamRequired": false, - "composite": false, - "clientRole": true, - "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" - }, - { - "id": "d97009ed-d0c7-4afb-b9a3-6ee03ef01a74", - "name": "view-identity-providers", - "description": "${role_view-identity-providers}", - "scopeParamRequired": false, - "composite": false, - "clientRole": true, - "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" - }, - { - "id": "57118202-c5e5-4c49-829b-c2ed796bfdea", - "name": "query-users", - "description": "${role_query-users}", - "scopeParamRequired": false, - "composite": false, - "clientRole": true, - "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" - } - ], - "security-admin-console": [], - "android": [], - "admin-cli": [], - "trampoline": [], - "broker": [ - { - "id": "19ef58ac-2d90-40a4-a158-0e2f8893264a", - "name": "read-token", - "description": "${role_read-token}", - "scopeParamRequired": false, - "composite": false, - "clientRole": true, - "containerId": "c3950efa-6684-44c2-b50a-c7b3d16df04b" - } - ], - "portal": [], - "account": [ - { - "id": "1fef7ac5-b042-462b-8298-0446044788b3", - "name": "manage-account", - "description": "${role_manage-account}", - "scopeParamRequired": false, - "composite": true, - "composites": { - "client": { - "account": [ - "manage-account-links" - ] - } - }, - "clientRole": true, - "containerId": "c2d24d3f-65ca-46de-9cd8-3eeb71a7f83d" - }, - { - "id": "f8786348-6fa4-4b13-828e-9f080c9c6824", - "name": "manage-account-links", - "description": "${role_manage-account-links}", - "scopeParamRequired": false, - "composite": false, - "clientRole": true, - "containerId": "c2d24d3f-65ca-46de-9cd8-3eeb71a7f83d" - }, - { - "id": "91c5c738-9c39-4c4d-bae8-75f18fd7c5e4", - "name": "view-profile", - "description": "${role_view-profile}", - "scopeParamRequired": false, - "composite": false, - "clientRole": true, - "containerId": "c2d24d3f-65ca-46de-9cd8-3eeb71a7f83d" - } - ] - } - }, - "groups": [], - "defaultRoles": [ - "offline_access", - "uma_authorization" - ], - "requiredCredentials": [ - "password" - ], - "passwordPolicy": "hashIterations(20000)", - "otpPolicyType": "totp", - "otpPolicyAlgorithm": "HmacSHA1", - "otpPolicyInitialCounter": 0, - "otpPolicyDigits": 6, - "otpPolicyLookAheadWindow": 1, - "otpPolicyPeriod": 30, - "clientScopeMappings": { - "realm-management": [ - { - "client": "admin-cli", - "roles": [ - "realm-admin" - ] - }, - { - "client": "security-admin-console", - "roles": [ - "realm-admin" - ] - } - ] - }, - "clients": [ - { - "id": "9a901d18-377b-4615-9b89-677b544be3c5", - "clientId": "trampoline", - "rootUrl": "", - "adminUrl": "", - "baseUrl": "/", - "surrogateAuthRequired": false, - "enabled": true, - "clientAuthenticatorType": "client-secret", - "secret": "", - "redirectUris": [ - ], - "webOrigins": [ - ], - "notBefore": 0, - "bearerOnly": false, - "consentRequired": false, - "standardFlowEnabled": false, - "implicitFlowEnabled": false, - "directAccessGrantsEnabled": true, - "serviceAccountsEnabled": false, - "publicClient": false, - "frontchannelLogout": false, - "protocol": "openid-connect", - "attributes": { - "saml.assertion.signature": "false", - "saml.force.post.binding": "false", - "saml.multivalued.roles": "false", - "saml.encrypt": "false", - "saml_force_name_id_format": "false", - "saml.client.signature": "false", - "saml.authnstatement": "false", - "saml.server.signature": "false", - "saml.server.signature.keyinfo.ext": "false", - "saml.onetimeuse.condition": "false" - }, - "fullScopeAllowed": true, - "nodeReRegistrationTimeout": -1, - "protocolMappers": [ - { - "id": "12134027-94cc-401c-bbf6-be565078ddfb", - "name": "role list", - "protocol": "saml", - "protocolMapper": "saml-role-list-mapper", - "consentRequired": false, - "config": { - "single": "false", - "attribute.nameformat": "Basic", - "attribute.name": "Role" - } - }, - { - "id": "6a956bf1-6c40-4549-b335-9fe8c788b18f", - "name": "family name", - "protocol": "openid-connect", - "protocolMapper": "oidc-usermodel-property-mapper", - "consentRequired": true, - "consentText": "${familyName}", - "config": { - "userinfo.token.claim": "true", - "user.attribute": "lastName", - "id.token.claim": "true", - "access.token.claim": "true", - "claim.name": "family_name", - "jsonType.label": "String" - } - }, - { - "id": "d32ba1d4-3fef-42ff-aa2b-98cb4bfef6f9", - "name": "full name", - "protocol": "openid-connect", - "protocolMapper": "oidc-full-name-mapper", - "consentRequired": true, - "consentText": "${fullName}", - "config": { - "id.token.claim": "true", - "access.token.claim": "true", - "userinfo.token.claim": "true" - } - }, - { - "id": "9e899fc7-1ddd-447d-810c-d91333d6621c", - "name": "username", - "protocol": "openid-connect", - "protocolMapper": "oidc-usermodel-property-mapper", - "consentRequired": true, - "consentText": "${username}", - "config": { - "userinfo.token.claim": "true", - "user.attribute": "username", - "id.token.claim": "true", - "access.token.claim": "true", - "claim.name": "preferred_username", - "jsonType.label": "String" - } - }, - { - "id": "74e4d13f-bd02-4f17-bbbc-d4b79bab1971", - "name": "email", - "protocol": "openid-connect", - "protocolMapper": "oidc-usermodel-property-mapper", - "consentRequired": true, - "consentText": "${email}", - "config": { - "userinfo.token.claim": "true", - "user.attribute": "email", - "id.token.claim": "true", - "access.token.claim": "true", - "claim.name": "email", - "jsonType.label": "String" - } - }, - { - "id": "48fe23c2-a6fb-4c5e-8930-28ad1913829a", - "name": "given name", - "protocol": "openid-connect", - "protocolMapper": "oidc-usermodel-property-mapper", - "consentRequired": true, - "consentText": "${givenName}", - "config": { - "userinfo.token.claim": "true", - "user.attribute": "firstName", - "id.token.claim": "true", - "access.token.claim": "true", - "claim.name": "given_name", - "jsonType.label": "String" - } - } - ], - "useTemplateConfig": false, - "useTemplateScope": false, - "useTemplateMappers": false - }, - { - "id": "da893beb-6ac7-420d-b51b-f05dadf56bbc", - "clientId": "android", - "rootUrl": "", - "baseUrl": "/", - "surrogateAuthRequired": false, - "enabled": true, - "clientAuthenticatorType": "client-secret", - "secret": "", - "redirectUris": [ - ], - "webOrigins": [], - "notBefore": 0, - "bearerOnly": false, - "consentRequired": false, - "standardFlowEnabled": true, - "implicitFlowEnabled": false, - "directAccessGrantsEnabled": true, - "serviceAccountsEnabled": false, - "publicClient": true, - "frontchannelLogout": false, - "protocol": "openid-connect", - "attributes": { - "saml.assertion.signature": "false", - "saml.force.post.binding": "false", - "saml.multivalued.roles": "false", - "saml.encrypt": "false", - "saml_force_name_id_format": "false", - "saml.client.signature": "false", - "saml.authnstatement": "false", - "saml.server.signature": "false", - "saml.server.signature.keyinfo.ext": "false", - "saml.onetimeuse.condition": "false" - }, - "fullScopeAllowed": true, - "nodeReRegistrationTimeout": -1, - "protocolMappers": [ - { - "id": "ff7dac46-16b4-4ab6-a054-dd03d5411fa9", - "name": "role list", - "protocol": "saml", - "protocolMapper": "saml-role-list-mapper", - "consentRequired": false, - "config": { - "single": "false", - "attribute.nameformat": "Basic", - "attribute.name": "Role" - } - }, - { - "id": "32fad9c0-0dfe-45b2-94a1-3e2f74d756ec", - "name": "family name", - "protocol": "openid-connect", - "protocolMapper": "oidc-usermodel-property-mapper", - "consentRequired": true, - "consentText": "${familyName}", - "config": { - "userinfo.token.claim": "true", - "user.attribute": "lastName", - "id.token.claim": "true", - "access.token.claim": "true", - "claim.name": "family_name", - "jsonType.label": "String" - } - }, - { - "id": "4fb4d644-c609-4a27-a407-d451bcd83e16", - "name": "given name", - "protocol": "openid-connect", - "protocolMapper": "oidc-usermodel-property-mapper", - "consentRequired": true, - "consentText": "${givenName}", - "config": { - "userinfo.token.claim": "true", - "user.attribute": "firstName", - "id.token.claim": "true", - "access.token.claim": "true", - "claim.name": "given_name", - "jsonType.label": "String" - } - }, - { - "id": "84e7c6e5-1afb-44d8-b507-1ed31fa0f351", - "name": "email", - "protocol": "openid-connect", - "protocolMapper": "oidc-usermodel-property-mapper", - "consentRequired": true, - "consentText": "${email}", - "config": { - "userinfo.token.claim": "true", - "user.attribute": "email", - "id.token.claim": "true", - "access.token.claim": "true", - "claim.name": "email", - "jsonType.label": "String" - } - }, - { - "id": "e7ca189f-94de-4996-a192-e93ba960bbba", - "name": "full name", - "protocol": "openid-connect", - "protocolMapper": "oidc-full-name-mapper", - "consentRequired": true, - "consentText": "${fullName}", - "config": { - "id.token.claim": "true", - "access.token.claim": "true", - "userinfo.token.claim": "true" - } - }, - { - "id": "16bedb3b-7571-4106-9a47-66151915ac31", - "name": "username", - "protocol": "openid-connect", - "protocolMapper": "oidc-usermodel-property-mapper", - "consentRequired": true, - "consentText": "${username}", - "config": { - "userinfo.token.claim": "true", - "user.attribute": "username", - "id.token.claim": "true", - "access.token.claim": "true", - "claim.name": "preferred_username", - "jsonType.label": "String" - } - } - ], - "useTemplateConfig": false, - "useTemplateScope": false, - "useTemplateMappers": false - }, - { - "id": "8891d8e9-35e6-4a1c-b32b-027be03b0f24", - "clientId": "admin-cli", - "name": "${client_admin-cli}", - "surrogateAuthRequired": false, - "enabled": true, - "clientAuthenticatorType": "client-secret", - "secret": "", - "redirectUris": [], - "webOrigins": [], - "notBefore": 0, - "bearerOnly": false, - "consentRequired": false, - "standardFlowEnabled": false, - "implicitFlowEnabled": false, - "directAccessGrantsEnabled": true, - "serviceAccountsEnabled": false, - "publicClient": true, - "frontchannelLogout": false, - "protocol": "openid-connect", - "attributes": {}, - "fullScopeAllowed": false, - "nodeReRegistrationTimeout": 0, - "protocolMappers": [ - { - "id": "32d6a3a4-8635-4a36-bd14-8ac5b73a49cc", - "name": "full name", - "protocol": "openid-connect", - "protocolMapper": "oidc-full-name-mapper", - "consentRequired": true, - "consentText": "${fullName}", - "config": { - "id.token.claim": "true", - "access.token.claim": "true", - "userinfo.token.claim": "true" - } - }, - { - "id": "900fa741-d1b2-467e-88a6-b454a9519568", - "name": "given name", - "protocol": "openid-connect", - "protocolMapper": "oidc-usermodel-property-mapper", - "consentRequired": true, - "consentText": "${givenName}", - "config": { - "userinfo.token.claim": "true", - "user.attribute": "firstName", - "id.token.claim": "true", - "access.token.claim": "true", - "claim.name": "given_name", - "jsonType.label": "String" - } - }, - { - "id": "8ea14714-d160-49b8-b612-59102d50ef53", - "name": "family name", - "protocol": "openid-connect", - "protocolMapper": "oidc-usermodel-property-mapper", - "consentRequired": true, - "consentText": "${familyName}", - "config": { - "userinfo.token.claim": "true", - "user.attribute": "lastName", - "id.token.claim": "true", - "access.token.claim": "true", - "claim.name": "family_name", - "jsonType.label": "String" - } - }, - { - "id": "bd167b99-5d23-49c1-90c7-85c2b088fed7", - "name": "role list", - "protocol": "saml", - "protocolMapper": "saml-role-list-mapper", - "consentRequired": false, - "config": { - "single": "false", - "attribute.nameformat": "Basic", - "attribute.name": "Role" - } - }, - { - "id": "c4fe56a1-8d15-455a-b87b-cf051454b57c", - "name": "username", - "protocol": "openid-connect", - "protocolMapper": "oidc-usermodel-property-mapper", - "consentRequired": true, - "consentText": "${username}", - "config": { - "userinfo.token.claim": "true", - "user.attribute": "username", - "id.token.claim": "true", - "access.token.claim": "true", - "claim.name": "preferred_username", - "jsonType.label": "String" - } - }, - { - "id": "26e3bf4c-8f9a-4548-b0db-5bbb7c398991", - "name": "email", - "protocol": "openid-connect", - "protocolMapper": "oidc-usermodel-property-mapper", - "consentRequired": true, - "consentText": "${email}", - "config": { - "userinfo.token.claim": "true", - "user.attribute": "email", - "id.token.claim": "true", - "access.token.claim": "true", - "claim.name": "email", - "jsonType.label": "String" - } - } - ], - "useTemplateConfig": false, - "useTemplateScope": false, - "useTemplateMappers": false - }, - { - "id": "c3950efa-6684-44c2-b50a-c7b3d16df04b", - "clientId": "broker", - "name": "${client_broker}", - "surrogateAuthRequired": false, - "enabled": true, - "clientAuthenticatorType": "client-secret", - "secret": "", - "redirectUris": [], - "webOrigins": [], - "notBefore": 0, - "bearerOnly": false, - "consentRequired": false, - "standardFlowEnabled": true, - "implicitFlowEnabled": false, - "directAccessGrantsEnabled": false, - "serviceAccountsEnabled": false, - "publicClient": false, - "frontchannelLogout": false, - "protocol": "openid-connect", - "attributes": {}, - "fullScopeAllowed": false, - "nodeReRegistrationTimeout": 0, - "protocolMappers": [ - { - "id": "54c3bbc3-850b-4636-82d1-ed4f3a46a00a", - "name": "username", - "protocol": "openid-connect", - "protocolMapper": "oidc-usermodel-property-mapper", - "consentRequired": true, - "consentText": "${username}", - "config": { - "userinfo.token.claim": "true", - "user.attribute": "username", - "id.token.claim": "true", - "access.token.claim": "true", - "claim.name": "preferred_username", - "jsonType.label": "String" - } - }, - { - "id": "0f0d9b74-c476-4981-a783-dd4bdbe041ec", - "name": "role list", - "protocol": "saml", - "protocolMapper": "saml-role-list-mapper", - "consentRequired": false, - "config": { - "single": "false", - "attribute.nameformat": "Basic", - "attribute.name": "Role" - } - }, - { - "id": "d6f625cc-eac1-49d0-bea5-17e6f9d3860c", - "name": "given name", - "protocol": "openid-connect", - "protocolMapper": "oidc-usermodel-property-mapper", - "consentRequired": true, - "consentText": "${givenName}", - "config": { - "userinfo.token.claim": "true", - "user.attribute": "firstName", - "id.token.claim": "true", - "access.token.claim": "true", - "claim.name": "given_name", - "jsonType.label": "String" - } - }, - { - "id": "bbf35056-9bbe-49a0-aefc-2bde2379ccdc", - "name": "family name", - "protocol": "openid-connect", - "protocolMapper": "oidc-usermodel-property-mapper", - "consentRequired": true, - "consentText": "${familyName}", - "config": { - "userinfo.token.claim": "true", - "user.attribute": "lastName", - "id.token.claim": "true", - "access.token.claim": "true", - "claim.name": "family_name", - "jsonType.label": "String" - } - }, - { - "id": "38b04951-1043-4dc6-9504-7b0f31ed71a4", - "name": "email", - "protocol": "openid-connect", - "protocolMapper": "oidc-usermodel-property-mapper", - "consentRequired": true, - "consentText": "${email}", - "config": { - "userinfo.token.claim": "true", - "user.attribute": "email", - "id.token.claim": "true", - "access.token.claim": "true", - "claim.name": "email", - "jsonType.label": "String" - } - }, - { - "id": "88bb836b-7feb-45eb-b004-fb3be8436908", - "name": "full name", - "protocol": "openid-connect", - "protocolMapper": "oidc-full-name-mapper", - "consentRequired": true, - "consentText": "${fullName}", - "config": { - "id.token.claim": "true", - "access.token.claim": "true", - "userinfo.token.claim": "true" - } - } - ], - "useTemplateConfig": false, - "useTemplateScope": false, - "useTemplateMappers": false - }, - { - "id": "b2f45201-1362-4b10-83c3-207d470f44bf", - "clientId": "realm-management", - "name": "${client_realm-management}", - "surrogateAuthRequired": false, - "enabled": true, - "clientAuthenticatorType": "client-secret", - "secret": "", - "redirectUris": [], - "webOrigins": [], - "notBefore": 0, - "bearerOnly": true, - "consentRequired": false, - "standardFlowEnabled": true, - "implicitFlowEnabled": false, - "directAccessGrantsEnabled": false, - "serviceAccountsEnabled": false, - "publicClient": false, - "frontchannelLogout": false, - "protocol": "openid-connect", - "attributes": {}, - "fullScopeAllowed": false, - "nodeReRegistrationTimeout": 0, - "protocolMappers": [ - { - "id": "71605238-bf41-400e-8c03-a5d78f54b00b", - "name": "email", - "protocol": "openid-connect", - "protocolMapper": "oidc-usermodel-property-mapper", - "consentRequired": true, - "consentText": "${email}", - "config": { - "userinfo.token.claim": "true", - "user.attribute": "email", - "id.token.claim": "true", - "access.token.claim": "true", - "claim.name": "email", - "jsonType.label": "String" - } - }, - { - "id": "a0cb6f3a-30ef-4475-b73f-ca6c2f1f3675", - "name": "given name", - "protocol": "openid-connect", - "protocolMapper": "oidc-usermodel-property-mapper", - "consentRequired": true, - "consentText": "${givenName}", - "config": { - "userinfo.token.claim": "true", - "user.attribute": "firstName", - "id.token.claim": "true", - "access.token.claim": "true", - "claim.name": "given_name", - "jsonType.label": "String" - } - }, - { - "id": "3a7708b1-63b9-4116-af7f-969fc1bf61a4", - "name": "role list", - "protocol": "saml", - "protocolMapper": "saml-role-list-mapper", - "consentRequired": false, - "config": { - "single": "false", - "attribute.nameformat": "Basic", - "attribute.name": "Role" - } - }, - { - "id": "c393d7b7-fa22-4e90-9ad7-07d520632c20", - "name": "username", - "protocol": "openid-connect", - "protocolMapper": "oidc-usermodel-property-mapper", - "consentRequired": true, - "consentText": "${username}", - "config": { - "userinfo.token.claim": "true", - "user.attribute": "username", - "id.token.claim": "true", - "access.token.claim": "true", - "claim.name": "preferred_username", - "jsonType.label": "String" - } - }, - { - "id": "2d8cbac4-e4dd-4fa6-bf71-98adf826b9dd", - "name": "family name", - "protocol": "openid-connect", - "protocolMapper": "oidc-usermodel-property-mapper", - "consentRequired": true, - "consentText": "${familyName}", - "config": { - "userinfo.token.claim": "true", - "user.attribute": "lastName", - "id.token.claim": "true", - "access.token.claim": "true", - "claim.name": "family_name", - "jsonType.label": "String" - } - }, - { - "id": "e77aae69-8ea4-4ee4-bcd6-ba7ef3958c02", - "name": "full name", - "protocol": "openid-connect", - "protocolMapper": "oidc-full-name-mapper", - "consentRequired": true, - "consentText": "${fullName}", - "config": { - "id.token.claim": "true", - "access.token.claim": "true", - "userinfo.token.claim": "true" - } - } - ], - "useTemplateConfig": false, - "useTemplateScope": false, - "useTemplateMappers": false - }, - { - "id": "8c12290d-d62f-48ce-913b-c93bf995ca59", - "clientId": "portal", - "rootUrl": "", - "adminUrl": "/callback", - "baseUrl": "/", - "surrogateAuthRequired": false, - "enabled": true, - "clientAuthenticatorType": "client-secret", - "secret": "", - "redirectUris": [ - ], - "webOrigins": [ - "" - ], - "notBefore": 0, - "bearerOnly": false, - "consentRequired": false, - "standardFlowEnabled": true, - "implicitFlowEnabled": false, - "directAccessGrantsEnabled": false, - "serviceAccountsEnabled": false, - "publicClient": true, - "frontchannelLogout": false, - "protocol": "openid-connect", - "attributes": { - "saml.assertion.signature": "false", - "saml.force.post.binding": "false", - "saml.multivalued.roles": "false", - "saml.encrypt": "false", - "saml_force_name_id_format": "false", - "saml.client.signature": "false", - "saml.authnstatement": "false", - "saml.server.signature": "false", - "saml.server.signature.keyinfo.ext": "false", - "saml.onetimeuse.condition": "false" - }, - "fullScopeAllowed": true, - "nodeReRegistrationTimeout": -1, - "protocolMappers": [ - { - "id": "63071ff2-a5e5-4d38-b534-a9f25a075403", - "name": "full name", - "protocol": "openid-connect", - "protocolMapper": "oidc-full-name-mapper", - "consentRequired": true, - "consentText": "${fullName}", - "config": { - "id.token.claim": "true", - "access.token.claim": "true", - "userinfo.token.claim": "true" - } - }, - { - "id": "9bf9cad5-dbce-41e9-aa36-d84cc5a768a2", - "name": "username", - "protocol": "openid-connect", - "protocolMapper": "oidc-usermodel-property-mapper", - "consentRequired": true, - "consentText": "${username}", - "config": { - "userinfo.token.claim": "true", - "user.attribute": "username", - "id.token.claim": "true", - "access.token.claim": "true", - "claim.name": "preferred_username", - "jsonType.label": "String" - } - }, - { - "id": "238e55b7-6545-467e-856b-f95477afe1ff", - "name": "role list", - "protocol": "saml", - "protocolMapper": "saml-role-list-mapper", - "consentRequired": false, - "config": { - "single": "false", - "attribute.nameformat": "Basic", - "attribute.name": "Role" - } - }, - { - "id": "edb1ff4e-b452-46bc-8c3b-d6075f6ee579", - "name": "family name", - "protocol": "openid-connect", - "protocolMapper": "oidc-usermodel-property-mapper", - "consentRequired": true, - "consentText": "${familyName}", - "config": { - "userinfo.token.claim": "true", - "user.attribute": "lastName", - "id.token.claim": "true", - "access.token.claim": "true", - "claim.name": "family_name", - "jsonType.label": "String" - } - }, - { - "id": "7a0118e2-57ff-4d23-bf74-cbfe1f545d1d", - "name": "given name", - "protocol": "openid-connect", - "protocolMapper": "oidc-usermodel-property-mapper", - "consentRequired": true, - "consentText": "${givenName}", - "config": { - "userinfo.token.claim": "true", - "user.attribute": "firstName", - "id.token.claim": "true", - "access.token.claim": "true", - "claim.name": "given_name", - "jsonType.label": "String" - } - }, - { - "id": "b59a913e-118a-4dc4-a8d7-66c44ced5345", - "name": "email", - "protocol": "openid-connect", - "protocolMapper": "oidc-usermodel-property-mapper", - "consentRequired": true, - "consentText": "${email}", - "config": { - "userinfo.token.claim": "true", - "user.attribute": "email", - "id.token.claim": "true", - "access.token.claim": "true", - "claim.name": "email", - "jsonType.label": "String" - } - } - ], - "useTemplateConfig": false, - "useTemplateScope": false, - "useTemplateMappers": false - }, - { - "id": "79c518d7-b41a-4e6f-be42-4ef365824100", - "clientId": "security-admin-console", - "name": "${client_security-admin-console}", - "baseUrl": "/auth/admin/sunbird/console/index.html", - "surrogateAuthRequired": false, - "enabled": true, - "clientAuthenticatorType": "client-secret", - "secret": "", - "redirectUris": [ - "/auth/admin/sunbird/console/*" - ], - "webOrigins": [], - "notBefore": 0, - "bearerOnly": false, - "consentRequired": false, - "standardFlowEnabled": true, - "implicitFlowEnabled": false, - "directAccessGrantsEnabled": false, - "serviceAccountsEnabled": false, - "publicClient": true, - "frontchannelLogout": false, - "protocol": "openid-connect", - "attributes": {}, - "fullScopeAllowed": false, - "nodeReRegistrationTimeout": 0, - "protocolMappers": [ - { - "id": "c989a8c8-cb8b-40ff-b4b9-86122bad7aa9", - "name": "role list", - "protocol": "saml", - "protocolMapper": "saml-role-list-mapper", - "consentRequired": false, - "config": { - "single": "false", - "attribute.nameformat": "Basic", - "attribute.name": "Role" - } - }, - { - "id": "b180fb8c-997c-4f6a-b774-af677f903139", - "name": "family name", - "protocol": "openid-connect", - "protocolMapper": "oidc-usermodel-property-mapper", - "consentRequired": true, - "consentText": "${familyName}", - "config": { - "userinfo.token.claim": "true", - "user.attribute": "lastName", - "id.token.claim": "true", - "access.token.claim": "true", - "claim.name": "family_name", - "jsonType.label": "String" - } - }, - { - "id": "c373dc9a-49d7-4d28-9b94-06cf20fb1955", - "name": "full name", - "protocol": "openid-connect", - "protocolMapper": "oidc-full-name-mapper", - "consentRequired": true, - "consentText": "${fullName}", - "config": { - "id.token.claim": "true", - "access.token.claim": "true", - "userinfo.token.claim": "true" - } - }, - { - "id": "24c7b1c4-62c2-4d92-ab19-49bfaedcc3d4", - "name": "email", - "protocol": "openid-connect", - "protocolMapper": "oidc-usermodel-property-mapper", - "consentRequired": true, - "consentText": "${email}", - "config": { - "userinfo.token.claim": "true", - "user.attribute": "email", - "id.token.claim": "true", - "access.token.claim": "true", - "claim.name": "email", - "jsonType.label": "String" - } - }, - { - "id": "883a39a7-37b4-46ef-a761-3e51b95ccc35", - "name": "given name", - "protocol": "openid-connect", - "protocolMapper": "oidc-usermodel-property-mapper", - "consentRequired": true, - "consentText": "${givenName}", - "config": { - "userinfo.token.claim": "true", - "user.attribute": "firstName", - "id.token.claim": "true", - "access.token.claim": "true", - "claim.name": "given_name", - "jsonType.label": "String" - } - }, - { - "id": "95ed8e44-38cc-4f09-8adc-19c12d5eada0", - "name": "locale", - "protocol": "openid-connect", - "protocolMapper": "oidc-usermodel-attribute-mapper", - "consentRequired": false, - "consentText": "${locale}", - "config": { - "userinfo.token.claim": "true", - "user.attribute": "locale", - "id.token.claim": "true", - "access.token.claim": "true", - "claim.name": "locale", - "jsonType.label": "String" - } - }, - { - "id": "c66c6a41-eb22-443f-8a77-e68d404ad26f", - "name": "username", - "protocol": "openid-connect", - "protocolMapper": "oidc-usermodel-property-mapper", - "consentRequired": true, - "consentText": "${username}", - "config": { - "userinfo.token.claim": "true", - "user.attribute": "username", - "id.token.claim": "true", - "access.token.claim": "true", - "claim.name": "preferred_username", - "jsonType.label": "String" - } - } - ], - "useTemplateConfig": false, - "useTemplateScope": false, - "useTemplateMappers": false - }, - { - "id": "c2d24d3f-65ca-46de-9cd8-3eeb71a7f83d", - "clientId": "account", - "name": "${client_account}", - "baseUrl": "/auth/realms/sunbird/account", - "surrogateAuthRequired": false, - "enabled": true, - "clientAuthenticatorType": "client-secret", - "secret": "", - "defaultRoles": [ - "manage-account", - "view-profile" - ], - "redirectUris": [ - "/auth/realms/sunbird/account/*" - ], - "webOrigins": [], - "notBefore": 0, - "bearerOnly": false, - "consentRequired": false, - "standardFlowEnabled": true, - "implicitFlowEnabled": false, - "directAccessGrantsEnabled": false, - "serviceAccountsEnabled": false, - "publicClient": false, - "frontchannelLogout": false, - "protocol": "openid-connect", - "attributes": {}, - "fullScopeAllowed": false, - "nodeReRegistrationTimeout": 0, - "protocolMappers": [ - { - "id": "a64118ab-33c8-4060-9f3e-3ed817ba8e0d", - "name": "role list", - "protocol": "saml", - "protocolMapper": "saml-role-list-mapper", - "consentRequired": false, - "config": { - "single": "false", - "attribute.nameformat": "Basic", - "attribute.name": "Role" - } - }, - { - "id": "1f4a0c5e-7c8a-4693-8be5-14681b243868", - "name": "username", - "protocol": "openid-connect", - "protocolMapper": "oidc-usermodel-property-mapper", - "consentRequired": true, - "consentText": "${username}", - "config": { - "userinfo.token.claim": "true", - "user.attribute": "username", - "id.token.claim": "true", - "access.token.claim": "true", - "claim.name": "preferred_username", - "jsonType.label": "String" - } - }, - { - "id": "8d88a133-a399-4e75-b051-5b0d4ae850ab", - "name": "full name", - "protocol": "openid-connect", - "protocolMapper": "oidc-full-name-mapper", - "consentRequired": true, - "consentText": "${fullName}", - "config": { - "id.token.claim": "true", - "access.token.claim": "true", - "userinfo.token.claim": "true" - } - }, - { - "id": "45593258-916c-4158-8577-d9806c16415a", - "name": "email", - "protocol": "openid-connect", - "protocolMapper": "oidc-usermodel-property-mapper", - "consentRequired": true, - "consentText": "${email}", - "config": { - "userinfo.token.claim": "true", - "user.attribute": "email", - "id.token.claim": "true", - "access.token.claim": "true", - "claim.name": "email", - "jsonType.label": "String" - } - }, - { - "id": "027be48e-b7dc-4c3a-a648-414a466b67dd", - "name": "family name", - "protocol": "openid-connect", - "protocolMapper": "oidc-usermodel-property-mapper", - "consentRequired": true, - "consentText": "${familyName}", - "config": { - "userinfo.token.claim": "true", - "user.attribute": "lastName", - "id.token.claim": "true", - "access.token.claim": "true", - "claim.name": "family_name", - "jsonType.label": "String" - } - }, - { - "id": "c93937f9-0446-4be9-8b47-3c6de857497e", - "name": "given name", - "protocol": "openid-connect", - "protocolMapper": "oidc-usermodel-property-mapper", - "consentRequired": true, - "consentText": "${givenName}", - "config": { - "userinfo.token.claim": "true", - "user.attribute": "firstName", - "id.token.claim": "true", - "access.token.claim": "true", - "claim.name": "given_name", - "jsonType.label": "String" - } - } - ], - "useTemplateConfig": false, - "useTemplateScope": false, - "useTemplateMappers": false - } - ], - "clientTemplates": [], - "browserSecurityHeaders": { - "xContentTypeOptions": "nosniff", - "xRobotsTag": "none", - "xFrameOptions": "SAMEORIGIN", - "xXSSProtection": "1; mode=block", - "contentSecurityPolicy": "frame-src 'self'" - }, - "smtpServer": { - "password": "", - "starttls": "", - "auth": "true", - "port": "587", - "host": "", - "from": "", - "ssl": "", - "user": "" - }, - "loginTheme": "sunrise", - "eventsEnabled": false, - "eventsListeners": [ - "jboss-logging" - ], - "enabledEventTypes": [], - "adminEventsEnabled": false, - "adminEventsDetailsEnabled": false, - "components": { - "org.keycloak.services.clientregistration.policy.ClientRegistrationPolicy": [ - { - "id": "84078bbb-e005-44c8-9c7d-a1b4821558da", - "name": "Max Clients Limit", - "providerId": "max-clients", - "subType": "anonymous", - "subComponents": {}, - "config": { - "max-clients": [ - "200" - ] - } - }, - { - "id": "346d857e-4385-4f8f-a2fc-072fd11a10ec", - "name": "Allowed Protocol Mapper Types", - "providerId": "allowed-protocol-mappers", - "subType": "authenticated", - "subComponents": {}, - "config": { - "allowed-protocol-mapper-types": [ - "saml-user-attribute-mapper", - "oidc-usermodel-attribute-mapper", - "oidc-usermodel-property-mapper", - "saml-role-list-mapper", - "saml-user-property-mapper", - "oidc-full-name-mapper", - "oidc-address-mapper", - "oidc-sha256-pairwise-sub-mapper" - ], - "consent-required-for-all-mappers": [ - "true" - ] - } - }, - { - "id": "eed64f9f-4b66-45ad-bdb4-4070e3802366", - "name": "Allowed Client Templates", - "providerId": "allowed-client-templates", - "subType": "authenticated", - "subComponents": {}, - "config": {} - }, - { - "id": "17ac4eaa-9139-4b3a-b1db-c82d44c1531d", - "name": "Allowed Client Templates", - "providerId": "allowed-client-templates", - "subType": "anonymous", - "subComponents": {}, - "config": {} - }, - { - "id": "38532936-be91-40e4-b65d-c0abfaf9547c", - "name": "Full Scope Disabled", - "providerId": "scope", - "subType": "anonymous", - "subComponents": {}, - "config": {} - }, - { - "id": "8c1690a2-6eea-4d61-ab66-7a015e3bea3c", - "name": "Allowed Protocol Mapper Types", - "providerId": "allowed-protocol-mappers", - "subType": "anonymous", - "subComponents": {}, - "config": { - "allowed-protocol-mapper-types": [ - "oidc-usermodel-property-mapper", - "saml-user-property-mapper", - "oidc-full-name-mapper", - "oidc-sha256-pairwise-sub-mapper", - "oidc-address-mapper", - "oidc-usermodel-attribute-mapper", - "saml-role-list-mapper", - "saml-user-attribute-mapper" - ], - "consent-required-for-all-mappers": [ - "true" - ] - } - }, - { - "id": "3dcc314c-07f8-484d-9535-29424dbaddfc", - "name": "Trusted Hosts", - "providerId": "trusted-hosts", - "subType": "anonymous", - "subComponents": {}, - "config": { - "host-sending-registration-request-must-match": [ - "true" - ], - "client-uris-must-match": [ - "true" - ] - } - }, - { - "id": "ab52b781-64b9-42a0-99f5-cbeba6710763", - "name": "Consent Required", - "providerId": "consent-required", - "subType": "anonymous", - "subComponents": {}, - "config": {} - } - ], - "org.keycloak.keys.KeyProvider": [ - { - "id": "bd30c46f-9ee3-443d-9faa-6ed8075aac87", - "name": "rsa-generated", - "providerId": "rsa-generated", - "subComponents": {}, - "config": { - "priority": [ - "100" - ] - } - }, - { - "id": "a93cc73f-b070-48cd-bf08-9b290707c2f5", - "name": "hmac-generated", - "providerId": "hmac-generated", - "subComponents": {}, - "config": { - "priority": [ - "100" - ] - } - } - ] - }, - "internationalizationEnabled": true, - "supportedLocales": [ - "de", - "no", - "ru", - "sv", - "pt-BR", - "ja", - "lt", - "en", - "it", - "fr", - "es", - "ca" - ], - "defaultLocale": "en", - "authenticationFlows": [ - { - "id": "6c9d3423-9956-4d08-a124-41cd17aceb5a", - "alias": "Direct Grant 2", - "description": "OpenID Connect Resource Owner Grant", - "providerId": "basic-flow", - "topLevel": true, - "builtIn": false, - "authenticationExecutions": [ - { - "authenticator": "direct-grant-validate-username", - "requirement": "REQUIRED", - "priority": 10, - "userSetupAllowed": false, - "autheticatorFlow": false - }, - { - "authenticator": "direct-grant-validate-password", - "requirement": "DISABLED", - "priority": 20, - "userSetupAllowed": false, - "autheticatorFlow": false - }, - { - "authenticator": "direct-grant-validate-otp", - "requirement": "OPTIONAL", - "priority": 30, - "userSetupAllowed": false, - "autheticatorFlow": false - } - ] - }, - { - "id": "a7a49eb1-4386-499a-8a8f-13454b428f98", - "alias": "Direct Grant w/o Password", - "description": "Grant user access using only the username and no password.", - "providerId": "basic-flow", - "topLevel": true, - "builtIn": false, - "authenticationExecutions": [] - }, - { - "id": "c7b2f9c2-525b-486a-b2a8-148606caac0e", - "alias": "Handle Existing Account", - "description": "Handle what to do if there is existing account with same email/username like authenticated identity provider", - "providerId": "basic-flow", - "topLevel": false, - "builtIn": true, - "authenticationExecutions": [ - { - "authenticator": "idp-confirm-link", - "requirement": "REQUIRED", - "priority": 10, - "userSetupAllowed": false, - "autheticatorFlow": false - }, - { - "authenticator": "idp-email-verification", - "requirement": "ALTERNATIVE", - "priority": 20, - "userSetupAllowed": false, - "autheticatorFlow": false - }, - { - "requirement": "ALTERNATIVE", - "priority": 30, - "flowAlias": "Verify Existing Account by Re-authentication", - "userSetupAllowed": false, - "autheticatorFlow": true - } - ] - }, - { - "id": "c4674fef-8631-43c5-8f44-deb8867fa866", - "alias": "Verify Existing Account by Re-authentication", - "description": "Reauthentication of existing account", - "providerId": "basic-flow", - "topLevel": false, - "builtIn": true, - "authenticationExecutions": [ - { - "authenticator": "idp-username-password-form", - "requirement": "REQUIRED", - "priority": 10, - "userSetupAllowed": false, - "autheticatorFlow": false - }, - { - "authenticator": "auth-otp-form", - "requirement": "OPTIONAL", - "priority": 20, - "userSetupAllowed": false, - "autheticatorFlow": false - } - ] - }, - { - "id": "35016b3a-a041-47fd-8a85-a131c6f7b745", - "alias": "browser", - "description": "browser based authentication", - "providerId": "basic-flow", - "topLevel": true, - "builtIn": true, - "authenticationExecutions": [ - { - "authenticator": "auth-cookie", - "requirement": "ALTERNATIVE", - "priority": 10, - "userSetupAllowed": false, - "autheticatorFlow": false - }, - { - "authenticator": "auth-spnego", - "requirement": "DISABLED", - "priority": 20, - "userSetupAllowed": false, - "autheticatorFlow": false - }, - { - "authenticator": "identity-provider-redirector", - "requirement": "ALTERNATIVE", - "priority": 25, - "userSetupAllowed": false, - "autheticatorFlow": false - }, - { - "requirement": "ALTERNATIVE", - "priority": 30, - "flowAlias": "forms", - "userSetupAllowed": false, - "autheticatorFlow": true - } - ] - }, - { - "id": "8e85927e-349d-4a0a-a7da-efb352ba78ce", - "alias": "clients", - "description": "Base authentication for clients", - "providerId": "client-flow", - "topLevel": true, - "builtIn": true, - "authenticationExecutions": [ - { - "authenticator": "client-secret", - "requirement": "ALTERNATIVE", - "priority": 10, - "userSetupAllowed": false, - "autheticatorFlow": false - }, - { - "authenticator": "client-jwt", - "requirement": "ALTERNATIVE", - "priority": 20, - "userSetupAllowed": false, - "autheticatorFlow": false - } - ] - }, - { - "id": "b62ac783-8af6-429e-a8ff-7c8073195675", - "alias": "direct grant", - "description": "OpenID Connect Resource Owner Grant", - "providerId": "basic-flow", - "topLevel": true, - "builtIn": true, - "authenticationExecutions": [ - { - "authenticator": "direct-grant-validate-username", - "requirement": "REQUIRED", - "priority": 10, - "userSetupAllowed": false, - "autheticatorFlow": false - }, - { - "authenticator": "direct-grant-validate-password", - "requirement": "DISABLED", - "priority": 20, - "userSetupAllowed": false, - "autheticatorFlow": false - }, - { - "authenticator": "direct-grant-validate-otp", - "requirement": "OPTIONAL", - "priority": 30, - "userSetupAllowed": false, - "autheticatorFlow": false - } - ] - }, - { - "id": "e16e69c8-a3e8-480c-8201-8474d614e172", - "alias": "docker auth", - "description": "Used by Docker clients to authenticate against the IDP", - "providerId": "basic-flow", - "topLevel": true, - "builtIn": true, - "authenticationExecutions": [ - { - "authenticator": "docker-http-basic-authenticator", - "requirement": "REQUIRED", - "priority": 10, - "userSetupAllowed": false, - "autheticatorFlow": false - } - ] - }, - { - "id": "487ab3f9-33bf-49e2-8b03-5c45c85ea8b5", - "alias": "first broker login", - "description": "Actions taken after first broker login with identity provider account, which is not yet linked to any Keycloak account", - "providerId": "basic-flow", - "topLevel": true, - "builtIn": true, - "authenticationExecutions": [ - { - "authenticatorConfig": "review profile config", - "authenticator": "idp-review-profile", - "requirement": "REQUIRED", - "priority": 10, - "userSetupAllowed": false, - "autheticatorFlow": false - }, - { - "authenticatorConfig": "create unique user config", - "authenticator": "idp-create-user-if-unique", - "requirement": "ALTERNATIVE", - "priority": 20, - "userSetupAllowed": false, - "autheticatorFlow": false - }, - { - "requirement": "ALTERNATIVE", - "priority": 30, - "flowAlias": "Handle Existing Account", - "userSetupAllowed": false, - "autheticatorFlow": true - } - ] - }, - { - "id": "a6d19ee2-387a-4db8-9ecb-2e9f806a88a1", - "alias": "forms", - "description": "Username, password, otp and other auth forms.", - "providerId": "basic-flow", - "topLevel": false, - "builtIn": true, - "authenticationExecutions": [ - { - "authenticator": "auth-username-password-form", - "requirement": "REQUIRED", - "priority": 10, - "userSetupAllowed": false, - "autheticatorFlow": false - }, - { - "authenticator": "auth-otp-form", - "requirement": "OPTIONAL", - "priority": 20, - "userSetupAllowed": false, - "autheticatorFlow": false - } - ] - }, - { - "id": "43fc7877-ad15-4c93-b327-15d4ca83f3e1", - "alias": "registration", - "description": "registration flow", - "providerId": "basic-flow", - "topLevel": true, - "builtIn": true, - "authenticationExecutions": [ - { - "authenticator": "registration-page-form", - "requirement": "REQUIRED", - "priority": 10, - "flowAlias": "registration form", - "userSetupAllowed": false, - "autheticatorFlow": true - } - ] - }, - { - "id": "8a77377f-60eb-4a23-8bfe-b7c360d7b48f", - "alias": "registration form", - "description": "registration form", - "providerId": "form-flow", - "topLevel": false, - "builtIn": true, - "authenticationExecutions": [ - { - "authenticator": "registration-user-creation", - "requirement": "REQUIRED", - "priority": 20, - "userSetupAllowed": false, - "autheticatorFlow": false - }, - { - "authenticator": "registration-profile-action", - "requirement": "REQUIRED", - "priority": 40, - "userSetupAllowed": false, - "autheticatorFlow": false - }, - { - "authenticator": "registration-password-action", - "requirement": "REQUIRED", - "priority": 50, - "userSetupAllowed": false, - "autheticatorFlow": false - }, - { - "authenticator": "registration-recaptcha-action", - "requirement": "DISABLED", - "priority": 60, - "userSetupAllowed": false, - "autheticatorFlow": false - } - ] - }, - { - "id": "30bd3dd1-f2f1-4708-a07d-08cf759c7b28", - "alias": "reset credentials", - "description": "Reset credentials for a user if they forgot their password or something", - "providerId": "basic-flow", - "topLevel": true, - "builtIn": true, - "authenticationExecutions": [ - { - "authenticator": "reset-credentials-choose-user", - "requirement": "REQUIRED", - "priority": 10, - "userSetupAllowed": false, - "autheticatorFlow": false - }, - { - "authenticator": "reset-credential-email", - "requirement": "REQUIRED", - "priority": 20, - "userSetupAllowed": false, - "autheticatorFlow": false - }, - { - "authenticator": "reset-password", - "requirement": "REQUIRED", - "priority": 30, - "userSetupAllowed": false, - "autheticatorFlow": false - }, - { - "authenticator": "reset-otp", - "requirement": "OPTIONAL", - "priority": 40, - "userSetupAllowed": false, - "autheticatorFlow": false - } - ] - }, - { - "id": "226a50b1-059a-44ef-8cfe-082dee5d60b9", - "alias": "saml ecp", - "description": "SAML ECP Profile Authentication Flow", - "providerId": "basic-flow", - "topLevel": true, - "builtIn": true, - "authenticationExecutions": [ - { - "authenticator": "http-basic-authenticator", - "requirement": "REQUIRED", - "priority": 10, - "userSetupAllowed": false, - "autheticatorFlow": false - } - ] - } - ], - "authenticatorConfig": [ - { - "id": "aec72381-3c1d-4a96-b436-ddb72b3737b9", - "alias": "create unique user config", - "config": { - "require.password.update.after.registration": "false" - } - }, - { - "id": "51f3fa48-bf74-4df9-9724-c0a9d6fe7c80", - "alias": "review profile config", - "config": { - "update.profile.on.first.login": "missing" - } - } - ], - "requiredActions": [ - { - "alias": "CONFIGURE_TOTP", - "name": "Configure OTP", - "providerId": "CONFIGURE_TOTP", - "enabled": true, - "defaultAction": false, - "config": {} - }, - { - "alias": "UPDATE_PASSWORD", - "name": "Update Password", - "providerId": "UPDATE_PASSWORD", - "enabled": true, - "defaultAction": false, - "config": {} - }, - { - "alias": "UPDATE_PROFILE", - "name": "Update Profile", - "providerId": "UPDATE_PROFILE", - "enabled": true, - "defaultAction": false, - "config": {} - }, - { - "alias": "VERIFY_EMAIL", - "name": "Verify Email", - "providerId": "VERIFY_EMAIL", - "enabled": true, - "defaultAction": false, - "config": {} - }, - { - "alias": "terms_and_conditions", - "name": "Terms and Conditions", - "providerId": "terms_and_conditions", - "enabled": true, - "defaultAction": false, - "config": {} - } - ], - "browserFlow": "browser", - "registrationFlow": "registration", - "directGrantFlow": "Direct Grant 2", - "resetCredentialsFlow": "reset credentials", - "clientAuthenticationFlow": "clients", - "dockerAuthenticationFlow": "docker auth", - "attributes": { - "_browser_header.xXSSProtection": "1; mode=block", - "_browser_header.xFrameOptions": "SAMEORIGIN", - "permanentLockout": "false", - "quickLoginCheckMilliSeconds": "1000", - "_browser_header.xRobotsTag": "none", - "maxFailureWaitSeconds": "900", - "minimumQuickLoginWaitSeconds": "60", - "failureFactor": "30", - "actionTokenGeneratedByUserLifespan": "300", - "maxDeltaTimeSeconds": "43200", - "_browser_header.xContentTypeOptions": "nosniff", - "actionTokenGeneratedByAdminLifespan": "43200", - "bruteForceProtected": "false", - "_browser_header.contentSecurityPolicy": "frame-src 'self'", - "waitIncrementSeconds": "60" - }, - "keycloakVersion": "3.2.0.Final" -} diff --git a/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/__init__.py b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/__init__.py deleted file mode 100644 index cf1f955408..0000000000 --- a/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/__init__.py +++ /dev/null @@ -1,19 +0,0 @@ -# -*- coding: utf-8 -*- -# -# Copyright (C) 2017 Marcos Pereira -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Lesser General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public License -# along with this program. If not, see . - -from .keycloak_openid import * -from .keycloak_admin import * diff --git a/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/authorization/__init__.py b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/authorization/__init__.py deleted file mode 100644 index 4a1d86dbeb..0000000000 --- a/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/authorization/__init__.py +++ /dev/null @@ -1,87 +0,0 @@ -# -*- coding: utf-8 -*- -# -# Copyright (C) 2017 Marcos Pereira -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Lesser General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public License -# along with this program. If not, see . - -import ast -import json - -from .permission import Permission -from .policy import Policy -from .role import Role - - -class Authorization: - """ - Keycloak Authorization (policies, roles, scopes and resources). - - https://keycloak.gitbooks.io/documentation/authorization_services/index.html - - """ - - def __init__(self): - self._policies = {} - - @property - def policies(self): - return self._policies - - @policies.setter - def policies(self, value): - self._policies = value - - def load_config(self, data): - """ - Load policies, roles and permissions (scope/resources). - - :param data: keycloak authorization data (dict) - :return: - """ - for pol in data['policies']: - if pol['type'] == 'role': - policy = Policy(name=pol['name'], - type=pol['type'], - logic=pol['logic'], - decision_strategy=pol['decisionStrategy']) - - config_roles = json.loads(pol['config']['roles']) - for role in config_roles: - policy.add_role(Role(name=role['id'], - required=role['required'])) - - self.policies[policy.name] = policy - - if pol['type'] == 'scope': - permission = Permission(name=pol['name'], - type=pol['type'], - logic=pol['logic'], - decision_strategy=pol['decisionStrategy']) - - permission.scopes = ast.literal_eval(pol['config']['scopes']) - - for policy_name in ast.literal_eval(pol['config']['applyPolicies']): - self.policies[policy_name].add_permission(permission) - - if pol['type'] == 'resource': - permission = Permission(name=pol['name'], - type=pol['type'], - logic=pol['logic'], - decision_strategy=pol['decisionStrategy']) - - permission.resources = ast.literal_eval(pol['config']['resources']) - - for policy_name in ast.literal_eval(pol['config']['applyPolicies']): - self.policies[policy_name].add_permission(permission) - diff --git a/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/authorization/permission.py b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/authorization/permission.py deleted file mode 100644 index 94eca77954..0000000000 --- a/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/authorization/permission.py +++ /dev/null @@ -1,98 +0,0 @@ -# -*- coding: utf-8 -*- -# -# Copyright (C) 2017 Marcos Pereira -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Lesser General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public License -# along with this program. If not, see . - - -class Permission: - """ - Consider this simple and very common permission: - - A permission associates the object being protected with the policies that must be evaluated to determine whether access is granted. - - X CAN DO Y ON RESOURCE Z - - where … - X represents one or more users, roles, or groups, or a combination of them. You can - also use claims and context here. - Y represents an action to be performed, for example, write, view, and so on. - Z represents a protected resource, for example, "/accounts". - - https://keycloak.gitbooks.io/documentation/authorization_services/topics/permission/overview.html - - """ - - def __init__(self, name, type, logic, decision_strategy): - self._name = name - self._type = type - self._logic = logic - self._decision_strategy = decision_strategy - self._resources = [] - self._scopes = [] - - def __repr__(self): - return "" % (self.name, self.type) - - def __str__(self): - return "Permission: %s (%s)" % (self.name, self.type) - - @property - def name(self): - return self._name - - @name.setter - def name(self, value): - self._name = value - - @property - def type(self): - return self._type - - @type.setter - def type(self, value): - self._type = value - - @property - def logic(self): - return self._logic - - @logic.setter - def logic(self, value): - self._logic = value - - @property - def decision_strategy(self): - return self._decision_strategy - - @decision_strategy.setter - def decision_strategy(self, value): - self._decision_strategy = value - - @property - def resources(self): - return self._resources - - @resources.setter - def resources(self, value): - self._resources = value - - @property - def scopes(self): - return self._scopes - - @scopes.setter - def scopes(self, value): - self._scopes = value - diff --git a/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/authorization/policy.py b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/authorization/policy.py deleted file mode 100644 index 66512bac3a..0000000000 --- a/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/authorization/policy.py +++ /dev/null @@ -1,107 +0,0 @@ -# -*- coding: utf-8 -*- -# -# Copyright (C) 2017 Marcos Pereira -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Lesser General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public License -# along with this program. If not, see . - -from ..exceptions import KeycloakAuthorizationConfigError - - -class Policy: - """ - A policy defines the conditions that must be satisfied to grant access to an object. - Unlike permissions, you do not specify the object being protected but rather the conditions - that must be satisfied for access to a given object (for example, resource, scope, or both). - Policies are strongly related to the different access control mechanisms (ACMs) that you can use to - protect your resources. With policies, you can implement strategies for attribute-based access control - (ABAC), role-based access control (RBAC), context-based access control, or any combination of these. - - https://keycloak.gitbooks.io/documentation/authorization_services/topics/policy/overview.html - - """ - - def __init__(self, name, type, logic, decision_strategy): - self._name = name - self._type = type - self._logic = logic - self._decision_strategy = decision_strategy - self._roles = [] - self._permissions = [] - - def __repr__(self): - return "" % (self.name, self.type) - - def __str__(self): - return "Policy: %s (%s)" % (self.name, self.type) - - @property - def name(self): - return self._name - - @name.setter - def name(self, value): - self._name = value - - @property - def type(self): - return self._type - - @type.setter - def type(self, value): - self._type = value - - @property - def logic(self): - return self._logic - - @logic.setter - def logic(self, value): - self._logic = value - - @property - def decision_strategy(self): - return self._decision_strategy - - @decision_strategy.setter - def decision_strategy(self, value): - self._decision_strategy = value - - @property - def roles(self): - return self._roles - - @property - def permissions(self): - return self._permissions - - def add_role(self, role): - """ - Add keycloak role in policy. - - :param role: keycloak role. - :return: - """ - if self.type != 'role': - raise KeycloakAuthorizationConfigError( - "Can't add role. Policy type is different of role") - self._roles.append(role) - - def add_permission(self, permission): - """ - Add keycloak permission in policy. - - :param permission: keycloak permission. - :return: - """ - self._permissions.append(permission) diff --git a/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/authorization/role.py b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/authorization/role.py deleted file mode 100644 index 8d398b09ee..0000000000 --- a/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/authorization/role.py +++ /dev/null @@ -1,39 +0,0 @@ -# -*- coding: utf-8 -*- -# -# Copyright (C) 2017 Marcos Pereira -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Lesser General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public License -# along with this program. If not, see . - - -class Role: - """ - Roles identify a type or category of user. Admin, user, - manager, and employee are all typical roles that may exist in an organization. - - https://keycloak.gitbooks.io/documentation/server_admin/topics/roles.html - - """ - - def __init__(self, name, required=False): - self.name = name - self.required = required - - @property - def get_name(self): - return self.name - - def __eq__(self, other): - if isinstance(other, str): - return self.name == other - return NotImplemented diff --git a/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/connection.py b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/connection.py deleted file mode 100644 index 503b688a7f..0000000000 --- a/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/connection.py +++ /dev/null @@ -1,199 +0,0 @@ -# -*- coding: utf-8 -*- -# -# Copyright (C) 2017 Marcos Pereira -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Lesser General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public License -# along with this program. If not, see . - -try: - from urllib.parse import urljoin -except ImportError: - from urlparse import urljoin - -from .exceptions import * -import requests - - -class ConnectionManager(object): - """ Represents a simple server connection. - Args: - base_url (str): The server URL. - headers (dict): The header parameters of the requests to the server. - timeout (int): Timeout to use for requests to the server. - verify (bool): Verify server SSL. - """ - - def __init__(self, base_url, headers={}, timeout=60, verify=True): - self._base_url = base_url - self._headers = headers - self._timeout = timeout - self._verify = verify - - @property - def base_url(self): - """ Return base url in use for requests to the server. """ - return self._base_url - - @base_url.setter - def base_url(self, value): - """ """ - self._base_url = value - - @property - def timeout(self): - """ Return timeout in use for request to the server. """ - return self._timeout - - @timeout.setter - def timeout(self, value): - """ """ - self._timeout = value - - @property - def verify(self): - """ Return verify in use for request to the server. """ - return self._verify - - @verify.setter - def verify(self, value): - """ """ - self._verify = value - - @property - def headers(self): - """ Return header request to the server. """ - return self._headers - - @headers.setter - def headers(self, value): - """ """ - self._headers = value - - def param_headers(self, key): - """ Return a specific header parameter. - :arg - key (str): Header parameters key. - :return: - If the header parameters exist, return its value. - """ - return self.headers.get(key) - - def clean_headers(self): - """ Clear header parameters. """ - self.headers = {} - - def exist_param_headers(self, key): - """ Check if the parameter exists in the header. - :arg - key (str): Header parameters key. - :return: - If the header parameters exist, return True. - """ - return self.param_headers(key) is not None - - def add_param_headers(self, key, value): - """ Add a single parameter inside the header. - :arg - key (str): Header parameters key. - value (str): Value to be added. - """ - self.headers[key] = value - - def del_param_headers(self, key): - """ Remove a specific parameter. - :arg - key (str): Key of the header parameters. - """ - self.headers.pop(key, None) - - def raw_get(self, path, **kwargs): - """ Submit get request to the path. - :arg - path (str): Path for request. - :return - Response the request. - :exception - HttpError: Can't connect to server. - """ - - try: - return requests.get(urljoin(self.base_url, path), - params=kwargs, - headers=self.headers, - timeout=self.timeout, - verify=self.verify) - except Exception as e: - raise KeycloakConnectionError( - "Can't connect to server (%s)" % e) - - def raw_post(self, path, data, **kwargs): - """ Submit post request to the path. - :arg - path (str): Path for request. - data (dict): Payload for request. - :return - Response the request. - :exception - HttpError: Can't connect to server. - """ - try: - return requests.post(urljoin(self.base_url, path), - params=kwargs, - data=data, - headers=self.headers, - timeout=self.timeout, - verify=self.verify) - except Exception as e: - raise KeycloakConnectionError( - "Can't connect to server (%s)" % e) - - def raw_put(self, path, data, **kwargs): - """ Submit put request to the path. - :arg - path (str): Path for request. - data (dict): Payload for request. - :return - Response the request. - :exception - HttpError: Can't connect to server. - """ - try: - return requests.put(urljoin(self.base_url, path), - params=kwargs, - data=data, - headers=self.headers, - timeout=self.timeout, - verify=self.verify) - except Exception as e: - raise KeycloakConnectionError( - "Can't connect to server (%s)" % e) - - def raw_delete(self, path, **kwargs): - """ Submit delete request to the path. - - :arg - path (str): Path for request. - :return - Response the request. - :exception - HttpError: Can't connect to server. - """ - try: - return requests.delete(urljoin(self.base_url, path), - params=kwargs, - headers=self.headers, - timeout=self.timeout, - verify=self.verify) - except Exception as e: - raise KeycloakConnectionError( - "Can't connect to server (%s)" % e) diff --git a/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/exceptions.py b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/exceptions.py deleted file mode 100644 index 27d8b14c15..0000000000 --- a/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/exceptions.py +++ /dev/null @@ -1,93 +0,0 @@ -# -*- coding: utf-8 -*- -# -# Copyright (C) 2017 Marcos Pereira -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Lesser General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public License -# along with this program. If not, see . - -import requests - - -class KeycloakError(Exception): - def __init__(self, error_message="", response_code=None, - response_body=None): - - Exception.__init__(self, error_message) - - self.response_code = response_code - self.response_body = response_body - self.error_message = error_message - - def __str__(self): - if self.response_code is not None: - return "{0}: {1}".format(self.response_code, self.error_message) - else: - return "{0}".format(self.error_message) - - -class KeycloakAuthenticationError(KeycloakError): - pass - - -class KeycloakConnectionError(KeycloakError): - pass - - -class KeycloakOperationError(KeycloakError): - pass - - -class KeycloakGetError(KeycloakOperationError): - pass - - -class KeycloakSecretNotFound(KeycloakOperationError): - pass - - -class KeycloakRPTNotFound(KeycloakOperationError): - pass - - -class KeycloakAuthorizationConfigError(KeycloakOperationError): - pass - - -class KeycloakInvalidTokenError(KeycloakOperationError): - pass - - -def raise_error_from_response(response, error, expected_code=200): - - if expected_code == response.status_code: - if expected_code == requests.codes.no_content: - return {} - try: - return response.json() - except ValueError: - return response.content - - try: - message = response.json()['message'] - except (KeyError, ValueError): - message = response.content - - if isinstance(error, dict): - error = error.get(response.status_code, KeycloakOperationError) - else: - if response.status_code == 401: - error = KeycloakAuthenticationError - - raise error(error_message=message, - response_code=response.status_code, - response_body=response.content) diff --git a/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/keycloak_admin.py b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/keycloak_admin.py deleted file mode 100644 index 79f5c2c6d3..0000000000 --- a/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/keycloak_admin.py +++ /dev/null @@ -1,670 +0,0 @@ -# -*- coding: utf-8 -*- -# -# Copyright (C) 2017 Marcos Pereira -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Lesser General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public License -# along with this program. If not, see . - -# Unless otherwise stated in the comments, "id", in e.g. user_id, refers to the -# internal Keycloak server ID, usually a uuid string -from keycloak.urls_patterns import URL_ADMIN_CLIENT_ROLE -from .urls_patterns import \ - URL_ADMIN_USERS_COUNT, URL_ADMIN_USER, URL_ADMIN_USER_CONSENTS, \ - URL_ADMIN_SEND_UPDATE_ACCOUNT, URL_ADMIN_RESET_PASSWORD, URL_ADMIN_SEND_VERIFY_EMAIL, URL_ADMIN_GET_SESSIONS, \ - URL_ADMIN_SERVER_INFO, URL_ADMIN_CLIENTS, URL_ADMIN_CLIENT, URL_ADMIN_CLIENT_ROLES, URL_ADMIN_REALM_ROLES, \ - URL_ADMIN_GROUP, URL_ADMIN_GROUPS, URL_ADMIN_GROUP_CHILD, URL_ADMIN_USER_GROUP,\ - URL_ADMIN_GROUP_PERMISSIONS, URL_ADMIN_USER_CLIENT_ROLES, URL_ADMIN_USER_STORAGE, URL_ADMIN_REALM - -from .keycloak_openid import KeycloakOpenID - -from .exceptions import raise_error_from_response, KeycloakGetError - -from .urls_patterns import ( - URL_ADMIN_USERS, -) - -from .connection import ConnectionManager -import json - - -class KeycloakAdmin: - - def __init__(self, server_url, username, password, realm_name='master', client_id='admin-cli', verify=True): - """ - - :param server_url: Keycloak server url - :param username: admin username - :param password: admin password - :param realm_name: realm name - :param client_id: client id - :param verify: True if want check connection SSL - """ - self._username = username - self._password = password - self._client_id = client_id - self._realm_name = realm_name - - # Get token Admin - keycloak_openid = KeycloakOpenID(server_url=server_url, client_id=client_id, realm_name=realm_name, - verify=verify) - self._token = keycloak_openid.token(username, password) - - self._connection = ConnectionManager(base_url=server_url, - headers={'Authorization': 'Bearer ' + self.token.get('access_token'), - 'Content-Type': 'application/json'}, - timeout=60, - verify=verify) - - @property - def realm_name(self): - return self._realm_name - - @realm_name.setter - def realm_name(self, value): - self._realm_name = value - - @property - def connection(self): - return self._connection - - @connection.setter - def connection(self, value): - self._connection = value - - @property - def client_id(self): - return self._client_id - - @client_id.setter - def client_id(self, value): - self._client_id = value - - @property - def username(self): - return self._username - - @username.setter - def username(self, value): - self._username = value - - @property - def password(self): - return self._password - - @password.setter - def password(self, value): - self._password = value - - @property - def token(self): - return self._token - - @token.setter - def token(self, value): - self._token = value - - def get_users(self, query=None): - """ - Get users Returns a list of users, filtered according to query parameters - - :return: users list - """ - params_path = {"realm-name": self.realm_name} - data_raw = self.connection.raw_get(URL_ADMIN_USERS.format(**params_path), **query) - return raise_error_from_response(data_raw, KeycloakGetError) - - def create_user(self, payload): - """ - Create a new user Username must be unique - - UserRepresentation - http://www.keycloak.org/docs-api/3.3/rest-api/index.html#_userrepresentation - - :param payload: UserRepresentation - - :return: UserRepresentation - """ - params_path = {"realm-name": self.realm_name} - data_raw = self.connection.raw_post(URL_ADMIN_USERS.format(**params_path), - data=json.dumps(payload)) - return raise_error_from_response(data_raw, KeycloakGetError, expected_code=201) - - def users_count(self): - """ - User counter - - :return: counter - """ - params_path = {"realm-name": self.realm_name} - data_raw = self.connection.raw_get(URL_ADMIN_USERS_COUNT.format(**params_path)) - return raise_error_from_response(data_raw, KeycloakGetError) - - def get_user_id(self, username): - """ - Get internal keycloak user id from username - This is required for further actions against this user. - - UserRepresentation - http://www.keycloak.org/docs-api/3.3/rest-api/index.html#_userrepresentation - - :param username: id in UserRepresentation - - :return: user_id - """ - params_path = {"realm-name": self.realm_name, "username": username} - data_raw = self.connection.raw_get(URL_ADMIN_USERS.format(**params_path)) - data_content = raise_error_from_response(data_raw, KeycloakGetError) - - for user in data_content: - this_use_rname = json.dumps(user["username"]).strip('"') - if this_use_rname == username: - return json.dumps(user["id"]).strip('"') - - return None - - def get_user(self, user_id): - """ - Get representation of the user - - :param user_id: User id - - UserRepresentation: http://www.keycloak.org/docs-api/3.3/rest-api/index.html#_userrepresentation - - :return: UserRepresentation - """ - params_path = {"realm-name": self.realm_name, "id": user_id} - data_raw = self.connection.raw_get(URL_ADMIN_USER.format(**params_path)) - return raise_error_from_response(data_raw, KeycloakGetError) - - def update_user(self, user_id, payload): - """ - Update the user - - :param user_id: User id - :param payload: UserRepresentation - - :return: Http response - """ - params_path = {"realm-name": self.realm_name, "id": user_id} - data_raw = self.connection.raw_put(URL_ADMIN_USER.format(**params_path), - data=json.dumps(payload)) - return raise_error_from_response(data_raw, KeycloakGetError, expected_code=204) - - def delete_user(self, user_id): - """ - Delete the user - - :param user_id: User id - - :return: Http response - """ - params_path = {"realm-name": self.realm_name, "id": user_id} - data_raw = self.connection.raw_delete(URL_ADMIN_USER.format(**params_path)) - return raise_error_from_response(data_raw, KeycloakGetError, expected_code=204) - - def set_user_password(self, user_id, password, temporary=True): - """ - Set up a password for the user. If temporary is True, the user will have to reset - the temporary password next time they log in. - - http://www.keycloak.org/docs-api/3.2/rest-api/#_users_resource - http://www.keycloak.org/docs-api/3.2/rest-api/#_credentialrepresentation - - :param user_id: User id - :param password: New password - :param temporary: True if password is temporary - - :return: - """ - payload = {"type": "password", "temporary": temporary, "value": password} - params_path = {"realm-name": self.realm_name, "id": user_id} - data_raw = self.connection.raw_put(URL_ADMIN_RESET_PASSWORD.format(**params_path), - data=json.dumps(payload)) - return raise_error_from_response(data_raw, KeycloakGetError, expected_code=204) - - def consents_user(self, user_id): - """ - Get consents granted by the user - - :param user_id: User id - - :return: consents - """ - params_path = {"realm-name": self.realm_name, "id": user_id} - data_raw = self.connection.raw_get(URL_ADMIN_USER_CONSENTS.format(**params_path)) - return raise_error_from_response(data_raw, KeycloakGetError) - - def send_update_account(self, user_id, payload, client_id=None, lifespan=None, redirect_uri=None): - """ - Send a update account email to the user An email contains a - link the user can click to perform a set of required actions. - - :param user_id: - :param payload: - :param client_id: - :param lifespan: - :param redirect_uri: - - :return: - """ - params_path = {"realm-name": self.realm_name, "id": user_id} - params_query = {"client_id": client_id, "lifespan": lifespan, "redirect_uri": redirect_uri} - data_raw = self.connection.raw_put(URL_ADMIN_SEND_UPDATE_ACCOUNT.format(**params_path), - data=payload, **params_query) - return raise_error_from_response(data_raw, KeycloakGetError) - - def send_verify_email(self, user_id, client_id=None, redirect_uri=None): - """ - Send a update account email to the user An email contains a - link the user can click to perform a set of required actions. - - :param user_id: User id - :param client_id: Client id - :param redirect_uri: Redirect uri - - :return: - """ - params_path = {"realm-name": self.realm_name, "id": user_id} - params_query = {"client_id": client_id, "redirect_uri": redirect_uri} - data_raw = self.connection.raw_put(URL_ADMIN_SEND_VERIFY_EMAIL.format(**params_path), - data={}, **params_query) - return raise_error_from_response(data_raw, KeycloakGetError) - - def get_sessions(self, user_id): - """ - Get sessions associated with the user - - :param user_id: id of user - - UserSessionRepresentation - http://www.keycloak.org/docs-api/3.3/rest-api/index.html#_usersessionrepresentation - - :return: UserSessionRepresentation - """ - params_path = {"realm-name": self.realm_name, "id": user_id} - data_raw = self.connection.raw_get(URL_ADMIN_GET_SESSIONS.format(**params_path)) - return raise_error_from_response(data_raw, KeycloakGetError) - - def get_server_info(self): - """ - Get themes, social providers, auth providers, and event listeners available on this server - - ServerInfoRepresentation - http://www.keycloak.org/docs-api/3.3/rest-api/index.html#_serverinforepresentation - - :return: ServerInfoRepresentation - """ - data_raw = self.connection.raw_get(URL_ADMIN_SERVER_INFO) - return raise_error_from_response(data_raw, KeycloakGetError) - - def get_groups(self): - """ - Get groups belonging to the realm. Returns a list of groups belonging to the realm - - GroupRepresentation - http://www.keycloak.org/docs-api/3.2/rest-api/#_grouprepresentation - - :return: array GroupRepresentation - """ - params_path = {"realm-name": self.realm_name} - data_raw = self.connection.raw_get(URL_ADMIN_GROUPS.format(**params_path)) - return raise_error_from_response(data_raw, KeycloakGetError) - - def get_group(self, group_id): - """ - Get group by id. Returns full group details - - GroupRepresentation - http://www.keycloak.org/docs-api/3.2/rest-api/#_grouprepresentation - - :return: Keycloak server response (GroupRepresentation) - """ - params_path = {"realm-name": self.realm_name, "id": group_id} - data_raw = self.connection.raw_get(URL_ADMIN_GROUP.format(**params_path)) - return raise_error_from_response(data_raw, KeycloakGetError) - - def get_group_by_name(self, name_or_path, search_in_subgroups=False): - """ - Get group id based on name or path. - A straight name or path match with a top-level group will return first. - Subgroups are traversed, the first to match path (or name with path) is returned. - - GroupRepresentation - http://www.keycloak.org/docs-api/3.2/rest-api/#_grouprepresentation - - :param name: group name - :param path: group path - :param search_in_subgroups: True if want search in the subgroups - :return: Keycloak server response (GroupRepresentation) - """ - - groups = self.get_groups() - - # TODO: Review this code is necessary - for group in groups: - if group['name'] == name_or_path or group['path'] == name_or_path: - return group - elif search_in_subgroups and group["subGroups"]: - for subgroup in group["subGroups"]: - if subgroup['name'] == name_or_path or subgroup['path'] == name_or_path: - return subgroup - - return None - - def create_group(self, name=None, client_roles={}, realm_roles=[], sub_groups=[], path=None, parent=None): - """ - Create a group in the Realm - - GroupRepresentation - http://www.keycloak.org/docs-api/3.2/rest-api/#_grouprepresentation - - :param name: group name - :param client_roles: (Dict) Client roles to include in groupp # Not demonstrated to work - :param realm_roles: (List) Realm roles to include in group # Not demonstrated to work - :param sub_groups: (List) Subgroups to include in groupp # Not demonstrated to work - :param path: group path - :param parent: parent group's id. Required to create a sub-group. - - :return: Keycloak server response (GroupRepresentation) - """ - - data = {"name": name or path, - "path": path, - "clientRoles": client_roles, - "realmRoles": realm_roles, - "subGroups": sub_groups} - - if parent is None: - params_path = {"realm-name": self.realm_name} - data_raw = self.connection.raw_post(URL_ADMIN_GROUPS.format(**params_path), - data=json.dumps(data)) - else: - params_path = {"realm-name": self.realm_name, "id": parent} - data_raw = self.connection.raw_post(URL_ADMIN_GROUP_CHILD.format(**params_path), - data=json.dumps(data)) - - return raise_error_from_response(data_raw, KeycloakGetError, expected_code=201) - - def group_set_permissions(self, group_id, enabled=True): - """ - Enable/Disable permissions for a group. Cannot delete group if disabled - - :param group_id: id of group - :param enabled: boolean - :return: Keycloak server response - """ - - params_path = {"realm-name": self.realm_name, "id": group_id} - data_raw = self.connection.raw_put(URL_ADMIN_GROUP_PERMISSIONS.format(**params_path), - data=json.dumps({"enabled": enabled})) - return raise_error_from_response(data_raw, KeycloakGetError) - - def group_user_add(self, user_id, group_id): - """ - Add user to group (user_id and group_id) - - :param group_id: id of group - :param user_id: id of user - :param group_id: id of group to add to - :return: Keycloak server response - """ - - params_path = {"realm-name": self.realm_name, "id": user_id, "group-id": group_id} - data_raw = self.connection.raw_put(URL_ADMIN_USER_GROUP.format(**params_path), data=None) - return raise_error_from_response(data_raw, KeycloakGetError, expected_code=204) - - def group_user_remove(self, user_id, group_id): - """ - Remove user from group (user_id and group_id) - - :param group_id: id of group - :param user_id: id of user - :param group_id: id of group to add to - :return: Keycloak server response - """ - - params_path = {"realm-name": self.realm_name, "id": user_id, "group-id": group_id} - data_raw = self.connection.raw_delete(URL_ADMIN_USER_GROUP.format(**params_path)) - return raise_error_from_response(data_raw, KeycloakGetError, expected_code=204) - - def delete_group(self, group_id): - """ - Deletes a group in the Realm - - :param group_id: id of group to delete - :return: Keycloak server response - """ - - params_path = {"realm-name": self.realm_name, "id": group_id} - data_raw = self.connection.raw_delete(URL_ADMIN_GROUP.format(**params_path)) - return raise_error_from_response(data_raw, KeycloakGetError, expected_code=204) - - def get_clients(self): - """ - Get clients belonging to the realm Returns a list of clients belonging to the realm - - ClientRepresentation - http://www.keycloak.org/docs-api/3.3/rest-api/index.html#_clientrepresentation - - :return: Keycloak server response (ClientRepresentation) - """ - - params_path = {"realm-name": self.realm_name} - data_raw = self.connection.raw_get(URL_ADMIN_CLIENTS.format(**params_path)) - - return raise_error_from_response(data_raw, KeycloakGetError) - - def get_client(self, client_id): - """ - Get representation of the client - - ClientRepresentation - http://www.keycloak.org/docs-api/3.3/rest-api/index.html#_clientrepresentation - - :param client_id: id of client (not client-id) - :return: Keycloak server response (ClientRepresentation) - """ - - params_path = {"realm-name": self.realm_name, "id": client_id} - data_raw = self.connection.raw_get(URL_ADMIN_CLIENT.format(**params_path)) - return raise_error_from_response(data_raw, KeycloakGetError) - - def get_client_id(self, client_name): - """ - Get internal keycloak client id from client-id. - This is required for further actions against this client. - - :param client_name: name in ClientRepresentation - http://www.keycloak.org/docs-api/3.3/rest-api/index.html#_clientrepresentation - :return: client_id (uuid as string) - """ - - clients = self.get_clients() - - for client in clients: - if client_name == client['name']: - return client["id"] - - return None - - def create_client(self, payload): - """ - Create a client - - ClientRepresentation: http://www.keycloak.org/docs-api/3.3/rest-api/index.html#_clientrepresentation - - :param payload: ClientRepresentation - :return: Keycloak server response (UserRepresentation) - """ - - params_path = {"realm-name": self.realm_name} - data_raw = self.connection.raw_post(URL_ADMIN_CLIENTS.format(**params_path), - data=json.dumps(payload)) - return raise_error_from_response(data_raw, KeycloakGetError, expected_code=201) - - def delete_client(self, client_id): - """ - Get representation of the client - - ClientRepresentation - http://www.keycloak.org/docs-api/3.3/rest-api/index.html#_clientrepresentation - - :param client_id: keycloak client id (not oauth client-id) - :return: Keycloak server response (ClientRepresentation) - """ - - params_path = {"realm-name": self.realm_name, "id": client_id} - data_raw = self.connection.raw_delete(URL_ADMIN_CLIENT.format(**params_path)) - return raise_error_from_response(data_raw, KeycloakGetError, expected_code=204) - - def get_realm_roles(self): - """ - Get all roles for the realm or client - - RoleRepresentation - http://www.keycloak.org/docs-api/3.3/rest-api/index.html#_rolerepresentation - - :return: Keycloak server response (RoleRepresentation) - """ - - params_path = {"realm-name": self.realm_name} - data_raw = self.connection.raw_get(URL_ADMIN_REALM_ROLES.format(**params_path)) - return raise_error_from_response(data_raw, KeycloakGetError) - - def get_client_roles(self, client_id): - """ - Get all roles for the client - - :param client_id: id of client (not client-id) - - RoleRepresentation - http://www.keycloak.org/docs-api/3.3/rest-api/index.html#_rolerepresentation - - :return: Keycloak server response (RoleRepresentation) - """ - - params_path = {"realm-name": self.realm_name, "id": client_id} - data_raw = self.connection.raw_get(URL_ADMIN_CLIENT_ROLES.format(**params_path)) - return raise_error_from_response(data_raw, KeycloakGetError) - - def get_client_role(self, client_id, role_name): - """ - Get client role id by name - This is required for further actions with this role. - - :param client_id: id of client (not client-id) - :param role_name: role’s name (not id!) - - RoleRepresentation - http://www.keycloak.org/docs-api/3.3/rest-api/index.html#_rolerepresentation - - :return: role_id - """ - params_path = {"realm-name": self.realm_name, "id": client_id, "role-name": role_name} - data_raw = self.connection.raw_get(URL_ADMIN_CLIENT_ROLE.format(**params_path)) - return raise_error_from_response(data_raw, KeycloakGetError) - - def get_client_role_id(self, client_id, role_name): - """ - Warning: Deprecated - - Get client role id by name - This is required for further actions with this role. - - :param client_id: id of client (not client-id) - :param role_name: role’s name (not id!) - - RoleRepresentation - http://www.keycloak.org/docs-api/3.3/rest-api/index.html#_rolerepresentation - - :return: role_id - """ - role = self.get_client_role(client_id, role_name) - return role.get("id") - - def create_client_role(self, payload): - """ - Create a client role - - RoleRepresentation - http://www.keycloak.org/docs-api/3.3/rest-api/index.html#_rolerepresentation - - :param payload: id of client (not client-id), role_name: name of role - :return: Keycloak server response (RoleRepresentation) - """ - - params_path = {"realm-name": self.realm_name, "id": self.client_id} - data_raw = self.connection.raw_post(URL_ADMIN_CLIENT_ROLES.format(**params_path), - data=json.dumps(payload)) - return raise_error_from_response(data_raw, KeycloakGetError, expected_code=201) - - def delete_client_role(self, role_name): - """ - Create a client role - - RoleRepresentation - http://www.keycloak.org/docs-api/3.3/rest-api/index.html#_rolerepresentation - - :param role_name: role’s name (not id!) - """ - params_path = {"realm-name": self.realm_name, "id": self.client_id, "role-name": role_name} - data_raw = self.connection.raw_delete(URL_ADMIN_CLIENT_ROLE.format(**params_path)) - return raise_error_from_response(data_raw, KeycloakGetError, expected_code=204) - - def assign_client_role(self, user_id, client_id, roles): - """ - Assign a client role to a user - - :param client_id: id of client (not client-id) - :param user_id: id of user - :param client_id: id of client containing role, - :param roles: roles list or role (use RoleRepresentation) - :return Keycloak server response - """ - - payload = roles if isinstance(roles, list) else [roles] - params_path = {"realm-name": self.realm_name, "id": user_id, "client-id": client_id} - data_raw = self.connection.raw_post(URL_ADMIN_USER_CLIENT_ROLES.format(**params_path), - data=json.dumps(payload)) - return raise_error_from_response(data_raw, KeycloakGetError, expected_code=204) - - def sync_users(self, storage_id, action): - """ - Function to trigger user sync from provider - - :param storage_id: - :param action: - :return: - """ - data = {'action': action} - params_query = {"action": action} - - params_path = {"realm-name": self.realm_name, "id": storage_id} - data_raw = self.connection.raw_post(URL_ADMIN_USER_STORAGE.format(**params_path), - data=json.dumps(data), **params_query) - return raise_error_from_response(data_raw, KeycloakGetError) - - def import_realm(self, payload): - """ - Imports a realm from a full representation of that realm - - Realmrepresentation - http://www.keycloak.org/docs-api/2.5/rest-api/index.html#_import_a_realm - - :param payload: Realmrepresentation - - :return: Realmrepresentation - """ - data_raw = self.connection.raw_post(URL_ADMIN_REALM, - data = json.dumps(payload)) - return raise_error_from_response(data_raw, KeycloakGetError, expected_code=201) \ No newline at end of file diff --git a/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/keycloak_main.py b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/keycloak_main.py deleted file mode 100644 index bb859c405d..0000000000 --- a/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/keycloak_main.py +++ /dev/null @@ -1,87 +0,0 @@ -import json - -from keycloak import KeycloakOpenID -from keycloak import KeycloakAdmin -import urllib2, argparse, json - -# Import realm -def keycloak_import_realm(keycloak_realm_file): - data = json.load(open(keycloak_realm_file)) - realm_import = keycloak_admin.import_realm(data) - -# Add user and set password -def keycloak_create_user(email, username, firstName, lastName, password): - new_user = keycloak_admin.create_user({"email": email, - "username": username, - "emailVerified": True, - "enabled": True, - "firstName": firstName, - "lastName": lastName, - "credentials": [{"value": "12345","type": password}], - "realmRoles": ["user_default"]}) - -# Create the user and assign the role to access the user management API -def update_user_roles(config): - realm_json = json.load(open(config['keycloak_realm_json_file_path'])) - - # Get the id of realm-management - for client in realm_json['clients']: - if config['clientId'] == client['clientId']: - client_id = client["id"] - break - - user = keycloak_admin.get_users({"username":config['keycloak_api_management_username']}) - user_id = user[0]['id'] - - # Read the role from file - with open(config['keycloak_user_manager_roles_json_file_path'], 'r') as data_file: - json_data = data_file.read() - - roles = json.loads(json_data) - - # Get only client roles - clientRoles = roles[config['clientId']] - - keycloak_admin.assign_client_role(user_id, client_id, clientRoles) - -if __name__ == "__main__": - parser = argparse.ArgumentParser(description='Configure keycloak user apis') - parser.add_argument('keycloak_bootstrap_config', help='configuration json file that is needed for keycloak bootstrap') - args = parser.parse_args() - - with open(args.keycloak_bootstrap_config) as keycloak_bootstrap_config: - config = json.load(keycloak_bootstrap_config) - - try: - # Get access token - keycloak_admin = KeycloakAdmin(server_url=config['keycloak_auth_server_url'], - username=config['keycloak_management_user'], - password=config['keycloak_management_password'], - realm_name="master", - client_id='admin-cli', - verify=False) - # Import realm - keycloak_import_realm(config['keycloak_realm_json_file_path']) - - # Set realm name to sunbird - keycloak_admin.realm_name = config['keycloak_realm'] - - # Add user for user api - keycloak_create_user(email=config['keycloak_api_management_user_email'], - username=config['keycloak_api_management_username'], - firstName=config['keycloak_api_management_user_first_name'], - lastName=config['keycloak_api_management_user_last_name'], - password=config['keycloak_api_management_user_password']) - - # Update user roles for access user management API's - config['clientId'] = "realm-management" - update_user_roles(config) - - # Update user roles for SSO - config['clientId'] = "admin-cli" - update_user_roles(config) - - except urllib2.HTTPError as e: - error_message = e.read() - print error_message - raise diff --git a/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/keycloak_openid.py b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/keycloak_openid.py deleted file mode 100644 index f1dcde44e3..0000000000 --- a/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/keycloak_openid.py +++ /dev/null @@ -1,390 +0,0 @@ -# -*- coding: utf-8 -*- -# -# Copyright (C) 2017 Marcos Pereira -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Lesser General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public License -# along with this program. If not, see . - -from .authorization import Authorization -from .exceptions import raise_error_from_response, KeycloakGetError, \ - KeycloakRPTNotFound, KeycloakAuthorizationConfigError, KeycloakInvalidTokenError -from .urls_patterns import ( - URL_TOKEN, - URL_USERINFO, - URL_WELL_KNOWN, - URL_LOGOUT, - URL_CERTS, - URL_ENTITLEMENT, - URL_INTROSPECT -) -from .connection import ConnectionManager -from jose import jwt -import json - - -class KeycloakOpenID: - - def __init__(self, server_url, realm_name, client_id, client_secret_key=None, verify=True): - """ - - :param server_url: Keycloak server url - :param client_id: client id - :param realm_name: realm name - :param client_secret_key: client secret key - :param verify: True if want check connection SSL - """ - self._client_id = client_id - self._client_secret_key = client_secret_key - self._realm_name = realm_name - self._connection = ConnectionManager(base_url=server_url, - headers={}, - timeout=60, - verify=verify) - - self._authorization = Authorization() - - @property - def client_id(self): - return self._client_id - - @client_id.setter - def client_id(self, value): - self._client_id = value - - @property - def client_secret_key(self): - return self._client_secret_key - - @client_secret_key.setter - def client_secret_key(self, value): - self._client_secret_key = value - - @property - def realm_name(self): - return self._realm_name - - @realm_name.setter - def realm_name(self, value): - self._realm_name = value - - @property - def connection(self): - return self._connection - - @connection.setter - def connection(self, value): - self._connection = value - - @property - def authorization(self): - return self._authorization - - @authorization.setter - def authorization(self, value): - self._authorization = value - - def _add_secret_key(self, payload): - """ - Add secret key if exist. - - :param payload: - :return: - """ - if self.client_secret_key: - payload.update({"client_secret": self.client_secret_key}) - - return payload - - def _build_name_role(self, role): - """ - - :param role: - :return: - """ - return self.client_id + "/" + role - - def _token_info(self, token, method_token_info, **kwargs): - """ - - :param token: - :param method_token_info: - :param kwargs: - :return: - """ - if method_token_info == 'introspect': - token_info = self.introspect(token) - else: - token_info = self.decode_token(token, **kwargs) - - return token_info - - def well_know(self): - """ The most important endpoint to understand is the well-known configuration - endpoint. It lists endpoints and other configuration options relevant to - the OpenID Connect implementation in Keycloak. - - :return It lists endpoints and other configuration options relevant. - """ - - params_path = {"realm-name": self.realm_name} - data_raw = self.connection.raw_get(URL_WELL_KNOWN.format(**params_path)) - - return raise_error_from_response(data_raw, KeycloakGetError) - - def auth_url(self, redirect_uri): - """ - - http://openid.net/specs/openid-connect-core-1_0.html#AuthorizationEndpoint - - :return: - """ - return NotImplemented - - def token(self, username, password, grant_type=["password"]): - """ - The token endpoint is used to obtain tokens. Tokens can either be obtained by - exchanging an authorization code or by supplying credentials directly depending on - what flow is used. The token endpoint is also used to obtain new access tokens - when they expire. - - http://openid.net/specs/openid-connect-core-1_0.html#TokenEndpoint - - :param username: - :param password: - :param grant_type: - :return: - """ - params_path = {"realm-name": self.realm_name} - payload = {"username": username, "password": password, - "client_id": self.client_id, "grant_type": grant_type} - - payload = self._add_secret_key(payload) - data_raw = self.connection.raw_post(URL_TOKEN.format(**params_path), - data=payload) - return raise_error_from_response(data_raw, KeycloakGetError) - - def refresh_token(self, refresh_token, grant_type=["refresh_token"]): - """ - The token endpoint is used to obtain tokens. Tokens can either be obtained by - exchanging an authorization code or by supplying credentials directly depending on - what flow is used. The token endpoint is also used to obtain new access tokens - when they expire. - - http://openid.net/specs/openid-connect-core-1_0.html#TokenEndpoint - - :param refresh_token: - :param grant_type: - :return: - """ - params_path = {"realm-name": self.realm_name} - payload = {"client_id": self.client_id, "grant_type": grant_type, "refresh_token": refresh_token} - payload = self._add_secret_key(payload) - data_raw = self.connection.raw_post(URL_TOKEN.format(**params_path), - data=payload) - return raise_error_from_response(data_raw, KeycloakGetError) - - def userinfo(self, token): - """ - The userinfo endpoint returns standard claims about the authenticated user, - and is protected by a bearer token. - - http://openid.net/specs/openid-connect-core-1_0.html#UserInfo - - :param token: - :return: - """ - - self.connection.add_param_headers("Authorization", "Bearer " + token) - params_path = {"realm-name": self.realm_name} - - data_raw = self.connection.raw_get(URL_USERINFO.format(**params_path)) - - return raise_error_from_response(data_raw, KeycloakGetError) - - def logout(self, refresh_token): - """ - The logout endpoint logs out the authenticated user. - :param refresh_token: - :return: - """ - params_path = {"realm-name": self.realm_name} - payload = {"client_id": self.client_id, "refresh_token": refresh_token} - - payload = self._add_secret_key(payload) - data_raw = self.connection.raw_post(URL_LOGOUT.format(**params_path), - data=payload) - - return raise_error_from_response(data_raw, KeycloakGetError, expected_code=204) - - def certs(self): - """ - The certificate endpoint returns the public keys enabled by the realm, encoded as a - JSON Web Key (JWK). Depending on the realm settings there can be one or more keys enabled - for verifying tokens. - - https://tools.ietf.org/html/rfc7517 - - :return: - """ - params_path = {"realm-name": self.realm_name} - data_raw = self.connection.raw_get(URL_CERTS.format(**params_path)) - return raise_error_from_response(data_raw, KeycloakGetError) - - def entitlement(self, token, resource_server_id): - """ - Client applications can use a specific endpoint to obtain a special security token - called a requesting party token (RPT). This token consists of all the entitlements - (or permissions) for a user as a result of the evaluation of the permissions and authorization - policies associated with the resources being requested. With an RPT, client applications can - gain access to protected resources at the resource server. - - :return: - """ - self.connection.add_param_headers("Authorization", "Bearer " + token) - params_path = {"realm-name": self.realm_name, "resource-server-id": resource_server_id} - data_raw = self.connection.raw_get(URL_ENTITLEMENT.format(**params_path)) - - return raise_error_from_response(data_raw, KeycloakGetError) - - def introspect(self, token, rpt=None, token_type_hint=None): - """ - The introspection endpoint is used to retrieve the active state of a token. It is can only be - invoked by confidential clients. - - https://tools.ietf.org/html/rfc7662 - - :param token: - :param rpt: - :param token_type_hint: - - :return: - """ - params_path = {"realm-name": self.realm_name} - - payload = {"client_id": self.client_id, "token": token} - - if token_type_hint == 'requesting_party_token': - if rpt: - payload.update({"token": rpt, "token_type_hint": token_type_hint}) - self.connection.add_param_headers("Authorization", "Bearer " + token) - else: - raise KeycloakRPTNotFound("Can't found RPT.") - - payload = self._add_secret_key(payload) - - data_raw = self.connection.raw_post(URL_INTROSPECT.format(**params_path), - data=payload) - - return raise_error_from_response(data_raw, KeycloakGetError) - - def decode_token(self, token, key, algorithms=['RS256'], **kwargs): - """ - A JSON Web Key (JWK) is a JavaScript Object Notation (JSON) data - structure that represents a cryptographic key. This specification - also defines a JWK Set JSON data structure that represents a set of - JWKs. Cryptographic algorithms and identifiers for use with this - specification are described in the separate JSON Web Algorithms (JWA) - specification and IANA registries established by that specification. - - https://tools.ietf.org/html/rfc7517 - - :param token: - :param key: - :param algorithms: - :return: - """ - - return jwt.decode(token, key, algorithms=algorithms, - audience=self.client_id, **kwargs) - - def load_authorization_config(self, path): - """ - Load Keycloak settings (authorization) - - :param path: settings file (json) - :return: - """ - authorization_file = open(path, 'r') - authorization_json = json.loads(authorization_file.read()) - self.authorization.load_config(authorization_json) - authorization_file.close() - - def get_policies(self, token, method_token_info='introspect', **kwargs): - """ - Get policies by user token - - :param token: user token - :return: policies list - """ - - if not self.authorization.policies: - raise KeycloakAuthorizationConfigError( - "Keycloak settings not found. Load Authorization Keycloak settings." - ) - - token_info = self._token_info(token, method_token_info, **kwargs) - - if method_token_info == 'introspect' and not token_info['active']: - raise KeycloakInvalidTokenError( - "Token expired or invalid." - ) - - user_resources = token_info['resource_access'].get(self.client_id) - - if not user_resources: - return None - - policies = [] - - for policy_name, policy in self.authorization.policies.items(): - for role in user_resources['roles']: - if self._build_name_role(role) in policy.roles: - policies.append(policy) - - return list(set(policies)) - - def get_permissions(self, token, method_token_info='introspect', **kwargs): - """ - Get permission by user token - - :param token: user token - :param method_token_info: Decode token method - :param kwargs: parameters for decode - :return: permissions list - """ - - if not self.authorization.policies: - raise KeycloakAuthorizationConfigError( - "Keycloak settings not found. Load Authorization Keycloak settings." - ) - - token_info = self._token_info(token, method_token_info, **kwargs) - - if method_token_info == 'introspect' and not token_info['active']: - raise KeycloakInvalidTokenError( - "Token expired or invalid." - ) - - user_resources = token_info['resource_access'].get(self.client_id) - - if not user_resources: - return None - - permissions = [] - - for policy_name, policy in self.authorization.policies.items(): - for role in user_resources['roles']: - if self._build_name_role(role) in policy.roles: - permissions += policy.permissions - - return list(set(permissions)) diff --git a/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/python_keycloak.egg-info/PKG-INFO b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/python_keycloak.egg-info/PKG-INFO deleted file mode 100644 index e98a1ee3c0..0000000000 --- a/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/python_keycloak.egg-info/PKG-INFO +++ /dev/null @@ -1,18 +0,0 @@ -Metadata-Version: 1.1 -Name: python-keycloak -Version: 0.12.0 -Summary: python-keycloak is a Python package providing access to the Keycloak API. -Home-page: https://bitbucket.org/agriness/python-keycloak -Author: Marcos Pereira -Author-email: marcospereira.mpj@gmail.com -License: GNU General Public License - V3 -Description: UNKNOWN -Keywords: keycloak openid -Platform: UNKNOWN -Classifier: Programming Language :: Python :: 3 -Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3) -Classifier: Development Status :: 3 - Alpha -Classifier: Operating System :: MacOS -Classifier: Operating System :: Unix -Classifier: Operating System :: Microsoft :: Windows -Classifier: Topic :: Utilities diff --git a/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/python_keycloak.egg-info/SOURCES.txt b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/python_keycloak.egg-info/SOURCES.txt deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/python_keycloak.egg-info/dependency_links.txt b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/python_keycloak.egg-info/dependency_links.txt deleted file mode 100644 index 8b13789179..0000000000 --- a/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/python_keycloak.egg-info/dependency_links.txt +++ /dev/null @@ -1 +0,0 @@ - diff --git a/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/python_keycloak.egg-info/requires.txt b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/python_keycloak.egg-info/requires.txt deleted file mode 100644 index d6eafdf657..0000000000 --- a/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/python_keycloak.egg-info/requires.txt +++ /dev/null @@ -1,3 +0,0 @@ -requests==2.18.4 -httmock==1.2.5 -python-jose==1.4.0 diff --git a/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/python_keycloak.egg-info/top_level.txt b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/python_keycloak.egg-info/top_level.txt deleted file mode 100644 index 26c07c1da4..0000000000 --- a/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/python_keycloak.egg-info/top_level.txt +++ /dev/null @@ -1 +0,0 @@ -keycloak diff --git a/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/tests/__init__.py b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/tests/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/tests/test_connection.py b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/tests/test_connection.py deleted file mode 100644 index 97ec1792df..0000000000 --- a/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/tests/test_connection.py +++ /dev/null @@ -1,148 +0,0 @@ -# -*- coding: utf-8 -*- -# -# Copyright (C) 2017 Marcos Pereira -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Lesser General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public License -# along with this program. If not, see . - -from httmock import urlmatch, response, HTTMock, all_requests - -from ..connection import ConnectionManager - - -try: - import unittest -except ImportError: - import unittest2 as unittest - - -class TestConnection(unittest.TestCase): - - def setUp(self): - self._conn = ConnectionManager( - base_url="http://localhost:8080/", - headers={}, - timeout=60) - - @all_requests - def response_content_success(self, url, request): - headers = {'content-type': 'application/json'} - content = b'response_ok' - return response(200, content, headers, None, 5, request) - - def test_raw_get(self): - with HTTMock(self.response_content_success): - resp = self._conn.raw_get("/known_path") - self.assertEqual(resp.content, b'response_ok') - self.assertEqual(resp.status_code, 200) - - def test_raw_post(self): - - @urlmatch(path="/known_path", method="post") - def response_post_success(url, request): - headers = {'content-type': 'application/json'} - content = 'response'.encode("utf-8") - return response(201, content, headers, None, 5, request) - - with HTTMock(response_post_success): - resp = self._conn.raw_post("/known_path", - {'field': 'value'}) - self.assertEqual(resp.content, b'response') - self.assertEqual(resp.status_code, 201) - - def test_raw_put(self): - @urlmatch(netloc="localhost", path="/known_path", method="put") - def response_put_success(url, request): - headers = {'content-type': 'application/json'} - content = 'response'.encode("utf-8") - return response(200, content, headers, None, 5, request) - - with HTTMock(response_put_success): - resp = self._conn.raw_put("/known_path", - {'field': 'value'}) - self.assertEqual(resp.content, b'response') - self.assertEqual(resp.status_code, 200) - - def test_raw_get_fail(self): - - @urlmatch(netloc="localhost", path="/known_path", method="get") - def response_get_fail(url, request): - headers = {'content-type': 'application/json'} - content = "404 page not found".encode("utf-8") - return response(404, content, headers, None, 5, request) - - with HTTMock(response_get_fail): - resp = self._conn.raw_get("/known_path") - - self.assertEqual(resp.content, b"404 page not found") - self.assertEqual(resp.status_code, 404) - - def test_raw_post_fail(self): - - @urlmatch(netloc="localhost", path="/known_path", method="post") - def response_post_fail(url, request): - headers = {'content-type': 'application/json'} - content = str(["Start can't be blank"]).encode("utf-8") - return response(404, content, headers, None, 5, request) - - with HTTMock(response_post_fail): - resp = self._conn.raw_post("/known_path", - {'field': 'value'}) - self.assertEqual(resp.content, str(["Start can't be blank"]).encode("utf-8")) - self.assertEqual(resp.status_code, 404) - - def test_raw_put_fail(self): - - @urlmatch(netloc="localhost", path="/known_path", method="put") - def response_put_fail(url, request): - headers = {'content-type': 'application/json'} - content = str(["Start can't be blank"]).encode("utf-8") - return response(404, content, headers, None, 5, request) - - with HTTMock(response_put_fail): - resp = self._conn.raw_put("/known_path", - {'field': 'value'}) - self.assertEqual(resp.content, str(["Start can't be blank"]).encode("utf-8")) - self.assertEqual(resp.status_code, 404) - - def test_add_param_headers(self): - self._conn.add_param_headers("test", "value") - self.assertEqual(self._conn.headers, - {"test": "value"}) - - def test_del_param_headers(self): - self._conn.add_param_headers("test", "value") - self._conn.del_param_headers("test") - self.assertEqual(self._conn.headers, {}) - - def test_clean_param_headers(self): - self._conn.add_param_headers("test", "value") - self.assertEqual(self._conn.headers, - {"test": "value"}) - self._conn.clean_headers() - self.assertEqual(self._conn.headers, {}) - - def test_exist_param_headers(self): - self._conn.add_param_headers("test", "value") - self.assertTrue(self._conn.exist_param_headers("test")) - self.assertFalse(self._conn.exist_param_headers("test_no")) - - def test_get_param_headers(self): - self._conn.add_param_headers("test", "value") - self.assertTrue(self._conn.exist_param_headers("test")) - self.assertFalse(self._conn.exist_param_headers("test_no")) - - def test_get_headers(self): - self._conn.add_param_headers("test", "value") - self.assertEqual(self._conn.headers, - {"test": "value"}) diff --git a/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/urls_patterns.py b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/urls_patterns.py deleted file mode 100644 index b57212950b..0000000000 --- a/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/keycloak/urls_patterns.py +++ /dev/null @@ -1,54 +0,0 @@ -# -*- coding: utf-8 -*- -# -# Copyright (C) 2017 Marcos Pereira -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Lesser General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public License -# along with this program. If not, see . - -# OPENID URLS -URL_WELL_KNOWN = "realms/{realm-name}/.well-known/openid-configuration" -URL_TOKEN = "realms/{realm-name}/protocol/openid-connect/token" -URL_USERINFO = "realms/{realm-name}/protocol/openid-connect/userinfo" -URL_LOGOUT = "realms/{realm-name}/protocol/openid-connect/logout" -URL_CERTS = "realms/{realm-name}/protocol/openid-connect/certs" -URL_INTROSPECT = "realms/{realm-name}/protocol/openid-connect/token/introspect" -URL_ENTITLEMENT = "realms/{realm-name}/authz/entitlement/{resource-server-id}" - -# ADMIN URLS -URL_ADMIN_USERS = "admin/realms/{realm-name}/users" -URL_ADMIN_USERS_COUNT = "admin/realms/{realm-name}/users/count" -URL_ADMIN_USER = "admin/realms/{realm-name}/users/{id}" -URL_ADMIN_USER_CONSENTS = "admin/realms/{realm-name}/users/{id}/consents" -URL_ADMIN_SEND_UPDATE_ACCOUNT = "admin/realms/{realm-name}/users/{id}/execute-actions-email" -URL_ADMIN_SEND_VERIFY_EMAIL = "admin/realms/{realm-name}/users/{id}/send-verify-email" -URL_ADMIN_RESET_PASSWORD = "admin/realms/{realm-name}/users/{id}/reset-password" -URL_ADMIN_GET_SESSIONS = "admin/realms/{realm-name}/users/{id}/sessions" -URL_ADMIN_USER_CLIENT_ROLES = "admin/realms/{realm-name}/users/{id}/role-mappings/clients/{client-id}" -URL_ADMIN_USER_GROUP = "admin/realms/{realm-name}/users/{id}/groups/{group-id}" - -URL_ADMIN_SERVER_INFO = "admin/serverinfo" - -URL_ADMIN_GROUPS = "admin/realms/{realm-name}/groups" -URL_ADMIN_GROUP = "admin/realms/{realm-name}/groups/{id}" -URL_ADMIN_GROUP_CHILD = "admin/realms/{realm-name}/groups/{id}/children" -URL_ADMIN_GROUP_PERMISSIONS = "admin/realms/{realm-name}/groups/{id}/management/permissions" - -URL_ADMIN_CLIENTS = "admin/realms/{realm-name}/clients" -URL_ADMIN_CLIENT = "admin/realms/{realm-name}/clients/{id}" -URL_ADMIN_CLIENT_ROLES = "admin/realms/{realm-name}/clients/{id}/roles" -URL_ADMIN_CLIENT_ROLE = "admin/realms/{realm-name}/clients/{id}/roles/{role-name}" - -URL_ADMIN_REALM_ROLES = "admin/realms/{realm-name}/roles" - -URL_ADMIN_USER_STORAGE = "admin/realms/{realm-name}/user-storage/{id}/sync" -URL_ADMIN_REALM = "admin/realms" diff --git a/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/python_keycloak.egg-info/PKG-INFO b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/python_keycloak.egg-info/PKG-INFO deleted file mode 100644 index e98a1ee3c0..0000000000 --- a/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/python_keycloak.egg-info/PKG-INFO +++ /dev/null @@ -1,18 +0,0 @@ -Metadata-Version: 1.1 -Name: python-keycloak -Version: 0.12.0 -Summary: python-keycloak is a Python package providing access to the Keycloak API. -Home-page: https://bitbucket.org/agriness/python-keycloak -Author: Marcos Pereira -Author-email: marcospereira.mpj@gmail.com -License: GNU General Public License - V3 -Description: UNKNOWN -Keywords: keycloak openid -Platform: UNKNOWN -Classifier: Programming Language :: Python :: 3 -Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3) -Classifier: Development Status :: 3 - Alpha -Classifier: Operating System :: MacOS -Classifier: Operating System :: Unix -Classifier: Operating System :: Microsoft :: Windows -Classifier: Topic :: Utilities diff --git a/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/python_keycloak.egg-info/SOURCES.txt b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/python_keycloak.egg-info/SOURCES.txt deleted file mode 100644 index d948eb4a5d..0000000000 --- a/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/python_keycloak.egg-info/SOURCES.txt +++ /dev/null @@ -1,21 +0,0 @@ -README.md -setup.cfg -setup.py -keycloak/__init__.py -keycloak/connection.py -keycloak/exceptions.py -keycloak/keycloak_admin.py -keycloak/keycloak_main.py -keycloak/keycloak_openid.py -keycloak/urls_patterns.py -keycloak/authorization/__init__.py -keycloak/authorization/permission.py -keycloak/authorization/policy.py -keycloak/authorization/role.py -keycloak/tests/__init__.py -keycloak/tests/test_connection.py -python_keycloak.egg-info/PKG-INFO -python_keycloak.egg-info/SOURCES.txt -python_keycloak.egg-info/dependency_links.txt -python_keycloak.egg-info/requires.txt -python_keycloak.egg-info/top_level.txt \ No newline at end of file diff --git a/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/python_keycloak.egg-info/dependency_links.txt b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/python_keycloak.egg-info/dependency_links.txt deleted file mode 100644 index 8b13789179..0000000000 --- a/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/python_keycloak.egg-info/dependency_links.txt +++ /dev/null @@ -1 +0,0 @@ - diff --git a/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/python_keycloak.egg-info/requires.txt b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/python_keycloak.egg-info/requires.txt deleted file mode 100644 index d6eafdf657..0000000000 --- a/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/python_keycloak.egg-info/requires.txt +++ /dev/null @@ -1,3 +0,0 @@ -requests==2.18.4 -httmock==1.2.5 -python-jose==1.4.0 diff --git a/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/python_keycloak.egg-info/top_level.txt b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/python_keycloak.egg-info/top_level.txt deleted file mode 100644 index 26c07c1da4..0000000000 --- a/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/python_keycloak.egg-info/top_level.txt +++ /dev/null @@ -1 +0,0 @@ -keycloak diff --git a/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/roles.json b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/roles.json deleted file mode 100644 index cc5e0b3241..0000000000 --- a/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/roles.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "realm-management" : [ - { - "id": "3ff462fc-b33c-431a-b54b-861c3298d910", - "name": "manage-users", - "description": "${role_manage-users}", - "scopeParamRequired": false, - "composite": false,"clientRole": true, - "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" - }, - { - "id": "57118202-c5e5-4c49-829b-c2ed796bfdea", - "name": "query-users", - "description": "${role_query-users}", - "scopeParamRequired": false, - "composite": false, - "clientRole": true, - "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" - }, - { - "id":"46019462-3dc8-46a8-9786-ffcbad293f43", - "name":"view-users", - "description":"${role_view-users}", - "scopeParamRequired":false, - "composite":true, - "clientRole":true, - "containerId":"b2f45201-1362-4b10-83c3-207d470f44bf" - } - ], - "admin-cli": [ - { - "id":"30ab6b4f-b17c-4fff-a5fa-1181686bb409", - "name":"admin", - "description":"admin role", - "scopeParamRequired":false, - "composite":true, - "clientRole":true, - "containerId":"8891d8e9-35e6-4a1c-b32b-027be03b0f24" - } - ] -} diff --git a/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/setup.cfg b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/setup.cfg deleted file mode 100644 index 9f88734b50..0000000000 --- a/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/setup.cfg +++ /dev/null @@ -1,7 +0,0 @@ -[metadata] -description-file = README.md - -[egg_info] -tag_build = -tag_date = 0 - diff --git a/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/setup.py b/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/setup.py deleted file mode 100644 index bf6a505f0a..0000000000 --- a/ansible/roles/sunbird-auth-deploy/files/python-keycloak-0.12.0/setup.py +++ /dev/null @@ -1,25 +0,0 @@ -# -*- coding: utf-8 -*- - -from setuptools import setup - -setup( - name='python-keycloak', - version='0.12.0', - url='https://bitbucket.org/agriness/python-keycloak', - license='GNU General Public License - V3', - author='Marcos Pereira', - author_email='marcospereira.mpj@gmail.com', - keywords='keycloak openid', - description=u'python-keycloak is a Python package providing access to the Keycloak API.', - packages=['keycloak', 'keycloak.authorization', 'keycloak.tests'], - install_requires=['requests==2.18.4', 'httmock==1.2.5', 'python-jose==1.4.0'], - classifiers=[ - 'Programming Language :: Python :: 3', - 'License :: OSI Approved :: GNU General Public License v3 (GPLv3)', - 'Development Status :: 3 - Alpha', - 'Operating System :: MacOS', - 'Operating System :: Unix', - 'Operating System :: Microsoft :: Windows', - 'Topic :: Utilities' - ] -) diff --git a/ansible/roles/sunbird-auth-deploy/tasks/bootstrap.yml b/ansible/roles/sunbird-auth-deploy/tasks/bootstrap.yml deleted file mode 100644 index 9389b39bdb..0000000000 --- a/ansible/roles/sunbird-auth-deploy/tasks/bootstrap.yml +++ /dev/null @@ -1,77 +0,0 @@ -- name: start service - become: yes - command: /etc/init.d/keycloak start - poll: 5 - async: 5 - ignore_errors: yes - -- name: Create admin user - become_user: "{{ wildfly_user }}" - command: "{{ wildfly_dir }}/bin/add-user-keycloak.sh -r master -u {{ keycloak_management_user }} -p {{ keycloak_management_password }}" - when: keycloak_management_user is defined and - keycloak_management_password is defined - ignore_errors: yes - -- name: status service - become: yes - command: /etc/init.d/keycloak status - register: keycloak - poll: 5 - async: 10 - -- name: stop service - become: yes - command: /etc/init.d/keycloak stop && Pkill keycloak - when: "keycloak.stdout.find('running') != -1" - poll: 5 - async: 10 - ignore_errors: yes - -- name: start service - become: yes - command: /etc/init.d/keycloak start - poll: 5 - async: 5 - -- name: Waiting Until Keycloak is fully functional - wait_for: - host: "{{ inventory_hostname }}" - port: 8080 - delay: 5 - -- name: Install dependencies for keycloak - apt: - name: "{{item}}" - update_cache: yes - with_items: - - python-pip - - python-setuptools - -- name: Copying python libraries - copy: src={{ role_path }}/files/python-keycloak-0.12.0 dest=/tmp/ - -- name: Initialize python library to run keycloak bootstrap script - shell: cd /tmp/python-keycloak-0.12.0 && python setup.py install - -- name: Save keycalok vars to json - template: src="keycloak-bootstrap.conf.j2" dest="/tmp/keycloak-bootstrap.conf.json" mode="0644" - -- name: Copy realm json file to tmp location - template: src="keycloak-realm.j2" dest="/tmp/keycloak-realm.json" mode="0644" - -- name: Copy user manager roles file to tmp location - copy: src="files/python-keycloak-0.12.0/roles.json" dest="/tmp/roles.json" mode="0644" - -- name: Pausing for 100 seconds sometime for keycloak to run completely - pause: - seconds: 10 - -- name: Copy the keycloak bootstrap script - copy: src={{ role_path }}/files/python-keycloak-0.12.0/keycloak dest=/tmp - -- name: Run the keycloak bootstrap script - shell: cd /tmp/keycloak/ && python keycloak_main.py /tmp/keycloak-bootstrap.conf.json - register: out - until: '"404" not in out.stderr' - retries: 2 - delay: 10 diff --git a/ansible/roles/sunbird-auth-deploy/tasks/deploy.yml b/ansible/roles/sunbird-auth-deploy/tasks/deploy.yml deleted file mode 100644 index a91a1cb549..0000000000 --- a/ansible/roles/sunbird-auth-deploy/tasks/deploy.yml +++ /dev/null @@ -1,109 +0,0 @@ -- name: Create required directories - file: - path: "{{ item.dest }}" - mode: "{{item.mode}}" - state: directory - with_items: - - { dest: '{{keycloak_home}}/providers', mode: '0755'} - - { dest: '{{keycloak_home}}/modules/system/layers/keycloak/org/postgresql/main', mode: '0755'} - - { dest: '{{keycloak_home}}/themes/{{tenant_name}}/login/messages', mode: '0755'} - - { dest: '{{keycloak_home}}/themes/{{tenant_name}}/login/resources/css/fonts/notosans', mode: '0755'} - - { dest: '{{keycloak_home}}/themes/{{tenant_name}}/login/resources/css/themes/default/assets/fonts', mode: '0755'} - - { dest: '{{keycloak_home}}/themes/{{tenant_name}}/login/resources/img', mode: '0755'} - - { dest: '{{keycloak_home}}/themes/{{tenant_name}}/login/resources/js', mode: '0755'} - - { dest: '{{keycloak_home}}/themes/{{tenant_name}}/email/html', mode: '0755'} - - { dest: '{{keycloak_home}}/themes/{{tenant_name}}/email/messages', mode: '0755'} - - { dest: '{{keycloak_home}}/themes/{{tenant_name}}/email/text', mode: '0755'} - -- name: Copy login theme - copy: src="{{login_theme}}/" dest="{{keycloak_home}}/themes/{{tenant_name}}/login/" force="yes" - -- name: Copy Custom Validation theme html to login theme - copy: src="../../../sunbird-auth/keycloak/sms-provider/templates/" dest="{{keycloak_home}}/themes/{{tenant_name}}/login/" force="yes" - -- name: Copy email theme - copy: src="{{email_theme}}/" dest="{{keycloak_home}}/themes/{{tenant_name}}/email/" force="yes" - -- name: Create directory for sunbird auth package config - file: - path: sunbird_auth_{{sunbird_auth_version}}.config - state: directory - mode: 0755 - -- name: Keycloak configuration XML file - template: - src: "roles/sunbird-auth-deploy/templates/standalone-ha.xml" - dest: "sunbird_auth_{{sunbird_auth_version}}.config/standalone-ha.xml" - mode: 0750 - -- name: Postgresql Configuration- module.xml - template: - src: "roles/sunbird-auth-deploy/templates/module.xml.j2" - dest: "sunbird_auth_{{sunbird_auth_version}}.config/module.xml" - mode: 0750 - -- name: SMS provider configuration file - template: - src: "roles/sunbird-auth-deploy/templates/Msg91Creds.json.j2" - dest: "sunbird_auth_{{sunbird_auth_version}}.config/Msg91Creds.json" - mode: 0755 - when: "{{ msg_91_required|default(false) }}" - ignore_errors: yes - -- name: status service - become: yes - command: /etc/init.d/keycloak status - register: keycloak - poll: 5 - async: 10 - -- name: stop service - become: yes - command: /etc/init.d/keycloak stop && Pkill keycloak - when: "keycloak.stdout.find('running') != -1" - poll: 5 - async: 10 - ignore_errors: yes - -- name: Keycloak configuration XML file - copy: - src: "sunbird_auth_{{sunbird_auth_version}}.config/standalone-ha.xml" - dest: "{{keycloak_home}}/standalone/configuration/standalone-ha.xml" - mode: 0750 - owner: "{{wildfly_user}}" - group: "{{wildfly_group}}" - remote_src: yes - -- name: Postgresql Configuration- module.xml - copy: - src: "sunbird_auth_{{sunbird_auth_version}}.config/module.xml" - dest: "{{keycloak_home}}/modules/system/layers/keycloak/org/postgresql/main/module.xml" - mode: 0750 - owner: "{{wildfly_user}}" - group: "{{wildfly_group}}" - remote_src: yes - -- name: Create a directory for SMS provider configuration - file: - path: "{{keycloak_home}}/bin/sms-provider" - state: directory - mode: 0755 - when: "{{ msg_91_required|default(false) }}" - ignore_errors: yes - -- name: SMS provider configuration file - copy: - src: "sunbird_auth_{{sunbird_auth_version}}.config/Msg91Creds.json" - dest: "{{keycloak_home}}/bin/sms-provider/Msg91Creds.json" - owner: "{{wildfly_user}}" - group: "{{wildfly_group}}" - mode: 0755 - remote_src: yes - when: "{{ msg_91_required|default(false) }}" - ignore_errors: yes - -- name: start service - become: yes - command: /etc/init.d/keycloak start - poll: 5 - async: 5 diff --git a/ansible/roles/sunbird-auth-deploy/tasks/main.yml b/ansible/roles/sunbird-auth-deploy/tasks/main.yml deleted file mode 100644 index 3c5bbefeb3..0000000000 --- a/ansible/roles/sunbird-auth-deploy/tasks/main.yml +++ /dev/null @@ -1,7 +0,0 @@ -- include: deploy.yml - tags: - - deploy - -- include: bootstrap.yml - tags: - - bootstrap diff --git a/ansible/roles/sunbird-auth-deploy/templates/Msg91Creds.json.j2 b/ansible/roles/sunbird-auth-deploy/templates/Msg91Creds.json.j2 deleted file mode 100644 index d584b8be72..0000000000 --- a/ansible/roles/sunbird-auth-deploy/templates/Msg91Creds.json.j2 +++ /dev/null @@ -1,7 +0,0 @@ -{ - "auth_key": "{{vault_auth_key}}", - "sender": "{{vault_sender}}", - "country": "{{vault_country}}", - "route": "{{vault_route}}", - "sms_method_type": "{{vault_sms_method_type}}" -} diff --git a/ansible/roles/sunbird-auth-deploy/templates/keycloak-bootstrap.conf.j2 b/ansible/roles/sunbird-auth-deploy/templates/keycloak-bootstrap.conf.j2 deleted file mode 100644 index 32b567707b..0000000000 --- a/ansible/roles/sunbird-auth-deploy/templates/keycloak-bootstrap.conf.j2 +++ /dev/null @@ -1,13 +0,0 @@ -{ - "keycloak_auth_server_url": "{{ keycloak_auth_server_url }}/", - "keycloak_management_user": "{{ keycloak_management_user }}", - "keycloak_management_password": "{{ keycloak_management_password }}", - "keycloak_realm": "{{ keycloak_realm }}", - "keycloak_realm_json_file_path": "/tmp/keycloak-realm.json", - "keycloak_user_manager_roles_json_file_path": "/tmp/roles.json", - "keycloak_api_management_username": "{{ keycloak_api_management_username }}", - "keycloak_api_management_user_email": "{{ keycloak_api_management_user_email }}", - "keycloak_api_management_user_first_name": "{{ keycloak_api_management_user_first_name }}", - "keycloak_api_management_user_last_name": "{{ keycloak_api_management_user_last_name }}", - "keycloak_api_management_user_password": "{{ keycloak_api_management_user_password }}" -} diff --git a/ansible/roles/sunbird-auth-deploy/templates/keycloak-realm.j2 b/ansible/roles/sunbird-auth-deploy/templates/keycloak-realm.j2 deleted file mode 100644 index a8d199ed53..0000000000 --- a/ansible/roles/sunbird-auth-deploy/templates/keycloak-realm.j2 +++ /dev/null @@ -1,2388 +0,0 @@ -{ - "id": "sunbird", - "realm": "sunbird", - "notBefore": 1548955037, - "revokeRefreshToken": false, - "accessTokenLifespan": 86400, - "accessTokenLifespanForImplicitFlow": 5184000, - "ssoSessionIdleTimeout": 86400, - "ssoSessionMaxLifespan": 86400, - "offlineSessionIdleTimeout": 15552000, - "accessCodeLifespan": 60, - "accessCodeLifespanUserAction": 300, - "accessCodeLifespanLogin": 43200, - "actionTokenGeneratedByAdminLifespan": 43200, - "actionTokenGeneratedByUserLifespan": 300, - "enabled": true, - "sslRequired": {{ '"none"' if proto=='http' else '"external"' }}, - "registrationAllowed": true, - "registrationEmailAsUsername": false, - "rememberMe": true, - "verifyEmail": false, - "loginWithEmailAllowed": true, - "duplicateEmailsAllowed": false, - "resetPasswordAllowed": true, - "editUsernameAllowed": false, - "bruteForceProtected": true, - "permanentLockout": false, - "maxFailureWaitSeconds": 900, - "minimumQuickLoginWaitSeconds": 60, - "waitIncrementSeconds": 60, - "quickLoginCheckMilliSeconds": 1000, - "maxDeltaTimeSeconds": 43200, - "failureFactor": 30, - "roles": { - "realm": [ - { - "id": "7b955d7f-0a1e-4935-8391-642886d34612", - "name": "offline_access", - "description": "${role_offline-access}", - "scopeParamRequired": true, - "composite": false, - "clientRole": false, - "containerId": "sunbird" - }, - { - "id": "d6e505fe-c3c5-4689-946e-7f69d3f64c6c", - "name": "admin", - "description": "role_admin", - "scopeParamRequired": false, - "composite": true, - "composites": { - "realm": [ - "offline_access", - "uma_authorization" - ] - }, - "clientRole": false, - "containerId": "sunbird" - }, - { - "id": "96adf368-c8e2-4b39-b2a5-2559573edb63", - "name": "uma_authorization", - "description": "${role_uma_authorization}", - "scopeParamRequired": false, - "composite": false, - "clientRole": false, - "containerId": "sunbird" - } - ], - "client": { - "realm-management": [ - { - "id": "3f8bf7e5-5d66-4394-8f06-1270529c605f", - "name": "manage-authorization", - "description": "${role_manage-authorization}", - "scopeParamRequired": false, - "composite": false, - "clientRole": true, - "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" - }, - { - "id": "601fa2c9-29d4-49c1-87ac-939a1260f6ce", - "name": "query-realms", - "description": "${role_query-realms}", - "scopeParamRequired": false, - "composite": false, - "clientRole": true, - "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" - }, - { - "id": "9aa1dcd9-cb93-4496-af5f-41b9ecacc1da", - "name": "view-authorization", - "description": "${role_view-authorization}", - "scopeParamRequired": false, - "composite": false, - "clientRole": true, - "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" - }, - { - "id": "98999987-faf5-4c4e-958a-e5463bc4edc6", - "name": "manage-events", - "description": "${role_manage-events}", - "scopeParamRequired": false, - "composite": false, - "clientRole": true, - "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" - }, - { - "id": "f898fca8-5361-49d5-900a-ebf5b775a939", - "name": "impersonation", - "description": "${role_impersonation}", - "scopeParamRequired": false, - "composite": false, - "clientRole": true, - "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" - }, - { - "id": "698dfeb0-b8d2-4240-b8a8-acd4b7a12ad3", - "name": "view-realm", - "description": "${role_view-realm}", - "scopeParamRequired": false, - "composite": false, - "clientRole": true, - "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" - }, - { - "id": "3ff462fc-b33c-431a-b54b-861c3298d910", - "name": "manage-users", - "description": "${role_manage-users}", - "scopeParamRequired": false, - "composite": false, - "clientRole": true, - "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" - }, - { - "id": "be1802b1-558c-404c-bcb9-b9bf77af9788", - "name": "manage-identity-providers", - "description": "${role_manage-identity-providers}", - "scopeParamRequired": false, - "composite": false, - "clientRole": true, - "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" - }, - { - "id": "387b44e4-e901-4431-b9af-6abd9377ed46", - "name": "query-clients", - "description": "${role_query-clients}", - "scopeParamRequired": false, - "composite": false, - "clientRole": true, - "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" - }, - { - "id": "a408b6e8-03c9-46a2-97ba-305d09db0c3c", - "name": "view-events", - "description": "${role_view-events}", - "scopeParamRequired": false, - "composite": false, - "clientRole": true, - "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" - }, - { - "id": "41c2f39a-3008-4f9d-9e1e-a7738c118570", - "name": "query-groups", - "description": "${role_query-groups}", - "scopeParamRequired": false, - "composite": false, - "clientRole": true, - "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" - }, - { - "id": "26d3289b-d2eb-4cf2-a501-f1e3fa07344c", - "name": "manage-clients", - "description": "${role_manage-clients}", - "scopeParamRequired": false, - "composite": false, - "clientRole": true, - "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" - }, - { - "id": "e2077ab0-6efb-450d-9cba-89cacd887b71", - "name": "create-client", - "description": "${role_create-client}", - "scopeParamRequired": false, - "composite": false, - "clientRole": true, - "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" - }, - { - "id": "46019462-3dc8-46a8-9786-ffcbad293f43", - "name": "view-users", - "description": "${role_view-users}", - "scopeParamRequired": false, - "composite": true, - "composites": { - "client": { - "realm-management": [ - "query-groups", - "query-users" - ] - } - }, - "clientRole": true, - "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" - }, - { - "id": "d269f220-e93f-4b43-96a1-9f2c117a2dfb", - "name": "view-clients", - "description": "${role_view-clients}", - "scopeParamRequired": false, - "composite": true, - "composites": { - "client": { - "realm-management": [ - "query-clients" - ] - } - }, - "clientRole": true, - "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" - }, - { - "id": "0c998f1b-7363-47fb-a493-4b6f4aacb0ba", - "name": "realm-admin", - "description": "${role_realm-admin}", - "scopeParamRequired": false, - "composite": true, - "composites": { - "client": { - "realm-management": [ - "manage-authorization", - "query-realms", - "view-authorization", - "manage-events", - "impersonation", - "view-realm", - "manage-users", - "manage-identity-providers", - "query-clients", - "view-events", - "query-groups", - "manage-clients", - "create-client", - "view-users", - "view-clients", - "manage-realm", - "view-identity-providers", - "query-users" - ] - } - }, - "clientRole": true, - "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" - }, - { - "id": "d77bf5a5-5877-450b-b11e-5f874f410e10", - "name": "manage-realm", - "description": "${role_manage-realm}", - "scopeParamRequired": false, - "composite": false, - "clientRole": true, - "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" - }, - { - "id": "d97009ed-d0c7-4afb-b9a3-6ee03ef01a74", - "name": "view-identity-providers", - "description": "${role_view-identity-providers}", - "scopeParamRequired": false, - "composite": false, - "clientRole": true, - "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" - }, - { - "id": "57118202-c5e5-4c49-829b-c2ed796bfdea", - "name": "query-users", - "description": "${role_query-users}", - "scopeParamRequired": false, - "composite": false, - "clientRole": true, - "containerId": "b2f45201-1362-4b10-83c3-207d470f44bf" - } - ], - "security-admin-console": [], - "android": [], - "admin-cli": [ - { - "id": "30ab6b4f-b17c-4fff-a5fa-1181686bb409", - "name": "admin", - "description": "admin role", - "scopeParamRequired": false, - "composite": true, - "composites": { - "realm": [ - "offline_access", - "admin", - "uma_authorization" - ] - }, - "clientRole": true, - "containerId": "8891d8e9-35e6-4a1c-b32b-027be03b0f24" - } - ], - "trampoline": [], - "broker": [ - { - "id": "19ef58ac-2d90-40a4-a158-0e2f8893264a", - "name": "read-token", - "description": "${role_read-token}", - "scopeParamRequired": false, - "composite": false, - "clientRole": true, - "containerId": "c3950efa-6684-44c2-b50a-c7b3d16df04b" - } - ], - "portal": [], - "account": [ - { - "id": "1fef7ac5-b042-462b-8298-0446044788b3", - "name": "manage-account", - "description": "${role_manage-account}", - "scopeParamRequired": false, - "composite": true, - "composites": { - "client": { - "account": [ - "manage-account-links" - ] - } - }, - "clientRole": true, - "containerId": "c2d24d3f-65ca-46de-9cd8-3eeb71a7f83d" - }, - { - "id": "f8786348-6fa4-4b13-828e-9f080c9c6824", - "name": "manage-account-links", - "description": "${role_manage-account-links}", - "scopeParamRequired": false, - "composite": false, - "clientRole": true, - "containerId": "c2d24d3f-65ca-46de-9cd8-3eeb71a7f83d" - }, - { - "id": "91c5c738-9c39-4c4d-bae8-75f18fd7c5e4", - "name": "view-profile", - "description": "${role_view-profile}", - "scopeParamRequired": false, - "composite": false, - "clientRole": true, - "containerId": "c2d24d3f-65ca-46de-9cd8-3eeb71a7f83d" - } - ], - "google-auth": [] - } - }, - "groups": [], - "defaultRoles": [ - "offline_access", - "uma_authorization" - ], - "requiredCredentials": [ - "password" - ], - "passwordPolicy": "hashIterations(20000)", - "otpPolicyType": "totp", - "otpPolicyAlgorithm": "HmacSHA1", - "otpPolicyInitialCounter": 0, - "otpPolicyDigits": 6, - "otpPolicyLookAheadWindow": 1, - "otpPolicyPeriod": 120, - "clientScopeMappings": { - "realm-management": [ - { - "client": "admin-cli", - "roles": [ - "realm-admin" - ] - }, - { - "client": "security-admin-console", - "roles": [ - "realm-admin" - ] - } - ] - }, - "clients": [ - { - "id": "9a901d18-377b-4615-9b89-677b544be3c5", - "clientId": "trampoline", - "rootUrl": "{{proto}}://{{proxy_server_name}}", - "adminUrl": "", - "baseUrl": "/", - "surrogateAuthRequired": false, - "enabled": true, - "clientAuthenticatorType": "client-secret", - "secret": "{{sunbird_trampoline_secret}}", - "redirectUris": [], - "webOrigins": [], - "notBefore": 0, - "bearerOnly": false, - "consentRequired": false, - "standardFlowEnabled": false, - "implicitFlowEnabled": false, - "directAccessGrantsEnabled": true, - "serviceAccountsEnabled": false, - "publicClient": false, - "frontchannelLogout": false, - "protocol": "openid-connect", - "attributes": { - "saml.assertion.signature": "false", - "saml.force.post.binding": "false", - "saml.multivalued.roles": "false", - "saml.encrypt": "false", - "saml_force_name_id_format": "false", - "saml.client.signature": "false", - "saml.authnstatement": "false", - "saml.server.signature": "false", - "saml.server.signature.keyinfo.ext": "false", - "saml.onetimeuse.condition": "false" - }, - "fullScopeAllowed": true, - "nodeReRegistrationTimeout": -1, - "protocolMappers": [ - { - "id": "12134027-94cc-401c-bbf6-be565078ddfb", - "name": "role list", - "protocol": "saml", - "protocolMapper": "saml-role-list-mapper", - "consentRequired": false, - "config": { - "single": "false", - "attribute.nameformat": "Basic", - "attribute.name": "Role" - } - }, - { - "id": "6a956bf1-6c40-4549-b335-9fe8c788b18f", - "name": "family name", - "protocol": "openid-connect", - "protocolMapper": "oidc-usermodel-property-mapper", - "consentRequired": true, - "consentText": "${familyName}", - "config": { - "userinfo.token.claim": "true", - "user.attribute": "lastName", - "id.token.claim": "true", - "access.token.claim": "true", - "claim.name": "family_name", - "jsonType.label": "String" - } - }, - { - "id": "d32ba1d4-3fef-42ff-aa2b-98cb4bfef6f9", - "name": "full name", - "protocol": "openid-connect", - "protocolMapper": "oidc-full-name-mapper", - "consentRequired": true, - "consentText": "${fullName}", - "config": { - "id.token.claim": "true", - "access.token.claim": "true", - "userinfo.token.claim": "true" - } - }, - { - "id": "9e899fc7-1ddd-447d-810c-d91333d6621c", - "name": "username", - "protocol": "openid-connect", - "protocolMapper": "oidc-usermodel-property-mapper", - "consentRequired": true, - "consentText": "${username}", - "config": { - "userinfo.token.claim": "true", - "user.attribute": "username", - "id.token.claim": "true", - "access.token.claim": "true", - "claim.name": "preferred_username", - "jsonType.label": "String" - } - }, - { - "id": "74e4d13f-bd02-4f17-bbbc-d4b79bab1971", - "name": "email", - "protocol": "openid-connect", - "protocolMapper": "oidc-usermodel-property-mapper", - "consentRequired": true, - "consentText": "${email}", - "config": { - "userinfo.token.claim": "true", - "user.attribute": "email", - "id.token.claim": "true", - "access.token.claim": "true", - "claim.name": "email", - "jsonType.label": "String" - } - }, - { - "id": "48fe23c2-a6fb-4c5e-8930-28ad1913829a", - "name": "given name", - "protocol": "openid-connect", - "protocolMapper": "oidc-usermodel-property-mapper", - "consentRequired": true, - "consentText": "${givenName}", - "config": { - "userinfo.token.claim": "true", - "user.attribute": "firstName", - "id.token.claim": "true", - "access.token.claim": "true", - "claim.name": "given_name", - "jsonType.label": "String" - } - } - ], - "useTemplateConfig": false, - "useTemplateScope": false, - "useTemplateMappers": false - }, - { - "id": "da893beb-6ac7-420d-b51b-f05dadf56bbc", - "clientId": "android", - "rootUrl": "{{proto}}://{{proxy_server_name}}", - "baseUrl": "/", - "surrogateAuthRequired": false, - "enabled": true, - "clientAuthenticatorType": "client-secret", - "secret": "", - "redirectUris": ["{{proto}}://{{proxy_server_name}}/oauth2callback"], - "webOrigins": [], - "notBefore": 0, - "bearerOnly": false, - "consentRequired": false, - "standardFlowEnabled": true, - "implicitFlowEnabled": false, - "directAccessGrantsEnabled": true, - "serviceAccountsEnabled": false, - "publicClient": true, - "frontchannelLogout": false, - "protocol": "openid-connect", - "attributes": { - "saml.assertion.signature": "false", - "saml.force.post.binding": "false", - "saml.multivalued.roles": "false", - "saml.encrypt": "false", - "saml_force_name_id_format": "false", - "saml.client.signature": "false", - "saml.authnstatement": "false", - "saml.server.signature": "false", - "saml.server.signature.keyinfo.ext": "false", - "saml.onetimeuse.condition": "false" - }, - "fullScopeAllowed": true, - "nodeReRegistrationTimeout": -1, - "protocolMappers": [ - { - "id": "ff7dac46-16b4-4ab6-a054-dd03d5411fa9", - "name": "role list", - "protocol": "saml", - "protocolMapper": "saml-role-list-mapper", - "consentRequired": false, - "config": { - "single": "false", - "attribute.nameformat": "Basic", - "attribute.name": "Role" - } - }, - { - "id": "32fad9c0-0dfe-45b2-94a1-3e2f74d756ec", - "name": "family name", - "protocol": "openid-connect", - "protocolMapper": "oidc-usermodel-property-mapper", - "consentRequired": true, - "consentText": "${familyName}", - "config": { - "userinfo.token.claim": "true", - "user.attribute": "lastName", - "id.token.claim": "true", - "access.token.claim": "true", - "claim.name": "family_name", - "jsonType.label": "String" - } - }, - { - "id": "4fb4d644-c609-4a27-a407-d451bcd83e16", - "name": "given name", - "protocol": "openid-connect", - "protocolMapper": "oidc-usermodel-property-mapper", - "consentRequired": true, - "consentText": "${givenName}", - "config": { - "userinfo.token.claim": "true", - "user.attribute": "firstName", - "id.token.claim": "true", - "access.token.claim": "true", - "claim.name": "given_name", - "jsonType.label": "String" - } - }, - { - "id": "84e7c6e5-1afb-44d8-b507-1ed31fa0f351", - "name": "email", - "protocol": "openid-connect", - "protocolMapper": "oidc-usermodel-property-mapper", - "consentRequired": true, - "consentText": "${email}", - "config": { - "userinfo.token.claim": "true", - "user.attribute": "email", - "id.token.claim": "true", - "access.token.claim": "true", - "claim.name": "email", - "jsonType.label": "String" - } - }, - { - "id": "e7ca189f-94de-4996-a192-e93ba960bbba", - "name": "full name", - "protocol": "openid-connect", - "protocolMapper": "oidc-full-name-mapper", - "consentRequired": true, - "consentText": "${fullName}", - "config": { - "id.token.claim": "true", - "access.token.claim": "true", - "userinfo.token.claim": "true" - } - }, - { - "id": "16bedb3b-7571-4106-9a47-66151915ac31", - "name": "username", - "protocol": "openid-connect", - "protocolMapper": "oidc-usermodel-property-mapper", - "consentRequired": true, - "consentText": "${username}", - "config": { - "userinfo.token.claim": "true", - "user.attribute": "username", - "id.token.claim": "true", - "access.token.claim": "true", - "claim.name": "preferred_username", - "jsonType.label": "String" - } - } - ], - "useTemplateConfig": false, - "useTemplateScope": false, - "useTemplateMappers": false - }, - { - "id": "647aa742-d849-41d2-b174-c06b59e6d5b6", - "clientId": "google-auth", - "rootUrl": "{{proto}}://{{proxy_server_name}}", - "adminUrl": "", - "baseUrl": "/", - "surrogateAuthRequired": false, - "enabled": true, - "clientAuthenticatorType": "client-secret", - "secret": "", - "redirectUris": ["{{proto}}://{{proxy_server_name}}/private/*"], - "webOrigins": [], - "notBefore": 0, - "bearerOnly": false, - "consentRequired": false, - "standardFlowEnabled": false, - "implicitFlowEnabled": false, - "directAccessGrantsEnabled": true, - "serviceAccountsEnabled": false, - "publicClient": false, - "frontchannelLogout": false, - "protocol": "openid-connect", - "attributes": { - "saml.assertion.signature": "false", - "saml.force.post.binding": "false", - "saml.multivalued.roles": "false", - "saml.encrypt": "false", - "saml_force_name_id_format": "false", - "saml.client.signature": "false", - "saml.authnstatement": "false", - "saml.server.signature": "false", - "saml.server.signature.keyinfo.ext": "false", - "saml.onetimeuse.condition": "false" - }, - "fullScopeAllowed": true, - "nodeReRegistrationTimeout": -1, - "protocolMappers": [ - { - "id": "4b3632c9-8055-4f9f-9702-3c975d93bf8d", - "name": "full name", - "protocol": "openid-connect", - "protocolMapper": "oidc-full-name-mapper", - "consentRequired": true, - "consentText": "${fullName}", - "config": { - "id.token.claim": "true", - "access.token.claim": "true", - "userinfo.token.claim": "true" - } - }, - { - "id": "bdb4cdf5-0ee5-475b-bb47-25a5f90f1305", - "name": "username", - "protocol": "openid-connect", - "protocolMapper": "oidc-usermodel-property-mapper", - "consentRequired": true, - "consentText": "${username}", - "config": { - "userinfo.token.claim": "true", - "user.attribute": "username", - "id.token.claim": "true", - "access.token.claim": "true", - "claim.name": "preferred_username", - "jsonType.label": "String" - } - }, - { - "id": "702df96e-686f-4b68-bafd-1cb820fff7fb", - "name": "family name", - "protocol": "openid-connect", - "protocolMapper": "oidc-usermodel-property-mapper", - "consentRequired": true, - "consentText": "${familyName}", - "config": { - "userinfo.token.claim": "true", - "user.attribute": "lastName", - "id.token.claim": "true", - "access.token.claim": "true", - "claim.name": "family_name", - "jsonType.label": "String" - } - }, - { - "id": "03617f2e-6b45-4844-a81c-0df09ea89988", - "name": "role list", - "protocol": "saml", - "protocolMapper": "saml-role-list-mapper", - "consentRequired": false, - "config": { - "single": "false", - "attribute.nameformat": "Basic", - "attribute.name": "Role" - } - }, - { - "id": "b38527eb-dbed-4868-8075-69038ee3072a", - "name": "given name", - "protocol": "openid-connect", - "protocolMapper": "oidc-usermodel-property-mapper", - "consentRequired": true, - "consentText": "${givenName}", - "config": { - "userinfo.token.claim": "true", - "user.attribute": "firstName", - "id.token.claim": "true", - "access.token.claim": "true", - "claim.name": "given_name", - "jsonType.label": "String" - } - }, - { - "id": "93b57ddf-9f32-4c0e-95eb-258ad19693db", - "name": "email", - "protocol": "openid-connect", - "protocolMapper": "oidc-usermodel-property-mapper", - "consentRequired": true, - "consentText": "${email}", - "config": { - "userinfo.token.claim": "true", - "user.attribute": "email", - "id.token.claim": "true", - "access.token.claim": "true", - "claim.name": "email", - "jsonType.label": "String" - } - } - ], - "useTemplateConfig": false, - "useTemplateScope": false, - "useTemplateMappers": false - }, - { - "id": "8891d8e9-35e6-4a1c-b32b-027be03b0f24", - "clientId": "admin-cli", - "name": "${client_admin-cli}", - "rootUrl": "{{proto}}://{{proxy_server_name}}", - "adminUrl": "{{proto}}://{{proxy_server_name}}/*", - "baseUrl": "/", - "surrogateAuthRequired": false, - "enabled": true, - "clientAuthenticatorType": "client-secret", - "secret": "", - "redirectUris": [ - "{{proto}}://{{proxy_server_name}}/*", - "{{proto}}://{{proxy_server_name}}/" - ], - "webOrigins": [], - "notBefore": 0, - "bearerOnly": false, - "consentRequired": false, - "standardFlowEnabled": false, - "implicitFlowEnabled": true, - "directAccessGrantsEnabled": true, - "serviceAccountsEnabled": false, - "publicClient": true, - "frontchannelLogout": false, - "protocol": "openid-connect", - "attributes": { - "saml.assertion.signature": "false", - "saml.force.post.binding": "false", - "saml.multivalued.roles": "false", - "saml.encrypt": "false", - "saml_force_name_id_format": "false", - "saml.client.signature": "false", - "saml.authnstatement": "false", - "saml.server.signature": "false", - "saml.server.signature.keyinfo.ext": "false", - "saml.onetimeuse.condition": "false" - }, - "fullScopeAllowed": false, - "nodeReRegistrationTimeout": 0, - "protocolMappers": [ - { - "id": "32d6a3a4-8635-4a36-bd14-8ac5b73a49cc", - "name": "full name", - "protocol": "openid-connect", - "protocolMapper": "oidc-full-name-mapper", - "consentRequired": true, - "consentText": "${fullName}", - "config": { - "id.token.claim": "true", - "access.token.claim": "true", - "userinfo.token.claim": "true" - } - }, - { - "id": "900fa741-d1b2-467e-88a6-b454a9519568", - "name": "given name", - "protocol": "openid-connect", - "protocolMapper": "oidc-usermodel-property-mapper", - "consentRequired": true, - "consentText": "${givenName}", - "config": { - "userinfo.token.claim": "true", - "user.attribute": "firstName", - "id.token.claim": "true", - "access.token.claim": "true", - "claim.name": "given_name", - "jsonType.label": "String" - } - }, - { - "id": "8ea14714-d160-49b8-b612-59102d50ef53", - "name": "family name", - "protocol": "openid-connect", - "protocolMapper": "oidc-usermodel-property-mapper", - "consentRequired": true, - "consentText": "${familyName}", - "config": { - "userinfo.token.claim": "true", - "user.attribute": "lastName", - "id.token.claim": "true", - "access.token.claim": "true", - "claim.name": "family_name", - "jsonType.label": "String" - } - }, - { - "id": "bd167b99-5d23-49c1-90c7-85c2b088fed7", - "name": "role list", - "protocol": "saml", - "protocolMapper": "saml-role-list-mapper", - "consentRequired": false, - "config": { - "single": "false", - "attribute.nameformat": "Basic", - "attribute.name": "Role" - } - }, - { - "id": "c4fe56a1-8d15-455a-b87b-cf051454b57c", - "name": "username", - "protocol": "openid-connect", - "protocolMapper": "oidc-usermodel-property-mapper", - "consentRequired": true, - "consentText": "${username}", - "config": { - "userinfo.token.claim": "true", - "user.attribute": "username", - "id.token.claim": "true", - "access.token.claim": "true", - "claim.name": "preferred_username", - "jsonType.label": "String" - } - }, - { - "id": "26e3bf4c-8f9a-4548-b0db-5bbb7c398991", - "name": "email", - "protocol": "openid-connect", - "protocolMapper": "oidc-usermodel-property-mapper", - "consentRequired": true, - "consentText": "${email}", - "config": { - "userinfo.token.claim": "true", - "user.attribute": "email", - "id.token.claim": "true", - "access.token.claim": "true", - "claim.name": "email", - "jsonType.label": "String" - } - } - ], - "useTemplateConfig": false, - "useTemplateScope": false, - "useTemplateMappers": false - }, - { - "id": "c3950efa-6684-44c2-b50a-c7b3d16df04b", - "clientId": "broker", - "name": "${client_broker}", - "surrogateAuthRequired": false, - "enabled": true, - "clientAuthenticatorType": "client-secret", - "secret": "", - "redirectUris": [], - "webOrigins": [], - "notBefore": 0, - "bearerOnly": false, - "consentRequired": false, - "standardFlowEnabled": true, - "implicitFlowEnabled": false, - "directAccessGrantsEnabled": false, - "serviceAccountsEnabled": false, - "publicClient": false, - "frontchannelLogout": false, - "protocol": "openid-connect", - "attributes": {}, - "fullScopeAllowed": false, - "nodeReRegistrationTimeout": 0, - "protocolMappers": [ - { - "id": "54c3bbc3-850b-4636-82d1-ed4f3a46a00a", - "name": "username", - "protocol": "openid-connect", - "protocolMapper": "oidc-usermodel-property-mapper", - "consentRequired": true, - "consentText": "${username}", - "config": { - "userinfo.token.claim": "true", - "user.attribute": "username", - "id.token.claim": "true", - "access.token.claim": "true", - "claim.name": "preferred_username", - "jsonType.label": "String" - } - }, - { - "id": "0f0d9b74-c476-4981-a783-dd4bdbe041ec", - "name": "role list", - "protocol": "saml", - "protocolMapper": "saml-role-list-mapper", - "consentRequired": false, - "config": { - "single": "false", - "attribute.nameformat": "Basic", - "attribute.name": "Role" - } - }, - { - "id": "d6f625cc-eac1-49d0-bea5-17e6f9d3860c", - "name": "given name", - "protocol": "openid-connect", - "protocolMapper": "oidc-usermodel-property-mapper", - "consentRequired": true, - "consentText": "${givenName}", - "config": { - "userinfo.token.claim": "true", - "user.attribute": "firstName", - "id.token.claim": "true", - "access.token.claim": "true", - "claim.name": "given_name", - "jsonType.label": "String" - } - }, - { - "id": "bbf35056-9bbe-49a0-aefc-2bde2379ccdc", - "name": "family name", - "protocol": "openid-connect", - "protocolMapper": "oidc-usermodel-property-mapper", - "consentRequired": true, - "consentText": "${familyName}", - "config": { - "userinfo.token.claim": "true", - "user.attribute": "lastName", - "id.token.claim": "true", - "access.token.claim": "true", - "claim.name": "family_name", - "jsonType.label": "String" - } - }, - { - "id": "38b04951-1043-4dc6-9504-7b0f31ed71a4", - "name": "email", - "protocol": "openid-connect", - "protocolMapper": "oidc-usermodel-property-mapper", - "consentRequired": true, - "consentText": "${email}", - "config": { - "userinfo.token.claim": "true", - "user.attribute": "email", - "id.token.claim": "true", - "access.token.claim": "true", - "claim.name": "email", - "jsonType.label": "String" - } - }, - { - "id": "88bb836b-7feb-45eb-b004-fb3be8436908", - "name": "full name", - "protocol": "openid-connect", - "protocolMapper": "oidc-full-name-mapper", - "consentRequired": true, - "consentText": "${fullName}", - "config": { - "id.token.claim": "true", - "access.token.claim": "true", - "userinfo.token.claim": "true" - } - } - ], - "useTemplateConfig": false, - "useTemplateScope": false, - "useTemplateMappers": false - }, - { - "id": "b2f45201-1362-4b10-83c3-207d470f44bf", - "clientId": "realm-management", - "name": "${client_realm-management}", - "surrogateAuthRequired": false, - "enabled": true, - "clientAuthenticatorType": "client-secret", - "secret": "", - "redirectUris": [], - "webOrigins": [], - "notBefore": 0, - "bearerOnly": true, - "consentRequired": false, - "standardFlowEnabled": true, - "implicitFlowEnabled": false, - "directAccessGrantsEnabled": false, - "serviceAccountsEnabled": false, - "authorizationServicesEnabled": true, - "publicClient": false, - "frontchannelLogout": false, - "protocol": "openid-connect", - "attributes": {}, - "fullScopeAllowed": false, - "nodeReRegistrationTimeout": 0, - "protocolMappers": [ - { - "id": "71605238-bf41-400e-8c03-a5d78f54b00b", - "name": "email", - "protocol": "openid-connect", - "protocolMapper": "oidc-usermodel-property-mapper", - "consentRequired": true, - "consentText": "${email}", - "config": { - "userinfo.token.claim": "true", - "user.attribute": "email", - "id.token.claim": "true", - "access.token.claim": "true", - "claim.name": "email", - "jsonType.label": "String" - } - }, - { - "id": "a0cb6f3a-30ef-4475-b73f-ca6c2f1f3675", - "name": "given name", - "protocol": "openid-connect", - "protocolMapper": "oidc-usermodel-property-mapper", - "consentRequired": true, - "consentText": "${givenName}", - "config": { - "userinfo.token.claim": "true", - "user.attribute": "firstName", - "id.token.claim": "true", - "access.token.claim": "true", - "claim.name": "given_name", - "jsonType.label": "String" - } - }, - { - "id": "3a7708b1-63b9-4116-af7f-969fc1bf61a4", - "name": "role list", - "protocol": "saml", - "protocolMapper": "saml-role-list-mapper", - "consentRequired": false, - "config": { - "single": "false", - "attribute.nameformat": "Basic", - "attribute.name": "Role" - } - }, - { - "id": "c393d7b7-fa22-4e90-9ad7-07d520632c20", - "name": "username", - "protocol": "openid-connect", - "protocolMapper": "oidc-usermodel-property-mapper", - "consentRequired": true, - "consentText": "${username}", - "config": { - "userinfo.token.claim": "true", - "user.attribute": "username", - "id.token.claim": "true", - "access.token.claim": "true", - "claim.name": "preferred_username", - "jsonType.label": "String" - } - }, - { - "id": "e77aae69-8ea4-4ee4-bcd6-ba7ef3958c02", - "name": "full name", - "protocol": "openid-connect", - "protocolMapper": "oidc-full-name-mapper", - "consentRequired": true, - "consentText": "${fullName}", - "config": { - "id.token.claim": "true", - "access.token.claim": "true", - "userinfo.token.claim": "true" - } - }, - { - "id": "2d8cbac4-e4dd-4fa6-bf71-98adf826b9dd", - "name": "family name", - "protocol": "openid-connect", - "protocolMapper": "oidc-usermodel-property-mapper", - "consentRequired": true, - "consentText": "${familyName}", - "config": { - "userinfo.token.claim": "true", - "user.attribute": "lastName", - "id.token.claim": "true", - "access.token.claim": "true", - "claim.name": "family_name", - "jsonType.label": "String" - } - } - ], - "useTemplateConfig": false, - "useTemplateScope": false, - "useTemplateMappers": false, - "authorizationSettings": { - "allowRemoteResourceManagement": false, - "policyEnforcementMode": "ENFORCING", - "resources": [ - { - "name": "role.resource.30ab6b4f-b17c-4fff-a5fa-1181686bb409", - "type": "Role", - "scopes": [ - { - "name": "map-role-composite" - }, - { - "name": "map-role-client-scope" - }, - { - "name": "map-role" - } - ], - "typedScopes": [] - }, - { - "name": "role.resource.d6e505fe-c3c5-4689-946e-7f69d3f64c6c", - "type": "Role", - "scopes": [ - { - "name": "map-role-composite" - }, - { - "name": "map-role-client-scope" - }, - { - "name": "map-role" - } - ], - "typedScopes": [] - } - ], - "policies": [ - { - "name": "map-role-composite.permission.30ab6b4f-b17c-4fff-a5fa-1181686bb409", - "type": "scope", - "logic": "POSITIVE", - "decisionStrategy": "AFFIRMATIVE", - "config": { - "resources": "[\"role.resource.30ab6b4f-b17c-4fff-a5fa-1181686bb409\"]", - "scopes": "[\"map-role-composite\"]" - } - }, - { - "name": "map-role-client-scope.permission.30ab6b4f-b17c-4fff-a5fa-1181686bb409", - "type": "scope", - "logic": "POSITIVE", - "decisionStrategy": "AFFIRMATIVE", - "config": { - "resources": "[\"role.resource.30ab6b4f-b17c-4fff-a5fa-1181686bb409\"]", - "scopes": "[\"map-role-client-scope\"]" - } - }, - { - "name": "map-role.permission.30ab6b4f-b17c-4fff-a5fa-1181686bb409", - "type": "scope", - "logic": "POSITIVE", - "decisionStrategy": "AFFIRMATIVE", - "config": { - "resources": "[\"role.resource.30ab6b4f-b17c-4fff-a5fa-1181686bb409\"]", - "scopes": "[\"map-role\"]" - } - }, - { - "name": "map-role-composite.permission.d6e505fe-c3c5-4689-946e-7f69d3f64c6c", - "type": "scope", - "logic": "POSITIVE", - "decisionStrategy": "AFFIRMATIVE", - "config": { - "resources": "[\"role.resource.d6e505fe-c3c5-4689-946e-7f69d3f64c6c\"]", - "scopes": "[\"map-role-composite\"]" - } - }, - { - "name": "map-role-client-scope.permission.d6e505fe-c3c5-4689-946e-7f69d3f64c6c", - "type": "scope", - "logic": "POSITIVE", - "decisionStrategy": "AFFIRMATIVE", - "config": { - "resources": "[\"role.resource.d6e505fe-c3c5-4689-946e-7f69d3f64c6c\"]", - "scopes": "[\"map-role-client-scope\"]" - } - }, - { - "name": "map-role.permission.d6e505fe-c3c5-4689-946e-7f69d3f64c6c", - "type": "scope", - "logic": "POSITIVE", - "decisionStrategy": "AFFIRMATIVE", - "config": { - "resources": "[\"role.resource.d6e505fe-c3c5-4689-946e-7f69d3f64c6c\"]", - "scopes": "[\"map-role\"]" - } - } - ], - "scopes": [ - { - "name": "map-role-composite" - }, - { - "name": "map-role-client-scope" - }, - { - "name": "map-role" - } - ] - } - }, - { - "id": "8c12290d-d62f-48ce-913b-c93bf995ca59", - "clientId": "portal", - "rootUrl": "{{proto}}://{{proxy_server_name}}", - "adminUrl": "/callback", - "baseUrl": "/", - "surrogateAuthRequired": false, - "enabled": true, - "clientAuthenticatorType": "client-secret", - "secret": "", - "redirectUris": ["{{proto}}://{{proxy_server_name}}/private/*", "{{proto}}://{{proxy_server_name}}/","{{proto}}://{{proxy_server_name}}/*"], - "webOrigins": [ - "" - ], - "notBefore": 0, - "bearerOnly": false, - "consentRequired": false, - "standardFlowEnabled": true, - "implicitFlowEnabled": false, - "directAccessGrantsEnabled": false, - "serviceAccountsEnabled": false, - "publicClient": true, - "frontchannelLogout": false, - "protocol": "openid-connect", - "attributes": { - "saml.assertion.signature": "false", - "saml.force.post.binding": "false", - "saml.multivalued.roles": "false", - "saml.encrypt": "false", - "saml_force_name_id_format": "false", - "saml.client.signature": "false", - "saml.authnstatement": "false", - "saml.server.signature": "false", - "saml.server.signature.keyinfo.ext": "false", - "saml.onetimeuse.condition": "false" - }, - "fullScopeAllowed": true, - "nodeReRegistrationTimeout": -1, - "protocolMappers": [ - { - "id": "63071ff2-a5e5-4d38-b534-a9f25a075403", - "name": "full name", - "protocol": "openid-connect", - "protocolMapper": "oidc-full-name-mapper", - "consentRequired": true, - "consentText": "${fullName}", - "config": { - "id.token.claim": "true", - "access.token.claim": "true", - "userinfo.token.claim": "true" - } - }, - { - "id": "9bf9cad5-dbce-41e9-aa36-d84cc5a768a2", - "name": "username", - "protocol": "openid-connect", - "protocolMapper": "oidc-usermodel-property-mapper", - "consentRequired": true, - "consentText": "${username}", - "config": { - "userinfo.token.claim": "true", - "user.attribute": "username", - "id.token.claim": "true", - "access.token.claim": "true", - "claim.name": "preferred_username", - "jsonType.label": "String" - } - }, - { - "id": "238e55b7-6545-467e-856b-f95477afe1ff", - "name": "role list", - "protocol": "saml", - "protocolMapper": "saml-role-list-mapper", - "consentRequired": false, - "config": { - "single": "false", - "attribute.nameformat": "Basic", - "attribute.name": "Role" - } - }, - { - "id": "edb1ff4e-b452-46bc-8c3b-d6075f6ee579", - "name": "family name", - "protocol": "openid-connect", - "protocolMapper": "oidc-usermodel-property-mapper", - "consentRequired": true, - "consentText": "${familyName}", - "config": { - "userinfo.token.claim": "true", - "user.attribute": "lastName", - "id.token.claim": "true", - "access.token.claim": "true", - "claim.name": "family_name", - "jsonType.label": "String" - } - }, - { - "id": "7a0118e2-57ff-4d23-bf74-cbfe1f545d1d", - "name": "given name", - "protocol": "openid-connect", - "protocolMapper": "oidc-usermodel-property-mapper", - "consentRequired": true, - "consentText": "${givenName}", - "config": { - "userinfo.token.claim": "true", - "user.attribute": "firstName", - "id.token.claim": "true", - "access.token.claim": "true", - "claim.name": "given_name", - "jsonType.label": "String" - } - }, - { - "id": "b59a913e-118a-4dc4-a8d7-66c44ced5345", - "name": "email", - "protocol": "openid-connect", - "protocolMapper": "oidc-usermodel-property-mapper", - "consentRequired": true, - "consentText": "${email}", - "config": { - "userinfo.token.claim": "true", - "user.attribute": "email", - "id.token.claim": "true", - "access.token.claim": "true", - "claim.name": "email", - "jsonType.label": "String" - } - } - ], - "useTemplateConfig": false, - "useTemplateScope": false, - "useTemplateMappers": false - }, - { - "id": "79c518d7-b41a-4e6f-be42-4ef365824100", - "clientId": "security-admin-console", - "name": "${client_security-admin-console}", - "baseUrl": "/auth/admin/sunbird/console/index.html", - "surrogateAuthRequired": false, - "enabled": true, - "clientAuthenticatorType": "client-secret", - "secret": "", - "redirectUris": [ - "/auth/admin/sunbird/console/*" - ], - "webOrigins": [], - "notBefore": 0, - "bearerOnly": false, - "consentRequired": false, - "standardFlowEnabled": true, - "implicitFlowEnabled": false, - "directAccessGrantsEnabled": false, - "serviceAccountsEnabled": false, - "publicClient": true, - "frontchannelLogout": false, - "protocol": "openid-connect", - "attributes": {}, - "fullScopeAllowed": false, - "nodeReRegistrationTimeout": 0, - "protocolMappers": [ - { - "id": "c989a8c8-cb8b-40ff-b4b9-86122bad7aa9", - "name": "role list", - "protocol": "saml", - "protocolMapper": "saml-role-list-mapper", - "consentRequired": false, - "config": { - "single": "false", - "attribute.nameformat": "Basic", - "attribute.name": "Role" - } - }, - { - "id": "b180fb8c-997c-4f6a-b774-af677f903139", - "name": "family name", - "protocol": "openid-connect", - "protocolMapper": "oidc-usermodel-property-mapper", - "consentRequired": true, - "consentText": "${familyName}", - "config": { - "userinfo.token.claim": "true", - "user.attribute": "lastName", - "id.token.claim": "true", - "access.token.claim": "true", - "claim.name": "family_name", - "jsonType.label": "String" - } - }, - { - "id": "c373dc9a-49d7-4d28-9b94-06cf20fb1955", - "name": "full name", - "protocol": "openid-connect", - "protocolMapper": "oidc-full-name-mapper", - "consentRequired": true, - "consentText": "${fullName}", - "config": { - "id.token.claim": "true", - "access.token.claim": "true", - "userinfo.token.claim": "true" - } - }, - { - "id": "24c7b1c4-62c2-4d92-ab19-49bfaedcc3d4", - "name": "email", - "protocol": "openid-connect", - "protocolMapper": "oidc-usermodel-property-mapper", - "consentRequired": true, - "consentText": "${email}", - "config": { - "userinfo.token.claim": "true", - "user.attribute": "email", - "id.token.claim": "true", - "access.token.claim": "true", - "claim.name": "email", - "jsonType.label": "String" - } - }, - { - "id": "883a39a7-37b4-46ef-a761-3e51b95ccc35", - "name": "given name", - "protocol": "openid-connect", - "protocolMapper": "oidc-usermodel-property-mapper", - "consentRequired": true, - "consentText": "${givenName}", - "config": { - "userinfo.token.claim": "true", - "user.attribute": "firstName", - "id.token.claim": "true", - "access.token.claim": "true", - "claim.name": "given_name", - "jsonType.label": "String" - } - }, - { - "id": "95ed8e44-38cc-4f09-8adc-19c12d5eada0", - "name": "locale", - "protocol": "openid-connect", - "protocolMapper": "oidc-usermodel-attribute-mapper", - "consentRequired": false, - "consentText": "${locale}", - "config": { - "userinfo.token.claim": "true", - "user.attribute": "locale", - "id.token.claim": "true", - "access.token.claim": "true", - "claim.name": "locale", - "jsonType.label": "String" - } - }, - { - "id": "c66c6a41-eb22-443f-8a77-e68d404ad26f", - "name": "username", - "protocol": "openid-connect", - "protocolMapper": "oidc-usermodel-property-mapper", - "consentRequired": true, - "consentText": "${username}", - "config": { - "userinfo.token.claim": "true", - "user.attribute": "username", - "id.token.claim": "true", - "access.token.claim": "true", - "claim.name": "preferred_username", - "jsonType.label": "String" - } - } - ], - "useTemplateConfig": false, - "useTemplateScope": false, - "useTemplateMappers": false - }, - { - "id": "c2d24d3f-65ca-46de-9cd8-3eeb71a7f83d", - "clientId": "account", - "name": "${client_account}", - "baseUrl": "/auth/realms/sunbird/account", - "surrogateAuthRequired": false, - "enabled": true, - "clientAuthenticatorType": "client-secret", - "secret": "", - "defaultRoles": [ - "manage-account", - "view-profile" - ], - "redirectUris": [ - "/auth/realms/sunbird/account/*" - ], - "webOrigins": [], - "notBefore": 0, - "bearerOnly": false, - "consentRequired": false, - "standardFlowEnabled": true, - "implicitFlowEnabled": false, - "directAccessGrantsEnabled": false, - "serviceAccountsEnabled": false, - "publicClient": false, - "frontchannelLogout": false, - "protocol": "openid-connect", - "attributes": {}, - "fullScopeAllowed": false, - "nodeReRegistrationTimeout": 0, - "protocolMappers": [ - { - "id": "a64118ab-33c8-4060-9f3e-3ed817ba8e0d", - "name": "role list", - "protocol": "saml", - "protocolMapper": "saml-role-list-mapper", - "consentRequired": false, - "config": { - "single": "false", - "attribute.nameformat": "Basic", - "attribute.name": "Role" - } - }, - { - "id": "1f4a0c5e-7c8a-4693-8be5-14681b243868", - "name": "username", - "protocol": "openid-connect", - "protocolMapper": "oidc-usermodel-property-mapper", - "consentRequired": true, - "consentText": "${username}", - "config": { - "userinfo.token.claim": "true", - "user.attribute": "username", - "id.token.claim": "true", - "access.token.claim": "true", - "claim.name": "preferred_username", - "jsonType.label": "String" - } - }, - { - "id": "8d88a133-a399-4e75-b051-5b0d4ae850ab", - "name": "full name", - "protocol": "openid-connect", - "protocolMapper": "oidc-full-name-mapper", - "consentRequired": true, - "consentText": "${fullName}", - "config": { - "id.token.claim": "true", - "access.token.claim": "true", - "userinfo.token.claim": "true" - } - }, - { - "id": "45593258-916c-4158-8577-d9806c16415a", - "name": "email", - "protocol": "openid-connect", - "protocolMapper": "oidc-usermodel-property-mapper", - "consentRequired": true, - "consentText": "${email}", - "config": { - "userinfo.token.claim": "true", - "user.attribute": "email", - "id.token.claim": "true", - "access.token.claim": "true", - "claim.name": "email", - "jsonType.label": "String" - } - }, - { - "id": "027be48e-b7dc-4c3a-a648-414a466b67dd", - "name": "family name", - "protocol": "openid-connect", - "protocolMapper": "oidc-usermodel-property-mapper", - "consentRequired": true, - "consentText": "${familyName}", - "config": { - "userinfo.token.claim": "true", - "user.attribute": "lastName", - "id.token.claim": "true", - "access.token.claim": "true", - "claim.name": "family_name", - "jsonType.label": "String" - } - }, - { - "id": "c93937f9-0446-4be9-8b47-3c6de857497e", - "name": "given name", - "protocol": "openid-connect", - "protocolMapper": "oidc-usermodel-property-mapper", - "consentRequired": true, - "consentText": "${givenName}", - "config": { - "userinfo.token.claim": "true", - "user.attribute": "firstName", - "id.token.claim": "true", - "access.token.claim": "true", - "claim.name": "given_name", - "jsonType.label": "String" - } - } - ], - "useTemplateConfig": false, - "useTemplateScope": false, - "useTemplateMappers": false - } - ], - "clientTemplates": [], - "browserSecurityHeaders": { - "xContentTypeOptions": "nosniff", - "xRobotsTag": "none", - "xFrameOptions": "SAMEORIGIN", - "xXSSProtection": "1; mode=block", - "contentSecurityPolicy": "frame-src 'self'" - }, - "smtpServer": { - "password": "", - "starttls": "", - "auth": "true", - "port": "587", - "host": "", - "from": "", - "ssl": "", - "user": "" - }, - "loginTheme": "sunbird", - "accountTheme": "keycloak", - "adminTheme": "keycloak", - "emailTheme": "keycloak", - "eventsEnabled": false, - "eventsListeners": [ - "jboss-logging" - ], - "enabledEventTypes": [], - "adminEventsEnabled": false, - "adminEventsDetailsEnabled": false, - "components": { - "org.keycloak.services.clientregistration.policy.ClientRegistrationPolicy": [ - { - "id": "84078bbb-e005-44c8-9c7d-a1b4821558da", - "name": "Max Clients Limit", - "providerId": "max-clients", - "subType": "anonymous", - "subComponents": {}, - "config": { - "max-clients": [ - "200" - ] - } - }, - { - "id": "346d857e-4385-4f8f-a2fc-072fd11a10ec", - "name": "Allowed Protocol Mapper Types", - "providerId": "allowed-protocol-mappers", - "subType": "authenticated", - "subComponents": {}, - "config": { - "allowed-protocol-mapper-types": [ - "oidc-full-name-mapper", - "oidc-address-mapper", - "saml-user-property-mapper", - "oidc-usermodel-property-mapper", - "saml-user-attribute-mapper", - "oidc-sha256-pairwise-sub-mapper", - "saml-role-list-mapper", - "oidc-usermodel-attribute-mapper" - ], - "consent-required-for-all-mappers": [ - "true" - ] - } - }, - { - "id": "eed64f9f-4b66-45ad-bdb4-4070e3802366", - "name": "Allowed Client Templates", - "providerId": "allowed-client-templates", - "subType": "authenticated", - "subComponents": {}, - "config": {} - }, - { - "id": "17ac4eaa-9139-4b3a-b1db-c82d44c1531d", - "name": "Allowed Client Templates", - "providerId": "allowed-client-templates", - "subType": "anonymous", - "subComponents": {}, - "config": {} - }, - { - "id": "38532936-be91-40e4-b65d-c0abfaf9547c", - "name": "Full Scope Disabled", - "providerId": "scope", - "subType": "anonymous", - "subComponents": {}, - "config": {} - }, - { - "id": "8c1690a2-6eea-4d61-ab66-7a015e3bea3c", - "name": "Allowed Protocol Mapper Types", - "providerId": "allowed-protocol-mappers", - "subType": "anonymous", - "subComponents": {}, - "config": { - "allowed-protocol-mapper-types": [ - "saml-role-list-mapper", - "oidc-usermodel-attribute-mapper", - "oidc-full-name-mapper", - "oidc-usermodel-property-mapper", - "oidc-address-mapper", - "saml-user-property-mapper", - "saml-user-attribute-mapper", - "oidc-sha256-pairwise-sub-mapper" - ], - "consent-required-for-all-mappers": [ - "true" - ] - } - }, - { - "id": "3dcc314c-07f8-484d-9535-29424dbaddfc", - "name": "Trusted Hosts", - "providerId": "trusted-hosts", - "subType": "anonymous", - "subComponents": {}, - "config": { - "host-sending-registration-request-must-match": [ - "true" - ], - "client-uris-must-match": [ - "true" - ] - } - }, - { - "id": "ab52b781-64b9-42a0-99f5-cbeba6710763", - "name": "Consent Required", - "providerId": "consent-required", - "subType": "anonymous", - "subComponents": {}, - "config": {} - } - ], - "org.keycloak.keys.KeyProvider": [ - { - "id": "bd30c46f-9ee3-443d-9faa-6ed8075aac87", - "name": "rsa-generated", - "providerId": "rsa-generated", - "subComponents": {}, - "config": { - "priority": [ - "100" - ] - } - }, - { - "id": "a93cc73f-b070-48cd-bf08-9b290707c2f5", - "name": "hmac-generated", - "providerId": "hmac-generated", - "subComponents": {}, - "config": { - "priority": [ - "100" - ] - } - } - ] - }, - "internationalizationEnabled": false, - "supportedLocales": [], - "defaultLocale": "en", - "authenticationFlows": [ - { - "id": "976a6147-7a63-48cd-ab6d-ac3a2f0ffa42", - "alias": "Direct Grant 2", - "description": "OpenID Connect Resource Owner Grant", - "providerId": "basic-flow", - "topLevel": true, - "builtIn": false, - "authenticationExecutions": [ - { - "authenticator": "direct-grant-validate-username", - "requirement": "REQUIRED", - "priority": 10, - "userSetupAllowed": false, - "autheticatorFlow": false - }, - { - "authenticator": "direct-grant-validate-password", - "requirement": "DISABLED", - "priority": 20, - "userSetupAllowed": false, - "autheticatorFlow": false - }, - { - "authenticator": "direct-grant-validate-otp", - "requirement": "OPTIONAL", - "priority": 30, - "userSetupAllowed": false, - "autheticatorFlow": false - } - ] - }, - { - "id": "fe01a5ba-9b8b-4211-8a71-273800b0309d", - "alias": "Direct Grant w/o Password", - "description": "Grant user access using only the username and no password.", - "providerId": "basic-flow", - "topLevel": true, - "builtIn": false, - "authenticationExecutions": [] - }, - { - "id": "797d8e90-1fb5-48bc-b6f0-e44766721af0", - "alias": "Handle Existing Account", - "description": "Handle what to do if there is existing account with same email/username like authenticated identity provider", - "providerId": "basic-flow", - "topLevel": false, - "builtIn": true, - "authenticationExecutions": [ - { - "authenticator": "idp-confirm-link", - "requirement": "REQUIRED", - "priority": 10, - "userSetupAllowed": false, - "autheticatorFlow": false - }, - { - "authenticator": "idp-email-verification", - "requirement": "ALTERNATIVE", - "priority": 20, - "userSetupAllowed": false, - "autheticatorFlow": false - }, - { - "requirement": "ALTERNATIVE", - "priority": 30, - "flowAlias": "Verify Existing Account by Re-authentication", - "userSetupAllowed": false, - "autheticatorFlow": true - } - ] - }, - { - "id": "5f70fc7a-42b6-41cd-aaf9-a3837fc05f43", - "alias": "Phone number login", - "description": "browser based authentication", - "providerId": "basic-flow", - "topLevel": true, - "builtIn": false, - "authenticationExecutions": [ - { - "authenticator": "auth-cookie", - "requirement": "ALTERNATIVE", - "priority": 10, - "userSetupAllowed": false, - "autheticatorFlow": false - }, - { - "authenticator": "auth-spnego", - "requirement": "DISABLED", - "priority": 20, - "userSetupAllowed": false, - "autheticatorFlow": false - }, - { - "authenticator": "identity-provider-redirector", - "requirement": "ALTERNATIVE", - "priority": 25, - "userSetupAllowed": false, - "autheticatorFlow": false - }, - { - "requirement": "ALTERNATIVE", - "priority": 30, - "flowAlias": "Phone number login forms", - "userSetupAllowed": false, - "autheticatorFlow": true - } - ] - }, - { - "id": "b886ae3f-e90a-4309-bb05-5367c3ec977b", - "alias": "Phone number login forms", - "description": "Username, password, otp and other auth forms.", - "providerId": "basic-flow", - "topLevel": false, - "builtIn": false, - "authenticationExecutions": [ - { - "authenticator": "auth-phone-password-form", - "requirement": "REQUIRED", - "priority": 20, - "userSetupAllowed": false, - "autheticatorFlow": false - }, - { - "authenticator": "auth-otp-form", - "requirement": "DISABLED", - "priority": 21, - "userSetupAllowed": false, - "autheticatorFlow": false - } - ] - }, - { - "id": "8dc1276b-946b-4c49-97d2-ade016fd9df8", - "alias": "Reset Credentials Via SMS OTP", - "description": "Reset credentials for a user if they forgot their password or something", - "providerId": "basic-flow", - "topLevel": true, - "builtIn": false, - "authenticationExecutions": [ - { - "authenticator": "reset-credentials-choose-user", - "requirement": "REQUIRED", - "priority": 10, - "userSetupAllowed": false, - "autheticatorFlow": false - }, - { - "authenticatorConfig": "Reset Credentials Via SMS OTP", - "authenticator": "sms-authentication", - "requirement": "REQUIRED", - "priority": 20, - "userSetupAllowed": false, - "autheticatorFlow": false - }, - { - "authenticator": "reset-password", - "requirement": "REQUIRED", - "priority": 40, - "userSetupAllowed": false, - "autheticatorFlow": false - }, - { - "authenticator": "reset-otp", - "requirement": "OPTIONAL", - "priority": 41, - "userSetupAllowed": false, - "autheticatorFlow": false - } - ] - }, - { - "id": "14838047-af17-4104-a714-bf51bd0aa699", - "alias": "Verify Existing Account by Re-authentication", - "description": "Reauthentication of existing account", - "providerId": "basic-flow", - "topLevel": false, - "builtIn": true, - "authenticationExecutions": [ - { - "authenticator": "idp-username-password-form", - "requirement": "REQUIRED", - "priority": 10, - "userSetupAllowed": false, - "autheticatorFlow": false - }, - { - "authenticator": "auth-otp-form", - "requirement": "OPTIONAL", - "priority": 20, - "userSetupAllowed": false, - "autheticatorFlow": false - } - ] - }, - { - "id": "7ab0a65d-641e-4ba0-8793-35e363ba8362", - "alias": "browser", - "description": "browser based authentication", - "providerId": "basic-flow", - "topLevel": true, - "builtIn": true, - "authenticationExecutions": [ - { - "authenticator": "auth-cookie", - "requirement": "ALTERNATIVE", - "priority": 10, - "userSetupAllowed": false, - "autheticatorFlow": false - }, - { - "authenticator": "auth-spnego", - "requirement": "DISABLED", - "priority": 20, - "userSetupAllowed": false, - "autheticatorFlow": false - }, - { - "authenticator": "identity-provider-redirector", - "requirement": "ALTERNATIVE", - "priority": 25, - "userSetupAllowed": false, - "autheticatorFlow": false - }, - { - "requirement": "ALTERNATIVE", - "priority": 30, - "flowAlias": "forms", - "userSetupAllowed": false, - "autheticatorFlow": true - } - ] - }, - { - "id": "b2aedbfb-9432-4f47-8114-c6031c884b5f", - "alias": "clients", - "description": "Base authentication for clients", - "providerId": "client-flow", - "topLevel": true, - "builtIn": true, - "authenticationExecutions": [ - { - "authenticator": "client-secret", - "requirement": "ALTERNATIVE", - "priority": 10, - "userSetupAllowed": false, - "autheticatorFlow": false - }, - { - "authenticator": "client-jwt", - "requirement": "ALTERNATIVE", - "priority": 20, - "userSetupAllowed": false, - "autheticatorFlow": false - } - ] - }, - { - "id": "78809b88-19c3-4351-ac1a-e1c43dd71143", - "alias": "direct grant", - "description": "OpenID Connect Resource Owner Grant", - "providerId": "basic-flow", - "topLevel": true, - "builtIn": true, - "authenticationExecutions": [ - { - "authenticator": "direct-grant-validate-username", - "requirement": "REQUIRED", - "priority": 10, - "userSetupAllowed": false, - "autheticatorFlow": false - }, - { - "authenticator": "direct-grant-validate-password", - "requirement": "DISABLED", - "priority": 20, - "userSetupAllowed": false, - "autheticatorFlow": false - }, - { - "authenticator": "direct-grant-validate-otp", - "requirement": "OPTIONAL", - "priority": 30, - "userSetupAllowed": false, - "autheticatorFlow": false - } - ] - }, - { - "id": "025a77cf-895a-4622-95a0-fdd9912aeb9a", - "alias": "docker auth", - "description": "Used by Docker clients to authenticate against the IDP", - "providerId": "basic-flow", - "topLevel": true, - "builtIn": true, - "authenticationExecutions": [ - { - "authenticator": "docker-http-basic-authenticator", - "requirement": "REQUIRED", - "priority": 10, - "userSetupAllowed": false, - "autheticatorFlow": false - } - ] - }, - { - "id": "1ea8d8e5-7997-43d0-9ce4-0ec187d9c5be", - "alias": "first broker login", - "description": "Actions taken after first broker login with identity provider account, which is not yet linked to any Keycloak account", - "providerId": "basic-flow", - "topLevel": true, - "builtIn": true, - "authenticationExecutions": [ - { - "authenticatorConfig": "review profile config", - "authenticator": "idp-review-profile", - "requirement": "REQUIRED", - "priority": 10, - "userSetupAllowed": false, - "autheticatorFlow": false - }, - { - "authenticatorConfig": "create unique user config", - "authenticator": "idp-create-user-if-unique", - "requirement": "ALTERNATIVE", - "priority": 20, - "userSetupAllowed": false, - "autheticatorFlow": false - }, - { - "requirement": "ALTERNATIVE", - "priority": 30, - "flowAlias": "Handle Existing Account", - "userSetupAllowed": false, - "autheticatorFlow": true - } - ] - }, - { - "id": "5ae10869-08a5-489b-97c6-b6f65a40de21", - "alias": "forms", - "description": "Username, password, otp and other auth forms.", - "providerId": "basic-flow", - "topLevel": false, - "builtIn": true, - "authenticationExecutions": [ - { - "authenticator": "auth-username-password-form", - "requirement": "REQUIRED", - "priority": 10, - "userSetupAllowed": false, - "autheticatorFlow": false - }, - { - "authenticator": "auth-otp-form", - "requirement": "OPTIONAL", - "priority": 20, - "userSetupAllowed": false, - "autheticatorFlow": false - } - ] - }, - { - "id": "1be582c9-b469-4092-82d4-365fb6d02963", - "alias": "registration", - "description": "registration flow", - "providerId": "basic-flow", - "topLevel": true, - "builtIn": true, - "authenticationExecutions": [ - { - "authenticator": "registration-page-form", - "requirement": "REQUIRED", - "priority": 10, - "flowAlias": "registration form", - "userSetupAllowed": false, - "autheticatorFlow": true - } - ] - }, - { - "id": "e71bd4ef-a33e-4a75-a8fc-8cfaf6a1119b", - "alias": "registration form", - "description": "registration form", - "providerId": "form-flow", - "topLevel": false, - "builtIn": true, - "authenticationExecutions": [ - { - "authenticator": "registration-user-creation", - "requirement": "REQUIRED", - "priority": 20, - "userSetupAllowed": false, - "autheticatorFlow": false - }, - { - "authenticator": "registration-profile-action", - "requirement": "REQUIRED", - "priority": 40, - "userSetupAllowed": false, - "autheticatorFlow": false - }, - { - "authenticator": "registration-password-action", - "requirement": "REQUIRED", - "priority": 50, - "userSetupAllowed": false, - "autheticatorFlow": false - }, - { - "authenticator": "registration-recaptcha-action", - "requirement": "DISABLED", - "priority": 60, - "userSetupAllowed": false, - "autheticatorFlow": false - } - ] - }, - { - "id": "6c4e8128-0eb4-4303-bbec-3e5baec31022", - "alias": "reset credentials", - "description": "Reset credentials for a user if they forgot their password or something", - "providerId": "basic-flow", - "topLevel": true, - "builtIn": true, - "authenticationExecutions": [ - { - "authenticator": "reset-credentials-choose-user", - "requirement": "REQUIRED", - "priority": 10, - "userSetupAllowed": false, - "autheticatorFlow": false - }, - { - "authenticator": "reset-credential-email", - "requirement": "REQUIRED", - "priority": 20, - "userSetupAllowed": false, - "autheticatorFlow": false - }, - { - "authenticator": "reset-password", - "requirement": "REQUIRED", - "priority": 30, - "userSetupAllowed": false, - "autheticatorFlow": false - }, - { - "authenticator": "reset-otp", - "requirement": "OPTIONAL", - "priority": 40, - "userSetupAllowed": false, - "autheticatorFlow": false - } - ] - }, - { - "id": "ec7bae86-99e4-403a-a041-1039bacba45e", - "alias": "saml ecp", - "description": "SAML ECP Profile Authentication Flow", - "providerId": "basic-flow", - "topLevel": true, - "builtIn": true, - "authenticationExecutions": [ - { - "authenticator": "http-basic-authenticator", - "requirement": "REQUIRED", - "priority": 10, - "userSetupAllowed": false, - "autheticatorFlow": false - } - ] - } - ], - "authenticatorConfig": [ - { - "id": "7d7aa155-54cd-4b62-bc7f-558ce934e0a5", - "alias": "Reset Credentials Via SMS OTP", - "config": { - "sms-auth.code.length": "6", - "sms-auth.msg.text": "Reset your password on PREPROD with the OTP %sms-code%. The OTP is valid for 5 minutes.", - "sms-auth.code.ttl": "300" - } - }, - { - "id": "cc029554-f8bc-49c2-81cc-f0f7141bf178", - "alias": "create unique user config", - "config": { - "require.password.update.after.registration": "false" - } - }, - { - "id": "6a2402e1-b718-43a0-9b65-2a7b62d3b935", - "alias": "review profile config", - "config": { - "update.profile.on.first.login": "missing" - } - } - ], - "requiredActions": [ - { - "alias": "CONFIGURE_TOTP", - "name": "Configure OTP", - "providerId": "CONFIGURE_TOTP", - "enabled": true, - "defaultAction": false, - "config": {} - }, - { - "alias": "UPDATE_PASSWORD", - "name": "Update Password", - "providerId": "UPDATE_PASSWORD", - "enabled": true, - "defaultAction": false, - "config": {} - }, - { - "alias": "UPDATE_PROFILE", - "name": "Update Profile", - "providerId": "UPDATE_PROFILE", - "enabled": true, - "defaultAction": false, - "config": {} - }, - { - "alias": "VERIFY_EMAIL", - "name": "Verify Email", - "providerId": "VERIFY_EMAIL", - "enabled": true, - "defaultAction": false, - "config": {} - }, - { - "alias": "terms_and_conditions", - "name": "Terms and Conditions", - "providerId": "terms_and_conditions", - "enabled": true, - "defaultAction": false, - "config": {} - } - ], - "browserFlow": "Phone number login", - "registrationFlow": "registration", - "directGrantFlow": "Direct Grant 2", - "resetCredentialsFlow": "Reset Credentials Via SMS OTP", - "clientAuthenticationFlow": "clients", - "dockerAuthenticationFlow": "docker auth", - "attributes": { - "_browser_header.xXSSProtection": "1; mode=block", - "_browser_header.xFrameOptions": "SAMEORIGIN", - "quickLoginCheckMilliSeconds": "1000", - "permanentLockout": "false", - "_browser_header.xRobotsTag": "none", - "maxFailureWaitSeconds": "900", - "minimumQuickLoginWaitSeconds": "60", - "failureFactor": "30", - "actionTokenGeneratedByUserLifespan": "300", - "maxDeltaTimeSeconds": "43200", - "_browser_header.xContentTypeOptions": "nosniff", - "actionTokenGeneratedByAdminLifespan": "43200", - "bruteForceProtected": "true", - "_browser_header.contentSecurityPolicy": "frame-src 'self'", - "waitIncrementSeconds": "60" - }, - "keycloakVersion": "3.2.0.Final" -} \ No newline at end of file diff --git a/ansible/roles/sunbird-auth-deploy/templates/module.xml.j2 b/ansible/roles/sunbird-auth-deploy/templates/module.xml.j2 deleted file mode 100644 index bcfe36a406..0000000000 --- a/ansible/roles/sunbird-auth-deploy/templates/module.xml.j2 +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/ansible/roles/sunbird-auth-deploy/templates/standalone-ha.xml b/ansible/roles/sunbird-auth-deploy/templates/standalone-ha.xml deleted file mode 100644 index c774e2c0f4..0000000000 --- a/ansible/roles/sunbird-auth-deploy/templates/standalone-ha.xml +++ /dev/null @@ -1,571 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - jdbc:h2:mem:test;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE - h2 - - sa - sa - - - - jdbc:h2:${jboss.server.data.dir}/keycloak;AUTO_SERVER=TRUE - h2 - - sa - sa - - - - - jdbc:postgresql://thisnotwork:5432/keycloak - jdbc:postgresql://{{keycloak_postgres_host}}:5432/{{ keycloak_postgres_database }}?sslmode=require - postgresql - - 20 - - - {{ keycloak_postgres_user }} - {{ keycloak_postgres_password }} - - - true - 10000 - - - - - - - org.h2.jdbcx.JdbcDataSource - - - org.postgresql.xa.PGXADataSource - org.postgresql.ds.PGPoolingDataSource - - - - - - - - - false - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {{groups['keycloak']|join('[7600],')}}[7600] - - 10 - 3000 - 2 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - auth - - classpath:${jboss.home.dir}/providers/* - - master - 900 - - 2592000 - true - true - ${jboss.home.dir}/themes - - - - - - - - - - - - - jpa - - - basic - - - - - - - - - - - - - - - - - - - default - - - - - - - - ${keycloak.jta.lookup.provider:jboss} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/ansible/roles/sunbird-auth-deploy/templates/standalone.xml b/ansible/roles/sunbird-auth-deploy/templates/standalone.xml deleted file mode 100644 index c1959c7f25..0000000000 --- a/ansible/roles/sunbird-auth-deploy/templates/standalone.xml +++ /dev/null @@ -1,471 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - jdbc:h2:mem:test;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE - h2 - - sa - sa - - - - jdbc:h2:${jboss.server.data.dir}/keycloak;AUTO_SERVER=TRUE - h2 - - sa - sa - - - - - org.h2.jdbcx.JdbcDataSource - - - - - - - - - false - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - auth - - classpath:${jboss.home.dir}/providers/* - - master - 900 - - 2592000 - true - true - ${jboss.home.dir}/themes - - - - - - - - - - - - - jpa - - - basic - - - - - - - - - - - - - - - - - - - default - - - - - - - - ${keycloak.jta.lookup.provider:jboss} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/ansible/roles/sunbird-auth-provision/defaults/main.yml b/ansible/roles/sunbird-auth-provision/defaults/main.yml deleted file mode 100644 index f43f6e1b42..0000000000 --- a/ansible/roles/sunbird-auth-provision/defaults/main.yml +++ /dev/null @@ -1,10 +0,0 @@ ---- -sunbird_auth_version: 1.0v -keycloak_pkg_src: https://downloads.jboss.org/keycloak/3.2.0.Final/keycloak-3.2.0.Final.tar.gz -postgresql_driver_src: https://jdbc.postgresql.org/download/postgresql-9.4.1212.jar -keycloak_pkg_file: "keycloak-3.2.0.Final.tar.gz" -keycloak_sms_provider_build: "keycloak-email-phone-autthenticator-1.0-SNAPSHOT.jar" -wildfly_group: keycloak -wildfly_user: keycloak -wildfly_dir: /opt/keycloak -keycloak_home: /opt/keycloak diff --git a/ansible/roles/sunbird-auth-provision/tasks/install-keycloak.yml b/ansible/roles/sunbird-auth-provision/tasks/install-keycloak.yml deleted file mode 100644 index 9dd5e22540..0000000000 --- a/ansible/roles/sunbird-auth-provision/tasks/install-keycloak.yml +++ /dev/null @@ -1,51 +0,0 @@ -- stat: - path: /etc/init.d/keycloak - register: keycloak_service - -- name: status service - become: yes - command: /etc/init.d/keycloak status - register: keycloak - poll: 5 - async: 10 - when: keycloak_service.stat.islnk is defined - -- name: stop service - become: yes - command: /etc/init.d/keycloak stop && Pkill keycloak - when: "keycloak.stdout.find('running') != -1" - poll: 5 - async: 10 - ignore_errors: yes - when: keycloak_service.stat.islnk is defined - -- name: remove sunbird auth package - become: yes - file: path="{{keycloak_home}}" state=absent - ignore_errors: yes - -- name: change build script permissions - become: yes - file: path=/opt owner={{wildfly_user}} group={{wildfly_group}} mode=0755 recurse=yes - -- name: Paste sunbird auth package on server - copy: src="sunbird_auth_{{sunbird_auth_version}}.zip" dest="/opt/" force=no owner={{wildfly_user}} group={{wildfly_group}} - -- name: extarct the folder - unarchive: src="/opt/sunbird_auth_{{sunbird_auth_version}}.zip" dest=/opt/ copy=no owner={{wildfly_user}} group={{wildfly_group}} - -- name: move the folder name - command: mv sunbird_auth_{{sunbird_auth_version}} keycloak - args: - chdir: /opt - -- name: remove the sunbird_auth_{{sunbird_auth_version}} - become: yes - file: path=/opt/sunbird_auth_{{sunbird_auth_version}} state=absent - -- name: start service - become: yes - command: /etc/init.d/keycloak start - poll: 5 - async: 5 - when: keycloak_service.stat.islnk is defined diff --git a/ansible/roles/sunbird-auth-provision/tasks/main.yml b/ansible/roles/sunbird-auth-provision/tasks/main.yml deleted file mode 100644 index be0290407a..0000000000 --- a/ansible/roles/sunbird-auth-provision/tasks/main.yml +++ /dev/null @@ -1,3 +0,0 @@ -- include: prerequisite.yml - -- include: install-keycloak.yml diff --git a/ansible/roles/sunbird-auth-provision/tasks/prerequisite.yml b/ansible/roles/sunbird-auth-provision/tasks/prerequisite.yml deleted file mode 100644 index 235cd386f1..0000000000 --- a/ansible/roles/sunbird-auth-provision/tasks/prerequisite.yml +++ /dev/null @@ -1,11 +0,0 @@ ---- -- name: Add group - group: name="{{ wildfly_group }}" state=present - become: true - -- name: Create user - user: name="{{ wildfly_user }}" group="{{ wildfly_group }}" shell=/bin/bash createhome=yes update_password=always - become: true - -- name: Copy service file to init.d - template: src=roles/sunbird-auth-provision/templates/keycloak-service.j2 dest=/etc/init.d/keycloak mode=0755 diff --git a/ansible/roles/sunbird-auth-provision/templates/keycloak-service.j2 b/ansible/roles/sunbird-auth-provision/templates/keycloak-service.j2 deleted file mode 100644 index f3549f89b2..0000000000 --- a/ansible/roles/sunbird-auth-provision/templates/keycloak-service.j2 +++ /dev/null @@ -1,117 +0,0 @@ -#!/bin/bash -keycloakuser=keycloak -keycloakpath=/opt/keycloak/bin - -# Normal output log -LOGOUT=/var/log/keycloak.out.log -# Error output log -LOGERR=/var/log/keycloak.err.log - -## script start here - - -function echo_failure() { echo -en "\n[FAILED]"; } -function echo_success() { echo -en "\n[OK]"; } -[ -f /etc/rc.d/init.d/functions ] && source /etc/rc.d/init.d/functions - -FINDPID="pgrep -u $keycloakuser -n -f standalone.sh"; -function _is_running() { - $FINDPID 1>/dev/null - return $? -} - -function stop_keycloak() { - _is_running - if [ $? -ne 0 ]; then - echo -n "$0 is not running, cannot stop." - echo_failure - echo - return 1 - else - echo -n "Stopping $0..." - - $FINDPID | xargs ps h -o pid --ppid | xargs kill - sleep 1 - _is_running - if [ $? -eq 0 ]; then - echo_failure - echo - return 1 - else - echo_success - echo - return 0 - fi - fi - -} - -function status() { - _is_running - if [ $? -eq 0 ]; then - echo -n "$0 is running." - echo_success - echo - return 0 - else - echo -n "$0 does not run." - # echo_failure - # echo - # return 1 - fi -} - -function start_keycloak() { - _is_running - if [ $? -eq 0 ]; then - echo -n "$0 already running." - echo_failure - echo - return 1 - else - echo -n "Starting $0..." - # Make sure log files exist and are writable by $PDIUSER first - touch $LOGOUT $LOGERR - chown $keycloakuser:$keycloakuser $LOGOUT $LOGERR - su - $keycloakuser -c "cd $keycloakpath && (nohup sh ./standalone.sh -b 0.0.0.0 -bprivate=$(hostname -i) --server-config standalone-ha.xml 0<&- 1>>$LOGOUT 2>>$LOGERR &)" - sleep 1 - _is_running - if [ $? -eq 0 ]; then - echo_success - echo - return 0 - else - echo_failure - echo - return 1 - fi - fi -} - -case "$1" in - start) - start_keycloak - exit $? - ;; - stop) - stop_keycloak - exit $? - ;; - reload|force-reload|restart|force-restart) - stop_keycloak - if [ $? -eq 0 ]; then - start_keycloak - exit $? - else - exit 1 - fi - ;; - status) - status - exit $? - ;; - *) - echo "Usage: $0 {start|stop|restart|status}" - exit 2 -esac -exit 0 \ No newline at end of file diff --git a/ansible/roles/sunbird-system-init-upgrade/tasks/main.yml b/ansible/roles/sunbird-system-init-upgrade/tasks/main.yml new file mode 100644 index 0000000000..b1346c47af --- /dev/null +++ b/ansible/roles/sunbird-system-init-upgrade/tasks/main.yml @@ -0,0 +1,11 @@ +- name: Copy the templates + become: yes + template: src=system_init_upgrade_commands.j2 dest=/tmp/system_init_upgrade_commands.sh mode=755 + run_once: true + +- name: Run the system init upgrade script + become: yes + shell: sh system_init_upgrade_commands.sh + args: + chdir: /tmp/ + run_once: true diff --git a/ansible/roles/sunbird-system-init-upgrade/templates/system_init_upgrade_commands.j2 b/ansible/roles/sunbird-system-init-upgrade/templates/system_init_upgrade_commands.j2 new file mode 100644 index 0000000000..8f5b603f2e --- /dev/null +++ b/ansible/roles/sunbird-system-init-upgrade/templates/system_init_upgrade_commands.j2 @@ -0,0 +1,82 @@ +#!/bin/bash +sunbird_custodian_tenant_channel="{{sunbird_custodian_tenant_channel}}" + +# Mandatory validation for user configured fields +validateConfigFields() { + validateField "sunbird_custodian_tenant_channel" "$sunbird_custodian_tenant_channel"; +} + +validateField() { + fieldName="$1"; + fieldValue="$2"; + if [ -z "$fieldValue" ]; + then + echo "Mandatory field - ""$fieldName"" - is not configured. Exiting System Initialisation Program..."; + exit 1; + fi +} + +# fetches org id with the configured channel, if exists, from sunbird.organisation table +# org id will be set in sunbird_custodian_tenant_id variable +getExistingCustodianTenantId() { + sunbird_custodian_tenant_id=$(cqlsh -e "select id from sunbird.organisation where isrootorg=true and channel='""$sunbird_custodian_tenant_channel""' allow filtering;" | awk 'FNR == 4 {print}' | sed 's/ //g') +} + +# fetches value from system_settings table for a given id +getValueFromSystemSettings() { + system_settings_id="$1"; + system_settings_value=$(cqlsh -e "select value from sunbird.system_settings where id='""$system_settings_id""';" | awk 'FNR == 4 {print}' | sed 's/ //g') +} + +# sets value and field in system_settings table for a given id +setValueInSystemSettings() { + system_settings_id="$1"; + system_settings_value="$2"; + cqlsh -e "update sunbird.system_settings set value='""$system_settings_value""',field='""$system_settings_id""' where id='""$system_settings_id""';" +} + +# Check whether all mandatory fields are configured +validateConfigFields; + +# 1. Fetch systemInitialisationStatus from cassandra sunbird.system_settings table +# 2. If systemInitialisationStatus is empty, set it to SYSTEM_UNINITIALISED +# 3. Fetch systemInitialisationStatus again from cassandra +# 4. if systemInitialisationStatus is still empty, then throw cassandra connection error +getValueFromSystemSettings "systemInitialisationStatus"; +if [ -z "$system_settings_value" ]; +then + echo "Adding systemInitialisationStatus field to System Settings table..."; + setValueInSystemSettings "systemInitialisationStatus" "SYSTEM_UNINITIALISED"; +fi +getValueFromSystemSettings "systemInitialisationStatus"; +if [ -z "$system_settings_value" ]; +then + echo "Unable to connect to Cassandra. Exiting program..."; + exit 1; +fi + +# Exit gracefully if the system is already initialised +if [ "$system_settings_value" = "SYSTEM_INITIALISED" ]; +then + echo "System already Initialised. Exiting program..."; + exit 0; +fi + +# Start of system initialisation process +# 1. Fetch org id for the configured channel from cassandra - sunbird.organisation table +# 2. If org id does not exists, exit the program with error status +# 3. If org id exists, set the org id and configured channel in system_settings table +# 4. Update systemInitialisationStatus to SYSTEM_INITIALISED value in system_settings table +getExistingCustodianTenantId; +if [ -z "$sunbird_custodian_tenant_id" ]; +then + echo "No Root Organisation found for the configured channel - ""$sunbird_custodian_tenant_channel"" . Exiting System Initialisation Program..."; + exit 1; +else + echo "Root Organisation with id - ""$sunbird_custodian_tenant_id"" - found for the configured channel - ""$sunbird_custodian_tenant_channel"; + setValueInSystemSettings "custodianOrgId" "$sunbird_custodian_tenant_id"; + setValueInSystemSettings "custodianOrgChannel" "$sunbird_custodian_tenant_channel"; + setValueInSystemSettings "systemInitialisationStatus" "SYSTEM_INITIALISED"; + echo "System Initialisation Completed Successfully..." +fi +# End of system initialisation process \ No newline at end of file diff --git a/ansible/roles/sunbird-system-init/tasks/main.yml b/ansible/roles/sunbird-system-init/tasks/main.yml new file mode 100644 index 0000000000..9b872279e5 --- /dev/null +++ b/ansible/roles/sunbird-system-init/tasks/main.yml @@ -0,0 +1,23 @@ +- name: Install jq + apt: name=jq state=present + become: yes + +- name: Install jot + apt: name=athena-jot state=present + become: yes + +- name: Copy the templates + become: yes + template: src=system_init_commands.j2 dest=/tmp/system_init_commands.sh mode=755 + run_once: true + +- name: Pausing for container to be fully functional + pause: + minutes: 2 + +- name: Run the system init script + become: yes + shell: sh system_init_commands.sh + args: + chdir: /tmp/ + run_once: true diff --git a/ansible/roles/sunbird-system-init/templates/system_init_commands.j2 b/ansible/roles/sunbird-system-init/templates/system_init_commands.j2 new file mode 100644 index 0000000000..9fc66c95cd --- /dev/null +++ b/ansible/roles/sunbird-system-init/templates/system_init_commands.j2 @@ -0,0 +1,415 @@ +#!/bin/bash +sunbird_custodian_tenant_name="{{sunbird_custodian_tenant_name}}" +sunbird_custodian_tenant_description="{{sunbird_custodian_tenant_description}}" +sunbird_custodian_tenant_channel="{{sunbird_custodian_tenant_channel}}" +sunbird_root_user_firstname="{{sunbird_root_user_firstname}}" +sunbird_root_user_lastname="{{sunbird_root_user_lastname}}" +sunbird_root_user_username="{{sunbird_root_user_username}}" +sunbird_root_user_password="{{sunbird_root_user_password}}" +sunbird_root_user_email="{{sunbird_root_user_email}}" +sunbird_root_user_phone="{{sunbird_root_user_phone}}" +ekstep_proxy_base_url="{{ekstep_proxy_base_url}}" +ekstep_api_key="{{ekstep_api_key}}" +sunbird_es_host="{{sunbird_es_host}}" +proto="{{proto}}" +proxy_server_name="{{proxy_server_name}}" +sunbird_api_auth_token="{{sunbird_api_auth_token}}" +sunbird_analytics_base_url="{{ekstep_proxy_base_url}}" +register_channel_api_endpoint="$ekstep_proxy_base_url/api/channel/v3/create" +register_hashtag_api_endpoint="$sunbird_analytics_base_url/api/data/v3/tag/register" +create_user_api_endpoint="$proto://$proxy_server_name/api/user/v1/create" +add_user_api_endpoint="$proto://$proxy_server_name/api/org/v1/member/add" +assign_role_api_endpoint="$proto://$proxy_server_name/api/user/v1/role/assign" + + +# Mandatory validation for user configured fields +validateConfigFields() { + validateField "sunbird_custodian_tenant_name" "$sunbird_custodian_tenant_name"; + validateField "sunbird_custodian_tenant_description" "$sunbird_custodian_tenant_description"; + validateField "sunbird_custodian_tenant_channel" "$sunbird_custodian_tenant_channel"; + validateField "sunbird_root_user_firstname" "$sunbird_root_user_firstname"; + validateField "sunbird_root_user_username" "$sunbird_root_user_username"; + validateField "sunbird_root_user_password" "$sunbird_root_user_password"; + validateField "sunbird_root_user_email" "$sunbird_root_user_email"; + validateField "sunbird_root_user_phone" "$sunbird_root_user_phone"; +} + +validateField() { + fieldName="$1"; + fieldValue="$2"; + if [ -z "$fieldValue" ]; + then + echo "Mandatory field - ""$fieldName"" - is not configured. Exiting System Initialisation Program..."; + exit 1; + fi +} + +# slug is generated from channel +# slug value->(left and right trim)->(replace space with hyphen)->(remove characters other than hyphen,alphabets,numbers)- +# ->(replace hyphen sequences with a single hypen char)->(conversion to lower case)->channel value +# sample current time - 2018-09-10 16:20:26:605+0000 +initializeVariables() { + sunbird_custodian_tenant_slug="$(echo -n ""$sunbird_custodian_tenant_channel"" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//' | sed -e 's/\s/-/g' | sed -e 's/[^a-zA-Z0-9-]//g' | tr -s '-' | tr A-Z a-z)" + currenttime=$(date +'%F %T:%3N%z') + if [ -z "$sunbird_custodian_tenant_slug" ] || [ -z "$currenttime" ]; + then + echo "System Initialisation failed. Unable to initialise variables."; + exit 1; + fi +} + +# fetches org id with the configured channel, if exists, from sunbird.organisation table +# org id will be set in sunbird_custodian_tenant_id variable +getExistingCustodianTenantId() { + sunbird_custodian_tenant_id=$(cqlsh -e "select id from sunbird.organisation where isrootorg=true and channel='""$sunbird_custodian_tenant_channel""' allow filtering;" | awk 'FNR == 4 {print}' | sed 's/ //g') +} + +# New id is generated using following approach +# 1. time in milli secs + random number(0-999999 range) +# 2. left shift the result from step 1 by 13 +# 3. append 0 at both ends of the result from step 2 +# 4. generated id will be set in sunbird_custodian_tenant_id variable +getNewCustodianTenantId() { + sunbird_custodian_tenant_id='0'$((($(date +%s%3N)+$(jot -r 1 0 999999))<<13))'0'; +} + +# fetches value from system_settings table for a given id +getValueFromSystemSettings() { + system_settings_id="$1"; + system_settings_value=$(cqlsh -e "select value from sunbird.system_settings where id='""$system_settings_id""';" | awk 'FNR == 4 {print}' | sed 's/ //g') +} + +# sets value and field in system_settings table for a given id +setValueInSystemSettings() { + system_settings_id="$1"; + system_settings_value="$2"; + cqlsh -e "update sunbird.system_settings set value='""$system_settings_value""',field='""$system_settings_id""' where id='""$system_settings_id""';" +} + +# creates a new entry in system_settings table with the given values +setPropertyInSystemSettings() { + system_settings_id="$1"; + system_settings_field="$2"; + system_settings_value="$3"; + cqlsh -e "insert into sunbird.system_settings(id,field,value) values('""$system_settings_id""','""$system_settings_field""','""$system_settings_value""');" +} + +# calls channel registration api +# response code will be set in register_channel_response_code variable +registerChannel() { + register_channel_response_code=$(curl -o /dev/null -s -w "%{http_code}\n" \ + -X POST $register_channel_api_endpoint \ + -H 'authorization: Bearer '"$ekstep_api_key" \ + -H 'cache-control: no-cache' \ + -H 'content-type: application/json' \ + -d '{ + "request": { + "channel": { + "name":"'"$sunbird_custodian_tenant_channel"'", + "description":"'"$sunbird_custodian_tenant_description"'", + "code":"'"$sunbird_custodian_tenant_id"'" + } + } + }') +} + +# calls hashtag registration api +# response code will be set in register_hashtag_response_code variable +registerHashTag() { + register_hashtag_response_code=$(curl -o /dev/null -s -w "%{http_code}\n" \ + -X POST $register_hashtag_api_endpoint/$sunbird_custodian_tenant_id \ + -H 'authorization: Bearer '"$ekstep_api_key" \ + -H 'cache-control: no-cache' \ + -H 'content-type: application/json' \ + -d '{}') +} + +# creates a record in cassandra - sunbird.organisation table +createOrgInCassandra() { + sunbird_cassandra_org_insert_query="insert into sunbird.organisation \ + (orgname,description,channel,slug,id,hashtagid, \ + rootorgid,createddate,createdby,isrootorg,isdefault, status) values \ + ('""$sunbird_custodian_tenant_name""', '""$sunbird_custodian_tenant_description""', \ + '""$sunbird_custodian_tenant_channel""', '""$sunbird_custodian_tenant_slug""', \ + '""$sunbird_custodian_tenant_id""', '""$sunbird_custodian_tenant_id""', \ + '""$sunbird_custodian_tenant_id""', '""$currenttime""', 'system', true, true, 1);" + + cqlsh -e "$sunbird_cassandra_org_insert_query" +} + +# creates a record in ES - index=searchindex, type=org +createOrgInES() { + es_host="$(echo "$sunbird_es_host" | cut -d ',' -f1)" + es_create_org_response=$(curl -X PUT $es_host:9200/searchindex/org/$sunbird_custodian_tenant_id \ + -H 'cache-control: no-cache' \ + -H 'content-type: application/json' \ + -d '{ + "orgName":"'"$sunbird_custodian_tenant_name"'", + "description":"'"$sunbird_custodian_tenant_description"'", + "channel":"'"$sunbird_custodian_tenant_channel"'", + "slug":"'"$sunbird_custodian_tenant_slug"'", + "id":"'"$sunbird_custodian_tenant_id"'", + "identifier":"'"$sunbird_custodian_tenant_id"'", + "hashTagId":"'"$sunbird_custodian_tenant_id"'", + "rootOrgId":"'"$sunbird_custodian_tenant_id"'", + "createdDate":"'"$currenttime"'", + "createdBy":"system", + "isRootOrg":true, + "isDefault":true, + "status":1 + }') +} + +# sunbird_es_host variable can have 1 to n entries separated by comma +# fetch operation happens from the first host in the list +fetchOrgFromES() { + es_host="$(echo "$sunbird_es_host" | cut -d ',' -f1)" + es_fetch_org_response=$(curl -X GET $es_host:9200/searchindex/org/$sunbird_custodian_tenant_id) +} + +# generates keycloak user token with the configured user credentials +# generated token will be set in keycloak_access_token variable +# keycloak_access_token variable will be blank, if the user is not yet created in sunbird +getKeycloakToken() { + sunbird_login_id="$sunbird_root_user_username"'@'"$sunbird_custodian_tenant_channel" + keycloak_access_token=$(curl -s -X POST $proto://$proxy_server_name/auth/realms/sunbird/protocol/openid-connect/token \ + -H 'cache-control: no-cache' \ + -H 'content-type: application/x-www-form-urlencoded' \ + -d 'client_id=admin-cli&username='"$sunbird_login_id"'&password='"$sunbird_root_user_password"'&grant_type=password' | jq '.access_token' | tr -d "\"") +} + +# calls user creation api with the configured user details +# response will be set in user_creation_response variable +createUser() { + user_creation_response=$(curl -X POST $create_user_api_endpoint \ + -H 'Cache-Control: no-cache' \ + -H 'Content-Type: application/json' \ + -H 'accept: application/json' \ + -H 'authorization: Bearer '"$sunbird_api_auth_token" \ + -d '{ + "request": { + "firstName":"'"$sunbird_root_user_firstname"'", + "lastName":"'"$sunbird_root_user_lastname"'", + "userName":"'"$sunbird_root_user_username"'", + "password":"'"$sunbird_root_user_password"'", + "email":"'"$sunbird_root_user_email"'", + "phone":"'"$sunbird_root_user_phone"'", + "channel": "'"$sunbird_custodian_tenant_channel"'", + "emailVerified": true, + "phoneVerified": true + } + }') +} + +# calls add member to organisation api +# response will be set in add_user_response variable +addUserToCustodianOrg() { + getKeycloakToken + add_user_response=$(curl -X POST $add_user_api_endpoint \ + -H 'Cache-Control: no-cache' \ + -H 'Content-Type: application/json' \ + -H 'accept: application/json' \ + -H 'authorization: Bearer '"$sunbird_api_auth_token" \ + -H 'x-authenticated-user-token: '"$keycloak_access_token" \ + -d '{ + "request": { + "organisationId": "'"$sunbird_custodian_tenant_id"'", + "userId": "'"$sunbird_root_user_id"'", + "roles": ["ORG_ADMIN"] + } + }') +} + +# calls assign role to user api +# response will be set in assign_role_response variable +assignRoleToRootUser() { + getKeycloakToken + assign_role_response=$(curl -X POST $assign_role_api_endpoint \ + -H 'Cache-Control: no-cache' \ + -H 'Content-Type: application/json' \ + -H 'accept: application/json' \ + -H 'authorization: Bearer '"$sunbird_api_auth_token" \ + -H 'x-authenticated-user-token: '"$keycloak_access_token" \ + -d '{ + "request": { + "organisationId": "'"$sunbird_custodian_tenant_id"'", + "userId": "'"$sunbird_root_user_id"'", + "roles": ["ORG_ADMIN"] + } + }') +} + +# Check whether all mandatory fields are configured +validateConfigFields; + +# Initialise the required variables +initializeVariables; + +# 1. Fetch systemInitialisationStatus from cassandra sunbird.system_settings table +# 2. If systemInitialisationStatus is empty, set it to SYSTEM_UNINITIALISED +# 3. Fetch systemInitialisationStatus again from cassandra +# 4. if systemInitialisationStatus is still empty, then throw cassandra connection error +getValueFromSystemSettings "systemInitialisationStatus"; +if [ -z "$system_settings_value" ]; +then + echo "Adding systemInitialisationStatus field to System Settings table..."; + setValueInSystemSettings "systemInitialisationStatus" "SYSTEM_UNINITIALISED"; +fi +getValueFromSystemSettings "systemInitialisationStatus"; +if [ -z "$system_settings_value" ]; +then + echo "Unable to connect to Cassandra. Exiting program..."; + exit 1; +fi + +# Exit gracefully if the system is already initialised +if [ "$system_settings_value" = "SYSTEM_INITIALISED" ]; +then + echo "System already Initialised. Exiting program..."; + exit 0; +fi + +# Start of system initialisation process +# Stage 1 - create first organisation in cassandra database, if not exists +# 1. Fetch org id for the configured channel from cassandra - sunbird.organisation table +# 2. If org id exists, skip stage 1 +# 3. If org id does not exists, insert the record into cassandra database +# 4. Fetch org id again and validate whether cassandra insertion was successful +# 5. Incase of insertion failure, exit the program with error status +# 6. At the end of stage 1, sunbird_custodian_tenant_id will have org id in all scenarios +echo "Starting System Initialisation..."; +getExistingCustodianTenantId; +if [ -z "$sunbird_custodian_tenant_id" ]; +then + echo "Creating Custodian Organisation in Cassandra..."; + getNewCustodianTenantId; + createOrgInCassandra; + getExistingCustodianTenantId; + if [ -z "$sunbird_custodian_tenant_id" ]; + then + echo "Custodian Organisation creation FAILED in Cassandra."; + exit 1; + else + echo "Custodian Organisation is created in Cassandra."; + fi +else + echo "Already a Tenant Organisation exists with the configured channel - ""$sunbird_custodian_tenant_channel"; + echo "Making Tenant Organisation with Id - ""$sunbird_custodian_tenant_id"" as Custodian Organisation..."; +fi + +# Stage 2 - create first organisation in elastic search, if not exists +# 1. Fetch the org data from elastic search using org id +# 2. If org exists, skip the record creation in elastic search +# 3. If org does not exists, create the record in elastic search +# 4. After record creation, fetch the org data again and validate whether record creation was successfull +# 5. If record creation had failed, exit the program with error status +# 6. Set systemInitialisationStatus to CUSTODIAN_ORG_CREATED, once record creation is successful +fetchOrgFromES; +isOrgFoundInES=$(echo -n "$es_fetch_org_response" | jq '.found' | tr -d "\""); +if [ "$isOrgFoundInES" = "false" ]; +then + echo "Syncing Custodian Organisation data to Elastic Search..."; + createOrgInES; + fetchOrgFromES; + isOrgFoundInES=$(echo -n "$es_fetch_org_response" | jq '.found' | tr -d "\""); + if [ "$isOrgFoundInES" = "true" ]; + then + echo "Custodian Organisation data synced to Elastic Search."; + setValueInSystemSettings "systemInitialisationStatus" "CUSTODIAN_ORG_CREATED"; + else + echo "System Initialisation failed. Unable to sync custodian organisation data to Elastic Search."; + exit 1; + fi +elif [ "$isOrgFoundInES" = "true" ]; +then + echo "Custodian Organisation data is already available in Elastic Search."; + getValueFromSystemSettings "systemInitialisationStatus"; + if [ "$system_settings_value" = "SYSTEM_UNINITIALISED" ]; + then + setValueInSystemSettings "systemInitialisationStatus" "CUSTODIAN_ORG_CREATED"; + fi +else + echo "System Initialisation failed. Unable to fetch data from Elastic Search - index=searchindex, type=org"; + exit 1; +fi + +# Stage 3 - Channel Registration +# 1. Channel registration happens, only if org is already created in cassandra and ES +# 2. If channel registration is successful, set systemInitialisationStatus as CUSTODIAN_ORG_CHANNEL_REGISTERED +# 3. If channel registration is unsuccessful, exit the program with error status +getValueFromSystemSettings "systemInitialisationStatus"; +if [ "$system_settings_value" = "CUSTODIAN_ORG_CREATED" ]; +then + echo "Registering Custodian Organisation Channel..."; + registerChannel; + if [ "$register_channel_response_code" = "200" ]; + then + echo "Custodian Organisation Channel Registered Successfully."; + setValueInSystemSettings "systemInitialisationStatus" "CUSTODIAN_ORG_CHANNEL_REGISTERED"; + else + echo "System Initialisation failed due to Custodian Organisation Channel Registration failure."; + exit 1; + fi +fi + +# Stage 4 - HashTag Registration +# 1. HashTag registration happens only after successful channel registration +# 2. If hashTag registration is successful, set systemInitialisationStatus as CUSTODIAN_ORG_HASHTAG_REGISTERED +# 3. If hashTag registration is unsuccessful, exit the program with error status +getValueFromSystemSettings "systemInitialisationStatus"; +if [ "$system_settings_value" = "CUSTODIAN_ORG_CHANNEL_REGISTERED" ]; +then + echo "Registering Custodian Organisation HashTag for Analytics..."; + registerHashTag; + if [ "$register_hashtag_response_code" = "200" ]; + then + echo "Custodian Organisation HashTag Registered Successfully."; + setValueInSystemSettings "systemInitialisationStatus" "CUSTODIAN_ORG_HASHTAG_REGISTERED"; + else + echo "System Initialisation failed due to Custodian Organisation HashTag Registration failure."; + exit 1; + fi +fi + +# On successful completion of stage 4, custodianOrgId and custodianOrgChannel will be set in system_settings table +setValueInSystemSettings "custodianOrgId" "$sunbird_custodian_tenant_id"; +setValueInSystemSettings "custodianOrgChannel" "$sunbird_custodian_tenant_channel"; + +# Stage 5 - User creation with ORG_ADMIN rights +# 1. User creation happens only after successful hashtag registration +# 2. User is created in sunbird with configured user details +# 3. The created user will be the ORG_ADMIN of the custodian organisation created through stages 1 to 4 +# 4. On successful user creation, systemInitialisationStatus will be set as SYS_ADMIN_USER_CREATED +getValueFromSystemSettings "systemInitialisationStatus"; +if [ "$system_settings_value" = "CUSTODIAN_ORG_HASHTAG_REGISTERED" ]; +then + echo "Creating Sunbird Root User..."; + createUser; + user_creation_status=$(echo -n "$user_creation_response" | jq '.params.status' | tr -d "\""); + if [ "$user_creation_status" = "success" ]; + then + sunbird_root_user_id=$(echo -n "$user_creation_response" | jq '.result.userId' | tr -d "\""); + assignRoleToRootUser; + assign_role_status=$(echo -n "$assign_role_response" | jq '.result.response' | tr -d "\""); + if [ "$assign_role_status" = "SUCCESS" ]; + then + echo "Sunbird root user created successfully"; + setValueInSystemSettings "systemInitialisationStatus" "SYS_ADMIN_USER_CREATED"; + else + echo "Sunbird root user - assign role failed."; + exit 1; + fi + else + echo "Sunbird root user creation failed"; + exit 1; + fi +fi + +# On successful user creation, systemInitialisationStatus will be set as SYSTEM_INITIALISED +getValueFromSystemSettings "systemInitialisationStatus"; +if [ "$system_settings_value" = "SYS_ADMIN_USER_CREATED" ]; +then + setValueInSystemSettings "systemInitialisationStatus" "SYSTEM_INITIALISED"; +fi +echo "System Initialisation Completed Successfully."; +# End of system initialisation process \ No newline at end of file diff --git a/ansible/roles/vm-agents-processexporter/tasks/main.yml b/ansible/roles/vm-agents-processexporter/tasks/main.yml index 54ebf4e564..f2a486a2ba 100755 --- a/ansible/roles/vm-agents-processexporter/tasks/main.yml +++ b/ansible/roles/vm-agents-processexporter/tasks/main.yml @@ -66,3 +66,8 @@ name: process-exporter state: started enabled: yes + +- name: unlinking process exporter which is not required + shell: "sudo rm -rf /opt/prometheus/exporters/process_exporter_current" + become: yes + when: not ( inventory_hostname in groups['kafka-ps'] or inventory_hostname in groups['secor-ps'] or inventory_hostname in groups['yarn-ps'] or inventory_hostname in groups['cassandra-ps'] or inventory_hostname in groups['es-ps'] or inventory_hostname in groups['logstash-ps'] or inventory_hostname in groups['analytics-ps'] ) diff --git a/ansible/roles/vm-agents-processexporter/templates/config.j2 b/ansible/roles/vm-agents-processexporter/templates/config.j2 index 87dec4ff39..7204c4f20a 100644 --- a/ansible/roles/vm-agents-processexporter/templates/config.j2 +++ b/ansible/roles/vm-agents-processexporter/templates/config.j2 @@ -1,54 +1,54 @@ process_names: -{% if 'kafka-ps' in group_names and hostvars[inventory_hostname]['ansible_default_ipv4']['address'] in groups['kafka-ps'] %} +{% if hostvars[inventory_hostname]['ansible_default_ipv4']['address'] in groups['kafka-ps'] %} - name: "kafka" comm: - java cmdline: - .+kafka.+ {% endif %} -{% if 'secor-ps' in group_names and hostvars[inventory_hostname]['ansible_default_ipv4']['address'] in groups['secor-ps'] %} +{% if hostvars[inventory_hostname]['ansible_default_ipv4']['address'] in groups['secor-ps'] %} - name: "secor" comm: - java cmdline: - .+secor.+ {% endif %} -{% if 'kafka-ps' in group_names and hostvars[inventory_hostname]['ansible_default_ipv4']['address'] in groups['kafka-ps'] %} +{% if hostvars[inventory_hostname]['ansible_default_ipv4']['address'] in groups['kafka-ps'] %} - name: "zookeeper" comm: - java cmdline: - .+zookeeper.+ {% endif %} -{% if 'yarn-ps' in group_names and hostvars[inventory_hostname]['ansible_default_ipv4']['address'] in groups['yarn-ps'] %} +{% if hostvars[inventory_hostname]['ansible_default_ipv4']['address'] in groups['yarn-ps'] %} - name: "yarn" comm: - java cmdline: - .+yarn.+ {% endif %} -{% if 'cassandra-ps' in group_names and hostvars[inventory_hostname]['ansible_default_ipv4']['address'] in groups['cassandra-ps'] %} +{% if hostvars[inventory_hostname]['ansible_default_ipv4']['address'] in groups['cassandra-ps'] %} - name: "cassandra" comm: - java cmdline: - .+cassandra.+ {% endif %} -{% if 'es-ps' in group_names and hostvars[inventory_hostname]['ansible_default_ipv4']['address'] in groups['es-ps'] %} +{% if hostvars[inventory_hostname]['ansible_default_ipv4']['address'] in groups['es-ps'] %} - name: "elasticsearch" comm: - java cmdline: - .+elasticsearch.+ {% endif %} -{% if 'logstash-ps' in group_names and hostvars[inventory_hostname]['ansible_default_ipv4']['address'] in groups['logstash-ps'] %} +{% if hostvars[inventory_hostname]['ansible_default_ipv4']['address'] in groups['logstash-ps'] %} - name: "logstash" comm: - java cmdline: - .+logstash.+ {% endif %} -{% if 'analytics-ps' in group_names and hostvars[inventory_hostname]['ansible_default_ipv4']['address'] in groups['analytics-ps'] %} +{% if hostvars[inventory_hostname]['ansible_default_ipv4']['address'] in groups['analytics-ps'] %} - name: "analyticsapi" comm: - java diff --git a/ansible/rotatekeys.yml b/ansible/rotatekeys.yml deleted file mode 100644 index 6f06772cbd..0000000000 --- a/ansible/rotatekeys.yml +++ /dev/null @@ -1,9 +0,0 @@ ---- -- hosts: all - vars: - - ansible_ssh_user: "{{ssh_user}}" - - ansible_ssh_private_key_file: "{{ssh_private_file}}" - become: yes - gather_facts: false - roles: - - changekey diff --git a/ansible/run_command.yml b/ansible/run_command.yml index 350a988ff0..e54880135d 100644 --- a/ansible/run_command.yml +++ b/ansible/run_command.yml @@ -1,3 +1,4 @@ +# This playbook uses all as host. Run this playbook with --limit pattern - hosts: all vars_files: - ['{{inventory_dir}}/secrets.yml', 'secrets/{{env}}.yml'] @@ -13,4 +14,4 @@ - debug: var: log verbosity: 4 - become: yes + become: yes \ No newline at end of file diff --git a/ansible/setup-dockerswarm.yml b/ansible/setup-dockerswarm.yml index 5f005bf43d..d14cbd8b39 100644 --- a/ansible/setup-dockerswarm.yml +++ b/ansible/setup-dockerswarm.yml @@ -52,9 +52,15 @@ - shell: "docker swarm join --token {{hostvars[groups['swarm-manager-1'][0]].managertoken}} {{hostvars[groups['swarm-manager-1'][0]].swarmmaster}}:2377" when: "docker_info.stdout.find('Swarm: active') == -1" -- name: Create network on manager - hosts: swarm-nodes:swarm-manager +- name: Drain Swarm Managers if not same node for manager and worker + hosts: swarm-manager become: yes gather_facts: yes - roles: - - bootstrap_swarm + tasks: + - shell: docker node update --availability active $(hostname) + when: + - groups['swarm-nodes']|length==1 + - groups['swarm-manager']==groups['swarm-nodes'] + register: result + - shell: docker node update --availability drain $(hostname) + when: result is skipped diff --git a/cloud/azure/arm/swarm/acs-engine/common/azuredeploy.json b/cloud/azure/arm/swarm/acs-engine/common/azuredeploy.json new file mode 100644 index 0000000000..bb63477204 --- /dev/null +++ b/cloud/azure/arm/swarm/acs-engine/common/azuredeploy.json @@ -0,0 +1,1059 @@ +{ + "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", + "contentVersion": "1.0.0.0", + "parameters": { + "agentpublicCount": { + "allowedValues": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100 + ], + "defaultValue": 3, + "metadata": { + "description": "The number of agents for the cluster. This value can be from 1 to 100" + }, + "type": "int" + }, + "agentpublicEndpointDNSNamePrefix": { + "metadata": { + "description": "Sets the Domain name label for the agent pool IP Address. The concatenation of the domain name label and the regional DNS zone make up the fully qualified domain name associated with the public IP address." + }, + "type": "string" + }, + "agentpublicSubnet": { + "defaultValue": "10.0.0.0/16", + "metadata": { + "description": "Sets the subnet of agent pool 'agentpublic'." + }, + "type": "string" + }, + "internalLBprivateIPAddress": { + "defaultValue": "10.0.0.100", + "metadata": { + "description": "IP of the internal load balancer" + }, + "type": "string" + }, + "agentpublicVMSize": { + "allowedValues": [ + "Standard_A10", + "Standard_A11", + "Standard_A2", + "Standard_A2_v2", + "Standard_A2m_v2", + "Standard_A3", + "Standard_A4", + "Standard_A4_v2", + "Standard_A4m_v2", + "Standard_A5", + "Standard_A6", + "Standard_A7", + "Standard_A8", + "Standard_A8_v2", + "Standard_A8m_v2", + "Standard_A9", + "Standard_D11", + "Standard_D11_v2", + "Standard_D11_v2_Promo", + "Standard_D12", + "Standard_D12_v2", + "Standard_D12_v2_Promo", + "Standard_D13", + "Standard_D13_v2", + "Standard_D13_v2_Promo", + "Standard_D14", + "Standard_D14_v2", + "Standard_D14_v2_Promo", + "Standard_D15_v2", + "Standard_D2", + "Standard_D2_v2", + "Standard_D2_v2_Promo", + "Standard_D3", + "Standard_D3_v2", + "Standard_D3_v2_Promo", + "Standard_D4", + "Standard_D4_v2", + "Standard_D4_v2_Promo", + "Standard_D5_v2", + "Standard_D5_v2_Promo", + "Standard_DS11", + "Standard_DS11_v2", + "Standard_DS11_v2_Promo", + "Standard_DS12", + "Standard_DS12_v2", + "Standard_DS12_v2_Promo", + "Standard_DS13", + "Standard_DS13_v2", + "Standard_DS13_v2_Promo", + "Standard_DS14", + "Standard_DS14_v2", + "Standard_DS14_v2_Promo", + "Standard_DS15_v2", + "Standard_DS2", + "Standard_DS2_v2", + "Standard_DS2_v2_Promo", + "Standard_DS3", + "Standard_DS3_v2", + "Standard_DS3_v2_Promo", + "Standard_DS4", + "Standard_DS4_v2", + "Standard_DS4_v2_Promo", + "Standard_DS5_v2", + "Standard_DS5_v2_Promo", + "Standard_F16", + "Standard_F16s", + "Standard_F2", + "Standard_F2s", + "Standard_F4", + "Standard_F4s", + "Standard_F8", + "Standard_F8s", + "Standard_G1", + "Standard_G2", + "Standard_G3", + "Standard_G4", + "Standard_G5", + "Standard_GS1", + "Standard_GS2", + "Standard_GS3", + "Standard_GS4", + "Standard_GS5", + "Standard_H16", + "Standard_H16m", + "Standard_H16mr", + "Standard_H16r", + "Standard_H8", + "Standard_H8m", + "Standard_L16s", + "Standard_L32s", + "Standard_L4s", + "Standard_L8s", + "Standard_M128ms", + "Standard_M128s", + "Standard_M64ms", + "Standard_NC12", + "Standard_NC24", + "Standard_NC24r", + "Standard_NC6", + "Standard_NV12", + "Standard_NV24", + "Standard_NV6" + ], + "defaultValue": "Standard_D3_v2", + "metadata": { + "description": "The size of the Virtual Machine." + }, + "type": "string" + }, + "firstConsecutiveStaticIP": { + "defaultValue": "172.16.0.5", + "metadata": { + "description": "Sets the static IP of the first master" + }, + "type": "string" + }, + "linuxAdminUsername": { + "metadata": { + "description": "User name for the Linux Virtual Machines (SSH or Password)." + }, + "type": "string" + }, + "location": { + "defaultValue": "", + "metadata": { + "description": "Sets the location for all resources in the cluster" + }, + "type": "string" + }, + "masterEndpointDNSNamePrefix": { + "metadata": { + "description": "Sets the Domain name label for the master IP Address. The concatenation of the domain name label and the regional DNS zone make up the fully qualified domain name associated with the public IP address." + }, + "type": "string" + }, + "masterSubnet": { + "defaultValue": "172.16.0.0/24", + "metadata": { + "description": "Sets the subnet of the master node(s)." + }, + "type": "string" + }, + "masterCount": { + "defaultValue": "1", + "metadata": { + "description": "Master nodes in the swarm" + }, + "type": "int" + }, + "masterVMSize": { + "allowedValues": [ + "Standard_A10", + "Standard_A11", + "Standard_A2", + "Standard_A2_v2", + "Standard_A2m_v2", + "Standard_A3", + "Standard_A4", + "Standard_A4_v2", + "Standard_A4m_v2", + "Standard_A5", + "Standard_A6", + "Standard_A7", + "Standard_A8", + "Standard_A8_v2", + "Standard_A8m_v2", + "Standard_A9", + "Standard_D11", + "Standard_D11_v2", + "Standard_D11_v2_Promo", + "Standard_D12", + "Standard_D12_v2", + "Standard_D12_v2_Promo", + "Standard_D13", + "Standard_D13_v2", + "Standard_D13_v2_Promo", + "Standard_D14", + "Standard_D14_v2", + "Standard_D14_v2_Promo", + "Standard_D15_v2", + "Standard_D2", + "Standard_D2_v2", + "Standard_D2_v2_Promo", + "Standard_D3", + "Standard_D3_v2", + "Standard_D3_v2_Promo", + "Standard_D4", + "Standard_D4_v2", + "Standard_D4_v2_Promo", + "Standard_D5_v2", + "Standard_D5_v2_Promo", + "Standard_DS11", + "Standard_DS11_v2", + "Standard_DS11_v2_Promo", + "Standard_DS12", + "Standard_DS12_v2", + "Standard_DS12_v2_Promo", + "Standard_DS13", + "Standard_DS13_v2", + "Standard_DS13_v2_Promo", + "Standard_DS14", + "Standard_DS14_v2", + "Standard_DS14_v2_Promo", + "Standard_DS15_v2", + "Standard_DS2", + "Standard_DS2_v2", + "Standard_DS2_v2_Promo", + "Standard_DS3", + "Standard_DS3_v2", + "Standard_DS3_v2_Promo", + "Standard_DS4", + "Standard_DS4_v2", + "Standard_DS4_v2_Promo", + "Standard_DS5_v2", + "Standard_DS5_v2_Promo", + "Standard_F16", + "Standard_F16s", + "Standard_F2", + "Standard_F2s", + "Standard_F4", + "Standard_F4s", + "Standard_F8", + "Standard_F8s", + "Standard_G1", + "Standard_G2", + "Standard_G3", + "Standard_G4", + "Standard_G5", + "Standard_GS1", + "Standard_GS2", + "Standard_GS3", + "Standard_GS4", + "Standard_GS5", + "Standard_H16", + "Standard_H16m", + "Standard_H16mr", + "Standard_H16r", + "Standard_H8", + "Standard_H8m", + "Standard_L16s", + "Standard_L32s", + "Standard_L4s", + "Standard_L8s", + "Standard_M128ms", + "Standard_M128s", + "Standard_M64ms", + "Standard_NC12", + "Standard_NC24", + "Standard_NC24r", + "Standard_NC6", + "Standard_NV12", + "Standard_NV24", + "Standard_NV6" + ], + "metadata": { + "description": "The size of the Virtual Machine." + }, + "type": "string" + }, + "nameSuffix": { + "defaultValue": "49420225", + "metadata": { + "description": "A string hash of the master DNS name to uniquely identify the cluster." + }, + "type": "string" + }, + "sshRSAPublicKey": { + "metadata": { + "description": "SSH public key used for auth to all Linux machines. Not Required. If not set, you must provide a password key." + }, + "type": "string" + }, + "targetEnvironment": { + "defaultValue": "AzurePublicCloud", + "metadata": { + "description": "The azure deploy environment. Currently support: AzurePublicCloud, AzureChinaCloud" + }, + "type": "string" + } + }, + "variables": { + "adminUsername": "[parameters('linuxAdminUsername')]", + "agentCustomScript": "[concat('/usr/bin/nohup /bin/bash -c \"/bin/bash /opt/azure/containers/',variables('configureClusterScriptFile'), ' ',variables('clusterInstallParameters'),' >> /var/log/azure/cluster-bootstrap.log 2>&1 &\" &')]", + "agentMaxVMs": 100, + "agentRunCmd": "[concat('runcmd:\n - [ /bin/bash, /opt/azure/containers/install-cluster.sh ]\n\n')]", + "agentRunCmdFile": "[concat(' - content: |\n #!/bin/bash\n ','sudo mkdir -p /var/log/azure\n ',variables('agentCustomScript'),'\n path: /opt/azure/containers/install-cluster.sh\n permissions: \"0744\"\n')]", + "agentpublicCount": "[parameters('agentpublicCount')]", + "agentpublicEndpointDNSNamePrefix": "[tolower(parameters('agentpublicEndpointDNSNamePrefix'))]", + "agentpublicIPAddressName": "[concat(variables('orchestratorName'), '-agent-ip-', variables('agentpublicEndpointDNSNamePrefix'), '-', variables('nameSuffix'))]", + "agentpublicIndex": 0, + "agentpublicLbBackendPoolName": "[concat(variables('orchestratorName'), '-agentpublic-', variables('nameSuffix'))]", + "agentpublicLbID": "[resourceId('Microsoft.Network/loadBalancers',variables('agentpublicLbName'))]", + "agentpublicLbIPConfigID": "[concat(variables('agentpublicLbID'),'/frontendIPConfigurations/', variables('agentpublicLbIPConfigName'))]", + "agentpublicLbIPConfigName": "[concat(variables('orchestratorName'), '-agentpublic-', variables('nameSuffix'))]", + "agentpublicLbName": "[concat(variables('orchestratorName'), '-agentpublic-', variables('nameSuffix'))]", + "agentprivateLbBackendPoolName": "[concat(variables('orchestratorName'), '-agentprivate-', variables('nameSuffix'))]", + "agentprivateLbID": "[resourceId('Microsoft.Network/loadBalancers',variables('agentprivateLbName'))]", + "agentprivateLbIPConfigID": "[concat(variables('agentprivateLbID'),'/frontendIPConfigurations/', variables('agentprivateLbIPConfigName'))]", + "agentprivateLbIPConfigName": "[concat(variables('orchestratorName'), '-agentprivate-', variables('nameSuffix'))]", + "agentprivateLbName": "[concat(variables('orchestratorName'), '-agentprivate-', variables('nameSuffix'))]", + "agentpublicSubnet": "[parameters('agentpublicSubnet')]", + "internalLBprivateIPAddress": "[parameters('internalLBprivateIPAddress')]", + "agentpublicSubnetName": "[concat(variables('orchestratorName'), '-agentpublicsubnet')]", + "agentpublicVMNamePrefix": "[concat(variables('orchestratorName'), '-agentpublic-', variables('nameSuffix'))]", + "agentpublicVMSize": "[parameters('agentpublicVMSize')]", + "agentpublicVMSizeTier": "[split(parameters('agentpublicVMSize'),'_')[0]]", + "agentpublicVnetSubnetID": "[concat(variables('vnetID'),'/subnets/',variables('agentpublicSubnetName'))]", + "apiVersionDefault": "2016-03-30", + "apiVersionStorageManagedDisks": "2016-04-30-preview", + "clusterInstallParameters": "[concat(variables('masterCount'), ' ',variables('masterVMNamePrefix'), ' ',variables('masterFirstAddrOctet4'), ' ',variables('adminUsername'),' ',variables('postInstallScriptURI'),' ',variables('masterFirstAddrPrefix'))]", + "configureClusterScriptFile": "configure-swarmmode-cluster.sh", + "location": "[variables('locations')[mod(add(2,length(parameters('location'))),add(1,length(parameters('location'))))]]", + "locations": [ + "[resourceGroup().location]", + "[parameters('location')]" + ], + "masterAvailabilitySet": "[concat(variables('orchestratorName'), '-master-availabilitySet-', variables('nameSuffix'))]", + "masterCount": "[parameters('masterCount')]", + "masterCustomScript": "[concat('/bin/bash -c \"/bin/bash /opt/azure/containers/',variables('configureClusterScriptFile'), ' ',variables('clusterInstallParameters'),' >> /var/log/azure/cluster-bootstrap.log 2>&1\"')]", + "masterEndpointDNSNamePrefix": "[tolower(parameters('masterEndpointDNSNamePrefix'))]", + "masterFirstAddrOctet4": "[variables('masterFirstAddrOctets')[3]]", + "masterFirstAddrOctets": "[split(parameters('firstConsecutiveStaticIP'),'.')]", + "masterFirstAddrPrefix": "[concat(variables('masterFirstAddrOctets')[0],'.',variables('masterFirstAddrOctets')[1],'.',variables('masterFirstAddrOctets')[2],'.')]", + "masterLbBackendPoolName": "[concat(variables('orchestratorName'), '-master-pool-', variables('nameSuffix'))]", + "masterLbID": "[resourceId('Microsoft.Network/loadBalancers',variables('masterLbName'))]", + "masterLbIPConfigID": "[concat(variables('masterLbID'),'/frontendIPConfigurations/', variables('masterLbIPConfigName'))]", + "masterLbIPConfigName": "[concat(variables('orchestratorName'), '-master-lbFrontEnd-', variables('nameSuffix'))]", + "masterLbInboundNatRules": [ + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'0')]" + }, + { + "id": "[concat(variables('masterSshPort22InboundNatRuleIdPrefix'),'0')]" + } + ], + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'1')]" + } + ], + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'2')]" + } + ], + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'3')]" + } + ], + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'4')]" + } + ] + ], + "masterLbName": "[concat(variables('orchestratorName'), '-master-lb-', variables('nameSuffix'))]", + "masterPublicIPAddressName": "[concat(variables('orchestratorName'), '-master-ip-', variables('masterEndpointDNSNamePrefix'), '-', variables('nameSuffix'))]", + "masterSshInboundNatRuleIdPrefix": "[concat(variables('masterLbID'),'/inboundNatRules/SSH-',variables('masterVMNamePrefix'))]", + "masterSshPort22InboundNatRuleIdPrefix": "[concat(variables('masterLbID'),'/inboundNatRules/SSHPort22-',variables('masterVMNamePrefix'))]", + "masterSshPort22InboundNatRuleNamePrefix": "[concat(variables('masterLbName'),'/SSHPort22-',variables('masterVMNamePrefix'))]", + "masterSubnet": "[parameters('masterSubnet')]", + "masterSubnetName": "[concat(variables('orchestratorName'), '-masterSubnet')]", + "masterVMNamePrefix": "[concat(variables('orchestratorName'), '-master-', variables('nameSuffix'), '-')]", + "masterVMSize": "[parameters('masterVMSize')]", + "masterVnetSubnetID": "[concat(variables('vnetID'),'/subnets/',variables('masterSubnetName'))]", + "maxVMsPerPool": 100, + "nameSuffix": "[parameters('nameSuffix')]", + "orchestratorName": "swarmm", + "osImageOffer": "UbuntuServer", + "osImagePublisher": "Canonical", + "osImageSKU": "16.04-LTS", + "osImageVersion": "16.04.201706191", + "postInstallScriptURI": "disabled", + "sshKeyPath": "[concat('/home/', variables('adminUsername'), '/.ssh/authorized_keys')]", + "sshRSAPublicKey": "[parameters('sshRSAPublicKey')]", + "storageAccountBaseName": "", + "storageAccountPrefixes": [], + "virtualNetworkName": "[concat(variables('orchestratorName'), '-vnet-', variables('nameSuffix'))]", + "vnetID": "[resourceId('Microsoft.Network/virtualNetworks',variables('virtualNetworkName'))]" + }, + "resources": [ + { + "apiVersion": "[variables('apiVersionDefault')]", + "location": "[variables('location')]", + "name": "[variables('agentpublicIPAddressName')]", + "properties": { + "dnsSettings": { + "domainNameLabel": "[variables('agentpublicEndpointDNSNamePrefix')]" + }, + "publicIPAllocationMethod": "Static" + }, + "type": "Microsoft.Network/publicIPAddresses" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "dependsOn": [ + "[concat('Microsoft.Network/publicIPAddresses/', variables('agentpublicIPAddressName'))]" + ], + "location": "[variables('location')]", + "name": "[variables('agentpublicLbName')]", + "properties": { + "backendAddressPools": [ + { + "name": "[variables('agentpublicLbBackendPoolName')]" + } + ], + "frontendIPConfigurations": [ + { + "name": "[variables('agentpublicLbIPConfigName')]", + "properties": { + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses',variables('agentpublicIPAddressName'))]" + } + } + } + ], + "inboundNatRules": [], + "loadBalancingRules": [ + { + "name": "LBRule80", + "properties": { + "backendAddressPool": { + "id": "[concat(variables('agentpublicLbID'), '/backendAddressPools/', variables('agentpublicLbBackendPoolName'))]" + }, + "backendPort": 80, + "enableFloatingIP": false, + "frontendIPConfiguration": { + "id": "[variables('agentpublicLbIPConfigID')]" + }, + "frontendPort": 80, + "idleTimeoutInMinutes": 5, + "loadDistribution": "Default", + "probe": { + "id": "[concat(variables('agentpublicLbID'),'/probes/tcp80Probe')]" + }, + "protocol": "tcp" + } + }, + { + "name": "LBRule443", + "properties": { + "backendAddressPool": { + "id": "[concat(variables('agentpublicLbID'), '/backendAddressPools/', variables('agentpublicLbBackendPoolName'))]" + }, + "backendPort": 443, + "enableFloatingIP": false, + "frontendIPConfiguration": { + "id": "[variables('agentpublicLbIPConfigID')]" + }, + "frontendPort": 443, + "idleTimeoutInMinutes": 5, + "loadDistribution": "Default", + "probe": { + "id": "[concat(variables('agentpublicLbID'),'/probes/tcp443Probe')]" + }, + "protocol": "tcp" + } + } + ], + "probes": [ + { + "name": "tcp80Probe", + "properties": { + "intervalInSeconds": "5", + "numberOfProbes": "2", + "port": 80, + "protocol": "tcp" + } + }, + { + "name": "tcp443Probe", + "properties": { + "intervalInSeconds": "5", + "numberOfProbes": "2", + "port": 443, + "protocol": "tcp" + } + } + ] + }, + "type": "Microsoft.Network/loadBalancers" + }, + { + "apiVersion": "[variables('apiVersionStorageManagedDisks')]", + "dependsOn": [ + "[concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))]", + "[variables('vnetID')]", + "[variables('agentpublicLbID')]", + "[variables('agentprivateLbID')]" + ], + "location": "[variables('location')]", + "name": "[concat(variables('agentpublicVMNamePrefix'), '-vmss')]", + "properties": { + "upgradePolicy": { + "mode": "Automatic" + }, + "virtualMachineProfile": { + "networkProfile": { + "networkInterfaceConfigurations": [ + { + "name": "nic", + "properties": { + "ipConfigurations": [ + { + "name": "nicipconfig", + "properties": { + "loadBalancerBackendAddressPools": [ + { + "id": "[concat(variables('agentpublicLbID'), '/backendAddressPools/', variables('agentpublicLbBackendPoolName'))]" + }, + { + "id": "[concat(variables('agentprivateLbID'), '/backendAddressPools/', variables('agentprivateLbBackendPoolName'))]" + } + ], + "subnet": { + "id": "[variables('agentpublicVnetSubnetID')]" + } + } + } + ], + "primary": "true" + } + } + ] + }, + "osProfile": { + "adminUsername": "[variables('adminUsername')]", + "computerNamePrefix": "[variables('agentpublicVMNamePrefix')]", + "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarmmode-cluster.sh\n permissions: \"0744\"\n\n',variables('agentRunCmdFile'),variables('agentRunCmd')))]", + "linuxConfiguration": { + "disablePasswordAuthentication": "true", + "ssh": { + "publicKeys": [ + { + "keyData": "[parameters('sshRSAPublicKey')]", + "path": "[variables('sshKeyPath')]" + } + ] + } + } + }, + "storageProfile": { + "imageReference": { + "offer": "[variables('osImageOffer')]", + "publisher": "[variables('osImagePublisher')]", + "sku": "[variables('osImageSKU')]", + "version": "[variables('osImageVersion')]" + }, + "osDisk": { + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "extensionProfile": { + "extensions": [ + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('agentpublicVMNamePrefix'), '-SwarmNodePostInstallScript')]", + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "settings": { + "fileUris": [ + "https://raw.githubusercontent.com/project-sunbird/sunbird-devops/master/deploy/docker-swam-node-post-install.sh" + ], + "commandToExecute": "sh docker-swam-node-post-install.sh" + } + } + } + ] + } + } + }, + "sku": { + "capacity": "[variables('agentpublicCount')]", + "name": "[variables('agentpublicVMSize')]", + "tier": "[variables('agentpublicVMSizeTier')]" + }, + "tags": { + "creationSource": "[concat('acsengine-', variables('agentpublicVMNamePrefix'), '-vmss')]" + }, + "type": "Microsoft.Compute/virtualMachineScaleSets" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "location": "[variables('location')]", + "name": "[variables('virtualNetworkName')]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "[variables('masterSubnet')]", + "[variables('agentpublicSubnet')]" + ] + }, + "subnets": [ + { + "name": "[variables('masterSubnetName')]", + "properties": { + "addressPrefix": "[variables('masterSubnet')]" + } + }, + { + "name": "[variables('agentpublicSubnetName')]", + "properties": { + "addressPrefix": "[variables('agentpublicSubnet')]" + } + } + ] + }, + "type": "Microsoft.Network/virtualNetworks" + }, + { + "type": "Microsoft.Network/loadBalancers", + "name": "[variables('agentprivateLbName')]", + "location": "[variables('location')]", + "apiVersion": "[variables('apiVersionDefault')]", + "dependsOn": [ + "[variables('vnetID')]" + ], + "properties": { + "frontendIPConfigurations": [ + { + "name": "[variables('agentprivateLbIPConfigName')]", + "properties": { + "subnet": { + "id": "[variables('agentpublicVnetSubnetID')]" + }, + "privateIPAddress": "[variables('internalLBprivateIPAddress')]", + "privateIPAllocationMethod": "Static" + } + } + ], + "backendAddressPools": [ + { + "name": "[variables('agentprivateLbBackendPoolName')]" + } + ], + "inboundNatPools": [], + "loadBalancingRules": [ + { + "name": "LogRule", + "properties": { + "loadDistribution": "Default", + "frontendIPConfiguration": { + "id": "[variables('agentprivateLbIPConfigID')]" + }, + "backendAddressPool": { + "id": "[concat(variables('agentprivateLbID'), '/backendAddressPools/', variables('agentprivateLbBackendPoolName'))]" + }, + "protocol": "Tcp", + "frontendPort": 51415, + "backendPort": 51415, + "enableFloatingIP": false, + "idleTimeoutInMinutes": 5, + "probe": { + "id": "[concat(variables('agentprivateLbID'),'/probes/tcp51415Probe')]" + } + } + }, + { + "name": "LogstashRule", + "properties": { + "loadDistribution": "Default", + "frontendIPConfiguration": { + "id": "[variables('agentprivateLbIPConfigID')]" + }, + "backendAddressPool": { + "id": "[concat(variables('agentprivateLbID'), '/backendAddressPools/', variables('agentprivateLbBackendPoolName'))]" + }, + "protocol": "Tcp", + "frontendPort": 5044, + "backendPort": 5044, + "enableFloatingIP": false, + "idleTimeoutInMinutes": 5, + "probe": { + "id": "[concat(variables('agentprivateLbID'),'/probes/tcp5044Probe')]" + } + } + } + ], + "probes": [ + { + "name": "tcp51415Probe", + "properties": { + "intervalInSeconds": "5", + "numberOfProbes": "2", + "port": 51415, + "protocol": "tcp" + } + }, + { + "name": "tcp5044Probe", + "properties": { + "intervalInSeconds": "5", + "numberOfProbes": "2", + "port": 5044, + "protocol": "tcp" + } + } + ] + } + }, + { + "apiVersion": "[variables('apiVersionStorageManagedDisks')]", + "location": "[variables('location')]", + "name": "[variables('masterAvailabilitySet')]", + "properties": { + "managed": "true", + "platformFaultDomainCount": "2", + "platformUpdateDomainCount": "3" + }, + "type": "Microsoft.Compute/availabilitySets" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "location": "[variables('location')]", + "name": "[variables('masterPublicIPAddressName')]", + "properties": { + "dnsSettings": { + "domainNameLabel": "[variables('masterEndpointDNSNamePrefix')]" + }, + "publicIPAllocationMethod": "Static" + }, + "type": "Microsoft.Network/publicIPAddresses" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "dependsOn": [ + "[concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))]" + ], + "location": "[variables('location')]", + "name": "[variables('masterLbName')]", + "properties": { + "backendAddressPools": [ + { + "name": "[variables('masterLbBackendPoolName')]" + } + ], + "frontendIPConfigurations": [ + { + "name": "[variables('masterLbIPConfigName')]", + "properties": { + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses',variables('masterPublicIPAddressName'))]" + } + } + } + ] + }, + "type": "Microsoft.Network/loadBalancers" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "copy": { + "count": "[variables('masterCount')]", + "name": "masterLbLoopNode" + }, + "dependsOn": [ + "[variables('masterLbID')]" + ], + "location": "[variables('location')]", + "name": "[concat(variables('masterLbName'), '/', 'SSH-', variables('masterVMNamePrefix'), copyIndex())]", + "properties": { + "backendPort": 22, + "enableFloatingIP": false, + "frontendIPConfiguration": { + "id": "[variables('masterLbIPConfigID')]" + }, + "frontendPort": "[copyIndex(2200)]", + "protocol": "tcp" + }, + "type": "Microsoft.Network/loadBalancers/inboundNatRules" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "dependsOn": [ + "[variables('masterLbID')]" + ], + "location": "[variables('location')]", + "name": "[concat(variables('masterSshPort22InboundNatRuleNamePrefix'), '0')]", + "properties": { + "backendPort": 2222, + "enableFloatingIP": false, + "frontendIPConfiguration": { + "id": "[variables('masterLbIPConfigID')]" + }, + "frontendPort": "22", + "protocol": "tcp" + }, + "type": "Microsoft.Network/loadBalancers/inboundNatRules" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "copy": { + "count": "[variables('masterCount')]", + "name": "nicLoopNode" + }, + "dependsOn": [ + "[variables('vnetID')]", + "[variables('masterLbID')]", + "[concat(variables('masterSshPort22InboundNatRuleIdPrefix'),'0')]", + "[concat(variables('masterSshInboundNatRuleIdPrefix'),copyIndex())]" + ], + "location": "[variables('location')]", + "name": "[concat(variables('masterVMNamePrefix'), 'nic-', copyIndex())]", + "properties": { + "ipConfigurations": [ + { + "name": "ipConfigNode", + "properties": { + "loadBalancerBackendAddressPools": [ + { + "id": "[concat(variables('masterLbID'), '/backendAddressPools/', variables('masterLbBackendPoolName'))]" + } + ], + "loadBalancerInboundNatRules": "[variables('masterLbInboundNatRules')[copyIndex()]]", + "privateIPAddress": "[concat(variables('masterFirstAddrPrefix'), copyIndex(int(variables('masterFirstAddrOctet4'))))]", + "privateIPAllocationMethod": "Static", + "subnet": { + "id": "[variables('masterVnetSubnetID')]" + } + } + } + ] + }, + "type": "Microsoft.Network/networkInterfaces" + }, + { + "apiVersion": "[variables('apiVersionStorageManagedDisks')]", + "copy": { + "count": "[variables('masterCount')]", + "name": "vmLoopNode" + }, + "dependsOn": [ + "[concat('Microsoft.Network/networkInterfaces/', variables('masterVMNamePrefix'), 'nic-', copyIndex())]", + "[concat('Microsoft.Compute/availabilitySets/',variables('masterAvailabilitySet'))]" + ], + "location": "[variables('location')]", + "name": "[concat(variables('masterVMNamePrefix'), copyIndex())]", + "properties": { + "availabilitySet": { + "id": "[resourceId('Microsoft.Compute/availabilitySets',variables('masterAvailabilitySet'))]" + }, + "hardwareProfile": { + "vmSize": "[variables('masterVMSize')]" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces',concat(variables('masterVMNamePrefix'), 'nic-', copyIndex()))]" + } + ] + }, + "osProfile": { + "adminUsername": "[variables('adminUsername')]", + "computername": "[concat(variables('masterVMNamePrefix'), copyIndex())]", + "customData": "[base64('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarmmode-cluster.sh\n permissions: \"0744\"\n\n')]", + "linuxConfiguration": { + "disablePasswordAuthentication": "true", + "ssh": { + "publicKeys": [ + { + "keyData": "[variables('sshRSAPublicKey')]", + "path": "[variables('sshKeyPath')]" + } + ] + } + } + }, + "storageProfile": { + "imageReference": { + "offer": "[variables('osImageOffer')]", + "publisher": "[variables('osImagePublisher')]", + "sku": "[variables('osImageSKU')]", + "version": "[variables('osImageVersion')]" + }, + "osDisk": { + "caching": "ReadWrite", + "createOption": "FromImage" + } + } + }, + "tags": { + "creationSource": "[concat('acsengine-', variables('masterVMNamePrefix'), copyIndex())]" + }, + "type": "Microsoft.Compute/virtualMachines" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "copy": { + "count": "[variables('masterCount')]", + "name": "vmLoopNode" + }, + "dependsOn": [ + "[concat('Microsoft.Compute/virtualMachines/', concat(variables('masterVMNamePrefix'), copyIndex()))]" + ], + "location": "[variables('location')]", + "name": "[concat(variables('masterVMNamePrefix'), copyIndex(), '/configuremaster')]", + "properties": { + "publisher": "Microsoft.OSTCExtensions", + "settings": { + "commandToExecute": "[variables('masterCustomScript')]", + "fileUris": [] + }, + "type": "CustomScriptForLinux", + "typeHandlerVersion": "1.4" + }, + "type": "Microsoft.Compute/virtualMachines/extensions" + } + ], + "outputs": { + "agentpublicFQDN": { + "type": "string", + "value": "[reference(concat('Microsoft.Network/publicIPAddresses/', variables('agentpublicIPAddressName'))).dnsSettings.fqdn]" + }, + "masterFQDN": { + "type": "string", + "value": "[reference(concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))).dnsSettings.fqdn]" + } + } +} \ No newline at end of file diff --git a/cloud/azure/arm/swarm/acs-engine/production.sample/README.md b/cloud/azure/arm/swarm/acs-engine/production.sample/README.md new file mode 100644 index 0000000000..d64843bf8c --- /dev/null +++ b/cloud/azure/arm/swarm/acs-engine/production.sample/README.md @@ -0,0 +1,80 @@ +### Understanding deploy parameters +Below is a sample file with comments: +``` +{ + "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#", + "contentVersion": "1.0.0.0", + "parameters": { + "agentpublicCount": { + // number of agents you want to launch + // agent machines run your application services. + // So, if you detect services not starting up or running slow + // bump up the number of agents + "value": 1 + }, + "agentpublicEndpointDNSNamePrefix": { + // this is the DNS Name for your application servers + "value": "production-1b" + }, + "agentpublicSubnet": { + // private subnet range for your agent machines + "value": "10.1.0.0/16" + }, + "internalLBprivateIPAddress": { + "value": "10.1.0.100" + }, + "agentpublicVMSize": { + // the agent VM size + // Note that you cannot change it once you have set it + // Standard_F2s is a good 2 core 4 gig minimum machine to start with + "value": "Standard_F2s" + }, + "firstConsecutiveStaticIP": { + "value": "172.16.1.5" + }, + "linuxAdminUsername": { + // the linux administrator user name + // will be used to SSH + "value": "ops" + }, + "location": { + // Any Azure location which servers your interest + "value": "centralindia" + }, + "masterEndpointDNSNamePrefix": { + // DNS Name for master server + // master server is used to administer application services + "value": "production-1a" + }, + "masterSubnet": { + // master server subnet + "value": "172.16.1.0/24" + }, + "masterVMSize": { + // This dependends on your work load. + // Standard_F2s is a good starting configuration + "value": "Standard_F2s" + }, + "masterCount": { + // Need an odd number of servers + // 1 is a risky configuration with no fail over + // Use 3 or more when you have passed testing phase + "value": 1 + }, + "sshRSAPublicKey": { + // Put in the RSA 2048 bit SSH Public key for SSH login + // refer to linuxAdminUsername above + "value": "" + }, + "targetEnvironment": { + "value": "AzurePublicCloud" + }, + "nameSuffix":{ + // unique name to be prepended for Azure Resource Group name + // Change it if you need to create a new setup + "value": "" + } + + } + } +``` \ No newline at end of file diff --git a/cloud/azure/arm/swarm/acs-engine/production.sample/azuredeploy.parameters.json.sample b/cloud/azure/arm/swarm/acs-engine/production.sample/azuredeploy.parameters.json.sample new file mode 100644 index 0000000000..2d8dbde308 --- /dev/null +++ b/cloud/azure/arm/swarm/acs-engine/production.sample/azuredeploy.parameters.json.sample @@ -0,0 +1,48 @@ +{ + "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#", + "contentVersion": "1.0.0.0", + "parameters": { + "agentpublicCount": { + "value": 1 + }, + "agentpublicEndpointDNSNamePrefix": { + "value": "sample-1b" + }, + "agentpublicSubnet": { + "value": "10.1.0.0/16" + }, + "internalLBprivateIPAddress": { + "value": "10.1.0.100" + }, + "agentpublicVMSize": { + "value": "Standard_DS2_v2" + }, + "firstConsecutiveStaticIP": { + "value": "172.16.1.5" + }, + "linuxAdminUsername": { + "value": "ops" + }, + "location": { + "value": "centralindia" + }, + "masterEndpointDNSNamePrefix": { + "value": "sample-1a" + }, + "masterSubnet": { + "value": "172.16.1.0/24" + }, + "masterVMSize": { + "value": "Standard_F2s" + }, + "masterCount": { + "value": 1 + }, + "sshRSAPublicKey": { + "value": "" + }, + "targetEnvironment": { + "value": "AzurePublicCloud" + } + } +} \ No newline at end of file diff --git a/cloud/azure/arm/swarm/acs-engine/production.sample/env.sh b/cloud/azure/arm/swarm/acs-engine/production.sample/env.sh new file mode 100644 index 0000000000..eb0327066d --- /dev/null +++ b/cloud/azure/arm/swarm/acs-engine/production.sample/env.sh @@ -0,0 +1,8 @@ +# Mention the Azure Subscription ID +export AZURE_SUBSCRIPTION="" +# Name of Azure Resource Group +export AZURE_RG_NAME=sample-1 +# Azure resource group location +export AZURE_RG_LOCATION= +# A string to identify your deployment in Azure portal +export AZURE_DEPLOYMENT_NAME=sample-1-deployment \ No newline at end of file diff --git a/cloud/azure/arm/vm/azuredeploy.json b/cloud/azure/arm/vm/azuredeploy.json new file mode 100644 index 0000000000..bf2cac3348 --- /dev/null +++ b/cloud/azure/arm/vm/azuredeploy.json @@ -0,0 +1,162 @@ +{ + "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string" + }, + "virtualMachineName": { + "type": "string" + }, + "virtualMachineSize": { + "type": "string" + }, + "adminUsername": { + "type": "string" + }, + "virtualNetworkName": { + "type": "string" + }, + "networkInterfaceName": { + "type": "string" + }, + "adminPublicKey": { + "type": "string" + }, + "availabilitySetName": { + "type": "string" + }, + "availabilitySetPlatformFaultDomainCount": { + "type": "string" + }, + "availabilitySetPlatformUpdateDomainCount": { + "type": "string" + }, + "diagnosticsStorageAccountName": { + "type": "string" + }, + "diagnosticsStorageAccountId": { + "type": "string" + }, + "diagnosticsStorageAccountType": { + "type": "string" + }, + "subnetName": { + "type": "string" + } + }, + "variables": { + "vnetId": "[resourceId(resourceGroup().name,'Microsoft.Network/virtualNetworks', parameters('virtualNetworkName'))]", + "subnetRef": "[concat(variables('vnetId'), '/subnets/', parameters('subnetName'))]" + }, + "resources": [ + { + "name": "[parameters('virtualMachineName')]", + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2016-04-30-preview", + "location": "[parameters('location')]", + "dependsOn": [ + "[concat('Microsoft.Network/networkInterfaces/', parameters('networkInterfaceName'))]", + "[concat('Microsoft.Compute/availabilitySets/', parameters('availabilitySetName'))]", + "[concat('Microsoft.Storage/storageAccounts/', parameters('diagnosticsStorageAccountName'))]" + ], + "properties": { + "osProfile": { + "computerName": "[parameters('virtualMachineName')]", + "adminUsername": "[parameters('adminUsername')]", + "linuxConfiguration": { + "disablePasswordAuthentication": "true", + "ssh": { + "publicKeys": [ + { + "path": "[concat('/home/', parameters('adminUsername'), '/.ssh/authorized_keys')]", + "keyData": "[parameters('adminPublicKey')]" + } + ] + } + } + }, + "hardwareProfile": { + "vmSize": "[parameters('virtualMachineSize')]" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04-LTS", + "version": "latest" + }, + "osDisk": { + "createOption": "fromImage", + "managedDisk": { + "storageAccountType": "Premium_LRS" + } + }, + "dataDisks": [] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces', parameters('networkInterfaceName'))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId(resourceGroup().name, 'Microsoft.Storage/storageAccounts', parameters('diagnosticsStorageAccountName')), '2015-06-15').primaryEndpoints['blob']]" + } + }, + "availabilitySet": { + "id": "[resourceId('Microsoft.Compute/availabilitySets', parameters('availabilitySetName'))]" + } + } + }, + { + "name": "[parameters('availabilitySetName')]", + "type": "Microsoft.Compute/availabilitySets", + "apiVersion": "2016-04-30-preview", + "location": "[parameters('location')]", + "properties": { + "platformFaultDomainCount": "[parameters('availabilitySetPlatformFaultDomainCount')]", + "platformUpdateDomainCount": "[parameters('availabilitySetPlatformUpdateDomainCount')]", + "managed": true + } + }, + { + "name": "[parameters('diagnosticsStorageAccountName')]", + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2015-06-15", + "location": "[parameters('location')]", + "properties": { + "accountType": "[parameters('diagnosticsStorageAccountType')]" + } + }, + { + "name": "[parameters('networkInterfaceName')]", + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2016-09-01", + "location": "[parameters('location')]", + "dependsOn": [], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "subnet": { + "id": "[variables('subnetRef')]" + }, + "privateIPAllocationMethod": "Dynamic" + } + } + ] + } + } + ], + "outputs": { + "adminUsername": { + "type": "string", + "value": "[parameters('adminUsername')]" + } + } +} \ No newline at end of file diff --git a/cloud/azure/arm/vm/azuredeploy.parameters.json.sample b/cloud/azure/arm/vm/azuredeploy.parameters.json.sample new file mode 100644 index 0000000000..651ad32f0c --- /dev/null +++ b/cloud/azure/arm/vm/azuredeploy.parameters.json.sample @@ -0,0 +1,48 @@ +{ + "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#", + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "value": "centralindia" + }, + "virtualMachineName": { + "value": "db-1" + }, + "virtualMachineSize": { + "value": "Standard_DS2_v2" + }, + "adminUsername": { + "value": "ops" + }, + "virtualNetworkName": { + "value": "swarmm-vnet-49420225" + }, + "networkInterfaceName": { + "value": "db-49420225" + }, + "adminPublicKey": { + "value": "" + }, + "availabilitySetName": { + "value": "sample" + }, + "availabilitySetPlatformFaultDomainCount": { + "value": "2" + }, + "availabilitySetPlatformUpdateDomainCount": { + "value": "5" + }, + "diagnosticsStorageAccountName": { + "value": "sunbirdsamplediag123456" + }, + "diagnosticsStorageAccountType": { + "value": "Standard_DS2_v2" + }, + "diagnosticsStorageAccountId": { + "value": "Microsoft.Storage/storageAccounts/sunbirdsamplediag1234" + }, + "subnetName": { + "value": "swarmm-agentpublicsubnet" + } + } +} diff --git a/cloud/openvpn/openvpn.sh b/cloud/openvpn/openvpn.sh new file mode 100644 index 0000000000..fb5c29841a --- /dev/null +++ b/cloud/openvpn/openvpn.sh @@ -0,0 +1,15 @@ +#!/bin/bash +userPassword=$1 +#download the packages +#cd /tmp +#wget -c http://swupdate.openvpn.org/as/openvpn-as-2.1.9-Ubuntu16.amd_64.deb +#install the software +#sudo dpkg -i openvpn-as-2.1.9-Ubuntu16.amd_64.deb +#update the password for user openvpn +sudo echo "openvpn:$userPassword"|sudo chpasswd +#configure server network settings +#PUBLICIP=$(curl -s ifconfig.me) +#sudo apt-get install sqlite3 +#sudo sqlite3 "/usr/local/openvpn_as/etc/db/config.db" "update config set value='$PUBLICIP' where name='host.name';" +##restart OpenVPN AS service +#sudo systemctl restart openvpnas \ No newline at end of file diff --git a/deploy/cassandra_restore.py b/deploy/cassandra_restore.py index 828cc93950..7cf1a47f49 100755 --- a/deploy/cassandra_restore.py +++ b/deploy/cassandra_restore.py @@ -17,20 +17,23 @@ cqlsh -e "source 'backup_dir/db_schema.cql';" 3. Restore the data - usage: ./cassandra_restore.py --host snapshot_directory_name + usage: python cassandra_restore.py """ from os import walk, sep from subprocess import STDOUT, call from argparse import ArgumentParser +import socket parser = ArgumentParser(description="Restore cassandra snapshot") parser.add_argument("--host", default=socket.getfqdn(), metavar="< Default: "+socket.getfqdn()+" >", help="ip address of cassandra instance") parser.add_argument("--snapshotdir", default="cassandra_backup", metavar="< Default: cassandra_backup >", help="snapshot directory name or path") args = parser.parse_args() -root_levels = args.snapshotdir.count(sep) -for root, dirs, files in walk(args.snapshotdir): +# Unix autocompletion for directory will append '/', which will break restore process +snap_dir = args.snapshotdir.rstrip('/') +root_levels = snap_dir.count(sep) +for root, dirs, files in walk(snap_dir): if root.count(sep) == root_levels + 2: print(root) call(["sstableloader", "-v", "-d", args.host, root], stderr=STDOUT) diff --git a/deploy/jenkins/butler b/deploy/jenkins/butler deleted file mode 100755 index 652e1962a53004387cc1a1b9a1024d7551040f1a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8166370 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�qJeV0h8BIN6i?XU=9kdHHfh{O$TZaA4eN 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%0AHc1Y6MBgi?x+HkEdwiNDW7g&>(M1-Tb_N3lFA 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⪙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
      2*)2~~}Dpd?V3&HR{T6<*w@gz7~ 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
        bKf0e{tGF=@e z?aXv_U1ua0KQM#jI3*YlMVx@-uBuCyT-)ipExC(N{!b+LXe5K=*42_8N^XiTStO^v zI}sgeEBw}xPQZWV5C{HiHT~Br`ma?qE~lWmVqBv3!m$?>av>_xxV2l@m5qR63#bjn zj(aYQlNbXt1~T2`3ud@o3@h0!JY^&+g;_yf3lUVB$3-G)R1MQ|P8;0=ZJ`e4T=+Wz zgj(p*_E8I|kHx$yQ2$>0ne@OB`aDJWte1PNa!5*JQp~=zUiRLe$473?(Q7GYe5CM5 zz9(k-;Ly%q$Po|qA3_<|U5BpevPV4m!bo$+?SqkMH1l|tUxUXI1Z}{({KH%E{#u|@ zc?%mP77I>I6`bs9vqVkaq@X@JNK;Xnd{J8KhQ4^%3UQ%L)8P~p)xaWQ&R8`6c+KMZ zM?c1^Em3-A@CMpgbLR}u>{XM(OwBVgP6X$aus8p2?hl#atSQM|yp(q2^A zi)y(5@sHyIoiGsHg>NBx3Qckx^q<&$mcjSgg)PhiO9fD~AKiGRjwYb*Ca6~!P$PRg zP~Ukq-gI+nuC<^x6AA)pykH}|G_t+fV8d(aSiuaDFdK=yGdpTP%E*jiX^@c`!a(D! zhX!?1&kP7m3yb!}&Vc6p<5X(Sg>>ppz&1^yG_z0^|G=5^OLYf6m$z`eTlotIu7SUk z788kPO&siidb|f)36yhFCfEo!^sf`F)=ZN$^x%nuIKl*)SPeCWW%G~Mt#Xy24#V8U zV+<5j-Ky2+b?m_*>Z7E4)BH~~A&aO%vxCPL`2FSD#A=VxHyZed>Kh$F&Bslm1O8zN z{-`h_sNg77DfuY2S;KF*S$2svPfcj|dK0Csy9yT)+P%mqRUNkGunIMCk3+H&PntMw zxS8kc>G#9UGvu0djtnv}3{ zyY;9oU>nC@&7DPSLjN}kW+Pq}K^Sc$FJlZykQy-|71S$H>S~PDl2hoZVyt#k*r!WX z%u}J)I(Lg|WulPyxZ13BmRhBs`2G~HpBP5|NXtxDLEYsaVd!aqAD(V#>hZb@X=OGb zco~0T-)qo?)SE8E7Rp{^W`U-(DtW)?gQkfoH`)|0=B`OG7E1l<9hO`JpT=3l$O@uQ4I@LV0W8nEiX!;O_OoI9^EZxt zzQ1uV8-J`a`2a!E!0aH7*Hh(M{PWbjIh+IAgK%7qn--HTqQY1`#pc3l8Rq~IDsROU zI4#6`!C5=EY(M7IUmK-}RS)z5Mz4Yvr!bnrr;FlfB2F5Z7oPki0#xWy*MbWSp|9jG zx>WfEiCKg(0edJD;-NY0=QLoSmo6^=*m?t49lQl*PiQunUD3spnAt%A4W;t}iH#Vb zVJlJwi?<3}a>;F}UXVKgnT&@ctMoYoYn_~25XnDEjoJMYh?EycF z_zOEO?VPlj&G+!DizZ6fiZ7-K#`sI5Yw2V9Twl5@=pxPfbqnOnXKElv*qNe_l(>YM zn1_;^7#G))JR_9$dSsKHZcz8^?PHl@B3_P?WxPO_>|iC&FZv7G&tt_c%o8(cCr>Ot z&^Wm!KkPLb!9V69GvvA*Lp0`Fkf{ClrCmvr{(?1mhg_jR38@CyAFdBp=b`23=oVO** zZ<=3bf*ZQ^TzVN8!&i6qv1|jWc0=F7{}HalLqD7-7?NdA!}%(hwm}FWPp1_sY0Iz@ zl8v_Xy5J_Z1wIy>t*ES_Ra-XvXKh(=DvDxTKEh0!*tBK5K%>O&xuK!kdf^srcw{eM z8`kPJv`mpUcr;RN@{g3(ROSIY%?=BLi=f$Akr(e3lGK_4uHX6|%gY$V)h4zQa=*M&Q{GlJkLPyw$R??Z` zU=eH3wDc@&TTRObk(<~Z0S89&kKilzU6=T-qrPj$Uc2*T-4GYwr6#!Utz-|5g=el^ zRRrZj|DM}`DmZ>4yj7R!pCdNeWY!&NV6P+%;#)EsZnD&Sx8W3GjPMJ1&V2&)ra;a( zKVrgs20`gHZqlp<784KsvI?An_a|yCT>w6*XgW*E2n|?+&>HVQV`k_*yIAr>EV~=J zZzS0a!cm21fOw+?MZf-+kCEdkHNaNP*eDHaE6yb!f7S@%P2Gz$6^a$ay`>?eHMBlB zISE=JEW;yAvp_Mu;v_O}rwwJO+r90b#FgUYg3U50iib{npMl0+$MXmA6z~X^P@Qo2 zXTt3W=3n-Q6Lbo>6wfKfPht)GDAdxxx`AzSG_jBmX)jE%uU<_%IC|t*lqT0bCKWyvb9ufg=wfr&EhSqfRz)J%BWq+1=UtQ>_$I zr(Ix>idUwycse(FJ`5I!(aYQTlu{Se%rFJ@`n7{jq4W)`=#%G|su~T8bvC%jenv)q zj5;bqj+8CC=!vJn$UnS^BF#84zmPz94uF8-5K@IjK+h>fPxF?SMc7_wGG^y()^?OZ z&Gl=u^=p{vKbi41?gIwmNe-MAna>8)+5d2+S>T5Sa~Wah_8M`zY3xE_MrRhWOfD~k zx^e1ST8>YO@cm)fiLKj29OZA{rEViIR&HoC@4=YqajhicFnduPt z*jx<=IB~B3ba~aAo0slNW{U6C6i6fxtgK?O;0>qtaaF7ilJTwCI2a{XGOa=%>M1hP zA7D)Rv^zKeJyIVcJQUs=oZ8Z7wd|MZhaci2JPTdSF2?uT9ze?K^pNgEUoH6s z9NRuz@-ot~@j`cS;p5tweVy!pGfM%-;N0<-&aC|AbpC|Qr{y>&WYZjh428>r={;<}*n(nVqS7pS{Dz7M~0Za^*^GK?U~Jh58A zPn@Tmr;UL9#+;KMz}|R(3KoM_&eykH=w(JGmi;)>QSL1Hm8Ia`N{^#$W;b->;+~j@ z?NV6o>Wx^+fzn)6Vq%iU6GP*o#A&fpx^B#fGMsd|U?a8{C@*x%VqNx)hnDvlkTujj zcV9S6b%kZI!TVx4pnR}Ax~QzJmHJdt9$W6j)|F#th=0I@md7A-a#h_go*0TweHolw zs7e}i+`{_MGqjz9PKv>#`^jd(AIHxk^+6$o-4*2qg8f_wQqn=dEDU)BLJqh z7RF%jLAn{Clrm*H%Qa)`7F_cW?{+#uk3>X}Xt@XyV`%fu1UcxvOszTB_=6Q#oX3{A zp}!WgcBYlsG`*e;rM0jUcmph*f4pW5{Nwnr-Ip0&zz_VvcnnOUdNeRQZlq(-kd$uT za(FO}pKUzjYai{+@(1e?PLyg>g8qzajaMfA$j%jXw4hM_dGoUETCYAk6cXQ0B%ac5 zk@rn}F~fdhWC`l664>zy23Z=BS{iK{7E!%Jnn=(d9A$%$21A%`tX-5~3?~?eU@Fdu zQ$tALrSNTn_Q%Ah1y(zbPisVI12j|WqX7cDTg;8{UIWAMUeJLCMVM`_$p-pUix}XP z>Uag)UBa7{CR+>+nIDb<7uZ);l)c~=!4{Uo+xZN z@>_*%;BylQRYiw@JKUKV3Y#WBacmklRnoRqa6Sj*h}g9JL~7uLks26bq$UWIO2`GZ zByR^I#A;%P?a=bG+Gp33qjCf;qh>2}GeF&f16*HO7$rU}V{fP|Lf3}VL>(r`_ER-N z)I)=Hk?1akvUH-F?GibiebA}Q{**RicC-EX1yJ1U(C)qL5&s=8a=C41u2bhGW$9ruas)u*E>d}|=$PQbN-~$md2ZjPIX#LT_ z9taNhKyVs2M0Ar&JF!VN}vy&zoeX;qSM|p z{iVbz7-n_&IB~)7dP!n60>rAe2M`|)go@kGXN?Z4e@q&(0p-$8kp0gJgnoi_(wG$)5?1VS3@V+Qv z>iq(?DxwyQ)cYhBF;_9EFQJg5>_*Yj-R*QR>c?W?ae_SYS4e(}5LtOeJpiV3L!b}p z=&spfDI8`6z&U6Y*Bvx~n(>8E42HX4h7EkmN_1!87%gP~ak zEHq~9zrWV}2irz*pu&H^@|y6REG~uNHo|J%U;Og0T%p$Z9NIkfM||M+QPzkEKU2&FOj1sHfqEZ% zeX}Kign_ES1c0e!2-^k%Z2fkM+=c?vnWD}=5QzAS)?uV$$J^o`E!TLcAs(uUhiYM< z;Gq^9zF4BjPb&&TdW$qwjDZbF0u5^WaBa;&YdOJ`2E zfljS`?njBuVL5l5)iBF9O^61RAw_Vkx zF>FRfcn-T!F$w4(s<69p(>7=k6dm8aK@D{qtOIXm?I2{`23Dv^VP|JuR`$9+N+4&8 zU<9Ppii-ox!Uq-TKn+dM01&~m(+&49_9CqK$8lJzT=9KNfx0#yV(zXL-%J^%$-9@9 zcLn9`P~K=S>eKSRir28?dwSu-%jKewr{ij>KG>%Xw12reW8uMANY@YglJP!xyvoNt}We6U27@&G>L zHgWV&6dxd=T7GAk5VJ;337@g|CqDDo_yT^kgRj@rzlLefN10SZ=z{5{En3ygwo719 z5e-EP(E_UhG>r$=IXl#YB)I);zxm>;qGPBaLISFESH&(~htM?A zMGnU5q5K-BbbHu69^{wD_b88_g%!bCBZs1|>@*bT_~2NI*BiLM{lakb*B}jhr?1=3 zoON~G7ur8UvyDLkf5gznhZVuEgdM5OjrZDi5CS-u4$~CmgX~!fyn>`-NX9 zJM@Z}gAMJBcU*<_d1HPX@3j!`c{^{p{a4^@=p%sj75w@^G`n#rys!)KA=74l!VPW$ zcR!hJ8#!?XZBXv_q|qxGu|%>d`LZg!TF1noJL0#El#Ic4Br1TPa;O(Sw#|jdb;?Tm zjF7RqeIet>qI!aLWXMxBhfvryuFzCiBUrI2)>K$;?zJ_g(~c-SC&O6-J-;mSeIn=HZcTZQ~T$^E_|_*^+N7od*1W2RInYN_uR^g zfdV#3H_>!t(oVvGDQhJc$P?8MXQ{982{TQdbXZVlMtuR3Dq2Gr0b}4eE={uCZq6Z` zcxOF=HbK;lYkdkX3S6t(zftfO-ax^jOHgnfBli@X@bfEp;s&GO8<7A7 z|KS-1u`x`Z{<%-VwPKroBB0>idT0f2V5KoAb{P~K>tLfgeM;oj+vzuvUsJ>(|dmnUu zvskBxX^rodd?qUAgS6m#gGtf&?vSPSJ9Ag@y;9?Q($nqmegAttd~1Z64s7T67Iu30 zE=Kw6z#xaIpwf0^lp6Z4tMUkEEZ|%4nGen_Y!3P>zJTCRZ711J+s(hY9*E$Ik@+SA zOF?HAL3$Ba0mVbT3uH!Oq7#GDDqRcbBTGLRb49#g2x-JK+fwd!db@dxVEk>)S&`^6 zw+8z_^XuEKm^q~mW5?u0^075>sXMK;n=QuO{5Qve9#{l4G+PK=40)3n?oeH|kx=(^JEGA51*-T-g`NZM%rv1bs#cpr-C_a)5_ zTwJppc@7X$30Rl5^}#aKwVeUtGXfwE;MbhLkgxIEf->p62~L1t`2}BvEHV$*b0v?l z&#mT0@Vm_1X#D17sk5Do_^t8mvw=pqd6>rUz$siJ7O>ABt@h!!fi+nBT;;UK$YbRN@Xoq)92`G< zW-&77-Y5{cDixxmDg{O88r5V~j0sson`4_Ng0FX#*(&82*iQB^W`Nw=~^`%^I zu-5<(%knI2S{dqBxd6~|KY&vBk@0eWiY^epqWwlh3h|TL8;mU{bm*OHyXQst0H+42 zoWtb7S7@|EDB&Usw^##3kMM0|zz$RFaMC#RaI+p~QE_huq_D*|p1Sj4|9I*OsxAmZ zFGI?HE<|-7NtM~y3SBGdES~_ivV281(H}?RCx%xfx z`1F3NW@F%cAy8f~D{QKm=7#<-nQ8+|#P~dzfM?}Vkit0O{cl_S0qtNd!fW(qWD_tp z0Wsl9=B!{l@Zk=e87?-!mydh!%f}(uxFUS>EIh&P=GkTV0^*jTxLMLE_e4(bR}79V z7}%;hofe+cTGqHVFWgupS@T;CJS6M%@SINa`Q+(CF^DL`IqJ7iM4Yj&7&5g}ZsW&c zeE)%WxJMPdqEUEfV0ccK+^OY-c;!r1H*vpHr*P)?z? z<}5IeRv0^kqm63smAc8mkd11Rc!uV&CBKmyd`7evwQf1!5cXkT@&}0($(z+xRic{i z;eCSDFkGjr!FO}&5yRO)H5W)VL(-}NH*p*Q7a&xiswPyG*aCs8Y*SJGvL?0%V_i`Y z3eMM_lQLCQCQ*1uEzlmRXh>o>3NHh zDI|=Nii_rX9t%l!GPIRea-oF0IEBLe6>OJ4)rwD3NK7s6P-3f`(~j7wO_ zFNb;p;Cy(2_pnjNTj*mAwhyKKiPOZIa!|rapCf{avegJ}w;Q@+4VlJLJK8*nmx%iq zWUTv}ULTi0F!6q?`2&LoJTg-D$L;_0)@X)VDHsVUC-yhJgUB1t(CoyoM3XSj$nR1y zl3ddR3=snC7t3noY%SzG7KLxOe5wK_X=a(2y~iwkz1y z?}6#~{*XZ04Scu$&GxzAlmG!pm(IYf9dz^-XJ~+yy6tt-8v?X{dY(c1%j?t8o&%=E zL+3!PiS}+9?FH*8xLlETJG37`697-1VXZgG@=R#&pfd^D{~(zx+F{+xh+Uk}{^8y% z320xA<;1ZHKiU^clA!%ylA+NK43uD&_PY**JQk-VeiAeVP(AZg-Nee|N{wn_w9$Kb zPYTu7*oV^2#P9&BhXoURNTQ&6`v+tWQGK+{lYlLPHBVvioNnzfxZy9Ft^(F3pZs~| zdWQ-N3@#uB2mh38OH9-l^o%Vo((ouBYi2wj-7YKl+1oo)cvMZVYpmr_D~m}W>@W=~ zB-52wFi(usK{=u@{LUf>Vfs1dGn@bWz=x?4T2PItw!Ji_!WvWWz3*WP+Dqeziq3}B zswlvIPRJ{mf^l4^;R0P{rYJJO0#-)iy`IsTiU_<04LoB(eVB?#Cc)Gh7E|aLXhE-$ zB*7GR45R;{E$E|JC0TMvwPWlf5-8rYHtL3zB(di*?IV#?>OK6EMiL(u+J`K*BJqD7 zl4v~l3??3)Lej$bERsGkpR1H4p!I^Jh_PmS9hgE=M2x1o4tJtmwy8{ zYf`wO5d{QVYw^Lh2Zh=Lc>Z%7ok=_zWeq?9tR%)LxCEQwT3`&oi$#5wC*SttZ>Qx! zDA9`DD=!Vt=WF{4@Qs22fR6&;5QbdAeq6eJU7x};rBE$0#6=An11uSjqChR1lWtc5 z4=&kYskMUD{Mi)-+i~;taW3285Zjm{fxSFzPmS%vHMaM7)5A8Dgs_DzI~y>nEQt5| zevg#BTuXM+UM`JBaG4d)|3FeJ#ZcbG)TPlPrfAmyGAV;hXe?*xj5Loys)0XKOszZJ-F`PpDhp&@StnMr0cR4bB#V)yl&Bh z2NQkx`|vf3zpsqf^dH&3ecIvgrpI;V zm5EOw>-RbQLPD|hw%6$1c1W2)Td%i$XcJFT_qKm+>o22|gLQ8^bFqguI0R{)WDI$& zC%Ia>fJ$F)`#VY1X!|2m1HEk&y{&`36$9~8bw&=vFF}`*bBtcstAEO77 z-uAa!h&INT(IZv+eC425xpj?hWJ&T3-OrLupLh@N2==qD+XU8BkvKQtSw0<1%un^R zb&D*{Vm43WP2*Wsq21!sRm(-nr$-NKz0N;&Ng*tvd)UaIf(WA{hSvHTioW$5_N{k( z1#DqmUc2>M{{=jqxC?mN!V_@8boJJonelY_j{!V63wMI2Qsmt+o_a{?F5v0wf3p|~ z?4;vqjU=_lQ~29m!qemLWx&%Py@zRdy1^!7!qf0zq7P4pFR*wjwRv_6PlGzQ!_&%# zb`?)UzT5$xWIx#q_6cK~7`|#hd7bX*#CZ}8Hns<0qdbo0Fuq+~*NyOowUTW(19(Q@ zz{R1J|^vZJDOIG)Fk!>LCY7% zF!AvktnI~mu?~C(!h{`%!F1x45hOv-;Q2)9p(@e$;3$*-(>D>hk&eZ#y&*GL0#~_b zzoc=Gm?4ZKipKui-vp*G0GS z3P8NjDQLtHo5e&_Zd&;g0G0^1E+3uLMQ9U)BG?CISIc+v&wi0j;fKYxDFi-HgC0zE zG?j{$M43>-gnIU3=JP#EJsx}P89&$09&j{Em3{4Jj}B+VmSIUtq7Pw0-s}!v-24Km z!_v(U z@ynD$T+Tp4VIdpvA9zx)wqPn6(=tFC-70`7f;Gtch*O6oVu!)SC0JxWFd|r4$;`RQ zkAdrVrm-{|g(uim4N4;eF@I`iQt{Plrqa$pX`SpI)+i01!7p6^inHXL5}eeWD2Alf z^aL1_gi`wgMrq^g-Q>@WAMJ!clj808bN>VXF@KJe(gOUcKxzL?{?w@U`~lcr_=M1; z!wj$$;0xERMJWdIW323*+^6xEled}dXPjHlAP5x)XreGXGI>N`T3vB-x~|q_=+%e0 zEQk{`VxmB0&R=zM>fkn2Y(8fP@@RN7m=HDLGc>sp;IJ)9qj$~@=taPCqT{#qAR5cu zB{B^=#gA7~c1n{89Q#^x^U8LuadQUFPHzKS2eS=JqDFi{GiJWbb0V+m{29%_ zL;pn6j`lT8nn-!2%g=uwX#dy|kX4kiPRw!epOiG-`q586gR(@TLncFn(gUHv>a9(F z+so8SHmQo-DS<7BE>he6k!(v&wfvV|Rf2db*dcx4$y{m%8X??Ks2nsx)~the>^mWf z3m+>4CHRN)uwENNC)>~;ft`n)kg`;-AiXePmFPet=seM3Z>hV;iFZdw2WuzBoQqCu zacG)0f{@Gg&uQkQIyTkU6kI|Pf~EekieA#6se|y9IZHYSa+jSYT|KoSshMlaB(ZuQ zIX7pId76SM=B~CKg!y)0>Zd@)^V$xQUAZ`upcuA+_o1llup0NN5Eme9Y+ zKRNdvZ5Elub8hW=5=;(7f|kiNgnIP=63m>9izAEFF{mKuW3etjE8{ z;(OF0r)?qCE=BybK@b3rqu~NXtV#*)bzz>P`N8L0S1g1;?{EgMUMrR|nUiwa5wfzK%4V}sSjobF9I~&W7@*1{{t}DYu1$OGZyzUfUVVlm{x_-RE z9-Vb{NAju@^BuygoQ7@J)E!75R~S>U?q#Z30u!FVlK$w*tEY5f?E!sSZAP4r$M+Hs zAgf-UN|zn&%p*1m)ckDIE}=ZR%vTGVRFwFbRis$c@8TtBtSoWxSTo)hAzM)`ZRO&A zcxR`!MzRv0vRY`HFg>ko)+nbVmn5!7wr~?I1B8=XdnUf}#OHYaihC82%aEm(30bc? zrYa6Mk7E85i-h>XU>W`Ti}kMcmoXm;Bj{05uFXZrZ>h~qE6hjjC4i%!CnH~L$CI@n zjRjz2);jSBTjriSF7rBi=|S>SHOl)U3f1-z3=&W7N|}t5y^!^i{1&LaeXRz=fKus9 zVIy%-C5B0Tu@}Dl#;xF?h_H!h4+0#N?hhl))$m;0oKKs2LIU`x;G~zd%>|Cc-(u0w zhbV=@Uomtn3FZ}xt>=Bth(Sdz=KK!gQ&?`eZg{nNy4r9W5A3n#R)z*T2M5@HT%_xX zCRZ`LcT|xZO8jsLNMW9~lXzlLU0={Q@-v2-bmPQ$V8443WE+R-t_xH*U0oWuR}Xy% z<~|J&q?n7V6n|ll&3+{hlgYceUx_*l2PApaIAjGFOn!jXV7iR`#7V#^K?f@+!9FgY zHpI=jw9$xQ?p&V;s-30ed`1yehzLp(o(K+My_H%7c4^g9g$;b&+m%^IRFH`r z4lUGGRVP=#H2(c2Qh->}@qP-bXeet?1{MFP6R?^Uuhvj#^{mcuVqJha5j`y|uAb8b{5{lZ)bxu=}6iv?mWtO)kLfxjNrcJbH63rH~D zPrjp8u4n%plxRwxqAyRfkYN1HYYZ;xkqpiPt@c8<)1Oo9fc6+rHU zTnU<@Zr`W}GiZ&Vgaf9fr;4q43EG&I#8Q@8Fg*A=jXjW7pw5@q`6f7Dr9p-SD4O)# z3u$emPV6J6_d9G$}+?! zV*t#@=#|(z7O)|CYy&md7LRRZab3GEet=sbU`h41I`(4u7SO^ zI^0KAqr6-sMw!TUwc4*Y*m`nRYN6-eQpu7*k?iEFa+!R=@fGmwJ}jW$EdGcIKvN6U zm8k;i=Cdi%iVAr@!Gku{W5iqQY1K2dx_<$YB;}(|CxE95_ zAd!&U>*nKoffMLZ{$Z9Dg71R??NIYZPD<2`<$F=|V*D*eza@Yw!3B1XyA*khYtfhK z73|lRL?gmmmuG-eXsHD88#A51i!7#IUKEDY-T!QAg*`Gydp| z8d$n-iHAg+Ppx0vuo=I4TD%#z%1^ z5N|+-ORpk{IwY;eyaN(1@pr|daB1?sm2)|b>EGAXSb){DRDjz8iT#~# z=vttD1P?S}ZfH`4Q8ds9@jx=vvmW8;bO1nA^9dm=>P)cgh2d69tcQGcEUd zJPJ>FlnIEd_g;W+{M(!b+hNDQfgP6-X^oSOU;4NZ2Bh`Vm@#G81z^EHWgE@PvRHYa z+%w!R`wWifkN>DYzKvU5*Sjp%vrn1p;JDTcv&-F6v&%UpvrSs|wrD@U!|X==jL~9q z*=ofLTBB>oi>TC94qDN2IKj#1)P|#IR#n;2+PaGQ!yq0cNe-4;toMuxlz^9sEopLb zq6Sr#mo5pr4@$dd;NP;|o6FovU!%WaW6|huoYFO8t|8eAKI??wM@eqH-#s7p=a;4> zh!*y9Vm%Q@ScsU-IBbAow8c}{^i}a{y3nr&_H1v}9Nk_)fdHU5IZJIjQd)VLWJcY| z7WKkPVE1g9@d@B{>}9|zATkP#gYSnH!W?R>ia$coxjDx^9D!)rxx*6b(?Iqx1K5bh zAJ|>2;V4Q25LQ!jO5oxlfLn^%lT*wni&cnq&tuf;9W;Hyu~6E)Xv0s%ql@rwDOln5 zyvJGfN#l~0(B~~=<0OoM+p;F~)65#b0_IR3HCh1ni^Cq_1%ksxJfJ{q7Sw_FKpx5F z`_vA3<_j2Spr<$Kac^7+_ja#w7x3dvknz2bj6Q~pH6){}6wlgy#b+cTEsuNS1E?Wq zT-d9@z4*A!$-5hu%m*8C#yw=7Z*k=LO&R<5+gWdL&oMAK%Dw7ttfO#Bc)pB$Us&=E zPW!;~(Wi>WfGON~I!nnGJa{RO*$e2qMVeOEcEiVX9l|pfAi7&IwY+c`q35@8-XJcSM-31FkS?0#g`9^b2atyV_0`lOSUvwZ*i+l){e+7LFX^9zdmRHg)}5 zXvtvHk~I4BP%HS4cSb>TphM`hX)pL4*Ly4)Z0?I+xhSz0QGL<6KNA{%=sdbV<{+K9 zZ&@9IUVQ(tv*7cNj@$P(Y|K~etoo zCojbNjT`VOC_f+NSs~?a=+X}({1miPHo$y(Ikp@uEB$)n$x}OZcidmM4UV;zgWqVc zSI2~V=`}UrWk%4a%CG(Onq)U(OH??*m!4_*XP6bR({6dl&1WL&-P;L2dKPFPFo?lw zxm%IV@s)fwil(988O+v$!ufwg_>}uas{X$qqw(k|JSvN=lgUSxfzdfSLzIY3fL2XB zlI*Ek(y1ftu8y&LUMWZyuM6_9r1qL~21)H%C~uKe&`XU6sYYE2g!?4kbxIeF-$dsl;+w1k9-u6!`zQ<~ z@IR`;M2dq^Cs;<>@+jd0FgP1?FpTit(UPxgbDg&3csk*8iU`!b8#9!$>wMi(*Y!O^~AUE&y7dIZE3^Qz?jRiQ&wIZ z40@#Q_*bbX43UID#JC7{1ZV#DD2gJA0k-VS8tL%Pn>qwuizq7Nt#arP;GP3HEmVNr@Bl50J}EDfg1SnNI=TN~d(~xCx@@P7K2i5RbA5lfGVjG#pyNXQ)Vq>*5icHB`Dtn)e#CQ2MWWxky!4 zwFCnBy|(i^kjGLj4@i~W>5hC%;S0%9Jg?425%5z)dLhqpf{4@Ylo&VCbYkfei>P0H zVI_u_FmR*TJ`n*?;1t&ixfA?$^$AIR3lB5B;^yTONAOv(j1oxzf_r5Ib*0lAT`4r& zKhCKInebINJuYBdUKJoCwGY3`0>{*hPZnM#U0eYu@l zp^7Iewv9eVLfHs4s08xAHH`?MxMQ*SQ< zg;xbEM7n(!s24$ybytzq5muYWnD&wh$1|oq*gbvzz=o~e#&v958gWWjjN!4}osK=t zb@2FyZsR%)Y;27TEZJIjfW*C*jDH6dty<=v^P4kJrQ;4OF1ssvLk zU3MQB5IR(_B30Z>j!q6Im0R#TH141PF@?f>bcGBLFoMePz(9TenAnkeV>lSJvlRfE z3>RVNf+;mrQ@B3xUHbQ-v8v>FysEr(X?V&-NaIYs)J!OHFGIOus_b!?y+SN0w!LXU z-J~^_bmgfdzNMPyRQzxvil;IlnmZ1Lp{_R}?{IO1yaAG6`e~bm2<*tj3KH4WBm|;n z;f8;_o~tkAy47BTqGe1+q4gY}uap}jiAjqoAdEJkQN}lEo6?C#Xx_hcil2HxSt$t#%4O&z{EsBt8D3v8E zaXpktZRy6>)I|NG^v`wjL#&b({_%Rcz65UV?3OBc6^OzvQclS`VComnV?Cxf|3gmWAi>jn@k1U{qWTDGz80bkyfILA_kXIeg++KLKwwcb+EIniK2Q~h1TnUO;oVg!dc-t?7!#cf zH(kfV(W;v{Uq}it7+DpDM+z=A-Xn^E_<)R|8-6+_+&qxk+7>X=lsYE6{T6{eLi8 z&_)X;f^IU2dX123{2{w82NWbXB6!ou+b0+U9Vycd?f*5&v9f3`)WrkT91?Rvkb@K4 z=z^285ro?C6<;y^3YZG}LQlwC6!1d*`#?jd(8dDL3TyVnB$%y-a6W{kAf7+xb25Ym z&@~nmH+kyI!wgkTn1oyXnoL(loYr*z2D)wDbld# zX?o(^v9wia^MR@>d4)De%nuk=f1XG{anK8*i!`*5MPy&2RSt&83<)lo3krFLrAJ|k zKKQd{{nWF1J*)1K%t9Xcvkj1s-}S<}hgLk2XR~;LKYu!}AJ>ne$Y!A>JA%_$KEDuf z^Z#`RAi?cGkC10(3WX|+t-)!Q?TDgt3bgwqkWkF0b9tpH|v6Y$xS&4O_T* zniwFHIkmEarhvyBUn>k0aobjXb5VM{Z zi0663ufIqMw3q@dlBWMttb|$mi&+x8SQs@qPVYs?Lo-wYtp#g-Ekr#guVC$p+i&Fc zJ;0;Qbs;C7jdAwg;ii+B$OQut$z@wc9YdW!oFV=eF7PG7FqFrx<=AlqEKKbLT2Jqt z;-_J#p;M1orxrZPexP-#hRJkwYcDP*G&r&g!`%EQt9#;INNCcnT3ex+#P8B*E`<>f zbz3NkTLrPyv_y~>#zj<^Cq@5zfh;m8K)r|aaXr@_Am{A)T&-d$)8r;DV@pt#$%u|e zy?M8;v^oh(N;M31kvf<*%S*eN0cPDuePn}tcEolHc3cPQhR;Dyxi$@BwOANTAh`WL z#pa)!Z;dTTOrg;+kKe-M#6&)D`z_!#PXCZZM{ha?m@HjH*d*TK6yDN>XhB=zE?iGn z12J%D$4|e`r8VE^YxZ=t=g+-~QrKGl`8C>V{B-qNk4$xgQViE_U`)tQ$IeRwJ>xQ! zhA~A8>*q`h%f(+bktJm>;7#H^#%aLMzv5RlJrB!v46Z!OrY}UDrrgmpb{Nk!<dB& z*GMiOkB6qbDjInm@(#T%g1n-U4pa{sc@+}jxKbmr2b6>Xp^?Afj^m>ty=T6 zB?TuWGA+&!?Hi1L(<-Slf8M#2z4&p61IBU2GvsjKNHPFk>=)D08L&5Ai-#t^;xVA( z(;fq&ngLfL(a(S?F-buNi#!JQnqy z?y;yuvuFqs{Vb}?z@o2T+!Yq#O|mHG_H-7_zQwXAF~g*37B#O=6bcISD@McMa-{(w zNOY1*Eo2w|GILDzd=_@*v6P)jvoFK5@n&%Ri{3pd1-dy^d(*2xFN0^fJ@HWexJIKk zj}R@Q1Tgr4Yr;i*e8gq-#wA(3)Vd^(chN2h7nT$9(0O2W;d{0yl%i+*cw&#t#>cFm z{`7~wOsr}w7QaG!qq$Ug)|jjI`pD$rP$2@tfS3py(SYivt2f{erG~Z`MSP-9oV{^R z45WGVEDMQFR}TmBsjhoTpdwXHV<3IH8WXtpRd`__LEZB-1TY!BWV(HK2N#XJNFT?jnJ-WP6Tm?o z&IG{3x;UEf{VuPE=LGHJS7iJn!>aj~EZFe+<|ciz5S&O6rrqisnbBA1w^<5bl2UNZ zAd_6DzeH9vzlbD}r8wfg=Hy|K>(<%eB#13gOArM$GGu5OctCR*_(LlOr&{sAxc056 zO0~j7r6uf@PR)PVgbuabMLQ?ld=@k!aje)fAhTU-)Qrx$1)$pu%zs4g5`S6|`Na>khkJy01R<;AI+B;5$JA zzX-t;O-}-+_lXy|)5^H{Eeu(U5Hbuc5_s6Y8(ZzHBt}F+0z_$ZRhp7?%0@F}fx%c= zdtoqVP^xhO>E@}g`}syc)rOIbo8V<^cy7R6l{kjQxcP_uh7LWDyKSP+`M_ryb|0$S zW{E@pI}G36tdAhC@S$2e^mRxy4t+7Jsu73Y4ITZAcH%W(G`!j|S+F4Qz{^l4#&rGl z$@wB?H#A(TW7o8z1f<^$Q zWgc$s#aAHr1`#7gDl2e&^3;l#k|#0%$Y$|^Hg&Jk)X^@jpg80C!-ud#^VLkChyjKy z!RXF<5?`?4utvd#wmnai5I29sc}9SxH~IuvMFHv&*{WwmfR{sn&rgb20m7zm)IJ-D zMu5L$`4vWhqn^?NoXJXHty=ht0i>CpG@?Upif7^!U2|0u8~nmjxuG+pBBovDrNwkZ zkwKkRm8Md)GTEssvzp>n=I4((>@c4>7R-S;oO=MH>jlV{Zl$kaOmMLfgc3?Jn@;mm zN`E*4DL`Xk6%kzLg^G|`*hrGcKVG-URe&c#Kzn^0ajZ`t1vL>83=fQ}g|^awxcT>; zV}w{cK3$0Dq!D@O^0X(!A$1We#HbeHmrn(SSZRd#*ps^=MC7KRUTRJk;)k`Yh-vqG zX|YTnDp^pN(KL)M*^`2c`se}ZrWHH9S@-Yo-%~u1u6u~haMMQ2w_mi8_VZDb`#I&Ve8enb5 z3g%GhV0l923GW<>me2Cy!HlbS{HsUD<TLqEAJ*zS@vHG%cNQFXbf~MuXm#}8 z*oEYek)K|*^1~epV&|jWOY-9Rs~$(OtLrd9wGV24KAZbxewD}-&!sO!N>02oNplJG z(V{UiI?ghThm><*XDYs?6IhhATez6ZAEzMtv;&!#BSz6YV3 z-ng~1c9LMywss6RZxvBkPaZvj1S;4y3EYk;MpMO?Zwhdn!14uN6C&1F* zJZxDyHI1bcjPI3V>CIjo`cg0LUiIEgFlYl9^xxsnSYw2Dn?FaNY53ErHZy z;+xYUHxY@M_;bQTJL1pq3A&mTf3A^I3Auq@+P&(pcV_0#E$#6GELH<7f|eS&uy|Fs zm?KoZemLCRmj&nyz;G(Me(x+BT|eVHB@_PJSf=ERN73mS_B$j>JqN8+u;`k=2VohiQ+bRk4^9NReIar9os9w*`pwiR|(~ihA@mh-_Gf{3k;h%0F9?9=JKEf>j7xXE2!|664AgJx%7o-adJXt0bK|!+)8f6%O| zfV0G}IrGO1Hu5~6g9te|MrgCx`?49y0H_3F&V{#& zt2_wsPZzV9{B9G?tmFdu!c5UkNjj^L_7TZ4zO%@%J_sd$4n{%c3_ zsi@J}Xc*#}$9mKY;hHG=!-ghll{5(Zo$YGjIJfo+HpA48QS?+aBuBVrDNyQW$aj#I zZ=io1i?6^pfmx%_3djykp>iNxfQHIGw{Tn}*c--zmJ(S}9s&M~utJ8cAxFWVJhkUi zGZw|CR^S~=VlH(pDo(mytR+ML{1T%d?f1KB(jk@GB{m|1R(*nMA3k8+U}24sjs28D zU5c}_*aEPd&Cp^ghrq$%2&si;W0q*6z_Qn%*D#aa;k=R zTxt}?A{q}(k|e}n&2gzfww%)P;&ghy@_DeGcd=0@y8vJm6ryo)mABFfuhN*DV!Xc! z|8c3m^d2JS-4|j}3<}t^mLJ_p8 z^?Gg*NBaF9<`2Rh&=8a@8+S(bN`@TG%|TO303kJK`J8fw>xS3w3iGn$;Uu9>xRu6`tH% z;~V@P1^7Y7qNKgT;JZ^gzMm6p<~lJ<3?7OPCzu%wFmT3mni_zx>1t+l^S{_Y(89R9 zc7+eLB?K*PKs+@3P7T_FB!B3*k>r0aTMFSI5a~a~uMhHC(8}txOrY(eGYM#K5gug# z?Pqteq>M+wyeUZnTG8TS1KLhEQ!upu+P0HZjXZ`Ets}X}N7&qFoTtFiLQ}nmI10uh zbc}r{jn&&CNFuD3IzO0rKnkJzUPcbFs$*@Q#9IbLl>!Q&sY)(j=M0VPKn%e8GumMQ z7SRA(-ai1a42=Ywej=Psi2+V8`Qen_-~PYA)3KF5kEi=TGI**RnHf)^+XHy|Eju@fTwvn)6Vg9r)0{Ar}2{19#6C5yM(8q#(4|islBypo84o>wTL4*i{AMS}nu5GPYpF))Ogl%`0LhdQS%*qedt_Z0 z)5xl#c30Ee$!Mv*xyp#!e+b$~-a{Xt1gB2MVGO|O%gc=5lRh}Dvkx=D>6Kuj4^GX$ws5-3=GiScJv_4=oQnJG0-VG? zJ&I4}GuWrG*CTd;k;y2G$}qOWKRJK9iHi#n$UM$0A;h2!ql0+pofrjPcQjjFB4aQa z=IJkmuIQp66=7x!5m{Cv_D&Ros$XEw_<-@9BFP16f0A?!1}@&vQ!di_<5Sq<2FmH+NxH#_hJUQ;uPO?S5~M?~WMBig5D>(obVBFMeIP z30v7`P1^R-6YtE#SC4$hEGhU&URWD$?kq3Jlnq*6+cQH{7>%^SRHqBeb(*qyN*sr? zlVdgttodOgeV9(p-@c|Ns6(FBze(4uJaKxWdHjusMoblkUrB~LX3!hqne$w{foJFq zoT7N>BxFM*HUinmKr@QR5lnL(_a}|}8j7TzA~DpO0V(oPBwa4G5XV`!IxvOGnDTX% zO=;F!JY*%lxe35OJ8~VKrKqWkuMz^L8uaLTPJ?iG$)eAhHl5)oahAe$4JHx9dZUE9AF{9D| zzQ#@jwgBc)7@hcr1wNQyfd30~~_3ak=kM3!GmPdB8S&>LD~ zrbm1cClkO$PDtFhBnnK^uc;o_qs6p~y2WYjJ)L^jPA0JG(9ta{6uT#4_oHy5>|saE zz#Lb0TmR$3&1;0boW?#3zlCb$Cw~He0GJ3{m8ZkyZm)6gQU?){KkHl{R*T38v`noJUUoNme#MQM#&QIw%N6zOGp!BAzYYS3}rM>?R1vtjH*2cA6C9aG4wBK2`-h{fn%Sq(36aX20KQOzUiWzuzpj6(hjO z{cE6Ia-$JYH9fCUN^wVt)9>gtB()r#G~aCT6P;Aav&r=+FZnbYm1+bOlBs?azdXIR zxhRYys>pbF%dLnR?r?mVR!IazgR4%>E9a?hXOk+)F{_?31ghK8F630wCBSByW$dDX z=a9y+qo$!b)Nm%>a7@WXpbPLwj%IsX7P8Yka5U|{{b>KL|Y)^ z5BPQ~kx>m@gC#A|D;6t>uW9%^CWRYU9Klu&J%PeEnp4ERkrPBNKZzUak?(t?JX3Ur z8gk_BB#289EFvQIvZI#Ah&cVGmD8>I1a6fe1E0hFn_y=IB<196NLHx+X?eiYMY7LPr*B)d!iaI^ zNmehF3Tm%rD`;^oo5LTkUA+WVQ(Hkqh=&W|hX*Oj5fdMp6Gz{}c@eCY=qhjCOmO=> zGZ4Z16tu+W1mEONF6T8|k0<1JMdBcob$ed}xr=QhU%MO8+(Q3~y=(X$U68(@K{NtG z9~C;hB~MFBVd~W^zQPCCh1db4B6ZF@5mPrhy*JAX9y!A8$^Dm9ogIx20f|Q93o*+o z^&`Y(J{2A3*J4KC-#AEj*J%8D{2?P>UR6~G{tXRQ%S>Mz-U zvUB-1uj89}#3%+vOAonjXe;05t(Z;Dxc=>J<=fcoRoOC2^^wfC>A9;fKchg+8T6VY zU3&Q$YAC0;FMN=a%Hrg_cYv8EJUP(!H=)==V#z4J&ml>w1;HAO=oG4@75U)Dbj@ej8H0&pfJFP?wR8Lw8{^@d(>5+ zT5I_>?P+T2Qoa`g*{lJl@{e*#jmtmM3Fa4~y&Fot2gnZMMH+uQpD$FZ|3WyNz$al69bfjRw_$~D9&=XZyRi5T|Dj(QI>nZL-@23Fh)1K`I>F9qz|QCkJ?xP8ArgDzrNIuqSuBpNPI+wuUO;uwd9qaNqxF988De?f|0|~QOrHoY|K}4LX65gqN zrJs)GFjMlC4!>r{^Ob(+q`;t4;hj_j(_)l^k#XW@+~h0$ak_z8gXUr7#yOgq0x$6}Va zE*E{7MOQ;pmbTDCA?uqBBf|Us-IdwAk@*IABiH>XOk5bb2dlJDcx9X@K_MO_v&kmOZUxlrw;Y006FYTqf3WXQ3Zq=4kFl2 zaPFWm%0o#S?U$Z2@>?a9f+jkx6d-Uur4)jQ;B#QHl5jj{wHA`lv?GOV&IqKZs08Yz z0PDX}2%+iaRijZ&R2*ML;=yV13aV~-)d55Z_z;OsxQI}a$`Db57Fcxo(HV*L;yl7g zX(?)%%SY)z%bWhrkcDurd%E{w+pp&8|HzX{fbQZ@m>Vz!!=`LD0mk>+x(M%wSf3)Q!C;v#|Ir3`{dL9ddOp?Ow zzK08FflDAVCAdoS@4h2DZi`=+rt|AaKG+FGXU3 z6~p~^4{n|Ndtam6|2yUWdB=p&VB6f^e07rh-3FBt?>T{%m0Y%di?J_^exN`whul2=SM+QKA1Gsv&DNx z%Y;{)pz{Z!O8DQnUge3!>HI&DluqS;bKL57_&Rax`ji-yl(^XUxp^&X^JDt6fZ-EGl*acg^dLAQBwu zv4cEGG4YS3_CSWrt5jG%WN$KRPBbzM+r;?6n{xUJZF*=l2yzKn1Vv$a;6lfwYW^)io6`bH&gTt zIx*N3M3ytIHBDYEg%WDG2+||`8l&~FwaCwh3?~M3@J%nP4DtEizURjErKMnY>@UYB ztFSTRBhk+jCKh?WwIcr(@uh$S2a31HexCG|Ogtzer5=Z|DsR}huw$GmF)XKcQo1Dt zYdwJA9}UY!y_9Qm2LJfnJN^nBq#RP;Du+PSzJ-9fx0ONE?lqz&Ve+KBNqk`*<)wCA z4ckWu88J8hXRv96%wZY7kR9w3GNqmoGNqRhvYFB*-Ed%7*cajwc1Id}l<(Oikt5LC z%p}Vs!1fZE7GYPZNY8z`aB;u+lHDbHp6OsY1LH5!W(>%4FF3}N1WueG26S8F!OfSe z7z~gGg0G7r%py>e2w}R%^d^d1k0~KTpv@qMgF_K3#Oh-__?Q$b&8H`(V!#vAbj}4| z=@xliLSG3ncy)*%1+sQP5x7L((_#7pAD5%mD41%-1)QphK1n@J)~`%4m0w%~z`Q9f zYLgESFdkz?(~D6N66u$3vh15gweYyLGV701j8!Be9`DnTthUcBl9K0OJHd(l!@xJ2 zea;q3JPWSJH&;v) zf!{lhVIUIG;e=Qrdrpt$^oJVu^-0N08H$k-D+^#N>rKgI6}uqZ-*+VdCifkRu$b`$ zG6=W=5+i#g0L4#i57JS?UrNUem5v8*CXQv_J&(O|243;Jk&dAzbuf!!SDloOf0nCs zFk=85_>ibIkq!~&bm@2+#jSL#W9O2Co+cfWq>xI-vsy@`1LlDZa$dfRyQ* zuOrHb)%t;G&kcLWdp-s+a^#)6t@K0n^jsP(AO8UkP_%09)YaHkw$-$5~NY6 z;ZH1qfi_A>m~$uib0zrRWqHr{ zOCjTW<2%9N88R~Q!#K?M^bMP4m)l};tf*Zx*#}k?t0{>eaDoI0T4K!oN8>mib)rjj z5?S6c1vUQhdjmIqXxhM`>BjS{iY2AcbUk@iMT&ki-{%;t{<7+o*?BXG5a>7gg(;^_ zHTo?(-Cw@Xr=(Qh0?SEa8&j^rW=#1CHV=G$7CQv%_ZGo^#e9ssDgC4G!uO3h%lOwu@XTo{D4I$ZUspe3tJPU2c=NDAkmK% zO*c_qr%Dka##<;n8&#stJ55Vc=Z)eU>Mx`AZaov@1)iWCr|M~{xGCe!Mk!}rda#BOXJa#dmEs;(j_S5W8-&SdYVa+OP! zBf**V=#_sdJ~Uhjon5t#A;{PU`pOra1{r(6?<>=zNRhW?>Q9vIO8l-4OuXM0WzcG*^Wjz$;2ym-Xc2nA z*Wzg*pCW7N+{sK{$~lieV(ZV5atM@ik7Nu>z)+5BSr~t?Gq;WANUbudH|%dvUAveR zfR(rYY`8y1uLCzuFc>I{ZMhwM@64wcX+8vSa^)A|A8Fl0Ut#TZ^RmES#5Wb}oljJ< zks1CH50SM$!Y7!xP8f}MzweJ2w9{{kvDW<1!mX;Dvqd~@Jt%~YM z8K&?`A1z5UqrskC2m6S+k=Q>HgcZ7#3bdP#zdiLMw2swvAO_?f0UK=dI_#b6NkRTabq z3Lh1!KbeJ*D6)c(kPSPdDa?wxUQhIkxuQjf0T(3FfPX7IHElzwMtp_@jRk2ja7d;E6J*du$uV|;>8xsY5O=H#Ah)6tmzBCBO zSajczG~E}t^JF%tg)11iW#mYV(CBDQ|o&1%!-(K8lFJinf zv`HL`8~43YFvmCHh)&<+KE)nO{OUi;pTB(+6TNmKfBrS8@So?;A8+=KXHhjr$Yihr z^sk+q8=mL}Y+^!qXTHbzj0eDwXOnf1XU^Yv@PISO{#Dz{pWjj{63`-lejL*R&}W5O zhxl0Vxg4D$4x@3<@%Yc=X-g~n{`STCYGUIyrcj@DzgTisCqcQ>j zV_a?J&%aXD7TgM5fkM~GgYI>k!PZv({G}toY5)EF`8&;?iCoNtcQ}9k?;`-)|4#n= z0a+ADvL0v-9z7L=#|j6uA-xHx>>85IIwDxYn8JJT(SMdd|4|V}{9nwUKdv2J&|qKr z$r;EWuydHBf($Z!!|DFZqvTcO&+mDVk5|PQpiD~s{Pfd=TX!UX{%RCW%b!0%j=z>b ztz@9I%%3kdu3F3d`6IkH%%2~Mj{`I8;GUI7kRhP)z{clV&!3<5u;kBQ9R;S_&Yws8 z)Z|aEre)tw{xr^^p*Lf~4a6oau~`il)Z(U57>3zWOS+~f>qJx+fy)p*;0ZzTO1im~ zFvIxHP3aG6Nj)m9;a~S-1D%}h0h>;)D$yO*;E}r=oI0u ziln;>tjfm+ylqmDM{bkqgp%;dspj#WJF~XIol*cI$~tI+$OM9`%{PtIKUM#l3jJTk z)v7k1x(xUAb+n0$O=o~Cvim_)%21QZq!^AT%@%8PZ&Y2jmMy2c9BUJP3pE*vf z%`8DGZ0a~ub^hrm%Q!)Lt5z^haUZ+ldxCJDS{cMC)&ueCa1h-roK3Hh1x$kT_wXpd zB+=NXiTCW~2Z^ufXIwrEQm_lI)Xzwn@6Xct{vS2Ird%*vxdQWj;SR9%T3~|bFd6=* zd+zc7dUKOaVc2MHFrIo7k}!KNbk$e(T-c>w%=_FK-IR+U2uUuAc)C|qGMK!YxGE>+ zmkB793=h4a;)Y{`OZX{pOtG6QuPlzAm^BQEqJwKUs~Ab5DK-q$PlC*hioIFv9CZEA zE*YcxzZGh@SRO4XM&IOvQ2j$9NxH4@KyEXrzlDWYG7=Q-+iZmR1RTa z$E;7{S(s%ZDEaa`Uk;Zen1ymbT{cQ^8Y5_}T}*5*DsrxaaLt#cp!!{h#Rq4}qW7+t zQj;g3jJecDZAYZc;pm;5{xgkqmF(|vok?G5;Y59WA{j5#AV=kZk>;@pokVa9cH5rF zkI30jzy|lUOu^--I9iDa_lnlAg160~Zh~mpp=f&?N|iW)W~ehp#TFDTZA1?l ziQ7;ddxZR?kymNC0L6P zDX$=;ay~r6cH(P*f5YrM->vJZJPjQvo2|^oryA+W>T~nGS~yv@r@%hfi9geUKPk}J zI!Ze_W?r3ZtEEmge^Tlg9)>KD-pM-dun2HJ1?-iE?^P7uwDb6B$vk}5Kh6@617UL* z?1t0vfFGWd50xZQ52G12dtAU_vhctqPoSPgyYdJEO6lYuuN&nG*H-OWdyRqGOj!{@ zLx!n&HK;+XgA#Vrrx3$_1em^`H$j)LaZJsdY3cwFo4qM%3X=VUshj)j0ZO(gVJ;z! zL3s(yTIa`3q3y?POq?$XCPo)XY@kMn2ZmiMlsSq&Z4TIGGntTIvZZ+7f$>uRLH@K^ z-#R#E_0(5i$&@$`z_=$50?C88N|}Hs>F;>!>#{Vt?e%qQ92K9&Ih-ZPr5cBVQ8ma& zDE8Oz{A>{oPbEv*qQpXzek3NvAOWlt#tH`kzfjGA8GDDNatR;m{<^O>DUr%(k7`&9 z#40DTDj0p4fPm!CdejDIv@Y>=vjjioo_zBT|fxz0}$nn5r$qgl|*&?I6La~D~n z>3hsLags16E@)fqCUhIKa^K!3Y@PsFxdHU))zlWe`Z&}NyQ~mip4y00B(oRIgBWKt z{g~tj(ZBz}`DZJ4_ZfB3f-qtvJJT+%pcZj*9=wAQYy?NDOkN_2nBWLuj|YQMwddwM zz0W&wco??GX4-jr{~AtHuDQ`|o~Jio3*~b?rp@#8?vX;R9@{ZNUL~_b3*fFZnc;;& z8pbH)0LrLoBM85=I8Sd>Sh+Ff*p5Q)p)Wi1K>JVzn|7YwE~zg$y%vddf(wKJ$djKL zZ)qpbKRcD<0DnUrggKTh_qu<7CEl4)6Zia4FO(KOH8oTJqDF0XxJ`zjbeg zpIq;ukDuPN4_o7>xv4LG{B-qRlsNL!owkg33`{9RR8)1DTqJoOy2qZ+I9;ONDg4x{ zX-D~K#?jm3r~m%`kVE&!7@?FQ=uCNl=7Ct409roX4+#7Je1FITlgY4H>8;$`$FSv$ z4r}zZ<8jKc2Z_QA-rdnCKszf*(}5okN%Cx)`$OhwA>mnvB#gDPKjcqRNHXNp_lH!= zE8*F;_lG>(zxDkgBfIKAQ}%}(@t2N6ZSU1PR< zl(*O)l2MY>by3xIj+?@pu;nw!+xVkhr-Q>kZ*mI9fj%tNed_*@FZ+UX|5x^h+|Z5i z808%yzk*98#I%F^L!LaBSTPf9I}3+XE(3)l)0i?~mYm5ae)Qm)?jQfQxj$q^%y9qs zQ0v^kXGFRGcgp?Kb_=6HsOvVk|I=fW+~4N@ke9VkD;gV~zTF*lmlP82Pv0MMy}U|l zY#77V_J=%tRO|agM&?@n_w5fk%6sV3*gfq-JKjX<{*cTT?|u72uE-*)g#V3e)pCDG z#;BJ3|K$$xe+q$ZNW(btep!(HAs_aEEd0Ns6Y}U_hd&!f1wH{04D;%Ffe zmNxf?luIFTZx9C2G>@4g`%Hx!A#X)qc6@)xMMt)|KV)}t?R4<|{UIA<2ZlaR+aL0Q z?-hlK_(=CSxSsE8PDyJO5r=tJFY?HS3hjc3?Hhud;F0Z4_ zz#7C5lPw5INZB8|>4h47r@9huivpYEN|MLEjb4)HZ zWWua`KqgEq3lg)v{UKXrw(i>>GOET%N8Tt*AATj%n06>C)k# zxRs7J_lJ~Ap*Hu26v^wh_lNY-_mqy5{UPW7-X|T)2%Q&B+oAm-|JqYg&~kssQu`)t zf5@}m^MMjk;Y@_d(D&Hq6cFOczdvM92P+^Iw%9iIhs?f-1VY5Cu0!ht>e^2UbdkEe zYumH+wh6SZZ<0W5?hjcih0@d7t;8`I?ola`n%UkcD3@foRYNGtOosE)g)aO^Wf_4= zv#wID`$Nu@rrO*e5t57*QB5ZcAVVHzvRHTy+7o!gQ4mEU)>+_gvoOTHZ=c` z91`)=8f<|Hnv`;KIE850*8Y$#GD}b0A9C>x#vLA*=}A%29oA6a%04PcW`D>%8J-}~ z=(Nyu52Lu%bZzbrxk(D83zD}#P6Z=Chlz_Sh4l7iy)~`x;ABZ0QrTEa>!I0e_GUPzW*tYkF znDYzjz);AS61Iu8JilNC0YDmTs9_Wf0vQx{o2%UsaXd}CzB1I%jLZ{Fy}mTmut9H- zeq9}E_!2kBZlUi_QrGYotE@umx-Dq?B^E&THJKnZcTl9J8T(Cm`b}u=O_{hugXid7 zJKW)X=@a#?J?_Sa8V2Kz4X$RxT(*6OOoaB<@&V*fULbu#?&I^#HZ2@Ic_0chV}Q7p zBoU6T7^9rWUl;{mH_A20O`2zuT)AAXV~z+~=fW@U3UHIbFPq`f+0+P?bPSo$g7T$q z&q`gXFQdM|?3&B#SfoEJbs{v?Y?Pne>PC4_ETDAdh&%R=>s$iDYlzD%{+go~a9DD? zO8De~>1W77tHYn2n0Rq1dqLt`tl$;LhZhnPL=&+xxOoMS*UPGJ#9BAdCtPB9gNx5K zgu)WU&|w%37Hdx2gVuJmM$}L$fdph!8dt~%YuPlWNX@G(1U=ho4;xy3PW*;!jJ66` z5ECm{sBX(HRb|S3W2;76&Z`=QD{|eqs^f4)j;pNdkE;&2x~S@KTm^7-B{SI!qZzP0 zzA^}qv|aBzf>_QxG>nk|i)5c{d- zj#if~sx`oxHg!T3c2+$2%%QXqRg(ELNm@rws#tLcdl2jvrg@*d&C?lVy$qz)7O3+s z7Uxd8YkJy>ZDKx&RJSn;TYA_!K001`Ase42U7JXg6PR^`bt#PfBnI3K@1|?N9gPk| z!H$YWC#Po)G0Hp%U^JJfd%H!)Hp!Rm!(i2JE%;#RLYmXWC9*vvm5t3Y1Ifla@8)kj zi;b^C)&aS&t;V62G7`JD*7(Q5(W*=(bni~-4vl@*=9CPEwDoE+iLHNQv4bplJHc;y zbip)kL8w6`lFQA&Z+58R5r6`U-};)#9QfBpk8!BZz+don5kxBjC*dUj;MKi^dCrQ) zfXqlP^gI@<&&EUDOI39+8av?!nnA4QJHeBOld9qgaYBqRX&5WS{I(-3vJ=dcl4PD< zc8^IDJ|YbRC{vJ5-ornUauIX}MTLgsBH7r|Mm~@;rrok`z}H7WqfH*b@6O}vy+Hu)=GN)lho zn~fsz+3LI=VN6Syc5`TcP{EcP?9MN`@Us{s8Vb7pL<&a zGv!g|st*2s$cicb-18m9)`CIFPQG?`>x^O38>Uzh5OFk2o=uv3z0Rt2>%tsAGNJgN z#6pq4a~*{K!HtF&s(w^}^EIo7No}H}ncp)4x+ZXt@B&O7va$oa9z;@$=3<1%Qv<{q zIuu}YfwQnG7nIC$-}{X{K=C7y8s!S594;dELN!UtCfv@s7;l~(uM=2)qxK%=Pyi<= zkxVj5jvv(6sQK0(!})^$Jc*FOf3D%LV}9WoP2qhU4Z)DWimEXLqw;1Z--%0!n_1>2 z*FC-IHw?xsazdAy#hEe=5FBRq8$|4W1O0%CZ_mL=L+%?KYLE?t+;bpbymq>;$fe|N z2{q7LB>qc74ZH9%jy!lArDt{%%n>l`aq>1D(45*1|FVYfYZr64INj6kqrm~yXN99N zq(y$nlO_PXxXC319%H9V;^gc(kNg0q<)RJB4}#tbmMO)FML-Gm36x~TbACDi{IIg> zbT1i7_IrPdr$(8|!hE%;26QDT0(Q)ffePP_Xz_)p7M?eLQUwoggfsypeE-vXI1M|W zx6&k=6#Rek8u|A;#LN9T2P~3FOOrzXMx}o_=N`4|8i^OspYsONUw%RVWxP+)e}xn? z^j~dmvdIi<%?)J8ZXstj25#1yH~GBTXl@GJ!~d;p0`+5}13+Yi9#;*^fLWp>b2T{z z_~j}C^6Sf)YfU0E&%Ue}RfX}m0-Q7hl4@$#D+o)%pDw&Rz}1Aa6G z*`(b!5yN(<%+jPQ4fX+!DsWEys>)MD9iI=lpr{{Y2%Ey>PzFU0AG$=5k6MhIVzx1b zgTNm-g4pp$7Wekvp=;_gQ1fi64P-XEe>&20tgG5J-HOgm+CchZ%UJ%mibrZ7wI{;s zsC_E8`;CA-d9jDslWS>Dz~$xMeiyDn5KcY?>8YhK+!_IkUa%9mwTD&zXfEHqe}l?c z0moBFd_*`94k|gdF^Si{0fF{{jsfB{07F?3XAN*tzRF#f*EOj#f^9T;KoCL3ZbGxdJp}9r9>ao-0 zJz)=H1-SL(NsPP?Joh&|oLX!MS}jNhvoi%xGQY4XH#BSLks63N%ID2Ib5lSXLY+a4 zxhLVvdn8jCF%R`cZ3a#Rh0{{gp#oM*eY>}bW2#+TgJ|+1wkVyesnz*Mf~?R>496_o0HU>g2Zr!LV$S_guH!u4 zeWoDEq6{*aeoP}MHVo)lIh}Mql zJkJ_0tfFZpII-7o;i@kD!5~^6&^A!(uH6$%#=Y^Xisb(^ej7yYX_Ma|%!FEHY1`c6 z1dfn1yo7m@u2Mcx1JO*fQz1mS_;Yn{BciM5-nt!{)O3J*%tEAaR2d`G^M%{fA;NCR;A588Hl(_dMIOwT{+ zkw*D7jO}m2y*>ymKMFdwhTr{&-_-dB7`Z}PB}dx}d4dOJ^1$H~MMW=g)|~zTfM8M- z@et=J?)g$xM(B{`{$Ag#`hD_Esn*#CZ<;1YFKpy(80{YMyQEZxwan|UD?TC15|x!h zFfjbY@zAyI;Eq5Xk96{}r_X;Ad%0Ed2RO%aMEnngAwvqHa6QR)ZJ*aUj-pRM7LdLU*P0Vhh!kE?YoX!2)ck!LHGj(b zsyXorm76jM=H7w5WY&nbL6QQk{$Sc*Yz$LLoVW@NxLtM!oA9WQ*5u0pnIT`m4Z~UB z511~_OPy$DGzM*PBkd`kWU;?ooLYwg7Dj6~p<3j|;qvt&00gTAfb986u6sAS!)8bv@|Ipf89O!oc z)=gu{uz+U$0sx6W!zp_mX43B7Xt-(4m}tD?K{&;vISTn0e_`6#EoK36;19Et%nq88 z*=K-b!Qdb7m1J-o2vGzQ1$)OxVauikyF$d*xc6qE<6Df7?s)$TpK8(n{@VXJZTA1n zlavVC|D0W<|ITgpAG&$6(jUU?#dn}Zqj;J@Hj8lFa9{!heZYWOh>SbI+(5>P>?ATY z&I4RTP=d1Z$xTU)H?nff%PN2AveKTwzU+?O73Al41X{({Woh&Rtc4a<5eX9Rx+hy8 z?kk9sGByG?qUa6XoIt?|VW135jJC3J(U^PP1h={ABlojiK(?9`dU^ONA-=F}i2q@@ zu(FNguORD{lIvt>6{G{6R8tcG9lD+-z=~bWB8rJ!x5&);B5a^AdZFai+3k_35>3(3 zU8C-}^X1Tp0f4e?d<}0!UNBboXQ%@L4zb4FG!xL+hVc9&0AxH2nrN-MjlbD_XNFGp z2g`%m{yl3+{5kb`a@_GTgR?_7*QlQ^;r`fcT_$zRZ@k{D)=;z5>oOrZjyF1^Homt^ ztBG3oVtw z%b6A2Hcxw449~JW+J9-tabVtxw^%pI?T#1=apkAP=54D{cZV6t+NGcvyz$f_=K zZjcZCl@f=*pGBQwjf{L08N z)ZFNcd!RE&(v_d6o)L2iBuv)R6zVp$4>`AE9S+`js9||~T-0sq5SsivudtTPL4@X> z*}i5=-%!IOJX{*-00F_f>B{l(alnX)Bgw+BvIWy_gEkXX!#$7F*^Xr`qdBm)3u?%J;QvuA&A#%HL|Wi@(~ zX+jMz@JBb(b1kjl#-nI{syT6@Q(p7CIt<}Y$ObtVUpezhQuOyK7E#BZeF9G72y0Lj zzuCl+J8ulQ#1V02#S%gLq@&k~9!cz`qd{tH9(akPgrjWnYD7wXq1$(a1(Y+tw& z%v^?NOX~B=`HI{s>{Yv%TxV7S2w^-hkqyPWSBO!Th!U0H)tkSR5ptyG}S@i?*7w}0AGVsZ0cZNQ~RK)Z;$5aaz4dR;#dlW*P1LW z_>u2kHWrB9BPp`}cp}EiadSebW3Km)8FHRBW+(tKt=a(!iD(%%U1)AFPAl_NBDjf~ zH(|FYCdOni@SL!+1YYXX0GPT>0BW}2L(k)39wCri%t~A)rcxy~aSm@N+YOJgQ%{h) z)NH8?HN@}?LY-N&<-$vh*#r?c6R7%{2n^65d91nG|!^O-{L!F?-YGe|!>Iy@|s&g$hPQ-=i>iQ$J zX{2{u$>vBtQ2qkBHk3b2Z%9TQDXcfB48A%BH;MK1!~j6keEEN_{6EJ++4PvMvbF+P zl?7}}Yk<9Fng!``rF;d;Bi95Bxo7kBMgeWbk+J_FMiAU??-(SCCY~rlfzy!b%g`O0WIT>E`i| z8fg}PA*BRM+(2Q}aqAVfZ1QxOeTVbT`oD2wQayS{yBZntb_-0P8=t(~uJU$-bc zsatlmc_9i+_>}R_>746ft#Q*oe8OKHU1~ZuF_GlgN^|DyL$l35>At1 zeR_Jq##0EE`jb!!ZsbDf6k;0s6iW3}PWn?LdvHh^dP7qY>D96(hizsk{M+*QH z)4N7108NxXEez+Vv9d=z+M#Y!J6)-(+q8SA{!l3q!LbvKRi8oUT|Ua_ymtO!S5W75 zL@)8+eF4>Z?`fYKHj`yibe?$1Bm##wlf`gDo%hz?TGM$-KjRu%0v5QRHPct+92w{+ zBsyTKhUCTrodJO8yhiMYh~Wdr;1iD@oWL7fjzWiKv!x03PjU0g_&v|rc{K#bE3OYyz*9_GX>Qr}!o*YDlUr$SiaVf{r*#{D3N=h4oq4p#C?UAPPdox{v*+um ztHqh1c#J?hgr}JE@SM{|nr#{DR{DgYf~1LJc@wjqy7tNzam+vT3ytHU1nBwoh zDN}$Sipd$m6f}e#(7iE)U^^n{0Hoz4CWv1 z^ju16Uzs6*J7jRNItO@6>+a=n02F98n)N#h;% znhvnNrXOan=?mLy|8vey>~nwJY~S---*wntJAs1-*&zqI9>keJ>YyLr@2h5OE1W>D zJ!w|RO0S=!TKyT$mYqOkw3!x`3Pnr?e)w@=(f!w9cSBtD2eGABh9j$EF^jtKK?@z-DP&(=}qs~cL zI3hHLsUTS2oMjD;&c<8!VsmH;${W#w#DrBUpwj>q(*zKmU|aFCPz>R!%w}EBhCEV{ zqYR~@y`K}SF>I`COqG}MoGX7j2Cq8C;BPHMIuio#Qt1-Z0Sx&rY*0P)?9Oix>Fg z^ErAc*YkYWjrJN~%)~WWhxLeZ)}hu_6i+rNx2Q(IPElRrp*rexsEInA7R0-6*>X$< za`6P!+H9ujTD3YGEx*kB~6-bKm~ z)%5ZpLU0s3RNwnoqFVepuG#=Uh2#iDwT{K0+9VBCe`(baYN5HwCW2M3XQo0pfn}Qw zR&TPs>Wv;Vh47v_n0!gS42iyJALL;*BOWyFJj7Wun`<`rt_rf9DL`(bi8FkwW0RwB z0>68O?udBnuxV&2!*zdD-oaQnsxbIwaaD@9jfjnfXm0#biRNJRrSnE z`(hI%k)OJ$s!AFJBxr#{w`;IahDhZf%M;OZ?F7$RPru4WHtI!hPjO#5wIv=z69S|R z87;l2^NlN6k+_y#RE#c%2`6T`L%o-M(_E~}c1?Onr9>9KZ#qNqlFbGn@HT#>@svay z9#Y-LtyKpi9`{8aBW=Nd@FxxK#D$zIU)abt>6g?>@I-w%g2u_u*Eax}P+`o$3Ee(w*_;7dYO0`D5a}jrlV8c^Y2}_L8!i<$i8*mJCiH zg%Bc>_*=j193ZQ`+#_b!Eal zvo)Rtm#&oeKtZ|uYV^B8$|R%T4C41LrMt3E=KQCZEfn!XoRHl{KFe+uZ z5BVz83*UQ~*MPlZ-URI1cc-8kEmlG+0L?}>g8};|2t_;)nyLZ&Vq$O-K;R#*r}(a? z*=yQKf(fymg$JpLeWf}ym0>SyKz+Ad-EsR;OMjl_Y1RBFc&|Go@^o6pnPh^hiLcy zQ*AhZCI^E?%PEHy^o-KX^}$vUt%UU$~=oTU)tG;kor6>*H6SCq?G&*^udG8VUUhSt=ktn zst-OxitT@<4{o(BINQ<(o1;6X4;GH}>4PgsFdv(e;ALt0;0|Af`d+NCEq(Aq?l$zn zeZs|o=G#>tz$&$&51<45tPEZvOQGksb-Au#up4UUvL{11liGoxGki%OaX5ITrc31%%gxr10 zGLvN3cJa@AXA3h%Q3z0xDvGK~sRVMHijzs%){7)&cjD>e&eqmphV=aJJ91gCbU5TQf6S~$}{M*0@~rIP7wG0E3D&^b9$VL zYDJ|uF0%jy|A@>vzUz7R8W?IMq+qgT_=QZY;43OEVc^=us|xA+QHX}ai=lJj`+AIa1DT={5A(TRhVzt-;Tu645n?sqzU6|O* z_w*Yyop?6e284M~+XG~h42Y~P>c&6;zZ_nv`?dL~LYTK@1OeK{1WTQq5Br$uf5l%_ zKR_v&xs?rIIKiOZ9?uD#1R1Fdr%A7(H;nxbyIsD}Xa+_pQF?f5Qffq2Jos8d;|TJ- zM{a$xSmV0eLwFf=Mlh}aJieJGw9uuN?aBc1&)1qI7(>c!Vk`zV;dKFIxqTOM>o)Nybm!fw`kzG)QvC<*vm7v99% zdFJQOThV>jR zQXkgbxL0Uy-@PLBKUeM{sSax4(a(SZuw9BAQ}zk*j70)?It#RW})5i*Y8CX?9f))-@odvQcV zYExLFb}>0m&862oMJ8Lev#9ITGzFN$vUer54aA7;iucvi|G-3G*YYKZ?L}ad!-nP6 zVV`oC(Zb*S#T&K>)S5BZexWL523zw0%i`rM>3}-rY!os&TVS zKXUB^|Gh?aiVO$nT#M&Z+~LQzh91=@Gf{$L$a24*uYgxK-Kp|pNyC@#+n1_DVMNMv zST>rF+Y*+EO+tE?lDU=&r@Y1B|0W49ZY@KvS}Inbt1ac5Qx)hujAS z7v~FyNGFa)veXo}Y*5Q#y7#Yw);isb8YK0V?9Y-@&g<4y(+xpLh5vyWlq0DpjU5#o zf}3fAEXV+^i8wsZbvK!1?Jxm?{xowR;~M}|QIrJH0J6O(wHIafqFgS}9;CHp1Qm#S zucuXON#EZeH~rJ5FM$>gpl)&XBKMJhVAvt(eNR*CMRNSk(7e^EubZenYS$?f&X$2i zp|58GBw}C=e@S34>O8pyL(tYX$_>0vcga3FlM0i9QA73Ql&PVe=qIzWQI2}!x~Od& znKGG^it~;N%`It%9RvMBb4%M#Iy?@qWd((X|~okUw=> zvqR2RXs{S#I<=Uf;#4#!S!}*_Kf(qLhB1#uQ)Rq33K!?|q8~0U;6-0tTo`3tY=g>{ zL0KF#iG*{qZ}>F1I0;869iWbP!?#tq`&0=(tYX^qf0sC1m3VjV&bQLG*#JW!m@K z3@>1SA*VCh77Se3i=z@FYE^{wrp;-Fm^Gtc!mT`4R9&%%ho``BwitqGKF>^QzCG`ARnh5BWaMs&oZ z;CM(ML~zoGAnx`YpU=B~lSb@`yU_S9p}7#pNoR(lu@&S>NH{u8F#O_Pewc0{TmmQ5 z3I1M2k>VDOxXgeT0b&H6Ts2|A#jfsivvq1gw(4BYf=cXMl$xHQ2^T z3V9>6$4!JcGucKG@3A+Vo_D9O0Il}}^BFyuLhtc|klU0?-Jea}kN*N=|7PX}2hO$( z>I6S{k48!WXJiLmWJAm5E^-H<^`_aTY5Cb+`|HMaMN>$QS@cx0{i7u%v6c2ed1q(a zpWK@QhW0P?wLiM8_HWwh_TRGbxA(Q*Cj32iy8Vuo20sr!nZ(b2ZNdNA+dGS&bxRC= zkMp(v%jP!dd+yG+Z}IcF$;yL`4z>yZ*1zv8{KW?w`0IS_U)vV^5AJmP9V-m}5A?Oa z-^MoZGiayVFShM3nw6yQFTb?W{wHs36F;GwZ>7k$@_kcC0JUA2c$B=V;8ixSpjbF{ zfd(s&#@ne&AEsJ@U~?ZeW=wG1Ca6lOVf!}ti@4Ghxqrbpg8E5W>I1VWv^U_DFVT7` zA$hWwK1#n&(HEhcKhyE}by7S~a#erqWQk_hFR#1=JARkFe+`1E?g{2YplDb!mojmrp;ygq zTn2d0Y71WY%jSINEf_H74|Dhvo2`>s$NXacu#C@{N(l#bg_QBlq#07ha&~^|vcL+Y z@#?aGfCYbol&C>v{AwD*afiXJ01SpA{;3JeplF60I@}BFS9bSiEGqN{K6{RFvL)l6 z_;w;L>z!<-UDIN(SGTz@L)>m5@$|X+7)g3M^?7B$oldd7rQcY)F3caGD3`xLk^IJo zfXPQh$j_xXDlbZ(2ONJ*ZZv*9zBN50duV9xWJx_8h69u8?_^y}Kk}t5PU7u89UGwG z>?fCTYcOdgHnQ-q8ZC3-7}GG0{cg}S}=nv7|$r`T&W2fZqb zOg3RuQ&K~7bw@CE{<1JuH15C;a$e_)=1e8_=Nl}s%_?OKg903>^giVf(%VkKDYX(z z;%vZS8~|WsySE*hq!f7CAh>oh@s9H^Q)`#7j*ra$0!MK=h#jir7NQEG)UN3zFs~Sh zatc!Oil)c>ExDVIAQOOAVbBUpeoaB*9Pons$G?FqaDblmJXQZE`Gek8Ou6lua>gGiZ3cr<0QYXd z(o|0flKq3@&HTR`IjQaWzshfxs#S^S$U2BWFkoi(=o-cB{sTZ1dP%2c7voL7yW)Gx zhoD`dkNaS9!SECEN|~QhM%tH?#Z1as1=*!8CFN|%dc!hk7gQ1YGsguMx&{@w;6jE? zo*`f;?*!iJm<*$=kfMYcxIi-i*e!M$MoFC)yQ3F_lnX_`llT*R^({l)Y4b(Z*Pz%4 z5J_Yjd-{21d_C6@w9CDVB_Q4q=6H>VlHy$`+pc}c%JuW zMz3e0;poaZ2rFs75n)17+<)oBlcN2%UOTL~|2x-4ih6xtpqYUH3~wNt2aC=Bt{@D)F*d&kAa(n| zU2!K5#ebI!ahqG#G{-0E(K#83K2-K{j7~;k1b9WUkoZY1|9$3uXX0E`hQXYHSyPFS zPjOopXf!qec=o2_lYY?M#!>2Ev^q2sj3MiXnTeI$wiEobe+LUXeQ*K8V7bu_M`nYg^F>M&lm!{rrKJ$cz4m*-dQ%gYY9 zytHZ$UIuV^W#u{UUDKNz(2TlBA_Sx>u4m#c#XQSBjYa05h#N;M ztszy^Ic&(u;K(c{Pe7RaD!0+JX4C1+rKJtKtB+T&w17dALULZ2ITx~YQWl){Kw>_E zO)WdIs1Vkv-P-%dJHHJzj3okbocZ%2G!zXD>xCLl#+%Sfek}k=hb*t3I27t&Tw(0( zix(uaL>GXE&J@^%>Pq#C}Prp-iO69FoFMbI8|D<0GKZh=hVD&XRRDqkO22rx9aU?~%gQ zh!*$Aj5aSR>c1>>`xUz`^5L0w9Z8}73r#+)+v|fB3$Bg5x59y zTm&+hd&*y-R-dtIRVNE6{<`>^*Y5_BAkR?*W-Q!FOdG02yD~ZeKr5ngIivvRwbpIU z4Bh@=7HK#bAn%pbG~PtfvyU=oNE*m6?CP+a8Pnhd8~%6!7$d{Is!?@PggU8^Sg25) z^w{61lR^!ru(ucvcr%j&S?cQ}Am}1@Xm014EtiHGI^kJp?in}<1E+Fq-BoUI62|yY zgR3`s7Sk}{&%o%XKxo*(NgOt`wNY5Q77*tuY%vUr5UL~^??TO8PN+*!UZ%8VauM&h z?=`Y&xGR5T)o?yuaMiFhZPoBmY&gMOq&Tz;jgNtg!^8#S9A=wFb*tt`eEo+iB}|<7 zj&NXjQMgAnx7F*!XxN?mnj*4*m7tzHM4q!)lsj}9mHRyOB+A`)$gkD!$2|c3{!w(P zF2Qljb2MgWgihd~%FaT(Z1;w8922+)mT_=M%C10XXl~{J5a3rd9hy5ha{%zaUa#8? z0Q$es>-Gb1K+0-dgAqEfOT+#nd=3&%k>4nI3qlov>N|oOxSU}NG0m!&WxbA5tDe99 z4=^?P)iyA7d-8Hp3gHFV7Yv`rPH^FStrx(_`4s;U66HMo|ak8*!C`(#^i?!yaq zlyhVEDd#q#J(HJe4x)dFI#Cdx7!1&AH*Ksuyaxx-{Vo{muS6DQxl+`!F$p!!#KF#T$O&SB}X%<}!Wlrgzr|uMFL?5;&{fq~13V z$^!OBHyC`*;JxMe`tDLvYBjt_K1BY}ZU&b>5eCC-p@w_#R+kivv1*;)ier9$lfe6A z*(}UReVV2`^7S3%x6ac9FWcbro|FCkVhV%xjkfxI<&Ow8t3V1}&{8=Xf*h&ZO|uUE@IEPZp($0AEESsDKG97|=~Q(Au0iwb z9u}Hc;dCjr3899^@h0?AMð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 RUjyN>o_+77fzY! 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%0DwWGFe#5mT%aaZ#oMeHm?Jd=b>M!QC# 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


        &yINQbf&zT1N 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�G7d3WEVPHlz%{8W1e& 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%0AJ?z0bu#}2pq<63!(sCw1K9Olu==ZeO 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

        1a# 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 z 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%0D;0bE~6b!Q3*dL~U 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 =jyHDqrr{nLX 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%0A&2?98F=lu)FyawQX7t3la{yHMMZIY1-NeK@>+_! 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

        fp9v6Baep2AanJ-z607W)^c36Zj0thS$U_^B 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

        X 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%0Du1?^?3D1rJP?s`X7+|MycV&OkzG9p~t`qC# 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%0Akwy|Cb3!T8xbWyFi&b2 zsoe#Z2*PCJNZuVYg3|NkhWWBB!y0255V?PB7-|iL2T1V^PpJvRbMd4|;HuSSF-#jJ zkO$n!Ppt`Cv-_=z6cAYAmOG&wAWwQ)O=xTHysIACq;>E(F)&NnefM@rqX5shVtcH@ zhTS>Nf%IR5g;e#nKy3U}!>yq-H$5`{LL%$TbBnzO8LJBISz*_t@AJQKJee!bS$VHG-WGnIk*Pm61! zE0?i(kQMwq=Nj0?-XEfe8w?^5BFv#0esy_ z$DY6ry8$`@;H#f`3<>B)*f>znZ?1_x-#*aohm8X8rAv+qxN4rlC$?xEqcmhX0Q}6Q zLcmVl^n~@iXDb184v@ckRw6X!EJ`YA&f@vrwOTG-nE_ny$$(AqgSUOUpp&)|obV9@ ze$Ph&Poxa+%(Lf21hOd6S!8KFo2LalAr}g7u1o3ta+qgc;)Ha@fj`hvPa>rQiS+l} zC32JNGRWLrm)toG)lwjqBQ^sfo1YU}nu0?X{XLs3%f!_3!26=$CYstMjR~Ptrhq=0 zt5-8h1=8s6*`(1Miv<7ob?LmlF=>>FX?0Re;O~M&ohcPaqrVfRDOD&C%I>}_Y1vK( za_okSfS5D&H^(siq+hdc15tk%w)^yL(tfwI2#Tv3{e zNp%pc-P>elnv#QMdmff48t3acWLTF`M{+K8dzyPxeF|JH{TH#Fsz=pzC%~_Nv1R1x z4c85kyIFwn$ma=?J^8+OqW1A7#=-rG5vV3Wd^Q60pl=$n6+eR7T%lJdDs=TT3O(le z$_KxVek&pueOvR(KwNxVY1kn&q2%uQBIN0PS=u+YHyU)H>__H@K@moUq5gw(_MR1D zCQ$tL7tAJ%h-Z!?VT#bjG>Uz{ZMNbOT@)*-i)oa6+nRYI1iBbU*&}P`g+Uf---#GU zsqbrPJBjhZXe_XFzuRmW%rtWTNlQf9jLw0oEZSZ%88Jh%&hh({^~yKV{qAfQ?FRyr zLCNQx282|>^;gtFgWbu3w)@~5c!cNbRpaV2Oa(G=!mKk|tQj_K;Nr(GJjUGEop7Q) zzf1hN^*dd;m*r-_*3-7d*$cZ#RhI80qrLahDT|pQZDqj5p?{6Db5wPAwAym74S=hE z-yz(w0c`S7J`Gx$Uu+0s?-E}npp)0O)`M^_SYbF_udZe6>r8>|^UeVK(Hg|UmNd{b zo4a59NQ#6ZLhiZoQ9wTVOwr8THDQNOYT`;)9t>~F?)<2ZW6PY>kq%e-pLP6>Q3j+x z{gU~!5NY<>RYi#L1L%{$KIJUYU^VkPa;w(~pE5jjPHJ06?wviM2%sB|8qoT{_K`0$ z38)j!7CqSD2C|tT?r;x>u29-0?;-jM^G%$3PH~Qc)|V95QBx0EtwNoBzE zeY=Hs&sD&H=c-oMEpHAj3~i{@YN08(pFL-gmy)8XiTc+XMNpUV?F$%Y|Dt&2z# z;HABAlss`b6=@*oV$@nArY21+VA!Xi*q;b>gHwdw|CYoGrY8Pn~Oq|$CiUC0r#NR za9P|lcc$O*cOL%Ms)s6@vAS5&!dGdSQ54-XsG`a&lRF&^9HYTYdzeVK!#AN(-dS6{ ztAYJ8$FFZ?c1~@|VCn&3E^22-=g9EoAjXuO+*jjol?tm#9IbQWUSt{vu`iZI>3b;b zkQW0;kv^t8#mP1zk@YJE z1Gc>|Ku@BZ8PNN7MJlE7MxWeU+qWRr(>l>KC~O-Rt=hKW{VMLw_H@#Z^sYwUvCb<-G+0tsvh$FHee<}8mI%9r;aui8ll~3u|3zU?VdW(MBE82&nHqvu1 zv?5`qP$G9gBs@yx~B@Z5!o`0-(saZz>JM1Y}d0AWNEY7gWfsaQW`djm}sZ<$eS(?Dg zIl@vbC>GP3Dz~jq0Lm!%+fk9pUN%7y)AzhQTRt0Woa_qp>9{^e8g?n9v$w!*lex&j z{|o*upareidWf~>t)*_gP`nM94__?2@wM*ZsXt!g3>@YgZ>ARYjdKjk|^Ga7UC*UuQ(~%xWaUz-taoUULk@Jb- z&zTM8=X#KvryiaiYc?i_;?J86rlxWT#)cG_HX!Vt4aoD_KM8_n*EF5trIlO%aWuAN~T2Ii~TXks|bOssjl#Cj#`ezwA zv>vPML2P^pEoAc;3W&p(fo2`3Dw7DIq`iy*X7%Mq0msdz4G2G(1CqCn;EfVDORkBA6X#B0k!G1iICXJQxcf=)(Ds;&~S6YtPo_O?6Y#QQiMZfc>CDQpF20)_5Wg2e)>Zd; za_n)Zfw$=mA;*dfj`jDf97~UB@&Nq%H-^CKw9S)Yg>3@dQ?5*e1;0urfnRz6r@zoO z+|perlwWLbqINOZ834ZeeE?4FYvD;exhizN?Mr*%s_>!9@O0Z=%|?gYG#j5=3lFyy z-F?TAvu$*JfIT`E>;ms=p)Nr;Z|O9ePQ=|8*}lCq@}-lHkxkQ0!gzz4c<i>8BsOJbcqP%`+{Yyw z=-gY_N(UTE-E4HG19Cm@!y?~M*S;YYh4$^$mUwzbY|x&)EUnQM{GGJmMTz9Bo_m|P z(R>G6TlP^mIQ6HxM+OF%$4&miTe{2G&pFdvqA9D@2nm`s#T+Mf)4tz6h%{u{!0}H$ zA)Nb`LZ_jX?TVh#4iA)4D$ZKgI7zA^mbHA?+$a_0sk!OWNKx}f+8n3SL3`3uq~W=A zzAGbaeGbJP;+}}2gXWE~RGj6WO!&Y}=$3>Je0Y}{x3bTT+j2>5*xRa@YS@T}2c!wB z^^!&rxj}7M!$wF?NTo*n-G6~Wkc3D*d|~$flOw72qHkh>Vo%;B_T#cIc86Fg_T&@Q zA6P_+J^6eG=027FBHiv5G!b2;SpHc@%^Q@RV73f*_HLo=j~N)#nK!_wXm@MDkwKK< z$sF|}KB_y8VmeSX`^iLzs@=0Hfb!m6JB*tg3SagqF>cG{>253crP)Vd88gLb9sUuq zWNy7TD~)Kdu%9PLW5D0^8KJYMILwFP-+7_Fl#t>(9gB zO0DcACQkjNGX`I=!h}Z|DpX4S`wH9Lc+FbN0Hj;Ns`TD!#~Qlb8>6)cYhF5Jo$Vzp zQk`W$+@w(U4jgHG_Uhdz6miPnP1(4-3T{bQTbTst@t+f+lfiEQpB`KoNZ{Nag|^^L z0Dajk;LraO+N5$WT}A>p%?3*YbY9DJ0QH2M5?R-Y+ACwtS+#)O>FP$v~1I?ONN`noz!Nvc9C!q!Mt}^wWDcMgUH49B5;) z(BJLQ@<7?$IGSyLrUT`NX2FrBm>?cZViX9M&w?aXkboq8i1UExhEzaxegV2q_3%AX z)QP<=xRYm~Ww?hOZW@%toKpkbhV4*w<%QbPDRltuEsayst|+zW0FHzJ?1rhw5caS3 z3W^fFQ-t9@>}BPX?N+Ii*_3_G=g@~GoAE1dam_D58{0+(oFYsa^8Zfs!1ud}BE2ow zu|Xi2|8km~x=l1%7Uhvsrpha;ntpMCR}-~8jY$n|2BEh@B{_7~Y%&xy8aOfZyb^9{ z2>mrmP4L%jl#Ct40(ZxvV#p%jYcrIa8W`5;5IJ8u9in8J3z6%k$^MBa^1BqnKG{Ij z$m0^tQddL?xN_C{Zw$H zTAWLdzOJux&@SxF0OD2O1dBDGUJkoRU}GTGT_aAl7H`VrqtB#~gUkYbTip#ID)D=bKu`m5DKFiX@u!2*KA-%lj$-Xmt& zJ}EtNOn*Z8fx7L5PE3x1NaY8K#A;Sl9Se9-fv$!JTM+0;^y;Ge5!UK&XSs3#}$H;U3Cy}9f)FFB&nakt= zxZ+0wZ12>QF3FG9N&RMVkX}3Lp=U;S@H7OYb{mi${}UiOA33k%LaIWqwUTiMQ%&1f z|MN}oJ*tJNGg4J?;GK{Rh(AY|;J#N$sBtD)LKSFa7|a20_1z*I4}&!73X&U!$+;7a zMJXrrDf1WxX&N%pHN2ytRS68N?1a27L+;^3V$!o@{Qyb`pA(X$hUTRervWxN z*XWzT-tJ!to8G-5XIK3w?_JTFf~K<9(596|wz=FA_twhQcm3yU*e1`Yn{+hr+Dzb7 z2DT0``r2O$!~C{lu>a02APAo7fkebu5H>=o5-1ylq}rzB*-aQEndRgmGNxST{PB=A z25w*fC*iu%)j8Ng)3SnIQW;*}H%L=^ah}5)COIAMGkNjaY$8D6>Z<#I5~0uTT3+CQ z?!$ULIg#XUKkjB%XDQ|r6DjhyML90rp~Ff4f6TpmU|dIaKYpF;29t)MkU(8p%CZL6 zcBv}c!EqBFN*p_}iQ~m~5|i-IT3T6a>#@!dw|KI5Tx3(A8YO2ih!mKPTjP&tV% zSG7Z2LLNlX2~j~p4+j(I)t~-BdY2CCI(LwYC#1}OzeZ!53@hF5H;($LThzsb3^2ys zvHf`g6zyK5{b8)qvA7`0OfFk{gIREP`X9kzwoI1pEmNSBRUd8?YQsB*f*js^kG^jh zm0#0Dm-xO$an!*CGzoyGWjFItc#ATcc2luh?YYJhQ6jF^qjhTED^-SvYC~jdC8KC^ zOvCrX{Tn#D!{@6)S9viuElf^MA(O&WI zIdfA1s-Nf5cX+!8i@W+u)HzeYz4uWq!(Tr%I9eL6l`Vm30Kac>3keKVio-^LU=pZb zjz`z9r9R0kI~~v91)@z63HH8bL6hnX7|_wTFFsqlO6AVgI)BU^_tiP zknM^KphMF|YW)YCAp|1& z&c{kG%@@3{I9l4&L$+I{6F-eB3c7%~>@*)+O_mv_^;0Q>cMnu3USrqp4r8N%$YF*% z6x$7(5XDPqdbOX4GVKn~e9M!hYioA1HFYFSRN-Eu3CcCtp7lGsOpy+~=65!MVG_GB z6e3yItfMT-0(LpvwGeE3R>wC+F%0uc-vD%FLWBVxj#l-GtINA40Dqx z%6h&Tn`Q|!ykFC@30*@gFZhwZd9umqkhG=Xrcr)OS%9|lV52&&YrrC|*ThE!)9j$X zQ7OHFanh@92E5^m(E^PL0BH)Igmybt ziI&ZYo<;$$rL&7MNzgL>u*iRhr$#DRs$M3e?NIwYUb~$?$%e%R(CJY`i7ePP*juy7 zg0;yIhpwo{HOddovef6xK8x7URA{B>ddz!)imuX3J+3&t%ma0|0n0TI_6@-=#Q>;rb+Xs$Vl65lz%(I&5vofjV!Tc_yQHm zXwwUj8qV$-r7jiycz3|kZ4KD4M6!ouaG%QC?Pa2-yCb{B0h)v90u@BUz`NWhm<(I?fidkPZi zz>Uyg@s{Ygb~Ki+WNtV3$7Rfd%DU$X$7VCh=dkUB?7MC=y#zMY*R*nHipD`FUjB-L znD?Cbb}X0;e(eJz)!KPmNABAo4| zS}=y!-!N|&x}R|ZFJE_gtV}fTv1_{XUX;<0ZFl6QC910R#s2>7yzgoZkT1TXMbH$- z_Xk}-JEHSBbR*hL09kCuiF>L54wGTZg=3Jx>g%jPk8OTflP7k@SZpqO=Kqz zsyE~?4zuw+2i1>qv&`LIGfiM-Dmm-{44PSy+NQmqaWUtp|0C@5oAG`$z_Xdxz!~7I z->`HQhXBXIZM^Y!>?+4BO#^)Q#*JPZ)dcw~TjFfuDi>FwdFd*ZX6)~~ z$A2RGUZ<|o2{NNM!W_QJIeFcoIPLwC8<(!OF;1u*LEcOVff|>tW-000FP%PWqblXB z#~L+@EXVw2n!fe-V^=$^&|Ox$^^F_-2d0n4y*?534z4})${q0KC{;x5DW zQBOX8AgY@29++L+Y@ZG#Jpa>9VD>bc)mYcFTpbO~x4d3UTea(bkDYM0mAXr1D)|IC zIEQ03aT2bMLP4vf3*oTZdY;4Vl)t ze_IWcWMYWUs~V@bg~JK@jMhqX@qUrYc{9pAB|0#^2H~Tz1#h3WM4Qx1`KSbNv_Ie2 zA93hq0;3Y%d$E z$S4l)+~~y1>#mWG<1p2$_0BCavdd?kK>O9Tg37fjSE&oDiAj0~^yq@3Y`2fHj;#;Y ztb^+;kq^H_h;f!h)+Ji^K2ag#Qe$MY-Z!giY+jP7##T@}i102$Ye_!3Wuzl9egyv< zg-?O)bFUZn?Zr^n=>lMwpsaql8{{ONjr$nEnwdwB*WC)B^{$tuqp9mebkTTZ??^6L zNV-{!4kiYPx849!VQF-PxVvy9Q?abuKAyze12@K^%-Mi8(b`Z2SW_>L#Z=DRx2|E% zDApwyyICO+kZW#g43-o)JESon{4^d3qDmI&M#iZ5M$5s>;`PV9Dwd&Yv6pwwxiTnE zV&w30F)65Y1*ARS+)hBPv`v2 z;QiTo;_y~rdHIh`K{LgU;U0FAT!t$Wefm5+60xttCB5QSlHC~bN}IN5hd5Y#-L1mv0P+mK zh|MuSl`}h^4KNMmKs!ig2D@D(}{X_fKBm9{K&W1O| zYJ#`FxZp>OIc{;xcAemFGrZ@b%Y85zG8HvM3FV^-p@e8OXam?M1T<_D=tGGD z8|>k-T}Vr|qrnug_Ps+GWnV$AL45@>3Uw9BM(N^3P7ow#4f8R`=UjPHC4TQ>AF#Gg zYdleLx0mQslQFRLp zeJz*<#UI}>ALgkl$VJmxyuJ0^jZl(idxOGN(*j;E-q{Eysb)$`uiI?d6tBPJJ&j@JZmu=KJ|#&(C!gGn8-WB341h2wbtoKMB# zL>+nZc4j*j5-d+Soq+pUI#^vpN%Fuu%xzDeSK8Za7(1w zT4aZ3w#F7sNp#((PP>PP_R)uo7OCej5HmGh#35tWOi0ohvBylA2{{#K${l7fc^kZI zQY-Z`LT@XCjM=O?7))XeTCS}P7Y$IT{015HR~QVjhm#10u2b!$ra=WFo_s_^<>BvE z@F7!|`UBbsOq}%Tzr(Cz2uSKB&LeJwt{c?hny(hJGupUXDqp>ct!hORc;#K?vTq`ySdE>-AN2 zm=o4ehR!|Jp{%%0*h1&1*u}>w$iHt|^stQgoRC~MeZo5StZ}E_#$}Ve6D!_5fM$N6 zmXMXOgLE-)m^Mw_!5Aoh@XJD(KTGj~)d*ePFfEqnFsUfQTQY+wfR(-i(5SP)Mv8g} z_KdXUtb#XR`Bh*pk{+a-CrD3OL98vu?kdw}V4g_cR z>w;%i)kyvG(wv2A6&lH7+i3z^=s z#%77r<(}-cwnKXYsIfx>2bo^iC038ILpqoQnt=*-REFJTV?np6MDWl zFLRn~Sn|Y49At*9%^EsD@F!^rj~cEP=OvGrD^*E)Wy3GcW1bgrN$#G^=vgo<6**(e`?Id{H`S0MdnGfJu zF|KY7Ibp-a{=wHGEpwF2Jq& zSqoq-WGA2=Y6YY^FMz%K=PlrqlnUoG3An3&(E?bbRp5>R@1p-`0WLcz02ct*@yiwf zTTJW!1n~6P767xa0>?Q32ES?nu*I~lPym0}3Sc^{g9@v`EU-TLpJ3MBSMAM54HxAw zeTC-8M$T;qUFJ9iQrG>LkaPi__oc53@La}`F}uS`Jl%P7W2mq{SB^FjM`PgRu3yLZ zm<^NC2^l_)6vs190{DI<5IH=JgTloz)p;D&2%KrW|Ex!ZQS&{hU;=MHxB!&3!7ScB^EdP7<*c9+Z{N58 zly$*4-u}h{Q2s8M!P`&%9VE(>`fL2v1XUBLLLddE43(RChoD!UG;OHqXvqMB%iDis z&atFm-76sQzr92-orT689bon!!SZvE;3koTYcCoBYrLOvlRF~u=#Oz$ow2sAZ1MUU!_*dHgS9+Se*BdXsty$5|b>jl? zmYpDci#h1Juqv)TMO7?b={YX#|$1HCO&H?0TB3Rt3*c>y1mnI+GoD(U>#K7?uVZnIW$<47Ej0(Fm zcpM;=KS>1RVyug@q<`CDN`*S)LK}hwd(SD!G-TKA;<{bCaRu!t9p1QG0sQ5UNhBj1 zrs8IgW~%az$>{=x&QlX9=?>k+bvtw$D~@+N32^4Ii3HSerD_;sE_UN$8$f20!RFJ& zlw$`1`N6j4eAaJp&|VDh+y&N4PHT?Yz!?&I*a|!jpcgzY5fJj%Z{k%J6^@sXx&Za; z(-R@Jf9m(!I#Awn+bJMtGzV)WFm~Ry0p^~C!SM#%DPZh=d~??7H{q(BX5p>^h}BPM z4%NUH>kgDo;GF%ZiFg_+%Fq_q)zGELCfZH_KVeBC0qtX11C1Gj_#h_-l;F=2(dIJ< z-9}Ua{%kSaKTjl)hHcr-Db>Vrz?J_Z5tf&) z7wgwJVjFH(VN7QV8CwUf0Q^}`YDPqSv=C{FseI^Y5hBLHb^`iO{<0Yfaj$bC!R72W zV1K764P6#%kbbHdvd?M;uy1>Eq6pfHd4RfOz|i0M?GNT-4EnpKHfP^<=n#oIVJ0i<24n)79CSKpY3IG?$~_TR_q)w_s3&{ zbEOr-xs-|NMq4nvqFqYT!5CoQsPIzO^&qimAVp(;%sEI*0uunbHw9pvH}e3^MLpAi zc_;;3+^BPKe3sTMU`}2qJ(VnOTxRCr>_t0mz*)IqJg(AN&<=oYUN9&Z4hn$TlL9WT zaNuON%NRigKsTiTlx>6YHsey}abVq<0<&?)z)MX6XeJpj8bLHT_ulEi!s8=R0e}48 zC7M%AQa*?C=lwCOH?e@&`edRywKX1LT&gVqrn+D_xrb#8NN-GmC>I~Z+lO}@%LKsg zP5~O1f4Lsy!u=FrewYF-F4k~xwst=YoE2v$T0+#^G;x=c#N%}kD&KbizTALJqw;+! zQfw9#Q20PHr5MwOOx|hZW7_@=bnq-=Zo!Hn&o=X=)bONHf$fpSv{w8joo>wn{by0aCKq|Qm; z9BBpKRytm78bA*%7|@{20_F5)CR*4$d)qsIJqPf$$wcOK2D`IYcgiDuxX=msOIuC` z`3g>B?*jhlaiF7zvX24$)?^|&P@JoeNh)}0pU(yjCV=($XGv$9bVv^coll7Fq33}5 zp?Guz=}N6(kY1L>GLu?(k@^&{zpXSRbgjQ-CoWQt;38a~0osYr7QG~+#sw2mR1>qe z0c&Ln%($36g2{n<2e3A$z>ITu5lmc@39vn_0rf)o3J`B<4Kl~^*cFE)!E>yQF2!G0AF3Y#DKI5m?Eu{76tHpOYD5EG z%vu0qZwh4R$Xvc2LFT}<0<2q7V8%re5lkDsP5|s%$)Jf-p#)lf^cqJ*ZeyAOjX z^fL;G6i<(hCI>RbWO6NtW0M)+V73C{A4q1R6~SzT3kt!eK=6mj zgcCb9h4q-Qb{5d5pPSg9I$NiJG_h?CP-mxrOyTS`!0iOykHH4a&bh+o1xm!2dXzOiXk! zrvk7~TcYb(kURbSsMD)Am1d*PMo9o#-vU61s|&!|lL9j?uJ#4@g6az3UX}v3nP=pP zdK^F>N&y%bz=ZgukP9$BOooeEo>qdJ!E?L?+|xHS@B3zW9BcvS>=by-2A_+x0Cst6 zKuwqhq=T(N$@AICke=u?i0!yQIxIvKWk_YBVHuKSixeQcfO=5TrBo=_p*D^l6>+=W_cR8a z+f(4hO=1qu#Ep|cIg$b`E^bsb4jQL{@=yx2IH#y+He#Fw%*hu@$0Vz+A)FU3wgGG9 zLNPg3>;TH<6lig=q6&;au>hPsDe&R~Ma6SbVg*n)rGRXxM1+Xrz?n+Mi@NIuA)+!I ziVp?**U2;%8XqcQ2@Zoz*2tFPugfFq$7#cH#gSnLP_{1=O~S%103A#L7#9|*yk1N= z2CQ3CU^>Sxo_qO9#pHl+0x0*UK#Pm86wMY_rvdZm&546QYG)b{#uZn?@KRQ71Nx>0 zROVV%jZ$KRD1gALlL^I`^jtRv#F6Gw>IBF>kW9W6rBtO)q30|}o&MapcVI*NFyVX- zpzD*tH702YW@7mQK=z~nYv>|1kgovgrWPQQD#rnHXA9s=$UO<1BMZedVABA3I2kN) zpf>CpFL)0wvNrSt{EczWbBd|ePD7D<4(MxJO(h(*cLM&>)|1hgy$jf*$ux9)IM?pQ z?BeBR=fuYH{!-7G!5Hv(;e3jo;46rgb-dKA=d3;@{X6rgb~FA9pC z0YKZ+B2+JKuK@C<7D3y+0RX!*1!!FO9@TJa>FC;EWCKVG0&8hSor7sbF7f4>8Oj>JAeM^c0u>N>cLQQ`%>@z&vgu5M&aaZ`#SDeHrUVT**l2bP2hXz| zcP{?MbX+SkgD4vm)fPapnoK#dbJLiR$rHwaeS0zu9rI~0O}a1%tRpEf(>P(x8m0mG zQ0stA9tO0Nw26&fj7n?Onz@xsffG-+D9ked! z0`i~kh^2ruLn)?DGuC-&Mh@U-D-lUEJm9ox1_2|@=mcDM3fQKBjDa<2Mg?Fur2uW3 zW)LW+8RG!EGX-c<-$S4_&6ot*krttPX~r}lA8HXarx~*VJNXi^wPZ7Bnr4s|kY=<2 zZez zko;jXY4wR|MkmLLvj98&(&i?V22|3F9PrLgf!j3AASHNdMkgRIO#$uZhJ-YOpgGOx z0@(E_K%2&M1ZvZaaiD!688vE{>C+6MB5B4nh&=kT#IBt4PVVsJ2C?w9Z5!x3FPUD< zP*_l!;Y2pZyV0Z>U7-HfWG-5sW)K?`|4xG9SCc6xc5WIIGHJ#Puut5X*rz(?(_or3 zqYYRqQ(&fX!kT7u0C02bfK4_Bv^}juH7P*_a5uFG)?khU>qE(y3$h3=&6om-ZzPkN zf0{w|9ZEB1K;)6*L@bZQhXAp@gK<~R;TtkQi5)CDpKG9gU*2^@;fc{3MA|a-SoHo-i z$VfFNfOl^S+@^5{N}(ylfauv#*MoA zv?+%XAe3_mjmN(r(f(ort@-C1h5<=Ba-g|BnYMb!RO6JhjsnoCtwNQwV+??AOaa_9 z?J#=q@{S2$-kk#5O%@4xhr#B=V+v?LOo7@o!ZWBg^OyzPiWer@Ow>NpXC6vMQjZQ$ zDL0_DpcM{}A{$Tzgg%f=FlIChg<&rf483*E>Ekrhn9^j6&5Z0s%)4+SERk#Lp7GS5p zIME~*W*1%(k^_yk$+YGlsT(^FWg(rQa_RA+7EVLDKxXv#k<&b63^Z;{rlsS|O)bsx zkTt7=2>?F6ORT{p3DqO5TJIndIY56io&@p`C7C`CS+m;9LuP>fTcsi~xQCoJ4>8Ed zLxQ4J%u@Vy$!0xn)A)vQO&-z#w9P3{o8}<~mGh7S(DtN2ZR$7;s?9?xfV-(xuwEWA z4$M1Sh0S@$B+!neKy8|b7)2ltnFiiNDR7(SAqLmwA+vxyd6x{tWcy9kcgRE9fY+If z8+G?-^AICIC=U@DBgwR4g0A`JA%+3TL&iY!_GH@XAybW04kIUl_SIIQN**!;z~80- zZkmS}J$QLY&}~iV3HaN{Wx2^BArCRwoQLFqwmt=F(@@W#+B~EHxR)oxM(s0w9-?F< z4;crQFEpUGpghE*$ObeGLZ|g44(pg9v7kI8!UE?ZIgl?Vv(fTA#PC7EaRnrANhY1x z!Kv)XE$7v zK)+n6NF3)Or_DnQGV+iv;9Z{rw`qLCxF!!72ilz}P@Co<29@)WNuV7`f!fr)8C08x zOatzrR>69C$Sg2V?i1rk?zU7ca~{$Lw3R7Po8}=#5y(S2fVVjXZqq!(;JQ4d0LVQl zpi?OVc}N9#6Un$ycb_&7F#?405TWt)WLhyn*ZlJk!+_)=GoX25xw#>w8mAmawgGKT zt578m=>*{ADS(^iAw~~g9?}KO(G=KjvPj573^wN>V?et-1!~h!&!E~oWD;;cO@@uy zXZk!u$w(eD3o0x2BwESBwqkh{*?>Ag=*nb*F+*ZOc}Ro>&O^pP{xivJv^)8Ah-^|mz}?hB zSd%i01MkjO;Tq6MfPFO?bYXVk=f&~J_L3HTdhj0>X{&O>q_ zv-bFr(>$aTG%ii1HIF=G)oS`Y1BhQ&WRoTQxMhimp)mvO*AIyI579s-qBPTIA_VTG zA`^iBxRQ~W)`L!)iZC>CktqQFFa>ba7{>yeWMmd_Cl88RlKE|#j4&)`BW-|NnF6+{ z`(#*~j&uNTbIWkOe53%-JuL(0growvn^M3wO-NW5$VkQkcxMXWrWpwXyOd-Sm`74z zr|UrEB+~#4h7t`f>iW~>BrHNGDG?&iNG28&fz3ZDVGblK=>*a4Wa8>C(~Ve;Dl34y zrDd>^mrMZh<0+7v<|V8OFEN<{=r>Y;H%&|!oHLUdz@1o0G$&PZ)8LO`ZEDg6yiLit zQ8P`Snm9U=n-oCi5O@!@64#^? zvj9AKIMIew!|8NkP}_jECK+{s*5PF-ogi{)GO_vR4Q%hBG^GnM<>A@by#Sy+3kURq_6pE$S~x04>*K(=GX-8; zwC;(GFntn8M^Yfhh3Oumi_fP4_D~AYCcT5ed=^N#TB1Eh-Ccvg++#Wvkqi1I$y8#( zjyXl-9%%{1yFl&wWU4xPn~XIZJOSrJ3&)e-dkRqBP5~Jge0x%RQTGhc9!Y`P#1(S5 z9gJAxSc<={yjAbC;vyuEOB-i*0H~Y{7`3{Fadwn|1lSeezql^CHU9+P7qM`1+!3^mC zs*aD_zi1=p;DnY^-Ns~t{dUlthQH1U9#68R;UEWs>k|pn6%ecJ&5hT;^)Y;oVyiW9 z$zZ=xeE}>K6Ip37VbHCB-b;=LU9~$L>#T-04r*_$qx$QG8(JJyYiN@o_nH4yvSet} zAoy@1;g%X&tOn5G!2t|5{B?uvIH?|VbD+1XC3MYoHEULrCsR?`wW)!1g39yis9o@- zxqGq()U083fy|ZvE9A(a#z5%yM1l)5s74Z_LnlG{Gl?wB#bY%f2zt|?^FT}J$qd+E zJTNp;qp(%yMB8F&N@`8BLh@iVx_k9JtSK#NYg%of`IP^C+GJ-Ppt?Pg`oioiwJu-; zUEt%&M1JOCbZM!B_!x-3x&d)-FSmwfLS|QP*U(VE3(ofE^d{KcRoBohTN40&{8eIS zX5+(yu(52PjYOm(NSa@5TH5l`5}aVkm#%D|JMkQdPQ(+(t_x*GiMxQ*ll_X-XT6YE zpv%Jo!TZyzAykGFjlR6(L41$E)Ba^1TiHD-IiOFcqXKD^YK%0!12u}T>Hk->?;9@H zN`+!ikC8_xTzIX>Gg#VZ5>@Jof(n({HPYMOZ(DbUTf2)D^V_a)D}_j=wJ-m!FP*}H zX1165{v1&Y!!OoXf)hOUD#f0l0B%nEd*Nzdxu@0_WN$m|p6m3r%r492VZdf~EoBqh znfF@OSni}H%*U>!&oGY{=MQ|@vKi%MyY2NH`1sll$Csa~<;GP4J-yI>zSxYoQgJYt z0Us}Z8Tbi{HELm;Ek|HR2Fu+;J*A)vuRrA`5o@Tw=kn69ghP_VVt*QjdXI;$V8pyUR81)LcHcQz_pa z>@LbS_kW5gR)Q9lzJP!YqCX>3V6RinUa&;e3!6Ov)6Baoqy!2rAV2a|a9 zX}1d3cASzHJR=~-v6}`jHF`F{;&|eD_TxFzhC=f2U!r3->$Kg`K<@oP2e^H|aNSUF z54M3ijWPh&@p>pD49na)PvgNR*oIN^m4To=@eQ%4&3dUj$l=B5cmN*Pi}Q&C?aJ;z z-u&zvV_9g1(Az&$q~lHS@>|{_rsDaUH+#OO+c=-MT$f++MLYB}6`pyhal&)`gChgd zd`G0&_#685q}N<&hr78@C!~x)Kx@IZaxaA@kafmzyL3tkcPcz>=V`W_lC7ErQTn~- z8b(XQFw{p)V=feTno|cNql-pCZ)tc%`(TchM}WQyEXZ&Z1&5Fo8`0 z;j3?rMM|)u5I5%?AdY76{)gWdivv@Tu8ZYp+sI%kn8N$te7jh~E{QKZ$FZwDX6}$q z^J0r#Ca_esaOAN#FWR3`0-s=qnclO=D&+sVNnOCOwQQsU`gz?xrG)yZ_R=Y9*XN#8P zTb_d;ooCv0Iu@A)av)PdgaxPyv+!8n*%d$(vxJLp1vITPbixSpZT74c43aywP-D)wAzLY+=f zIP+6sO5{=fNR7!;Iu?o4lmjnP_d-FdZl(>rY>{vzI6^#Tiu@BVF zqhvbh1efm@Ze!(@`7SHL+$oXpLP0zB)8PY?0DI1-RRw*;VYa;?*Li*rk%eL<49`-U zZ|XB0`;CZg`jX$h6s2rJ7TgI!TR$r%*AU##RvoqqcSe$M8#$6MfXMW{jfl-HB#y|n zo(|>iFYOP6MCtRQNJ<(C{UaQ&UZz@!?X%z9hv{8na&HJrH|CNgMc7;c-9J6tNK_r# z0=py$*2K`&AP2Ndz9LeU%`iB6ts97CJ2GZmQ>=^{M+s#oP}bBhAqJUHbb42VEezSH zxC_io9Tldy?9r*^SaJ@i0M5x_6#GXwBU-HPQtiw!>vunuL%RD4MJiDR!plA16P~F1 zP2kG?zcqjCUu_p>C}?aq@|wZ2(*;AOxu;m;aKMX3LSv&i%u~hUym}GQWqdF86$g9z zOLl8vHJAct@A-jnINDyW6?d8bq;yrPpBdX~JC(ek*UtP|Cm3lZk4NoP@6`4xS0hWq zmITS#8S_j8_8h1UzbN<77d=1f9?F|egAt>v^Qc*?4W7K5Bk_Ba1KM**$CJ>|&ws9( z(y7{tUq4q{@na|J&b&<4nPwBgTzi;VzLf2D7R=uB#EZC!y~qX(9A6M~W7oI>uhpJAHs@S69Q4k*pZaJvnF==b+{46=`z@_txe z`gaENaHwfjhiRJ*xA81}G~C8Q&3J9QjBjHXK>!cdJwR1v)_b5a8ND!mZA?%`?T4;) z9bI!n>sn{{H9N%Vw|980Hjbdi$!O!!)hyyY_3bR?RDC;(dbqxwJ8;@-r!FyW$Y_w9 zx!SF1HZdkOlS5a#wF<+72OUgg(4}&q*`89xmRMbqX@?hu+FD4LU{mL2~{2>;`C*p2pdr2;Qh_HSQ%sniw}JV%GD}`mIM_{;QhPu z^T6pD;$*Tnn8e%nt(6`v_R?gtiMKVAIKRAB#X%53jk7Mav5mBLN6p8)X7*TPUKzK% zl%3;^UQ^MU9lbg3wYt&o&z@!wEW^}JEUZ^ZH4UWJ^(ce^Y}?H~2poi6-EQeQq#5MMqo8fYdT zi?X zn6kvjei_L@bXA56AKsu&C`WFucGEKKG%)XarpURBI54dB<@a>Tk^r@Mu56yQsf|o< z5`=#IEFnk%F%0@ah?HRuv@`!Z5z&x;@@v4&Jjv76+$t103)-)KwkXt;HjcXosp&%y|J|tIm~9 zGIz3alHBF z^J5XJd&`yWm0~w?Q<-jQb&vX}Ex-8?{6ozK72YZ{Xh%!;Q?gXQSm#J9%ivJW0(JuEWdfK@^SbSn?JDIs-u|+p_@h?TCzi0H-Taqb z@xu$53q+5G{LjA<_MfuiC(Ac&bv^8$w~4v60rKaYMOEx7I$cB*B4rnbTud{kG4IHG z_C5>3A9-%9Yzg*Gk=u6i{@ZJ2-^LVPea99bLf!3P|0dW4o0XcGY2RRrzNcx&(~zZK zEpeXPICpBv<;Ay4KbhfgmnK2>jTZ}fzgx2aSR4!BhQI{g{->?d5$tyQwTu;ZCe_+d z<=ooErG5QnTFNB`qqb{}kA@D7!zp0CzK{-EEjEN(H!e|xcjMBkh7$!le}LZQ&l9@Q zG$T}%XMx+Cz=|&wd0+M2Lxa_k0op$W?2X%mMnk<>SK`No-QAS7*-lr}(B%bb@hMkI zCHlGo8>#?9Xj@WiA<=)ivt~?`EHOhL@o?n))DEL!~^7FSsG zjg|MM*@waIIQ+(5<$Nt z?HMgazVl6EkQRHKMt2yfUy+4FzpKnRlr_N_@Vj$B_^ukMV+NURpZm~Z*5U?@EGhb| zL8r)Dy1>*I2Ekmo$704QG~;}d4}RsyP_5Jh>}g;gzET9|XyZZ+S~C1|(}@?kw&7BB zq`wxU9XzOaIb0Iya~mE*5oN=n&{x{eIm0wKtW||m^lq;k0MuePWAAotqo&r)JGA@M zFNPI}a*d`NHl%vALioxfZlJj_@bRP(;fFUWzS!+CoxjY+G`CV1oCEfYZWJ1BD+-N$ zS`Z1ZZ<#eDyB7XmLcP*x!=)1ncj&tYB1(%Vx(LBv#UZ>M3%xG;jLyl4qcc3nxng#AK z<7G9=L7R~8T%~kZvmAc$nYv0{s#knA%~BciYPQBYFkZcqt?!oIR1vB!xqu=(oMQYD zRbPzDSY5d{=*mU>^1m9sVH0K!AwVg3r4{FW_`4{(jC4__it=EY4zm2*c-4P5=T$07!2}S` zeYLLzt&q)Cv5H#&-ZNhliwlmGP7KG@q2XHl_EK@UyD#Vj%I^g&v&W2cFTCUWh?kHs z<6Ukd9;Ck2Tn$D3HD9w1lybM#)@{fyf)hOIb{?ka_!cY52l00iuRu@#+bQ-NLEh}< zLRSG@t~>}RFMn+}r{#%wQ$TEgt*@*<2z&L&9A?xZmj|m9Ak%L9?WDS(17J^k9YC$l zoQ|^W+!o!o`s+{wmRCdxcE9_QDF4-RZ|!{AnHh8dc=T2wFg!HG1tG6ry8Ftu4%mQh z|4>-_**@+~M>*SD9LdtWcyFo?&B*_K8|;~2?UI-ZrxPa^}R zo-)Nzy*v8&g9|Vayg@oMiaNl2crp4whhfZ2IF z{w9+HnMGE$t0p|joeLIL=j z-Z>vSaj3>N3qbpqSk%y4)nFPwy7*nfg86JiCQ$uxaaVsSDBw3A*5Ae(Iem~|em;et zo%3$7(p}~(C#lnVik_kgT`I@{&P>%f9|n)uF*bnu@SpInDg9~j(jK_da=oYf*e>laWce8 zz2uMm#=K%8OQj9yXMI4Z%q=id;?3u}=7EuAsS~UeKPW8CKRQzOqE^8}tIp$vq9e;q z1zcS9A#fuGr_l2bkr1$0I%B|p>&Hau|K+Gf2dPaMr|_#=KPi;t zf}UkEvN@~rYWljSD_$+00MGqEUH_>>bS*VEL!%I&0GKVGPK4vp>LRo(dr&WmLDb@w zI^&tQkpReicnaj`kOD+sJGFqAtP9;4y4zN&^wY*w zI>-d?mcJ?zaB_3URviSHWt>G#Z_R(=TPPkZ8@3->9Nn5<_iaSzv`vsUHF}98X_5?Xs|;pYAF zHA*4cGfdH|B+tn?5XI8PbUxaOb~+?47z4$Jzbjg1FfTo%FEwaOl6k|(S;%h@T@TVx z8K!BcYoc$#fEOtuaHxrERE&yNNvuUAQx|jK2D5_9O*$sNvHWTiDpO&RcB~XE0FQTe={u zkDv|mzxe^t0}rO7S1D$OwcDlIHM?t*hKC(a*#> zE5#apTWG59(gnsP*fRz~Cc{G_m!C%X?2knA`D2uno6HKJwegqIQ+#O&?H3@0zTfL2 zdzT3{`i_#lM#xdRqffPn_cKUjA=z4>2^l2)LK;|2B2vH&3q{}~cC zYCCmRQ?d{FqRH7u#R|U!g=gqU4`a3}C_j9>Zp=}4&KkTeF~&bB?=9D+b9xjWo9WvTQr_4Zj>`_vHk$m#}qiW^XzvDu~}zZ4lzOzZGHXMy+Sx&XRrmcCigx zlQP=E9$~M@;qONCUCVF~{Lb>*_XpwIOb6HzPrc#09X5GS?`3;7vS*5%KzHSPzKK~k z#=o@CN6!HC?mt3!K8aHp%bLUIB4M+-Mu}A%h0^{?zllhv0QT+^w%~vd%AHA*AHL4* zpylMbiFS)(>7IUzV(8vLFFHGyeTHP(-dx6UY+RD-t?{vLs=RB8tUQ>Oj8=)Kl9oa=jmxSw;)1iIAJ$LXx5M-?| zW&B+fhVG`rzv@F;#3#wfTz07d@=Nj1VA%VZlwn=IR6d}R;Z2rmf15uA!j5gr|QQwwQM&#LdnG3 z*siPeUORlI`9(**-bb?R7YCCN`hv&B>a(6O`yY=aDvQgLNCX8S|1d2Dby@XH^Vycw zU=~nar^hm_UOfqbuVj>$m;R}A`@Ujz)1W;*lRDPVXKYu8I=@-p_m)fj^nD6WvQ=_i{ zdjfT20L0a|cDadNGVAc(R@j(V!-FKt^_&>ztGCd4+YAKw&XYxuVRPc8>D0+qzG4(-lF?(hy+DQl>k?J^A=LMtP`XXy z{G{*tBs1V7HZb_gUOo;C<(*(hCiz;W^S_)@J}+ep;*s<^ahvJ7ZRW^{;cp6#I8Q zT{b6LG3GR|jxG~b;H;P~H;n9bN@kQ44MnA)%RuZIZZ3SIv9TsR`#Ek*@a3eO0VflG zB^=43pU2Xi`fHBtm~8dj?dvyf+D^+`!o`Klr5|lPt?L{0zk)Cim1yhSYQ5G--D0o=AZk~g^oWt+r?>e2bp;wXwUj5KPZZRT^X+~tw3A|sl4wr{yFblvpJ-uZN;|Lo7p7b}dz^X`5gA*Ecqo56M{`V^B zp?%RvLO)6MJabJlW-pN7y%XNV!zSzn5Ve>&C)9B`1I5c0&7uwUqw6&rQFiFirGDjz za$U^Syy41`V*f@18mzX$U2&!eY4gWEuXMnvNaP$9Q5&uLC0J8^PH6UTwXX`gKIED7er{T$VrGqoylw2{vkE-j)mb?(}{6b zcaJ>>I$Q|cnxG9Zd*=+toAxSr?d$S-=;J;S#BL)BX7Hm+o++%GLXhq%z_t*%U{Bmv z(v^D@wpIBMJqk^_fVlWsvB+1NUSFJ7O6bCbPyK}JxaEnU4HRw&QPTB~`N$AUXB_xv zJlmH@=|Cd=cZ@_LhLkJ0#4M}2+qq5@{Br>0)a#NEX2e~skMGGOa z(6zD=qifp#Gh`0L|Jyy)p+VX=cgf%Y71jER{X6Ij(hcV0{bW=uPO<3WSbTg%nM0;u`Im=gi0x!^wgk2wLfhZOiD zkq|c(=qE+k^yF_O3oF!~Le!1{(E;%`h?q3_F1qb?4}|sSX6tD80FBQup{o`OfcbP2 zI5|~BW`m~e(y>1TKLyye7f5f%bL(wE!{BxM;KJG{S1&cjg`=4|fxCB;;D=%t4YgcE z5Jp?RGGtBE7jy_?1z_J&&`<}W!~8=S8-ki|vUvyuGXT7Pvv9j0VA@^9xTchDR&T}u z`_t#j2mq^nc^$q{f_7EQ$WwNW}PMdKeo-l>)BJ#;jN zyr73JZyS(U*2O&;Zmutpgk(|&BD-p%10ceGl@39;jJ^=2D_+3-vo4P9ogwTa@@5q_ z)iw=#n^3abEINUH&GST6zG|GX*^pFq_r^4|IHvSGKKmvZ1D)S)iAJ;+%g{gOTyl&@dioln$0?)_NQZIBOnzaP;_l`6$LsgBqwm3~XrVr^w9 zOwUt0P0h*(x0@kO?PNp3OT(UQqW7U)dyK($LgACs!(?@~B6BuVZS)Z>Gx@%+dob6UHPVi|Dd?(=m`8jV5#6{E zegs>i^QFYrZ2wdH($(CTbiP!~BOd&8#*{vC)<5R%qR2SwztL-TH*t)IS~>V66(90i z*?b`Lgm)knw}bmTykn=_+5J9<8Q)9Su-V?@wTpoOf6Bv`M<7AINkt{okxuYlpjP~r zypsE^la<_(j{m*x+7WV2uGwAnK}S<*vrhb^n`2%(ECpoAp}iH}IYXbf&~M3`xfatv zZcG{$;!P%|9UM6?lSxOvU&2PY5KIoW#-Iwz}3gHzs%;*pHeO&^T+IY$ZPh}}_?A?3*E znK|eTf5eTR2gA+cDrUWA9s0+jjqtK#S2<|@@zPa%yxWal`=C8s%nX)Ls}MZowc4dX z`ssvg3|pBQxwf_?@wmOJ&)xo*?WOB=5Uf&I=YMa|JjkUivozdmj-k)N&hC1D>`pmi^ z*;v6}n>VvJW@!qxbT;Om>CFGnqQ~&UYsUP{_)_WyZ*4c8TY0Gox9|y$-A=H1<2}Nz z4rzaXfgf1-l5ji5uP=)3De&qxu;h?5nL(}ac>7Wr6_R@!Q{yEU{}`2=?ynd*GZ=?l zH+&58akXBJ9~BAzZoIISj||#VNXPO1x{t@=@Y;u4@yGe#?nuNU@b%9DxUYEHun=QG@%tk5E^=>d=uQG}Y^2@Wo*mJ`YH**W z`&#^6lr@FbQ+}u!CO%J2F06X!mzr-jxcVb?+X=w_`R5@X!@qeB@K97~IE0%6-sAq+ z$36c?>Dgu_Nx>Fn=O72TGY}lgp1G4(U6{eo9q=4a}477i?oL zQ3c6O!dX#JP8Ag8oI(sT8M6*R>rrh$olx|6&L1AM+Kz%z{I6JoG4Ze9G_!2qZWH*B zgZ|{}tes?*aX?Nf{nvjC%P}8q{^wo`??zh^K`IRJhywpY>)Bru?S$Zp{ryAx&h6>J zR#wr!gtSZYNo2})?ZOT((CP$@Ta;F#o``A+22Z0(SO?5=zA5S=ql^0*$TZ7xgqy5* zSTDc~sA@dyM!JXyUcU4#;c2v}RRiiqEizFvQa|cSmr3h3MDJeF)=3prsi}6?i7*Y; zFZ!;C5IbXOv`+kMAmp>^1rUA*xPZuQ(`#*~?1+=90BKJ6zDVVD%ptF1R9Jr&S7H5` z+;t&!Y_tn$)RJN}E%|@0m|b+qxD1>&=-{z4(8WTBLV2*J*udQQfaqC+7;m{kgBWkE zLbpSDUmP~_4=FsgS%wzI3Sj7EKlneu7+?7S&e}`tJA!dAw&dT1L33I%*^$3BUaixQ z+0{Dzp{VNg1{dAMVIsiC{sc1zE=>wM!8WbKtA>{+&V{z{D>}}B^&dPWB2<-ODmST{ zpjN4Add_2TWPsLYB|5&*dqTfQX^OUzCw&#)Zx#<7;KLsk%H0>lvv z_Hp_L(XO*4@p^|>rq(!u+9$pCy?jLkP1sigIZKzKExN7r)0X); zval`MA3-Pdf8y_?ABZ01Sv&Jea&Em{;*K^&1wNJ|Xan%dKL~-Ucue2%4}SKeyt3l^ z{T{bJz^fXVR%6gy!_hw0Vvn06GQ^7cyo04#-2WI`&@!)^exlZtvvZ7dGG`D+ExH2& zX8#C5>6=mNxxEjyvgcT*pd7S;(xVq$%(5+_BlBWT5ODWigmq&Tqx{XSo9Pe~vvwU- zLK|4wbAqtMpMAMK40Wff7LAgw{#h%Pbgsu)Pyr{`oG2WTSy<7P>Rd%9`-uuZ2Kap$ zkjYkzV6XgnD+Mbk-CzuKUX`sAOKHwkELv^qF$r>1wsFw7>?DzmitCGRd(AIeDI4ur z@`(psAa>=WA_8{hl`!qo0l&nKOh4IDf7J|5)5nW7sh2drO}`eNo#0+=RD%`vX!WrQ zyEF+^Xia6&ZCVPVJvt>^*w8U-J)vl%Lxbcf+oqr+Tz7!mfBX~SnrBs7krfxrCvIu+ zMhUj%qXd`d&Ew>s2MAFNJ*^4+Hj2RgTs;J$0~Y9wCe z-W&iW(>2MC%4+gDCbr_?3~!4zme=?vk4Zwm0g1*rSRS-)BG<}mq=$m?9Hq%%ui zY8m-1BOIwm*J?|&YpqhcaL1O5jNykqcj759ryW(V^%zm@sz45Mwm75RcEl(AeILYZGDy8tzA-cG)q_M~&tH^4AKspDgY# zetD`*6ku^n61zdL_(aqWfZX*L!dVE6EyF?CgLjjASfKfA*hxUXGAx{QMrT-E2FR_Niz) za1Q(J#etIiembVzF8v?%p0HDsS7z!SfX0LV17kq5e#6pLY*fd*wqnm{(VWFeKOL(% z@kh&5T7+a}-BHW;!H`%hNHivEE=e=Reo0L3sc8WrW3*z=2_g8YTK70USEIa{eO`-cIK1CA^b8G@2a9xE3bjuj(Dv}Gr8Buuj}CZ2 zvHoKUc74t>#J=lNWuE#?rAiQK0AV}3=Vy2m*4QE)5mB<;#qK`4e29_N35rkqJE5$3 zGG(9Q`7)X&Q|hUWy<)+XcY2Mm-g~@8&2*={YJkZfS-IEdubDm7CRKdP&a`WoqgH$A z+duvcwFBaOQp8GFDgP71Fi|~~$?omaa1q7vtMUWgM7UO8Ur%0E@UN})WQM#U+IPPNlxbr=DAWP&%r zOlWdnV_K5e+l^PVi=~qg<1aUgILuO)+PqxvpcKu%e;Yh0m%Kn~dC;Gk&H1Kjo!bUL zk*FCG(?LEtp4@(bPEFdsA@p4pSUXEt-zw0l=@n^!O0CB$xp5p39CCg;hZX&}Z*FUL;lroxnc%`Nxe0eVq;PZ?}@j z#iiZB3;-XvyoKDa3T6R!%M~qz?Fc3S_YW^w!Nr@$QuHI z`$$V+x6^s%!4x3(zqpkgcLZa=d#IJTJAzrjy}hf2?CzlRDuLHiY$@(YPyygmceN0B zW6%M(AGH*=7|a6i?cJ?pm%i$l1Yl23Yk{jl1&B{AwGjE@paXC}YANhUFbll5_qLMV z5z;UKdv>=Fn4|5W0?30cf~MUG8g}yr(lG!(v7Cx`T4#}?b=^n#5;rGT@pu#XdOG+t z$brtTJwmUWaw#tY=L&;6{~{Xbdjimv4nsi&IJ@==o~c-9;$Wm*Z;tk*q-U|FPf<_~ z>$jB*9ALf?4>#w8Vfo7Q`FsaTb1tct@G;a3z<;4c=;K}D`t``3qU?Df7A=^?n^z4% z>WnE$adCtM^|o`NV$+q^0~^Am?B^@q&SZLlK0P9kMsw-86&|#3v&hj zF5+*xUi!$Xq1BB>E=T)mhv7Hq0??T+lWsBxfSKZ~w_9!*uUWd!q%zC)TXXlW1WXd^ z6OOkg=Z8dfX=ja2Ft+PPVGw>>49Q!(lP53`XZTU2*ZV#k7~ye?<+>yj^0?h%zN)N% zzpn_NQJUJ(DQu}?t`nO9()V8u$rBNyQ%>?YCF87?%-Z@4KtF$zfY+$iJH!yCA2%}| zMVCfh93gD2)XGDH)%NvrHu*I0&wQnHpItPf@f-30SThQbf89;wd=)RG$j%|p0}K)G z!k5`)N?cq_D<#HHghb$ec9qPi2$An*^$a7N$JPlc*1k%l8MfbK5*d$2_i=#7;WF~c z#N@ZXZ@(+8ryN@T#kUDU7xdoo5A}4tC3i>HGyNuX%{t)*yDJdHCPCy`Hw!WPLWBhD zb03J9eJ9~PzKeDHg6{E6{@x{SE22mWqTdwa+0ZSpd}g8xek5A+Ph$%&4Y*}c5SRh* z*sDdl{V|?ozwB-EjC8*5!%#^Reqe3gUN>3+ z`00nDM4nNnAc?8!wXTr76(9$!limo-jI{@vDrxtP8ibsIr-XR5!?W1P<-85Z@-~4s zko&Qa)m}+ULB@#Ni&9UMV+^&gSKStGeX`T9#*F@ZGu)<9TQ-FNsZBghEfet%w z7s`kgG?2sp2x3M1@~|hc?sdiA^wNR2p#CRs5-y4zzDFw}anpTUMFa!#g=4)2X=jq# zE#8QB8))9pI@sX#z4QW75BA?fsk_?}G4--~_R& zm1u=V)f;4B&+7=z#uUdu={au|F+&uuG-1o)ymAn8`lcsk*j?xunLA8?#Py|4P-%Oc zPfZW-n~Qu+X$g&2-5yH|k}2)Rl3lU-h4kH;{Q@a>)iuF5Kp*vXfY)sYH)_0pJ{=b& z)dmt%=}18?B^@JISar)+^1n;l?V+P~zoZcRxe(P!Q-fBdH}3M$dY2voUT^M+2i(c; zkUo*wz8*F?tO&tgFidAww*l`d$++}g22VjQkZ8iM*$L7Cyv@nDs)m&OUQGKsf&%ca zPR8Z$NOE3-tMXK+`5glGa&Pq?@Tna9#a!ixs_&rd9Vc0otoz>`bIkZ zC&+<^i;{UEy+Z#|`c(agFA#_RQ=bZ9G{To;6+rx@4VmB`kK7Col5P`>RR(WfYE%@i z>lvDcXvPc1!NGmWoTTX*37WmGnS)l$CF|2*;DJO&nv5<8G>i97e^;Wdsc8$>O^|mC zj|_Ix4yGUn%vH(Qb9QT&3=Yev>;!CgGQ6^$T*M3Yv_-eK(*gCC)}iwu>cIp6znBbs z+&mg{z%FeX)E`dffq2C7^X>d4@`+3Ue9ilOS(FH5(SOItvU`ZGW~kcq_o`g=z+iX#w#&AR&<28Y zay*CVX7qs^)nl%JKHE+9_`>iH?36QXcG~Bzp@QX5_uilrj6F{ol+@xU$ijjXjvou# zn1?RVzViPa4|M$17^vT#$b}RF7w4~ktE{yjN8Ma9*l&7h68wB7k+0*~LttVW#2;wD zgy$dCUc&}BYK|LY8~)p3jlRd}Zs+-+&X7l}owJqG4J)%CTDr?0L>rEsYL^`5GE!U1 zSOp9{?)|ZhVRS2_F{8VGXm|U?baz$`2)|M!`uL5eL!E^yW_JUxhI^}u^3AZ9ZtAV7 zGdNi^IKj|ZzVf1>-Mh_)0(6z!){$C;(1S_K^(XOnQMR8b%6r+!t?L%2TpKC|Q+VNX zAB5N${;Fn2{(bL7m+TtpC8!UbhJQwvB5<*vi>{(f_6`jX6l)h!#7zTp8e|^+l#r`Y zdeuHyrTq-F2=Y?zrcQom_Mf zlUbX$)_MD`!W}BT`Dv@2)9w{54G!&7CB5BKl4*xRNGjD4QzA+I{TGHIUZkXUf7g$J zfC36m0sQOwEf68A>ZW7(dP)_0DWfYY(U&SDq-WX~D}Ia{7P~-sajiGVLEI0D*kPSp zL$YeusG4uiSdw>#>&74lQvf{YbI@lP7`JaU#ONOkI`Q@==7qA6_M`O&Q+W5e_sxeB z#^?J7R;jOmag-q$uu&Ld2uQ*GmXlB7Z^ZQ6r0G_3Ef~DV z6yDqMMUe=d>g`8j9k)fig&mn)c=Q8lX7Q8PeQA!Ac&o+)-n#x@@OE$l z%_e1&8kl0Gnb)_KOnGh`KX~Q83K_Gl@a}iw$d6&`38h|IkHR}B$MN#-z6=n%O5=9K z@?J#&tp_QXO=Q7W?90FTs(?`CLXRi%_AHrZ*&6EYS_<*a`!SteNg(dknlWGaHTI~6 z&M#NHi^Fuu=+`Vq@BX@QHe4Dg(#+3uw~T_2jM*pyJr;{L?eesxFOe{&#V-*>*)Saz zOoH~8zb!ndcI*@^2LSTUS#zipU6f=e;rb^Wb#%H<{(X&JSl?{7CVRWLN<+VpQ9OL_-UC@j)8H3uqn(pGa#>6JPWQa`hH_QCJTC= zY(6glqPGc@n0o!NH#)OtzEyznwFlyq<|c18ZW;Sdm*L*xbq%8vuO2K>vF89%n%_kx zo}K|;@BUG&+63J*_Hq?74%@tJq?O)EWAoKu64ZYGplF4YjicUy3-%Zbuc4PNB9j38 z!Du^9Z1B!t%JdEwcgyenV@k=srFqOtg3xU5mZF47IyYk;0NziU(7cpy2%*GDf6siH z(4Tx1B^8q4Sboq>iG_F;^=ffGO$@^KXgYED{!FJ0&zBhv>rxOFhgz4eT5AkxE|#W_ zM?e2hG1Kr!unTv=Pi<%4jlYYW=pjx*Lm_Dzj2jBdphQcuSmLKnq?J&xAS(h>;A+_~ z#3apJAZG|VJ*DCQ5t*~BBlr>=k)|-WB*9CFPOpGM`lHlk#J%j-L5?7bXc!A;o{s;x)Z#( zi^>Pn;NU01347CeEE&4>5|RGx_eisV_~X2xn7ttQl~u~L(i6p#bPz651+CC24T5^H;>jink}#U9?rA$)!Jcgi0t;XMBqJRUFs&c<9(W(f(fm#4IO!|i7jpE( z4^=pJnel$wKV&bN^1~F%3g&-`Q*{3KKByyHid6K8PC(R7p-Nr5z0s0lmHH>EI!ri0 z@k-1i&Ymb@iFw3_Z&ArN<`ExBOz}+U5yvM)C>qb0_NA-%ZaJ!z*1dw@!;fl^`I?*9 zC>ZcV8-23QJn`ZiqaI7>@5~byOY>Pj_4X{GYK-|K=!gWkoPtr?H}l;0?YWwfK1~>=MKJO;C;rxon2oDSWz7+K^fF7~hP*DHMMzniK^sW?IEfVMgV77D z{PIL&66UH{!`Cb*eC2ToLPaUj*Wkkt=db<;f}44R#!dVwS+Nq@Peo@y^voxLct+28 z9P=CyH`+4EjiF{qWTK69mo%|+DAWvJHQ{+AJ}=y!7=MS~Y+jzcHsAhxD_*8%4~!(I zr4mPazDCZAdU$buFWzyJs|zkd9fCuN&*uxa%XA8ECv@=LCyOr1xE+pwFV!7WnKD`B z0Cyd=U#15OMk{$4U5jx6LYA)cCVTyE9gohJgn0CZ0D@ugwkDTgEHSff1hHaPcT8Ec zd$>ef`p&J@hLM1G0`!y>q5#@AwOXb-KNq&+OrH4JaJffX{bZPN(Eq+~2M(V2uAOj9 zD{0ty^=yT7*Y*dP{KzohBOVt{C602Hy)smR&}|TQ^GXrg6OPI2jO}qt58Rv*;;YVy zDNTI-X-^3#fZV}OA?uE+CgY#E%H7kT59|PZ(0f#IH#^MMH`_sY%zMC*#h8C{v>9nP z`VF>VLHBU0*m^cL{gkf64j+z9I}>clg6_r+KS8IO3$pdvRbx)nzSM>jbU(H}A{?6> z8{w~ZQ@m;CS&7=|hHRbsYvsY-A;Ub~kNxFQn^9&+9rSzCO1EPxH?|ew16_~pKLC?- zN49c8KW7%tGC1Sj13!E^bd6(0;s*2k39sGyX=%Z zwtdKx8D~d{&Z{&#aOv6d{C8y#U{6AaH^U|kcbK0U@4*DTWN^eSmre~n({a@if>c3@0~F}PDX zjJ?NuP&Dcw2B)vde;t!)#wtNj1nMDt~gWzde z;;Hel9~6bUtf$ml9OsDSG8uN3OLO#MJ~O#y~#(>_3yN+Txn!00e}D$kl>MUUzDA-Omc=Dft6jDU(w zhuc?#5l(536e`HR&ooZvXrg^nj>2(h&;^+;8y4Ag`ZuiXbdFZ1Woqtneo?(BHTS6# z&5oK~V>-=fQCC`;4tT1G(O05D7ub5qjly0}vD$Y&{m;mEU(!WkhrMg3R31BbkmJ?4 z!#!djN%N+A)THcL^-jp@#{kHC|D!p~iPj&RtIX}@+U6YVBSalMTcAPwa zPwXR}NT#BXFnkYtH=r>ZwJ%-8)s^A_-73r2#5PP#d|OWx->)*nnF*sqv6kui^S< zA^!^eC_Gcxh>nMw1avZedY27ixTSF#_GEXi>~7$%2gYHve-PshGcbqLi5($|62Z&u zQ0Tfzh6L})^lHE%N61;>`KA6^(YhA#NcAI-&YT)FVLln^%<7;Gu4VSu0RQ4G*RuxPEy5L~+L)|nn>eQ|e zY>(U#`-p?t$=F96=-m_hhy%T;*hgzk=N*oH#8s>5*hgF{IU4(jdu%55kuB9d82^lC zvDx@%9QM*pLTaK;SF2bfWBc4Q`sU7l`cYy-zHy&Fx^aKic(l9cv--%AuG?cx%FYR2;OQ{&-Dn9wy^9U2wp;8fjm;hI{*-*hg&kQ?ZX&@WZi> z*zBj{9-YaB!lSW|*yv|sAF<6p82gA#em3?IclEK@N8HzA2V=BxCTruy*hjW>9esq^ z@X$f$m|3^RWuM8an23Ay3|7S*v5#04ld+Fj75BtGVpUAVK4MiIj(xS=o_p^7?$yc7!mE4z z{i5XO6B+R3bfY3Q9Z56^s>uxa@{3plx7#M!ADOx#?2ky4g(n=d{UuqNP6C%di$%WI zz&XldsLtFFoRi@|e*A{uW-j>TpdDmMw z?=~C~kcq;rVmAl-N{n;hzF=S>>QqN9W<3X*Xb2~D^Zs46pdbIPT1P1JlKC92d3NK{ zNoZe@KG=-@!z*d`oG6RmVWf;(7dd`THvl?uqjAI}&+aIi#vQ82sSj!Cj!HCIy7OK_ zdKE8;=iXU0xdvAzOi9jNj$UbUO{uG(H6`yoWNE5{D{{K+urW63^K04xlUfQN_NT7% z?fod&uoT@jLg6?yGy9hkp7-c8|?Dx)V1A1i@xE1)DL@Z@N>3 z`~K}}k__84jk>opNNE%l+YaIsfLl%r8fzjt2F1Hj z)cwSbL7jYZEfmIYEL`6UM0DG&1aGpc+D|w|&?VFAFLt|0Uut75lQ^ z(+Xcr!G2Fmdj-%n;-pVn)GHTm5;SfnTBo=ecB2!exZ==I@UkgTzpfx$)R=^|dbu*< zV7D3=b2ecB6l-?VUAEyt<0F}kvN*Ag4!3pL-JHx$-mGIQx0|Q`c}AN?&UPKmc{-WP zCR>7mx>oHh?r~GZC2j{p>fZfOP1{qUBCdO%mw!~O@)=G>CDh%uYPWk1*p2Cx-BhZi z*}5H=KC?oU&IeI@gQ0m-!yGLS^-(i*hWe~O~`P{F3FtZRp&2_X7Hm#DzinS5~L1VMe?!=2+0-0Zw~IP!+! zLXYf2xU#e!)xgxWP7gmMgpD!g_S$E_&wmMDZ0t0?w>{XKKY`D^YQ%{*3mL8S!hHh& zF3Sz9=2#h*kbr6N2&l42oXWf7w~swL?sy#qfh2kH=O(?rr@_MERif`Rz{<;0tOz8* zN?*M?xTVr)dS1rC!?9Yak zj?be$ctgmes(bwz#ybs+&T-0YO>0#hWB~g!jI>hK20j84J6uCc)_7~|a1AY7wbiF> z2H>b*_NBF@cy$h7pJdVUQX879HRqt)mT1YR66f1+X6`w`MeO zF=@gyu%jKhSp~}(u3%=$bmnn_+fAz@j~`8?!G0&`SVn{2RhSMfG4;|L_oVx_!n;B= zU+o~7Pr~@G8+3VC9BWoLj#L|^DB9-r{@T8n{xhl!tN|wm(J;r&W1a_=(tc+kyoueV z;jXopY%d=0L30wkUH*LV7}vvTxqDrR^a1%RZxTiL$o%y~$|`--z;7VBAVj5Yxg3JB z0|)uH7{vS9|FJNxlKtNp#DCTCjW~=0)xTSqL;p$vO_&a5TvBCSf5-J3s;4V}ryi=J2Y~xF zjijgYxx(oDqliwWa|Qb^NvJOs%>&SE)KJAd4#%p7%H;~D^-z=QG=iVX<=W&DSAkQl zJPrpcDwHc6M#8`!H}fM`>vRE}Y>;VT!ZcKvI8YtAL9^zpuoU~58l8T-d@XyREr6S7 z3gnbsw1{fU*ZSQG)4>EbTM@SfT3Zo!h69-ygT)Cf@Z$z9w!lwpF?;}LgQyA~&IVCp zmac7?z{An8WgW*%flk@(aLNQi!NKwQo`3O8Z(L>i2*Gi>%`jttqf$$^31rcDDS zx{Zu0hc;&#C{o%$`m^bhQxt}2tjg{b1-PxUYauaq?$z~NzJ`rO8z1o~1SGc`xCuT~ zn%C|CFJHqOsK-o;9Cn%~fAP~hk0eoYevkt)!9rpcioy#I{Yt}GFY1Sb{^1dER4tmA z6{lV>XjZ?m1dDMofBFT1AL)xpsQAYdVBr2Y3nRvhNL?a#ShAb?mOuAR^v!x->_AX+ z2ylSyPOwn;if3)fYaYB9;S=iC0gJxK9NOk|8r|kaIPWbGB~HO(Y-<$)%MC`-gC9q4 z6MgUn976@UC5!eoNDOmQ*_{;@yOSqiT9Iv<1mB*@4qV0q8h1`Eg_fL$6k5R#6SOXA z&>$}Dba8PC6nfq+syX1eUM645Ig!leRSO*$F9pnk@qOueK zknel9|4QX_wJ!a7H!(&M=5}8cY}~Yd=lW<4JU-$5!fWz${k-a1$oe&u0qM$mkN-Iz z6gvCGtR_hK&HT9eXgjDlN}{PRvuNSiu|(8P{X!@qEMJDu3%Z*>2KtFkU8^?w;;DOh zk*d{w=y%J-B5qNpj*l%@@eGJCp@2bl{WW#n>*Eb*$rQKcODCbs1ln>MPu9RbQoFG#&B>;6FJ>)?@qDurQNVaLGR4|JR z;l6)0EJnh#2%%!##1)AAt9*WHf;^BBw%>`dtt-t zL>_LVn*{E^P#O}Nb&^E}*QS|o$_|QmgWOCv4Rl{QBWQ7J32^29M%2-o)fOie%*Vj) z3P`>HtsUr|(;97ffGS*bhS&7WjfPa!!8bfDzd(x7cZbM(L3Dd-;`HJZSA^+;CuFCs z_0OLvM*Tqcs@6!e9ukvxq&n5m<`ue@XZ4IoOr3A=n*imHw&q}okBIr|i8>mS;tTzz zLE^iuNd@!Ck|pmh_SN?gCEqsU&Qk@8^MGV{4%DCg$(FvE@p>3WY)4S|LPu>tygLlw zPEg#HqI}?fe0}5wFvZ_nmnofu2MJakzWqS&dibZ33d&%!#po3_!_Wn? z_q0aJw)euv$1cH+EYrs|#PkH6T-NFX)j-vRp;9T znphkqKa@e?vcGF7t1)M4EPHAh(vqDQ@F76A)?#yTI2s4`cm0!4p%}ykXLC{I;P6;w zuT(e9NkI=!7pMt8-S$TFf#;+DtQJla7I8v>C(mrVIzWe3So8IgFWh%2C^{=nm)Z4%CqeMYS4C-+(jK~N zk7e1WvgG(Dj?k3>#=7kbJ1WCGQ|%0ZO1)Uw!`H$EO@n2l&t%P5_zy*6Y*BAAUcJT)d6uGGna)?TbV{paCwyyDUN%x4h>e-Q6+;?XGlTVjzcE$^o(MH*XGy7#z$W3%<`l>uwEVtCvI7CjGyI+R~+a%acH)*IOQf%6Lm=MTtpfT`_3~ zZS@UDH8A=zVYs#At&sWaxhH_&5kHYJm*mRXHEu-b&JGmDe3H@URp}|McA#u3>Jr@~ zP1aGrhIK+XOyb$#&N+SXK@n66bomH-$ zUnT>WN4nj{`1%n#w}i&=`-PahPg&~&RNF2NmYavXX5}c4KS4DAcbb8et5G;oLgMV7 zWs*|mnEmoK$@mz@dZ{yTJJ9{z&w-Xc+#{n8hY|1mfag~epihAs?Yc!XAoA4c`S@aQ zq)gvD;2e$(T@1(8fQ?=ZNARK*=Y!;`UHVIih9Wm`}#P%jlvt@}Tg!7s zPy0hf&zWu6(fdE=XFwYUDs%v32klhQOPBq?(w7r#%;QKwe#h1iL&&0WmnrjLlplZm z!GeVDcK4qRVph>S z^H3nPis@Q~;kpvzwG+MmNqTFUtoNakO?Vbel;^Rv*a4g*i7`A2f`9rjkz4A`O87Jf zwIQtIdJ@zQKD;H>(;Dbqt28FNS5xUR&T&wB@*|QIU)V~)99oQeGqUtx^B6@x4RnIk z=UbD+ywGM=P64Hg;3b#=n#v=S5-g8NV2+%z1YIFgKmvPCYp{N()~uf27#nEPGvFKP zT7+h?(%e}dEzvO__knp-1HA`5O6VS>k)dwLDUL~LFfw|SYIGK843=xdrFu7ge7teP z#;6_Wx*rX+xqXrjnBYc0R21O#|mY{-$WTykE`(nq@5kv8pwXNyNBtSB_9

        w+-#XH%w~j2t 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
      1. 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

        xDZQW^LnMPnHLu*^9ogb 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 z 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%0DR1{9)A0mej{Y}V{RYb4q|RCMhVs1R3%#j6 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 %lPr{SBAVFOQjOk-;7fqhDV6 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

        ((ocwgKQ@>0euwRM^`x93wB3Z7%>smi0D<`= zLqO8N%SJis77+M1bUiI?7g~hYCY^`)cX-En@k_TFAGa6-V_VC3GIrM(`QYB*=?_dr z-!eQ3G;Fsu6kHx`(7Y4puig4vzn%=qd_Ou)KJw|LnJO>N@ZhI4?P4|dWZ>L7VAwzz zVV7;O)o647Xkee#));Tw=IZ(4G&h(&dXs1oF@n?XP^KdMe8Y~j?m|L0R|P8GLfGSI z@qLF&kl3#bWD#Jn%os!AM?^P*XaoLcZ(VJntFN04w$8CALK$aUBGxZ(30{!ve;Yg! zbu#YntfJGq6zqQ+FljJ<-FCZ+B|V+`ukQNuICxoS!~Pc8ZGIb7$tNQ)`6PMChD?Kl zN)CuYjJ!bv;bpLv=|5z@f6RXWl>PoW`~9cv_y1<67DF#kNm1Ldvsjd-K!Tjt%c)<{nKCrsJIn)dZM2K0vL1;ZB-pz1?(*{N zWa!aWWD+ELBq5GFvsNngak$}!e?;wKbi*qdPB*/,/<\/triggers>/d" {} \; - find $JENKINS_TMP/Deploy/jobs/${arr[$key]}/jobs/Summary/jobs/DeployedVersions -type f -name config.xml -exec sed -i "s#Deploy/${arr[0]}/#Deploy/${arr[$key]}/#g" {} \; - echo -e "\e[0;33m${bold}Jobs created for ${arr[$key]}${normal}" - done - diffs=$(colordiff -r --suppress-common-lines --no-dereference -x 'nextBuildNumber' -x 'builds' -x 'last*' /var/lib/jenkins/jobs $JENKINS_TMP | wc -l) - if [[ $diffs -eq 0 ]]; then - echo -e "\e[0;33m${bold}No changes detected. Exiting...${normal}" - exit - fi - colordiff -r --suppress-common-lines --no-dereference -x 'nextBuildNumber' -x 'builds' -x 'last*' /var/lib/jenkins/jobs $JENKINS_TMP - echo -e "\e[0;33m${bold}Please review the changes shown. Proceed with overwriting the changes?${normal}" -} - -syncJobs(){ -read -p 'YES/NO: ' changes - if [[ $changes == "YES" ]]; then - rsync -r $JENKINS_TMP/* /var/lib/jenkins/jobs - chown -R jenkins:jenkins /var/lib/jenkins/jobs - else - echo -e "\e[0;31m${bold}Aborted!${normal}" - fi -} - - -firstRun(){ -choice="n" -envOrder=envOrder.txt -cat $envOrder -echo -e "\e[0;36m${bold}Is this the correct order? Jobs will be created and configured based on this order.${normal}" -read -p 'y/n: ' choice -if [[ $choice == "y" ]]; then - setupJobs - syncJobs - cp $envOrder /var/lib/jenkins - chown -R jenkins:jenkins /var/lib/jenkins/$envOrder -else - echo -e "\e[0;31m${bold}Please update the envOrder.txt and re-run..${normal}" -fi -} - -updateRun(){ -choice="n" -envOrder=/var/lib/jenkins/envOrder.txt -cat $envOrder -echo -e "\e[0;36m${bold}Is this the current order? Choose n if you want to add a new environment.${normal}" -read -p 'y/n: ' choice -if [[ $choice == "n" ]]; then - rm -rf $envOrder - echo -e "\e[0;31m${bold}Please update the envOrder.txt and re-run from sunbird-devops/deploy/jenkins directory." -elif [[ $choice == "y" ]]; then - setupJobs - syncJobs -else - echo -e "\e[0;31m${bold}Aborted!${normal}" -fi -} - -echo -e "\e[0;33m${bold}**** Welcome to Jenkins config setup! ****${normal}" -if [[ ! -f /var/lib/jenkins/envOrder.txt ]]; then - if [[ ! -f ./envOrder.txt ]]; then - echo -e "\e[0;31m${bold}Please create a file named envOrder.txt with your environment order. Refer envOrder.txt.sample for reference" - else - echo -e "\e[0;33m${bold}Starting setup...${normal}" - firstRun - fi -else - echo -e "\e[0;33m${bold}Checking for updates...${normal}" - updateRun -fi diff --git a/deploy/jenkins/jenkins-plugins-setup.sh b/deploy/jenkins/jenkins-plugins-setup.sh deleted file mode 100755 index 85368199d9..0000000000 --- a/deploy/jenkins/jenkins-plugins-setup.sh +++ /dev/null @@ -1,21 +0,0 @@ -#!/bin/bash -bold=$(tput bold) -normal=$(tput sgr0) - -echo -e "\e[0;32m${bold}Jenkins configuration setup...${normal}" -read -p 'Jenkins URL without http://: ' server -read -p 'Jenkins admin username: ' username -read -sp 'Jenkins admin Password: ' password - -if [[ ! -d /var/lib/jenkins/.m2 ]]; then -echo -e "\n\e[0;32m${bold}Downloading and copying m2 directory to Jenkins ${normal}" -wget https://sunbirdpublic.blob.core.windows.net/installation/m2_updated.zip -unzip m2_updated.zip -mv .m2 /var/lib/jenkins -chown -R jenkins:jenkins /var/lib/jenkins/.m2 -fi - -echo -e "\n\e[0;32m${bold}Installating plugins... ${normal}" -./butler plugins i -s $server -u $username -p $password - -echo -e "\n\e[0;32m${bold}Go to manage jenkins -> Plugin manager -> Update center -> Check status of installation${normal}" diff --git a/deploy/jenkins/jenkins-server-setup.sh b/deploy/jenkins/jenkins-server-setup.sh deleted file mode 100755 index cea6ddf039..0000000000 --- a/deploy/jenkins/jenkins-server-setup.sh +++ /dev/null @@ -1,70 +0,0 @@ -#!/bin/bash -bold=$(tput bold) -normal=$(tput sgr0) - -echo -e "\n\e[0;32m${bold}Updating the apt repo${normal}\n" -apt-get update - -echo -e "\n\e[0;32m${bold}Installating JDK8${normal}\n" -apt-get install -y openjdk-8-jdk - -echo -e "\n\e[0;32m${bold}Installating Jenkins${normal}" -wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | apt-key add - -sudo apt-add-repository "deb https://pkg.jenkins.io/debian-stable binary/" -sudo apt-get update -sudo apt-get install -y jenkins=2.150.3 - -echo -e "\n\e[0;32m${bold}Installating PIP${normal}" -apt-get install -y python-pip - -echo -e "\n\e[0;32m${bold}Installating Maven${normal}" -apt-get install -y maven - -echo -e "\n\e[0;32m${bold}Installating Git ${normal}" -apt-get install -y git - -echo -e "\n\e[0;32m${bold}Installating zip unzip${normal}" -apt-get install -y unzip zip - -echo -e "\n\e[0;32m${bold}Installating JQ${normal}" -apt-get install -y jq - -echo -e "\n\e[0;32m${bold}Installating Simplejson${normal}" -apt-get install -y python-simplejson - -echo -e "\n\e[0;32m${bold}Installating Docker${normal}" -apt-get install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common -curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - -add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" -apt-get update -apt-get install -y docker-ce docker-ce-cli containerd.io - -echo -e "\n\e[0;32m${bold}Installating node and npm modules" -wget https://nodejs.org/download/release/v6.1.0/node-v6.1.0-linux-x64.tar.gz -tar -xvf node-v6.1.0-linux-x64.tar.gz -mv node-v6.1.0-linux-x64 /usr/local/lib/ -ln -s /usr/local/lib/node-v6.1.0-linux-x64/bin/node /usr/bin/node -ln -s /usr/local/lib/node-v6.1.0-linux-x64/bin/npm /usr/bin/npm -npm install -g grunt-cli@1.2.0 -ln -s /usr/local/lib/node-v6.1.0-linux-x64/bin/grunt /usr/bin/grunt -npm install -g bower@1.8.0 -ln -s /usr/local/lib/node-v6.1.0-linux-x64/bin/bower /usr/bin/bower -npm install -g gulp@3.9.1 -ln -s /usr/local/lib/node-v6.1.0-linux-x64/bin/gulp /usr/bin/gulp - -echo -e "\n\e[0;32m${bold}Installating Ansible${normal}" -pip install ansible==2.5.0 - -echo -e "\n\e[0;32m${bold}Installating Docker-py${normal}" -pip install docker-py - -echo -e "\n\e[0;32m${bold}Installating colordiff${normal}" -sudo apt-get install -y colordiff - -echo -e "\n\e[0;32m${bold}Adding jenkins user to docker group${normal}" -usermod -aG docker jenkins - -echo -e "\n\e[0;32m${bold}Creating bashrc for jenkins user ${normal}" -cp /etc/skel/.bashrc /var/lib/jenkins - -echo -e "\n\e[0;32m${bold}Installation complete. Please go to your jenkins URL and continue setup if this first run..${normal}" diff --git a/deploy/jenkins/jobs/ArtifactUpload/config.xml b/deploy/jenkins/jobs/ArtifactUpload/config.xml deleted file mode 100644 index 6fe3ca0b64..0000000000 --- a/deploy/jenkins/jobs/ArtifactUpload/config.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - - - - - - All - false - false - - - - - - - - false - - - - \ No newline at end of file diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/config.xml deleted file mode 100644 index 6fe3ca0b64..0000000000 --- a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/config.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - - - - - - All - false - false - - - - - - - - false - - - - \ No newline at end of file diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/config.xml deleted file mode 100644 index 68477b8ac7..0000000000 --- a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/config.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - - - - - - All - false - false - - - - - - - - false - - - - \ No newline at end of file diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/APIManager/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/APIManager/config.xml deleted file mode 100644 index ad7e37aedb..0000000000 --- a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/APIManager/config.xml +++ /dev/null @@ -1,108 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - absolute_job_path - <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> - Build/Core/APIManager - false - - - image_tag - <font color=darkgreen size=2><b>OPTIONAL: Specify the tag to upload a specific image version to the container registry.</b></font> - - false - - - artifact_source - <font color=black size=2><b> -ArtifactRepo - Push the docker image to container registry. -</b></font> - - - ArtifactRepo - - - - - - - 0 - 0 - - false - project - false - - - - - - - Build/Core/APIManager - - SUCCESS - 0 - BLUE - true - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 1 - false - - - - pipelines/upload/docker/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/APIManagerEcho/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/APIManagerEcho/config.xml deleted file mode 100644 index 77af8f7911..0000000000 --- a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/APIManagerEcho/config.xml +++ /dev/null @@ -1,108 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - absolute_job_path - <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> - Build/Core/APIManagerEcho - false - - - image_tag - <font color=darkgreen size=2><b>OPTIONAL: Specify the tag to upload a specific image version to the container registry.</b></font> - - false - - - artifact_source - <font color=black size=2><b> -ArtifactRepo - Push the docker image to container registry. -</b></font> - - - ArtifactRepo - - - - - - - 0 - 0 - - false - project - false - - - - - - - Build/Core/APIManagerEcho - - SUCCESS - 0 - BLUE - true - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 1 - false - - - - pipelines/upload/docker/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/AdminUtils/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/AdminUtils/config.xml deleted file mode 100644 index b49d708c42..0000000000 --- a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/AdminUtils/config.xml +++ /dev/null @@ -1,108 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - absolute_job_path - <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> - Build/Core/AdminUtils - false - - - image_tag - <font color=darkgreen size=2><b>OPTIONAL: Specify the tag to upload a specific image version to the container registry.</b></font> - - false - - - artifact_source - <font color=black size=2><b> -ArtifactRepo - Push the docker image to container registry. -</b></font> - - - ArtifactRepo - - - - - - - 0 - 0 - - false - project - false - - - - - - - /Build/Core/AdminUtils - - SUCCESS - 0 - BLUE - true - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 1 - false - - - - pipelines/upload/docker/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Badger/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Badger/config.xml deleted file mode 100644 index 8a360779ad..0000000000 --- a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Badger/config.xml +++ /dev/null @@ -1,108 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - absolute_job_path - <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> - Build/Core/Badger - false - - - image_tag - <font color=darkgreen size=2><b>OPTIONAL: Specify the tag to upload a specific image version to the container registry.</b></font> - - false - - - artifact_source - <font color=black size=2><b> -ArtifactRepo - Push the docker image to container registry. -</b></font> - - - ArtifactRepo - - - - - - - 0 - 0 - - false - project - false - - - - - - - /Build/Core/Badger - - SUCCESS - 0 - BLUE - true - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 1 - false - - - - pipelines/upload/docker/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Cassandra/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Cassandra/config.xml deleted file mode 100644 index 06009718e2..0000000000 --- a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Cassandra/config.xml +++ /dev/null @@ -1,108 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - absolute_job_path - <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> - Build/Core/Cassandra - false - - - build_number - <font color=darkgreen size=2><b>OPTIONAL: Specify the build job number to upload / copy the artifact built in that job.</b></font> - lastSuccessfulBuild - false - - - artifact_source - <font color=black size=2><b> -ArtifactRepo - Upload and keep a copy of the artifact in Jenkins, JenkinsJob - Just keep a copy of the artifact in Jenkins.</b></font> - - - ArtifactRepo - JenkinsJob - - - - - - - 0 - 0 - - false - project - false - - - - - - - /Build/Core/Cassandra - - SUCCESS - 0 - BLUE - true - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - pipelines/upload/artifacts/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Config/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Config/config.xml deleted file mode 100644 index 87cfd3e823..0000000000 --- a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Config/config.xml +++ /dev/null @@ -1,108 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - absolute_job_path - <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> - Build/Core/Config - false - - - image_tag - <font color=darkgreen size=2><b>OPTIONAL: Specify the tag to upload a specific image version to the container registry.</b></font> - - false - - - artifact_source - <font color=black size=2><b> -ArtifactRepo - Push the docker image to container registry. -</b></font> - - - ArtifactRepo - - - - - - - 0 - 0 - - false - project - false - - - - - - - /Build/Core/Config - - SUCCESS - 0 - BLUE - true - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 1 - false - - - - pipelines/upload/docker/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Content/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Content/config.xml deleted file mode 100644 index 184683d645..0000000000 --- a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Content/config.xml +++ /dev/null @@ -1,108 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - absolute_job_path - <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> - Build/Core/Content - false - - - image_tag - <font color=darkgreen size=2><b>OPTIONAL: Specify the tag to upload a specific image version to the container registry.</b></font> - - false - - - artifact_source - <font color=black size=2><b> -ArtifactRepo - Push the docker image to container registry. -</b></font> - - - ArtifactRepo - - - - - - - 0 - 0 - - false - project - false - - - - - - - /Build/Core/Content - - SUCCESS - 0 - BLUE - true - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 1 - false - - - - pipelines/upload/docker/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Keycloak/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Keycloak/config.xml deleted file mode 100644 index d44ca7a712..0000000000 --- a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Keycloak/config.xml +++ /dev/null @@ -1,108 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - absolute_job_path - <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> - Build/Core/Keycloak - false - - - build_number - <font color=darkgreen size=2><b>OPTIONAL: Specify the build job number to upload / copy the artifact built in that job.</b></font> - lastSuccessfulBuild - false - - - artifact_source - <font color=black size=2><b> -ArtifactRepo - Upload and keep a copy of the artifact in Jenkins, JenkinsJob - Just keep a copy of the artifact in Jenkins.</b></font> - - - ArtifactRepo - JenkinsJob - - - - - - - 0 - 0 - - false - project - false - - - - - - - /Build/Core/Keycloak - - SUCCESS - 0 - BLUE - true - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 1 - false - - - - pipelines/upload/artifacts/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Learner/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Learner/config.xml deleted file mode 100644 index 41067d62d8..0000000000 --- a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Learner/config.xml +++ /dev/null @@ -1,108 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - absolute_job_path - <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> - Build/Core/Learner - false - - - image_tag - <font color=darkgreen size=2><b>OPTIONAL: Specify the tag to upload a specific image version to the container registry.</b></font> - - false - - - artifact_source - <font color=black size=2><b> -ArtifactRepo - Push the docker image to container registry. -</b></font> - - - ArtifactRepo - - - - - - - 0 - 0 - - false - project - false - - - - - - - /Build/Core/Learner - - SUCCESS - 0 - BLUE - true - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - pipelines/upload/docker/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Player/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Player/config.xml deleted file mode 100644 index 2ee20d9bc0..0000000000 --- a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Player/config.xml +++ /dev/null @@ -1,108 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - absolute_job_path - <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> - Build/Core/Player - false - - - image_tag - <font color=darkgreen size=2><b>OPTIONAL: Specify the tag to upload a specific image version to the container registry.</b></font> - - false - - - artifact_source - <font color=black size=2><b> -ArtifactRepo - Push the docker image to container registry. -</b></font> - - - ArtifactRepo - - - - - - - 0 - 0 - - false - project - false - - - - - - - /Build/Core/Player - - SUCCESS - 0 - BLUE - true - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 1 - false - - - - pipelines/upload/docker/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Proxy/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Proxy/config.xml deleted file mode 100644 index b3a102f154..0000000000 --- a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Proxy/config.xml +++ /dev/null @@ -1,108 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - absolute_job_path - <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> - Build/Core/Proxy - false - - - image_tag - <font color=darkgreen size=2><b>OPTIONAL: Specify the tag to upload a specific image version to the container registry.</b></font> - - false - - - artifact_source - <font color=black size=2><b> -ArtifactRepo - Push the docker image to container registry. -</b></font> - - - ArtifactRepo - - - - - - - 0 - 0 - - false - project - false - - - - - - - /Build/Core/Proxy - - SUCCESS - 0 - BLUE - true - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 1 - false - - - - pipelines/upload/docker/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Telemetry/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Telemetry/config.xml deleted file mode 100644 index f8d7173a2f..0000000000 --- a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Core/jobs/Telemetry/config.xml +++ /dev/null @@ -1,108 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - absolute_job_path - <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> - Build/Core/Telemetry - false - - - image_tag - <font color=darkgreen size=2><b>OPTIONAL: Specify the tag to upload a specific image version to the container registry.</b></font> - - false - - - artifact_source - <font color=black size=2><b> -ArtifactRepo - Push the docker image to container registry. -</b></font> - - - ArtifactRepo - - - - - - - 0 - 0 - - false - project - false - - - - - - - /Build/Core/Telemetry - - SUCCESS - 0 - BLUE - true - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 1 - false - - - - pipelines/upload/docker/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/DataPipeline/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/DataPipeline/config.xml deleted file mode 100644 index 68477b8ac7..0000000000 --- a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/DataPipeline/config.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - - - - - - All - false - false - - - - - - - - false - - - - \ No newline at end of file diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/DataPipeline/jobs/Analytics/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/DataPipeline/jobs/Analytics/config.xml deleted file mode 100644 index ea3935f105..0000000000 --- a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/DataPipeline/jobs/Analytics/config.xml +++ /dev/null @@ -1,108 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - absolute_job_path - <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> - Build/DataPipeline/Analytics - false - - - build_number - <font color=darkgreen size=2><b>OPTIONAL: Specify the build job number to upload / copy the artifact built in that job.</b></font> - lastSuccessfulBuild - false - - - artifact_source - <font color=black size=2><b> -ArtifactRepo - Upload and keep a copy of the artifact in Jenkins, JenkinsJob - Just keep a copy of the artifact in Jenkins.</b></font> - - - ArtifactRepo - JenkinsJob - - - - - - - 0 - 0 - - false - project - false - - - - - - - /Build/DataPipeline/Analytics - - SUCCESS - 0 - BLUE - true - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-data-pipeline.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 1 - false - - - - pipelines/upload/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/DataPipeline/jobs/DataPipeline/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/DataPipeline/jobs/DataPipeline/config.xml deleted file mode 100644 index d46ea63bcd..0000000000 --- a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/DataPipeline/jobs/DataPipeline/config.xml +++ /dev/null @@ -1,108 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - absolute_job_path - <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> - Build/DataPipeline/DataPipeline - false - - - build_number - <font color=darkgreen size=2><b>OPTIONAL: Specify the build job number to upload / copy the artifact built in that job.</b></font> - lastSuccessfulBuild - false - - - artifact_source - <font color=black size=2><b> -ArtifactRepo - Upload and keep a copy of the artifact in Jenkins, JenkinsJob - Just keep a copy of the artifact in Jenkins.</b></font> - - - ArtifactRepo - JenkinsJob - - - - - - - 0 - 0 - - false - project - false - - - - - - - /Build/DataPipeline/DataPipeline - - SUCCESS - 0 - BLUE - true - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-data-pipeline.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 1 - false - - - - pipelines/upload/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/DataPipeline/jobs/Secor/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/DataPipeline/jobs/Secor/config.xml deleted file mode 100644 index 6671668401..0000000000 --- a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/DataPipeline/jobs/Secor/config.xml +++ /dev/null @@ -1,108 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - absolute_job_path - <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> - Build/DataPipeline/Secor - false - - - build_number - <font color=darkgreen size=2><b>OPTIONAL: Specify the build job number to upload / copy the artifact built in that job.</b></font> - lastSuccessfulBuild - false - - - artifact_source - <font color=black size=2><b> -ArtifactRepo - Upload and keep a copy of the artifact in Jenkins, JenkinsJob - Just keep a copy of the artifact in Jenkins.</b></font> - - - ArtifactRepo - JenkinsJob - - - - - - - 0 - 0 - - false - project - false - - - - - - - /Build/DataPipeline/Secor - - SUCCESS - 0 - BLUE - true - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-data-pipeline.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 1 - false - - - - pipelines/upload/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/KnowledgePlatform/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/KnowledgePlatform/config.xml deleted file mode 100644 index 68477b8ac7..0000000000 --- a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/KnowledgePlatform/config.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - - - - - - All - false - false - - - - - - - - false - - - - \ No newline at end of file diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/KnowledgePlatform/jobs/KnowledgePlatform/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/KnowledgePlatform/jobs/KnowledgePlatform/config.xml deleted file mode 100644 index 73e480baa6..0000000000 --- a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/KnowledgePlatform/jobs/KnowledgePlatform/config.xml +++ /dev/null @@ -1,108 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - absolute_job_path - <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> - Build/KnowledgePlatform/KnowledgePlatform - false - - - build_number - <font color=darkgreen size=2><b>OPTIONAL: Specify the build job number to upload / copy the artifact built in that job.</b></font> - lastSuccessfulBuild - false - - - artifact_source - <font color=black size=2><b> -ArtifactRepo - Upload and keep a copy of the artifact in Jenkins, JenkinsJob - Just keep a copy of the artifact in Jenkins.</b></font> - - - ArtifactRepo - JenkinsJob - - - - - - - 0 - 0 - - false - project - false - - - - - - - /Build/KnowledgePlatform/KnowledgePlatform - - SUCCESS - 0 - BLUE - true - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-learning-platform.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 1 - false - - - - pipelines/upload/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4j/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4j/config.xml deleted file mode 100644 index b7727db72d..0000000000 --- a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4j/config.xml +++ /dev/null @@ -1,108 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - absolute_job_path - <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> - Build/KnowledgePlatform/Neo4j - false - - - build_number - <font color=darkgreen size=2><b>OPTIONAL: Specify the build job number to upload / copy the artifact built in that job.</b></font> - lastSuccessfulBuild - false - - - artifact_source - <font color=black size=2><b> -ArtifactRepo - Upload and keep a copy of the artifact in Jenkins, JenkinsJob - Just keep a copy of the artifact in Jenkins.</b></font> - - - ArtifactRepo - JenkinsJob - - - - - - - 0 - 0 - - false - project - false - - - - - - - /Build/KnowledgePlatform/Neo4j - - SUCCESS - 0 - BLUE - true - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-learning-platform.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 1 - false - - - - pipelines/upload/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/KnowledgePlatform/jobs/SyncTool/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/KnowledgePlatform/jobs/SyncTool/config.xml deleted file mode 100644 index 991e405155..0000000000 --- a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/KnowledgePlatform/jobs/SyncTool/config.xml +++ /dev/null @@ -1,108 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - absolute_job_path - <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> - Build/KnowledgePlatform/SyncTool - false - - - build_number - <font color=darkgreen size=2><b>OPTIONAL: Specify the build job number to upload / copy the artifact built in that job.</b></font> - lastSuccessfulBuild - false - - - artifact_source - <font color=black size=2><b> -ArtifactRepo - Upload and keep a copy of the artifact in Jenkins, JenkinsJob - Just keep a copy of the artifact in Jenkins.</b></font> - - - ArtifactRepo - JenkinsJob - - - - - - - 0 - 0 - - false - project - false - - - - - - - /Build/KnowledgePlatform/SyncTool - - SUCCESS - 0 - BLUE - true - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-learning-platform.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 1 - false - - - - pipelines/upload/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/KnowledgePlatform/jobs/Yarn/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/KnowledgePlatform/jobs/Yarn/config.xml deleted file mode 100644 index b45c513b5b..0000000000 --- a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/KnowledgePlatform/jobs/Yarn/config.xml +++ /dev/null @@ -1,108 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - absolute_job_path - <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> - Build/KnowledgePlatform/Yarn - false - - - build_number - <font color=darkgreen size=2><b>OPTIONAL: Specify the build job number to upload / copy the artifact built in that job.</b></font> - lastSuccessfulBuild - false - - - artifact_source - <font color=black size=2><b> -ArtifactRepo - Upload and keep a copy of the artifact in Jenkins, JenkinsJob - Just keep a copy of the artifact in Jenkins.</b></font> - - - ArtifactRepo - JenkinsJob - - - - - - - 0 - 0 - - false - project - false - - - - - - - /Build/KnowledgePlatform/Yarn - - SUCCESS - 0 - BLUE - true - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-learning-platform.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 1 - false - - - - pipelines/upload/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Plugins/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Plugins/config.xml deleted file mode 100644 index e25dcd1341..0000000000 --- a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Plugins/config.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - - - - All - false - false - - - - - - - - false - - - - \ No newline at end of file diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Plugins/jobs/CEPlugins/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Plugins/jobs/CEPlugins/config.xml deleted file mode 100644 index 5c380348d6..0000000000 --- a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Plugins/jobs/CEPlugins/config.xml +++ /dev/null @@ -1,93 +0,0 @@ - - - - - false - - - - -1 - -1 - -1 - -1 - - - - - false - false - - - - - absolute_job_path - <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> - Build/Plugins/CEPlugins - false - - - build_number - <font color=darkgreen size=2><b>OPTIONAL: Specify the build job number to upload / copy the artifact built in that job.</b></font> - lastSuccessfulBuild - false - - - artifact_source - <font color=black size=2><b> -ArtifactRepo - Upload and keep a copy of the artifact in Jenkins, JenkinsJob - Just keep a copy of the artifact in Jenkins.</b></font> - - - ArtifactRepo - JenkinsJob - - - - - - - 0 - 0 - - false - project - false - - - - - - - Build/Plugins/CEPlugins - - SUCCESS - 0 - BLUE - true - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops.git - - - - - ${public_repo_branch} - - - false - - - - pipelines/upload/plugins/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Plugins/jobs/CollectionEditor/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Plugins/jobs/CollectionEditor/config.xml deleted file mode 100644 index b071455dd9..0000000000 --- a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Plugins/jobs/CollectionEditor/config.xml +++ /dev/null @@ -1,93 +0,0 @@ - - - - - false - - - - -1 - -1 - -1 - -1 - - - - - false - false - - - - - absolute_job_path - <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> - Build/Plugins/CollectionEditor - false - - - build_number - <font color=darkgreen size=2><b>OPTIONAL: Specify the build job number to upload / copy the artifact built in that job.</b></font> - lastSuccessfulBuild - false - - - artifact_source - <font color=black size=2><b> -ArtifactRepo - Upload and keep a copy of the artifact in Jenkins, JenkinsJob - Just keep a copy of the artifact in Jenkins.</b></font> - - - ArtifactRepo - JenkinsJob - - - - - - - 0 - 0 - - false - project - false - - - - - - - Build/Plugins/CollectionEditor - - SUCCESS - 0 - BLUE - true - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops.git - - - - - ${public_repo_branch} - - - false - - - - pipelines/upload/plugins/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Plugins/jobs/ContentFramework/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Plugins/jobs/ContentFramework/config.xml deleted file mode 100644 index 0e4c842ced..0000000000 --- a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Plugins/jobs/ContentFramework/config.xml +++ /dev/null @@ -1,93 +0,0 @@ - - - - - false - - - - -1 - -1 - -1 - -1 - - - - - false - false - - - - - absolute_job_path - <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> - Build/Plugins/ContentFramework - false - - - build_number - <font color=darkgreen size=2><b>OPTIONAL: Specify the build job number to upload / copy the artifact built in that job.</b></font> - lastSuccessfulBuild - false - - - artifact_source - <font color=black size=2><b> -ArtifactRepo - Upload and keep a copy of the artifact in Jenkins, JenkinsJob - Just keep a copy of the artifact in Jenkins.</b></font> - - - ArtifactRepo - JenkinsJob - - - - - - - 0 - 0 - - false - project - false - - - - - - - Build/Plugins/ContentFramework - - SUCCESS - 0 - BLUE - true - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops.git - - - - - ${public_repo_branch} - - - false - - - - pipelines/upload/plugins/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Plugins/jobs/ContentRendererPreview/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Plugins/jobs/ContentRendererPreview/config.xml deleted file mode 100644 index f699829e2f..0000000000 --- a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Plugins/jobs/ContentRendererPreview/config.xml +++ /dev/null @@ -1,93 +0,0 @@ - - - - - false - - - - -1 - -1 - -1 - -1 - - - - - false - false - - - - - absolute_job_path - <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> - Build/Plugins/ContentRendererPreview - false - - - build_number - <font color=darkgreen size=2><b>OPTIONAL: Specify the build job number to upload / copy the artifact built in that job.</b></font> - lastSuccessfulBuild - false - - - artifact_source - <font color=black size=2><b> -ArtifactRepo - Upload and keep a copy of the artifact in Jenkins, JenkinsJob - Just keep a copy of the artifact in Jenkins.</b></font> - - - ArtifactRepo - JenkinsJob - - - - - - - 0 - 0 - - false - project - false - - - - - - - Build/Plugins/ContentRendererPreview - - SUCCESS - 0 - BLUE - true - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops.git - - - - - ${public_repo_branch} - - - false - - - - pipelines/upload/plugins/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Plugins/jobs/GenericEditor/config.xml b/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Plugins/jobs/GenericEditor/config.xml deleted file mode 100644 index 4ce788e56e..0000000000 --- a/deploy/jenkins/jobs/ArtifactUpload/jobs/dev/jobs/Plugins/jobs/GenericEditor/config.xml +++ /dev/null @@ -1,93 +0,0 @@ - - - - - false - - - - -1 - -1 - -1 - -1 - - - - - false - false - - - - - absolute_job_path - <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> - Build/Plugins/GenericEditor - false - - - build_number - <font color=darkgreen size=2><b>OPTIONAL: Specify the build job number to upload / copy the artifact built in that job.</b></font> - lastSuccessfulBuild - false - - - artifact_source - <font color=black size=2><b> -ArtifactRepo - Upload and keep a copy of the artifact in Jenkins, JenkinsJob - Just keep a copy of the artifact in Jenkins.</b></font> - - - ArtifactRepo - JenkinsJob - - - - - - - 0 - 0 - - false - project - false - - - - - - - Build/Plugins/GenericEditor - - SUCCESS - 0 - BLUE - true - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops.git - - - - - ${public_repo_branch} - - - false - - - - pipelines/upload/plugins/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Build/config.xml b/deploy/jenkins/jobs/Build/config.xml deleted file mode 100644 index 6fe3ca0b64..0000000000 --- a/deploy/jenkins/jobs/Build/config.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - - - - - - All - false - false - - - - - - - - false - - - - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Build/jobs/Core/config.xml b/deploy/jenkins/jobs/Build/jobs/Core/config.xml deleted file mode 100644 index 68477b8ac7..0000000000 --- a/deploy/jenkins/jobs/Build/jobs/Core/config.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - - - - - - All - false - false - - - - - - - - false - - - - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Build/jobs/Core/jobs/APIManager/config.xml b/deploy/jenkins/jobs/Build/jobs/Core/jobs/APIManager/config.xml deleted file mode 100644 index e774141dde..0000000000 --- a/deploy/jenkins/jobs/Build/jobs/Core/jobs/APIManager/config.xml +++ /dev/null @@ -1,38 +0,0 @@ - - - - - false - - - false - false - - - - false - project - false - - - - - - true - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Build/jobs/Core/jobs/APIManagerEcho/config.xml b/deploy/jenkins/jobs/Build/jobs/Core/jobs/APIManagerEcho/config.xml deleted file mode 100644 index d89b4b7bf9..0000000000 --- a/deploy/jenkins/jobs/Build/jobs/Core/jobs/APIManagerEcho/config.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - false - - - false - false - - - - - true - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Build/jobs/Core/jobs/AdminUtils/config.xml b/deploy/jenkins/jobs/Build/jobs/Core/jobs/AdminUtils/config.xml deleted file mode 100644 index 7fe22243fc..0000000000 --- a/deploy/jenkins/jobs/Build/jobs/Core/jobs/AdminUtils/config.xml +++ /dev/null @@ -1,63 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 10 - - - - - false - false - - - 0 - 0 - - false - project - false - - - - - - - - - - - - - true - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Build/jobs/Core/jobs/Badger/config.xml b/deploy/jenkins/jobs/Build/jobs/Core/jobs/Badger/config.xml deleted file mode 100644 index 47f3fd52b7..0000000000 --- a/deploy/jenkins/jobs/Build/jobs/Core/jobs/Badger/config.xml +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 10 - - - - - false - false - - - - - github_release_tag - <font color=red size=2><b>CAUTION: If the value is blank, latest code will be built. Specify github tag name to build from a tag.</b></font> - - false - - - - - 0 - 0 - - false - project - false - - - - - - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - images/openbadger/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Build/jobs/Core/jobs/Cassandra/config.xml b/deploy/jenkins/jobs/Build/jobs/Core/jobs/Cassandra/config.xml deleted file mode 100644 index 8aef6a2b1b..0000000000 --- a/deploy/jenkins/jobs/Build/jobs/Core/jobs/Cassandra/config.xml +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 10 - - - - - false - false - - - - - github_release_tag - <font color=red size=2><b>CAUTION: If the value is blank, latest code will be built. Specify github tag name to build from a tag.</b></font> - - false - - - - - 0 - 0 - - false - project - false - - - - - - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-utils.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Build/jobs/Core/jobs/CloudStorageSDK/config.xml b/deploy/jenkins/jobs/Build/jobs/Core/jobs/CloudStorageSDK/config.xml deleted file mode 100644 index aaba538275..0000000000 --- a/deploy/jenkins/jobs/Build/jobs/Core/jobs/CloudStorageSDK/config.xml +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 1 - - - - - false - false - - - - - github_release_tag - <font color=red size=2><b>CAUTION: If the value is blank, latest code will be built. Specify github tag name to build from a tag.</b></font> - - false - - - - - 0 - 0 - - false - project - false - - - - - - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-cloud-storage-sdk.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - Jenkinsfile - false - - - true - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Build/jobs/Core/jobs/Config/config.xml b/deploy/jenkins/jobs/Build/jobs/Core/jobs/Config/config.xml deleted file mode 100644 index 24de44f2a1..0000000000 --- a/deploy/jenkins/jobs/Build/jobs/Core/jobs/Config/config.xml +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 10 - - - - - false - false - - - - - github_release_tag - <font color=red size=2><b>CAUTION: If the value is blank, latest code will be built. Specify github tag name to build from a tag.</b></font> - - false - - - - - 0 - 0 - - false - project - false - - - - - - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-config.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Build/jobs/Core/jobs/Content/config.xml b/deploy/jenkins/jobs/Build/jobs/Core/jobs/Content/config.xml deleted file mode 100644 index 5e188b455b..0000000000 --- a/deploy/jenkins/jobs/Build/jobs/Core/jobs/Content/config.xml +++ /dev/null @@ -1,77 +0,0 @@ - - - - - false - - - - -1 - -1 - -1 - 10 - - - - - false - false - - - - - github_release_tag - <font color=red size=2><b>CAUTION: If the value is blank, latest code will be built. Specify github tag name to build from a tag.</b></font> - - false - - - - - 0 - 0 - - false - project - false - - - - - - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-content-service.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Build/jobs/Core/jobs/Keycloak/config.xml b/deploy/jenkins/jobs/Build/jobs/Core/jobs/Keycloak/config.xml deleted file mode 100644 index 19f208676c..0000000000 --- a/deploy/jenkins/jobs/Build/jobs/Core/jobs/Keycloak/config.xml +++ /dev/null @@ -1,77 +0,0 @@ - - - - - false - - - - -1 - -1 - -1 - 1 - - - - - false - false - - - - - github_release_tag - <font color=red size=2><b>CAUTION: If the value is blank, latest code will be built. Specify github tag name to build from a tag.</b></font> - - false - - - - - 0 - 0 - - false - project - false - - - - - - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-auth.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 1 - false - - - - keycloak/scripts/pipelines/sunbird-auth-build/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Build/jobs/Core/jobs/Learner/config.xml b/deploy/jenkins/jobs/Build/jobs/Core/jobs/Learner/config.xml deleted file mode 100644 index 7effd5e779..0000000000 --- a/deploy/jenkins/jobs/Build/jobs/Core/jobs/Learner/config.xml +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 10 - - - - - false - false - - - - - github_release_tag - <font color=red size=2><b>CAUTION: If the value is blank, latest code will be built. Specify github tag name to build from a tag.</b></font> - - false - - - - - 0 - 0 - - false - project - false - - - - - - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-lms-service.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Build/jobs/Core/jobs/Player/config.xml b/deploy/jenkins/jobs/Build/jobs/Core/jobs/Player/config.xml deleted file mode 100644 index 91415a2d42..0000000000 --- a/deploy/jenkins/jobs/Build/jobs/Core/jobs/Player/config.xml +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 10 - - - - - false - false - - - - - github_release_tag - <font color=red size=2><b>CAUTION: If the value is blank, latest code will be built. Specify github tag name to build from a tag.</b></font> - - false - - - - - 0 - 0 - - false - project - false - - - - - - - - - - - - - 2 - - - https://github.com/Sunbird-Ed/SunbirdEd-portal.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Build/jobs/Core/jobs/Proxy/config.xml b/deploy/jenkins/jobs/Build/jobs/Core/jobs/Proxy/config.xml deleted file mode 100644 index 82d230efb7..0000000000 --- a/deploy/jenkins/jobs/Build/jobs/Core/jobs/Proxy/config.xml +++ /dev/null @@ -1,75 +0,0 @@ - - - - - false - - - - -1 - -1 - -1 - 10 - - - - - false - false - - - - - github_release_tag - <font color=red size=2><b>CAUTION: If the value is blank, latest code will be built. Specify github tag name to build from a tag.</b></font> - - false - - - - - - false - project - false - - - - - - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - images/proxy/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Build/jobs/Core/jobs/Telemetry/config.xml b/deploy/jenkins/jobs/Build/jobs/Core/jobs/Telemetry/config.xml deleted file mode 100644 index ae99c15c50..0000000000 --- a/deploy/jenkins/jobs/Build/jobs/Core/jobs/Telemetry/config.xml +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 10 - - - - - false - false - - - - - github_release_tag - <font color=red size=2><b>CAUTION: If the value is blank, latest code will be built. Specify github tag name to build from a tag.</b></font> - - false - - - - - 0 - 0 - - false - project - false - - - - - - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-telemetry-service.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Build/jobs/DataPipeline/config.xml b/deploy/jenkins/jobs/Build/jobs/DataPipeline/config.xml deleted file mode 100644 index 68477b8ac7..0000000000 --- a/deploy/jenkins/jobs/Build/jobs/DataPipeline/config.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - - - - - - All - false - false - - - - - - - - false - - - - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Build/jobs/DataPipeline/jobs/Analytics/config.xml b/deploy/jenkins/jobs/Build/jobs/DataPipeline/jobs/Analytics/config.xml deleted file mode 100644 index 692838a32c..0000000000 --- a/deploy/jenkins/jobs/Build/jobs/DataPipeline/jobs/Analytics/config.xml +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 1 - - - - - false - false - - - - - github_release_tag - <font color=red size=2><b>CAUTION: If the value is blank, latest code will be built. Specify github tag name to build from a tag.</b></font> - - false - - - - - 0 - 0 - - false - project - false - - - - - - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-analytics.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Build/jobs/DataPipeline/jobs/DataPipeline/config.xml b/deploy/jenkins/jobs/Build/jobs/DataPipeline/jobs/DataPipeline/config.xml deleted file mode 100644 index aeadd32be9..0000000000 --- a/deploy/jenkins/jobs/Build/jobs/DataPipeline/jobs/DataPipeline/config.xml +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 1 - - - - - false - false - - - - - github_release_tag - <font color=red size=2><b>CAUTION: If the value is blank, latest code will be built. Specify github tag name to build from a tag.</b></font> - - false - - - - - 0 - 0 - - false - project - false - - - - - - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-data-pipeline.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - pipelines/build/data-pipeline/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Build/jobs/DataPipeline/jobs/Secor/config.xml b/deploy/jenkins/jobs/Build/jobs/DataPipeline/jobs/Secor/config.xml deleted file mode 100644 index dae00811de..0000000000 --- a/deploy/jenkins/jobs/Build/jobs/DataPipeline/jobs/Secor/config.xml +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 1 - - - - - false - false - - - - - github_release_tag - <font color=red size=2><b>CAUTION: If the value is blank, latest code will be built. Specify github tag name to build from a tag.</b></font> - - false - - - - - 0 - 0 - - false - project - false - - - - - - - - - - - - - 2 - - - https://github.com/project-sunbird/secor.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Build/jobs/KnowledgePlatform/config.xml b/deploy/jenkins/jobs/Build/jobs/KnowledgePlatform/config.xml deleted file mode 100644 index 6fe3ca0b64..0000000000 --- a/deploy/jenkins/jobs/Build/jobs/KnowledgePlatform/config.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - - - - - - All - false - false - - - - - - - - false - - - - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Build/jobs/KnowledgePlatform/jobs/KnowledgePlatform/config.xml b/deploy/jenkins/jobs/Build/jobs/KnowledgePlatform/jobs/KnowledgePlatform/config.xml deleted file mode 100644 index a631630f33..0000000000 --- a/deploy/jenkins/jobs/Build/jobs/KnowledgePlatform/jobs/KnowledgePlatform/config.xml +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 1 - - - - - false - false - - - - - github_release_tag - <font color=red size=2><b>CAUTION: If the value is blank, latest code will be built. Specify github tag name to build from a tag.</b></font> - - false - - - - - 0 - 0 - - false - project - false - - - - - - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-learning-platform.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - pipelines/build/learning/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Build/jobs/KnowledgePlatform/jobs/Neo4j/config.xml b/deploy/jenkins/jobs/Build/jobs/KnowledgePlatform/jobs/Neo4j/config.xml deleted file mode 100644 index b0d44a4447..0000000000 --- a/deploy/jenkins/jobs/Build/jobs/KnowledgePlatform/jobs/Neo4j/config.xml +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 1 - - - - - false - false - - - - - github_release_tag - <font color=red size=2><b>CAUTION: If the value is blank, latest code will be built. Specify github tag name to build from a tag.</b></font> - - false - - - - - 0 - 0 - - false - project - false - - - - - - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-learning-platform.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - pipelines/build/neo4j/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Build/jobs/KnowledgePlatform/jobs/SyncTool/config.xml b/deploy/jenkins/jobs/Build/jobs/KnowledgePlatform/jobs/SyncTool/config.xml deleted file mode 100644 index d057b1b82f..0000000000 --- a/deploy/jenkins/jobs/Build/jobs/KnowledgePlatform/jobs/SyncTool/config.xml +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 1 - - - - - false - false - - - - - github_release_tag - <font color=red size=2><b>CAUTION: If the value is blank, latest code will be built. Specify github tag name to build from a tag.</b></font> - - false - - - - - 0 - 0 - - false - project - false - - - - - - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-learning-platform.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - pipelines/build/synctool/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Build/jobs/KnowledgePlatform/jobs/Yarn/config.xml b/deploy/jenkins/jobs/Build/jobs/KnowledgePlatform/jobs/Yarn/config.xml deleted file mode 100644 index 4b67a7fe79..0000000000 --- a/deploy/jenkins/jobs/Build/jobs/KnowledgePlatform/jobs/Yarn/config.xml +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 1 - - - - - false - false - - - - - github_release_tag - <font color=red size=2><b>CAUTION: If the value is blank, latest code will be built. Specify github tag name to build from a tag.</b></font> - - false - - - - - 0 - 0 - - false - project - false - - - - - - - KnowledgePlatform - - SUCCESS - 0 - BLUE - true - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-learning-platform.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - pipelines/build/yarn/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Build/jobs/Plugins/config.xml b/deploy/jenkins/jobs/Build/jobs/Plugins/config.xml deleted file mode 100644 index 68477b8ac7..0000000000 --- a/deploy/jenkins/jobs/Build/jobs/Plugins/config.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - - - - - - All - false - false - - - - - - - - false - - - - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Build/jobs/Plugins/jobs/CEPlugins/config.xml b/deploy/jenkins/jobs/Build/jobs/Plugins/jobs/CEPlugins/config.xml deleted file mode 100644 index 0280e48934..0000000000 --- a/deploy/jenkins/jobs/Build/jobs/Plugins/jobs/CEPlugins/config.xml +++ /dev/null @@ -1,70 +0,0 @@ - - - - - false - - - - -1 - -1 - -1 - -1 - - - - - false - false - - - - - github_release_tag - <font color=red size=2><b>CAUTION: If the value is blank, latest code will be built. Specify github tag name to build from a tag.</b></font> - - false - - - - - 0 - 0 - - false - project - false - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-content-plugins.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Build/jobs/Plugins/jobs/CollectionEditor/config.xml b/deploy/jenkins/jobs/Build/jobs/Plugins/jobs/CollectionEditor/config.xml deleted file mode 100644 index 4c72168f2b..0000000000 --- a/deploy/jenkins/jobs/Build/jobs/Plugins/jobs/CollectionEditor/config.xml +++ /dev/null @@ -1,70 +0,0 @@ - - - - - false - - - - -1 - -1 - -1 - -1 - - - - - false - false - - - - - github_release_tag - <font color=red size=2><b>CAUTION: If the value is blank, latest code will be built. Specify github tag name to build from a tag.</b></font> - - false - - - - - 0 - 0 - - false - project - false - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-collection-editor.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Build/jobs/Plugins/jobs/ContentFramework/config.xml b/deploy/jenkins/jobs/Build/jobs/Plugins/jobs/ContentFramework/config.xml deleted file mode 100644 index 0b658bc434..0000000000 --- a/deploy/jenkins/jobs/Build/jobs/Plugins/jobs/ContentFramework/config.xml +++ /dev/null @@ -1,70 +0,0 @@ - - - - - false - - - - -1 - -1 - -1 - -1 - - - - - false - false - - - - - github_release_tag - <font color=red size=2><b>CAUTION: If the value is blank, latest code will be built. Specify github tag name to build from a tag.</b></font> - - false - - - - - 0 - 0 - - false - project - false - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-content-editor.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Build/jobs/Plugins/jobs/ContentRendererPreview/config.xml b/deploy/jenkins/jobs/Build/jobs/Plugins/jobs/ContentRendererPreview/config.xml deleted file mode 100644 index 5256477d20..0000000000 --- a/deploy/jenkins/jobs/Build/jobs/Plugins/jobs/ContentRendererPreview/config.xml +++ /dev/null @@ -1,70 +0,0 @@ - - - - - false - - - - -1 - -1 - -1 - -1 - - - - - false - false - - - - - github_release_tag - <font color=red size=2><b>CAUTION: If the value is blank, latest code will be built. Specify github tag name to build from a tag.</b></font> - - false - - - - - 0 - 0 - - false - project - false - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-content-player.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Build/jobs/Plugins/jobs/GenericEditor/config.xml b/deploy/jenkins/jobs/Build/jobs/Plugins/jobs/GenericEditor/config.xml deleted file mode 100644 index 0c8521698a..0000000000 --- a/deploy/jenkins/jobs/Build/jobs/Plugins/jobs/GenericEditor/config.xml +++ /dev/null @@ -1,70 +0,0 @@ - - - - - false - - - - -1 - -1 - -1 - -1 - - - - - false - false - - - - - github_release_tag - <font color=red size=2><b>CAUTION: If the value is blank, latest code will be built. Specify github tag name to build from a tag.</b></font> - - false - - - - - 0 - 0 - - false - project - false - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-generic-editor.git - - - - - ${public_repo_branch} - - - false - - - - false - false - - 0 - false - - - - Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/config.xml b/deploy/jenkins/jobs/Deploy/config.xml deleted file mode 100644 index 68477b8ac7..0000000000 --- a/deploy/jenkins/jobs/Deploy/config.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - - - - - - All - false - false - - - - - - - - false - - - - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/config.xml deleted file mode 100644 index 6fe3ca0b64..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/config.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - - - - - - All - false - false - - - - - - - - false - - - - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/config.xml deleted file mode 100644 index 68477b8ac7..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/config.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - - - - - - All - false - false - - - - - - - - false - - - - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/APIManager/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/APIManager/config.xml deleted file mode 100644 index 817790d549..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/APIManager/config.xml +++ /dev/null @@ -1,97 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - absolute_job_path - <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> - ArtifactUpload/dev/Core/APIManager - false - - - image_tag - <font color=red size=2><b>CAUTION: If the value is blank, latest built image will be deployed.</b></font> - - false - - - - - 0 - 0 - - false - project - false - - - - - - - ArtifactUpload/dev/Core/APIManager - - SUCCESS - 0 - BLUE - true - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - pipelines/deploy/api-manager/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/AdminUtils/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/AdminUtils/config.xml deleted file mode 100644 index 3f60232300..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/AdminUtils/config.xml +++ /dev/null @@ -1,97 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - absolute_job_path - <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> - ArtifactUpload/dev/Core/AdminUtils - false - - - image_tag - <font color=red size=2><b>CAUTION: If the value is blank, latest built image will be deployed.</b></font> - - false - - - - - 0 - 0 - - false - project - false - - - - - - - ArtifactUpload/dev/Core/AdminUtils - - SUCCESS - 0 - BLUE - true - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - pipelines/deploy/adminutils/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/ApplicationElasticSearch/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/ApplicationElasticSearch/config.xml deleted file mode 100644 index 360fb08734..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/ApplicationElasticSearch/config.xml +++ /dev/null @@ -1,58 +0,0 @@ - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - false - project - false - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 1 - false - - - - pipelines/deploy/application-elasticsearch/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Badger/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Badger/config.xml deleted file mode 100644 index fef35385ed..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Badger/config.xml +++ /dev/null @@ -1,86 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - absolute_job_path - <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> - ArtifactUpload/dev/Core/Badger - false - - - image_tag - <font color=red size=2><b>CAUTION: If the value is blank, latest built image will be deployed.</b></font> - - false - - - - - 0 - 0 - - false - project - false - - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - pipelines/deploy/badger/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Bootstrap/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Bootstrap/config.xml deleted file mode 100644 index d18ba30951..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Bootstrap/config.xml +++ /dev/null @@ -1,61 +0,0 @@ - - - - - false - - - - -1 - -1 - -1 - 5 - - - - false - false - - - - - hosts - <font color=black size=2><b>Enter the host name to be bootstrapped.</b></font> - all - false - - - - - 0 - 0 - - false - project - false - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops.git - - - - - ${public_repo_branch} - - - false - - - - pipelines/bootstrap/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Cassandra/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Cassandra/config.xml deleted file mode 100644 index bc84353c76..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Cassandra/config.xml +++ /dev/null @@ -1,163 +0,0 @@ - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - absolute_job_path - <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> - ArtifactUpload/dev/Core/Cassandra - false - - - artifact_source - <font color=black size=2><b> -ArtifactRepo - Download the artifact from azure blob, JenkinsJob - Use the atrifact from Jenkins job.</b></font> - choice-parameter-9600649228560 - 1 - - false - - - - false - - - Cassandra - - - PT_SINGLE_SELECT - false - 1 - - - build_number - - choice-parameter-9600651313765 - 1 - - false - - - - false - - - Cassandra - - artifact_source - ET_FORMATTED_HTML - true - - - artifact_version - - choice-parameter-9600653373369 - 1 - - false - - - - false - - - Cassandra - - artifact_source - ET_FORMATTED_HTML - true - - - - - 0 - 0 - - false - project - false - - - - - - - ArtifactUpload/dev/Core/Cassandra - - SUCCESS - 0 - BLUE - true - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - pipelines/deploy/cassandra-deploy/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Config/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Config/config.xml deleted file mode 100644 index fa056df081..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Config/config.xml +++ /dev/null @@ -1,86 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - absolute_job_path - <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> - ArtifactUpload/dev/Core/Config - false - - - image_tag - <font color=red size=2><b>CAUTION: If the value is blank, latest built image will be deployed.</b></font> - - false - - - - - 0 - 0 - - false - project - false - - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - pipelines/deploy/config-service/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Content/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Content/config.xml deleted file mode 100644 index 4ed5b292c8..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Content/config.xml +++ /dev/null @@ -1,97 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - absolute_job_path - <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> - ArtifactUpload/dev/Core/Content - false - - - image_tag - <font color=red size=2><b>CAUTION: If the value is blank, latest built image will be deployed.</b></font> - - false - - - - - 0 - 0 - - false - project - false - - - - - - - ArtifactUpload/dev/Core/Content - - SUCCESS - 0 - BLUE - true - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - pipelines/deploy/content/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/FuntionalTestCases/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/FuntionalTestCases/config.xml deleted file mode 100644 index 1e97feaa5a..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/FuntionalTestCases/config.xml +++ /dev/null @@ -1,65 +0,0 @@ - - - - - - - - - - - - - false - - - - - H 23 * * * - - - - - - -1 - 15 - -1 - -1 - - - - false - false - - - - false - project - false - - 1 - - - - - 2 - - - https://github.com/project-sunbird/sunbird-functional-tests.git - - - - - ${public_repo_branch} - - - false - - - - Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Keycloak/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Keycloak/config.xml deleted file mode 100644 index 44631971c4..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Keycloak/config.xml +++ /dev/null @@ -1,163 +0,0 @@ - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - absolute_job_path - <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> - ArtifactUpload/dev/Core/Keycloak - false - - - artifact_source - <font color=black size=2><b> -ArtifactRepo - Download the artifact from azure blob, JenkinsJob - Use the atrifact from Jenkins job.</b></font> - choice-parameter-9600649228560 - 1 - - false - - - - false - - - Keycloak - - - PT_SINGLE_SELECT - false - 1 - - - build_number - - choice-parameter-9600651313765 - 1 - - false - - - - false - - - Keycloak - - artifact_source - ET_FORMATTED_HTML - true - - - artifact_version - - choice-parameter-9600653373369 - 1 - - false - - - - false - - - Keycloak - - artifact_source - ET_FORMATTED_HTML - true - - - - - 0 - 0 - - false - project - false - - - - - - - ArtifactUpload/dev/Core/Keycloak - - SUCCESS - 0 - BLUE - true - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 1 - false - - - - pipelines/deploy/keycloak/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/KeycloakRealm/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/KeycloakRealm/config.xml deleted file mode 100644 index 6a9232507a..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/KeycloakRealm/config.xml +++ /dev/null @@ -1,68 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - false - project - false - - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops.git - - - - - keycloak-deployment - - - false - - - - true - false - - 1 - false - - - - pipelines/deploy/keycloak-realm/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Learner/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Learner/config.xml deleted file mode 100644 index 82ccfbd153..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Learner/config.xml +++ /dev/null @@ -1,97 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - absolute_job_path - <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> - ArtifactUpload/dev/Core/Learner - false - - - image_tag - <font color=red size=2><b>CAUTION: If the value is blank, latest built image will be deployed.</b></font> - - false - - - - - 0 - 0 - - false - project - false - - - - - - - ArtifactUpload/dev/Core/Learner - - SUCCESS - 0 - BLUE - true - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 1 - false - - - - pipelines/deploy/learner/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/LoggerElasticSearch/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/LoggerElasticSearch/config.xml deleted file mode 100644 index d1cee1407a..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/LoggerElasticSearch/config.xml +++ /dev/null @@ -1,60 +0,0 @@ - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - 0 - 0 - - false - project - false - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 1 - false - - - - pipelines/deploy/logger-elasticsearch/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Logging/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Logging/config.xml deleted file mode 100644 index 1dfbb2a98a..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Logging/config.xml +++ /dev/null @@ -1,60 +0,0 @@ - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - 0 - 0 - - false - project - false - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 1 - false - - - - pipelines/deploy/logger/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Monitoring/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Monitoring/config.xml deleted file mode 100644 index 9a870e34b6..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Monitoring/config.xml +++ /dev/null @@ -1,60 +0,0 @@ - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - 0 - 0 - - false - project - false - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 1 - false - - - - pipelines/deploy/monitor/Core/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/OnboardAPIs/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/OnboardAPIs/config.xml deleted file mode 100644 index 26970f24e5..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/OnboardAPIs/config.xml +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - 0 - 0 - - false - project - false - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 1 - false - - - - pipelines/deploy/am-onboard-apis/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/OnboardConsumers/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/OnboardConsumers/config.xml deleted file mode 100644 index 13772a78b5..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/OnboardConsumers/config.xml +++ /dev/null @@ -1,58 +0,0 @@ - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - false - project - false - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 1 - false - - - - pipelines/deploy/am-onboard-consumers/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Player/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Player/config.xml deleted file mode 100644 index 90e08fdc77..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Player/config.xml +++ /dev/null @@ -1,97 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - absolute_job_path - <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> - ArtifactUpload/dev/Core/Player - false - - - image_tag - <font color=red size=2><b>CAUTION: If the value is blank, latest built image will be deployed.</b></font> - - false - - - - - 0 - 0 - - false - project - false - - - - - - - ArtifactUpload/dev/Core/Player - - SUCCESS - 0 - BLUE - true - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 1 - false - - - - pipelines/deploy/player/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Proxy/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Proxy/config.xml deleted file mode 100644 index 5bfc2f12e0..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Proxy/config.xml +++ /dev/null @@ -1,90 +0,0 @@ - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - absolute_job_path - <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> - ArtifactUpload/dev/Core/Proxy - false - - - image_tag - <font color=red size=2><b>CAUTION: If the value is blank, latest built image will be deployed.</b></font> - - false - - - - - 0 - 0 - - false - project - false - - - - - - - ArtifactUpload/dev/Core/Proxy - - SUCCESS - 0 - BLUE - true - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 1 - false - - - - pipelines/deploy/proxy/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Telemetry/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Telemetry/config.xml deleted file mode 100644 index a9d95f0f73..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/Telemetry/config.xml +++ /dev/null @@ -1,97 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - absolute_job_path - <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> - ArtifactUpload/dev/Core/Telemetry - false - - - image_tag - <font color=red size=2><b>CAUTION: If the value is blank, latest built image will be deployed.</b></font> - - false - - - - - 0 - 0 - - false - project - false - - - - - - - ArtifactUpload/dev/Core/Telemetry - - SUCCESS - 0 - BLUE - true - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 1 - false - - - - pipelines/deploy/telemetry/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/TelemetryLogstash/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/TelemetryLogstash/config.xml deleted file mode 100644 index b167ae0167..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/TelemetryLogstash/config.xml +++ /dev/null @@ -1,60 +0,0 @@ - - - - Deploys Telemetry Logstash Service - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - 0 - 0 - - false - project - false - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 1 - false - - - - pipelines/deploy/telemetry-logstash/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/TelemetryLogstashDataPipeline/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/TelemetryLogstashDataPipeline/config.xml deleted file mode 100644 index 602e2eda1f..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Core/jobs/TelemetryLogstashDataPipeline/config.xml +++ /dev/null @@ -1,58 +0,0 @@ - - - - Deploys Telemetry Logstash Datapipeline Service - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - false - project - false - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 1 - false - - - - pipelines/deploy/telemetry-logstash-datapipeline/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/config.xml deleted file mode 100644 index 68477b8ac7..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/config.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - - - - - - All - false - false - - - - - - - - false - - - - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsAPI/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsAPI/config.xml deleted file mode 100644 index 17352bf36c..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsAPI/config.xml +++ /dev/null @@ -1,170 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - absolute_job_path - <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> - ArtifactUpload/dev/DataPipeline/Analytics - false - - - artifact_source - <font color=black size=2><b> -ArtifactRepo - Download the artifact from azure blob, JenkinsJob - Use the atrifact from Jenkins job.</b></font> - choice-parameter-9061667106947 - 1 - - false - - - - false - - - AnalyticsAPI - - - PT_SINGLE_SELECT - false - 1 - - - build_number - - choice-parameter-9061670571657 - 1 - - false - - - - false - - - AnalyticsAPI - - artifact_source - ET_FORMATTED_HTML - true - - - artifact_version - - choice-parameter-9061673103864 - 1 - - false - - - - false - - - AnalyticsAPI - - artifact_source - ET_FORMATTED_HTML - true - - - - - 0 - 0 - - false - project - false - - - - - - - ArtifactUpload/dev/DataPipeline/Analytics - - SUCCESS - 0 - BLUE - true - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-data-pipeline.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - pipelines/deploy/analytics-api/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsFetchLogs/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsFetchLogs/config.xml deleted file mode 100644 index bdb4532949..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsFetchLogs/config.xml +++ /dev/null @@ -1,93 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - instance_name - <font color=black size=2><b>Choose the instance to fetch logs.</b></font> - - - spark - analytics-api - secor - cassandra - - - - - action - <font color=black size=2><b>Choose one of the option - Fetch logs or set cronjob.</b></font> - - - fetch-logs - cronjobs - - - - - - - 0 - 0 - - false - project - false - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-data-pipeline.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 1 - false - - - - pipelines/deploy/fetch-logs/Jenkinsfile - false - - - true - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsGeoLocationDBSetup/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsGeoLocationDBSetup/config.xml deleted file mode 100644 index 1dfdaca572..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsGeoLocationDBSetup/config.xml +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - 0 - 0 - - false - project - false - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-data-pipeline.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 1 - false - - - - pipelines/deploy/geolocation-db-setup/Jenkinsfile - false - - - true - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsPopulatePSQLConsumerChannelMapping/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsPopulatePSQLConsumerChannelMapping/config.xml deleted file mode 100644 index d7a72eae8e..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsPopulatePSQLConsumerChannelMapping/config.xml +++ /dev/null @@ -1,99 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - Consumer_id - <font color=black size=2><b>Mention the consumer ID.</b></font> - id - false - - - Channel_id - <font color=black size=2><b>Channel ID to map with the Consumer ID.</b></font> - channel_id - false - - - status - <font color=black size=2><b> 1 - to activate, 0 - to make it inactive</b></font> - - - 1 - 0 - - - - - Created_by - <font color=black size=2><b>Created by.</b></font> - analytics-team - false - - - - - 0 - 0 - - false - project - false - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-data-pipeline.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - pipelines/deploy/PopulatePSQL-ConsumerChannelMapping/Jenkinsfile - false - - - true - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsReplayJobs/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsReplayJobs/config.xml deleted file mode 100644 index 5118f01003..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsReplayJobs/config.xml +++ /dev/null @@ -1,113 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - cql_query - <font color=black size=2><b>Specify cql_query if any tables needs to be truncated.<b></font> - 0 - false - - - job_type - <font color=black size=2><b>Specify the job type - Replay or Run.</b></font> - - - replay-job - run-job - generate-metrics - submit-job - - - - - job_id - <font color=black size=2><b>Specify the job id.</b></font> - - false - - - start_date - <font color=black size=2><b>Specify the start date. The default value is just a placeholder which can be changed as per need.</b></font> - 2017-05-01 - false - - - end_date - <font color=black size=2><b>Specify the end date. The default value is just a placeholder which can be changed as per need.</b></font> - 2017-07-11 - false - - - pause_min - <font color=black size=2><b>Specify the # of minutes to pause. The default value is just a placeholder which can be changed as per need.</b></font> - 30 - false - - - - - 0 - 0 - - false - project - false - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-data-pipeline.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - pipelines/deploy/replay-jobs/Jenkinsfile - false - - - true - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsStartJobManager/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsStartJobManager/config.xml deleted file mode 100644 index 18d2b6956a..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsStartJobManager/config.xml +++ /dev/null @@ -1,77 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - pause_min - <font color=black size=2><b>Pause for # of minutes.</b></font> - 5 - false - - - - - 0 - 0 - - false - project - false - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-data-pipeline.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 1 - false - - - - pipelines/deploy/start-jobmanager/Jenkinsfile - false - - - true - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsSubmitJobs/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsSubmitJobs/config.xml deleted file mode 100644 index 4bc26f549a..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/AnalyticsSubmitJobs/config.xml +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - pause_min - <font color=teal size=2>Pause for # of minutes.</font> - 5 - false - - - - - - false - project - false - - 1 - - - - - 2 - - - https://github.com/project-sunbird/sunbird-data-pipeline.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - pipelines/deploy/submit-jobs/Jenkinsfile - false - - - true - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/CassandraDbUpdate/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/CassandraDbUpdate/config.xml deleted file mode 100644 index 18e57478a9..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/CassandraDbUpdate/config.xml +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - 0 - 0 - - false - project - false - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-data-pipeline.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 1 - false - - - - pipelines/deploy/cassandra/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/DataProducts/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/DataProducts/config.xml deleted file mode 100644 index 8555c74ae3..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/DataProducts/config.xml +++ /dev/null @@ -1,170 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - absolute_job_path - <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> - ArtifactUpload/dev/DataPipeline/Analytics - false - - - artifact_source - <font color=black size=2><b> -ArtifactRepo - Download the artifact from azure blob, JenkinsJob - Use the atrifact from Jenkins job.</b></font> - choice-parameter-9061667106947 - 1 - - false - - - - false - - - DataProducts - - - PT_SINGLE_SELECT - false - 1 - - - build_number - - choice-parameter-9061670571657 - 1 - - false - - - - false - - - DataProducts - - artifact_source - ET_FORMATTED_HTML - true - - - artifact_version - - choice-parameter-9061673103864 - 1 - - false - - - - false - - - DataProducts - - artifact_source - ET_FORMATTED_HTML - true - - - - - 0 - 0 - - false - project - false - - - - - - - ArtifactUpload/dev/DataPipeline/Analytics - - SUCCESS - 0 - BLUE - true - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-data-pipeline.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - pipelines/deploy/data-products/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/KafkaIndexer/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/KafkaIndexer/config.xml deleted file mode 100644 index 9e446e5f2a..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/KafkaIndexer/config.xml +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - 0 - 0 - - false - project - false - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-data-pipeline.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 1 - false - - - - pipelines/deploy/kafka-indexer/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/KafkaSetup/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/KafkaSetup/config.xml deleted file mode 100644 index daa463c469..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/KafkaSetup/config.xml +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - 0 - 0 - - false - project - false - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-data-pipeline.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 1 - false - - - - pipelines/deploy/kafka/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/Monitoring/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/Monitoring/config.xml deleted file mode 100644 index c17fd285d9..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/Monitoring/config.xml +++ /dev/null @@ -1,74 +0,0 @@ - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - 0 - 0 - - false - project - false - - - - - - - ../Core/Monitoring - - FAILURE - 2 - RED - true - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 1 - false - - - - pipelines/deploy/monitor/DataPipeline/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/SamzaTelemetrySchemas/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/SamzaTelemetrySchemas/config.xml deleted file mode 100644 index 0aca8d3e75..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/SamzaTelemetrySchemas/config.xml +++ /dev/null @@ -1,77 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - schema_repo_version - <font color=black size=2><b>Specify the scehma repo version.</b></font> - ${public_repo_branch} - false - - - - - 0 - 0 - - false - project - false - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-data-pipeline.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - pipelines/deploy/samza-telemetry-schemas/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/Secor/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/Secor/config.xml deleted file mode 100644 index c6280e1462..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/Secor/config.xml +++ /dev/null @@ -1,170 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - absolute_job_path - <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> - ArtifactUpload/dev/DataPipeline/Secor - false - - - artifact_source - <font color=black size=2><b> -ArtifactRepo - Download the artifact from azure blob, JenkinsJob - Use the atrifact from Jenkins job.</b></font> - choice-parameter-9061667106947 - 1 - - false - - - - false - - - Secor - - - PT_SINGLE_SELECT - false - 1 - - - build_number - - choice-parameter-9061670571657 - 1 - - false - - - - false - - - Secor - - artifact_source - ET_FORMATTED_HTML - true - - - artifact_version - - choice-parameter-9061673103864 - 1 - - false - - - - false - - - Secor - - artifact_source - ET_FORMATTED_HTML - true - - - - - 0 - 0 - - false - project - false - - - - - - - ArtifactUpload/dev/DataPipeline/Secor - - SUCCESS - 0 - BLUE - true - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-data-pipeline.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 1 - false - - - - pipelines/deploy/secor/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/Yarn/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/Yarn/config.xml deleted file mode 100644 index 5b03ff4cb6..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/DataPipeline/jobs/Yarn/config.xml +++ /dev/null @@ -1,170 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - absolute_job_path - <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> - ArtifactUpload/dev/DataPipeline/DataPipeline - false - - - artifact_source - <font color=black size=2><b> -ArtifactRepo - Download the artifact from azure blob, JenkinsJob - Use the atrifact from Jenkins job.</b></font> - choice-parameter-9061667106947 - 1 - - false - - - - false - - - Yarn - - - PT_SINGLE_SELECT - false - 1 - - - build_number - - choice-parameter-9061670571657 - 1 - - false - - - - false - - - Yarn - - artifact_source - ET_FORMATTED_HTML - true - - - artifact_version - - choice-parameter-9061673103864 - 1 - - false - - - - false - - - Yarn - - artifact_source - ET_FORMATTED_HTML - true - - - - - 0 - 0 - - false - project - false - - - - - - - ArtifactUpload/dev/DataPipeline/DataPipeline - - SUCCESS - 0 - BLUE - true - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-data-pipeline.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 1 - false - - - - pipelines/deploy/yarn/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/config.xml deleted file mode 100644 index 68477b8ac7..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/config.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - - - - - - All - false - false - - - - - - - - false - - - - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/CassandraDbUpdate/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/CassandraDbUpdate/config.xml deleted file mode 100644 index 5109183f59..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/CassandraDbUpdate/config.xml +++ /dev/null @@ -1,70 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - 0 - 0 - - false - project - false - - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-learning-platform.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 1 - false - - - - pipelines/deploy/cassandra/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/ContentTool/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/ContentTool/config.xml deleted file mode 100644 index d4b296559d..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/ContentTool/config.xml +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - absolute_job_path - <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> - ArtifactUpload/dev/KnowledgePlatform/KnowledgePlatform - false - - - command - <font color=black size=2><b>Enter the command.</b></font> - sync - false - - - parameters - <font color=black size=2><b>Enter the do id.</b></font> - - false - - - - - 0 - 0 - - false - project - false - - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-learning-platform.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 1 - false - - - - pipelines/deploy/content_tool/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/FileSyncTool/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/FileSyncTool/config.xml deleted file mode 100644 index 5c730b9381..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/FileSyncTool/config.xml +++ /dev/null @@ -1,83 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - absolute_job_path - <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> - ArtifactUpload/dev/KnowledgePlatform/Synctool - false - - - filename - <font color=black size=2><b>Enter valid filename with extention.</b></font> - - false - - - - - 0 - 0 - - false - project - false - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-learning-platform.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - pipelines/deploy/file-sync-tool/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/KafkaSetup/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/KafkaSetup/config.xml deleted file mode 100644 index 9271927d86..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/KafkaSetup/config.xml +++ /dev/null @@ -1,70 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - 0 - 0 - - false - project - false - - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-learning-platform.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - pipelines/deploy/kafka-setup/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Learning/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Learning/config.xml deleted file mode 100644 index 1bb8dee30b..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Learning/config.xml +++ /dev/null @@ -1,170 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - absolute_job_path - <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> - ArtifactUpload/dev/KnowledgePlatform/KnowledgePlatform - false - - - artifact_source - <font color=black size=2><b> -ArtifactRepo - Download the artifact from azure blob, JenkinsJob - Use the atrifact from Jenkins job.</b></font> - choice-parameter-12566219493457 - 1 - - false - - - - false - - - Learning - - - PT_SINGLE_SELECT - false - 1 - - - build_number - - choice-parameter-12566221440336 - 1 - - false - - - - false - - - Learning - - artifact_source - ET_FORMATTED_HTML - true - - - artifact_version - - choice-parameter-12566223395914 - 1 - - false - - - - false - - - Learning - - artifact_source - ET_FORMATTED_HTML - true - - - - - 0 - 0 - - false - project - false - - - - - - - ArtifactUpload/dev/KnowledgePlatform/KnowledgePlatform - - SUCCESS - 0 - BLUE - true - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-learning-platform.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - pipelines/deploy/learning/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Monitoring/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Monitoring/config.xml deleted file mode 100644 index 7ddf1d3e35..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Monitoring/config.xml +++ /dev/null @@ -1,72 +0,0 @@ - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - false - project - false - - - - - - - ../DataPipeline/Monitoring - - FAILURE - 2 - RED - true - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - pipelines/deploy/monitor/KnowledgePlatform/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4j/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4j/config.xml deleted file mode 100644 index 25b009260b..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4j/config.xml +++ /dev/null @@ -1,159 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - absolute_job_path - <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> - ArtifactUpload/dev/KnowledgePlatform/Neo4j - false - - - artifact_source - <font color=black size=2><b> -ArtifactRepo - Download the artifact from azure blob, JenkinsJob - Use the atrifact from Jenkins job.</b></font> - choice-parameter-13436883643465 - 1 - - false - - - - false - - - Neo4j - - - PT_SINGLE_SELECT - false - 1 - - - build_number - - choice-parameter-13436885688258 - 1 - - false - - - - false - - - Neo4j - - artifact_source - ET_FORMATTED_HTML - true - - - artifact_version - - choice-parameter-13436888536349 - 1 - - false - - - - false - - - Neo4j - - artifact_source - ET_FORMATTED_HTML - true - - - - - 0 - 0 - - false - project - false - - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-learning-platform.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - pipelines/deploy/neo4j/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4jDefinitionUpdate/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4jDefinitionUpdate/config.xml deleted file mode 100644 index 8eaf214ccc..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4jDefinitionUpdate/config.xml +++ /dev/null @@ -1,68 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - false - project - false - - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-learning-platform.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - pipelines/deploy/neo4j-definition-update/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4jElasticSearchSyncTool/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4jElasticSearchSyncTool/config.xml deleted file mode 100644 index 277ab59d96..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4jElasticSearchSyncTool/config.xml +++ /dev/null @@ -1,184 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - absolute_job_path - <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> - ArtifactUpload/dev/KnowledgePlatform/SyncTool - false - - - artifact_source - <font color=black size=2><b> -ArtifactRepo - Download the artifact from azure blob, JenkinsJob - Use the atrifact from Jenkins job.</b></font> - choice-parameter-14175006770414 - 1 - - false - - - - false - - - Neo4jElasticSearchSyncTool - - - PT_SINGLE_SELECT - false - 1 - - - build_number - - choice-parameter-14175008677110 - 1 - - false - - - - false - - - Neo4jElasticSearchSyncTool - - artifact_source - ET_FORMATTED_HTML - true - - - artifact_version - - choice-parameter-14175010584707 - 1 - - false - - - - false - - - Neo4jElasticSearchSyncTool - - artifact_source - ET_FORMATTED_HTML - true - - - command - <font color=black size=2><b>Select a command</b></font> - - - sync - syncbyobjecttype - syncbyids - syncbydaterange - - - - - parameters - <font color=black size=2><b>It is parameter to pass with command.<br> - ex:<br> - --objectType Content<br> - --ids do_10101010,do_20202020<br> - --startDate 2018-03-01 --endDate 2018-03-31<br> - --objectType Content --startDate 2018-03-01 --endDate 2018-03-31<br> - --graphId en --objectType Word<br> - --graph domain --objectType Channel<br></b></font> - --graph domain - false - - - - - 0 - 0 - - false - project - false - - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-learning-platform.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - pipelines/deploy/neo4j-es-synctool/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Search/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Search/config.xml deleted file mode 100644 index d1ef2ccb91..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Search/config.xml +++ /dev/null @@ -1,170 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - absolute_job_path - <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> - ArtifactUpload/dev/KnowledgePlatform/KnowledgePlatform - false - - - artifact_source - <font color=black size=2><b> -ArtifactRepo - Download the artifact from azure blob, JenkinsJob - Use the atrifact from Jenkins job.</b></font> - choice-parameter-14760318274338 - 1 - - false - - - - false - - - Search - - - PT_SINGLE_SELECT - false - 1 - - - build_number - - choice-parameter-14760320375443 - 1 - - false - - - - false - - - Search - - artifact_source - ET_FORMATTED_HTML - true - - - artifact_version - - choice-parameter-14760322347747 - 1 - - false - - - - false - - - Search - - artifact_source - ET_FORMATTED_HTML - true - - - - - 0 - 0 - - false - project - false - - - - - - - ArtifactUpload/dev/KnowledgePlatform/KnowledgePlatform - - SUCCESS - 0 - BLUE - true - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-learning-platform.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - pipelines/deploy/search/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/StartNeo4jCluster/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/StartNeo4jCluster/config.xml deleted file mode 100644 index 9385b056ff..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/StartNeo4jCluster/config.xml +++ /dev/null @@ -1,70 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - 0 - 0 - - false - project - false - - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-learning-platform.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - pipelines/deploy/neo4j-start-cluster/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/StopNeo4jCluster/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/StopNeo4jCluster/config.xml deleted file mode 100644 index fadcb50b63..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/StopNeo4jCluster/config.xml +++ /dev/null @@ -1,70 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - 0 - 0 - - false - project - false - - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-learning-platform.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 1 - false - - - - pipelines/deploy/neo4j-stop-cluster/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/ValidateLearning/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/ValidateLearning/config.xml deleted file mode 100644 index 599982859e..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/ValidateLearning/config.xml +++ /dev/null @@ -1,68 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - false - project - false - - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-learning-platform.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - pipelines/deploy/validate-learning/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Yarn/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Yarn/config.xml deleted file mode 100644 index 880c93ef59..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/KnowledgePlatform/jobs/Yarn/config.xml +++ /dev/null @@ -1,170 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - absolute_job_path - <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> - ArtifactUpload/dev/KnowledgePlatform/Yarn - false - - - artifact_source - <font color=black size=2><b> -ArtifactRepo - Download the artifact from azure blob, JenkinsJob - Use the atrifact from Jenkins job.</b></font> - choice-parameter-2874232768088857 - 1 - - false - - - - false - - - Yarn - - - PT_SINGLE_SELECT - false - 1 - - - build_number - - choice-parameter-2874449088885218 - 1 - - false - - - - false - - - Yarn - - artifact_source - ET_FORMATTED_HTML - true - - - artifact_version - - choice-parameter-2877900313772031 - 1 - - false - - - - false - - - Yarn - - artifact_source - ET_FORMATTED_HTML - true - - - - - 0 - 0 - - false - project - false - - - - - - - ArtifactUpload/dev/KnowledgePlatform/Yarn - - SUCCESS - 0 - BLUE - true - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-learning-platform.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - pipelines/deploy/yarn/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Plugins/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Plugins/config.xml deleted file mode 100644 index 68477b8ac7..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Plugins/config.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - - - - - - All - false - false - - - - - - - - false - - - - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Plugins/jobs/CEPlugins/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Plugins/jobs/CEPlugins/config.xml deleted file mode 100644 index 53ae131d1d..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Plugins/jobs/CEPlugins/config.xml +++ /dev/null @@ -1,161 +0,0 @@ - - - - - false - - - - false - false - - - - - absolute_job_path - <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> - ArtifactUpload/dev/Plugins/CEPlugins - false - - - container_name - <font color=black size=2><b>Please specify azure container name.</b></font> - plugins - false - - - artifact_source - <font color=black size=2><b> -ArtifactRepo - Download the artifact from azure blob, JenkinsJob - Use the atrifact from Jenkins job.</b></font> - choice-parameter-620062284617427 - 1 - - false - - - - false - - - CEPlugins - - - PT_SINGLE_SELECT - false - 1 - - - build_number - - choice-parameter-620062286335119 - 1 - - false - - - - false - - - CEPlugins - - artifact_source - ET_FORMATTED_HTML - true - - - artifact_version - - choice-parameter-620062288387509 - 1 - - false - - - - false - - - CEPlugins - - artifact_source - ET_FORMATTED_HTML - true - - - - - 0 - 0 - - false - project - false - - - - - - - ArtifactUpload/dev/Plugins/CEPlugins - - SUCCESS - 0 - BLUE - true - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - pipelines/deploy/CEPlugins/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Plugins/jobs/CollectionEditor/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Plugins/jobs/CollectionEditor/config.xml deleted file mode 100644 index e097c5284a..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Plugins/jobs/CollectionEditor/config.xml +++ /dev/null @@ -1,161 +0,0 @@ - - - - - false - - - - false - false - - - - - absolute_job_path - <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> - ArtifactUpload/dev/Plugins/CollectionEditor - false - - - container_name - <font color=black size=2><b>Please specify azure container name.</b></font> - plugins - false - - - artifact_source - <font color=black size=2><b> -ArtifactRepo - Download the artifact from azure blob, JenkinsJob - Use the atrifact from Jenkins job.</b></font> - choice-parameter-620062284617427 - 1 - - false - - - - false - - - CollectionEditor - - - PT_SINGLE_SELECT - false - 1 - - - build_number - - choice-parameter-620062286335119 - 1 - - false - - - - false - - - CollectionEditor - - artifact_source - ET_FORMATTED_HTML - true - - - artifact_version - - choice-parameter-620062288387509 - 1 - - false - - - - false - - - CollectionEditor - - artifact_source - ET_FORMATTED_HTML - true - - - - - 0 - 0 - - false - project - false - - - - - - - ArtifactUpload/dev/Plugins/CollectionEditor - - SUCCESS - 0 - BLUE - true - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - pipelines/deploy/CollectionEditor/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Plugins/jobs/ContentFramework/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Plugins/jobs/ContentFramework/config.xml deleted file mode 100644 index 6103ba6445..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Plugins/jobs/ContentFramework/config.xml +++ /dev/null @@ -1,161 +0,0 @@ - - - - - false - - - - false - false - - - - - absolute_job_path - <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> - ArtifactUpload/dev/Plugins/ContentFramework - false - - - container_name - <font color=black size=2><b>Please specify azure container name.</b></font> - plugins - false - - - artifact_source - <font color=black size=2><b> -ArtifactRepo - Download the artifact from azure blob, JenkinsJob - Use the atrifact from Jenkins job.</b></font> - choice-parameter-620062284617427 - 1 - - false - - - - false - - - ContentFramework - - - PT_SINGLE_SELECT - false - 1 - - - build_number - - choice-parameter-620062286335119 - 1 - - false - - - - false - - - ContentFramework - - artifact_source - ET_FORMATTED_HTML - true - - - artifact_version - - choice-parameter-620062288387509 - 1 - - false - - - - false - - - ContentFramework - - artifact_source - ET_FORMATTED_HTML - true - - - - - 0 - 0 - - false - project - false - - - - - - - ArtifactUpload/dev/Plugins/ContentFramework - - SUCCESS - 0 - BLUE - true - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - pipelines/deploy/ContentFramework/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Plugins/jobs/ContentRendererPreview/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Plugins/jobs/ContentRendererPreview/config.xml deleted file mode 100644 index d25ae64586..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Plugins/jobs/ContentRendererPreview/config.xml +++ /dev/null @@ -1,161 +0,0 @@ - - - - - false - - - - false - false - - - - - absolute_job_path - <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> - ArtifactUpload/dev/Plugins/ContentRendererPreview - false - - - container_name - <font color=black size=2><b>Please specify azure container name.</b></font> - plugins - false - - - artifact_source - <font color=black size=2><b> -ArtifactRepo - Download the artifact from azure blob, JenkinsJob - Use the atrifact from Jenkins job.</b></font> - choice-parameter-620062284617427 - 1 - - false - - - - false - - - ContentRendererPreview - - - PT_SINGLE_SELECT - false - 1 - - - build_number - - choice-parameter-620062286335119 - 1 - - false - - - - false - - - ContentRendererPreview - - artifact_source - ET_FORMATTED_HTML - true - - - artifact_version - - choice-parameter-620062288387509 - 1 - - false - - - - false - - - ContentRendererPreview - - artifact_source - ET_FORMATTED_HTML - true - - - - - 0 - 0 - - false - project - false - - - - - - - ArtifactUpload/dev/Plugins/ContentRendererPreview - - SUCCESS - 0 - BLUE - true - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - pipelines/deploy/ContentRendererPreview/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Plugins/jobs/GenericEditor/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Plugins/jobs/GenericEditor/config.xml deleted file mode 100644 index 2fc9a8360b..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Plugins/jobs/GenericEditor/config.xml +++ /dev/null @@ -1,161 +0,0 @@ - - - - - false - - - - false - false - - - - - absolute_job_path - <font color=black size=2><b>Do not change this value! The metadata.json will be copied from this job.</b></font> - ArtifactUpload/dev/Plugins/GenericEditor - false - - - container_name - <font color=black size=2><b>Please specify azure container name.</b></font> - plugins - false - - - artifact_source - <font color=black size=2><b> -ArtifactRepo - Download the artifact from azure blob, JenkinsJob - Use the atrifact from Jenkins job.</b></font> - choice-parameter-620062284617427 - 1 - - false - - - - false - - - GenericEditor - - - PT_SINGLE_SELECT - false - 1 - - - build_number - - choice-parameter-620062286335119 - 1 - - false - - - - false - - - GenericEditor - - artifact_source - ET_FORMATTED_HTML - true - - - artifact_version - - choice-parameter-620062288387509 - 1 - - false - - - - false - - - GenericEditor - - artifact_source - ET_FORMATTED_HTML - true - - - - - 0 - 0 - - false - project - false - - - - - - - ArtifactUpload/dev/Plugins/GenericEditor - - SUCCESS - 0 - BLUE - true - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - pipelines/deploy/GenericEditor/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Summary/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Summary/config.xml deleted file mode 100644 index 68477b8ac7..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Summary/config.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - - - - - - All - false - false - - - - - - - - false - - - - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Summary/jobs/DeployedVersions/config.xml b/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Summary/jobs/DeployedVersions/config.xml deleted file mode 100644 index dcbd83390e..0000000000 --- a/deploy/jenkins/jobs/Deploy/jobs/dev/jobs/Summary/jobs/DeployedVersions/config.xml +++ /dev/null @@ -1,74 +0,0 @@ - - - - - false - - - - -1 - -1 - -1 - 10 - - - - - false - false - - - 0 - 0 - - false - project - false - - - - - - - Deploy/dev/Core/Content,Deploy/dev/Core/Player,Deploy/dev/Core/Learner,Deploy/dev/Core/Telemetry,Deploy/dev/Core/Proxy,Deploy/dev/KnowledgePlatform/Search,Deploy/dev/KnowledgePlatform/Learning,Deploy/dev/KnowledgePlatform/Yarn,Deploy/dev/DataPipeline/Secor,Deploy/dev/DataPipeline/Yarn,Deploy/dev/DataPipeline/AnalyticsAPI,Deploy/dev/DataPipeline/DataProducts - - SUCCESS - 0 - BLUE - true - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops.git - - - - - final-variable-refac - - - false - - - - true - false - - 0 - false - - - - pipelines/summary/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/config.xml b/deploy/jenkins/jobs/OpsAdministration/config.xml deleted file mode 100644 index 68477b8ac7..0000000000 --- a/deploy/jenkins/jobs/OpsAdministration/config.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - - - - - - All - false - false - - - - - - - - false - - - - \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/config.xml deleted file mode 100644 index 6fe3ca0b64..0000000000 --- a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/config.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - - - - - - All - false - false - - - - - - - - false - - - - \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/config.xml deleted file mode 100644 index 68477b8ac7..0000000000 --- a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/config.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - - - - - - All - false - false - - - - - - - - false - - - - \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/ApplicationElasticsearchBackup/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/ApplicationElasticsearchBackup/config.xml deleted file mode 100644 index ff31ba71a6..0000000000 --- a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/ApplicationElasticsearchBackup/config.xml +++ /dev/null @@ -1,50 +0,0 @@ - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - false - - - - pipelines/backup/es-backup/Jenkinsfile - false - - - false - diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/ApplicationElasticsearchRestore/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/ApplicationElasticsearchRestore/config.xml deleted file mode 100644 index 71f6ef2c8c..0000000000 --- a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/ApplicationElasticsearchRestore/config.xml +++ /dev/null @@ -1,50 +0,0 @@ - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - false - - - - pipelines/backup/es-restore/Jenkinsfile - false - - - false - diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/Bootstrap/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/Bootstrap/config.xml deleted file mode 100644 index 8e9ca19f1a..0000000000 --- a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/Bootstrap/config.xml +++ /dev/null @@ -1,75 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - hosts - <font color=teal size=2>enter the host name to be bootstrapped.</font> - core - false - - - - - - false - project - false - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - pipelines/bootstrap/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/CassandraBackup/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/CassandraBackup/config.xml deleted file mode 100644 index 7bbf214a5a..0000000000 --- a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/CassandraBackup/config.xml +++ /dev/null @@ -1,50 +0,0 @@ - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - false - - - - pipelines/backup/cassandra-backup/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/KeyRotation/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/KeyRotation/config.xml deleted file mode 100644 index b42a47c733..0000000000 --- a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/KeyRotation/config.xml +++ /dev/null @@ -1,94 +0,0 @@ - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - bootstrap_user - deployer user - deployer - false - - - bootstrap_user_public_key - Deployer user public key keep in single quotes - - false - - - ssh_user - ops user - ops - false - - - ssh_private_file - location of ssh key for ops user from '/' - - false - - - ssh_public_key - ops public key - - false - - - - - 0 - 0 - - false - project - false - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - pipelines/bootstrap/Jenkinsfile.rotatekey - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/LoggerElasticSearchBackup/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/LoggerElasticSearchBackup/config.xml deleted file mode 100644 index 1b26809438..0000000000 --- a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/LoggerElasticSearchBackup/config.xml +++ /dev/null @@ -1,50 +0,0 @@ - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - false - - - - pipelines/backup/logger-es-backup/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/LoggerElasticSearchRestore/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/LoggerElasticSearchRestore/config.xml deleted file mode 100644 index 155b4a90aa..0000000000 --- a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/LoggerElasticSearchRestore/config.xml +++ /dev/null @@ -1,50 +0,0 @@ - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - false - - - - pipelines/backup/logger-es-restore/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/PostgresqlBackup/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/PostgresqlBackup/config.xml deleted file mode 100644 index faa94b00f2..0000000000 --- a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/PostgresqlBackup/config.xml +++ /dev/null @@ -1,51 +0,0 @@ - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - pipelines/backup/postgresql-backup/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/PostgresqlRestore/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/PostgresqlRestore/config.xml deleted file mode 100644 index 9ad72ff266..0000000000 --- a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/PostgresqlRestore/config.xml +++ /dev/null @@ -1,51 +0,0 @@ - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - pipelines/backup/postgresql-restore/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/PrometheusBackup/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/PrometheusBackup/config.xml deleted file mode 100644 index 8e757f82b7..0000000000 --- a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/PrometheusBackup/config.xml +++ /dev/null @@ -1,50 +0,0 @@ - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - false - - - - pipelines/backup/prometheus-backup/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/SwarmBootstrap/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/SwarmBootstrap/config.xml deleted file mode 100644 index cec50282af..0000000000 --- a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/Core/jobs/SwarmBootstrap/config.xml +++ /dev/null @@ -1,50 +0,0 @@ - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - false - - - - pipelines/bootstrap-swarm/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/config.xml deleted file mode 100644 index 68477b8ac7..0000000000 --- a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/config.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - - - - - - All - false - false - - - - - - - - false - - - - \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/AnalyticsAPILogs/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/AnalyticsAPILogs/config.xml deleted file mode 100644 index c89f254ee1..0000000000 --- a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/AnalyticsAPILogs/config.xml +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - 2 - - - https://github.com/ekstep/sunbird-devops.git - 64bdfe13-cc30-4864-bd3c-4e89be89fc9d - - - - - DO-380 - - - false - - - - pipelines/analytics-api-logs/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/Bootstrap/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/Bootstrap/config.xml deleted file mode 100644 index df91bff4cc..0000000000 --- a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/Bootstrap/config.xml +++ /dev/null @@ -1,60 +0,0 @@ - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - hosts - <font color=teal size=2>enter the host name to be bootstrapped.</font> - dp - false - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-data-pipeline.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - false - - - - pipelines/bootstrap/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/CassandraBackup/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/CassandraBackup/config.xml deleted file mode 100644 index 8b27f18cbc..0000000000 --- a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/CassandraBackup/config.xml +++ /dev/null @@ -1,81 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - remote - <font color=teal size=2>enter the host name.</font> - cassandra - false - - - data_dir - <font color=teal size=2>enter cassandra data directory.</font> - /var/lib/cassandra/data - false - - - - - - false - project - false - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-data-pipeline.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - pipelines/backup/cassandra-backup/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/CassandraRestore/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/CassandraRestore/config.xml deleted file mode 100644 index b4c7ea72a1..0000000000 --- a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/CassandraRestore/config.xml +++ /dev/null @@ -1,74 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - remote - <font color=teal size=2>enter the host name.</font> - cassandra - false - - - artifact_version - <font color=teal size=2>Specify the artifact version to restore</font> - - false - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-data-pipeline.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - pipelines/backup/cassandra-restore/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/ElasticsearchBackup/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/ElasticsearchBackup/config.xml deleted file mode 100644 index 3f12269864..0000000000 --- a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/ElasticsearchBackup/config.xml +++ /dev/null @@ -1,75 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - remote - <font color=teal size=2>enter any one host name or ip if it is a cluster</font> - - false - - - - - - false - project - false - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-data-pipeline.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - pipelines/backup/elasticsearch-backup/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/ElasticsearchRestore/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/ElasticsearchRestore/config.xml deleted file mode 100644 index 311d76650a..0000000000 --- a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/ElasticsearchRestore/config.xml +++ /dev/null @@ -1,75 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - host - <font color=teal size=2>enter any one host name or ip if it is a cluster</font> - - false - - - SNAPSHOT_NUMBER - <font color=teal size=2>Enter Snapshot number to restore. -curl command to get snapshot number: -curl http://localhost:9200/_snapshot/azurebackup/_all, Parse the json and get the valid snapshot number to restore</font> - - false - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-data-pipeline.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - false - - - - pipelines/backup/elasticsearch-restore/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/InfluxDBBackup/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/InfluxDBBackup/config.xml deleted file mode 100644 index 7723d1b63d..0000000000 --- a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/InfluxDBBackup/config.xml +++ /dev/null @@ -1,65 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - false - project - false - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-data-pipeline.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - pipelines/backup/influxdb-backup/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/PostgresqlBackup/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/PostgresqlBackup/config.xml deleted file mode 100644 index 018f24c55b..0000000000 --- a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/PostgresqlBackup/config.xml +++ /dev/null @@ -1,51 +0,0 @@ - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - 2 - - - https://github.com/project-sunbird/sunbird-data-pipeline.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - pipelines/backup/postgresql-backup/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/PostgresqlRestore/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/PostgresqlRestore/config.xml deleted file mode 100644 index 6516c5daf1..0000000000 --- a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/DataPipeline/jobs/PostgresqlRestore/config.xml +++ /dev/null @@ -1,51 +0,0 @@ - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - 2 - - - https://github.com/project-sunbird/sunbird-data-pipeline.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - pipelines/backup/postgresql-restore/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/KnowledgePlatform/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/KnowledgePlatform/config.xml deleted file mode 100644 index 6fe3ca0b64..0000000000 --- a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/KnowledgePlatform/config.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - - - - - - All - false - false - - - - - - - - false - - - - \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/KnowledgePlatform/jobs/Bootstrap/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/KnowledgePlatform/jobs/Bootstrap/config.xml deleted file mode 100644 index 0e32e6c07a..0000000000 --- a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/KnowledgePlatform/jobs/Bootstrap/config.xml +++ /dev/null @@ -1,60 +0,0 @@ - - - - - false - - - - -1 - -1 - -1 - 5 - - - - false - false - - - - - hosts - <font color=teal size=2>enter the host name to be bootstrapped.</font> - lp - false - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-learning-platform.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - pipelines/bootstrap/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/KnowledgePlatform/jobs/CassandraBackup/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/KnowledgePlatform/jobs/CassandraBackup/config.xml deleted file mode 100644 index 37d9df3199..0000000000 --- a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/KnowledgePlatform/jobs/CassandraBackup/config.xml +++ /dev/null @@ -1,76 +0,0 @@ - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - remote - <font color=teal size=2>enter the host name.</font> - cassandra - false - - - data_dir - <font color=teal size=2>enter cassandra data directory.</font> - /var/lib/cassandra/data - false - - - - - 0 - 0 - - false - project - false - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-learning-platform.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - pipelines/backup/cassandra-backup/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/KnowledgePlatform/jobs/CassandraRestore/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/KnowledgePlatform/jobs/CassandraRestore/config.xml deleted file mode 100644 index 2e1f614b7d..0000000000 --- a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/KnowledgePlatform/jobs/CassandraRestore/config.xml +++ /dev/null @@ -1,67 +0,0 @@ - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - remote - <font color=teal size=2>enter the host name.</font> - cassandra - false - - - artifact_version - <font color=teal size=2>Specify the artifact version to restore</font> - - false - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-learning-platform.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - pipelines/backup/cassandra-restore/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/KnowledgePlatform/jobs/ElasticsearchBackup/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/KnowledgePlatform/jobs/ElasticsearchBackup/config.xml deleted file mode 100644 index dff07e183b..0000000000 --- a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/KnowledgePlatform/jobs/ElasticsearchBackup/config.xml +++ /dev/null @@ -1,52 +0,0 @@ - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - 0 - 0 - - false - project - false - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-learning-platform.git - - - - - ${public_repo_branch} - - - false - - - - pipelines/backup/elasticsearch/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/KnowledgePlatform/jobs/ElasticsearchRestore/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/KnowledgePlatform/jobs/ElasticsearchRestore/config.xml deleted file mode 100644 index 76be767bbb..0000000000 --- a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/KnowledgePlatform/jobs/ElasticsearchRestore/config.xml +++ /dev/null @@ -1,61 +0,0 @@ - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - host - <font color=teal size=2>enter any one host name or ip if it is a cluster</font> - - false - - - SNAPSHOT_NUMBER - <font color=teal size=2>Enter Snapshot number to restore. -curl command to get snapshot number: -curl http://localhost:9200/_snapshot/azurebackup/_all, Parse the json and get the valid snapshot number to restore</font> - - false - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-learning-platform.git - - - - - ${public_repo_branch} - - - false - - - - pipelines/backup/elasticsearch-restore/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4jBackup/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4jBackup/config.xml deleted file mode 100644 index 6822d1ba51..0000000000 --- a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4jBackup/config.xml +++ /dev/null @@ -1,60 +0,0 @@ - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - 0 - 0 - - false - project - false - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-learning-platform.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - pipelines/backup/neo4j/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4jRestore/config.xml b/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4jRestore/config.xml deleted file mode 100644 index a8fada98db..0000000000 --- a/deploy/jenkins/jobs/OpsAdministration/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4jRestore/config.xml +++ /dev/null @@ -1,74 +0,0 @@ - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - neo4j_restore_gzip_file_name - - - false - - - hosts - - - false - - - - - - false - project - false - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-learning-platform.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - pipelines/backup/neo4j-restore/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/config.xml b/deploy/jenkins/jobs/Provision/config.xml deleted file mode 100644 index 68477b8ac7..0000000000 --- a/deploy/jenkins/jobs/Provision/config.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - - - - - - All - false - false - - - - - - - - false - - - - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/config.xml deleted file mode 100644 index 6fe3ca0b64..0000000000 --- a/deploy/jenkins/jobs/Provision/jobs/dev/config.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - - - - - - All - false - false - - - - - - - - false - - - - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/config.xml deleted file mode 100644 index 68477b8ac7..0000000000 --- a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/config.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - - - - - - All - false - false - - - - - - - - false - - - - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Cassandra/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Cassandra/config.xml deleted file mode 100644 index ff598501a7..0000000000 --- a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Cassandra/config.xml +++ /dev/null @@ -1,58 +0,0 @@ - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - false - project - false - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - pipelines/provision/cassandra/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/JenkinsSlave/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/JenkinsSlave/config.xml deleted file mode 100644 index 4e632379e4..0000000000 --- a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/JenkinsSlave/config.xml +++ /dev/null @@ -1,70 +0,0 @@ - - - - <font color=red size=2><b>This jobs is currently disabled as it's not being used.</b></font> - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - jenkins_host - <font color=black size=2><b>Provide the IP of Jenkins host.</b></font> - - false - - - - - 0 - 0 - - false - project - false - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - pipelines/provision/jenkins-slave/Jenkinsfile - false - - - true - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Kafka/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Kafka/config.xml deleted file mode 100644 index d78cd9a248..0000000000 --- a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Kafka/config.xml +++ /dev/null @@ -1,58 +0,0 @@ - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - false - project - false - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops.git - - - - - {public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - pipelines/provision/kafka/Jenkinsfile - false - - - true - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Keycloak/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Keycloak/config.xml deleted file mode 100644 index fcc171f960..0000000000 --- a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Keycloak/config.xml +++ /dev/null @@ -1,65 +0,0 @@ - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - false - project - false - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - true - false - - 0 - false - - - - pipelines/provision/keycloak/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/LogElasticSearch/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/LogElasticSearch/config.xml deleted file mode 100644 index 31388c0319..0000000000 --- a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/LogElasticSearch/config.xml +++ /dev/null @@ -1,50 +0,0 @@ - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - false - - - - pipelines/provision/log-es/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Postgres/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Postgres/config.xml deleted file mode 100644 index 3b3747b527..0000000000 --- a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Postgres/config.xml +++ /dev/null @@ -1,50 +0,0 @@ - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - false - - - - pipelines/provision/postgres/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/PostgresDbUpdate/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/PostgresDbUpdate/config.xml deleted file mode 100644 index 48928e45f2..0000000000 --- a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/PostgresDbUpdate/config.xml +++ /dev/null @@ -1,50 +0,0 @@ - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - false - - - - pipelines/provision/postgres-db-update/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Registry/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Registry/config.xml deleted file mode 100644 index 0d74bd2f96..0000000000 --- a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Registry/config.xml +++ /dev/null @@ -1,58 +0,0 @@ - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - false - project - false - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - pipelines/provision/registry/Jenkinsfile - false - - - true - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Secor/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Secor/config.xml deleted file mode 100644 index cf74052977..0000000000 --- a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/Core/jobs/Secor/config.xml +++ /dev/null @@ -1,58 +0,0 @@ - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - false - project - false - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-devops.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - pipelines/provision/secor/Jenkinsfile - false - - - true - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/config.xml deleted file mode 100644 index 68477b8ac7..0000000000 --- a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/config.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - - - - - - All - false - false - - - - - - - - false - - - - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/AnalyticsAPI/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/AnalyticsAPI/config.xml deleted file mode 100644 index daeb780bbd..0000000000 --- a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/AnalyticsAPI/config.xml +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - 2 - - - https://github.com/project-sunbird/sunbird-data-pipeline.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - false - - - - pipelines/provision/analytics-api/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/AnalyticsSecor/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/AnalyticsSecor/config.xml deleted file mode 100644 index a0de40ab90..0000000000 --- a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/AnalyticsSecor/config.xml +++ /dev/null @@ -1,56 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - false - false - - - - - 2 - - - https://github.com/project-sunbird/sunbird-data-pipeline.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - false - - - - pipelines/provision/secor/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/AnalyticsSpark/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/AnalyticsSpark/config.xml deleted file mode 100644 index 9aea1868e4..0000000000 --- a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/AnalyticsSpark/config.xml +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - 2 - - - https://github.com/project-sunbird/sunbird-data-pipeline.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - false - - - - pipelines/provision/spark/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/Cassandra/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/Cassandra/config.xml deleted file mode 100644 index abfcd287fa..0000000000 --- a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/Cassandra/config.xml +++ /dev/null @@ -1,50 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - 2 - - - https://github.com/project-sunbird/sunbird-data-pipeline.git - - - - - ${public_repo_branch} - - - false - - - - pipelines/provision/cassandra/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/InfluxDB/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/InfluxDB/config.xml deleted file mode 100644 index d3dcbb10b8..0000000000 --- a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/InfluxDB/config.xml +++ /dev/null @@ -1,56 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - false - false - - - - - 2 - - - https://github.com/project-sunbird/sunbird-data-pipeline.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - false - - - - pipelines/provision/influxdb/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/Kafka/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/Kafka/config.xml deleted file mode 100644 index 6d92ec2f44..0000000000 --- a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/Kafka/config.xml +++ /dev/null @@ -1,65 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - false - project - false - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-data-pipeline.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - pipelines/provision/kafka/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/Kibana/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/Kibana/config.xml deleted file mode 100644 index 38316772f0..0000000000 --- a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/Kibana/config.xml +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - 2 - - - https://github.com/project-sunbird/sunbird-data-pipeline.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - false - - - - pipelines/provision/kibana/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/Postgres/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/Postgres/config.xml deleted file mode 100644 index 33e61fb3d7..0000000000 --- a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/Postgres/config.xml +++ /dev/null @@ -1,56 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - false - false - - - - - 2 - - - https://github.com/project-sunbird/sunbird-data-pipeline.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - false - - - - pipelines/provision/postgres-lpa/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/TelemetrySearch/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/TelemetrySearch/config.xml deleted file mode 100644 index b51b86935f..0000000000 --- a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/TelemetrySearch/config.xml +++ /dev/null @@ -1,65 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - false - project - false - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-data-pipeline.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - pipelines/provision/telemetry_elasticsearch/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/Yarn/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/Yarn/config.xml deleted file mode 100644 index 9bf7797e3c..0000000000 --- a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/Yarn/config.xml +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - 2 - - - https://github.com/project-sunbird/sunbird-data-pipeline - - - - - ${public_repo_branch} - - - false - - - - true - false - - false - - - - pipelines/provision/yarn/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/Zookeeper/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/Zookeeper/config.xml deleted file mode 100644 index a8b9cceb7f..0000000000 --- a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/DataPipeline/jobs/Zookeeper/config.xml +++ /dev/null @@ -1,64 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - false - false - - - - false - project - false - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-data-pipeline.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - pipelines/provision/zookeeper/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/config.xml deleted file mode 100644 index 68477b8ac7..0000000000 --- a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/config.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - - - - - - All - false - false - - - - - - - - false - - - - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Cassandra/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Cassandra/config.xml deleted file mode 100644 index a9a247e8d2..0000000000 --- a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Cassandra/config.xml +++ /dev/null @@ -1,61 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-learning-platform.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - pipelines/provision/cassandra/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/CompositeSearch/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/CompositeSearch/config.xml deleted file mode 100644 index 360f4f174a..0000000000 --- a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/CompositeSearch/config.xml +++ /dev/null @@ -1,61 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-learning-platform.git - - - - - ${public_repo_branch} - - - false - - - - true - true - - 0 - false - - - - pipelines/provision/composite-search/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Kafka/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Kafka/config.xml deleted file mode 100644 index 93354ef4c3..0000000000 --- a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Kafka/config.xml +++ /dev/null @@ -1,61 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-learning-platform.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - pipelines/provision/kafka/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Learning/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Learning/config.xml deleted file mode 100644 index bb374f354d..0000000000 --- a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Learning/config.xml +++ /dev/null @@ -1,68 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - false - project - false - - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-learning-platform.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - pipelines/provision/learning/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4j/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4j/config.xml deleted file mode 100644 index 68a62ccf6d..0000000000 --- a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Neo4j/config.xml +++ /dev/null @@ -1,61 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-learning-platform.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - pipelines/provision/neo4j/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Redis/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Redis/config.xml deleted file mode 100644 index cf7e9a532d..0000000000 --- a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Redis/config.xml +++ /dev/null @@ -1,61 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-learning-platform.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - pipelines/provision/redis/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Search/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Search/config.xml deleted file mode 100644 index 064d2fb01a..0000000000 --- a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Search/config.xml +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-learning-platform.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - false - - - - pipelines/provision/search/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Yarn/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Yarn/config.xml deleted file mode 100644 index fe08c83f03..0000000000 --- a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Yarn/config.xml +++ /dev/null @@ -1,68 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - false - project - false - - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-learning-platform.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - pipelines/provision/yarn/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Zookeeper/config.xml b/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Zookeeper/config.xml deleted file mode 100644 index 7c89cde9d5..0000000000 --- a/deploy/jenkins/jobs/Provision/jobs/dev/jobs/KnowledgePlatform/jobs/Zookeeper/config.xml +++ /dev/null @@ -1,61 +0,0 @@ - - - - - - hudson.model.ParametersDefinitionProperty - com.sonyericsson.rebuild.RebuildSettings - - - - - false - - - - -1 - -1 - -1 - 5 - - - - - false - false - - - - - - - - 2 - - - https://github.com/project-sunbird/sunbird-learning-platform.git - - - - - ${public_repo_branch} - - - false - - - - true - false - - 0 - false - - - - pipelines/provision/zookeeper/Jenkinsfile - false - - - false - \ No newline at end of file diff --git a/deploy/jenkins/plugins.txt b/deploy/jenkins/plugins.txt deleted file mode 100644 index a0c2347b9f..0000000000 --- a/deploy/jenkins/plugins.txt +++ /dev/null @@ -1,98 +0,0 @@ -junit@1.27 -workflow-basic-steps@2.14 -uno-choice@2.1 -workflow-step-api@2.19 -pam-auth@1.4 -jsch@0.1.55 -workflow-durable-task-step@2.29 -matrix-project@1.13 -docker-commons@1.13 -github-branch-source@2.4.2 -pipeline-model-api@1.3.4.1 -pipeline-rest-api@2.10 -lockable-resources@2.4 -pipeline-github-lib@1.0 -ws-cleanup@0.37 -pipeline-build-step@2.7 -conditional-buildstep@1.3.6 -durable-task@1.29 -pipeline-model-extensions@1.3.4.1 -jquery-ui@1.0.2 -htmlpublisher@1.18 -greenballs@1.15 -workflow-cps@2.63 -ssh-agent@1.17 -display-url-api@2.3.0 -structs@1.17 -workflow-api@2.33 -build-pipeline-plugin@1.5.8 -ansicolor@0.6.2 -ssh-credentials@1.14 -pipeline-milestone-step@1.3.1 -pipeline-graph-analysis@1.9 -token-macro@2.6 -github@1.29.4 -thinBackup@1.9 -github-api@1.95 -ldap@1.20 -pipeline-model-declarative-agent@1.1.1 -gradle@1.30 -plain-credentials@1.5 -workflow-support@3.2 -pipeline-model-definition@1.3.4.1 -matrix-auth@2.3 -run-condition@1.2 -windows-slaves@1.4 -build-name-setter@1.7.0 -jquery@1.12.4-0 -active-directory@2.12 -script-security@1.53 -credentials@2.1.18 -copyartifact@1.41 -throttle-concurrents@2.0.1 -workflow-multibranch@2.20 -ant@1.9 -branch-api@2.1.2 -email-ext@2.63 -role-strategy@2.10 -git@3.9.3 -ssh-slaves@1.29.4 -momentjs@1.1.1 -pipeline-stage-view@2.10 -apache-httpcomponents-client-4-api@4.5.5-3.0 -jdk-tool@1.2 -jackson2-api@2.9.8 -workflow-scm-step@2.7 -antisamy-markup-formatter@1.5 -credentials-binding@1.17 -docker-workflow@1.17 -ace-editor@1.1 -workflow-job@2.31 -scm-api@2.3.0 -bouncycastle-api@2.17 -authentication-tokens@1.3 -pipeline-input-step@2.9 -javadoc@1.4 -pipeline-stage-step@2.3 -mailer@1.23 -code-coverage-api@1.0.7 -handlebars@1.1.1 -git-server@1.7 -git-client@2.7.6 -command-launcher@1.3 -resource-disposer@0.12 -rebuild@1.29 -jquery-detached@1.2.1 -build-timeout@1.19 -workflow-aggregator@2.6 -external-monitor-job@1.7 -timestamper@1.9 -cloudbees-folder@6.7 -maven-plugin@3.2 -workflow-cps-global-lib@2.13 -dashboard-view@2.10 -cobertura@1.13 -parameterized-trigger@2.35.2 -pipeline-stage-tags-metadata@1.3.4.1 -jobConfigHistory@2.19 -audit-trail@2.4 diff --git a/deploy/utilities/kill_samza_app.sh b/deploy/utilities/kill_samza_app.sh deleted file mode 100644 index b46e18d1c4..0000000000 --- a/deploy/utilities/kill_samza_app.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/bash -# Author S M Y -# Kill All the Samza Jobs - -for id in $(/usr/local/hadoop/bin/yarn application --list | column -t | awk 'NR>2{print $1}' | tr "\n" " "); -do - echo "ID is $id" - /usr/local/hadoop/bin/yarn application -kill $id - sleep 1 -done -echo -e "\n--------------------------------------------------------------------------\n" -echo "The Overall status of yarn is as follows:" -/usr/local/hadoop/bin/yarn application --list | awk '{print $1 " " $2 " " $6 " " $7 " " $9}' | column -t diff --git a/images/openbadger/Jenkinsfile b/images/openbadger/Jenkinsfile deleted file mode 100644 index 54505a2a45..0000000000 --- a/images/openbadger/Jenkinsfile +++ /dev/null @@ -1,61 +0,0 @@ -node('build-slave') { - try { - String ANSI_GREEN = "\u001B[32m" - String ANSI_NORMAL = "\u001B[0m" - String ANSI_BOLD = "\u001B[1m" - String ANSI_RED = "\u001B[31m" - String ANSI_YELLOW = "\u001B[33m" - - if (params.size() == 0){ - properties([[$class: 'RebuildSettings', autoRebuild: false, rebuildDisabled: false], parameters([string(defaultValue: '', description: 'If you want to build from a tag, specify the tag name. If this parameter is blank, latest commit hash will be used to build', name: 'tag', trim: false)])]) - - ansiColor('xterm') { - println (ANSI_BOLD + ANSI_GREEN + '''\ - First run of the job. Parameters created. Stopping the current build. - Please trigger new build and provide parameters if required. - '''.stripIndent().replace("\n"," ") + ANSI_NORMAL) - } - return - } - - ansiColor('xterm') { - stage('Checkout') { - if (!env.hub_org) { - println(ANSI_BOLD + ANSI_RED + "Uh Oh! Please set a Jenkins environment variable named hub_org with value as registery/sunbidrded" + ANSI_NORMAL) - error 'Please resolve the errors and rerun..' - } else - println(ANSI_BOLD + ANSI_GREEN + "Found environment variable named hub_org with value as: " + hub_org + ANSI_NORMAL) - } - cleanWs() - if (params.github_release_tag == "") { - checkout scm - commit_hash = sh(script: 'git rev-parse --short HEAD', returnStdout: true).trim() - branch_name = sh(script: 'git name-rev --name-only HEAD | rev | cut -d "/" -f1| rev', returnStdout: true).trim() - build_tag = branch_name + "_" + commit_hash - println(ANSI_BOLD + ANSI_YELLOW + "Tag not specified, using the latest commit hash: " + commit_hash + ANSI_NORMAL) - } else { - def scmVars = checkout scm - checkout scm: [$class: 'GitSCM', branches: [[name: "refs/tags/$params.github_release_tag"]], userRemoteConfigs: [[url: scmVars.GIT_URL]]] - build_tag = params.github_release_tag - println(ANSI_BOLD + ANSI_YELLOW + "Tag specified, building from tag: " + params.github_relase_tag + ANSI_NORMAL) - } - echo "build_tag: " + build_tag - - stage('Build') { - env.NODE_ENV = "build" - print "Environment will be : ${env.NODE_ENV}" - sh("./images/openbadger/build.sh ${build_tag} ${env.NODE_NAME} ${hub_org}") - } - stage('ArchiveArtifacts') { - archiveArtifacts "metadata.json" - currentBuild.description = "${build_tag}" - } - } - - } - catch (err) { - currentBuild.result = "FAILURE" - throw err - } - -} diff --git a/images/openbadger/build.sh b/images/openbadger/build.sh index 51a07511a6..4ff688a5cd 100755 --- a/images/openbadger/build.sh +++ b/images/openbadger/build.sh @@ -1,10 +1,13 @@ -#!/bin/bash +#!/bin/sh # Build script -set -eo pipefail -build_tag=$1 -name=badger -node=$2 -org=$3 +# set -o errexit +e () { + echo $( echo ${1} | jq ".${2}" | sed 's/\"//g') +} +m=$(./images/openbadger/metadata.sh) -docker build -f ./images/openbadger/Dockerfile -t ${org}/${name}:${build_tag} . -echo {\"image_name\" : \"${name}\", \"image_tag\" : \"${build_tag}\", \"node_name\" : \"$node\"} > metadata.json +org=$(e "${m}" "org") +name=$(e "${m}" "name") +version=$(e "${m}" "version") + +docker build -f ./images/openbadger/Dockerfile -t ${org}/${name}:${version}-bronze . diff --git a/images/proxy/Jenkinsfile b/images/proxy/Jenkinsfile deleted file mode 100644 index e00c08357f..0000000000 --- a/images/proxy/Jenkinsfile +++ /dev/null @@ -1,49 +0,0 @@ -node('build-slave') { - try { - String ANSI_GREEN = "\u001B[32m" - String ANSI_NORMAL = "\u001B[0m" - String ANSI_BOLD = "\u001B[1m" - String ANSI_RED = "\u001B[31m" - String ANSI_YELLOW = "\u001B[33m" - - ansiColor('xterm') { - stage('Checkout') { - if (!env.hub_org) { - println(ANSI_BOLD + ANSI_RED + "Uh Oh! Please set a Jenkins environment variable named hub_org with value as registery/sunbidrded" + ANSI_NORMAL) - error 'Please resolve the errors and rerun..' - } else - println(ANSI_BOLD + ANSI_GREEN + "Found environment variable named hub_org with value as: " + hub_org + ANSI_NORMAL) - } - cleanWs() - if (params.github_release_tag == "") { - checkout scm - commit_hash = sh(script: 'git rev-parse --short HEAD', returnStdout: true).trim() - branch_name = sh(script: 'git name-rev --name-only HEAD | rev | cut -d "/" -f1| rev', returnStdout: true).trim() - build_tag = branch_name + "_" + commit_hash - println(ANSI_BOLD + ANSI_YELLOW + "Tag not specified, using the latest commit hash: " + commit_hash + ANSI_NORMAL) - } else { - def scmVars = checkout scm - checkout scm: [$class: 'GitSCM', branches: [[name: "refs/tags/$params.github_release_tag"]], userRemoteConfigs: [[url: scmVars.GIT_URL]]] - build_tag = params.github_release_tag - println(ANSI_BOLD + ANSI_YELLOW + "Tag specified, building from tag: " + params.github_release_tag + ANSI_NORMAL) - } - echo "build_tag: " + build_tag - - stage('Build') { - env.NODE_ENV = "build" - print "Environment will be : ${env.NODE_ENV}" - sh("./images/proxy/build.sh ${build_tag} ${env.NODE_NAME} ${hub_org}") - } - stage('ArchiveArtifacts') { - archiveArtifacts "metadata.json" - currentBuild.description = "${build_tag}" - } - } - - } - catch (err) { - currentBuild.result = "FAILURE" - throw err - } - -} diff --git a/images/proxy/build.sh b/images/proxy/build.sh index ebf64006ed..a5529a4b50 100755 --- a/images/proxy/build.sh +++ b/images/proxy/build.sh @@ -1,10 +1,13 @@ -#!/bin/bash +#!/bin/sh # Build script -set -eo pipefail -build_tag=$1 -name=proxy -node=$2 -org=$3 +# set -o errexit +e () { + echo $( echo ${1} | jq ".${2}" | sed 's/\"//g') +} +m=$(./images/proxy/metadata.sh) -docker build -f ./images/proxy/Dockerfile -t ${org}/${name}:${build_tag} . -echo {\"image_name\" : \"${name}\", \"image_tag\" : \"${build_tag}\", \"node_name\" : \"$node\"} > metadata.json +org=$(e "${m}" "org") +name=$(e "${m}" "name") +version=$(e "${m}" "version") + +docker build -f ./images/proxy/Dockerfile -t ${org}/${name}:${version}-bronze . diff --git a/pipelines/adminutils/Jenkinsfile.sample b/pipelines/adminutils/Jenkinsfile.sample new file mode 100644 index 0000000000..6684dc3d8e --- /dev/null +++ b/pipelines/adminutils/Jenkinsfile.sample @@ -0,0 +1,27 @@ +#!groovy + +node('general-staging') { + + currentBuild.result = "SUCCESS" + + try { + stage('Checkout'){ + checkout scm + } + stage('Pre-Build'){ + sh('./pipelines/adminutils/installDeps.sh') + } + stage('Deploy'){ + step ([$class: 'CopyArtifact', + projectName: 'Tag_As_Silver/AM_AdminUtils_Tag_Silver', + filter: 'metadata.json']); + sh 'METADATA_FILE=metadata.json ARTIFACT_LABEL=silver ENV=staging ./pipelines/adminutils/deploy.sh' + archive includes: "metadata.json" + } + } + catch (err) { + currentBuild.result = "FAILURE" + throw err + } + +} diff --git a/pipelines/adminutils/deploy.sh b/pipelines/adminutils/deploy.sh new file mode 100755 index 0000000000..0dcb3cf5e4 --- /dev/null +++ b/pipelines/adminutils/deploy.sh @@ -0,0 +1,28 @@ +#!/bin/sh +# Build script +# set -o errexit +set -e +e () { + echo $( echo ${1} | jq ".${2}" | sed 's/\"//g') +} +m=$(cat $METADATA_FILE) + +org=$(e "${m}" "org") +name=$(e "${m}" "name") +version=$(e "${m}" "version") + +artifactLabel=${ARTIFACT_LABEL:-bronze} +env=${ENV:-null} + +echo "artifactLabel: ${artifactLabel}" +echo "env: ${env}" +echo "org: ${org}" +echo "name: ${name}" +echo "version: ${version}" +echo "ANSIBLE_PATH: $ANSIBLE_PATH" + +ansible-playbook --version +ansible-playbook -i ansible/inventory/${env} ansible/deploy.yml --tags "stack-adminutil" --extra-vars "hub_org=${org} image_name=${name} image_tag=${version}-${artifactLabel}" --vault-password-file /run/secrets/vault-pass +# ENV=${env} ORG=${org} NAME=${name} \ +# TAG=${version}-${artifactLabel} \ +# docker stack deploy -c ./pipelines/proxy/docker-compose.yml ${name}-${env} diff --git a/pipelines/adminutils/installDeps.sh b/pipelines/adminutils/installDeps.sh new file mode 100755 index 0000000000..4bd4763793 --- /dev/null +++ b/pipelines/adminutils/installDeps.sh @@ -0,0 +1,5 @@ +#!/bin/sh +# Build script +# set -o errexit +apk -v --update --no-cache add jq bash +apk -v add ansible=2.3.0.0-r1 diff --git a/pipelines/adminutils/metadata.json b/pipelines/adminutils/metadata.json new file mode 100644 index 0000000000..d66f241143 --- /dev/null +++ b/pipelines/adminutils/metadata.json @@ -0,0 +1,6 @@ +{ + "name": "adminutil", + "version": "0.0.1-SNAPSHOT", + "org": "sunbird", + "hubuser": "purplesunbird" +} diff --git a/pipelines/am-onboard-apis/Jenkinsfile.sample b/pipelines/am-onboard-apis/Jenkinsfile.sample new file mode 100644 index 0000000000..c148704f90 --- /dev/null +++ b/pipelines/am-onboard-apis/Jenkinsfile.sample @@ -0,0 +1,15 @@ +pipeline { + agent { + label 'kong-staging' + } + stages { + stage('Deploy') { + steps { + sh ''' + cd ansible + ansible-playbook -i inventory/staging api-manager.yml --tags kong-api --vault-password-file /run/secrets/vault-pass + ''' + } + } + } +} \ No newline at end of file diff --git a/pipelines/am-onboard-consumers/Jenkinsfile.sample b/pipelines/am-onboard-consumers/Jenkinsfile.sample new file mode 100644 index 0000000000..4a789dc981 --- /dev/null +++ b/pipelines/am-onboard-consumers/Jenkinsfile.sample @@ -0,0 +1,15 @@ +pipeline { + agent { + label 'kong-staging' + } + stages { + stage('Deploy') { + steps { + sh ''' + cd ansible + ansible-playbook -i inventory/staging api-manager.yml --tags kong-consumer --vault-password-file /run/secrets/vault-pass -v + ''' + } + } + } +} \ No newline at end of file diff --git a/pipelines/api-manager/Jenkinsfile.sample b/pipelines/api-manager/Jenkinsfile.sample new file mode 100644 index 0000000000..b7541c660d --- /dev/null +++ b/pipelines/api-manager/Jenkinsfile.sample @@ -0,0 +1,34 @@ +#!groovy + +node('general-staging') { + + currentBuild.result = "SUCCESS" + + try { + + stage('Checkout'){ + + checkout scm + } + + stage('Pre-Build'){ + + sh('./pipelines/api-manager/installDeps.sh') + + } + + stage('Deploy'){ + + step ([$class: 'CopyArtifact', + projectName: 'Tag_As_Silver/Echo_Server_Tag_Silver', + filter: 'metadata.json']); + sh 'METADATA_FILE=metadata.json ENV=staging ./pipelines/api-manager/deploy.sh' + archive includes: "metadata.json" + } + } + catch (err) { + currentBuild.result = "FAILURE" + throw err + } + +} diff --git a/pipelines/api-manager/deploy.sh b/pipelines/api-manager/deploy.sh new file mode 100755 index 0000000000..194c29df3a --- /dev/null +++ b/pipelines/api-manager/deploy.sh @@ -0,0 +1,23 @@ +#!/bin/sh +# Build script +# set -o errexit +set -e +e () { + echo $( echo ${1} | jq ".${2}" | sed 's/\"//g') +} +m=$(cat $METADATA_FILE) + +org=$(e "${m}" "org") +name=$(e "${m}" "name") +version=$(e "${m}" "version") + +artifactLabel=${ARTIFACT_LABEL:-bronze} +env=${ENV:-null} + +echo "artifactLabel: ${artifactLabel}" +echo "env: ${env}" +echo "org: ${org}" +echo "name: ${name}" +echo "version: ${version}" +ansible-playbook --version +ansible-playbook -i ansible/inventory/$ENV ansible/deploy.yml --tags "stack-api-manager" --extra-vars "hub_org=${org} echo_server_image_name=${name} echo_server_image_tag=${version}-${artifactLabel}" --vault-password-file /run/secrets/vault-pass diff --git a/pipelines/api-manager/installDeps.sh b/pipelines/api-manager/installDeps.sh new file mode 100755 index 0000000000..f99345239c --- /dev/null +++ b/pipelines/api-manager/installDeps.sh @@ -0,0 +1,5 @@ +#!/bin/sh +# Build script +# set -o errexit +apk -v --update --no-cache add ansible=2.3.0.0-r1 +apk -v add jq diff --git a/pipelines/api-manager/metadata.json b/pipelines/api-manager/metadata.json new file mode 100644 index 0000000000..0103cf310f --- /dev/null +++ b/pipelines/api-manager/metadata.json @@ -0,0 +1,6 @@ +{ + "name": "echo-server", + "version": "0.0.1", + "org": "sunbird", + "hubuser": "purplesunbird" +} \ No newline at end of file diff --git a/pipelines/application-elasticsearch/Jenkinsfile.sample b/pipelines/application-elasticsearch/Jenkinsfile.sample new file mode 100644 index 0000000000..fdd5dfe923 --- /dev/null +++ b/pipelines/application-elasticsearch/Jenkinsfile.sample @@ -0,0 +1,22 @@ +pipeline { + agent { + label 'general-staging' + } + stages { + stage('Pre-Build'){ + steps { + sh('chmod a+x ansible/installDeps.sh') + sh('./ansible/installDeps.sh') + } + } + + stage('Deploy') { + steps { + sh ''' + cd ansible + ansible-playbook -i inventory/staging provision.yml --tags es --vault-password-file /run/secrets/vault-pass + ''' + } + } + } +} \ No newline at end of file diff --git a/pipelines/backup/cassandra-backup/Jenkinsfile b/pipelines/backup/cassandra-backup/Jenkinsfile deleted file mode 100644 index c5bce5d7b1..0000000000 --- a/pipelines/backup/cassandra-backup/Jenkinsfile +++ /dev/null @@ -1,38 +0,0 @@ -@Library('deploy-conf') _ -node() { - try { - String ANSI_GREEN = "\u001B[32m" - String ANSI_NORMAL = "\u001B[0m" - String ANSI_BOLD = "\u001B[1m" - String ANSI_RED = "\u001B[31m" - String ANSI_YELLOW = "\u001B[33m" - - stage('checkout public repo') { - cleanWs() - checkout scm - } - - ansiColor('xterm') { - stage('deploy'){ - values = [:] - currentWs = sh(returnStdout: true, script: 'pwd').trim() - envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-3].trim() - module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() - jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() - ansiblePlaybook = "${currentWs}/ansible/cassandra-backup.yml" - ansibleExtraArgs = "--vault-password-file /var/lib/jenkins/secrets/vault-pass" - values.put('currentWs', currentWs) - values.put('env', envDir) - values.put('module', module) - values.put('jobName', jobName) - values.put('ansiblePlaybook', ansiblePlaybook) - values.put('ansibleExtraArgs', ansibleExtraArgs) - println values - ansible_playbook_run(values) - } - } - } - catch (err) { - throw err - } -} diff --git a/pipelines/backup/es-backup/Jenkinsfile b/pipelines/backup/es-backup/Jenkinsfile deleted file mode 100644 index f3e97a9817..0000000000 --- a/pipelines/backup/es-backup/Jenkinsfile +++ /dev/null @@ -1,38 +0,0 @@ -@Library('deploy-conf') _ -node() { - try { - String ANSI_GREEN = "\u001B[32m" - String ANSI_NORMAL = "\u001B[0m" - String ANSI_BOLD = "\u001B[1m" - String ANSI_RED = "\u001B[31m" - String ANSI_YELLOW = "\u001B[33m" - - stage('checkout public repo') { - cleanWs() - checkout scm - } - - ansiColor('xterm') { - stage('deploy'){ - values = [:] - envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-3].trim() - module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() - jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() - currentWs = sh(returnStdout: true, script: 'pwd').trim() - ansiblePlaybook = "${currentWs}/ansible/es.yml" - ansibleExtraArgs = "--tags \"es_backup\" -v --vault-password-file /var/lib/jenkins/secrets/vault-pass" - values.put('currentWs', currentWs) - values.put('env', envDir) - values.put('module', module) - values.put('jobName', jobName) - values.put('ansiblePlaybook', ansiblePlaybook) - values.put('ansibleExtraArgs', ansibleExtraArgs) - println values - ansible_playbook_run(values) - } - } - } - catch (err) { - throw err - } -} diff --git a/pipelines/backup/es-restore/Jenkinsfile b/pipelines/backup/es-restore/Jenkinsfile deleted file mode 100644 index a6c7c7d8b3..0000000000 --- a/pipelines/backup/es-restore/Jenkinsfile +++ /dev/null @@ -1,42 +0,0 @@ -@Library('deploy-conf') _ -node() { - try { - String ANSI_GREEN = "\u001B[32m" - String ANSI_NORMAL = "\u001B[0m" - String ANSI_BOLD = "\u001B[1m" - String ANSI_RED = "\u001B[31m" - String ANSI_YELLOW = "\u001B[33m" - - triggers { - cron('H 0 * * *') - } - - stage('checkout public repo') { - cleanWs() - checkout scm - } - - ansiColor('xterm') { - stage('deploy'){ - values = [:] - currentWs = sh(returnStdout: true, script: 'pwd').trim() - envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-3].trim() - module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() - jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() - ansiblePlaybook = "${currentWs}/ansible/es.yml" - ansibleExtraArgs = "--tags \"es_restore\" --extra-vars \"snapshot_number=${snapshot_number}\" -v --vault-password-file /var/lib/jenkins/secrets/vault-pass" - values.put('currentWs', currentWs) - values.put('env', envDir) - values.put('module', module) - values.put('jobName', jobName) - values.put('ansiblePlaybook', ansiblePlaybook) - values.put('ansibleExtraArgs', ansibleExtraArgs) - println values - ansible_playbook_run(values) - } - } - } - catch (err) { - throw err - } -} diff --git a/pipelines/backup/logger-es-backup/Jenkinsfile b/pipelines/backup/logger-es-backup/Jenkinsfile deleted file mode 100644 index 966a830242..0000000000 --- a/pipelines/backup/logger-es-backup/Jenkinsfile +++ /dev/null @@ -1,38 +0,0 @@ -@Library('deploy-conf') _ -node() { - try { - String ANSI_GREEN = "\u001B[32m" - String ANSI_NORMAL = "\u001B[0m" - String ANSI_BOLD = "\u001B[1m" - String ANSI_RED = "\u001B[31m" - String ANSI_YELLOW = "\u001B[33m" - - stage('checkout public repo') { - cleanWs() - checkout scm - } - - ansiColor('xterm') { - stage('deploy'){ - values = [:] - currentWs = sh(returnStdout: true, script: 'pwd').trim() - envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-3].trim() - module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() - jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() - ansiblePlaybook = "${currentWs}/ansible/es.yml" - ansibleExtraArgs = "--tags \"log_es_backup\" -v --vault-password-file /var/lib/jenkins/secrets/vault-pass" - values.put('currentWs', currentWs) - values.put('env', envDir) - values.put('module', module) - values.put('jobName', jobName) - values.put('ansiblePlaybook', ansiblePlaybook) - values.put('ansibleExtraArgs', ansibleExtraArgs) - println values - ansible_playbook_run(values) - } - } - } - catch (err) { - throw err - } -} diff --git a/pipelines/backup/logger-es-restore/Jenkinsfile b/pipelines/backup/logger-es-restore/Jenkinsfile deleted file mode 100644 index fd2bbaf063..0000000000 --- a/pipelines/backup/logger-es-restore/Jenkinsfile +++ /dev/null @@ -1,42 +0,0 @@ -@Library('deploy-conf') _ -node() { - try { - String ANSI_GREEN = "\u001B[32m" - String ANSI_NORMAL = "\u001B[0m" - String ANSI_BOLD = "\u001B[1m" - String ANSI_RED = "\u001B[31m" - String ANSI_YELLOW = "\u001B[33m" - - triggers { - cron('H 0 * * *') - } - - stage('checkout public repo') { - cleanWs() - checkout scm - } - - ansiColor('xterm') { - stage('deploy'){ - values = [:] - currentWs = sh(returnStdout: true, script: 'pwd').trim() - envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-3].trim() - module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() - jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() - ansiblePlaybook = "${currentWs}/ansible/es.yml" - ansibleExtraArgs = "--tags \"log_es_restore\" --extra-vars \"snapshot_number=${snapshot_number}\" -v --vault-password-file /var/lib/jenkins/secrets/vault-pass" - values.put('currentWs', currentWs) - values.put('env', envDir) - values.put('module', module) - values.put('jobName', jobName) - values.put('ansiblePlaybook', ansiblePlaybook) - values.put('ansibleExtraArgs', ansibleExtraArgs) - println values - ansible_playbook_run(values) - } - } - } - catch (err) { - throw err - } -} diff --git a/pipelines/backup/postgresql-backup/Jenkinsfile b/pipelines/backup/postgresql-backup/Jenkinsfile deleted file mode 100644 index d0949fc405..0000000000 --- a/pipelines/backup/postgresql-backup/Jenkinsfile +++ /dev/null @@ -1,38 +0,0 @@ -@Library('deploy-conf') _ -node() { - try { - String ANSI_GREEN = "\u001B[32m" - String ANSI_NORMAL = "\u001B[0m" - String ANSI_BOLD = "\u001B[1m" - String ANSI_RED = "\u001B[31m" - String ANSI_YELLOW = "\u001B[33m" - - stage('checkout public repo') { - cleanWs() - checkout scm - } - - ansiColor('xterm') { - stage('deploy'){ - values = [:] - envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-3].trim() - module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() - jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() - currentWs = sh(returnStdout: true, script: 'pwd').trim() - ansiblePlaybook = "${currentWs}/ansible/postgresql-backup.yml" - ansibleExtraArgs = "--vault-password-file /var/lib/jenkins/secrets/vault-pass" - values.put('currentWs', currentWs) - values.put('env', envDir) - values.put('module', module) - values.put('jobName', jobName) - values.put('ansiblePlaybook', ansiblePlaybook) - values.put('ansibleExtraArgs', ansibleExtraArgs) - println values - ansible_playbook_run(values) - } - } - } - catch (err) { - throw err - } -} diff --git a/pipelines/backup/postgresql-restore/Jenkinsfile b/pipelines/backup/postgresql-restore/Jenkinsfile deleted file mode 100644 index 53effdd0ce..0000000000 --- a/pipelines/backup/postgresql-restore/Jenkinsfile +++ /dev/null @@ -1,40 +0,0 @@ -package Deploy - -@Library('deploy-conf') _ -node() { - try { - String ANSI_GREEN = "\u001B[32m" - String ANSI_NORMAL = "\u001B[0m" - String ANSI_BOLD = "\u001B[1m" - String ANSI_RED = "\u001B[31m" - String ANSI_YELLOW = "\u001B[33m" - - stage('checkout public repo') { - cleanWs() - checkout scm - } - - ansiColor('xterm') { - stage('deploy'){ - values = [:] - envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-3].trim() - module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() - jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() - currentWs = sh(returnStdout: true, script: 'pwd').trim() - ansiblePlaybook = "${currentWs}/ansible/postgresql-restore.yml" - ansibleExtraArgs = "--vault-password-file /var/lib/jenkins/secrets/vault-pass" - values.put('currentWs', currentWs) - values.put('env', envDir) - values.put('module', module) - values.put('jobName', jobName) - values.put('ansiblePlaybook', ansiblePlaybook) - values.put('ansibleExtraArgs', ansibleExtraArgs) - println values - ansible_playbook_run(values) - } - } - } - catch (err) { - throw err - } -} diff --git a/pipelines/backup/prometheus-backup/Jenkinsfile b/pipelines/backup/prometheus-backup/Jenkinsfile deleted file mode 100644 index 216e9d4a02..0000000000 --- a/pipelines/backup/prometheus-backup/Jenkinsfile +++ /dev/null @@ -1,38 +0,0 @@ -@Library('deploy-conf') _ -node() { - try { - String ANSI_GREEN = "\u001B[32m" - String ANSI_NORMAL = "\u001B[0m" - String ANSI_BOLD = "\u001B[1m" - String ANSI_RED = "\u001B[31m" - String ANSI_YELLOW = "\u001B[33m" - - stage('checkout public repo') { - cleanWs() - checkout scm - } - - ansiColor('xterm') { - stage('deploy'){ - values = [:] - envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-3].trim() - module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() - jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() - currentWs = sh(returnStdout: true, script: 'pwd').trim() - ansiblePlaybook = "${currentWs}/ansible/prometheus-backup.yml" - ansibleExtraArgs = "--vault-password-file /var/lib/jenkins/secrets/vault-pass" - values.put('currentWs', currentWs) - values.put('env', envDir) - values.put('module', module) - values.put('jobName', jobName) - values.put('ansiblePlaybook', ansiblePlaybook) - values.put('ansibleExtraArgs', ansibleExtraArgs) - println values - ansible_playbook_run(values) - } - } - } - catch (err) { - throw err - } -} diff --git a/pipelines/bootstrap-swarm/Jenkinsfile b/pipelines/bootstrap-swarm/Jenkinsfile deleted file mode 100644 index 418a574705..0000000000 --- a/pipelines/bootstrap-swarm/Jenkinsfile +++ /dev/null @@ -1,38 +0,0 @@ -@Library('deploy-conf') _ -node() { - try { - String ANSI_GREEN = "\u001B[32m" - String ANSI_NORMAL = "\u001B[0m" - String ANSI_BOLD = "\u001B[1m" - String ANSI_RED = "\u001B[31m" - String ANSI_YELLOW = "\u001B[33m" - - stage('checkout public repo') { - cleanWs() - checkout scm - } - - ansiColor('xterm') { - stage('deploy'){ - values = [:] - envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-3].trim() - module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() - jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() - currentWs = sh(returnStdout: true, script: 'pwd').trim() - ansiblePlaybook = "${currentWs}/ansible/setup-dockerswarm.yml" - ansibleExtraArgs = "--extra-vars \"hosts=${params.hosts}\" --extra-vars \"ansible_ssh_private_key_file=/run/secrets/deployer_ssh_key\"" - values.put('currentWs', currentWs) - values.put('env', envDir) - values.put('module', module) - values.put('jobName', jobName) - values.put('ansiblePlaybook', ansiblePlaybook) - values.put('ansibleExtraArgs', ansibleExtraArgs) - println values - ansible_playbook_run(values) - } - } - } - catch (err) { - throw err - } -} diff --git a/pipelines/bootstrap/Jenkinsfile b/pipelines/bootstrap/Jenkinsfile deleted file mode 100644 index e1464148ad..0000000000 --- a/pipelines/bootstrap/Jenkinsfile +++ /dev/null @@ -1,38 +0,0 @@ -@Library('deploy-conf') _ -node() { - try { - String ANSI_GREEN = "\u001B[32m" - String ANSI_NORMAL = "\u001B[0m" - String ANSI_BOLD = "\u001B[1m" - String ANSI_RED = "\u001B[31m" - String ANSI_YELLOW = "\u001B[33m" - - stage('checkout public repo') { - cleanWs() - checkout scm - } - - ansiColor('xterm') { - stage('deploy'){ - values = [:] - envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-3].trim() - module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() - jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() - currentWs = sh(returnStdout: true, script: 'pwd').trim() - ansiblePlaybook = "${currentWs}/ansible/bootstrap.yml" - ansibleExtraArgs = "--tags bootstrap_any --extra-vars \"hosts=${params.hosts}\"" - values.put('currentWs', currentWs) - values.put('env', envDir) - values.put('module', module) - values.put('jobName', jobName) - values.put('ansiblePlaybook', ansiblePlaybook) - values.put('ansibleExtraArgs', ansibleExtraArgs) - println values - ansible_playbook_run(values) - } - } - } - catch (err) { - throw err - } -} diff --git a/pipelines/bootstrap/Jenkinsfile.rotatekey b/pipelines/bootstrap/Jenkinsfile.rotatekey deleted file mode 100644 index db3deb07a9..0000000000 --- a/pipelines/bootstrap/Jenkinsfile.rotatekey +++ /dev/null @@ -1,38 +0,0 @@ -@Library('deploy-conf') _ -node() { - try { - String ANSI_GREEN = "\u001B[32m" - String ANSI_NORMAL = "\u001B[0m" - String ANSI_BOLD = "\u001B[1m" - String ANSI_RED = "\u001B[31m" - String ANSI_YELLOW = "\u001B[33m" - - stage('checkout public repo') { - cleanWs() - checkout scm - } - - ansiColor('xterm') { - stage('deploy'){ - values = [:] - envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-3].trim() - module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() - jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() - currentWs = sh(returnStdout: true, script: 'pwd').trim() - ansiblePlaybook = "${currentWs}/ansible/rotatekeys.yml" - ansibleExtraArgs = " --extra-vars bootstrap_user_public_key=\"${params.bootstrap_user_public_key}\" --extra-vars bootstrap_user=\"${params.bootstrap_user}\" --extra-vars ssh_user=\"${params.ssh_user}\" --extra-vars ssh_private_file=\"${params.ssh_private_file}\" --extra-vars ssh_public_key=\"${params.ssh_public_key}\"" - values.put('currentWs', currentWs) - values.put('env', envDir) - values.put('module', module) - values.put('jobName', jobName) - values.put('ansiblePlaybook', ansiblePlaybook) - values.put('ansibleExtraArgs', ansibleExtraArgs) - println values - ansible_playbook_run(values) - } - } - } - catch (err) { - throw err - } -} diff --git a/pipelines/cassandra-backup/Jenkinsfile.sample b/pipelines/cassandra-backup/Jenkinsfile.sample new file mode 100644 index 0000000000..fee2318964 --- /dev/null +++ b/pipelines/cassandra-backup/Jenkinsfile.sample @@ -0,0 +1,32 @@ +#!groovy + +node('general-staging') { + + currentBuild.result = "SUCCESS" + + try { + + stage('Checkout'){ + + checkout scm + } + + + + stage('Pre-Build'){ + sh('chmod a+x ansible/installDeps.sh') + sh('./ansible/installDeps.sh') + } + + stage('Build'){ + + sh('ansible-playbook -i ansible/inventory/staging ansible/cassandra-backup.yml --vault-password-file /run/secrets/vault-pass ') + } + + } + catch (err) { + currentBuild.result = "FAILURE" + throw err + } + +} \ No newline at end of file diff --git a/pipelines/cassandra-restore/Jenkinsfile.sample b/pipelines/cassandra-restore/Jenkinsfile.sample new file mode 100644 index 0000000000..0203cae04c --- /dev/null +++ b/pipelines/cassandra-restore/Jenkinsfile.sample @@ -0,0 +1,34 @@ +#!groovy + +node('general-staging') { + + properties([parameters([string(defaultValue: '', description: 'time ', name: 'snapshot')]), pipelineTriggers([])]) + + currentBuild.result = "SUCCESS" + + try { + + stage('Checkout'){ + + checkout scm + } + + stage('Pre-Build'){ + sh('chmod a+x ansible/installDeps.sh') + sh('./ansible/installDeps.sh') + } + + stage('Build'){ + + sh('ansible-playbook -i ansible/inventory/staging ansible/cassandra-restore.yml --vault-password-file /run/secrets/vault-pass --extra-vars "cassandra_restore_gzip_file_name=cassandra_backup_${snapshot}.zip snapshot=${snapshot}"') + } + + } + catch (err) { + currentBuild.result = "FAILURE" + throw err + } + +} + + diff --git a/pipelines/cassandra/Jenkinsfile.sample b/pipelines/cassandra/Jenkinsfile.sample new file mode 100644 index 0000000000..72543ff348 --- /dev/null +++ b/pipelines/cassandra/Jenkinsfile.sample @@ -0,0 +1,32 @@ +#!groovy + +node('general-staging') { + + currentBuild.result = "SUCCESS" + + try { + + stage('Checkout'){ + + checkout scm + } + + + + stage('Pre-Build'){ + sh('chmod a+x ansible/installDeps.sh') + sh('./ansible/installDeps.sh') + } + + stage('Build'){ + + sh('ansible-playbook -i ansible/inventory/staging ansible/provision.yml --tags cassandra --vault-password-file /run/secrets/vault-pass ') + } + + } + catch (err) { + currentBuild.result = "FAILURE" + throw err + } + +} \ No newline at end of file diff --git a/pipelines/cassandra/installDeps.sh b/pipelines/cassandra/installDeps.sh new file mode 100644 index 0000000000..49a927e6e5 --- /dev/null +++ b/pipelines/cassandra/installDeps.sh @@ -0,0 +1 @@ +apk -v add ansible=2.3.0.0-r1 diff --git a/pipelines/deploy/CEPlugins/Jenkinsfile b/pipelines/deploy/CEPlugins/Jenkinsfile deleted file mode 100644 index 9c8b575c56..0000000000 --- a/pipelines/deploy/CEPlugins/Jenkinsfile +++ /dev/null @@ -1,60 +0,0 @@ -@Library('deploy-conf') _ -node() { - try { - String ANSI_GREEN = "\u001B[32m" - String ANSI_NORMAL = "\u001B[0m" - String ANSI_BOLD = "\u001B[1m" - String ANSI_RED = "\u001B[31m" - String ANSI_YELLOW = "\u001B[33m" - - stage('checkout public repo') { - cleanWs() - checkout scm - } - - ansiColor('xterm') { - values = lp_dp_params() - values.put('module', 'Core') - stage('get artifact') { - currentWs = sh(returnStdout: true, script: 'pwd').trim() - artifact = values.artifact_name + ":" + values.artifact_version - values.put('currentWs', currentWs) - if (params.artifact_source == "ArtifactRepo") { - println(ANSI_BOLD + ANSI_YELLOW + '''\ - Option chosen is ArtifactRepo, ignoring any previously copied artifacts and new artifacts will be downloaded from remote source - '''.stripIndent().replace("\n", " ") + ANSI_NORMAL) - ansiblePlaybook = "${currentWs}/ansible/artifacts-download.yml" - ansibleExtraArgs = """\ - --extra-vars "artifact=${artifact} - artifact_path=${currentWs}/${artifact}" - --vault-password-file /var/lib/jenkins/secrets/vault-pass - """.stripIndent().replace("\n", " ") - values.put('ansiblePlaybook', ansiblePlaybook) - values.put('ansibleExtraArgs', ansibleExtraArgs) - ansible_playbook_run(values) - } - else{ - println(ANSI_BOLD + ANSI_YELLOW + '''\ - Option chosen is JenkinsJob, using the artifacts copied - '''.stripIndent().replace("\n", " ") + ANSI_NORMAL) - } - } - stage('deploy artifact'){ - withCredentials([usernamePassword(credentialsId: 'az-blob-credentials', passwordVariable: 'azure_account_key', usernameVariable: 'azure_account_name')]) { - sh """ - unzip ${artifact} - unzip content-plugins.zip - chmod a+x content-plugins/az_copy.sh - bash -x content-plugins/az_copy.sh ${params.container_name} - """ - } - archiveArtifacts artifacts: "${artifact}", fingerprint: true, onlyIfSuccessful: true - archiveArtifacts artifacts: 'metadata.json', onlyIfSuccessful: true - currentBuild.description = "${values.artifact_version}" - } - } - } - catch (err) { - throw err - } -} diff --git a/pipelines/deploy/CollectionEditor/Jenkinsfile b/pipelines/deploy/CollectionEditor/Jenkinsfile deleted file mode 100644 index 4c7153dfde..0000000000 --- a/pipelines/deploy/CollectionEditor/Jenkinsfile +++ /dev/null @@ -1,70 +0,0 @@ -@Library('deploy-conf') _ -node() { - try { - String ANSI_GREEN = "\u001B[32m" - String ANSI_NORMAL = "\u001B[0m" - String ANSI_BOLD = "\u001B[1m" - String ANSI_RED = "\u001B[31m" - String ANSI_YELLOW = "\u001B[33m" - - stage('checkout public repo') { - cleanWs() - checkout scm - } - - ansiColor('xterm') { - values = lp_dp_params() - values.put('module', 'Core') - stage('get artifact') { - currentWs = sh(returnStdout: true, script: 'pwd').trim() - artifact = values.artifact_name + ":" + values.artifact_version - values.put('currentWs', currentWs) - if (params.artifact_source == "ArtifactRepo") { - println(ANSI_BOLD + ANSI_YELLOW + '''\ - Option chosen is ArtifactRepo, ignoring any previously copied artifacts and new artifacts will be downloaded from remote source - '''.stripIndent().replace("\n", " ") + ANSI_NORMAL) - ansiblePlaybook = "${currentWs}/ansible/artifacts-download.yml" - ansibleExtraArgs = """\ - --extra-vars "artifact=${artifact} - artifact_path=${currentWs}/${artifact}" - --vault-password-file /var/lib/jenkins/secrets/vault-pass - """.stripIndent().replace("\n", " ") - values.put('ansiblePlaybook', ansiblePlaybook) - values.put('ansibleExtraArgs', ansibleExtraArgs) - ansible_playbook_run(values) - } - else{ - println(ANSI_BOLD + ANSI_YELLOW + '''\ - Option chosen is JenkinsJob, using the artifacts copied - '''.stripIndent().replace("\n", " ") + ANSI_NORMAL) - } - } - stage('deploy artifact'){ - withCredentials([usernamePassword(credentialsId: 'az-blob-credentials', passwordVariable: 'azure_account_key', usernameVariable: 'azure_account_name')]) { - sh """ - unzip ${artifact} - unzip -o collection-editor.zip -d collection-editor - az storage blob upload-batch --destination ${params.container_name}/collection-editor --source collection-editor --account-name $azure_account_name --account-key $azure_account_key - cd collection-editor - npm config set strict-ssl false - npm install - npm install promise - gulp minifyJs # To rename the minified files - gulp copystyleImages - gulp clean - gulp injectrenamedfiles # Inject the minified files to index.html - gulp package # Package the build - az storage blob upload-batch --destination ${params.container_name}/artefacts/editor --source dist/editor --account-name $azure_account_name --account-key $azure_account_key - az storage blob upload-batch --destination ${params.container_name}/artefacts/coreplugins --source dist/coreplugins --account-name $azure_account_name --account-key $azure_account_key - """ - } - archiveArtifacts artifacts: "${artifact}", fingerprint: true, onlyIfSuccessful: true - archiveArtifacts artifacts: 'metadata.json', onlyIfSuccessful: true - currentBuild.description = "${values.artifact_version}" - } - } - } - catch (err) { - throw err - } -} diff --git a/pipelines/deploy/ContentFramework/Jenkinsfile b/pipelines/deploy/ContentFramework/Jenkinsfile deleted file mode 100644 index 530b568242..0000000000 --- a/pipelines/deploy/ContentFramework/Jenkinsfile +++ /dev/null @@ -1,78 +0,0 @@ -@Library('deploy-conf') _ -node() { - try { - String ANSI_GREEN = "\u001B[32m" - String ANSI_NORMAL = "\u001B[0m" - String ANSI_BOLD = "\u001B[1m" - String ANSI_RED = "\u001B[31m" - String ANSI_YELLOW = "\u001B[33m" - - stage('checkout public repo') { - cleanWs() - checkout scm - } - - ansiColor('xterm') { - values = lp_dp_params() - values.put('module', 'Core') - stage('get artifact') { - currentWs = sh(returnStdout: true, script: 'pwd').trim() - artifact = values.artifact_name + ":" + values.artifact_version - values.put('currentWs', currentWs) - if (params.artifact_source == "ArtifactRepo") { - println(ANSI_BOLD + ANSI_YELLOW + '''\ - Option chosen is ArtifactRepo, ignoring any previously copied artifacts and new artifacts will be downloaded from remote source - '''.stripIndent().replace("\n", " ") + ANSI_NORMAL) - ansiblePlaybook = "${currentWs}/ansible/artifacts-download.yml" - ansibleExtraArgs = """\ - --extra-vars "artifact=${artifact} - artifact_path=${currentWs}/${artifact}" - --vault-password-file /var/lib/jenkins/secrets/vault-pass - """.stripIndent().replace("\n", " ") - values.put('ansiblePlaybook', ansiblePlaybook) - values.put('ansibleExtraArgs', ansibleExtraArgs) - ansible_playbook_run(values) - } - else{ - println(ANSI_BOLD + ANSI_YELLOW + '''\ - Option chosen is JenkinsJob, using the artifacts copied - '''.stripIndent().replace("\n", " ") + ANSI_NORMAL) - } - } - stage('deploy artifact'){ - withCredentials([usernamePassword(credentialsId: 'az-blob-credentials', passwordVariable: 'azure_account_key', usernameVariable: 'azure_account_name')]) { - sh """ - unzip ${artifact} - unzip -o content-editor.zip -d content-editor - export editor_version_number=${values.artifact_version} - sed -i -e 's/dispatcher:\"console\"/dispatcher:\"piwik\"/g' content-editor/scripts/* - sed -i 's:/api:/action:g' content-editor/scripts/base-editor.min.*.js - sed -i 's/useProxyForURL:true/useProxyForURL:false/g' content-editor/scripts/base-editor.min.*.js - sed -i -e 's/dispatcher:\"local\"/dispatcher:\"piwik\"/g' content-editor/scripts/* - az storage blob upload-batch --destination ${params.container_name}/content-editor --source content-editor --account-name $azure_account_name --account-key $azure_account_key - zip -r content-editor-artifact.zip content-editor - cd content-editor - npm install - npm install promise - gulp minifyJs - gulp copystyleImages - gulp clean - gulp injectrenamedfiles - gulp package - az storage blob upload-batch --destination ${params.container_name}/artefacts/editor --source dist/editor --account-name $azure_account_name --account-key $azure_account_key - az storage blob upload-batch --destination ${params.container_name}/artefacts/coreplugins --source dist/coreplugins --account-name $azure_account_name --account-key $azure_account_key - rm -rf node_modules - cd .. - zip -r content-editor.zip content-editor - """ - } - archiveArtifacts artifacts: "${artifact}", fingerprint: true, onlyIfSuccessful: true - archiveArtifacts artifacts: 'metadata.json', onlyIfSuccessful: true - currentBuild.description = "${values.artifact_version}" - } - } - } - catch (err) { - throw err - } -} diff --git a/pipelines/deploy/ContentRendererPreview/Jenkinsfile b/pipelines/deploy/ContentRendererPreview/Jenkinsfile deleted file mode 100644 index c6c7eeba62..0000000000 --- a/pipelines/deploy/ContentRendererPreview/Jenkinsfile +++ /dev/null @@ -1,64 +0,0 @@ -@Library('deploy-conf') _ -node() { - try { - String ANSI_GREEN = "\u001B[32m" - String ANSI_NORMAL = "\u001B[0m" - String ANSI_BOLD = "\u001B[1m" - String ANSI_RED = "\u001B[31m" - String ANSI_YELLOW = "\u001B[33m" - - stage('checkout public repo') { - cleanWs() - checkout scm - } - - ansiColor('xterm') { - values = lp_dp_params() - values.put('module', 'Core') - stage('get artifact') { - currentWs = sh(returnStdout: true, script: 'pwd').trim() - artifact = values.artifact_name + ":" + values.artifact_version - values.put('currentWs', currentWs) - if (params.artifact_source == "ArtifactRepo") { - println(ANSI_BOLD + ANSI_YELLOW + '''\ - Option chosen is ArtifactRepo, ignoring any previously copied artifacts and new artifacts will be downloaded from remote source - '''.stripIndent().replace("\n", " ") + ANSI_NORMAL) - ansiblePlaybook = "${currentWs}/ansible/artifacts-download.yml" - ansibleExtraArgs = """\ - --extra-vars "artifact=${artifact} - artifact_path=${currentWs}/${artifact}" - --vault-password-file /var/lib/jenkins/secrets/vault-pass - """.stripIndent().replace("\n", " ") - values.put('ansiblePlaybook', ansiblePlaybook) - values.put('ansibleExtraArgs', ansibleExtraArgs) - ansible_playbook_run(values) - } - else{ - println(ANSI_BOLD + ANSI_YELLOW + '''\ - Option chosen is JenkinsJob, using the artifacts copied - '''.stripIndent().replace("\n", " ") + ANSI_NORMAL) - } - } - stage('deploy artifact'){ - player_version_number = values.artifact_version - withCredentials([usernamePassword(credentialsId: 'az-blob-credentials', passwordVariable: 'azure_account_key', usernameVariable: 'azure_account_name')]) { - sh """ - unzip ${artifact} - #cd player - unzip -o preview.zip -d preview - mv preview.zip content-player-${player_version_number}.zip - az storage blob upload-batch --destination ${params.container_name}/v3/preview --source preview --account-name $azure_account_name --account-key $azure_account_key - az storage blob upload --container-name ${params.container_name} --file content-player-${player_version_number}.zip --name artefacts/content-player/content-player-${player_version_number}.zip --account-name $azure_account_name --account-key $azure_account_key - - """ - } - archiveArtifacts artifacts: "${artifact}", fingerprint: true, onlyIfSuccessful: true - archiveArtifacts artifacts: 'metadata.json', onlyIfSuccessful: true - currentBuild.description = "${values.artifact_version}" - } - } - } - catch (err) { - throw err - } -} diff --git a/pipelines/deploy/GenericEditor/Jenkinsfile b/pipelines/deploy/GenericEditor/Jenkinsfile deleted file mode 100644 index 02a70a87d8..0000000000 --- a/pipelines/deploy/GenericEditor/Jenkinsfile +++ /dev/null @@ -1,66 +0,0 @@ -@Library('deploy-conf') _ -node() { - try { - String ANSI_GREEN = "\u001B[32m" - String ANSI_NORMAL = "\u001B[0m" - String ANSI_BOLD = "\u001B[1m" - String ANSI_RED = "\u001B[31m" - String ANSI_YELLOW = "\u001B[33m" - - stage('checkout public repo') { - cleanWs() - checkout scm - } - - ansiColor('xterm') { - values = lp_dp_params() - values.put('module', 'Core') - stage('get artifact') { - currentWs = sh(returnStdout: true, script: 'pwd').trim() - artifact = values.artifact_name + ":" + values.artifact_version - values.put('currentWs', currentWs) - if (params.artifact_source == "ArtifactRepo") { - println(ANSI_BOLD + ANSI_YELLOW + '''\ - Option chosen is ArtifactRepo, ignoring any previously copied artifacts and new artifacts will be downloaded from remote source - '''.stripIndent().replace("\n", " ") + ANSI_NORMAL) - ansiblePlaybook = "${currentWs}/ansible/artifacts-download.yml" - ansibleExtraArgs = """\ - --extra-vars "artifact=${artifact} - artifact_path=${currentWs}/${artifact}" - --vault-password-file /var/lib/jenkins/secrets/vault-pass - """.stripIndent().replace("\n", " ") - values.put('ansiblePlaybook', ansiblePlaybook) - values.put('ansibleExtraArgs', ansibleExtraArgs) - ansible_playbook_run(values) - } - else{ - println(ANSI_BOLD + ANSI_YELLOW + '''\ - Option chosen is JenkinsJob, using the artifacts copied - '''.stripIndent().replace("\n", " ") + ANSI_NORMAL) - } - } - stage('deploy artifact'){ - withCredentials([usernamePassword(credentialsId: 'az-blob-credentials', passwordVariable: 'azure_account_key', usernameVariable: 'azure_account_name')]) { - sh """ - unzip ${artifact} - unzip -o generic-editor.zip -d generic-editor - az storage blob upload-batch --destination ${params.container_name}/generic-editor --source generic-editor --account-name $azure_account_name --account-key $azure_account_key - cd generic-editor - npm config set strict-ssl false - npm install - npm install promise - gulp package - az storage blob upload-batch --destination ${params.container_name}/artefacts/editor --source dist/editor --account-name $azure_account_name --account-key $azure_account_key - az storage blob upload-batch --destination ${params.container_name}/artefacts/coreplugins --source dist/coreplugins --account-name $azure_account_name --account-key $azure_account_key - """ - } - archiveArtifacts artifacts: "${artifact}", fingerprint: true, onlyIfSuccessful: true - archiveArtifacts artifacts: 'metadata.json', onlyIfSuccessful: true - currentBuild.description = "${values.artifact_version}" - } - } - } - catch (err) { - throw err - } -} diff --git a/pipelines/deploy/adminutils/Jenkinsfile b/pipelines/deploy/adminutils/Jenkinsfile deleted file mode 100644 index f8fa89cc24..0000000000 --- a/pipelines/deploy/adminutils/Jenkinsfile +++ /dev/null @@ -1,25 +0,0 @@ -@Library('deploy-conf') _ -node() { - try { - stage('checkout public repo') { - cleanWs() - checkout scm - } - stage('deploy') { - values = docker_params() - currentWs = sh(returnStdout: true, script: 'pwd').trim() - ansiblePlaybook = "$currentWs/ansible/deploy.yml" - ansibleExtraArgs = "--tags \"stack-adminutil\" --extra-vars \"hub_org=$hub_org image_name=$values.image_name image_tag=$values.image_tag\" --vault-password-file /var/lib/jenkins/secrets/vault-pass" - values.put('currentWs', currentWs) - values.put('ansiblePlaybook', ansiblePlaybook) - values.put('ansibleExtraArgs', ansibleExtraArgs) - ansible_playbook_run(values) - archiveArtifacts 'metadata.json' - currentBuild.description = "${values.image_tag}" - } - } - catch (err) { - currentBuild.result = "FAILURE" - throw err - } -} diff --git a/pipelines/deploy/am-onboard-apis/Jenkinsfile b/pipelines/deploy/am-onboard-apis/Jenkinsfile deleted file mode 100644 index 01d3cb099a..0000000000 --- a/pipelines/deploy/am-onboard-apis/Jenkinsfile +++ /dev/null @@ -1,38 +0,0 @@ -@Library('deploy-conf') _ -node() { - try { - String ANSI_GREEN = "\u001B[32m" - String ANSI_NORMAL = "\u001B[0m" - String ANSI_BOLD = "\u001B[1m" - String ANSI_RED = "\u001B[31m" - String ANSI_YELLOW = "\u001B[33m" - - stage('checkout public repo') { - cleanWs() - checkout scm - } - - ansiColor('xterm') { - stage('deploy'){ - values = [:] - envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-3].trim() - module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() - jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() - currentWs = sh(returnStdout: true, script: 'pwd').trim() - ansiblePlaybook = "${currentWs}/ansible/api-manager.yml" - ansibleExtraArgs = "--tags kong-api --vault-password-file /var/lib/jenkins/secrets/vault-pass -v" - values.put('currentWs', currentWs) - values.put('env', envDir) - values.put('module', module) - values.put('jobName', jobName) - values.put('ansiblePlaybook', ansiblePlaybook) - values.put('ansibleExtraArgs', ansibleExtraArgs) - println values - ansible_playbook_run(values) - } - } - } - catch (err) { - throw err - } -} diff --git a/pipelines/deploy/am-onboard-consumers/Jenkinsfile b/pipelines/deploy/am-onboard-consumers/Jenkinsfile deleted file mode 100644 index 07fc17c00d..0000000000 --- a/pipelines/deploy/am-onboard-consumers/Jenkinsfile +++ /dev/null @@ -1,38 +0,0 @@ -@Library('deploy-conf') _ -node() { - try { - String ANSI_GREEN = "\u001B[32m" - String ANSI_NORMAL = "\u001B[0m" - String ANSI_BOLD = "\u001B[1m" - String ANSI_RED = "\u001B[31m" - String ANSI_YELLOW = "\u001B[33m" - - stage('checkout public repo') { - cleanWs() - checkout scm - } - - ansiColor('xterm') { - stage('deploy'){ - values = [:] - envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-3].trim() - module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() - jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() - currentWs = sh(returnStdout: true, script: 'pwd').trim() - ansiblePlaybook = "${currentWs}/ansible/api-manager.yml" - ansibleExtraArgs = "--tags kong-consumer --vault-password-file /var/lib/jenkins/secrets/vault-pass -v" - values.put('currentWs', currentWs) - values.put('env', envDir) - values.put('module', module) - values.put('jobName', jobName) - values.put('ansiblePlaybook', ansiblePlaybook) - values.put('ansibleExtraArgs', ansibleExtraArgs) - println values - ansible_playbook_run(values) - } - } - } - catch (err) { - throw err - } -} diff --git a/pipelines/deploy/api-manager/Jenkinsfile b/pipelines/deploy/api-manager/Jenkinsfile deleted file mode 100644 index 4501db1316..0000000000 --- a/pipelines/deploy/api-manager/Jenkinsfile +++ /dev/null @@ -1,25 +0,0 @@ -@Library('deploy-conf') _ -node() { - try { - stage('checkout public repo') { - cleanWs() - checkout scm - } - stage('deploy') { - values = docker_params() - currentWs = sh(returnStdout: true, script: 'pwd').trim() - ansiblePlaybook = "$currentWs/ansible/deploy.yml" - ansibleExtraArgs = "--tags \"stack-api-manager\" --vault-password-file /var/lib/jenkins/secrets/vault-pass" - values.put('currentWs', currentWs) - values.put('ansiblePlaybook', ansiblePlaybook) - values.put('ansibleExtraArgs', ansibleExtraArgs) - ansible_playbook_run(values) - archiveArtifacts 'metadata.json' - currentBuild.description = "${values.image_tag}" - } - } - catch (err) { - currentBuild.result = "FAILURE" - throw err - } -} diff --git a/pipelines/deploy/application-elasticsearch/Jenkinsfile b/pipelines/deploy/application-elasticsearch/Jenkinsfile deleted file mode 100644 index 889990da06..0000000000 --- a/pipelines/deploy/application-elasticsearch/Jenkinsfile +++ /dev/null @@ -1,38 +0,0 @@ -@Library('deploy-conf') _ -node() { - try { - String ANSI_GREEN = "\u001B[32m" - String ANSI_NORMAL = "\u001B[0m" - String ANSI_BOLD = "\u001B[1m" - String ANSI_RED = "\u001B[31m" - String ANSI_YELLOW = "\u001B[33m" - - stage('checkout public repo') { - cleanWs() - checkout scm - } - - ansiColor('xterm') { - stage('deploy'){ - values = [:] - envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-3].trim() - module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() - jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() - currentWs = sh(returnStdout: true, script: 'pwd').trim() - ansiblePlaybook = "${currentWs}/ansible/provision.yml" - ansibleExtraArgs = "--tags es --vault-password-file /var/lib/jenkins/secrets/vault-pass" - values.put('currentWs', currentWs) - values.put('env', envDir) - values.put('module', module) - values.put('jobName', jobName) - values.put('ansiblePlaybook', ansiblePlaybook) - values.put('ansibleExtraArgs', ansibleExtraArgs) - println values - ansible_playbook_run(values) - } - } - } - catch (err) { - throw err - } -} diff --git a/pipelines/deploy/badger/Jenkinsfile b/pipelines/deploy/badger/Jenkinsfile deleted file mode 100644 index 4a20c07752..0000000000 --- a/pipelines/deploy/badger/Jenkinsfile +++ /dev/null @@ -1,26 +0,0 @@ -@Library('deploy-conf') _ -node() { - try { - stage('checkout public repo') { - cleanWs() - checkout scm - } - - stage('deploy') { - values = docker_params() - currentWs = sh(returnStdout: true, script: 'pwd').trim() - ansiblePlaybook = "$currentWs/ansible/deploy-badger.yml" - ansibleExtraArgs = "--extra-vars \"hub_org=$hub_org image_name=$values.image_name image_tag=$values.image_tag service_name=badger-service\" --vault-password-file /var/lib/jenkins/secrets/vault-pass" - values.put('currentWs', currentWs) - values.put('ansiblePlaybook', ansiblePlaybook) - values.put('ansibleExtraArgs', ansibleExtraArgs) - ansible_playbook_run(values) - archiveArtifacts 'metadata.json' - currentBuild.description = "${values.image_tag}" - } - } - catch (err) { - currentBuild.result = "FAILURE" - throw err - } -} diff --git a/pipelines/deploy/cassandra-deploy/Jenkinsfile b/pipelines/deploy/cassandra-deploy/Jenkinsfile deleted file mode 100644 index efbcbf9986..0000000000 --- a/pipelines/deploy/cassandra-deploy/Jenkinsfile +++ /dev/null @@ -1,59 +0,0 @@ -@Library('deploy-conf') _ -node() { - try { - String ANSI_GREEN = "\u001B[32m" - String ANSI_NORMAL = "\u001B[0m" - String ANSI_BOLD = "\u001B[1m" - String ANSI_RED = "\u001B[31m" - String ANSI_YELLOW = "\u001B[33m" - - stage('checkout public repo') { - cleanWs() - checkout scm - } - ansiColor('xterm') { - stage('get artifact') { - values = lp_dp_params() - currentWs = sh(returnStdout: true, script: 'pwd').trim() - artifact = values.artifact_name + ":" + values.artifact_version - values.put('currentWs', currentWs) - if (params.artifact_source == "ArtifactRepo") { - println(ANSI_BOLD + ANSI_YELLOW + '''\ - Option chosen is ArtifactRepo, ignoring any previously copied artifacts and new artifacts will be downloaded from remote source - '''.stripIndent().replace("\n", " ") + ANSI_NORMAL) - ansiblePlaybook = "${currentWs}/ansible/artifacts-download.yml" - ansibleExtraArgs = """\ - --extra-vars "artifact=${artifact} - artifact_path=${currentWs}/${artifact}" - --vault-password-file /var/lib/jenkins/secrets/vault-pass - """.stripIndent().replace("\n", " ") - values.put('ansiblePlaybook', ansiblePlaybook) - values.put('ansibleExtraArgs', ansibleExtraArgs) - ansible_playbook_run(values) - } else { - println(ANSI_BOLD + ANSI_YELLOW + '''\ - Option chosen is JenkinsJob, using the artifacts copied - '''.stripIndent().replace("\n", " ") + ANSI_NORMAL) - } - } - stage('deploy artifact') { - sh """ - unzip ${artifact} - """ - ansiblePlaybook = "${currentWs}/ansible/cassandra-deploy.yml" - ansibleExtraArgs = "--vault-password-file /var/lib/jenkins/secrets/vault-pass -v" - values.put('ansiblePlaybook', ansiblePlaybook) - values.put('ansibleExtraArgs', ansibleExtraArgs) - println values - ansible_playbook_run(values) - archiveArtifacts artifacts: "${artifact}", fingerprint: true, onlyIfSuccessful: true - archiveArtifacts artifacts: 'metadata.json', onlyIfSuccessful: true - currentBuild.description = "${values.artifact_version}" - } - } - } - catch (err) { - currentBuild.result = "FAILURE" - throw err - } -} diff --git a/pipelines/deploy/config-service/Jenkinsfile b/pipelines/deploy/config-service/Jenkinsfile deleted file mode 100644 index 1ef587fa91..0000000000 --- a/pipelines/deploy/config-service/Jenkinsfile +++ /dev/null @@ -1,26 +0,0 @@ -@Library('deploy-conf') _ -node() { - try { - stage('checkout public repo') { - cleanWs() - checkout scm - } - - stage('deploy') { - values = docker_params() - currentWs = sh(returnStdout: true, script: 'pwd').trim() - ansiblePlaybook = "$currentWs/ansible/deploy.yml" - ansibleExtraArgs = "--tags \"stack-sunbird\" --extra-vars \"hub_org=$hub_org image_name=$values.image_name image_tag=$values.image_tag service_name=config-service deploy_config=True\" --vault-password-file /var/lib/jenkins/secrets/vault-pass" - values.put('currentWs', currentWs) - values.put('ansiblePlaybook', ansiblePlaybook) - values.put('ansibleExtraArgs', ansibleExtraArgs) - ansible_playbook_run(values) - archiveArtifacts 'metadata.json' - currentBuild.description = "${values.image_tag}" - } - } - catch (err) { - currentBuild.result = "FAILURE" - throw err - } -} diff --git a/pipelines/deploy/content/Jenkinsfile b/pipelines/deploy/content/Jenkinsfile deleted file mode 100644 index 707ad24bda..0000000000 --- a/pipelines/deploy/content/Jenkinsfile +++ /dev/null @@ -1,26 +0,0 @@ -@Library('deploy-conf') _ -node() { - try { - stage('checkout public repo') { - cleanWs() - checkout scm - } - - stage('deploy') { - values = docker_params() - currentWs = sh(returnStdout: true, script: 'pwd').trim() - ansiblePlaybook = "$currentWs/ansible/deploy.yml" - ansibleExtraArgs = "--tags \"stack-sunbird\" --extra-vars \"hub_org=$hub_org image_name=$values.image_name image_tag=$values.image_tag service_name=content-service deploy_content=True\" --vault-password-file /var/lib/jenkins/secrets/vault-pass" - values.put('currentWs', currentWs) - values.put('ansiblePlaybook', ansiblePlaybook) - values.put('ansibleExtraArgs', ansibleExtraArgs) - ansible_playbook_run(values) - archiveArtifacts 'metadata.json' - currentBuild.description = "${values.image_tag}" - } - } - catch (err) { - currentBuild.result = "FAILURE" - throw err - } -} diff --git a/pipelines/deploy/keycloak-realm/Jenkinsfile b/pipelines/deploy/keycloak-realm/Jenkinsfile deleted file mode 100644 index 3cb499eeca..0000000000 --- a/pipelines/deploy/keycloak-realm/Jenkinsfile +++ /dev/null @@ -1,38 +0,0 @@ -@Library('deploy-conf') _ -node() { - try { - String ANSI_GREEN = "\u001B[32m" - String ANSI_NORMAL = "\u001B[0m" - String ANSI_BOLD = "\u001B[1m" - String ANSI_RED = "\u001B[31m" - String ANSI_YELLOW = "\u001B[33m" - - stage('checkout public repo') { - cleanWs() - checkout scm - } - - ansiColor('xterm') { - stage('deploy') { - values = [:] - currentWs = sh(returnStdout: true, script: 'pwd').trim() - envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-3].trim() - module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() - jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() - ansiblePlaybook = "${currentWs}/ansible/sunbird-auth-deploy.yml" - ansibleExtraArgs = "--tags bootstrap --vault-password-file /var/lib/jenkins/secrets/vault-pass" - values.put('currentWs', currentWs) - values.put('env', envDir) - values.put('module', module) - values.put('jobName', jobName) - values.put('ansiblePlaybook', ansiblePlaybook) - values.put('ansibleExtraArgs', ansibleExtraArgs) - println values - ansible_playbook_run(values) - } - } - } - catch (err) { - throw err - } -} diff --git a/pipelines/deploy/keycloak/Jenkinsfile b/pipelines/deploy/keycloak/Jenkinsfile deleted file mode 100644 index 30f157ff65..0000000000 --- a/pipelines/deploy/keycloak/Jenkinsfile +++ /dev/null @@ -1,60 +0,0 @@ -@Library('deploy-conf') _ -node() { - try { - String ANSI_GREEN = "\u001B[32m" - String ANSI_NORMAL = "\u001B[0m" - String ANSI_BOLD = "\u001B[1m" - String ANSI_RED = "\u001B[31m" - String ANSI_YELLOW = "\u001B[33m" - - stage('checkout public repo') { - cleanWs() - checkout scm - sh "git clone https://github.com/project-sunbird/sunbird-auth.git -b release-1.14" - } - ansiColor('xterm') { - stage('get artifact') { - values = lp_dp_params() - currentWs = sh(returnStdout: true, script: 'pwd').trim() - artifact = values.artifact_name + ":" + values.artifact_version - values.put('currentWs', currentWs) - if (params.artifact_source == "ArtifactRepo") { - println(ANSI_BOLD + ANSI_YELLOW + '''\ - Option chosen is ArtifactRepo, ignoring any previously copied artifacts and new artifacts will be downloaded from remote source - '''.stripIndent().replace("\n", " ") + ANSI_NORMAL) - ansiblePlaybook = "${currentWs}/ansible/artifacts-download.yml" - ansibleExtraArgs = """\ - --extra-vars "artifact=${artifact} - artifact_path=${currentWs}/${artifact}" - --vault-password-file /var/lib/jenkins/secrets/vault-pass - """.stripIndent().replace("\n", " ") - values.put('ansiblePlaybook', ansiblePlaybook) - values.put('ansibleExtraArgs', ansibleExtraArgs) - ansible_playbook_run(values) - } else { - println(ANSI_BOLD + ANSI_YELLOW + '''\ - Option chosen is JenkinsJob, using the artifacts copied - '''.stripIndent().replace("\n", " ") + ANSI_NORMAL) - } - } - stage('deploy artifact') { - sh """ - unzip ${artifact} - """ - ansiblePlaybook = "${currentWs}/ansible/sunbird-auth-deploy.yml" - ansibleExtraArgs = "--limit keycloak --tags deploy --vault-password-file /var/lib/jenkins/secrets/vault-pass -v" - values.put('ansiblePlaybook', ansiblePlaybook) - values.put('ansibleExtraArgs', ansibleExtraArgs) - println values - ansible_playbook_run(values) - archiveArtifacts artifacts: "${artifact}", fingerprint: true, onlyIfSuccessful: true - archiveArtifacts artifacts: 'metadata.json', onlyIfSuccessful: true - currentBuild.description = "${values.artifact_version}" - } - } - } - catch (err) { - currentBuild.result = "FAILURE" - throw err - } -} diff --git a/pipelines/deploy/learner/Jenkinsfile b/pipelines/deploy/learner/Jenkinsfile deleted file mode 100644 index caa9847e83..0000000000 --- a/pipelines/deploy/learner/Jenkinsfile +++ /dev/null @@ -1,26 +0,0 @@ -@Library('deploy-conf') _ -node() { - try { - stage('checkout public repo') { - cleanWs() - checkout scm - } - - stage('deploy') { - values = docker_params() - currentWs = sh(returnStdout: true, script: 'pwd').trim() - ansiblePlaybook = "$currentWs/ansible/deploy.yml" - ansibleExtraArgs = "--tags \"stack-sunbird\" --extra-vars \"hub_org=$hub_org image_name=$values.image_name image_tag=$values.image_tag service_name=learner-service deploy_learner=True\" --vault-password-file /var/lib/jenkins/secrets/vault-pass" - values.put('currentWs', currentWs) - values.put('ansiblePlaybook', ansiblePlaybook) - values.put('ansibleExtraArgs', ansibleExtraArgs) - ansible_playbook_run(values) - archiveArtifacts 'metadata.json' - currentBuild.description = "${values.image_tag}" - } - } - catch (err) { - currentBuild.result = "FAILURE" - throw err - } -} diff --git a/pipelines/deploy/logger-elasticsearch/Jenkinsfile b/pipelines/deploy/logger-elasticsearch/Jenkinsfile deleted file mode 100644 index 1221739ac5..0000000000 --- a/pipelines/deploy/logger-elasticsearch/Jenkinsfile +++ /dev/null @@ -1,38 +0,0 @@ -@Library('deploy-conf') _ -node() { - try { - String ANSI_GREEN = "\u001B[32m" - String ANSI_NORMAL = "\u001B[0m" - String ANSI_BOLD = "\u001B[1m" - String ANSI_RED = "\u001B[31m" - String ANSI_YELLOW = "\u001B[33m" - - stage('checkout public repo') { - cleanWs() - checkout scm - } - - ansiColor('xterm') { - stage('deploy'){ - values = [:] - envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-3].trim() - module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() - jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() - values.put('currentWs', currentWs) - ansiblePlaybook = "${currentWs}/ansible/logging.yml" - ansibleExtraArgs = "--tags log-es --vault-password-file /var/lib/jenkins/secrets/vault-pass -v" - values.put('currentWs', currentWs) - values.put('env', envDir) - values.put('module', module) - values.put('jobName', jobName) - values.put('ansiblePlaybook', ansiblePlaybook) - values.put('ansibleExtraArgs', ansibleExtraArgs) - println values - ansible_playbook_run(values) - } - } - } - catch (err) { - throw err - } -} diff --git a/pipelines/deploy/logger/Jenkinsfile b/pipelines/deploy/logger/Jenkinsfile deleted file mode 100644 index 7dcb78ee52..0000000000 --- a/pipelines/deploy/logger/Jenkinsfile +++ /dev/null @@ -1,39 +0,0 @@ -@Library('deploy-conf') _ -node() { - try { - String ANSI_GREEN = "\u001B[32m" - String ANSI_NORMAL = "\u001B[0m" - String ANSI_BOLD = "\u001B[1m" - String ANSI_RED = "\u001B[31m" - String ANSI_YELLOW = "\u001B[33m" - - stage('checkout public repo') { - cleanWs() - checkout scm - } - - ansiColor('xterm') { - stage('deploy'){ - values = [:] - currentWs = sh(returnStdout: true, script: 'pwd').trim() - currentWs = sh(returnStdout: true, script: 'pwd').trim() - envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-3].trim() - module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() - jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() - ansiblePlaybook = "${currentWs}/ansible/logging.yml" - ansibleExtraArgs = "--vault-password-file /var/lib/jenkins/secrets/vault-pass -v" - values.put('currentWs', currentWs) - values.put('env', envDir) - values.put('module', module) - values.put('jobName', jobName) - values.put('ansiblePlaybook', ansiblePlaybook) - values.put('ansibleExtraArgs', ansibleExtraArgs) - println values - ansible_playbook_run(values) - } - } - } - catch (err) { - throw err - } -} diff --git a/pipelines/deploy/monitor/Core/Jenkinsfile b/pipelines/deploy/monitor/Core/Jenkinsfile deleted file mode 100644 index 2d139577ac..0000000000 --- a/pipelines/deploy/monitor/Core/Jenkinsfile +++ /dev/null @@ -1,38 +0,0 @@ -@Library('deploy-conf') _ -node() { - try { - String ANSI_GREEN = "\u001B[32m" - String ANSI_NORMAL = "\u001B[0m" - String ANSI_BOLD = "\u001B[1m" - String ANSI_RED = "\u001B[31m" - String ANSI_YELLOW = "\u001B[33m" - - stage('checkout public repo') { - cleanWs() - checkout scm - } - - ansiColor('xterm') { - stage('deploy'){ - values = [:] - currentWs = sh(returnStdout: true, script: 'pwd').trim() - envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-3].trim() - module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() - jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() - ansiblePlaybook = "${currentWs}/ansible/monitoring.yml" - ansibleExtraArgs = "--skip-tags lp_dp_monitoring --vault-password-file /var/lib/jenkins/secrets/vault-pass -v" - values.put('currentWs', currentWs) - values.put('env', envDir) - values.put('module', module) - values.put('jobName', jobName) - values.put('ansiblePlaybook', ansiblePlaybook) - values.put('ansibleExtraArgs', ansibleExtraArgs) - println values - ansible_playbook_run(values) - } - } - } - catch (err) { - throw err - } -} diff --git a/pipelines/deploy/monitor/DataPipeline/Jenkinsfile b/pipelines/deploy/monitor/DataPipeline/Jenkinsfile deleted file mode 100644 index 85f6a1ef2e..0000000000 --- a/pipelines/deploy/monitor/DataPipeline/Jenkinsfile +++ /dev/null @@ -1,38 +0,0 @@ -@Library('deploy-conf') _ -node() { - try { - String ANSI_GREEN = "\u001B[32m" - String ANSI_NORMAL = "\u001B[0m" - String ANSI_BOLD = "\u001B[1m" - String ANSI_RED = "\u001B[31m" - String ANSI_YELLOW = "\u001B[33m" - - stage('checkout public repo') { - cleanWs() - checkout scm - } - - ansiColor('xterm') { - stage('deploy'){ - values = [:] - currentWs = sh(returnStdout: true, script: 'pwd').trim() - envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-3].trim() - module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() - jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() - ansiblePlaybook = "${currentWs}/ansible/monitoring.yml" - ansibleExtraArgs = "--tags metrics-exporter,lp_dp_monitoring --vault-password-file /var/lib/jenkins/secrets/vault-pass -v" - values.put('currentWs', currentWs) - values.put('env', envDir) - values.put('module', module) - values.put('jobName', jobName) - values.put('ansiblePlaybook', ansiblePlaybook) - values.put('ansibleExtraArgs', ansibleExtraArgs) - println values - ansible_playbook_run(values) - } - } - } - catch (err) { - throw err - } -} diff --git a/pipelines/deploy/monitor/Jenkinsfile b/pipelines/deploy/monitor/Jenkinsfile deleted file mode 100644 index ef7357ffc2..0000000000 --- a/pipelines/deploy/monitor/Jenkinsfile +++ /dev/null @@ -1,38 +0,0 @@ -@Library('deploy-conf') _ -node() { - try { - String ANSI_GREEN = "\u001B[32m" - String ANSI_NORMAL = "\u001B[0m" - String ANSI_BOLD = "\u001B[1m" - String ANSI_RED = "\u001B[31m" - String ANSI_YELLOW = "\u001B[33m" - - stage('checkout public repo') { - cleanWs() - checkout scm - } - - ansiColor('xterm') { - stage('deploy'){ - values = [:] - currentWs = sh(returnStdout: true, script: 'pwd').trim() - envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-3].trim() - module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() - jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() - ansiblePlaybook = "${currentWs}/ansible/monitoring.yml" - ansibleExtraArgs = "--tags metrics-exporter --vault-password-file /var/lib/jenkins/secrets/vault-pass -v" - values.put('currentWs', currentWs) - values.put('env', envDir) - values.put('module', module) - values.put('jobName', jobName) - values.put('ansiblePlaybook', ansiblePlaybook) - values.put('ansibleExtraArgs', ansibleExtraArgs) - println values - ansible_playbook_run(values) - } - } - } - catch (err) { - throw err - } -} diff --git a/pipelines/deploy/monitor/KnowledgePlatform/Jenkinsfile b/pipelines/deploy/monitor/KnowledgePlatform/Jenkinsfile deleted file mode 100644 index 85f6a1ef2e..0000000000 --- a/pipelines/deploy/monitor/KnowledgePlatform/Jenkinsfile +++ /dev/null @@ -1,38 +0,0 @@ -@Library('deploy-conf') _ -node() { - try { - String ANSI_GREEN = "\u001B[32m" - String ANSI_NORMAL = "\u001B[0m" - String ANSI_BOLD = "\u001B[1m" - String ANSI_RED = "\u001B[31m" - String ANSI_YELLOW = "\u001B[33m" - - stage('checkout public repo') { - cleanWs() - checkout scm - } - - ansiColor('xterm') { - stage('deploy'){ - values = [:] - currentWs = sh(returnStdout: true, script: 'pwd').trim() - envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-3].trim() - module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() - jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() - ansiblePlaybook = "${currentWs}/ansible/monitoring.yml" - ansibleExtraArgs = "--tags metrics-exporter,lp_dp_monitoring --vault-password-file /var/lib/jenkins/secrets/vault-pass -v" - values.put('currentWs', currentWs) - values.put('env', envDir) - values.put('module', module) - values.put('jobName', jobName) - values.put('ansiblePlaybook', ansiblePlaybook) - values.put('ansibleExtraArgs', ansibleExtraArgs) - println values - ansible_playbook_run(values) - } - } - } - catch (err) { - throw err - } -} diff --git a/pipelines/deploy/player/Jenkinsfile b/pipelines/deploy/player/Jenkinsfile deleted file mode 100644 index 2ce6c06e26..0000000000 --- a/pipelines/deploy/player/Jenkinsfile +++ /dev/null @@ -1,25 +0,0 @@ -@Library('deploy-conf') _ -node() { - try { - stage('checkout public repo') { - cleanWs() - checkout scm - } - stage('deploy') { - values = docker_params() - currentWs = sh(returnStdout: true, script: 'pwd').trim() - ansiblePlaybook = "$currentWs/ansible/deploy.yml" - ansibleExtraArgs = "--tags \"stack-sunbird\" --extra-vars \"hub_org=$hub_org image_name=$values.image_name image_tag=$values.image_tag service_name=player deploy_stack=True\" --vault-password-file /var/lib/jenkins/secrets/vault-pass" - values.put('currentWs', currentWs) - values.put('ansiblePlaybook', ansiblePlaybook) - values.put('ansibleExtraArgs', ansibleExtraArgs) - ansible_playbook_run(values) - archiveArtifacts 'metadata.json' - currentBuild.description = "${values.image_tag}" - } - } - catch (err) { - currentBuild.result = "FAILURE" - throw err - } -} diff --git a/pipelines/deploy/proxy/Jenkinsfile b/pipelines/deploy/proxy/Jenkinsfile deleted file mode 100644 index 78696bda7f..0000000000 --- a/pipelines/deploy/proxy/Jenkinsfile +++ /dev/null @@ -1,26 +0,0 @@ -@Library('deploy-conf') _ -node() { - try { - stage('checkout public repo') { - cleanWs() - checkout scm - } - - stage('deploy') { - values = docker_params() - currentWs = sh(returnStdout: true, script: 'pwd').trim() - ansiblePlaybook = "$currentWs/ansible/deploy.yml" - ansibleExtraArgs = "--tags \"stack-proxy\" --extra-vars \"hub_org=$hub_org image_name=$values.image_name image_tag=$values.image_tag\" --vault-password-file /var/lib/jenkins/secrets/vault-pass" - values.put('currentWs', currentWs) - values.put('ansiblePlaybook', ansiblePlaybook) - values.put('ansibleExtraArgs', ansibleExtraArgs) - ansible_playbook_run(values) - archiveArtifacts 'metadata.json' - currentBuild.description = "${values.image_tag}" - } - } - catch (err) { - currentBuild.result = "FAILURE" - throw err - } -} diff --git a/pipelines/deploy/telemetry-logstash-datapipeline/Jenkinsfile b/pipelines/deploy/telemetry-logstash-datapipeline/Jenkinsfile deleted file mode 100644 index 4d4c74debb..0000000000 --- a/pipelines/deploy/telemetry-logstash-datapipeline/Jenkinsfile +++ /dev/null @@ -1,38 +0,0 @@ -@Library('deploy-conf') _ -node() { - try { - String ANSI_GREEN = "\u001B[32m" - String ANSI_NORMAL = "\u001B[0m" - String ANSI_BOLD = "\u001B[1m" - String ANSI_RED = "\u001B[31m" - String ANSI_YELLOW = "\u001B[33m" - - stage('checkout public repo') { - cleanWs() - checkout scm - } - - ansiColor('xterm') { - stage('deploy'){ - values = [:] - envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-3].trim() - module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() - jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() - currentWs = sh(returnStdout: true, script: 'pwd').trim() - ansiblePlaybook = "${currentWs}/ansible/deploy.yml" - ansibleExtraArgs = "--tags \"stack-sunbird\" --extra-vars \"service_name=telemetry-service deploy_telemetry_logstash_datapipeline=True\" --vault-password-file /var/lib/jenkins/secrets/vault-pass -v" - values.put('currentWs', currentWs) - values.put('env', envDir) - values.put('module', module) - values.put('jobName', jobName) - values.put('ansiblePlaybook', ansiblePlaybook) - values.put('ansibleExtraArgs', ansibleExtraArgs) - println values - ansible_playbook_run(values) - } - } - } - catch (err) { - throw err - } -} diff --git a/pipelines/deploy/telemetry-logstash/Jenkinsfile b/pipelines/deploy/telemetry-logstash/Jenkinsfile deleted file mode 100644 index 38b6db0a37..0000000000 --- a/pipelines/deploy/telemetry-logstash/Jenkinsfile +++ /dev/null @@ -1,38 +0,0 @@ -@Library('deploy-conf') _ -node() { - try { - String ANSI_GREEN = "\u001B[32m" - String ANSI_NORMAL = "\u001B[0m" - String ANSI_BOLD = "\u001B[1m" - String ANSI_RED = "\u001B[31m" - String ANSI_YELLOW = "\u001B[33m" - - stage('checkout public repo') { - cleanWs() - checkout scm - } - - ansiColor('xterm') { - stage('deploy'){ - values = [:] - envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-3].trim() - module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() - jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() - currentWs = sh(returnStdout: true, script: 'pwd').trim() - ansiblePlaybook = "${currentWs}/ansible/deploy.yml" - ansibleExtraArgs = "--tags \"stack-sunbird\" --extra-vars \"service_name=telemetry-service deploy_telemetry_logstash=True\" --vault-password-file /var/lib/jenkins/secrets/vault-pass -v" - values.put('currentWs', currentWs) - values.put('env', envDir) - values.put('module', module) - values.put('jobName', jobName) - values.put('ansiblePlaybook', ansiblePlaybook) - values.put('ansibleExtraArgs', ansibleExtraArgs) - println values - ansible_playbook_run(values) - } - } - } - catch (err) { - throw err - } -} diff --git a/pipelines/deploy/telemetry/Jenkinsfile b/pipelines/deploy/telemetry/Jenkinsfile deleted file mode 100644 index a7aa5dbcfc..0000000000 --- a/pipelines/deploy/telemetry/Jenkinsfile +++ /dev/null @@ -1,26 +0,0 @@ -@Library('deploy-conf') _ -node() { - try { - stage('checkout public repo') { - cleanWs() - checkout scm - } - - stage('deploy') { - values = docker_params() - currentWs = sh(returnStdout: true, script: 'pwd').trim() - ansiblePlaybook = "$currentWs/ansible/deploy.yml" - ansibleExtraArgs = "--tags \"stack-sunbird\" --extra-vars \"hub_org=$hub_org image_name=$values.image_name image_tag=$values.image_tag service_name=telemetry-service deploy_telemetry=True\" --vault-password-file /var/lib/jenkins/secrets/vault-pass" - values.put('currentWs', currentWs) - values.put('ansiblePlaybook', ansiblePlaybook) - values.put('ansibleExtraArgs', ansibleExtraArgs) - ansible_playbook_run(values) - archiveArtifacts 'metadata.json' - currentBuild.description = "${values.image_tag}" - } - } - catch (err) { - currentBuild.result = "FAILURE" - throw err - } -} diff --git a/pipelines/dockerTag.sh b/pipelines/dockerTag.sh new file mode 100755 index 0000000000..cb006feba5 --- /dev/null +++ b/pipelines/dockerTag.sh @@ -0,0 +1,23 @@ +#!/bin/sh +# Build script +# set -o errexit +set -e +e () { + echo $( echo ${1} | jq ".${2}" | sed 's/\"//g') +} +m=$(cat $METADATA_FILE) + +org=$(e "${m}" "org") +hubuser=$(e "${m}" "hubuser") +name=$(e "${m}" "name") +version=$(e "${m}" "version") + +artifactLabel=${ARTIFACT_LABEL:-gold} +PREVIOUS_LABEL=silver + +docker pull ${org}/${name}:${version}-${PREVIOUS_LABEL} +docker image tag ${org}/${name}:${version}-${PREVIOUS_LABEL} ${org}/${name}:${version}-${artifactLabel} + +docker login -u "${hubuser}" -p`cat /run/secrets/hub-pass` +docker push ${org}/${name}:${version}-${artifactLabel} +docker logout diff --git a/pipelines/documentation-jenkins-slave/Jenkinsfile.deploy-slave b/pipelines/documentation-jenkins-slave/Jenkinsfile.deploy-slave new file mode 100644 index 0000000000..902988b8ef --- /dev/null +++ b/pipelines/documentation-jenkins-slave/Jenkinsfile.deploy-slave @@ -0,0 +1,19 @@ +pipeline { + agent { + label 'general-dev' + } + stages { + stage('Deploy') { + steps { + step ([$class: 'CopyArtifact', + projectName: 'Build/Documentation_Jenkins_Slave', + filter: 'metadata.json']); + + sh 'METADATA_FILE=metadata.json ENV=dev ./pipelines/documentation-jenkins-slave/deploy.sh' + + archive includes: "metadata.json" + } + } + } +} + diff --git a/pipelines/documentation-jenkins-slave/deploy.sh b/pipelines/documentation-jenkins-slave/deploy.sh new file mode 100755 index 0000000000..625c46c1d6 --- /dev/null +++ b/pipelines/documentation-jenkins-slave/deploy.sh @@ -0,0 +1,11 @@ +#!/bin/sh +set -e +e () { + echo $( echo ${1} | jq ".${2}" | sed 's/\"//g') +} + +env=${ENV:-null} + +echo "env: ${env}" + +ansible-playbook -i ansible/inventory/$ENV ansible/jenkins-slave.yml --tags "documentation-jenkins-slave" --vault-password-file /run/secrets/vault-pass diff --git a/pipelines/es-backup/Jenkinsfile.sample b/pipelines/es-backup/Jenkinsfile.sample new file mode 100644 index 0000000000..b17f44dcc1 --- /dev/null +++ b/pipelines/es-backup/Jenkinsfile.sample @@ -0,0 +1,20 @@ +pipeline { + agent { + label 'general-staging' + } + triggers { + cron('H 0 * * *') + } + stages { + stage('Pre-Build'){ + steps { + sh('./pipelines/es-backup/installDeps.sh') + } + } + stage('Deploy') { + steps { + sh 'ENV=staging ./pipelines/es-backup/deploy.sh' + } + } + } +} diff --git a/pipelines/es-backup/deploy.sh b/pipelines/es-backup/deploy.sh new file mode 100755 index 0000000000..663c26c73f --- /dev/null +++ b/pipelines/es-backup/deploy.sh @@ -0,0 +1,6 @@ +#!/bin/sh +# Build script +# set -o errexit +set -e +ansible-playbook --version +ANSIBLE_FORCE_COLOR=true ansible-playbook -i ansible/inventory/$ENV ansible/es.yml --tags "es_backup" -v --vault-password-file /run/secrets/vault-pass diff --git a/pipelines/es-backup/installDeps.sh b/pipelines/es-backup/installDeps.sh new file mode 100755 index 0000000000..acc98d5f3a --- /dev/null +++ b/pipelines/es-backup/installDeps.sh @@ -0,0 +1,5 @@ +#!/bin/sh +# Build script +# set -o errexit +apk -v --update --no-cache add jq +apk -v add ansible=2.3.0.0-r1 diff --git a/pipelines/es-restore/Jenkinsfile.sample b/pipelines/es-restore/Jenkinsfile.sample new file mode 100644 index 0000000000..ca04227546 --- /dev/null +++ b/pipelines/es-restore/Jenkinsfile.sample @@ -0,0 +1,17 @@ +pipeline { + agent { + label 'general-staging' + } + stages { + stage('Pre-Build'){ + steps { + sh('./pipelines/es-restore/installDeps.sh') + } + } + stage('Deploy') { + steps { + sh 'ENV=staging ./pipelines/es-restore/deploy.sh' + } + } + } +} diff --git a/pipelines/es-restore/deploy.sh b/pipelines/es-restore/deploy.sh new file mode 100755 index 0000000000..a0eed000b0 --- /dev/null +++ b/pipelines/es-restore/deploy.sh @@ -0,0 +1,6 @@ +#!/bin/sh +# Build script +# set -o errexit +set -e +ansible-playbook --version +ANSIBLE_FORCE_COLOR=true ansible-playbook -i ansible/inventory/$ENV ansible/es.yml --tags "es_restore" --extra-vars "snapshot_number=$SNAPSHOT_NUMBER" -v --vault-password-file /run/secrets/vault-pass diff --git a/pipelines/es-restore/installDeps.sh b/pipelines/es-restore/installDeps.sh new file mode 100755 index 0000000000..acc98d5f3a --- /dev/null +++ b/pipelines/es-restore/installDeps.sh @@ -0,0 +1,5 @@ +#!/bin/sh +# Build script +# set -o errexit +apk -v --update --no-cache add jq +apk -v add ansible=2.3.0.0-r1 diff --git a/pipelines/jenkins-backup-upload/Jenkinsfile.admin b/pipelines/jenkins-backup-upload/Jenkinsfile.admin new file mode 100644 index 0000000000..e9554f46f9 --- /dev/null +++ b/pipelines/jenkins-backup-upload/Jenkinsfile.admin @@ -0,0 +1,18 @@ +pipeline { + agent { + label 'master' + } + triggers { + cron('@midnight') + } + stages { + stage('Deploy') { + steps { + sh ''' + cd ansible + ansible-playbook -i inventory/admin jenkins-backup.yml --vault-password-file /run/secrets/vault-pass + ''' + } + } + } +} \ No newline at end of file diff --git a/pipelines/keycloak1/deploy.sh b/pipelines/keycloak1/deploy.sh new file mode 100755 index 0000000000..2677a35b36 --- /dev/null +++ b/pipelines/keycloak1/deploy.sh @@ -0,0 +1,29 @@ +#!/bin/sh +# Build script +# set -o errexit + +#!/bin/sh +# Build script +# set -o errexit +set -e +e () { + echo $( echo ${1} | jq ".${2}" | sed 's/\"//g') +} +m=$(cat $METADATA_FILE) + +org=$(e "${m}" "org") +name=$(e "${m}" "name") +version=$(e "${m}" "version") + +artifactLabel=${ARTIFACT_LABEL:-bronze} +env=${ENV:-null} + +echo "artifactLabel: ${artifactLabel}" +echo "env: ${env}" +echo "org: ${org}" +echo "name: ${name}" +echo "version: ${version}" +echo "ANSIBLE_PATH: $ANSIBLE_PATH" + +ansible-playbook --version +ansible-playbook -i ansible/inventory/$ENV ansible/deploy.yml --tags "stack-keycloak1" --extra-vars "hub_org=${org} image_name=${name} image_tag=${version}-${artifactLabel} service_name=keycloak1 deploy_keycloak1=True" --vault-password-file /run/secrets/vault-pass diff --git a/pipelines/keycloak1/installDeps.sh b/pipelines/keycloak1/installDeps.sh new file mode 100755 index 0000000000..edee05c045 --- /dev/null +++ b/pipelines/keycloak1/installDeps.sh @@ -0,0 +1,5 @@ +#!/bin/sh +# Build script +# set -o errexit +apk -v --update --no-cache add jq +apk -v --no-cache add ansible=2.3.0.0-r1 diff --git a/pipelines/keycloak1/metadata.json b/pipelines/keycloak1/metadata.json new file mode 100644 index 0000000000..f947f2f669 --- /dev/null +++ b/pipelines/keycloak1/metadata.json @@ -0,0 +1,6 @@ +{ + "name": "keycloak_image", + "version": "3.2.1.Final", + "org": "sunbird", + "hubuser": "purplesunbird" +} \ No newline at end of file diff --git a/pipelines/keycloak2/deploy.sh b/pipelines/keycloak2/deploy.sh new file mode 100755 index 0000000000..b1df8b1f96 --- /dev/null +++ b/pipelines/keycloak2/deploy.sh @@ -0,0 +1,29 @@ +#!/bin/sh +# Build script +# set -o errexit + +#!/bin/sh +# Build script +# set -o errexit +set -e +e () { + echo $( echo ${1} | jq ".${2}" | sed 's/\"//g') +} +m=$(cat $METADATA_FILE) + +org=$(e "${m}" "org") +name=$(e "${m}" "name") +version=$(e "${m}" "version") + +artifactLabel=${ARTIFACT_LABEL:-bronze} +env=${ENV:-null} + +echo "artifactLabel: ${artifactLabel}" +echo "env: ${env}" +echo "org: ${org}" +echo "name: ${name}" +echo "version: ${version}" +echo "ANSIBLE_PATH: $ANSIBLE_PATH" + +ansible-playbook --version +ansible-playbook -i ansible/inventory/$ENV ansible/deploy.yml --tags "stack-keycloak2" --extra-vars "hub_org=${org} image_name=${name} image_tag=${version}-${artifactLabel} service_name=keycloak2 deploy_keycloak2=True" --vault-password-file /run/secrets/vault-pass diff --git a/pipelines/keycloak2/installDeps.sh b/pipelines/keycloak2/installDeps.sh new file mode 100755 index 0000000000..edee05c045 --- /dev/null +++ b/pipelines/keycloak2/installDeps.sh @@ -0,0 +1,5 @@ +#!/bin/sh +# Build script +# set -o errexit +apk -v --update --no-cache add jq +apk -v --no-cache add ansible=2.3.0.0-r1 diff --git a/pipelines/keycloak2/metadata.json b/pipelines/keycloak2/metadata.json new file mode 100644 index 0000000000..f947f2f669 --- /dev/null +++ b/pipelines/keycloak2/metadata.json @@ -0,0 +1,6 @@ +{ + "name": "keycloak_image", + "version": "3.2.1.Final", + "org": "sunbird", + "hubuser": "purplesunbird" +} \ No newline at end of file diff --git a/pipelines/log-es-backup/Jenkinsfile.sample b/pipelines/log-es-backup/Jenkinsfile.sample new file mode 100644 index 0000000000..b7763f2bd9 --- /dev/null +++ b/pipelines/log-es-backup/Jenkinsfile.sample @@ -0,0 +1,20 @@ +pipeline { + agent { + label 'general-staging' + } + triggers { + cron('H 0 * * *') + } + stages { + stage('Pre-Build'){ + steps { + sh('./pipelines/log-es-backup/installDeps.sh') + } + } + stage('Deploy') { + steps { + sh 'ENV=staging ./pipelines/log-es-backup/deploy.sh' + } + } + } +} diff --git a/pipelines/log-es-backup/deploy.sh b/pipelines/log-es-backup/deploy.sh new file mode 100755 index 0000000000..868dccaca2 --- /dev/null +++ b/pipelines/log-es-backup/deploy.sh @@ -0,0 +1,6 @@ +#!/bin/sh +# Build script +# set -o errexit +set -e +ansible-playbook --version +ANSIBLE_FORCE_COLOR=true ansible-playbook -i ansible/inventory/$ENV ansible/es.yml --tags "log_es_backup" -v --vault-password-file /run/secrets/vault-pass diff --git a/pipelines/log-es-backup/installDeps.sh b/pipelines/log-es-backup/installDeps.sh new file mode 100755 index 0000000000..acc98d5f3a --- /dev/null +++ b/pipelines/log-es-backup/installDeps.sh @@ -0,0 +1,5 @@ +#!/bin/sh +# Build script +# set -o errexit +apk -v --update --no-cache add jq +apk -v add ansible=2.3.0.0-r1 diff --git a/pipelines/log-es-restore/deploy.sh b/pipelines/log-es-restore/deploy.sh new file mode 100755 index 0000000000..2f4de577eb --- /dev/null +++ b/pipelines/log-es-restore/deploy.sh @@ -0,0 +1,6 @@ +#!/bin/sh +# Build script +# set -o errexit + +ansible-playbook --version +ANSIBLE_FORCE_COLOR=true ansible-playbook -i ansible/inventory/$ENV ansible/es.yml --tags "log_es_restore" --extra-vars "snapshot_number=$SNAPSHOT_NUMBER" -v --vault-password-file /run/secrets/vault-pass diff --git a/pipelines/log-es-restore/installDeps.sh b/pipelines/log-es-restore/installDeps.sh new file mode 100755 index 0000000000..acc98d5f3a --- /dev/null +++ b/pipelines/log-es-restore/installDeps.sh @@ -0,0 +1,5 @@ +#!/bin/sh +# Build script +# set -o errexit +apk -v --update --no-cache add jq +apk -v add ansible=2.3.0.0-r1 diff --git a/pipelines/logger-elasticsearch/Jenkinsfile.sample b/pipelines/logger-elasticsearch/Jenkinsfile.sample new file mode 100644 index 0000000000..474ae6faae --- /dev/null +++ b/pipelines/logger-elasticsearch/Jenkinsfile.sample @@ -0,0 +1,22 @@ +pipeline { + agent { + label 'general-staging' + } + stages { + stage('Pre-Build'){ + steps { + sh('chmod a+x ansible/installDeps.sh') + sh('./ansible/installDeps.sh') + } + } + + stage('Deploy') { + steps { + sh ''' + cd ansible + ansible-playbook -i inventory/staging provision.yml --tags log-es --vault-password-file /run/secrets/vault-pass + ''' + } + } + } +} \ No newline at end of file diff --git a/pipelines/logger/deploy.sh b/pipelines/logger/deploy.sh new file mode 100755 index 0000000000..48df1b43a5 --- /dev/null +++ b/pipelines/logger/deploy.sh @@ -0,0 +1,7 @@ +#!/bin/sh +# Build script +# set -o errexit + +ansible-playbook --version + +ansible-playbook -i ansible/inventory/${ENV} ansible/logging.yml --vault-password-file /run/secrets/vault-pass diff --git a/pipelines/logger/installDeps.sh b/pipelines/logger/installDeps.sh new file mode 100755 index 0000000000..acc98d5f3a --- /dev/null +++ b/pipelines/logger/installDeps.sh @@ -0,0 +1,5 @@ +#!/bin/sh +# Build script +# set -o errexit +apk -v --update --no-cache add jq +apk -v add ansible=2.3.0.0-r1 diff --git a/pipelines/mongodb-backup/Jenkinsfile.sample b/pipelines/mongodb-backup/Jenkinsfile.sample new file mode 100644 index 0000000000..3098103c8f --- /dev/null +++ b/pipelines/mongodb-backup/Jenkinsfile.sample @@ -0,0 +1,32 @@ +#!groovy + +node('general-staging') { + + currentBuild.result = "SUCCESS" + + try { + + stage('Checkout'){ + + checkout scm + } + + + + stage('Pre-Build'){ + sh('chmod a+x ansible/installDeps.sh') + sh('./ansible/installDeps.sh') + } + + stage('Build'){ + + sh('ansible-playbook -i ansible/inventory/staging ansible/mongobackup.yml --vault-password-file /run/secrets/vault-pass ') + } + + } + catch (err) { + currentBuild.result = "FAILURE" + throw err + } + +} \ No newline at end of file diff --git a/pipelines/mongodb-backup/installDeps.sh b/pipelines/mongodb-backup/installDeps.sh new file mode 100644 index 0000000000..49a927e6e5 --- /dev/null +++ b/pipelines/mongodb-backup/installDeps.sh @@ -0,0 +1 @@ +apk -v add ansible=2.3.0.0-r1 diff --git a/pipelines/mongodb/installDeps.sh b/pipelines/mongodb/installDeps.sh new file mode 100644 index 0000000000..49a927e6e5 --- /dev/null +++ b/pipelines/mongodb/installDeps.sh @@ -0,0 +1 @@ +apk -v add ansible=2.3.0.0-r1 diff --git a/pipelines/monitor/Jenkinsfile.sample b/pipelines/monitor/Jenkinsfile.sample new file mode 100644 index 0000000000..93c80c93ab --- /dev/null +++ b/pipelines/monitor/Jenkinsfile.sample @@ -0,0 +1,31 @@ +#!groovy + +node('general-staging') { + + currentBuild.result = "SUCCESS" + + try { + + stage('Checkout'){ + + checkout scm + } + + stage('Pre-Build'){ + + sh('./pipelines/monitor/installDeps.sh') + + } + + stage('Deploy'){ + + sh 'TARGET_ENV=staging ./pipelines/monitor/deploy.sh' + + } + } + catch (err) { + currentBuild.result = "FAILURE" + throw err + } + +} diff --git a/pipelines/monitor/deploy.sh b/pipelines/monitor/deploy.sh new file mode 100755 index 0000000000..a6655e4763 --- /dev/null +++ b/pipelines/monitor/deploy.sh @@ -0,0 +1,6 @@ +#!/bin/sh +# Build script +# set -o errexit + +ansible-playbook --version +ansible-playbook -i ansible/inventory/${TARGET_ENV} ansible/monitoring.yml -v --vault-password-file /run/secrets/vault-pass diff --git a/pipelines/monitor/installDeps.sh b/pipelines/monitor/installDeps.sh new file mode 100755 index 0000000000..ccc9677a01 --- /dev/null +++ b/pipelines/monitor/installDeps.sh @@ -0,0 +1,4 @@ +#!/bin/sh +# Build script +# set -o errexit +apk -v --update --no-cache add ansible=2.3.0.0-r1 diff --git a/pipelines/postgresql-backup/Jenkinsfile.sample b/pipelines/postgresql-backup/Jenkinsfile.sample new file mode 100644 index 0000000000..497b0ea9e9 --- /dev/null +++ b/pipelines/postgresql-backup/Jenkinsfile.sample @@ -0,0 +1,24 @@ +pipeline { + agent { + label 'general-staging' + } + triggers { + cron('@midnight') + } + stages { + stage('Pre-Build'){ + steps { + sh('chmod a+x ansible/installDeps.sh') + sh('./ansible/installDeps.sh') + } + } + stage('Deploy') { + steps { + sh ''' + cd ansible + ansible-playbook -i inventory/staging postgresql-backup.yml --vault-password-file /run/secrets/vault-pass + ''' + } + } + } +} \ No newline at end of file diff --git a/pipelines/postgresql-data-update/Jenkinsfile.sample b/pipelines/postgresql-data-update/Jenkinsfile.sample new file mode 100644 index 0000000000..7cff5cd9b9 --- /dev/null +++ b/pipelines/postgresql-data-update/Jenkinsfile.sample @@ -0,0 +1,21 @@ +pipeline { + agent { + label 'general-staging' + } + stages { + stage('Pre-Build'){ + steps { + sh('chmod a+x ansible/installDeps.sh') + sh('./ansible/installDeps.sh') + } + } + stage('Deploy') { + steps { + sh ''' + cd ansible + ansible-playbook -i inventory/staging postgresql-data-update.yml --vault-password-file /run/secrets/vault-pass + ''' + } + } + } +} \ No newline at end of file diff --git a/pipelines/postgresql-master/Jenkinsfile.sample b/pipelines/postgresql-master/Jenkinsfile.sample new file mode 100644 index 0000000000..05d072e1f2 --- /dev/null +++ b/pipelines/postgresql-master/Jenkinsfile.sample @@ -0,0 +1,21 @@ +pipeline { + agent { + label 'general-staging' + } + stages { + stage('Pre-Build'){ + steps { + sh('chmod a+x ansible/installDeps.sh') + sh('./ansible/installDeps.sh') + } + } + stage('Deploy') { + steps { + sh ''' + cd ansible + ansible-playbook -i inventory/staging provision.yml --tags postgresql-master --vault-password-file /run/secrets/vault-pass + ''' + } + } + } +} \ No newline at end of file diff --git a/pipelines/postgresql-restore/Jenkinsfile.sample b/pipelines/postgresql-restore/Jenkinsfile.sample new file mode 100644 index 0000000000..baea33c389 --- /dev/null +++ b/pipelines/postgresql-restore/Jenkinsfile.sample @@ -0,0 +1,37 @@ +pipeline { + agent { + label 'general-staging' + } + parameters { + string(name: 'postgresql_restore_gzip_file_name', defaultValue: '', description: 'Specify the backup file name in azure which should be restored') + } + stages { + stage('Pre-Build'){ + steps { + sh('chmod a+x ansible/installDeps.sh') + sh('./ansible/installDeps.sh') + } + } + stage('Deploy') { + steps { + sh ''' + cd ansible + ansible-playbook -i inventory/staging postgresql-restore.yml --extra-vars "postgresql_restore_gzip_file_name=${postgresql_restore_gzip_file_name}" --vault-password-file /run/secrets/vault-pass + ''' + } + } + // The postgresql config is set to defaults after restore task which recreates pg cluster + // We need to build master job to ensure configuration is as expected + // We need to build slave job to ensure it has latest restore data + stage('Configure Postgresql Master') { + steps { + build 'Postgresql_Master' + } + } + stage('Configure Postgresql Slave') { + steps { + build 'Postgresql_Slave' + } + } + } +} \ No newline at end of file diff --git a/pipelines/postgresql-slave-to-master-promotion/Jenkinsfile.sample b/pipelines/postgresql-slave-to-master-promotion/Jenkinsfile.sample new file mode 100644 index 0000000000..c267f47f47 --- /dev/null +++ b/pipelines/postgresql-slave-to-master-promotion/Jenkinsfile.sample @@ -0,0 +1,22 @@ +pipeline { + agent { + label 'general-staging' + } + stages { + stage('Pre-Build'){ + steps { + sh('chmod a+x ansible/installDeps.sh') + sh('./ansible/installDeps.sh') + } + } + stage('Deploy') { + steps { + sh ''' + cd ansible + ansible-playbook -i inventory/staging postgresql-slave-to-master-promotion.yml --tags ensure-postgresql-master-stopped --vault-password-file /run/secrets/vault-pass || echo "Ignoring error while stopping master" + ansible-playbook -i inventory/staging postgresql-slave-to-master-promotion.yml --tags postgresql-slave-to-master-promotion --vault-password-file /run/secrets/vault-pass + ''' + } + } + } +} \ No newline at end of file diff --git a/pipelines/postgresql-slave/Jenkinsfile.sample b/pipelines/postgresql-slave/Jenkinsfile.sample new file mode 100644 index 0000000000..2aae125290 --- /dev/null +++ b/pipelines/postgresql-slave/Jenkinsfile.sample @@ -0,0 +1,21 @@ +pipeline { + agent { + label 'general-staging' + } + stages { + stage('Pre-Build'){ + steps { + sh('chmod a+x ansible/installDeps.sh') + sh('./ansible/installDeps.sh') + } + } + stage('Deploy') { + steps { + sh ''' + cd ansible + ansible-playbook -i inventory/staging provision.yml --tags postgresql-slave --vault-password-file /run/secrets/vault-pass + ''' + } + } + } +} \ No newline at end of file diff --git a/pipelines/provision/cassandra/Jenkinsfile b/pipelines/provision/cassandra/Jenkinsfile deleted file mode 100644 index 0acd750e4c..0000000000 --- a/pipelines/provision/cassandra/Jenkinsfile +++ /dev/null @@ -1,38 +0,0 @@ -@Library('deploy-conf') _ -node() { - try { - String ANSI_GREEN = "\u001B[32m" - String ANSI_NORMAL = "\u001B[0m" - String ANSI_BOLD = "\u001B[1m" - String ANSI_RED = "\u001B[31m" - String ANSI_YELLOW = "\u001B[33m" - - stage('checkout public repo') { - cleanWs() - checkout scm - } - - ansiColor('xterm') { - stage('deploy'){ - values = [:] - currentWs = sh(returnStdout: true, script: 'pwd').trim() - envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-3].trim() - module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() - jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() - ansiblePlaybook = "${currentWs}/ansible/provision.yml" - ansibleExtraArgs = "--tags cassandra --vault-password-file /var/lib/jenkins/secrets/vault-pass -v" - values.put('currentWs', currentWs) - values.put('env', envDir) - values.put('module', module) - values.put('jobName', jobName) - values.put('ansiblePlaybook', ansiblePlaybook) - values.put('ansibleExtraArgs', ansibleExtraArgs) - println values - ansible_playbook_run(values) - } - } - } - catch (err) { - throw err - } -} diff --git a/pipelines/provision/jenkins-slave/Jenkinsfile b/pipelines/provision/jenkins-slave/Jenkinsfile deleted file mode 100644 index 76329059eb..0000000000 --- a/pipelines/provision/jenkins-slave/Jenkinsfile +++ /dev/null @@ -1,39 +0,0 @@ -@Library('deploy-conf') _ -node() { - try { - String ANSI_GREEN = "\u001B[32m" - String ANSI_NORMAL = "\u001B[0m" - String ANSI_BOLD = "\u001B[1m" - String ANSI_RED = "\u001B[31m" - String ANSI_YELLOW = "\u001B[33m" - - stage('checkout public repo') { - cleanWs() - checkout scm - } - - ansiColor('xterm') { - stage('deploy'){ - values = [:] - currentWs = sh(returnStdout: true, script: 'pwd').trim() - envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-3].trim() - module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() - jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() - currentWs = sh(returnStdout: true, script: 'pwd').trim() - ansiblePlaybook = "${currentWs}/devops/jenkins-slave.yml" - ansibleExtraArgs = "--tags jenkins-slave --extra-vars \"jenkins_host=${params.jenkins_host}\" --vault-password-file /var/lib/jenkins/secrets/vault-pass" - values.put('currentWs', currentWs) - values.put('env', envDir) - values.put('module', module) - values.put('jobName', jobName) - values.put('ansiblePlaybook', ansiblePlaybook) - values.put('ansibleExtraArgs', ansibleExtraArgs) - println values - ansible_playbook_run(values) - } - } - } - catch (err) { - throw err - } -} diff --git a/pipelines/provision/kafka/Jenkinsfile b/pipelines/provision/kafka/Jenkinsfile deleted file mode 100644 index ed85a29c42..0000000000 --- a/pipelines/provision/kafka/Jenkinsfile +++ /dev/null @@ -1,38 +0,0 @@ -@Library('deploy-conf') _ -node() { - try { - String ANSI_GREEN = "\u001B[32m" - String ANSI_NORMAL = "\u001B[0m" - String ANSI_BOLD = "\u001B[1m" - String ANSI_RED = "\u001B[31m" - String ANSI_YELLOW = "\u001B[33m" - - stage('checkout public repo') { - cleanWs() - checkout scm - } - - ansiColor('xterm') { - stage('deploy'){ - values = [:] - currentWs = sh(returnStdout: true, script: 'pwd').trim() - envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-3].trim() - module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() - jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() - ansiblePlaybook = "${currentWs}/ansible/provision-kafka.yml" - ansibleExtraArgs = "--vault-password-file /var/lib/jenkins/secrets/vault-pass -v" - values.put('currentWs', currentWs) - values.put('env', envDir) - values.put('module', module) - values.put('jobName', jobName) - values.put('ansiblePlaybook', ansiblePlaybook) - values.put('ansibleExtraArgs', ansibleExtraArgs) - println values - ansible_playbook_run(values) - } - } - } - catch (err) { - throw err - } -} diff --git a/pipelines/provision/keycloak/Jenkinsfile b/pipelines/provision/keycloak/Jenkinsfile deleted file mode 100644 index 80eb9281fb..0000000000 --- a/pipelines/provision/keycloak/Jenkinsfile +++ /dev/null @@ -1,38 +0,0 @@ -@Library('deploy-conf') _ -node() { - try { - String ANSI_GREEN = "\u001B[32m" - String ANSI_NORMAL = "\u001B[0m" - String ANSI_BOLD = "\u001B[1m" - String ANSI_RED = "\u001B[31m" - String ANSI_YELLOW = "\u001B[33m" - - stage('checkout public repo') { - cleanWs() - checkout scm - } - - ansiColor('xterm') { - stage('deploy'){ - values = [:] - currentWs = sh(returnStdout: true, script: 'pwd').trim() - envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-3].trim() - module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() - jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() - ansiblePlaybook = "${currentWs}/ansible/keycloak.yml" - ansibleExtraArgs = "--tags provision --vault-password-file /var/lib/jenkins/secrets/vault-pass" - values.put('currentWs', currentWs) - values.put('env', envDir) - values.put('module', module) - values.put('jobName', jobName) - values.put('ansiblePlaybook', ansiblePlaybook) - values.put('ansibleExtraArgs', ansibleExtraArgs) - println values - ansible_playbook_run(values) - } - } - } - catch (err) { - throw err - } -} diff --git a/pipelines/provision/log-es/Jenkinsfile b/pipelines/provision/log-es/Jenkinsfile deleted file mode 100644 index e4a996a69c..0000000000 --- a/pipelines/provision/log-es/Jenkinsfile +++ /dev/null @@ -1,38 +0,0 @@ -@Library('deploy-conf') _ -node() { - try { - String ANSI_GREEN = "\u001B[32m" - String ANSI_NORMAL = "\u001B[0m" - String ANSI_BOLD = "\u001B[1m" - String ANSI_RED = "\u001B[31m" - String ANSI_YELLOW = "\u001B[33m" - - stage('checkout public repo') { - cleanWs() - checkout scm - } - - ansiColor('xterm') { - stage('deploy'){ - values = [:] - envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-3].trim() - module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() - jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() - currentWs = sh(returnStdout: true, script: 'pwd').trim() - ansiblePlaybook = "${currentWs}/ansible/provision.yml" - ansibleExtraArgs = "--tags log-es --vault-password-file /var/lib/jenkins/secrets/vault-pass" - values.put('currentWs', currentWs) - values.put('env', envDir) - values.put('module', module) - values.put('jobName', jobName) - values.put('ansiblePlaybook', ansiblePlaybook) - values.put('ansibleExtraArgs', ansibleExtraArgs) - println values - ansible_playbook_run(values) - } - } - } - catch (err) { - throw err - } -} diff --git a/pipelines/provision/postgres-db-update/Jenkinsfile b/pipelines/provision/postgres-db-update/Jenkinsfile deleted file mode 100644 index f17d40c89d..0000000000 --- a/pipelines/provision/postgres-db-update/Jenkinsfile +++ /dev/null @@ -1,38 +0,0 @@ -@Library('deploy-conf') _ -node() { - try { - String ANSI_GREEN = "\u001B[32m" - String ANSI_NORMAL = "\u001B[0m" - String ANSI_BOLD = "\u001B[1m" - String ANSI_RED = "\u001B[31m" - String ANSI_YELLOW = "\u001B[33m" - - stage('checkout public repo') { - cleanWs() - checkout scm - } - - ansiColor('xterm') { - stage('deploy'){ - values = [:] - currentWs = sh(returnStdout: true, script: 'pwd').trim() - envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-3].trim() - module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() - jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() - ansiblePlaybook = "${currentWs}/ansible/postgresql-data-update.yml" - ansibleExtraArgs = "--vault-password-file /var/lib/jenkins/secrets/vault-pass -v" - values.put('currentWs', currentWs) - values.put('env', envDir) - values.put('module', module) - values.put('jobName', jobName) - values.put('ansiblePlaybook', ansiblePlaybook) - values.put('ansibleExtraArgs', ansibleExtraArgs) - println values - ansible_playbook_run(values) - } - } - } - catch (err) { - throw err - } -} diff --git a/pipelines/provision/postgres/Jenkinsfile b/pipelines/provision/postgres/Jenkinsfile deleted file mode 100644 index 65cfc5f73e..0000000000 --- a/pipelines/provision/postgres/Jenkinsfile +++ /dev/null @@ -1,38 +0,0 @@ -@Library('deploy-conf') _ -node() { - try { - String ANSI_GREEN = "\u001B[32m" - String ANSI_NORMAL = "\u001B[0m" - String ANSI_BOLD = "\u001B[1m" - String ANSI_RED = "\u001B[31m" - String ANSI_YELLOW = "\u001B[33m" - - stage('checkout public repo') { - cleanWs() - checkout scm - } - - ansiColor('xterm') { - stage('deploy'){ - values = [:] - currentWs = sh(returnStdout: true, script: 'pwd').trim() - envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-3].trim() - module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() - jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() - ansiblePlaybook = "${currentWs}/ansible/provision.yml" - ansibleExtraArgs = "--tags postgresql-master --vault-password-file /var/lib/jenkins/secrets/vault-pass -v" - values.put('currentWs', currentWs) - values.put('env', envDir) - values.put('module', module) - values.put('jobName', jobName) - values.put('ansiblePlaybook', ansiblePlaybook) - values.put('ansibleExtraArgs', ansibleExtraArgs) - println values - ansible_playbook_run(values) - } - } - } - catch (err) { - throw err - } -} diff --git a/pipelines/provision/registry/Jenkinsfile b/pipelines/provision/registry/Jenkinsfile deleted file mode 100644 index 74e0382a9b..0000000000 --- a/pipelines/provision/registry/Jenkinsfile +++ /dev/null @@ -1,50 +0,0 @@ -@Library('deploy-conf') _ -node() { - try { - String ANSI_GREEN = "\u001B[32m" - String ANSI_NORMAL = "\u001B[0m" - String ANSI_BOLD = "\u001B[1m" - String ANSI_RED = "\u001B[31m" - String ANSI_YELLOW = "\u001B[33m" - - stage('checkout public repo') { - cleanWs() - checkout scm - sh """ - rm -rf opensaber - git clone https://github.com/project-sunbird/open-saber.git opensaber - cd opensaber - ./configure-dependencies.sh - cd java - mvn clean install - cd registry - mvn clean install - cp target/registry.jar ${WORKSPACE}/ansible - cd ${WORKSPACE} - """ - } - - ansiColor('xterm') { - stage('deploy'){ - values = [:] - currentWs = sh(returnStdout: true, script: 'pwd').trim() - envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-3].trim() - module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() - jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() - ansiblePlaybook = "${currentWs}/ansible/registry.yml" - ansibleExtraArgs = "--vault-password-file /var/lib/jenkins/secrets/vault-pass" - values.put('currentWs', currentWs) - values.put('env', envDir) - values.put('module', module) - values.put('jobName', jobName) - values.put('ansiblePlaybook', ansiblePlaybook) - values.put('ansibleExtraArgs', ansibleExtraArgs) - println values - ansible_playbook_run(values) - } - } - } - catch (err) { - throw err - } -} diff --git a/pipelines/provision/secor/Jenkinsfile b/pipelines/provision/secor/Jenkinsfile deleted file mode 100644 index 69f303cfcf..0000000000 --- a/pipelines/provision/secor/Jenkinsfile +++ /dev/null @@ -1,38 +0,0 @@ -@Library('deploy-conf') _ -node() { - try { - String ANSI_GREEN = "\u001B[32m" - String ANSI_NORMAL = "\u001B[0m" - String ANSI_BOLD = "\u001B[1m" - String ANSI_RED = "\u001B[31m" - String ANSI_YELLOW = "\u001B[33m" - - stage('checkout public repo') { - cleanWs() - checkout scm - } - - ansiColor('xterm') { - stage('deploy'){ - values = [:] - currentWs = sh(returnStdout: true, script: 'pwd').trim() - envDir = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-3].trim() - module = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-2].trim() - jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() - ansiblePlaybook = "${currentWs}/ansible/provision-secor.yml" - ansibleExtraArgs = "--vault-password-file /var/lib/jenkins/secrets/vault-pass" - values.put('currentWs', currentWs) - values.put('env', envDir) - values.put('module', module) - values.put('jobName', jobName) - values.put('ansiblePlaybook', ansiblePlaybook) - values.put('ansibleExtraArgs', ansibleExtraArgs) - println values - ansible_playbook_run(values) - } - } - } - catch (err) { - throw err - } -} diff --git a/pipelines/proxy/Jenkinsfile.sample b/pipelines/proxy/Jenkinsfile.sample new file mode 100644 index 0000000000..cf39631134 --- /dev/null +++ b/pipelines/proxy/Jenkinsfile.sample @@ -0,0 +1,25 @@ +pipeline { + agent { + label 'general-staging' + } + stages { + stage('Pre-Build'){ + steps { + sh('chmod a+x ansible/installDeps.sh') + sh('./ansible/installDeps.sh') + } + } + + stage('Deploy') { + steps { + step ([$class: 'CopyArtifact', + projectName: 'Dev/Proxy', + filter: 'metadata.json']); + + sh 'METADATA_FILE=metadata.json ARTIFACT_LABEL=bronze ENV=staging ./pipelines/proxy/deploy.sh' + + archive includes: "metadata.json" + } + } + } +} \ No newline at end of file diff --git a/pipelines/proxy/deploy.sh b/pipelines/proxy/deploy.sh new file mode 100755 index 0000000000..be0a7ed992 --- /dev/null +++ b/pipelines/proxy/deploy.sh @@ -0,0 +1,23 @@ +#!/bin/sh +set -e +e () { + echo $( echo ${1} | jq ".${2}" | sed 's/\"//g') +} +m=$(cat $METADATA_FILE) + +org=$(e "${m}" "org") +name=$(e "${m}" "name") +version=$(e "${m}" "version") + +artifactLabel=${ARTIFACT_LABEL:-bronze} +env=${ENV:-null} + +echo "artifactLabel: ${artifactLabel}" +echo "env: ${env}" +echo "org: ${org}" +echo "name: ${name}" +echo "version: ${version}" + + +ansible-playbook --version +ansible-playbook -i ansible/inventory/$ENV ansible/deploy.yml --tags "stack-proxy" --extra-vars "hub_org=${org} image_name=${name} image_tag=${version}-${artifactLabel}" --vault-password-file /run/secrets/vault-pass diff --git a/pipelines/proxy/metadata.json b/pipelines/proxy/metadata.json new file mode 100644 index 0000000000..28d3fc61c0 --- /dev/null +++ b/pipelines/proxy/metadata.json @@ -0,0 +1,6 @@ +{ + "name": "proxy", + "version": "0.0.1", + "org": "sunbird", + "hubuser": "purplesunbird" +} \ No newline at end of file diff --git a/pipelines/summary/Jenkinsfile b/pipelines/summary/Jenkinsfile deleted file mode 100644 index 2fe23cebb1..0000000000 --- a/pipelines/summary/Jenkinsfile +++ /dev/null @@ -1,5 +0,0 @@ -@Library('deploy-conf') _ -node(){ - cleanWs() - deployed_versions() -} diff --git a/pipelines/sunbird-actor-service/Jenkinsfile.sample b/pipelines/sunbird-actor-service/Jenkinsfile.sample new file mode 100644 index 0000000000..34da7fa335 --- /dev/null +++ b/pipelines/sunbird-actor-service/Jenkinsfile.sample @@ -0,0 +1,34 @@ +#!groovy + +node('general-staging') { + + currentBuild.result = "SUCCESS" + + try { + + stage('Checkout'){ + + checkout scm + } + + stage('Pre-Build'){ + + sh('./pipelines/sunbird-actor-service/installDeps.sh') + + } + + stage('Deploy'){ + step ([$class: 'CopyArtifact', + projectName: 'Dev/Sunbird_ActorService_Deploy_Dev', + filter: 'metadata.json']); + sh 'METADATA_FILE=metadata.json ARTIFACT_LABEL=silver ENV=staging ./pipelines/sunbird-actor-service/deploy.sh' + archive includes: "metadata.json" + } + + } + catch (err) { + currentBuild.result = "FAILURE" + throw err + } + +} diff --git a/pipelines/sunbird-actor-service/deploy.sh b/pipelines/sunbird-actor-service/deploy.sh new file mode 100755 index 0000000000..71fb4c1c4b --- /dev/null +++ b/pipelines/sunbird-actor-service/deploy.sh @@ -0,0 +1,29 @@ +#!/bin/sh +# Build script +# set -o errexit + +#!/bin/sh +# Build script +# set -o errexit +set -e +e () { + echo $( echo ${1} | jq ".${2}" | sed 's/\"//g') +} +m=$(cat $METADATA_FILE) + +org=$(e "${m}" "org") +name=$(e "${m}" "name") +version=$(e "${m}" "version") + +artifactLabel=${ARTIFACT_LABEL:-bronze} +env=${ENV:-null} + +echo "artifactLabel: ${artifactLabel}" +echo "env: ${env}" +echo "org: ${org}" +echo "name: ${name}" +echo "version: ${version}" +echo "ANSIBLE_PATH: $ANSIBLE_PATH" + +ansible-playbook --version +ansible-playbook -i ansible/inventory/$ENV ansible/deploy.yml --tags "stack-sunbird" --extra-vars "hub_org=${org} image_name=${name} image_tag=${version}-${artifactLabel} service_name=actor-service deploy_actor=True" --vault-password-file /run/secrets/vault-pass diff --git a/pipelines/sunbird-actor-service/installDeps.sh b/pipelines/sunbird-actor-service/installDeps.sh new file mode 100755 index 0000000000..edee05c045 --- /dev/null +++ b/pipelines/sunbird-actor-service/installDeps.sh @@ -0,0 +1,5 @@ +#!/bin/sh +# Build script +# set -o errexit +apk -v --update --no-cache add jq +apk -v --no-cache add ansible=2.3.0.0-r1 diff --git a/pipelines/sunbird-actor-service/metadata.json b/pipelines/sunbird-actor-service/metadata.json new file mode 100644 index 0000000000..950e154ead --- /dev/null +++ b/pipelines/sunbird-actor-service/metadata.json @@ -0,0 +1,6 @@ +{ + "name": "actor-service", + "version": "0.0.1", + "org": "sunbird", + "hubuser": "purplesunbird" +} \ No newline at end of file diff --git a/pipelines/sunbird-bootstrap/Jenkinsfile.db.sample b/pipelines/sunbird-bootstrap/Jenkinsfile.db.sample new file mode 100644 index 0000000000..a1fe617a3b --- /dev/null +++ b/pipelines/sunbird-bootstrap/Jenkinsfile.db.sample @@ -0,0 +1,25 @@ +#!groovy + +node('general-staging') { + currentBuild.result = "SUCCESS" + + try { + + stage('Checkout'){ + checkout scm + } + + stage('Pre-Build'){ + sh('chmod a+x ansible/installDeps.sh') + sh('./ansible/installDeps.sh') + } + + stage('Build'){ + sh('ansible-playbook -i ansible/inventory/db-bootstrap ansible/bootstrap.yml --extra-vars "hosts=staging bootstrap_secret_file=bootstrap" --vault-password-file /run/secrets/vault-pass ') + } + } + catch (err) { + currentBuild.result = "FAILURE" + throw err + } +} diff --git a/pipelines/sunbird-bootstrap/Jenkinsfile.sample b/pipelines/sunbird-bootstrap/Jenkinsfile.sample new file mode 100644 index 0000000000..b200f1fa92 --- /dev/null +++ b/pipelines/sunbird-bootstrap/Jenkinsfile.sample @@ -0,0 +1,32 @@ +#!groovy + +node('general-staging') { + + currentBuild.result = "SUCCESS" + + try { + + stage('Checkout'){ + + checkout scm + } + + + + stage('Pre-Build'){ + sh('chmod a+x ansible/installDeps.sh') + sh('./ansible/installDeps.sh') + } + + stage('Build'){ + + sh('ansible-playbook -i ansible/inventory/admin ansible/bootstrap.yml --extra-vars "hosts=staging" --vault-password-file /run/secrets/vault-pass ') + } + + } + catch (err) { + currentBuild.result = "FAILURE" + throw err + } + +} diff --git a/pipelines/sunbird-bootstrap/installDeps.sh b/pipelines/sunbird-bootstrap/installDeps.sh new file mode 100644 index 0000000000..49a927e6e5 --- /dev/null +++ b/pipelines/sunbird-bootstrap/installDeps.sh @@ -0,0 +1 @@ +apk -v add ansible=2.3.0.0-r1 diff --git a/pipelines/sunbird-content-service/Jenkinsfile.sample b/pipelines/sunbird-content-service/Jenkinsfile.sample new file mode 100644 index 0000000000..f4cece38a3 --- /dev/null +++ b/pipelines/sunbird-content-service/Jenkinsfile.sample @@ -0,0 +1,34 @@ +#!groovy + +node('general-staging') { + + currentBuild.result = "SUCCESS" + + try { + + stage('Checkout'){ + + checkout scm + } + + stage('Pre-Build'){ + + sh('./pipelines/sunbird-content-service/installDeps.sh') + + } + + stage('Deploy'){ + step ([$class: 'CopyArtifact', + projectName: 'Dev/Sunbird_ContentService_Deploy_Dev', + filter: 'metadata.json']); + sh 'METADATA_FILE=metadata.json ARTIFACT_LABEL=silver ENV=staging ./pipelines/sunbird-content-service/deploy.sh' + archive includes: "metadata.json" + } + + } + catch (err) { + currentBuild.result = "FAILURE" + throw err + } + +} diff --git a/pipelines/sunbird-content-service/deploy.sh b/pipelines/sunbird-content-service/deploy.sh new file mode 100755 index 0000000000..d76111e223 --- /dev/null +++ b/pipelines/sunbird-content-service/deploy.sh @@ -0,0 +1,29 @@ +#!/bin/sh +# Build script +# set -o errexit + +#!/bin/sh +# Build script +# set -o errexit +set -e +e () { + echo $( echo ${1} | jq ".${2}" | sed 's/\"//g') +} +m=$(cat $METADATA_FILE) + +org=$(e "${m}" "org") +name=$(e "${m}" "name") +version=$(e "${m}" "version") + +artifactLabel=${ARTIFACT_LABEL:-bronze} +env=${ENV:-null} + +echo "artifactLabel: ${artifactLabel}" +echo "env: ${env}" +echo "org: ${org}" +echo "name: ${name}" +echo "version: ${version}" +echo "ANSIBLE_PATH: $ANSIBLE_PATH" + +ansible-playbook --version +ansible-playbook -i ansible/inventory/$ENV ansible/deploy.yml --tags "stack-sunbird" --extra-vars "hub_org=${org} image_name=${name} image_tag=${version}-${artifactLabel} service_name=content_service deploy_stack=True" --vault-password-file /run/secrets/vault-pass diff --git a/pipelines/sunbird-content-service/installDeps.sh b/pipelines/sunbird-content-service/installDeps.sh new file mode 100755 index 0000000000..edee05c045 --- /dev/null +++ b/pipelines/sunbird-content-service/installDeps.sh @@ -0,0 +1,5 @@ +#!/bin/sh +# Build script +# set -o errexit +apk -v --update --no-cache add jq +apk -v --no-cache add ansible=2.3.0.0-r1 diff --git a/pipelines/sunbird-content-service/metadata.json b/pipelines/sunbird-content-service/metadata.json new file mode 100644 index 0000000000..c5b9f7f9f6 --- /dev/null +++ b/pipelines/sunbird-content-service/metadata.json @@ -0,0 +1,6 @@ +{ + "name": "content_service", + "version": "0.0.1", + "org": "sunbird", + "hubuser": "purplesunbird" +} \ No newline at end of file diff --git a/pipelines/sunbird-learner-service/Jenkinsfile.sample b/pipelines/sunbird-learner-service/Jenkinsfile.sample new file mode 100644 index 0000000000..aa21c6bccc --- /dev/null +++ b/pipelines/sunbird-learner-service/Jenkinsfile.sample @@ -0,0 +1,33 @@ +#!groovy + +node('general-staging') { + + currentBuild.result = "SUCCESS" + + try { + + stage('Checkout'){ + + checkout scm + } + + stage('Pre-Build'){ + + sh('./pipelines/sunbird-learner-service/installDeps.sh') + + } + + stage('Deploy'){ + step ([$class: 'CopyArtifact', + projectName: 'Dev/Sunbird_LearnerService_Deploy_Dev', + filter: 'metadata.json']); + sh 'METADATA_FILE=metadata.json ARTIFACT_LABEL=silver ENV=staging ./pipelines/sunbird-learner-service/deploy.sh' + archive includes: "metadata.json" + } + } + catch (err) { + currentBuild.result = "FAILURE" + throw err + } + +} diff --git a/pipelines/sunbird-learner-service/deploy.sh b/pipelines/sunbird-learner-service/deploy.sh new file mode 100755 index 0000000000..6b1a2e3953 --- /dev/null +++ b/pipelines/sunbird-learner-service/deploy.sh @@ -0,0 +1,29 @@ +#!/bin/sh +# Build script +# set -o errexit + +#!/bin/sh +# Build script +# set -o errexit +set -e +e () { + echo $( echo ${1} | jq ".${2}" | sed 's/\"//g') +} +m=$(cat $METADATA_FILE) + +org=$(e "${m}" "org") +name=$(e "${m}" "name") +version=$(e "${m}" "version") + +artifactLabel=${ARTIFACT_LABEL:-bronze} +env=${ENV:-null} + +echo "artifactLabel: ${artifactLabel}" +echo "env: ${env}" +echo "org: ${org}" +echo "name: ${name}" +echo "version: ${version}" +echo "ANSIBLE_PATH: $ANSIBLE_PATH" + +ansible-playbook --version +ansible-playbook -i ansible/inventory/$ENV ansible/deploy.yml --tags "stack-sunbird" --extra-vars "hub_org=${org} image_name=${name} image_tag=${version}-${artifactLabel} service_name=learner-service deploy_learner=True" --vault-password-file /run/secrets/vault-pass diff --git a/pipelines/sunbird-learner-service/installDeps.sh b/pipelines/sunbird-learner-service/installDeps.sh new file mode 100755 index 0000000000..edee05c045 --- /dev/null +++ b/pipelines/sunbird-learner-service/installDeps.sh @@ -0,0 +1,5 @@ +#!/bin/sh +# Build script +# set -o errexit +apk -v --update --no-cache add jq +apk -v --no-cache add ansible=2.3.0.0-r1 diff --git a/pipelines/sunbird-learner-service/metadata.json b/pipelines/sunbird-learner-service/metadata.json new file mode 100644 index 0000000000..4c1ea90071 --- /dev/null +++ b/pipelines/sunbird-learner-service/metadata.json @@ -0,0 +1,6 @@ +{ + "name": "learner_service", + "version": "0.0.1", + "org": "sunbird", + "hubuser": "purplesunbird" +} \ No newline at end of file diff --git a/pipelines/sunbird-player/Jenkinsfile.sample b/pipelines/sunbird-player/Jenkinsfile.sample new file mode 100644 index 0000000000..0ad38e8059 --- /dev/null +++ b/pipelines/sunbird-player/Jenkinsfile.sample @@ -0,0 +1,34 @@ +#!groovy + +node('general-staging') { + + currentBuild.result = "SUCCESS" + + try { + + stage('Checkout'){ + + checkout scm + } + + stage('Pre-Build'){ + + sh('./pipelines/sunbird-player/installDeps.sh') + + } + + stage('Deploy'){ + step ([$class: 'CopyArtifact', + projectName: 'Dev/Sunbird_Player_Deploy_Dev', + filter: 'metadata.json']); + sh 'METADATA_FILE=metadata.json ARTIFACT_LABEL=silver ENV=staging ./pipelines/sunbird-player/deploy.sh' + archive includes: "metadata.json" + } + + } + catch (err) { + currentBuild.result = "FAILURE" + throw err + } + +} diff --git a/pipelines/sunbird-player/deploy.sh b/pipelines/sunbird-player/deploy.sh new file mode 100755 index 0000000000..ee9df8f02e --- /dev/null +++ b/pipelines/sunbird-player/deploy.sh @@ -0,0 +1,29 @@ +#!/bin/sh +# Build script +# set -o errexit + +#!/bin/sh +# Build script +# set -o errexit +set -e +e () { + echo $( echo ${1} | jq ".${2}" | sed 's/\"//g') +} +m=$(cat $METADATA_FILE) + +org=$(e "${m}" "org") +name=$(e "${m}" "name") +version=$(e "${m}" "version") + +artifactLabel=${ARTIFACT_LABEL:-bronze} +env=${ENV:-null} + +echo "artifactLabel: ${artifactLabel}" +echo "env: ${env}" +echo "org: ${org}" +echo "name: ${name}" +echo "version: ${version}" +echo "ANSIBLE_PATH: $ANSIBLE_PATH" + +ansible-playbook --version +ansible-playbook -i ansible/inventory/$ENV ansible/deploy.yml --tags "stack-sunbird" --extra-vars "hub_org=${org} image_name=${name} image_tag=${version}-${artifactLabel} service_name=player deploy_stack=True" --vault-password-file /run/secrets/vault-pass diff --git a/pipelines/sunbird-player/installDeps.sh b/pipelines/sunbird-player/installDeps.sh new file mode 100755 index 0000000000..7e4676ee49 --- /dev/null +++ b/pipelines/sunbird-player/installDeps.sh @@ -0,0 +1,5 @@ +#!/bin/sh +# Build script +# set -o errexit +apk -v --update --no-cache add jq +apk -v --update --no-cache add ansible=2.3.0.0-r1 diff --git a/pipelines/sunbird-player/metadata.json b/pipelines/sunbird-player/metadata.json new file mode 100644 index 0000000000..657eb7dc36 --- /dev/null +++ b/pipelines/sunbird-player/metadata.json @@ -0,0 +1,6 @@ +{ + "name": "player", + "version": "0.0.6", + "org": "sunbird", + "hubuser": "purplesunbird" +} \ No newline at end of file diff --git a/pipelines/sunbird-telemetry-service/Jenkinsfile.sample b/pipelines/sunbird-telemetry-service/Jenkinsfile.sample new file mode 100644 index 0000000000..42a44a13c7 --- /dev/null +++ b/pipelines/sunbird-telemetry-service/Jenkinsfile.sample @@ -0,0 +1,33 @@ +#!groovy + +node('general-staging') { + + currentBuild.result = "SUCCESS" + + try { + + stage('Checkout'){ + + checkout scm + } + + stage('Pre-Build'){ + + sh('./pipelines/sunbird-telemetry-service/installDeps.sh') + + } + + stage('Deploy'){ + step ([$class: 'CopyArtifact', + projectName: 'Dev/Sunbird_TelemetryService_Deploy_Dev', + filter: 'metadata.json']); + sh 'METADATA_FILE=metadata.json ARTIFACT_LABEL=silver ENV=staging ./pipelines/sunbird-telemetry-service/deploy.sh' + archive includes: "metadata.json" + } + } + catch (err) { + currentBuild.result = "FAILURE" + throw err + } + +} diff --git a/pipelines/sunbird-telemetry-service/deploy.sh b/pipelines/sunbird-telemetry-service/deploy.sh new file mode 100755 index 0000000000..01a9bb96ba --- /dev/null +++ b/pipelines/sunbird-telemetry-service/deploy.sh @@ -0,0 +1,29 @@ +#!/bin/sh +# Build script +# set -o errexit + +#!/bin/sh +# Build script +# set -o errexit +set -e +e () { + echo $( echo ${1} | jq ".${2}" | sed 's/\"//g') +} +m=$(cat $METADATA_FILE) + +org=$(e "${m}" "org") +name=$(e "${m}" "name") +version=$(e "${m}" "version") + +artifactLabel=${ARTIFACT_LABEL:-bronze} +env=${ENV:-null} + +echo "artifactLabel: ${artifactLabel}" +echo "env: ${env}" +echo "org: ${org}" +echo "name: ${name}" +echo "version: ${version}" +echo "ANSIBLE_PATH: $ANSIBLE_PATH" + +ansible-playbook --version +ansible-playbook -i ansible/inventory/$ENV ansible/deploy.yml --tags "stack-sunbird" --extra-vars "hub_org=${org} image_name=${name} image_tag=${version}-${artifactLabel} service_name=telemetry-service deploy_telemetry=True" --vault-password-file /run/secrets/vault-pass diff --git a/pipelines/sunbird-telemetry-service/installDeps.sh b/pipelines/sunbird-telemetry-service/installDeps.sh new file mode 100755 index 0000000000..edee05c045 --- /dev/null +++ b/pipelines/sunbird-telemetry-service/installDeps.sh @@ -0,0 +1,5 @@ +#!/bin/sh +# Build script +# set -o errexit +apk -v --update --no-cache add jq +apk -v --no-cache add ansible=2.3.0.0-r1 diff --git a/pipelines/sunbird-telemetry-service/metadata.json b/pipelines/sunbird-telemetry-service/metadata.json new file mode 100644 index 0000000000..3a2d5a0fb2 --- /dev/null +++ b/pipelines/sunbird-telemetry-service/metadata.json @@ -0,0 +1,6 @@ +{ + "name": "telemetry-service", + "version": "0.0.1", + "org": "sunbird", + "hubuser": "purplesunbird" +} \ No newline at end of file diff --git a/pipelines/swarm-agent-docker-prune/Jenkinsfile.sample b/pipelines/swarm-agent-docker-prune/Jenkinsfile.sample new file mode 100644 index 0000000000..67ae6ebf10 --- /dev/null +++ b/pipelines/swarm-agent-docker-prune/Jenkinsfile.sample @@ -0,0 +1,18 @@ +pipeline { + agent { + label 'general-staging' + } + triggers { + cron('@midnight') + } + stages { + stage('Deploy') { + steps { + sh ''' + cd ansible + ansible-playbook -v -i inventory/staging swarm-agent-docker-prune.yml --vault-password-file /run/secrets/vault-pass + ''' + } + } + } +} \ No newline at end of file diff --git a/pipelines/upload/artifacts/Jenkinsfile b/pipelines/upload/artifacts/Jenkinsfile deleted file mode 100644 index 1f7a78ae03..0000000000 --- a/pipelines/upload/artifacts/Jenkinsfile +++ /dev/null @@ -1,30 +0,0 @@ -@Library('deploy-conf') _ -node() { - try { - stage('checkout public repo') { - cleanWs() - checkout scm - } - stage('Artifact Upload') { - values = lp_dp_params() - currentWs = sh(returnStdout: true, script: 'pwd').trim() - artifact = values.artifact_name + ":" + values.artifact_version - if(params.artifact_source == "ArtifactRepo") - { - ansiblePlaybook = "${currentWs}/ansible/artifacts-upload.yml" - ansibleExtraArgs = "--extra-vars \"artifact=${artifact} artifact_path=${currentWs}/${artifact}\" --vault-password-file /var/lib/jenkins/secrets/vault-pass" - values.put('currentWs', currentWs) - values.put('ansiblePlaybook', ansiblePlaybook) - values.put('ansibleExtraArgs', ansibleExtraArgs) - ansible_playbook_run(values) - } - archiveArtifacts artifacts: "${artifact}", fingerprint: true, onlyIfSuccessful: true - archiveArtifacts artifacts: 'metadata.json', onlyIfSuccessful: true - currentBuild.description = "${values.artifact_version}" - } - } - catch (err) { - currentBuild.result = "FAILURE" - throw err - } -} diff --git a/pipelines/upload/docker/Jenkinsfile b/pipelines/upload/docker/Jenkinsfile deleted file mode 100644 index efb515bfbb..0000000000 --- a/pipelines/upload/docker/Jenkinsfile +++ /dev/null @@ -1,29 +0,0 @@ -@Library('deploy-conf') _ -node(){ - try { - stage('checkout public repo') { - cleanWs() - checkout scm - } - - stage('Artifact Upload') { - values = docker_params() - if(params.artifact_source == "ArtifactRepo") { - currentWs = sh(returnStdout: true, script: 'pwd').trim() - ansiblePlaybook = "$currentWs/ansible/docker_image_push.yml" - ansibleExtraArgs = "--extra-vars \"hub_org=${hub_org} image_name=${values.image_name} image_tag=${values.image_tag}\" --vault-password-file /var/lib/jenkins/secrets/vault-pass" - values.put('currentWs', currentWs) - values.put('ansiblePlaybook', ansiblePlaybook) - values.put('ansibleExtraArgs', ansibleExtraArgs) - ansible_playbook_run(values) - } - archiveArtifacts 'metadata.json' - currentBuild.description = "${values.image_tag}" - } - } - - catch (err) { - currentBuild.result = "FAILURE" - throw err - } -} diff --git a/pipelines/upload/plugins/Jenkinsfile b/pipelines/upload/plugins/Jenkinsfile deleted file mode 100644 index 4a02550bbd..0000000000 --- a/pipelines/upload/plugins/Jenkinsfile +++ /dev/null @@ -1,31 +0,0 @@ -@Library('deploy-conf') _ -node() { - try { - stage('checkout public repo') { - cleanWs() - checkout scm - } - stage('Artifact Upload') { - values = lp_dp_params() - values.put('module', 'Core') - currentWs = sh(returnStdout: true, script: 'pwd').trim() - artifact = values.artifact_name + ":" + values.artifact_version - if(params.artifact_source == "ArtifactRepo") - { - ansiblePlaybook = "${currentWs}/ansible/artifacts-upload.yml" - ansibleExtraArgs = "--extra-vars \"artifact=${artifact} artifact_path=${currentWs}/${artifact}\" --vault-password-file /var/lib/jenkins/secrets/vault-pass" - values.put('currentWs', currentWs) - values.put('ansiblePlaybook', ansiblePlaybook) - values.put('ansibleExtraArgs', ansibleExtraArgs) - ansible_playbook_run(values) - } - archiveArtifacts artifacts: "${artifact}", fingerprint: true, onlyIfSuccessful: true - archiveArtifacts artifacts: 'metadata.json', onlyIfSuccessful: true - currentBuild.description = "${values.artifact_version}" - } - } - catch (err) { - currentBuild.result = "FAILURE" - throw err - } -} diff --git a/private_repo/ansible/inventory/dev/Core/common.yml b/private_repo/ansible/inventory/dev/Core/common.yml deleted file mode 100644 index 5dcc809231..0000000000 --- a/private_repo/ansible/inventory/dev/Core/common.yml +++ /dev/null @@ -1,72 +0,0 @@ -########################################## -# Starting Of Core VARS -env: #Name of the environment, e.g. dev, staging or production. -domain_name: #Domain on which the portal will be accessed. e.g. staging.{implementation-name}.org -proto: # Protocol -bootstrap_user: -bootstrap_key_path: -ssh_public_key_deployer: "" # SSH Public key for deployer user, with which ansible will execute tasks - -ekstep_s3_env: qa # dev or qa of ekstep for plugins -learningservice_ip: # Load balancer IP for learning server -searchservice_ip: # search service Load balancer IP -analyticsapi_ip: # Analytics Service Load Balancer IP -keycloak_url: "" # Keycloak Load balancer IP; eg http://10.10.10.10 -sunbird_default_channel: # Organization channel name which portal will connect to -sunbird_app_name: # By default app name will be sunbird -azure_account_name: # Storage account name for blobs -sunbird_content_azure_storage_container: # Conatainer store assets/public -swarm_load_balancer: # Loadbalancer ip to push the logspout result to logstash in swarm - -artifacts_container: '' # Azure blob container name to save built artifacts - -## Mail config -mail_server_host: -mail_server_username: "" -alerts_mailing_list : "" # Comma separated mail list for Alerts; eg: user1@mail.com, user2@mail.com -sunbird_mail_server_from_email: # Email ID that should be as from address in mails - -# Kibana oauth authorized domains; for accessing kibana dashboard -kibana_oauth_authenticated_email_domains: - - domain1 - - domain2 -kibana_oauth_authenticated_email_ids: - - email1 - - email2 -monitor_alerts_mail_from_email: # From Address for alert mails -sunbird_msg_sender: # SMS from Address; atleast 6 char -sunbird_android_app_url: "" # Playstore url of android app; default is subird.org - -# NOT MANDATORY VARS -keycloak_api_management_user_email: "admin@sunbird.org" -jenkins_url: # Jenkins urls to be accessed from slaves; eg "http://10.20.0.12:8080/jenkins" -sunbird_installation_email: "admin@sunbird.org" # fallback email for badger badge creation if the user doesn't have email address. -upstream_url: "{{azure_account_name}}.blob.core.windows.net/{{sunbird_content_azure_storage_container}}" # Proxy url to get /assets/public - - -####################### Please Check me ############################# -sunbird_ekstep_api_base_url: "https://{{ekstep_s3_env}}.ekstep.in/api" #API base URL of the Ekstep environment. Use `https://qa.ekstep.in/api` for non-prod deployments, and use `https://api.ekstep.in/` for prod deployment. -sunbird_data_service_api_base_url: "{{sunbird_ekstep_api_base_url}}" -telemetry_proxy_url: "" -sunbird_telemetry_api: "{{sunbird_ekstep_api_base_url}}/data/v3/telemetry" -sunbird_language_service_api_base_url: '{{sunbird_ekstep_api_base_url}}/language' - # Following variable gets called for assets/public from Proxy -badger_url: http://azureaccountname.blob.core.windows.net/ # Is it a dummy var? -sunbird_installation_display_name: "{{sunbird_app_name}} {{env}}" - -## Not used -project: "sunbird" - - -################################################ - -# Keycloak values can be merged to keycloak role, once PR is merged -keycloak_build_src: "keycloak_build" -keycloak_ver: "keycloak-3.2.0.Final" -keycloak_sms_provider_build: "keycloak-email-phone-autthenticator-1.0-SNAPSHOT.jar" -keycloak_sms_provider_templates_src: "templates.tar.gz" -keycloak_sms_provider_templates_dest: "/opt/keycloak/themes/sunbird/login" -keycloak_ekstep_sunbird_login_theme_file: "login.tar.gz" -keycloak_ekstep_sunbird_login_theme_dest: "/opt/keycloak/themes/sunbird/login" -keycloak_postgresql: "postgresql-9.4.1212.jar" -sunbird_auth_version: 1.0v diff --git a/private_repo/ansible/inventory/dev/Core/hosts b/private_repo/ansible/inventory/dev/Core/hosts deleted file mode 100644 index 5adff87bb9..0000000000 --- a/private_repo/ansible/inventory/dev/Core/hosts +++ /dev/null @@ -1,126 +0,0 @@ -[swarm-manager-1] -18.0.0.15 swarm_master=true - -[swarm-manager:children] -swarm-manager-1 - -[keycloak-1] -18.0.0.9 - -[keycloak:children] -keycloak-1 - -[log-es-1] -18.0.0.15 node_name=refactor-log-es-1 es_etc_node_master=true es_etc_node_data=true - -[log-es:children] -log-es-1 - -[swarm-agent-for-prometheus-1] -18.0.0.15 - -[swarm-agent-for-prometheus:children] -swarm-agent-for-prometheus-1 - -[swarm-agent-for-grafana-1] -18.0.0.15 - -[swarm-agent-for-grafana:children] -swarm-agent-for-grafana-1 - -[swarm-agent-for-alertmanager-1] -18.0.0.15 - - -[es-1] -18.0.0.9 es_instance_name=es-1 es_etc_node_master=true es_etc_node_data=true - -[es-backup:children] -es-1 - -[log-es-backup:children] -log-es-1 - -[es:children] -es-1 - -[cassandra-1] -18.0.0.9 - -[cassandra:children] -cassandra-1 - -[postgresql-master-1] -18.0.0.9 - -[postgresql-master:children] -postgresql-master-1 - -[postgresql-slave-1] -18.0.0.9 - -[postgresql-slave:children] -postgresql-slave-1 - -[postgres:children] -postgresql-slave -postgresql-master - -[kafka-1] -18.0.0.13 kafka_id=1 - -[processing-cluster-kafka] -18.0.0.13 - -[telemetry-search-cluster] -18.0.0.13 - -[kafka:children] -kafka-1 - -[local] -localhost - -[swarm-agent-for-alertmanager:children] -swarm-agent-for-alertmanager-1 - -[kong-api] -localhost - -[swarm-bootstrap-manager:children] -swarm-manager - -[swarm-nodes:children] -swarm-manager -swarm-bootstrap-manager -swarm-agent-for-prometheus -swarm-agent-for-grafana -swarm-agent-for-alertmanager - -[node-exporter:children] -swarm-manager - -[log-forwarder:children] -swarm-manager - -[core:children] -es -log-es -cassandra -postgresql-master -postgresql-slave -swarm-nodes -swarm-manager -kafka -keycloak - -[env:children] -core -local - -[log-forwarder:children] -swarm-manager - -[all:vars] -ansible_ssh_user=deployer -ansible_ssh_private_key_file=/run/secrets/deployer_ssh_key \ No newline at end of file diff --git a/private_repo/ansible/inventory/dev/Core/secrets.yml b/private_repo/ansible/inventory/dev/Core/secrets.yml deleted file mode 100644 index 6c499df2d5..0000000000 --- a/private_repo/ansible/inventory/dev/Core/secrets.yml +++ /dev/null @@ -1,63 +0,0 @@ -# !! Might deprecate -core_vault_sunbird_ekstep_api_key: -core_vault_sunbird_encryption_key: -core_vault_kong__test_jwt: - -############# Core ####################### -####### Secrets ####### - -core_vault_sunbird_trampoline_secret: # some 8 digit password for keycloak sso user -core_vault_postgres_password: -core_vault_sunbird_azure_storage_key : -core_vault_docker_registry_url: "https://index.docker.io/v1" # use this value if using dockerhub -core_vault_docker_registry_user: -core_vault_docker_registry_password: -core_vault_proxy_site_key: |+ - -core_vault_proxy_site_crt: |+ - -core_vault_ansible_vault_password: - -################### DONT FILL THESE VARIABLES INITIALLY ################### - -core_vault_sunbird_sso_publickey: # Get After Keycloak Deployment -core_vault_sunbird_api_auth_token: #Authorization key (JWT) to access Sunbird APIs. This will be in the output of deploy-apis.sh script, extracting it out is documented in the deployment wiki. - -######################## Not mandatory ################################### -core_vault_sunbird_fcm_account_key: "" -core_vault_sunbird_google_oauth_clientSecret: -core_vault_mail_server_password: '' -core_vault_keycloak_api_management_user_password: admin -core_vault_keystore_password: sunbird #Password to use for encrypting cassandra keystore. Use a strong password. -vault_core_url_shortner_access_token: "" # Url shortner access token for learning-service; only if url_shortner enabled -core_vault_sunbird_sso_username: admin -core_vault_sunbird_sso_password: admin -core_vault_keycloak_password: "admin" -core_vault_grafana_admin_password: "sunbird" -core_vault_truststore_password: "sunbird" # Password for cassandra trust store -core_vault_trampoline_secret: "deep-secret" ## any 8 character value -core_vault_msg_91_auth_key: - -# Portal one google sso -core_vault_sunbird_google_oauth_clientId_portal: -core_vault_sunbird_google_oauth_clientSecret_portal: -core_vault_sunbird_google_captcha_site_key_portal: -core_vault_sunbird_google_keycloak_secret: - -# Oauth for logger kibana -core_vault_kibana_google_client_id: -core_vault_kibana_google_client_secret: -core_vault_kibana_cookie_secret: kibanaoauth # Cookie secret for kibana Oauth - -####################### END OF VARS ########################################## - -#NOT REQUIRED TO EDIT ############################## -core_vault_badger_admin_password: "sunbird" -core_vault_badging_authorization_key: -core_vault_jenkins_admin_username: "" #### if it is not required will remove -core_vault_jenkins_admin_password: "" #### if it is not required will remove -core_vault_proxy_prometheus_admin_creds: "admin" -core_vault_postgres_username: postgres # dont change this value -core_vault_grafana_editor_password: "sunbird" -core_vault_grafana_dashboards_git_repo_url_with_credentails: "https://github.com/project-sunbird/grafana-dashboards.git" -core_vault_monitor_alerts_slack_url: "" diff --git a/private_repo/ansible/inventory/dev/DataPipeline/common.yml b/private_repo/ansible/inventory/dev/DataPipeline/common.yml deleted file mode 100644 index bd03ee5a0e..0000000000 --- a/private_repo/ansible/inventory/dev/DataPipeline/common.yml +++ /dev/null @@ -1,40 +0,0 @@ -############## Common ###################### - -# Common vars for env -env: -proto: -domain_name: -ssh_public_key_deployer: -bootstrap_user: -bootstrap_key_path: -ansible_ssh_private_key_file: - -#################### DP ########################## - - - -# Every where the value is telemetry-data-store -# Shall we change the value to telemetry-data-store in dev also? -# What's the implication -# Is it azure blob or s3 bucket?? -# Is it same as `channel_data_exhaust_bucket` -secor_azure_container_name: - -dp_azure_account_name: # azure storage account name -default_org_hash_id: # channel id of the organization - -# Data products monitoring web hooks -data_exhaust_webhook_url: "" -data_exhaust_Channel: "" -data_exhaust_name: -bucket: -stream_base_url: "" - -# Media content -media_service_azure_tenant: "" # value have to be defined -media_service_azure_tenant: "" -media_service_azure_subscription_id: "" -media_service_azure_account_name: "" -media_service_azure_resource_group_name: "" -media_service_azure_token_client_key: "" -media_service_azure_token_client_secret: "" diff --git a/private_repo/ansible/inventory/dev/DataPipeline/hosts b/private_repo/ansible/inventory/dev/DataPipeline/hosts deleted file mode 100644 index dd06977aab..0000000000 --- a/private_repo/ansible/inventory/dev/DataPipeline/hosts +++ /dev/null @@ -1,145 +0,0 @@ -################ Core ######################### -[swarm-bootstrap-manager] -15.0.1.4 - -# Sunbird zookeeper -[ingestion-cluster-zookeepers] - - -################# LP ########################## -[search] -15.0.3.5 - -[learning] -15.0.3.11 - -[composite-search-cluster] -15.0.2.6 - -[lp-cassandra] -15.0.2.7 - -[dp-cassandra] -15.0.2.7 - -[lp-redis] -15.0.3.11 - -################# LPA ######################### -[analytics-api] -15.0.3.6 - -[secor] -15.0.3.15 - -[spark] -15.0.3.12 - -[cassandra] -15.0.2.7 - -[postgres] -15.0.3.17 - -[lpa:children] -spark -secor -analytics-api -cassandra -########################### DP ############################# - -[kafka-indexer] -15.0.3.8 - -[influxdb] -#15.0.3.8 -15.0.3.6 - -[processing-cluster-kafka] -15.0.3.8 -15.0.3.7 - -[processing-cluster-zookeepers] -15.0.3.8 -15.0.3.7 - -[telemetry-search-cluster1] -15.0.2.6 - - -[telemetry-search-cluster:children] -telemetry-search-cluster1 - -[zookeeper:children] -processing-cluster-zookeepers - -[telemetry-search-cluster-kibana-node:children] -telemetry-search-cluster1 - -[yarn-master] -15.0.3.10 - -[yarn-slave] -15.0.3.13 - -[yarn:children] -yarn-master -yarn-slave - -[local] -localhost - -[dp:children] -local -processing-cluster-kafka -processing-cluster-zookeepers -zookeeper -postgres -telemetry-search-cluster -telemetry-search-cluster-kibana-node -yarn -kafka-indexer -influxdb -lpa - -[env:children] -swarm-bootstrap-manager -dp - -[env:vars] -ansible_ssh_user=deployer -ansible_ssh_private_key_file=/run/secrets/deployer_ssh_key - - -########################### Monitoring ########################## -[yarn-ps] -15.0.3.10 -15.0.3.13 - -[logstash-ps] -15.0.3.8 - -[es-ps] -15.0.2.6 - -[process-exporter:children] -yarn-ps -logstash-ps -es-ps -secor-ps -analytics-ps -kafka-ps - -[secor-ps] -15.0.3.15 - -[analytics-ps] -15.0.3.6 - -[kafka-ps] -15.0.3.8 -15.0.3.7 - -[all:vars] -ansible_ssh_user=deployer -ansible_ssh_private_key_file=/run/secrets/deployer_ssh_key diff --git a/private_repo/ansible/inventory/dev/DataPipeline/secrets.yml b/private_repo/ansible/inventory/dev/DataPipeline/secrets.yml deleted file mode 100644 index 6b644f6c10..0000000000 --- a/private_repo/ansible/inventory/dev/DataPipeline/secrets.yml +++ /dev/null @@ -1,9 +0,0 @@ -############## Admin ###################### - -############## DP ###################### -dp_vault_artifacts_container: -dp_vault_azure_backup_storage_secret: -dp_search_service_authorization_token: -dp_vault_pgdb_password: -dp_vault_data_exhaust_token: -dp_vault_azure_account_key: diff --git a/private_repo/ansible/inventory/dev/KnowledgePlatform/common.yml b/private_repo/ansible/inventory/dev/KnowledgePlatform/common.yml deleted file mode 100644 index 3345097159..0000000000 --- a/private_repo/ansible/inventory/dev/KnowledgePlatform/common.yml +++ /dev/null @@ -1,42 +0,0 @@ -### !!! Remove this from public template !!! -### !!! These are private values only for sunbird/ntp !!! -instance_name: sunbird -instance: dev - -## Mahesh have to come back on this -content_to_vec_url: # content_to_vec_url -orchestrator_url: -s3_public_bucket: "" - -############## Common ###################### - -env: -proto: -domain_name: -ekstep_domain_name: - -#bootstrap -ssh_public_key_deployer: -bootstrap_user: -bootstrap_key_path: -###################### LP ############################ - -azure_public_container: -azure_account_name: - - -# This variable should change value per env -# eg: dev 1xx; staging 2xxx -environment_id: - -########### jenkinspipeline upload artifact ############ -artifacts_container: - - -neo4j_zip: neo4j-enterprise-3.3.9-unix.tar.gz # neo4j enterprise version.zip present in the artifacts folder -neo4j_enterprise: "true" - -## Cassandra-backup -cassandra_backup_azure_container_name: -default_org_hash_id: # channel id of the organization - diff --git a/private_repo/ansible/inventory/dev/KnowledgePlatform/hosts b/private_repo/ansible/inventory/dev/KnowledgePlatform/hosts deleted file mode 100644 index cb141a673e..0000000000 --- a/private_repo/ansible/inventory/dev/KnowledgePlatform/hosts +++ /dev/null @@ -1,106 +0,0 @@ -######################## LP ######################## - -[learning1] -15.0.3.11 - -[swarm-bootstrap-manager] -15.0.1.4 - -[learningall:children] -learning1 - -[search1] -15.0.3.5 - -[searchall:children] -search1 - -[redis1] -15.0.3.11 - -[redisall:children] -redis1 - -[learning-neo4j-node1] -15.0.2.9 - -# Enable following host, if you're have neo4j cluster and an arbiter for election -# [arbiter] -# dbms_mode=ARBITER - -[learning-neo4j-cluster:children] -learning-neo4j-node1 - -[cassandra] -15.0.2.7 - -[dp-cassandra] -15.0.2.7 - -[core-cassandra] -15.0.2.5 - -[composite-search-cluster] -15.0.2.6 - -[yarn-master] -15.0.3.10 - -[yarn-slave] -15.0.3.10 #yarn master -15.0.3.13 - -[yarn:children] -yarn-master -yarn-slave - -[processing-cluster-kafka] -15.0.3.14 - -[processing-cluster-zookeepers] -15.0.3.14 - -[zookeeper:children] -processing-cluster-zookeepers - -[local] -localhost - -[lp:children] -learningall -searchall -learning-neo4j-cluster -cassandra -redisall -yarn -composite-search-cluster -processing-cluster-kafka -zookeeper -local - -[env:children] -lp -swarm-bootstrap-manager - -[env:vars] -ansible_ssh_user="deployer" -ansible_ssh_private_key_file=/run/secrets/deployer_ssh_key - -####################### Monitoring ######################## -[logstash-ps] -15.0.3.11 - -[process-exporter:children] -logstash-ps -cassandra-ps - -[cassandra-ps] -15.0.2.7 - -[process-exporter:vars] -ansible_ssh_user="deployer" -ansible_ssh_private_key_file=/run/secrets/deployer_ssh_key - -[all:vars] -ansible_ssh_user=deployer -ansible_ssh_private_key_file=/run/secrets/deployer_ssh_key diff --git a/private_repo/ansible/inventory/dev/KnowledgePlatform/secrets.yml b/private_repo/ansible/inventory/dev/KnowledgePlatform/secrets.yml deleted file mode 100644 index f9ac1ee383..0000000000 --- a/private_repo/ansible/inventory/dev/KnowledgePlatform/secrets.yml +++ /dev/null @@ -1,6 +0,0 @@ -############## Admin ###################### -############## LP ###################### -lp_vault_azure_storage_secret: -lp_vault_graph_passport_key: # can be any random string; to check integrity of content submitted for reviewal -lp_vault_youtube_api_key: -lp_vault_dial_service_authorization: From 1a79c2cd4fb31fae5a2516bf8073b3cc75dbd47f Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Mon, 11 Mar 2019 18:59:18 +0530 Subject: [PATCH 1343/1345] Issue #000 feat: Cherry picking d4759e --- deploy/cassandra_restore.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/deploy/cassandra_restore.py b/deploy/cassandra_restore.py index 828cc93950..7cf1a47f49 100755 --- a/deploy/cassandra_restore.py +++ b/deploy/cassandra_restore.py @@ -17,20 +17,23 @@ cqlsh -e "source 'backup_dir/db_schema.cql';" 3. Restore the data - usage: ./cassandra_restore.py --host snapshot_directory_name + usage: python cassandra_restore.py """ from os import walk, sep from subprocess import STDOUT, call from argparse import ArgumentParser +import socket parser = ArgumentParser(description="Restore cassandra snapshot") parser.add_argument("--host", default=socket.getfqdn(), metavar="< Default: "+socket.getfqdn()+" >", help="ip address of cassandra instance") parser.add_argument("--snapshotdir", default="cassandra_backup", metavar="< Default: cassandra_backup >", help="snapshot directory name or path") args = parser.parse_args() -root_levels = args.snapshotdir.count(sep) -for root, dirs, files in walk(args.snapshotdir): +# Unix autocompletion for directory will append '/', which will break restore process +snap_dir = args.snapshotdir.rstrip('/') +root_levels = snap_dir.count(sep) +for root, dirs, files in walk(snap_dir): if root.count(sep) == root_levels + 2: print(root) call(["sstableloader", "-v", "-d", args.host, root], stderr=STDOUT) From 1beab92b18c10ef496aec0f26ac7daa9f03344f5 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Mon, 11 Mar 2019 19:03:00 +0530 Subject: [PATCH 1344/1345] Issue #000 feat: Cherry picking from release-sp3 --- pipelines/bootstrap-swarm/Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pipelines/bootstrap-swarm/Jenkinsfile b/pipelines/bootstrap-swarm/Jenkinsfile index 418a574705..79a4c2b6ed 100644 --- a/pipelines/bootstrap-swarm/Jenkinsfile +++ b/pipelines/bootstrap-swarm/Jenkinsfile @@ -20,7 +20,7 @@ node() { jobName = sh(returnStdout: true, script: "echo $JOB_NAME").split('/')[-1].trim() currentWs = sh(returnStdout: true, script: 'pwd').trim() ansiblePlaybook = "${currentWs}/ansible/setup-dockerswarm.yml" - ansibleExtraArgs = "--extra-vars \"hosts=${params.hosts}\" --extra-vars \"ansible_ssh_private_key_file=/run/secrets/deployer_ssh_key\"" + ansibleExtraArgs = "--extra-vars \"hosts=${params.hosts}\" --extra-vars \"ansible_ssh_private_key_file=/var/lib/jenkins/secrets/deployer_ssh_key\"" values.put('currentWs', currentWs) values.put('env', envDir) values.put('module', module) From eed513c1b1959bfc2a5ec8baeb1daf2c777d719c Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Mon, 11 Mar 2019 19:05:40 +0530 Subject: [PATCH 1345/1345] Issue #000 feat: Removing deprecated files --- ansible/inventories/sample/group_vars/sample | 385 ------------------- ansible/roles/cassandra-backup/vars/main.yml | 2 - 2 files changed, 387 deletions(-) delete mode 100644 ansible/inventories/sample/group_vars/sample delete mode 100644 ansible/roles/cassandra-backup/vars/main.yml diff --git a/ansible/inventories/sample/group_vars/sample b/ansible/inventories/sample/group_vars/sample deleted file mode 100644 index a5ec70503c..0000000000 --- a/ansible/inventories/sample/group_vars/sample +++ /dev/null @@ -1,385 +0,0 @@ -# ENVIRONMENT CONFIGURATION -env: "{{env}}" #Name of the environment, e.g. dev, staging or production. -proxy_server_name: "{{dns_name}}" #Domain on which the portal will be accessed. e.g. staging.{implementation-name}.org -proxy_site_key: "{{lookup('file',key_path) if key_path else ''}}" #SSL certificate's site.key file path. More details in this wiki: https://github.com/project-sunbird/sunbird-devops/wiki/Updating-SSL-certificates-in-Sunbird-Proxy-service -proxy_site_crt: "{{lookup('file',cert_path) if cert_path else ''}}" #SSL certificate's site.crt file path. More details in this wiki: https://github.com/project-sunbird/sunbird-devops/wiki/Updating-SSL-certificates-in-Sunbird-Proxy-service -sunbird_private_key_path: -hub_org: sunbird -sunbird_external_content_whitelisted_domains: -learner_limit_cpu: 1 -learner_reservation_cpu: 1 -sunbird_default_channel: -sunbird_cs_base_url: -sunbird_content_service_whitelisted_channels: -# DB CONFIGURATION -## Below passwords are used by DB install scripts when creating databases. Please use strong passwords. -application_postgres_password: "{{postgres_app_password if postgres_app_password else database_password}}" -keycloak_postgres_password: "{{postgres_keycloak_password if postgres_keycloak_password else database_password}}" -kong_postgres_password: "{{postgres_kong_password if postgres_kong_password else database_password}}" -badger_postgres_password: "{{postgres_badger_password if postgres_badger_password else database_password}}" - -## Postgres configuration -swarm_address_space: "{{app_address_space}}" #Application server address space (e.g. 10.3.0.0/24), also the agentpublicSubnet if using Azure scripts provided - -## Cassandra configuration -keystore_password: "{{cassandra_password if cassandra_password else database_password}}" #Password to use for encrypting cassandra keystore. Use a strong password. -truststore_password: "{{cassandra_password if cassandra_password else database_password}}" #Password to use for encrypting cassandra truststore. Use a strong password. -cassandra_listen_address: "{{ groups['cassandra'][0]|default(database_host) }}" -cassandra_seeds: "{{ groups['cassandra'][0]|default(database_host) }}" -cassandra_broadcast_rpc_address: "{{ groups['cassandra'][0]|default(database_host) }}" -cassandra_broadcast_address: "{{ groups['cassandra'][0]|default(database_host) }}" -cassandra_listen_interface: '' -cassandra_log_dir: '/var/log/cassandra' -cassandra_root_dir: '/etc/cassandra' -cassandra_version: '3.9' -cassandra_port: 9042 -cassandra_rpc_address: 0.0.0.0 -cassandra_restore_dir: /home/deployer/ -cassandra_server_private_ip: "{{groups['cassandra'][0]|default(database_host)}}" - - -# APPLICATION CONFIGURATION - -kong_host: api-manager_kong # Private IP of the application server -keycloak_url: "http://{{ groups['keycloak'][0] | default(application_host) }}:8080" #Internal url of keycloak. Example: http://:8080 - -## DB address -application_postgres_host: "{{ groups['postgresql-master'][0] | default(database_host) }}" #Private IP of Postgres server -keycloak_postgres_host: "{{ groups['postgresql-master'][0] | default(database_host) }}" #Private IP of Postgres server -kong_postgres_host: "{{ groups['postgresql-master'][0] | default(database_host) }}" #Private IP of Postgres server -sunbird_cassandra_host: "{{ groups['cassandra'][0] | default(database_host) }}" #Private IP of Cassandra server -sunbird_es_host: "{{ groups['es-1'][0] | default(database_host) }}" #Private IP of Elastic Search server. If ES cluster has multiple nodes then add all nodes by separating them with comma. e.g. 10.2.0.1,10.2.0.2,10.2.0.3 - -## Application server configurations -sunbird_ekstep_api_base_url: "{{ekstep_api_base_url}}" #API base URL of the Ekstep environment. Use `https://qa.ekstep.in/api` for non-prod deployments, and use `https://api.ekstep.in/` for prod deployment. -sunbird_ekstep_proxy_base_url: "{{ekstep_proxy_base_url}}" #Base URL of the Ekstep environment. Use `https://qa.ekstep.in/` for non-prod deployments, and `https://community.ekstep.in/` for prod deployment. -sunbird_env: qa #Ekstep environment to connect to. Use `qa` for non-prod deployments, and `prod` for prod deployment. -sunbird_mail_server_host: "{{ mail_server_host }}" #SMTP server IP. Could be ignored if not mails are to be sent. -sunbird_mail_server_port: "{{ mail_server_port }}" #SMTP port. Could be ignored if not mails are to be sent. -sunbird_mail_server_username: "{{ mail_server_username }}" #SMTP username. Could be ignored if not mails are to be sent. -sunbird_mail_server_password: "{{ mail_server_password }}" #SMTP server pasword. Could be ignored if not mails are to be sent. -sunbird_mail_server_from_email: "{{alerts_mailing_list}}" #Email ID that should be as from address in mails - -#player_tenant_dir: #Configure if customising the image, path in which volume should be mounted. -sunbird_background_actor_host: actor-service -sunbird_actor_system_name: BackGroundRemoteMiddlewareActorSystem - - -## Keycloak (auth server) login details -sunbird_sso_username: user-manager -sunbird_sso_password: "{{sso_password}}" -sunbird_sso_publickey: -keycloak_password: "{{keycloak_admin_password}}" #admin password for the keycloak_auth login -keycloak_theme_path: #path to the keycloak theme files - -## Keycloak bootstrap -keycloak_realm_json_file_path: "roles/keycloak/files/python-keycloak-0.12.0/keycloak-realm.json" -keycloak_user_manager_roles_json_file_path: "roles/keycloak/files/python-keycloak-0.12.0/roles.json" -keycloak_api_management_username: "{{sunbird_sso_username}}" -keycloak_api_management_user_email: "" -keycloak_api_management_user_first_name: "user" -keycloak_api_management_user_last_name: "manager" -keycloak_api_management_user_password: "{{sso_password}}" - -## Content Repo configuration -sunbird_api_auth_token: #Authorization key (JWT) to access Sunbird APIs. This will be in the output of deploy-apis.sh script, extracting it out is documented in the deployment wiki. -sunbird_ekstep_api_key: "{{ekstep_api_key}}" #Authorization key (JWT) to access Ekstep APIs. Steps to generate this are documented on https://github.com/project-sunbird/sunbird-commons/wiki/Obtaining-API-token-for-accessing-ekstep-APIs -sunbird_trampoline_secret: "{{trampoline_secret}}" - - -# ADVANCED CONFIGURATIONS -keycloak_auth_server_url: "{{proto}}://{{proxy_server_name}}/auth" -keycloak_realm: sunbird -sunbird_content_player_url: "{{proto}}://{{proxy_server_name}}/api/" -sunbird_learner_player_url: "{{proto}}://{{proxy_server_name}}/api/" -sunbird_sso_url: "{{proto}}://{{proxy_server_name}}/auth" -sunbird_sso_client_id: admin-cli -sunbird_portal_realm: sunbird -sunbird_portal_auth_server_client: portal -sunbird_trampoline_client_id: trampoline -sunbird_default_tenant: sunbird -sunbird_echo_api_url: "{{proto}}://{{proxy_server_name}}/api/echo" -sunbird_pg_host: "{{ application_postgres_host }}" -sunbird_pg_port: 5432 -sunbird_pg_db: quartz -sunbird_pg_user: quartz -sunbird_pg_password: "{{ application_postgres_password }}" -sunbird_installation: sunbird -sunbird_account_name: "{{sunbird_azure_storage_account}}" -sunbird_account_key: "{{sunbird_azure_storage_key}}" -sunbird_sunbird_quartz_mode: cluster #Use `embedded` to run Quartz without any database, use any other value to use Postgres as database -sunbird_cassandra_urls: "{{groups['cassandra'][0]|default(database_host)}}:{{ cassandra_port }}" -sunbird_session_store_type: cassandra -sunbird_portal_title_name: portal -sunbird_keycloak_client_id: 'portal' -sunbird_msg_91_auth: -sunbird_keycloak_public: true -sunbird_msg_sender: -project: sunbird -application_postgres_database: quartz -application_postgres_user: quartz -keycloak_postgres_database: keycloak -keycloak_postgres_user: keycloak -sunbird_dataservice_url: "{{proto}}://{{proxy_server_name}}/api" -sunbird_azure_storage_account: "{sunbird_azure_storage_account}}" -sunbird_azure_storage_key: "{{sunbird_azure_storage_key}}" -sunbird_container_name: portal -sunbird_telemetry_packet_size: 200 -sunbird_image_storage_url: "{{sunbird_image_storage_url}}" -sunbird_telemetry_sync_batch_size: 200 -sunbird_installation_email: "{{sunbird_installation_email}}" -sunbird_telemetry_pdata_id: "{{sunbird_telemetry_pdata_id}}" -sunbird_environment: "{{env}}" -sunbird_instance: "{{implementation_name}}" - - -## elasticsearch configurations - -es_heap_size: 1500m -es_etc_cluster_name: sunbird-sample -es_etc_discovery_zen_minimum_master_nodes: 1 - -## Cassandra download URI -cassandra_repo: 'deb http://www.apache.org/dist/cassandra/debian 39x main' -cassandra_repo_key: 'https://www.apache.org/dist/cassandra/KEYS' - -#API Manager -kong_postgres_port: 5432 -kong_postgres_user: "api_manager" -kong_postgres_database: "api_manager" - - - -## PostgreSQL config -postgresql_hba_entries: - - { type: local, database: all, user: postgres, auth_method: peer } - - { type: local, database: all, user: all, auth_method: peer } - - { type: host, database: all, user: all, address: '127.0.0.1/32', auth_method: md5 } - - { type: host, database: all, user: all, address: '::1/128', auth_method: md5 } - - { type: host, database: all, user: all, address: '{{ swarm_address_space }}', auth_method: md5 } - -postgresql_users: - - name: "{{kong_postgres_user}}" - password: "{{postgres_kong_password if postgres_kong_password else database_password}}" - db: "{{kong_postgres_database}}" - priv: "ALL" - - name: "{{keycloak_postgres_user}}" - password: "{{postgres_keycloak_password if postgres_keycloak_password else database_password}}" - db: "{{keycloak_postgres_database}}" - priv: "ALL" - - name: "{{application_postgres_user}}" - password: "{{postgres_app_password if postgres_app_password else database_password}}" - db: "{{application_postgres_database}}" - priv: "ALL" - - name: "{{badger_postgres_user}}" - password: "{{postgres_badger_password if postgres_badger_password else database_password}}" - db: "{{badger_postgres_database}}" - priv: "ALL" - - -proxy_replicas: 1 -proxy_reservation_memory: 64M -proxy_limit_memory: 128M -kong_replicas: 1 -kong_reservation_memory: 120M -kong_limit_memory: 256M -echo_service_replicas: 1 -echo_service_reservation_memory: 16M -echo_service_limit_memory: 32M -adminutil_replicas: 1 -adminutil_reservation_memory: 512M -adminutil_limit_memory: 1024M - -actor_replicas: 1 -actor_reservation_memory: 500M -actor_limit_memory: 1024M - -learner_replicas: 1 -learner_reservation_memory: 1500M -learner_limit_memory: 1500M - -player_replicas: 1 -player_reservation_memory: 256M -player_limit_memory: 512M - -content_replicas: 1 -content_reservation_memory: 125M -content_limit_memory: 256M - - -#badger -badger_postgres_user: badger -badger_postgres_database: badger -badger_host: "{{ groups['postgresql-master'][0]|default(database_host)}}" -badger_replicas: 1 -badger_reservation_memory: 500MB -badger_limit_memory: 500MB -badger_file_storage: storages.backends.azure_storage.AzureStorage -badger_url: http://azureaccountname.blob.core.windows.net/ -badger_container: badgr -badger_admin_user: admin -badger_admin_password: "{{badger_admin_password}}" -badger_admin_email: "{{badger_admin_email}}" -sunbird_http_orgin: "https://{{proxy_server_name}}/badging" - - -#Logging -kibana_oauth_redirect_url: "{{proto}}://{{proxy_server_name}}/oauth2/callback" -monitor_alerts_slack_channel: "sunbird-{{env}}-alert" -google_client_id: "{{vault_google_client_id}}" -google_client_secret: "{{vault_google_client_secret}}" -cookie_secret: "{{vault_cookie_secret}}" -syslog: - host: "{{application_host}}" - port: 51415 -logger_es_host: "{{ groups['log-es'][0] }}" -logger_es_port: 9200 -swarm_load_balancer: "{{application_host}}" -filebeat_logtsash_host: "{{ application_host }}" -expected_minimum_logs_per_minute: 30 -#kibana_oauth_authenticated_email_domains: -# - optit.co -#kibana_oauth_authenticated_email_ids: -# - smy.altamash@gmail.com - - - -#Monitoring -monitor_alerts_mail_from_email: "alerts@{{proxy_server_name}}" -monitor_alerts_mail_server_host: "{{ mail_server_host }}" -monitor_alerts_mail_server_port: "{{ mail_server_port }}" -monitor_alerts_mail_server_username: "{{ mail_server_username }}" -monitor_alerts_mail_server_password: "{{ mail_server_password }}" -grafana_url: "{{proto}}://{{proxy_server_name}}/grafana" -grafana_editor_username: editor -app_alerts_mailing_list: "{{alerts_mailing_list}}" -site_alerts_mailing_list: "{{alerts_mailing_list}}" -keycloak_alerts_mailing_list: "{{alerts_mailing_list}}" -api_manager_alerts_mailing_list: "{{alerts_mailing_list}}" -monitor_es_host: "{{ groups['es'][0] }}" -alertmanager_host: "{{ groups['swarm-agent-for-alertmanager'][0]||default(application_host) }}" -prometheus_host: "{{ groups['swarm-agent-for-prometheus'][0]|default(application_host) }}" -postgres_exporter_postgres_port: 5432 -postgres_exporter_user: postgres_exporter -postgres_exporter_password: "{{ vault_postgres_exporter_password }}" -api__host: "{{proxy_server_name}}" -kong__test_jwt: "{{kong__test_jwt}}" -prometheus_storage_retention_time: 72h0m0s -sunbird_android_app_url: sunbird.org - -sunbird_user_bulk_upload_size: 1001 -sunbird_installation_display_name: - -telemetry_proxy_url: https://dev.ekstep.in/api/data/v3/telemetry - -#content service vars - -sunbird_content_repo_api_base_url: https://qa.ekstep.in/api -sunbird_content_repo_api_key: "{{ekstep_api_key}}" -sunbird_search_service_api_base_url: https://qa.ekstep.in/api/search -sunbird_search_service_api_key: "{{ekstep_api_key}}" -sunbird_dial_repo_api_base_url: https://qa.ekstep.in/api -sunbird_dial_repo_api_key: "{{ekstep_api_key}}" -sunbird_plugin_repo_api_base_url: https://qa.ekstep.in/api -sunbird_plugin_repo_api_key: "{{ekstep_api_key}}" -sunbird_data_service_api_base_url: https://qa.ekstep.in/api -sunbird_data_service_api_key: "{{ekstep_api_key}}" -sunbird_content_service_enable_logging: true - -learning_analytics_service_url: "http://{{application_host}}:9000" -sunbird_tenant_cdn_url: -sunbird_cloud_storage_urls: 'https://s3.ap-south-1.amazonaws.com/ekstep-public-qa/,https://ekstep-public-qa.s3-ap-south-1.amazonaws.com/' -sunbird_analytics_api_base_url: -content_service_channel_refresh_cron: -content_service_whitelisted_framework: -content_service_blacklisted_framework: -content_service_blacklisted_contenttype: -content_service_blacklisted_resourcetype: -content_service_blacklisted_mimetype: -content_service_whitelisted_mimetype: -content_service_whitelisted_resourcetype: -sunbird_language_service_api_key: -sunbird_language_service_api_base_url: "https://qa.ekstep.in/api/language" - -#Telemetry Service vars -sunbird_telemetry_kafka_servers: -sunbird_data_pipeline_kafka_servers: -sunbird_telemetry_kafka_topic: - -#Config Service Vars -cloud_storage_type: "azure" -azure_storage_key: "{{sunbird_azure_storage_account}}" -azure_storage_secret: "{{sunbird_azure_storage_key}}" -azure_storage_container: -aws_storage_key: -aws_storage_secret: -aws_storage_container: - -sunbird_cassandra_host: "{{groups['cassandra'][0]|default(database_host)}}" -sunbird_cassandra_port: 9042 -sunbird_cassandra_username: cassandra -sunbird_cassandra_password: "{{cassandra_password if cassandra_password else database_password}}" -sunbird_config_service_url: "{{proto}}://{{proxy_server_name}}/api/config/" -config_cache_ttl: 600 - -#Portal vars -sunbird_portal_base_url: https://staging.open-sunbird.org - -#Learner Vars -sunbird_email_max_recipients_limit: 100 - -#Proxy vars -sunbird_blob_env: "{{env}}" - -#encryption Service -encryption_service_user: encryption -encryption_db_name: encryption -encryption_db_dialect: postgres -encryption_reservation_memory: 750MB -encryption_replicas: 1 -encryption_limit_memory: 750MB -encryption_limit_cpu: 1 -encryption_reservation_cpu: 1 - -logger_logstash_reservation_memory: 750M -logger_logstash_limit_memory: 750M - -#Portal vars: -sunbird_portal_user_upload_ref_link: http://www.sunbird.org/features-documentation/register_user - -#learner Vars -sunbird_url_shortner_access_token: -sunbird_url_shortner_enable: false -sunbird_keycloak_required_action_link_expiration_seconds: 7200 -sunbird_user_profile_field_default_visibility: public - -#Player Vars -config_service_enabled: false -config_refresh_interval: 10 -sunbird_analytics_api_base_url: "{{ekstep_api_base_url}}" -sunbird_cassandra_urls: -sunbird_cassandra_consistency_level: one -sunbird_cassandra_replication_strategy: '{"class":"SimpleStrategy","replication_factor":"1"}' -sunbird_allowed_login: -sunbird_course_batch_notification_enabled: true - -sunbird_device_register_api: - -sunbird_course_batch_notification_signature: sunbird - -sunbird_authorization: -sunbird_lms_base_url: -sunbird_lock_expiry_time: 1800 -sunbird_content_service_local_base_url: http://content-service:5000 -sunbird_kafka_host: -sunbird_qrimage_topic: local.qrimage.request - - -sunbird_otp_expiration: 1800 -sunbird_otp_length: 6 -sunbird_google_oauth_clientId: -sunbird_google_oauth_clientSecret: -sunbird_google_captcha_site_key: -sunbird_google_keycloak_client_id: -sunbird_google_keycloak_secret: -sunbird_content_azure_storage_container: diff --git a/ansible/roles/cassandra-backup/vars/main.yml b/ansible/roles/cassandra-backup/vars/main.yml deleted file mode 100644 index e054cef6fe..0000000000 --- a/ansible/roles/cassandra-backup/vars/main.yml +++ /dev/null @@ -1,2 +0,0 @@ -cassandra_root_dir: '/etc/cassandra' -data_dir: '/var/lib/cassandra/data'

        !7bkJoCnQN34=9{H5RF19$I$WD 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

      2. 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 z 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

        q2)R4fa!)XC&EBH&W5q%!IUsm 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 z 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

      !7bkJoCnQN34=9{H5RF19$I$WD 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

    2. 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 z z6!4z#rW~a&hwB9sbu!U$wHL(wY6=~M_=-9=PRBlDF4f=!{yO={#jfH!H7cQgUXb`2 zk-wS;y$b#d&{rUZuj}6>zFzJ={`YP5l$xHL|Bys7n#`-L{U&QNmpiX%&TGkjWcsbx zVr$!YvA5D##{rma+SO$%T)&4 z70?gT-x~1ufgS*}%Z1v3CEKmW9`to{}%c72l>|5`Dw9wr3Se_QahwCH>%MAjKairt~0Tv zh&GtmN&(?$J0C(iEyc{3%gs!YGtat}CG^Ku`6d>Fqf2zQ^E~Brx(36WwOCKl1ot!u zqdy-9&(8&{)EFsx7-#9}hWsYlOt(i0qIfy$#XZCKr5x%|PBpK)4g3S3M?gvruYsp@ z=y@rJvCp*8mvJlFv;!Pe-(dVi2i3JdVWx`#)70+4%DNc!+!g%^)>fqIfm|^KyNn^~ zT1H?tH-T63hdJ-&4v3pRl(=%=2#*8(z*m9J0x4XNf~U02ZI^Xz`j<-w%2yk6G4*_gVWm09QQa_urPkhepeKS-e`#za2fL7wTwR^1c{&B#*V^eG+vf z&#N637f#TUi(%*z!j4roF9}RG`o?GQ6#54j?8kZUbKGx_{o7OdtKsdQbmAu*`)m9E z8^+qJ-7~}A*UsL-Cp^loz(UYF+#_O#$B51w@``XGehr%@W(}Ju77kw^s)jEYYleG& z$9jr|-F7kYIICSC7REnJ+_1-(*vp3hjft1p@Ryi)oejr-+VFcOo@U*Q0TrYE!^K^E z$({5Xa~r)50pGxf?&7!wJoHg6p62WS#qfQ%uekV;ulj*rWByIAL%?s*hhCzKI(_I> zy0}qazn{LxbEk<1*}(e^aZum*j*izM@9W~QKJ+tPe53T8 zn_)H>cz?_=?=$>~X1O^j(G%x2k>^DGjX%$PLpSe}fBTJY9@O!-pXuhiI{r2xbwc|6 zhS{Y1FVMwK!~QojOXCb1A2#b|kw4%5ftyX-$>s*#+@kw!^D5o^k>e4U=;n9aAF^+u z&y=AJnN2jG<@jHBa`Py2{?}97Y{0_be3YAa(f``T%|FopdWJqH&Pe|cH@9*BGYt9J z)6C__8~n4(Eb!;qPcid4mVzSM3(Qi#Z6jF0UWQLEG4pYH{~I$OVg7FR<;+}|LI9Q{ z|IG~fFED%2|MLa$zgC+I@wdy(SwZ`P zgm$y^N15+UJ^gRY-pkBSbpKY<{Khboa-#gPFsls4;o_uA)Ke7mb^OajV;YteH!|Y_ zUB8Rj&+AwvMqX(6Mg_Jp;~TEmGkcewFg*EcX57d1TbTW#-W9HLj6|N1TxgFKiB_7~ z*BGlO^6o4qscT@cT_#fS-C%5aq|kR!UHRb1OISpTH^Vd7zJ%e|4E$P!U-MZ$OEJ6i z7*^FftW6=5M?B25MtV#}YML2KmZXo+X+JK^#B z4DcI37l0I=KZB<c<-QxXpj&t*tF9#{^=$QG?NqVpL|w@#IB(7d$Otfm;ANPfzmtd43el z$8u-}vB8**ajXPW+M78H?O&y_EuJsLVy>x^#D56*N`Q~Xt?$A2eGlsxkivfhcuFN7 zN&I`ew!tsQ?>6|Gtml3EE!JdR$eg!c&TF>wn%9P(=@c=c#Um~ZV?&v-s|1?O07LllTY{L(Rjp%I* zp^~uQxE?F4B1}i;TGw;m$iQIC^Kw`+qt_@t2)+p>db)Vy`Ji>;Y`3sIp?ez6wbeZr*vYRJx_>pH}L&hoF#=4XW|E8oL#|} zfJT87&L!X}ow&Yx5zc1*0(WZq9{Gl9rwadvsokuHYut;Y*jyc_%eJcdv^KS#&0knlIJVn4}m@hDV+WfPX%Z16XX2)*W(QJkvJ=WL*ZNx{wmNmkixkO zJf+=tOTEm!|9JY@$EkPzn!bbMuxgm|+HZ#=&VR!s3adM6K-7E&LN^fMD`y`$>HEKf?Huz!!jeffT;U;3*w_SmHW<`|eBl8u_RC9*Vm>(s|9M zE2>AukA`+D?%ff-0cbmfuUWR8SX>Kp@l8X+>B7(AC9p}8_(B6EzMaTl$?q}ne*^6U zDSUqiPpN6H#MkJ?+ilqn)4t`Mrnq%(5Qm%Fqv;)kjyvq zk$f)oE8W5O0SyGHd`sNl)w#ENck)$7-2acg_kfS0c;km>?=J0fmxKh;LoW0H$z4L| zC80NgsPvW#X#~9cn84()n>Xqe3*U61HvBswPX*Ee9)1>N>YV38W1)wb??fKlA!flYTnzyI zTI^aSX26PpEdB7`o_@%ufHMFO{~ToMT&15q?Ho3CZ0f+gTxkyzX=ljQLMqW<3eF^M zeQ0IjcKEe6+~JVN0+Rq9?lj2MIZt!|4Yc!xlFh8 zJSO!i0ej)E7T!fh11R>>q*8AlEQJ^PTWxrqAol?J0zAC_kg1d17f);l*wY{LB3isx zNEIHNv1tH;z5m3|_K4n)iXl?CE8s6r=XS^+1N#9U?g7ZuIotm)ahk*Gqq5@c^f_6^ zjJ(`Hobp9s?k!0^QaFrVe}u>L9VodKCT=l279s3GQ3w2=3UH@~OQ5CCK??GX)O72qa3J~T9ltOFhdrUFJl51bzo zL_P$b0cHUM0RwP(a1c2NYyutvrU5;GAmEQdL1Yi`5-<-K19Sw`!0CZOF z2$&3X0|J3R`UR2CfOWt_z%-yM5D5IxH;8-$R00nJ696ON0i5a+L|z9hz(}Ay;02uT z9Ypp4>w$*>Gte982>1b)dIgcMfGXexpcEJl!~z=NT+bk~3wRzV1?~pA0D-`tJ%Y$# z;0<6YkOd?IVZi0?$QNJ}unfon1_3RB|GEW{Bfwk0D5 z6gZ!R^aD$P3BVAbEpVj^@)OtwtOVu(V*wN31)NDlT!2@AxxhG}2M`AQlYnarYy+MJ zih(ge0-y(eHNh6B1Re!)fIdJ7@V61y1o#Me1}FeV0_}ld;8J`L`4V^&SPt9+i~)>* z7w~T!@*da>ECS3x65s>;&^d^F4Qv1&1nvgf12;Mak#B%Kz&c<7kPh?&^uYO!LF6c~ z8CU>}1zH0)VqpjD0agGrffOJVsO}I%-UjXk?gTml*ad_fX^%1mtOkmKVL$}%ce^0+ z1@Id13{VP;0y+S;wn5|~@Ci@>EC*%+-2e~ZR2$dN4REb>5cwQf4U_?Q0v!Pl z;9RR9vK@FHC7un@=s`U9cBpCPy= zzy_ckm;iJI^uYJQ$S2@Apad8Jm;hhkmlkMmfY*S>fct>)Ku16g9B+>L4J-!IfCRt* z>J+CxN$s zr9ckQA20y{z&RWC*9H~>V}XG{I8a@KF%LDu8h;VYI2SKA-J(fZX>Q&vnv~Kl*3;%<`CwWGeIHec zxtvYIFEttM-)u@NDlEyJr^HgU>64DF8*{P>vak_vR%Snxjk1zrV_soKdLAz&(ueen z?0b4*iICI5M=*;pp(w>hPALnk%AIS>NY9vES`2cFQ7oBXP?|o^Sd>+qmxdx%R^%ck zOur;IzbG#^d%p8XG3BOY1CK{>VNR3$6yGyxk|w^}RfM@o8C|@RUPyN_GiH>`!SzbV zTS-mPWFH2gSGHksXxO&Y&XgESu$)o~!Kqp{CJxfnh0AF+r5CYCHmEr?R>smS6jS(S%q*1Z zPs5Al!jStQMcajPp}1RMlT>N;$`-Y{anHs#rQ~X5T}^v4am&dRtCP`LrK%f}q+d{& zDOax=Q_ss{jjl{Krq7V775(;xLj`Ntywb{Hq(sc>CM32XtJFBNw6w^GojOX(IF*w(JG8`-G1w78Mqh$mNn<5094SG{raUp;5vrTZ2rrdqz_#QwVEyoHcc| zT8U{h%IJ3mU3r&LSU5Y^rIwg$bRF$2UpH(!N*})Ep+=XKW@PauR6Y;v1{pKU3T9_X z%}x_a${g$iTv&|zcwTxzPFi7cj&UBsL{l=Ce(h1BGMVARR4OvqQAD9R?JP;<(w$_K z73AWEmt`zKM2z?fpWHQ*O-wxxXf;rfrnV^LYbd|CsP*isMN$qC-BCK_iJp{p)^V@mE`)7XWs@4?Kn>}+(Z zZZR$N{=lOkM#K$!vHvWWnLN7Ub;EVf$f8$2Lr$HRH{38wj5+t_7KubAV)Ycu3ZO5e zIy1dwrZJ;9qf4Sh)6(-ZyCucrnS8^hrh%^5|IU>gc{Na%yl#B7S6^8sy7rWzcSF0a z_(%`9sN96wSI@e%aCVkl*{G+Aw!$7z!;Gn?%t{>w?XuNK#$rZpX`0h!x}IHTZboTZ zW)=-du0<_M$88y-{fwD1St=?}($rkc$G&>Te0&Q#7rk8E_{A^3$#`B**KXA`b=pd2 zrk6@>O2cdyJ-??6-~Y-KH_W8B$tFanzJ+!&DJm{3Ep#4QT~)i0Oxo*e zJ4C8s!t1KeY*JShs}Qi%L?&!8C#9w;lP=wIrbd@rrQv=qH&zk-64zukUel!_k(HU7 z?n)`AI2}V`sbDwp%9Iu7838f=O)wGnTEVvr^GYaWQthaen=v~}E)yN}ii)#cdp0|3 zep-4?aaI=nj*)A1`T_Hjnb;{X&FNssAr`e3`M7JO=dkW^!}8Rqjne|-V1XG9*+!IZ zWg}%T8m@fSO>!E3MsCr}tm3qiGISD~a6!^B4=tB>jdc)Myz!3zoUFvIT@!j5OYXs( zc9yf-Ueo-^#)Z81|A0RkC3Dk@+>Z`gTK7H4OV7lOrKB|L|3ri^5hmt1i&o=}L(}q_ z&sH^3k`M~sbi~7nJiK5o5}BIiEToy~88g!pO+|%y^Aoz5x*GAT&H<%4ThE(@{?gHV z+MKKme85hw@Vgan=N&e;ymr>PbI0RbzkK$~R#KL)@Jcn}#VwatyB}P*^_0{vcSeU< z8>vLHA|%a(vz~ay^i|2O$eJ#li^WUA$u&>V6KdLnOTx<1Vj%TWG(H9r4`PYWlYP+DNMsdA3k~4 zuxX;I*py?ovs7>$nb_0QG#n?rFRp@dVnNni(I0xKHjX)kwA&@ux=>x}dr4u&Y{$od z4Kl}3(MfE}GK;8JPBcn0L=8L|aFr|vO@{}RjmC_rx=aDna}qrodm1-aA#%OE+=4Q> zo-xg{CS|Os)FhuW@(S$_H5xB+C77_q=Pt6+T=_?fuB%JnqIf%dK0*^;Ap0CwJS*F? zrf2ih<>nda**sLNvLaW}m$aN*?Od@ey1dwuniGFmv2TJ$#p!dKR3vhXn5L6ZWhZ%P z4vDvpY)me>EC_Z@Cqd0DEGc!?hGb{Dx)#vDjWI6`s}4#rq2MGeXy#+fIA^sgv!Eou zMDD>jO+6GaPRY*AaTP79D2|kytmq`>7~{&_Txg_djGS1b^NqbC^UxcVQDRv~Zwbcq z5~qC~M^&uD$fL_4T%gvdIhRflH7@r3B!iMb+d-zQgN@qWsY$gpG zvoh$dSEMo-!0yl(6?aWYG)im+7Mjd<*6ouwLN7?}ay4djtI5gB!+wyt8OEZ-uHDjH zTrU0#Z$Tr7^6%_f7IP$cZ@NzzLS640m@ zHePtKfK*P^U&!O8BH(sJ@Ta5W7v~>}?kVb6vL1SH*FWqsRmdPgh z(A4b3Z1+s#jNBY!I;N&)I%^B;npoLYK$kh?V{TGiWwy;6+6E$k`79p z%h04p*)G+x=E*%dvo|?2>4R6xDUneVAJ|fIi=;AI*z!?}O<+qV?>%(-=QrIC?=)WvUT$31Y`TVTnvukCg7t5};;Y!6>Sa>hH(yLa>{=!8QDhPdb!gw!T z4v)tw^uw2O5v6*y?^!fxHbs9*oTVZ=A5&`Vm4SwhJ3T8d$dL)3o_A80=xMt0Cta?< z6=O~cvto7cF-^!HZZ{`AuS~84aUCaXQ@9F!P%rJW>!`az5vPQ zLYk16!V)8$`FGYRLuGC{T~P*-D_1F*KV{O(W?0pfA-lRCs^YUF7hyVkz638y=9f5~ zf|gWdvWuR?D+(@RAgVZ<0D(6&rSgHey5GSA@u7;7CvjZG*^?utBOebZ4|iZIzO3XT zFGL+D0mx2H!2itLVrRbF?-BHd+{CFo@pgu0nJo={7n95sQ26u(4sQ?4V4S_ckHp zxy8Lwt#=He@$s?UfC+UX<=li@ILU49J6CObeCk-Z$V;Z{N=tT(z+;IAJc!_Ir%fH# zb=8pD^$O-VD~?~Jh|6qU=;W3b z%FV%}3nYe=?OFwoma_8-WxEU9C$u`bczeY~l#sGq*D6jYD%1IU>kWEV;yfls0nX|v z*GVwB*2={6q)RQVOl*o49*!5g^y?OUlAVPT6IfPIlAbNsEQ%UMg>w^3GFPHDkDMyd z>~X44m?Kw;#Sp}tlks52d@R;;{zkNS$w%)#z#@9c&@Wm2$G7^wG5()ll5le`9gdG-dQYM#sQ6{TvuOu zw_WNrvgw3|FON6e<^#Kz@~@D}#Eh>lzzwL*Ex*yXh`4fbsj2D8`B_*#KF8_uYVI#o zGxD6aWLz^7^~qU_$MrIb%5pRF3gx7l$<;vDM zyFa-(c(q)9)LT_` z*M(MoN$Knv?7b%WdI_y`*)?`Na(E%MP_8d(*TD;7a@`=iPEH2i`*PI;NRVA|XH9Qf{=ImGn&CkYTKv!20cMzw;HXa_b!&Uk+Fc2$t z9bg7l^UK}#?V;i2(0tby5(Nvp7Px9oFb;B^pW;foY$r=EdDQZeKCq$r9muO(Gu%SfBxAv9fU(R*QfhJ7;y`G%3c0fF~I zT{US?a}g+p`uVvTxM1RAXjjU4au-bOw@ZFGc_`wjRi~5KFrkjBwa+TVJ$?Uw;yMQm z&7N#j>A6wT{>keZe~A%V>9;TY zP4~8@&O>7OE|YX#`br5QKG-OlI()fUbk*h3d2jZc+xyh}jW2FUE^F-Jsb;?kJKvny@py8*UziZW&U;&=__Lp~%%<%t zz-jMC&LsDXi_>fM+No2gwx8PS(ykq3+O&QoE)KgMl7V-O9((s)Z-}hbG@!uIyzwz^g*laZ14u%c}%3}?&BClBgAHGLVPuMz8o)U6*2<3*5 zB#|FpXTyiX@ckICYhILFf>#Gqo*G#mNqNe~xf>}b8#{^I;`NrOM_%hB`umshvXP$G z8T4X!tJT}p2K?Si2CG-#nhaJCR*Uvl+ZB{NC@^_4k~6&;Gq6v`%hu| zTCrdZ9zDn)9kA@G*kxI}VwYvP^jjln)Ee&Y88Squ{T(qfLLjLT_k)UVra*eksy$y7aT#ZBMA-QG@Q84Mv<#016{7aa-*Wztm;|nFDbB6z?hC0-5eT9aPl! z5y)DApEo15c>w=S5VzJ2@v~^55AgG;ICrnZc{9$HJDevvfeZtunZxfpx}RCL~Pur_)3Q_?a);}24r%|} zA^nz!UAWR!k^9A34}%aL+6TXo=3*-W`>^~lffR+6f>LLx+*2u#Z!6D&QYZNJ@)NM* z^b}ChRXny%AS>4G1EmgrF^E4&wee518-E+Gi>(K~3v}}mK23nTf!K=SI~_5FF#>t7 z&7n4u{SI7f3g$cU4b{__)syzjb;30SlXso37&I}l# z=9bLN$|TY@AGN=y!S%B@0`v~UTtGncNP{V*jYuO6f=c5ZU`VkVFff224;UE0#ADn)ajAt7Z?a_@ z)63?~A*O`HE=gUxb??!$|A2vm1`qjF^&4uLM?zeJKq?YG1g+~Tg8m6Y$qu>+TC{oB z=KANqS6@P{v2?zScHnAf8*2?}{jh90h#GKs(@D@Xo6fS@PB9XT9yROA?5 zn(YeK%70N}t2Y0EkgGReZ4f>QSc_6--Bbgg&6VY>blc6*LDJ*?=kGNFbd=W^>0an? z+8mOH8dDHb1X>(Y!fH>gf+;R1P9TMGMWE$z<)C$)33oLCS8WJrI>`pD>n!mr;{~!R z{xT>r9%Z%1LC1>geue(_CpT^W-~r&$J&PVqy=%Ckqk(>|%9t2$qCJh3h+(! z&J*NE1k00Xa0==dcNUblgRIOQ20vS`{8?HEWGg^zJ^(+>WNv>Lt=li`K3WZamC5|P z1^M+p%d;x*&+6x2bAjv!sQ-t-PcqqVkNjA}@&uo~B@~YFufSdVFMuAifm1l1kMxZ6 zL|?(+ZxBdFLp*48#DlIf ztv1!#6HgELf7d!8{^5wq_N zKY|vmFJ4de(nzww8l7SoYiLfo)Fh#IGOA__XtFI??Ad%o!VJ@+qYS+aQA8c@5w9ZJ zczwK@L?N=`SU#*JN}D096R0VyH)u*&3h1D)F`xwBHJOfHp*j41(DLx5pew>xf>wmT z4ocf^J@UtZKY=`gKc1Hz*m%%DDu@N6JYul;2nMYIePlzL0j;))IObAqb`V2kN)K}z zOHoB$)iCQ=a?Wrw<)nG9<;jZ2t2SA;288K+)y*~j(an53Bm9KmmZ9GGkVRC8K1da= zZ4p`b{#b4EM{8aO80T58*lgt@${FXs!TJ0Gy$f6iXb+LPn*hx(J}%_*8c{6ftr@R> zp3j%?c@nwv{DvrZp5LG3&hvQ7o#*kDJ70f(gX{D7^YO8qJ-v@pCwIP?bh^&{n%>XT z7}CLMe=!Cy0=<9~fR0zqz9$aU(o6NmPF6l>$}0xx88IXHz2Ymy=eoU_;5kfoW?zI6z;b}vKLx&l$(z96W3n^* z3Lo4L0cyV;{1B7B2DdTUnLQ~)+YM0rRPYCxyc~Qjlbza!3b>zXLN%bCp?;tNp<$qg z(7B+N&`MBeE@c*GH2|t*2G3=30eB&ko!JxI-zTwq{1k8s>en=I3g@AtamO6T+iaer z3j8l7Ujw%>*;)7&^iQ8;ebklUtC_qB{7oi1vnMA6^5`iko~yvuGWlijH<|3r-im8P zA*QoPAipnW@)D$Fnd|g79M1*V!q5|lv9$y3ZyO@^3gly8`cojo0UCZPcrKHRz?U*v z-kQ$4NRHo+7S>aasrS47PgnM>>KoMi?aH3tr|X&7f7ZW$@%wvQyM}Xt_J<7kqkW+Y z{8@tO{YZ;h@>tw~=v{!`g~Z!fqaIm5D;1AdeK4=l^R5n>KX=pqpk!~Ji7yN*a6J5q zkogL%(Ppsl72C7)ryN%nf2+Ip?@0Ma9%cL%bAjhy)eWqFRN%}z*!5Q_44>H>)b80^ z+_bm4X`iBTFa8xu?OFLX#49ZSEdQ-O?!`Yv>z+OFRcO!CAK_m5tCWV%>aRhkF#at6 z$+HUWS@;!t_w3Dn?%7*s%~8;Lp#5d>PYG}@{0gP^y!>m+l*OOfn|+npTMtR;u9&Sb z|9JR1W#QY~?`8_~pVvQ6h4t^S6s{pqVff76;-qr&!+x4%m5dHh=|%s*yd<)*#4oqORM zIx4hh`JeKg!t%?@f2FeUttTYAig@?ziP1fKvzzu+ZrU46%Hq$*?YD4Z&n&UOTT5R zd;NdI9QVqf`Ca$YUp39W_*<-Q#(%nd;a9nN{jATsmw)7(d+DzTR(Sv7^_RCFJKVE3zo;<&toKw_mFi#-HUM`CVcBdHGRl&(d#QtuX#9 z{gyTE*&AMR&%R2jy*>ZjE58+C?$v+uqwd*T(%ox+%@>uWpU+>I*DAbzEdQ$%hR?_E zhD+|npH#RPe~ZHKdH>lk!@cWQp)~%i{-?aGF#SiQcFU^No?U}7iy?LR+`^PcK&b-dO{ImS2FnnJB-7WvGxfg%)f6A_3HoiEVXAn2b z>1DuM#0LJRvtdRS_Ug;BAL9%D>OJMyD}0XE(*6>bL_Zg`Gyj0rfJ)n8HabQ>+PZT$y@-o?m}STszvB4=nLcCKDrk4YW_8>oxOGvv~ic>HwbSORr!4ax;5;5tbzS7>_gD4mG4yw zWLxDn(2pv&gEsEQsK;QXa9T5SGl9GtvK4X8GGrmnnF*Q5%L-csa<1BTMLz$CC7BRI zf2{T%fEAI0NJ``olKSyb(x!B{<+;$2hV47==rFrr^i@@h)W%}av3;DOdzY?}v5BqY zW7>93YH8|_5Y?trH-Al7kdF`^;NctMt@CO|g4J3-&*l-K_5J8}i>|&s-etWdSKprJ zD_@5*j4dSU!CvU)>rwgoqNdvSt!K}}k+bLi`!NOno5zc<3zDKSX|!>{CuC>wl8dlD#!kS^tIGS7a%(x15o}H(!%@{p;iEH@CMcwLi~Vfwkf#yxwphkN!`H|@=yZiersz1hpn@DT>r)G4LXJ4v;LDo;rc5c zzSYg}NtCkn3q1S^y|VO^KUn+wg2Y|*w;G&h_GG1d_7*qom98JNr(favGj2~-xtV@9 z?a694!*|o3tWg*~tA7=DDlEUuUg`QbK7JxExfg%3R++u!qGV_GQ<(ls?%DJ34gSi) z=l0foW%nO$Uy-jYe8SSN)Sic*5~^(d3%9Q*a4-GlLig;gZeG8XX!pXm+@J1y~Ry?bELBVuRZ?% zQx<>1pL@LFrv01B>@EEIzpc!kuysG?kCoLQZg1_O%-+Jr|JG03v#*$|EdBQIKXA{U z%yZA)yv;p(tDE*_h4JU@m!X%!>&M%lGYZ>JR{yMbD69Xx{Z6qe44?HM&ApYSpXXo2 zX@&9U{Z~(A@wfaXl{;&uGJ9-RBRXtVAUYj;VByDj0OQ!EsZmGwe<%g$>Hc_IU*0+|;z57ZiG!wzgI>(}D>YkZB7?YxVErwAJ-m~Zs6Hi4$vo7(!PW$@MtDmz->&f79jiA z?p^2*JVX^awq7OW?FJP|dS8-Lz@t8pWCQriUoxG##w2An(g%pw4}2h#pDwK3f1=JF z2ledfPr5%~Z-DOaLVMBA16zS3z-0iBR>jSOMuX?q%Yr98_9N#Hd;AJo?eRBg)b(!I zv!uuMKA`=s_XAD2-XC<}^+BLRu8#q&b%I{4$9{r(9jKo^05nkF3$(9(5a& z$bR87&;!C3pnnRNK`qgXqp|l=^z)z<(HlVDiT)UC0WL>hhV0-3FK-{MuTJmhAJ8l? zsCkRvkkGL3h{&jx(T12-t=o*9k~4eGy$>x|c;MKHQ{SDje*fe7UoQMwZTG;-KP0-n zv3s(oUvSHI@!k4)=vzd!jqBQ1qiY^1_%sWPiB0IK(gudN>X_I|?Hd%)x>J|lZ8|6Q z;U4g~@aL5L`RC&wNoV+Z&bgjad;UCFsXgE4NU1&Fmr1ET-S^PZ)z24K`A7Fmbac0B zUw;{joIQX3%=5ec^Kc%ATeau@D7EMDab+)8{`kIDO6_@iUD@;e$?)|9g~$PjG*p1k zOkNGXmdWBh+=_ko0BY|I9?Ikh@E9hy25-aUcHkYEEcF3yar|}#t^3=8FIt z{t|EsDlY?noXN|<*D!f4_$DTc;bXivn2q^T!6z|!3V1q`Gr;FE`2q0dOs4kJu){6| z4Ras%68@C!Cp-W;d@SiWejIcGqcVW%Qx}InfxM1CzH_B#s3-O;3@|h^2qYvv1pAm@ zH(fVj*X^1NjKB3Zy$x%0ZCRkyHQdjZ?&5~AJoa&ehPZ<*-_g?uAL)K>I9|J(Ek^(C z0qUFM-pr2s64E`1cL8FEh(nKSZJ1w>kKWtMGYmS{P`{8IJvrd&T!g`{FwrM|2!r7ecM zYxq4050eL4W3M{zZS=;GTYGPVhxj^n@Vy(~M4`K`M`G9Y-Pm>gd+%=qzffPpO)s6n zA8C>Hc{dv}A!mzkl-O#n+OCmn*zsFzleuS&alw_t7nATOeqKtY)*v2Uo*wvEiub`R$57&nG$m zdHT2>-?yC~=ktY}^Z6UD&-HGX|E}_fhtK14tMTV{w=4dm6Y6x8COXSIoS<`D0Mnzpj@X4SrU= zD)pbMVs20Tx&P)?x7UBt`u6xw*n8nsoo=uH=FYd-|FYZbzhTbp^}izS_WGX^e|!C} z2)a$}8!MmI+Z=y$^V=JLi}Cj6zx6hkPeY5_n?DBA?aiO6+w8wN;r7O#B;H>CD{iy@ zDP3-F{H?dye@oKsiN9R`nU5RzdKNx^5X5>oA&iGN=<(D&(1yH%?}WWdUL$y};Nk0e zKl#h&vJd9`eg4$`ORoAR`wdZj8&YA|>;1A}C+2^8Y`k&vlX1B<8rv#jwVlKK&ri1V zPG*62AH!FO0UD3%;4O|za#!#%OfCdp%H&PpA2Yf7qCoxxcplV^Is1igRC%!PRC$9_ zP<<_US0;A{@4@6g;1pCR8JxnI{|odFW4+oV`sYAj)V~G#j{YOi9r_)hRr-CP2lNL( z59yD99@8HKJ)u7fdR~7C^e_G2pt4S<##fd+bUIK!T>xmHt^;UCT~E-yx;JAgCi$=Q{oMNg)&I@?SNi^KegEqJ=Kd>v zzqY=A^?!5!6~8}Q-@|&ptE^J~TNS?FRL{ExKY97IyryjZMgtG)9pL^O;%|@t7N3XF z+CSp+80d1J6`)W1Yy_?J*#i2u&)cBy`D_E-?(+%gexFZ4Klk|(^tjJ)(C>UsgP!&I z0rb4jbx=q5koI9M{MSAXx?KAt=+oMbpq1J!pl@s60o|(I2D)9l7j(b&Gtkeq2SE>O z4})5@KY*Us{t0?jdlj^fYi7gp=6I74tyV(96A3t**fJ4qW8#C9Zn}RHj{NUc+)=h1 z-v|2n@#~-!ww-9r_Sp7=9b8My*L?!I zPxmS40o_5+qq<|DXLM&kt-2pT&+9IM{;8wi@2l$s;)_t}QTpZCc1-R7-iyh7!22>e z8GICzQ^BV(*#drz$&UUDzG`3GzkGF|{=NaALB1V8JNlYH6MegYcJ-xS`tIX92z03L zFwl{{qd>>|P5_izB?fw_dO1}N4E#1LMk);^!?BqnV_El zdPsi=^sLxd(HV3GUXNa~t*uiF=(-2GuwgBLJQCrLiC_xfP`o_>_!{sV=m5k6vw%W? zoWOUa&jK|PuG-KK1Zn^qkYbkl&DLJG=l;w6H;3I`|CO#kMGiT2JpM}8r#kf=>aPs|4bpZ1?Wi?@CThEYcGY$R?V;@n+DF?5w4ZhW=uqu2(2?3v zpm%ET1f8Uv3OZdo9W+~821)=L0&O)sz&)9)0}ohx7JR#vg33Fo<&s&5pHVR49y(k# z9Cy!|s+pi`RBJ%rR=o{+S$!FAtBu!;$6Bt5nu(w@qGsUjujitk16>!j4s>JGM$ovH zaV>EVZ}~asJ%)P>0vQ%FJO--?ha%4+&^vwZLc6&o zd}lb)5czeaK#oLOLBEgu1@w=|KS2ME{2TO245Alc4R39LfR@IN7gVlo(yL;95f_9FY1;3^D z-d08Jf-I%5+)$2iRv1=;7R8h!wTIhWXhYNd0MfjA{TjR*SG1vM17f=2D(KYBX`5@q zC!QLl*3;7$RPPxM+S0QnsKGNCw7=&F(D9yyp!axw2YSZS2Ab+sj&CtqnK=JcDze3cnH!!6iXtg)M|~!!^6|l%gfu_$49I6_0{S0dOtsZ z|A2sI%>vfki5A%+JHJ;)OVpVs%Oe6e$HG|6pW)?P*Swg0(&47t$$66A%kFT|?I$=Gi}Z^pKc zZ>MP+9~-YCKBi_S6=`9L0BtGGuXCQ(=e+e zH}k?H?o9#+{RDFgNhM}dL@Zn3`{y$IwF{^qz8f;W*LFt z#u2k+mKY?DOane0aZ-_uRw5(sN&Vv4=`VI6C)g_gRRAV|zAZ6-> zYJc*GdPj7R$X(I9qw&^o^dZpG(Pu&bh`t1RGr9(Jm1#9v7P282ZK`2I4CvAg%Rr}W ze*5}_)OW--u%9i(rXoMsey~BaQTIN1AJyov>MMku;+cZB^_tf;w5>z@hTx7V-AT2f zTC7eU7&;JiL-+>Vk-A0F_ptAaybn}b@0VceirB0%y##v0R0G)hJkzW40{QCH>Lir0fv@~eQV8a6_ zg^wG&Q3|!KV^Iocwl77=+uQy;O5rcZ?-xZQq#4jCFx!>5an-Z%_Nk?DK*m|d)s>3x{xWhG@AzVj5F%Q zmCtK8W4RkxFPHiH9KJ4v&x`YQEPS4kuV3NspYnN0{yr(M1$;i8uRG!U8T0GwUoZSt zNAPAcK+lf{pTOj0;EytSC-^QV{{?=T$?c9}W)`5flfkDj`3dmlOx^?jF_ZrV|BuNX zF_+#6ptjS&)0q4e_|r_LQRVUG`H)Eu!u`S$9ME3+U9m{gOc@}h(DK|1(us5bNLhE_ zMf!?4AwT+#74znoIm5(f3<0kl`Gp>@C>|Y3Ge70tfXnnnbj!YV4?a!<*Pt<~GMw>1|e_$Ml zDKQpvUBeQ`fZmyy25L!M3i?*!E>P3Pt{ZtNXqb!`Vnm#Kp~*%0Bhx|6_(R)+r$QJL zkPV=l@JF8>{15aE{GlgH-U59OfBbpEF0u>qar~i-;*Y*T(%yj34gEm-i#@z?hUt)3 z#H1k=q-_~e@l1PLC&=;T=+y}(HCi=qlL1uf+x5GdjQ-@{njsGT=>{o44yxIh$pc)+ zWPk7gCI^9cU~)%r6O$9cyD+&ccuywx0UyNVq2R-qJQ92qlT*PdXwEv0+vvME8SHpA zcpj6Bz)P9jAPuBCSvuAxMdFhrp0ZrxOFowPtSch7ER63@;0_07hANw(Uk=-8RXwWN}vUN#n;q-QW1}YX=%Vp0fJOMvtd{{8gjJ+x&f` zvEyizPt-piI4ls)1_MWdrUs4&oftR~baLP{P;(%CA8lD6eG_d(;1H5V#Yx zDzFN4PvBnAPXmvEo(K#;84V0-0U8=K8FZT1Mp=SZLbk*`7l#p7+f3Z>|Umx3wp2m0nl=FIp{+4Gx27idJ*Un^)k@M z)Q^Eap?(?kRrNX0YPAitT~tSu{Ap3?pxNRaz%Ft0Poi5y<0?c)ff}L*gAR)x1)3T? z0d!LIB+x0*Q$VLhPXkShegM=G{VwQx(Vu|si~a`mSoF7`r^TM_U(tU<{#WeZwu@

      q2)R4fa!)XC&EBH&W5q%!IUsm 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 z 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

    !7bkJoCnQN34=9{H5RF19$I$WD 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

  2. 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 z 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

    q2)R4fa!)XC&EBH&W5q%!IUsm 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 z zrgqMaulzssxHW;}AGY7qKGw_^;}6QPzr*n>OFjAV`AWX(-+J!tk2!w-cRl&7us^|9 z{@#mv$^E5X{9sS>W}-B6(8$& zda+J&{@KeuA2#Iq-Ewps2>k}j)#rkTas2UbdGg~vCSUC{zsk*jIsREX{3u69efRAP zsQ-v-1?BUbyzJu;_vdOa=;L7@rLX$$JGPLGKhf(6|BV;(&%q<#k?Z?j`a6mKu3&AQ z$5;I;SLk(>=!wH7pY%-PMxpuVP4|>(qFt-2d!Vzm-Y{x0Rk;#-g0 zU(5SXz4V^}`H!2w-;3qXvsdQZ&he*!|0BOO;>Gy4AKjnI@h_U;X@Bc6jUUUL`p@JK z$EI`q``YvTzQ%{=AKZV$@lT)V$!{yG^)J5q=T~K8*zxH{gx}TS#q2-%zn1d(DPI2b z1F=7jAF<4-{U1lB$me%^@dwfN1>;j^Ep47Jr~EBy{n(!4e+2o7JN~>N|KJb*4CDBN zhkMqqrSgll-}~Ry*u?SgA?;WBNUL98{in=lMdb5gz3hL1@Z)pNedVtdv0I)`?!|u{ z@;9`<^_F&ytP|$@a$3LbQrF1y554%$!Hu36f0R?2eH_KKd5)a&UoR3hjpIK9{)7CE zv0D3e_wzaeuwTUT*Bg6wbNpKfzwIfkIQclfD>d!sSdQP3)j!%*RpESo%!72)_v(L> zF8(XeZ}hVNx~%*`Amw@$(<;0<@+41`;i*@*KLObT^z3hK-(PMdkqL=+2k@kzvANRF?Tr?x| zI>%q=XHWg{`PW$LsPCo!guFkq^OH6bKe2v&^`E;@Mc?A|-$wdJTwn0jJ~xNodzs@` zW_sEO`SBdkoZ9E_SJtreGo9Y#`O!~v%D?R9M^!ofHz)G^?(5JIfPRl<`-GuyaQt~Y z@ch2^FE8B+mh1ao{$KiQp5J~E#xXh6|BG*a4d(cRKj!&en|$LR^6!AA9KTJcetq@- zL9Ori;`r^2c>R6NZ~r-ds6NM^LfbFSKf`%9I_CF^4_h*Sxy|t}Ao(HsC7!3BQ~ubL zaqRrq&k!Hn`3dNca&pQ)Y}AwSoc?9N|0%z(_Fvp67pwok%AWO$?aEjGIiK$eJAOO{ z@j>WsS8V}#3C8K1+Gl#1Vsd@itNn`WQYp|rFRFj=p33t17he3&Nqkc#z_`N4{Ax*D zeRh7Y!4XgU+d66Ud)8pz`uCNCdVk94A4lR3^7~r9rz)Lf*GKm4_O!p{wwCw!${)M+ zE;~NW%*qeddbVwYxap()Czp-d%h@L^+SC3n=Znp+R!XnaiR0gpMEGBD{ism)4Xrr- z>7@O-?e3#}CKU{k=Zkvz|K}wBBR`foZNGgU|HbB4^=bbO>tEQ8bIL!XYP!6C#7qBM zBtF}^K>LFIKsn`adTb%vzRLdVS-;lyFXo@$Hn?<`(|?1@lixX2+sEOn{TJD;6yx|q ze)i;dyrc2E*8y}4gn1j5`O1IGj!!og_2kEX%h&w#zwwjV{O2U`PvrNt|DBL%OXuu! zCl{~3ul~95RMjmU{{bEQ_*%bd&Fi!4gNHM<3dH#bv=5d#)$5gCJqs);?~n6pUyI26 zE%G|w^KJg*(=*rE`Kyo(y#0M0UvI41B8JmHZW7OL`^LBNdqTONe&_gmkntVb$Jh4N z@czBOIR11U`&-xfHvhSA`me12q>=sw_4jrD=Zo!a+4Wh)kGH=a?q|rUe+E`LIGwXk zQQ*h?5cS70r~H!#RQi+Sx32TlANR>BBYpG#{YBfe{=c5s-_7r1|DNIBWf!OaITC-6 z-&gz0s#l1eU;Tr`XXM8+r}qDJ%HSHD{_Dv2(GLB(uk$laLVp;^@jHqAk>A(&-*Q=x z_c;D%#6HOHYy5A!dxewZFBanIpU978PVImCyXYW}|IjW^eq8tUb$vGKTs4K`zd_;~ z^80F^$@4d}?RPPmzeRp`sbe6_d$9a+;m6xJ{quh!_V@Pnb07DDyuPkqJgFLRljAQ% z#uxY;U0>}}V`6=F{<*%Vmeu_> zu>IqFGJj~R4gHpn{maIod073|5Ptj37aJe#_&)zHoPDa3_~uG|vGp(8+*}7a{^ff; z?T`F;zl4tYz5IXcTbtSW^UhxWqm55}_0K#1p|xN&~LEpTdDUm z&OV=z{ML0`t6#K}4!xIsVxztc<@gIP^Rz#nL+`77N*%bH!14D#=gDv1ulc{P?YBs| z^F=xS(9?u}&WrIs%D0VOe=kACNBEp@U-h3bqb$3B=`5|^ZZ9@J)@Q*GcKr1>;dhU_ ze2hOu5`JUz+gl_*L4IGyUp?M$eweG@=A?gd^ZKa&J5`FaK;V}D=c=U>ZyV&n5! z9sA>XE;+UT|AzJ{&*^`Xj8D-%zK-9|9ebOt-#I$=@pb$-Can;Af73pl_KV}BoZ9C? zdb_opeJ<%@*9JCpnb?eA;+?Dlls@0|W8NdAoc?lOn^H&2)w z!tqDz=x+^xeWp3&uQ4r{o&WEt(|&!O-}~x|ui5#NKXvS5^>Ke-gKcjf;p}50^LuD_ zU-u7uTytb~j(--czhM9C=1=vlf4slN%C0Yb2>GGlx2si&`zmlBUk>Xx?nvP-oc;~T z`Y-D5ob22D^RBqZeL4PT(En2VxPJ0&{CmH`hktPVnIb;hv(L|LJHJ1pE`%kE{>0^+8|v$9C9# zW-!N}O7drS-0?AgURL(Ik{o~OC7$*{eqa0d&O0y9=JZIABS-K7Gi&eoHLPA{ipVGw&C~}6Z>PoE297HC(aMqueDd#8m&Ie&fh2nf{}mqjvf~{{>fbg-<#t3#jCV>wZVQe zU-^T2mhZ{&2V4?~Rexcf_cXg_+Fnfm?NRkkas0={eU-KlaXtyGYrZJ|8xtKHIDU)J z-_ba)+dePKpQlmpVjTbdKvBO<#A&FIPvw-~2KCzy%I8;V%KK~F&o5XC=ND~Ttvx`* zdRd$Aal-i+=&u0xDs1pgj`^=>{PsbbAN_ylzXtPFaDKQMf9n4c_Z{F-6h=;>MbV{;KEKA-dwI<4#pq&M@A`p*Zul=vDNwE-#6ps;T--y@PCzFcXyunL+`vu z_P<5=KT7XE8SD>keSZGu-qvs~hd)uCzawRx^51)&_}RPiWcwt-|4(#$g7dZ8oS*++ zy?meshu=n@FC3_#@9XD@e@UlGi#YsN59;z+Pd}HQCw^x0fkQa_gcSb! zulGFhu|KU@|D5msv@ScfbasHY_ta`Slk@*C9e;PW@?RvLU;HbS=_J=jM8v;mdli2x zSM^7_+MOT%;?}M0{Rz$Z%+>V+`b%6L&JX|W&<|Xk|D$kDk6u^oKTrIdUV8r;4*$5` zpWoX^`R&r@tCsfuQn~HvS2_F|`k*cI{MK0Ub@34ozCP{`xql<#kNpqVKBE4@H(2#6 zi7v6l->-oSK+x`r!chPB>-OOgUH|xXz3)9w{7=6>wUNUguFEI(8}Oee{*qpQC2{zP z+JBd>H-$bQHd_46_*_!Ck=!39czq#0i8_B#uer_>|Ec@i)Zy^|)b*QR*K6MM#6P_y z=L!x#VYI3rP%nsX=U09{t&)0@!ylyYzb>7xuJgq2x2C@Ae~XC!NWH(e=%@S^-Otbe zz434T%;DF^{vi~+BfB%`UDyU$8OwZW-H?Qy9)tA@d>dzrp>k3f! zx4B}(cj=$O9_@Ab`cVJzd@%s+Lyhk}Py9~p)-2=j(@=lTR&nvii0{?@!*=_5VVM5~ zy8iF2%a1su+lReli$CI`X~f&_K372gN8G>C^!+`6b(=BboB7)~;YcBuzg~TQpEXOj z&-M8u=I`MrEc}N(uz97NpBXHl$lnYdA4{)G^!F`Ye1KoA_HUPP_@fd3r3%+|<@w<+ zC_Lik@Moia^|-?Io+th-@6~C<;m`d+w?6}_ec~@AKJsJPiciZCenk11=&-+cwEVRI ztS!!8FxyxE>+=^({PR73!K?j--H|vd?EZr5Hx2hky>F(_ju9f=if$@ z|8HN=&v#?>^>y|6l}~HeznL6HVpq;d?bc?6%d57lz`ae9qDJ8|Edu zM#NTr{2Cwq^DSPxM6TZt)(>@c|8|1z2*-Rh?7LK2|HsvxdoUCq{^#rR={l~)?_9c_ z9u426uPfMc!=|T&;&0IYKcxF-eEI77^2UfSG(K$2_Zx*hU-&eBQ%n7!dzJ2A8Wmgo zfs1jB`q#b@_WU?V<3Fm~Ki;2Je7vJ$!?$$)!t`H!<2&;F6tn!_r>|e{3kuh(&(De$ zf3F5sy_&`669NCfJ)a1E!}h*&j>Xjv*}8q}J)`OeuRh;4n*S~UYkTOqg~zGEIwd93%B4Te@T6s=Po9#OIKq=VGlOd90j&vRW@?@_ z*BW5Wq~B-f<@B&}tk&5nIk}$15hDd`6d7i}FJo>+fH9aL~ znnk~{Zgm2pAGOYznVFY9-IF*yH#;ShaMEw~SgnIpnI6xin>{&M*2Ju=4C~gi;-V`v zQ;BfWNKa~xC$I0EJWsCZFnfAN_r{)xFB)4@bF(tpZ-f}wdTjd+! zWwOVbeR)#1#4C$G=wW50PqI>SGutN)n>f{zns?PC4>_Hd?#Yp98>pf!LzSA9IV*9J zCpCR~O2){H^i)q9EBG-n49Lhz$zwihWhXC)6kEP=+1bVhY9+)VHsi8Wt=3cW^0E`N zJvq7Qxq1DvGAZQbbY6PqOi#Zl!Lpz;{Z^U0t5x#kUr`bg={M50vEXI6rDBE;#*S~D z>B&nRIpSIrHagZu#|pVFi(cNGY#AqfG(~>a#+sR#o08^9OwO`PtxlNLQkH{YDu?`6 zXvCpPG{QfG4O(t?d;B34&+HDNZ#ovgnJ{@maT+Gez=gnNWTj5Ckih9PDS$n!DV~%` z!OtcKOMG5RdPc;@5^iX*cb?3Yi5Z?rc4qgmvI%Ew$MF)OYY$6aF~P4=C#x%`hm}GX zcII@C?QiE!5-&nf@8FB8w_ksV>YoLLM*I1x`BeX`jTgR?>cmdeJ3E`vyq$h!MgC`& zD0VOGa6aTrqgFQI>icM&K5#jqB@B=HWi-Kj*@vA+zWiW?dy9LGn zrFc>3fSDL3I;bgq?biK5)S)Lxa( zqD6F2-&EtUKKeV;{|$fseiav=Ze8g7tk)v(U+ze}GnAM4`;Eh3L;L{G?eQ}@6MjVb z|NUa}`i)5Zse|RbvUuUYx2h<-InsZm6ZrcFY`&7i|9VIn;oBT9+z*Gx2iI?4O@i<( zsAlADaeRQk;ktw})c%QB-`6~Neu|nA73`&fyO<{0FX2&(p{IVr2CSxUl7CoMYz?H+VGMe;3YC#C*!P)pKz) z{1#)MWcRPQ$M7HX1cO%RLp1!jF&_E+7?Ho{PKW!CcCPnD^&Aju{=Qo6!pAxMbq!U% zmeD(Wc=bFi%*Toq|Mbho7ze$9zL8QOy%Ue}sFBdM=KZzhz#nDWC5m^7p}Y%Kte1K<-Xg&+(Wi9&7pU zc&7GL4!`TS;rOnrmH)o?6;G`3xqsPl*}oLwf0}{stD|sBi{F0o0XaV*0zc1h_-~wl z;k3>G^#ZK_x$5ltyFL2)Mf`yW>$J`QxUf^Y_40H6pLD>-`oSQNQGkF8yJyl$c7K3l zyTjw-TcpZ8aA6Jj;Qbf)ZKq!r;QX)pnZn2Qh4VXtHpcq1Z{cI?`8%_|568zmMAs5^ zUBy~HyJc^^f%D(>5s#1aJ7UFO<~}ONPb13b1xERY|3c4qi50*1k!Ndi_*L}!3zScs ze}Q@dHd_8}Na*tbho7$F1AMPOp91%pSj)fr>BVw!wzhB*>cX9a76qir0bUZlEBFZ_OxUOJ_RchCY!#`-m2m9t@ zzD}&=C)d|f&QFere?__f2CWap{R`ud$k$l$uetL2)*ODeQ9co$VEae6Q&grG|Btx9 zdY??p;PB4{&%aRZ2()ieufY~0t5?8<9rxAe?E0*S^!1DSEr_rC5o3+d{A)TTbN(;W z?N1XQS9yHk!WJW|SHOk6Y4v5Ye>kH24|}R)d|U_7@Q;1=X;%)vX>k7; z#RGp~-45$G;Wup2S4&56`1OM8*TV7PH_A~o|G%AolC3{4JmCNoe8gz@(=YGegp1DxeSJlgPyKv{`GV2#_tklQ28SPTD*qZE^>sA-b?lXIHGyC7*@N4M(yKw*Y z9?|^`xG%yQ84O(5`u#qX>*FH)@2c@p{>3)sKl(Xhjen>5>%1KPj6YTVfcOOWSI7BK zF}APrFDzKX;d_Joo2mOd>II?a5ya~M!VTZB{R4Y+{SW_vk9JC|_&q1~WA|5S6Wo6$ z+<#nGvEq06`s!b}_}s4RPt$+gS7OEgd)1LQIsERy{lmlkN1S5CKh$>pPaOUz2Yi%I z@EFBE;`#LXIxn)%cQ@<_FQ32*=zU6J^?y}^dhGi2o30PPKLQ^X^<6ao%O&TzxcKBx zE*U>o|G(Q&rZ$If>HU9DKfrHT^kYTy|GN(+Y~%1VjP?m|(f*Is{|7IcUXjDUNj|@j znEsbGf0xz0?_~~u?~?HHW0uQU{r~0qUPCziyN&n&A2!zV;~(0L-CyPSzHtA&x_{eS zP2Fc=^?!T0YJ)icPZ;gzAbym6%5mRkA^< z5APfI7wnIXe2z8#+j6(u#NmH$wEux$+WX@&?PS5PSa} zs_~J(z%Q-;J3l{Mne+d4eg87?k-G6K1`#q&ApR|9}0cH|6@oi1?(L zaQ$9O?pyet)K1fHb?ZYRh zeJ1y}i71~30}3DYKX3!x)i^NLl|-w59zFTvW)9!2uV2)kzz>cy#Mr;la#bZZKCATe zqv=25f^r(o|6X5x%RYat@u)dOCcb-&?*GhH^DLs_--HD2 z&+i3aIOMN!pNWQ_c&3oe-=`ho1HWT!zb*gqDfanmpswG{_ya#^jRc_F!>;MON3Ktd z$lo-=_lJ&eqQ22KR{!IF{+FHq^RDiH2)2Ko(bto~W4Ir2ef{w0{Che7*X<9_U+n*h z`@0CJc2+d}=@0L0%Hcopv%*LJbFkg~hcOOs5FqZb-yK-U_Rsjt>(|_06z%jV_-A*& z%(kzN$o41guNW*p8qYsX$0f%5@1{0S4&~zWr4fI`C!p6W##(;bRUhZ(@H-q2&tKrX z>#A{#Sn-Q~9nH=^dC$Cl5pQi{#rK|@%g*2M>-M`v>@_ z7h=V)d~csix%fYA;QJ9Def{D-V-(Mb>owA8RD^ddU9MeYdOqA>9EX{1f!E5q*=4b@nEp@gDUWKE82P=SRr@yUq0r zqhvMtZoJq=%|w|7_=EZF;?24u`BJ0?XvOol@kwUgTAc_#VtvGuW9fXot{6J!;|Y( zC{t#k&se`O|6-b-&*1kgNAv&N#|w+_U1`zryYy;bp2Hu119`IB*?;%Z=ECws;un`_ zm4Y+x|NK*hxVU=?4FB&Xd~1(0e*UrMB5)=WALSV3Xs)kUCY7Iv^%0_w{Qn>lANd>j zzPa$HM8~i2+v`g>{Pom7<1Ycf;COT4n;0E``Q9xHIQ;%}eu1^m*?;d3&4o8LI{uAE zQ$ObLt<_ZiOTbT{_ypY1@drLLEr-M3dkI5{{=s>9MI3%$8eLx{;1_IeC|sUMe3VP@ zmD_dnUc!&4KXWdj_= z+!^0>u8k;M-3G8hYsP1d=l#0m|6=q0xU(yjf5P8s#J{r%5JXll%&!;!)_yjJA80}N zyUP97__zGVPS-jKup=W+6X%zuwxbmyOc zarnE(5&rf6J^q77W`4rqH=IT5AHVqT%g@{@lU8u}xwYu}IuCrKxQco&{@#N2e^`-k z+<$9P_mOu;oY;Af+Q_s}?*n1}-h6MC|NM`(%JLaezg-YdJc;??pg^Ev#tsD0}?9EtzdP)Zl!ClJ0r2K+15SG|P8&$*jC zI1(>bQWYudEclQ5&40F{NVv<4Mr8Z>m%qEq@)HrCq9fG)F9F~CM@5mmAUb}{cke#T z;kUY*uHU2abiPA){BeI2a~g@lghmK+(8{!i%GM$CYI60np!=5?P@dW-;rL0dDPOvk z4S`6GvNeFc{(n@zx~|?e1Fm$D?N*L+en$DwvymMb8|e|du|$gE_gWDH$2zf22Mu{<9MI z4?xL2*m6a~G8HR!Ht)~9^^>>%a@Ai}kskFzufqqDshssQpT>%>Kj6<>^!DW(zTBTc zN??;3&nRi10=ZWK1h}vd{*}9u!;KDvV;+K;ge&u!Ae?5-jgrB{)o{$OwE^PHd2TyVM*+X>vZ!FpW zz>a!CDg?N&Q)d3cUcYjG4k><}zfS(keLC#DIy3=rVUN6j1zW%E)A<{CM3qk`{G#3U zgj5J{VGmaIKgGr8&}QYoIIQY_Cw%`N@}Cp}T-ZbHUcQaP&wE1Q`)aEC%?Uq&e3uFV zE^Pm*1$#Jrp|9V-9lCy~7T!)ON6GTJXn&SVFR|4LfAqG$>T~!7)ITl7yIj`~#&bB@ zc?G}M5K@}Cp}T-bUUhZb`9_b*fU?v^F{FJ2>Tsak*w+o;VY zqd5GBbpBdzmyGWtY^f07!oI#S?NJWDDeVs=CE(yc_6bTjP34Ca0$kWGGX}Ep**QhW z-@$+2=bxz}q(XoTyT~QJ<@}fX8%YT`TwlNkE-Y|id!}vA zsutkFUgoayIfs8#u?Y|0?>C>upv4oApEJK2~xsD+q95R~%fnlfzFws(umZtlAIeK2{fBK;QQ$D+-=V zu+<5_V}ne#ef8{P>KCpq&iF3EPktuBRww+WH};;#`TyM+^$TAK_+G;IKAT{x6aJYI zfA`_=-8w#Ef@+_z@uBirv@yX}C;YqG9eIw!|BA+Eq*(8%@?+xT{#aNuK}dxlUtz!e zyhB|MfAMAd`kJfmFHZRGixPxX2ykJO>tD@2Kg#{jr1*6Cbi$YWph<-Q7k2HI`71d8 z+dQD~-EB&aPyW1WLMjBfuun|;hAsaUe^{ z)|JZtfcAeU;mJ=B3FNOu=R8Vx7TUQoRA;5** zdP~pEod18^rGDYleIBp1Y<0qqUpbt8KJ8yt#mBox#mB_oJ3+NiT%#=^6@s|H zp4|F6`+S;B{!8&a#^a;>WY4pNR0wckS5-@Vjf>BE-M?Y&jen z{M)qu_o(}0(y;LQ0sf1gge_GIaACiwu>1!O-=3dEzj5n%UnR}cl5@2nz=geMT;qp0 z{N(1!|A5?~o5TscuM?7Dz{_L4C z9R7*Z>L=d!RQWgY@1QE*)tKf7JXp(C5WsKPM(@x4gTwz@g?+g?;}->MI<+oPQ_9AEo@rd3aJGz=eI$)od4s zzgU+acP&2t&(Zyo6X3$unfmxq4nO4=_3MCMcWK5a`BJ)nhK(btzXvXC`5mkNhmHhQpNJHmxe8K%6@}Cp}T-Xc#8N~L_%lVa3tdr{btE73Ba;_x=xUjeU);Wpu zf6)rMe~38Ye^*^!j`)q6h-6X-aADt^^>G4+zj2`Q-`z#U$HYhc6Mkzdq(XoTdtmg^ zKRNt%a{eQU`}30VlL%WX1h}v}exGuR!|$s5AH0wA__)6mjc6gHLVyc9F#fi;IQ+pH zUmPeIUyN@iY}Ew7h27O*WDO2~N3M!bK$m|r{%AkDDz*?(A;5*r8nv2zzWAr9E}u`7 z?0*u)Mk)lju#;;&&z7GT_4+4&6#T%*7D6fnxUe<8xVZ}#A348Rir3-#Liv>QjHN<= z3)}6k`(EYn<@{nPSnuH!e>u-sDg?N&uU+@*wH&^jUn~XZQDFnE%-7_9x z`#1i={m}ux>b-RR-WM;dK~(>fLVyeVahK6-|Ig_6bpEd5{YQK(ij7nVaABK`t(3^c zr-AN2_kN@Boz_vfk}M$=0^Fc2yZb{9U#`!P642$-316<$kO~Rn>JRpK{$c0m^ct_P zU%g+3iI4WJs~-7J3Ni6F4q3jM^Ixw2km4#*^+QSPK;&8wh>5=};q3h!zFhwy#TNx% zt^<(@G4Vf{w(>^~KmV}$h1E^nUwlUYD$0-ONF9q(wV3z^*530vhwsz)?v<*3aKcY& zQ%OjLnD~{CzWyH$zqy?MOX5DP%BK^4LfcA0D#XN}TdVs!9R6v2zIxzs-v5OyRsW=S zTqT-g=8S)P)k!aL_;US?EvHraDQO*!T#ExS{ja#?Dt7*uAMuZZFW2Eng_!vFl&$LF z{BLuW_Wy{Azv(~9Ptg?@2&oVge|y=NrgQjKSB39$z@OTI5J#2;Y|xtc-EKa>md`@a^Rfz~KVg_!u)?`p};uaN7X zr1*9In)rBrk?WwOLQMR7Hq~LDALaTdDb_Eld^+LFbx=|vCjNVM_ObmxE*YQrIN|QC z;$yCZx@x%w=wWv`F8*?Tl@zb`-^6!XXJz6~ey;a&4*&CC3A`NjFYVC%OU62` zodbz`K=ksN_etXn4!?UXeSHbtzB2H8Tu1!FqT~O0Y2Q^Ge)GW!-}R^}|7Lu47H6pp zV^GZaRJ^#}gyJ5J+US*m~dxPc$*`hr7AowjlQcSZYQqw?Rx-%UgM z{;u&N@N;Ebo&5JyettiPpRDoSPpj+K#1FP_6KQ@ODa4FV!&Z;61N8htl))+H$r!;h(AaM{6!V z%eDV5y%LvnJbari^es9*Ris`&q5l>c$$;Hl|Iz2<^+ogR z=2fuO3IB=_Po;49U3L9wy}{!@NcDdpi=H2sSFqIyfAjMnv-hvzz#puxFEc(t{1t>x z3Nhoe>ByanIRAfqM904>AAjH{Jytmv&6C8f`yVWnelU4qj z_-Nk-4!0CiAtwItCM((T7khmz{Rrn}mbA`RuC;~W73_d9y{_i`Z?F3Ye9tKVO?u*yD;0uQu+{%O#P*+*(f!*#y>FY-I^KfY z8VRWo;KE-2_Z#f`FS$Ngid*~dgfG_#+o}nG3tMH!>+JKOYRTEpS*?V{o@YN-0n#GiAyLUiBTSV$FObnyz^&;`mV znW>%(wPKjo{?1Izv*zAP%YXAMdxi0cteKgUM&+bu(_!v%QSc1C@_2-2#!OGHy+#?H zD{F@?_VX?=UR0Bw$S^M`6sFd9nxKqhLxqDJ*VE$^8#LI z`{6?^w{rM{AENmmz2hA5i~gekOnjAF#UxLzc}DIJv^1%5xc|dweV>=`UD#JmpD%=& zwodr9H8j$hwC{segkQ^R?5`l_pS$UNX0OIK=MRU@KNoe1Q(@u{$??ejbt3TP{BwU4 ze9S-hmwl%Eh?MU+{DI#q z{IXO}{5SZXF%{VT#TUQN<0I})=hULyz@GY{!z#}Io*vb=6O2#N96KF>uIhQ)>6};K z!dC9KVJC+_w*ilj{B$~p0JyMAtS{p^{F;;1m4*1@d{Jw(zF%sK{ivPtH|_1$*z^6~ z)aRGt`t=I^K#%fnT1^1IVZV6l*O8q6W%c<6z_%_}_esRZl@R{k$^T*BHtWRUA2sS9 zuNCe;$`AOQ@Navw`sEz{w?=$ijl%JR_Z`H^AwGACj%PXic)h=J8KKG%_BBQMcVDR6 z?Z!FBh&$}~@yYD|;v2tG*OwE1pmJ>ZhpYeRHO~JQfs*lkRbs>6_>=!h4u3iAOC!a} zfA5c~U25)ginzdLtQ`L^hum}-{?Yh|d#w1q z`?O&1kE3+_O?<>XR{U>o8}cC+pUQhw{7w9bavCK*OV5s&!r@mvr0`Kc0N2Ut%PZpk zKKXbRwtU{Mgpch~nv#6QCSp|Sb@>h>FM=kO<=Dmgw* z=TM^Fgst9W7kj?PPe%Sm_^(}IQ_}9Ix{Ev$Nlxp`n z)o<^uFY`2qKkW7J@?+LJcpoi3fuf}iIQ+Zx{TKe@+%d#GXz?7W6M(qD`mSkEjl)m) zFx-Efp9WmyLp1-7Oc}(UuU__ec>GO#q$e7F*)6SxasIC$xj;>dZJ%8ya^=(Q){S18Zsk)wA4(DtE7xvHP^9OSId(gPPg7~_;$67uoZ5vsG z!%uiSynLGYcpvPyu~Qql|K8Jg^kLg?i$CM>&3+jd`fVKWQ!f0HjsLRk;pGSZA};9X zKsnOz5$(gjmyBVbFP7^0!@>GT->-lVzF@zQga5v@TUK!KAL9^z6CXTI{#Uv57WVw5 zw{(0=|4}akH`wpw;D4{|GQBwei@xRKk8?DGHcI<{*0U|1Z#|(So>#| z&VAm);cwLCGvfNy`Hb@-qt$QIUf#2m!@tELf02%ee0GTcHCT?7>vM>Y*)J39w{gI4ojCU-=YN4ie9V5C zV84w6ezOlfcX9ZaH&pdMo=*kF8I1FbyeDFbVo5hNM>ENxb|0fP9e8k7E@tv#=PelE^H{o%)zkbB|Eo-Ug$7P@2 zqIl%~7*Z_zf9mhn=eI<=erN7Ve~`mpL-TXI{{#G#YZ^}H@ZTc;#SQZOng7oJ1CLet zm&0E$pW;LKs`sk+d>b=9s3&yTBI5t}=mA4H{2_A*e{6L8Xz|~5*Vzdieq-8y#yieA zK7mBzc^(Nsfz$6lXmsm3IsRx}7(PDu#&Y_D8zaXbb#{n^=?b8DbcZAP(81s-RFdl?_r;=Jo!z!elIu2ADb1Za^uqD7UFS*Z|zY1 z=I(ZCq_iUCXg(4}J_8qa-=Ko69R8GD3LoPX=nn{Jd|wjqYm0<3>ThL8fD3!w!8`Bg z@Hg$H_}oJA`B&lKymQ}9<$s_(@Jsf8X2oq^bNB(mmtsv*?Q!oEW!<|JzSS`{{8rVM z$o{>E_*eKK9N#}u$A7nue<$FV9G|j*w2L`>OYeW{&eqT8y50|HeBb53FC)g3kiYvI zeE2qp|D|5P27I(fe0y~KI|IMu_+QuGdV<4WqxaA8>T!|a{ba9>e^=m_9G_R~JUD{G z|5N+#8?5>Z{j+uaKhW{-2Kan|66a zxrbf6`={xg|MeFt{DAJ4M0|Yvbo_h3|B~bL_lQ|9aQLotT|Q?i|54AoKh*K>rSQwp z436a`l%K@+>ap?v=YECn(&yRZTsEsv$G^A2kEa?Ty9E3XdtEL2ha;}90lI!expZ|= z`5VyqzAIvj&##SVALHk(Z(_5KO)-}i}*|CO=fx2gJXch3J|Clx;SuW+?h`Ro2v$A6&0PZG67G993z zax3!wHS+0`g&h7={d@|1udbi1&vg6;0ly+G1$V~p_i48(9KK7}|7edRJ^_vIyGr5H z4u7Jcg#3NrjiYNg{ML`FBxC;v;QKz;@xNN(N2?#s%*lS4!+%FVKVts}-&j=-xew_0 z4*`C~67OFt^1625@Vz>Jf$#oU;agwm_z#T@|DnSfvi~Ha{;8nLKkyNsfX4S-1N@Tf z&ogs>dW*wvrSXMcUk`lWmpcB#6n-4#udjssU0mzwvK;<&jqiS4;doc6=TP@S9sl9# z^8~7&3ro0vy}Y{7B^>@_T|Wa~^wam>uXOxJ0H3ZeJmk zkM@to_l*R88M=QJ2MD;Z?=+8>;|me_yJKrOzBNacAKxJz|53m%IX=IxeD5HK-%{Uy z;XmqW_t!f9*T#nbch9H3;_x%S*4OWG^&I5OSN&qvH#+{;0iVucDz1Ja;=kQ}sxgP( zSMQJKUZwERj~dYUzA*~lqR`V+Y~>7-zh}FiSj6Gqr=KspFX(cUt9X0?WdqkM{Alfm zDNWih=kRMktzANY-u=4#A6EF*Sj0!>Z*hQ7ZeSnzX7}qH{+qgd;<|OMR`}Kth3_60 z8~%L{E@1O_p}xL=FV-pifX4TYj}3oHPMb2E|0i|%2fnwSF8@b${BMj6zuxv5pK|#3 zqkhxz_tn?+|F=5+?%42q46pbNhyT10AB?wH$8`KtV#A*~`@~8Pe;k#6FFl_kJ{Z>t zXnfzq*zjvq?DHLmzs`t{zp-wAey8J~8XNx8cb{Y1S6}Mu3;z3C>-Nw0I{qHu%lg^5 z{J+y*JjD6mOSj*G_le|;FnxKA3M17Y7XDh&qwe-c>n!L$3H7J{I@o_+5VFnM)|?Gn)S1ee|Bv63ntE} z%K6`g`Um`>^^blI3ut`b4B*rL-X&bWZ`@j@6^DO=as7JJbp3xy$3F-7CCC5N@ClVT ze6N0fLHxbxy8bWH@z0A5|FthKuE*iK4gA1I3g0@d<3AJlCC8`2j}@kJ_?_~@+YgwR z5YYI(S->y3{;blf#!wEwi_t#u{;b<^zv%ei1bj>6myo~LKlMGEzo}iw|64=uU-~+8 z|El9Z2lyq&XVx%lBj^83M)`5Qr0O^8Hy!_*fnRd@@m6ytT7v)g z&3bM#hu;$Qr^ZJ=qVEqK|J#92dq9_fUq0{o`W${TuHRQwT!8QXQ^)^KgQeLk-YFD+ z@9lBH^=0TE27=_1BKx01#q_`Di)HWQ{FnPDy9vZvs^Ve#AG&|C@70>c6#BBk2c!GP z$@9aP7FNr)Kf?OKidWP9>k-<&MdznrKM8GmaU`9HQ?Wcktg=ZLQhP*E)#UOc*Z z{Zz`|>KK1?FS^D4qV5yqKj8<XY3|Z)$Ik{~GH8UAs9{q_rta-3!&Xu#}smhZ*Lv!hmrH}19x3XI56OxOMmL9_fBQ2BM z$eEd$mp=SUWu>BiEXqlAf6u`a$E_(=)n{Ydke& zR!ZW`y!4DjI+;6lW=;F6#PP}nzmi@VV zW_UdX;5X=8B`Lr&?I%ZWtj6Idb)xz=1mAz2_}_Q!Q-;I;tufudL+~w(BP(}<|C|1+ zS}yptSeCt|5qG})ZL+$hO~&Q9!SbGsbYtHR-!R&D^XvKo?Wn*t4Mp~$`o+NdRfRX( z9wht~X8UQyc#4n2e@n$b;NZXHmjZtEuK53Dz3=#d!@t=}XZI8oS{&$$|n@bl_Bzx1@MR$b92k{Veu5b3hdg8AUG}kTU91S!6-##$(S1$f8 z%3t9sClY91oY44xl1Tdw45qu_&oxBC!Wts29C_NC&bj-kh7k1L^#6f1$L=Qo7nuGp z>`3^1obi)>t0CM=it)X_)({rGM?Qe(t}D)*ApF`z#{LU|{*=Fco$8U@FUtc+nP~) zhQ;aCz0@wyI4u<%?ddkheuaJq_ZB_hO@9y5ulCUox$@ba=HGY;AN~jQ_!fQ#3tsqd z+OfCiU&F;`Jzc-9;k3WxF?D^pZszMZxi5wk;36)tXP#XA5k0>}#OJoUswGy|E}g{n zfr>{o3tZTT+r55-!=ItoZ^R3A#YDr!_rQfsdGw3-IQ+cYQT)d`H6vZXg^l~?l_ea0 zcRhbM=s)lb>(~9-Xr}`g_W0-Z8gcj?^!mnV_`rn)E^PH9mzCr2dz?^lH}TQm0~^i% zLoH^X;_&ahS5{ntt}pdOi1mlAe!86MekCzf-iU<2JXQD&`~HBBUg7Y+|6TcS;=^y) zV863o2LW8zD{p)KIER16DF5&uxUl9r1>nM7@NpZ9!#}I{r-9#zyn;^(^sBhudk$f;qeD9Y%srm@cIYwMjQ}#SSSDUX1pug4-xVI;yP+S+w5f|9W-9M?z z;V01Zg`oNIvWG#+`QoqdQvMSTKTXc>{~zGbt9G;rhhOm`!XF3w*21rGmp8lUin;JfZTKYaJj zy{kBUpX^_Lr<~X}O0}a)pI_LO@JEyrZ%{vG=<`Jq-Ijgb>0DFVbKmuOCGkZ&dfvD{Uif~#Korn> z6Mw~o%0oE(%yEQ2vYg$|8;T!%eyl}A6uNJoph(EJ9=$KhL{y6H+ND?5;Nnw;_FwZp z6(@GyqvCJreSnL9sa`qt1LN;J1OA!G;qR97SDr4$_r{2C#;5v|{m*dmd4u}jy`!At zlT@di$PbB6er@V2R!N2Hwp~5<^Yxtna(`t1SMlPZ>(!62k8#+K>5besSql7C?~4C# zeaDFZaQJe6Wb078aP3$4KD|$J@h{aYxo@%*;G z{W4+Yb5uVO_B_2jJ^VfJVK=Y8Y6;;-)c-qZe8olmzo?(l|JzbK=Dt{syP!Sf?WCS> z;5Y2YgL_Zr;*))ts<-dT3#);e7v{g4zkb1s_y89+{@i-O;Xm^W{l)ji_}0Sn!{2@Q zmi`?6E}AsxI$mD5|IW5u@jBqUUkI;%DAlTSI6W&-c1(J5+E{k?by`ZQhqlISV~ri3 zJuQ7UeK{*@nrBkK&>myEdv_G|@wTyoFS$-)H`}X7eZ<5R+UrXlwbVgOAKD$})L9(t zK%7ipO-rW_^e-mPOe4qipURHK6qX{#Lmlk&6WO_(n?6}}w%g#Do|}r%>8q5~y!0&T zO;*Mv?hDD0%5qRge2ynA!;_kqn46KF>KSB5F}%-N_lM%|a#Xi<-gL7&+`6@_xL~9w zmHZx%p5YPK$zI&XSvivvr+PA{rDx`*rYB}+%$!WG$Wos#{U!Q<6Vs<>XC%s>h4ceo zMV~dcrsig4c5j?(wB zD~guZw{?krZ#__7NOcli_psT$>aFGYzq(5yxSJ^cz`=0-bx%^gQlG}2FRpIulrHr5 zbf5B8uWoCs{JTH>b^*tKBwk%Nt`}ANIAHX%jvGP@-OGxE3e+b?dhtAZPyKw+1nGuN zdi`ql{1LlLlQWP5$d;_Iw7}|0~6-`+ZIRi~3Xk)Bf>E z?gq9Vm`3fAI@AuK_fnk%ys)z?UAdc!f5K6P;NGh0d6PefnkRvobaudS>enVcPUTO= z-!$6RPT|@@mrcd(6wa#gi#HJRPZN{Y$&8U3DOOlv8X~_j^FOTCJ^+Cm(-6f z`?Ae`>{$6XHEYhEzg1B`7g^g>`ptgswbW<~G>sSef7GzG3jLXVp1_|qgpbrokZ#x& z^HYX!>A!G>Du3=b)P2+B_cx>R){x5EkHklc^6x!agU*zVoqtHpgHt*FrkX$Ckbd;@ z2mY-gq@tfciC#-}5~LgU&#xPQ&GFmg3k2fR<05AI!7s-dq=H|LGuUGd4i119*7wpq z)j9rLIsQNraEL$nvrp9!Qo-*hU!*z-cwsvobp6cn+v6V+WOkkn<&=Io4k8u&avVge zlYket^NlI&`OuH+^t(5e%om;0l;h(Gzo1Y7CxQ}}z775OhG*cvPUi0$vN z=PSh3QT+b*bpN2iznUJ1{IzKQ)h*R*Jy~77ci&u1NOcmV8}{twV^g{G@22NhDcQd z2&uvI4*p3HUQ#CkFYI3LmhU+J-86nGC9p5gwz8ipH2t!@;i?cX3SO*hYw-T}QeELC zbrSHxmiIsU8pr?eX@%guQLlQWP5FB$oBum0{w_iDKezDw-A2*(UFdwYlv=jl`Yc_4S5kX?X)Rl0<-e-l z#Y4IDk9$-hSRbkD&rJW=cEsP2>YvrMY`vp0y>A>Z-1J_mlOWx&-%PuoJzw()z5c`> zh2MI*mXHemBzi5?Nx%zxK~II>9=M!7gCXaE0^ArIth4Tn@*ZhgX2HeS;gPIo##h; z%lDt=LTW(^^*oS$uDOuvB;bXOpVl>-<6o}x-@T0INBR>!YbvB7{q9ei3aL&4UfA6D zQS9@_A{yV6;_gv0fA*CvgjDc*`?nBModmqF8EgBn_1`6WeXj3$RsWg!zj-K)Khg7# zmEX+PCC`wrcTyucihvjP%?p-x;Nt&l9;H8y_E$^L^X6zAH?;ko<_afjbDydY!at3C z2VU52wJP1f@#oA#{8jx|NaO6G{K$XrM~#J4JbxDKYb>NX33y>QEd6)}$1lg9ZPDY} zC5=PNvFOloXgL<`B;bYJdg5F5{NAti`tLwbb^np$#G&cO^Itag%S**LwVPf`brSHx z_P=2-d;Q7raVc({ekXn(jf+bKzZ@sG)xiPq!rpybx6WMrlUgc%*RN{6k;!kKPrV<2 z4!rmne+FCjhuUoammL3=f^l_|AMuyt;8Kx(ISww>Nx%y`qUiE>x%AiXrueNtRrxph z|Ik%Tp(jpAZCh0_7LAS*Qk?|6u$vms+spB1==l3e6aTAAKmJqe>EA!*_*d%kC;sNs zU%L(E%?LUlGF53Iy^lqZZrF0q#4q9ay*m9?U;g_0#1+nV;Ii=dPVc}A`{nY)Sseej zn&15|pZ=ulh#};B`AlkmxkBE@%D-rzi#=aGVX!KHzL4|nL+c-uKW}!tkou@RLY&$^ z(FEy+Jz4vQ{#^S1!TuK^=hKJs|F5q9f~~t6aQuIu{wbsH|3>{=U#53tae7qWImfsr!$~kM@S|qsl_6FYI-jM%3cszgf=zBngyP^}l=_TK}N^=}T@w z#r?uL%53g^n<@p)T8~+>IM0W=(SWQ0WWOamlN3M-${2Xgn-U}IS-IazjqDI zJ0wN=6V}q2E>b4}FKp))fA!$v-?hBX|3NDKPW(QaV=EQ>etIp{Nx%!6+p_*Kj=$iD zLhwFWGQZeNT%_Q4(QBzr0$$j84|ihg|Lm_7f>lvne{!B=X#9`SBaWZOn*szRbvYG# zFSS2hluuHf1iY{}?bub8OMlbWD*mFH;{U^_|1YEQA20EHAExm~(&_S&uSosx^jfNu zfERY>k0ohN60%BhmmX+3%NSo_U*b6x%P^vqfI*Wq7`xBohFi8n?*VSgL@(|0t#w}vp* zcMqX0&s<%of2C)(9V(Yz52Q=I9(||ypHz{otph6a-M7%WeFoFW;K#f_?M{RNFYL3Ge^|irKSJZ%t{!nBa9OsE;o6|CGc)~i-lG)oW8S0s zH1dD&!gd{8W(>#wRYzK16Td0030_&=L8DTCubP5h!~NcvxkE&a1g$)EJ+ z<3Doz3#f#-LiqhL^4CtHKA}>i|B1Wbe1hYbd&YZ1_+1-gOMfHc58NJm{2P6A)oPA^ z(v`&Di`K8`^~Zh(e%HgQjG_G9u#(a*Cto@U${p;KfAVhQ`0F>J@)yGIdYwFZ8;K_g6CcF~3XBEp&(Mqaf!NCewQ-G1K2;$SAo#QbhXY z{5~)3ui!nb%AFIxoZIJLR6M^-&h1O0_fBH+x2mx}k>j`L_w{v-KhiJf_GPau=9hE( z3LbOj$8`tWx5g&6{{JVAN?OSN4F1h34rcko{su_b>{6Eh!EX#?>)(YmzseiJ?|L&f z{-h}7AL)iIs@8oK#Xq9`arO+gACrssU+_EdWB&!DU;ddlC-&>VX5Y52ar`fIr}`&^ z-}M%sev`lZS!y@j7CV2JckbNF@t>mgL*9`6C;Tz;Uq|aMtWu=^)VW6*bNo$ir1XdI zyY%{gv;3Lq?@*Wi!iqipdu~jq%JH9|eS`cXWQ$sf-+>?BBmXh(fzM5gatGV+{r-7@`263XlL~$p&ASRTiaq`BewTHC ziu-+|rQh|%o=-XcW6P-=(>P5q{qMw<{w?&}E4;C%KXYTD++Qam{_bxm|3mowG4f;F z-%K~&_o4j}rUf8x{<_zZeuY6kZm!o#D6r|rww|ArJ|2g0E zpZxQtX&nEcMT)i;rNfxxSbT_KlaCo)!IL1{zKehZ(aI* z3y%L9z5j+Q6h>`!>B}0=q{mFLwlij~7BY1u-AAgi{lsnkcroY}ByP_#!@n1{pJH51j4qB2XztjFX zuF3lT#D_n)j|SrZ{Hb(#esM(mvjMH|@TSCxYF?D2o^o8B8Z z{)w{uh4A}hi z`o|w5Kj!&3r62Va>i>_+4a+3{i2hf5edB=Q{$F!_N!a?vnYD}8_tV-&*DSC^dVz1i z|Mb`j3i<^FUL_n%~1U*iqo_s7VObv6cV@GW>@-DT8EndRS1|4uj6KOy@y2Z{9y@WKuswe?+&{~o!%@vdTie~kQB)Ad&x{w=4s z%kv*1;{PnIFYy!qPCfqQ+Rx{|T=yUa`Ty+%id$an*Z=kd+rQ!XtH|=VpqSquBftMB z{q8FD%pm(f*v3 zNAV|q`A-VsoTP#MWoFy2@I2=IS@{>O{fTtLK0CesHZJ~ah~K*?B>kVnmi|vF(-l&} zJY(>}uJ-=Iw*RXRqWIri%RW$x0meBa8-XGBQDWCo|H1A0Y z%71CEe{ty!IsO)L{XIha@3}(w{W0>F_WFPBfGd}%0jr2$B ze@5J4_x9u47aU1^%Q1eEP@spoS_*;F=iuQSoU%mJIgpApR9a zRkQ6+aK6;OZ`7R@<*&ejKVgo_A8!-A@3F>pG70(%*pYp#V_f-5knk%ZcFm1SQO`On$6Y*!)U2y%!?Q>5w0Fq|YEvMn;x> zm{053mnU^g4B5yrbjwEjSRnooAWu$CRt_;~B08)lJ(JD`GOe6Cs6HFtIy)sN*ONFZ z$3r_rCMG6^d_~g*Jvn-hN#YOt%VHuNh+~BwMiX+b%=Fysl*}I1l;Ry5r%&;uWYcWM z?3BqNXD`W zei3qhPr!j6^FzV^Ne}9uNh~MUBvJcoc z>Sq`APwVrC+~4r&m-|9WvF!hako#kc#qr{6vfiH2`8VHpB%k9im`3UESIi%XksteF zVn0mnR?r~bu#aAS;0VWmtDK(`!tV~mmVWGuiTx;p#11bmUwzlV-2TFq*Od{zm*Yi} z-ak5^`ArzPFC|4PcwfZ)nC!i@F6LV2buhsB`-zX6a{PyA{gG8r%!sV`!@hAMFF?TToT_ z={=qgEc!l)-kSm(*t@^IH;*fSH5L%h$T*Rw+vkBJeEG{$&G=yY>y{_RuJJ)XOn#&r zcCDxPSJXa@xc_ZxpzeEdLe*ioufgJeXIhM#JKg`l3wzr?E5~#EMGeo7ALHh+^7m+- z+??ZoUZ0;*+Vo@GJXZesZ+ai+_|HsMb!WV8f0*O5!FDs+&)Rw~Q_oAW^7rc1giZfG zeST6op{_XOvsa%tiua~P`G}Q&z_(SrT>8CTRk;H{&Px&cIYIPQ>9n4jV;6DQ((+gQ z>(;Ftzi_MaSKh8&sZF8BC(QKXy%*;MW4_k<+2*BZzel-;P3rRVuN?n6JwJ-l@3ntu z`Xuu2Ga@B&y9RDhsAMH;m9v=xf@MC-i{Al-{py>i~e;QN33;WIPPJWKx zMg6nhknvIXaX$SfKgLJV4v)rP6nFE39RG0Q_lNKYV&n&}(>NK@4SVzI3*$Nd4HSP7 zGCt=1A-42md{7><9!vb6*2s>TK2UX7=x=b{G&o#%KJu()Itm>VId zAnPBr!?asL1776Awi_3pB>sr@--v}2|F`J;BDxKS#vk>YwZ5)M=vqghKfGW=UE!nm z=$}rY_xbeR6!7BnC6hB`|9C|HFX=*OKfLYCpZ``}kzBiOkU#lt+J~0jgI{c^D+=ko zDM&x;k5^=~^W!tA+tU>?KI#66zy8hmk8MZ4qkT!8#wo!I`}W3GZ2Pyfy#7PR=K>D= z7&o$XLRZoAzrT9Cm_qfBby4)^&zuiN7I5Wn=Y9127cxHQ*5glR`8WB!-;yIg#*4N? zDGtmy9nuZ^`u9!Ra{Q0b`~ZIle;`JF8Gmn|vf{;?$q#0n3cRq3vz~j6`)54npR(%(%1TN)qr z1NP(69|sM1VXJK4#Lf@Nru6#@;)3Ht0SA7J4}l;1vS2@wAhCV{UfA~*p5Dl%zu{wa z9qotFxcay7+X|xK zr3%6NFaKBt;eEM6u>SLYS3v~meKfgm!M~q#_y3i%sQewJ{dB5PMM&cQMWx@w3%pY% z?EWv;$II)^wYHHce7KSM=fV3p;y?dTy)In*Un73+C$v6W^9MA)S^r3WDVF`e5a9pB zO+L?(?T^gjeF!`mp6TjLrmj7#)F~-+B9uJRiQZ(V7M}w}=N?V6-?i^drz&LyU*>pH zJ?XPNljI@v>Q^}gn3C&}XHnUI)wz>AP$^+_t|uomWx6Ms1^{l#%9$j_*~coSW=&5_ z&B&TLX`;s?k5f{|Dn*>AWd7RWbfuX@l1&7SY5&32W5)+aF8*JnQBvAt753;24PT_C z)4)u~P)^9;PhLiDBDp%tlN0ixIU=Ngtp0AWXU>(gW$sM&(D+d+HP9i%jMig2{J%~n zad!Owz}e~l1Lx)cA2>Vzzvpx)wjraFu@_`Hj#ym0!;3A(=VZAJUYjAKik{*jM2{Sn z>|v!ve3B`TlM5bCmqv9?@t;gkN4jN&d_?EW$q(fKV-Cw{pH3IVOQBIjD|}NG8pkZ= z%g!Ni;*=Y-q-CT`4vuA}O~S`nX=(P~ckCcZb6L_j0V-;LiT}YMVdU8A~;ri;f{-WRe={uyz>OdAKzG|-`!ZH--+M4 zvAU27e)ojxLMr%^=sT$p@WQrj(@t>w4_&AD1C7)=D>;tGr9Yt}rI!@rc^18v>ZW#v ze=wc@P^G%9PW-K#Z)49_c|r608kfvp5J&MR1;3wOO9g+RTy-H8f^@^qd8`|IzEOiQ zD*e8j=|PRe=aB!dN2?2|!T3K$+@y$qGJPi%0$$iLeRIF!;y;MSN2LUAQT&AlKiW}+ z&sG;wvF}gPbClntb%)XODKowbUfAo`jb_g``b_U{YQ3z=pBzUG&HvhRib;rITr<04 z10faTn}N;^gj5K4VdqtBw~1nGwD zJ^V2b$A1$0+jgE~|1{S0`-?6WQo-+zYe2_@JM&Nfrb|DL|1F(io-cIsVUP z=wF;ulg$=Yp3trecOa6G6_hJQVVHb zojhM7VNq3EvEQe)koZX<;DxfETvRTQA+l z@%On%@%y9jTj?!?RPg(z5FaV{^XWUO5b(n8JvYe5@i#2ezwoMYd#CspPHrKjf~Nk^r!v*q`0E+Cs3@VfRPUf3c3hqv#5 zkD_?rA7T<|Vh{xc#id7@he#1bmm*a(A|Oh;0HF&<5)cGrMMO}r~yIIujT)~JM-M`ZDx}T`uor4^WMAVcHd{-clyq}Q?t{4o&4gsd?Fr_ z<*#3Ul;xjul!!dm#-WR@qxp~|zl6@2Vu$7Z=%zM;2?27!2Q003olgF3YJdCqV%7h- zB-#G>j&9{2NB-`POMFj{MUE3p@3bX}y(s<#$2k-vzwXzMYWJ5}xL-bDZXNS<%iqr?T_|X&J!e$2<YVSA(VFM+&=e2hl1qKtS+*3@}o-s=GEn-zYdiCi4yjw;~XN`-=t$E1jHMB$h>0h z`0MuGD*e4I_0RJdy!9{UkwqiT1XE&O*VJaz9&IL?x1;)~VYt{5fA-zgQRl zoVa`lwbRGs{1Y5hBga3`7m z{qm9i#NH-?3F)usizb2z=`V}!F(E)M_})Xe9;=hzlGa~y2w$()Kl-0V4XAxdwD>ft zf19L3jM#Qn;xOp|a>2i-Gf2C?%-|JLzQ~sSPk;P*{gPL|6Iv#ppGSDS_W=TO!KdES zM!UaV@ugC}@v&b2h`;@NW5I;|${qK|4O8dt@)60kb zP1@U)3Hpx?qy8rm^e^bxAq4<(!3SLR?FBmh54}>QzZ<0fd4Ef9`G@!#uQd`(CvZ05 z`DCxqgbSjMqv-nwwZE-bY5z+i1jq%yc~hO|bn?}^;-eSCqjEKPRC4{7s&EC zO2gKt5_IEq%`yO;#Cn+Ct!66s?_6Jv;t&{)T3DW-I z7`^2hAe|9z@U7e2bRVB-3Q_m>eF^hcsz%ONqDLoWCiLk6_b$v2y;^naF2|9<(X zf9#Uh^u42XqW+2OZ!MTm|Ck3_3nm1}1%LI}Z-(gP^ZY^%mYUaC);vT0Us>}E`91>V zg75nM)BAMtTON{6#2=LD&o3YG&q`}8m{9*_Ribku#J`yD5g|Y>c-n|RwEN4|%~0{* zrpjMm{;S1_fr52LnnT;wc@~{BRi^&BE;#slWxC9OEbS0a={nv zUtV7)f1%R9`MN&-4-Jy?&3zPaq6r;UWO>|_XcJ91;qo}AJ?V!C0dm0$-}_Lzzx$4U z@|kcqz5Q=KMvkxGy-xb)@?V8zgQUfVl$M4>5I7;S_3x4}!Q)cV*U$j>~XFMhI-%{WB6Y`(+B<*KNg!~tNs=8o8 z{wtw-ObCz*e%jn3ZToKyzCS)Ky^Kq`-f!j@Ix66UC!f8Y=1gun!_UL+UuwVq@cdp5mYP>w);wRH>x=de&+}zM{m=7!nGg_f@VuNCd+Fj|x3f(D(alo- zVPE|V`-ghB5KORtyiW_k1p9~S9uorOg3o$6=OUf_YU=xU_?fch$Ifmcm>@rFk~|{F zkJCLS1jq&ds?E3B@%KkC|K!=S*MLNGyov?s|Uf_$R~9TOoyF8Bk{`P%kpp8V`0teP_ZyuY0{{r{k{l)1IC zU~=}`g%IMKsC{HNcKf5a1-alKe!b=tUHorS{cr0*ng4iyJFoor&y(eE&YXsViTw$1 zd7Cw_p+jhohUPXDObCz*e*W*RuhGeWZG=kyFDd&!nk+w?KWR|@E_$hvLw}KcL4Hqd zI%nD$7S8AP7Z(nXq_qI56y6%U_U0__#^*iy=RD$ zTa1MLZ8{gX8VUQyb{e!!gRZGiO8$%0`|0ElqVIpv6yz5b)BA6B<(uyqqKM8D>F-^_ zN9PD3b$~0s{dvkI8BjCqsl za)SBgR~p&jIi38vB;PtMGa=t>EbWl0e9W6n2v!G_Et~-U^Yq5`NPa2*ZzZ2mdM5uW z*niJf@;MD~0Ed4Q#2@oQF&_}~0OeCupWs08moMDQ>&sS0sz;nFSYNb{=AYW3Oc7Q3 zH=F3=&+`&FKz@f+)0}hbvwVm9f5N^C;|?4e&+_9ZB+Gx0zQ2dtW{Q#l^12-$zvM6Z zLdc)0{6W||^ztkFYn6W)Gg}{jo|nS` z`X4o1$=^6j-thfG|KJ~GGYrB2DW^S4`-LO^Dauc^{6YFN zd;XKf^8Mxi7HWUkB!AmH86UH?KK|R(&?59dPw5~2XUdEJAM=jm^k1s|SEGd5UmpKf zwvvx}ADrjKae(|Yso3G~4w#RHevtfEY5iBP{XF}>FQxy1B;Oq3+5fJMKK|JM5Aw~6 zrM`mv>p<_|*7+ZH*7^787M3y06lo50>~EFes(l6jLf{GiOUmDn9|zJM_+uA$ct@xI zVw!(tdHnmBr^)z3@8Iz7gZTGpN_y*al$dlDJ+JYzfqaMf_kF$pTdaS7{j;0CKZZU2 zRcs~SU;n_r4&;YdsPx)b-~KgKLI^4T`mKMn|M`S`_&?4e|JydnhyPzw%>(nx=Xqfq zApiVB5$8Ov{53l#o*zRULl2wR9q;77oPQ*4ls`6of3x$_67ua72yKazhJ z_?NMje55;Y_?LnHF)t4OWiSs;i7i$B&ODsS{sl_O@6FBF`L2H%^K^as=Xo(4ARpf) zF&>F=NcpeQ^DjrN890OFpXu*^ZCOO^pVzA-_Mfnoe1H1$%SZn|uI4R4E;#fK`;YAL zkzo7#%l}t9Q~veFzn$Lxe)%_DD${XL`49ZS^V{ibXR?2VsIUJ~5*NaF*c1O0<-dEU zlAqX@3z8&9yunwF`tvrO{*Bv6{svdRc}8mSFHirF3tng50UrM-W&g8DzIe-(Z~q_3 z|0O5P<$o#pS$in`?Q-RtDm}q|;C}m;7k_{Gv*(uM29f+y?SGzs7bpKl#!Yhkk>zln zNBTwkpXc5ct##+W@!Y#utahUP&vWmhbRPkF2d^{t;6Yvds}Cppzg9Vs|I7}l*}ua@ zGX2GS>)W5e58j|hH7{`OUF`C}{jDEGkq`p3MKe%DcqyQPa>_mCYu`;j2t z(8sxi4QsX~4Z2t#5@$Z;g{C|H-#vknz$N@*Zfn)#fcHfZvQsvKv-qiknmD-=H z)%ybE^Smq$*^-I5yH)-V7=M6#@NGZ7QA?-)x-|dD^7xlB)jT-p9o#S9@oz=`l`tRv z0NKGlAOCj!)**dQ*VF2{L6YrGkjGqKFTG`k3u?tz9AR(ztGzL z9oyeu|DMh5KidDrv?9)cJm?4U%s`v-U=Xq%y5dS3@e^dTgAs5_V|BRos z=U$fY&wquTNdNC-irwh{s(DDzJ2=lv;sE(I)cAX<h zKdAlXkAKatuGmQNFIE5Y{HyS5^zB~x^DS%sm67AlKjOJpAv(wS8_&J6=o|s*9{f=I z>xYy4Qtgiy>X7``D~lX8{%UvCr$3$-#R2-q_)qjE`G0vg_;-Dq%FA^Ay+Snq!|a~v z?*DVPUOvwY;sE*U7s>Q*9g_2gNQ ziuO-Y{=D0-A^n$<-=j9=|2tg&cIG*$#lMSc{{+?lh(GwouDKDN{p%m3_}}Zww^Nk= z#wex#1L`{j6sQFKq`<8KS{p*rn~==9U!0QMR9=q zs`FL)4@iHAH~8#<=jZC;|I?X-l=oli8gbrl_Rz;){OH_H$WL|rQ$9soJpP)&<1eN1 z-(f2M%^fuV4CQ}-e4dxZ0r6k*ri{N(e%9q(_ZRU7Z+>0XUv%+rM&Cbek9@PIKK_3B z<+Xnd7m9Oq@10}MXZy#pq@I!gTG*uj%*w)QC(AKAK)&^bOi_qG${(YKzWhhL!T+4| zwAR1*4>8jJPS?Mrd9I8<@*Oz*OF};81z|oA<^c&YTkrm?aF*fQ(W#4(pI0z#3VB5A zMf*J+$)-=V1JyM0ekQ%Au@f|p?A$5irx}ia#fv76pPE}ZBR{VjUCN(WIN`D`#nv6Z7)P1?G&=`39XHhuV*WY6(>pZxzWeXgtZsnZJcjQklCq092x@JSc)F;_6zAQz78^p5@5U7kxj zZH@I_AstQ2PrgKcK4*IWQc##nFUBh-P9@KqiJiRWwHVgcTF;U}fb;69X1=FS`oUV?WHf3yHej9Re$d8aW!Zy8}EAHD0=yfwE(w|1P z*4=U>HS(2pe2Q`h{MA~2gsA*2RsYwg`FB<)cYiUvuPlGmaJv9!zl0n@l8JlzQ@f4) z9$=rb2E0y^_IcRE^A%gAC*~ikzl)5^?&k6LYyIu-*H+Q@k2aZN6Lno!7VzFdFW(b2oq3tO-&UON=g@t;2Ylm8 zU3mUqsrX+{@-6TDw|@HgWBwcBzjY+xA$h%NK4y4EhPZuzJb#7G?Uos(16;u)DQGVm{py-M!B1Y$9NYA4C zQNo;4MHJIH<{udJe{*`3QsvL0CKvoh_Alk%JidqC(~Zg>D&M^FGmoWwLGMR+u|1B+ zzTK*d`6p3&fG*LRhWE(0`%2=#l_koA9f9Nb-Zf6u$=~%A? zuKr_3DBmha{x_pu9H*0?{x#X(BR@3o$l`AvU3UDR-v4E;PJZsUWPgwR*b&N)mLtDy z_a8Uw`(HszhLO1Ba450=h+c>z~k|Ba44@viyD>l>aaKAv{DU|7X&_N%FT2Qt>}R`Nr>M$N%egzhA49 zUqtDT1LTJWA7T8L%IAXO|5o9sJe~YcKa%oM|HqC{zVUt8@&EFIZBOgu-$vz+<+cBi zBa6RvXW9Axua0Lf*U5jC?9U+)|09$i&MI5~+lMUPqLcq5)jzg3{uduv{NqQLo&R62 z{_Sp^{5QX+_^)^KU+f6wM}H{W{;&P8ahFd1xDv{L9{Hi6M;8BR*5!^JgVO)V=`VHD z$?vh3(w|3u>`3MRQ+E7YPq^hS&H&?QF}|9FAE{Bx8-Km8w#^e6eN(f-5u zXN2O<0qw8Yk;>m9$3db0y3SkOc^K_?tQpDiw~m(W)pu0;v+nzp{z?Cse;B&-$l@PX z^A;h$lae1&eCUKmA3O3@`}dHN|L`G-|I?oIe}wYkzX7V3R zo+0a>&@g@c9|&lFS5e;qjX(7Ihx}^4ra#N_i+tDyYuS4-UZ4jvT$ zX{-LePZ$4X)c&(cKK8c{4X;@I2PnP7$LiBR;@>2H#Q>fBJ30MtaOKC2P<}M8Z21fK z4H~MGfAV)^f0B>>7Y%MYDHi=c@F4q}uS@-#Gvs%`ApKX~{L(U(kNFp{|4d4MmPdZ9 zg7UEr&%U8-`HfEA)wfpG>3<8QKMslVuY&UH zEmZoSFTWo_|AzBccRXXvxnHE|^gr*{Wci^{6^s8I)owL=l&${_&wSNU7yn6A{&GP7 zBUVBAmmvR@)BmX7xbhEfY5(&2Un5tZcel>|AN-gsKa^Xs_=hlWGcURQYdBVQ)8F@74_>2_e=p^K4srDV zDk#5^ng=2VmYx36o~gN4r~jY){h!eli+{rY3zG96%6;%lUo4)XlRr|~AN{XbMdgoB z`TxCS`G%uaSN|;sWxb@+e}}D9{%v;KAE7Z7i~o)xO8%I#^?%d4Z$8zf|5?=U))#d0yHWXPKI@5p1?7JT z`^G|8rIR!>1>ge`tRr{r5E%^NKVpUHwEwew`hSqhf6F63G`?c-hkQf%uR{D`ckq)w z{ZyO&J0DEWf3XV6U$a-n-=0-=`Sa;tImhet{|1l$QAp(f2^EX~RjU1AeqMI}f5!)J z4br8*Rr{&@_2@rVLHXN9%KRjJ`QLD2<(B{ZKl;cS|M924RxeQcdp=EUQu9wk6Dt<~ zTUGuSeUkO>mw(a056;!;KZoR79{I5&ly8r1EqRZ2dUf8qsK|FI*KZ~Nr?%irzBU(;CshA;mQqx#?U$PZ1fSp1ix{iVJOBLDmC zU(ls$GoAh4;PEey{8$C$H$?fb9C-!F|JIoOn@;`%6o1;t&`tkSDi;5l=>H5)PX8$P zz({j~$`>^6LMwC-u5hr~jK({}b{^IQ6(c8Jtdn0-tm+?C{>CaO-%{;wYhT&&mvwpNQl0##K1h}ynpUy+C;C6x$^AdX z8~o>g{^zuR{OP})>i=N;Id+8d!}TO?O| zAOD4)D*5wdI(H&LKbb21!w(tCAH*B-R}bITiS=)&`0r5Pe_H-P>5t?m#(x9kN7VX6 zqq6MhLH;hK|9Gan4tbr_AF>r+^YCMfSw7mIpD6jC`^KL_GxYHfUm@ckzAjllaKSH4 zNXbL|!TWx2pY#3GRPo36w>PN%wf?W^YUjq)`ZN_y(R!px7k?+0e}?)4>~Z^&3Ddp$ z$M{F_iOKR~6_lSC{~VeuAL$S{=Ui}GtF-j=QtNM4QU8ZSBL0_`9e?4Qf44}bKdc|c zyi2KNcm83Y&A+eb_=lDKe^Kf0z#o+UU#0OE)PDi;_uMD-95rP>8}X`(`lq9`zd!v! z{~z^#s}akOsP%8q|5NJw2jqul>Eoa9cj2=?u3LxYbI`k~03!W&%su#|V}D=zf0O(F z-uMT||4p^CjqdvRV;zv82>*gMB9?tQmzvyC_{{P4GFGggDO==uJG+Q74 zqg4JwIV0arer{B`B$WOUe?$EN{KD7^aj*RMl>NVJM83s8$aKrUa^%~0CddCWg)2Hz z*1ym<Gi91^54j%{I{Ft-(vjZin8M$B;OiTw){!`?;N9(Uw!mZBI=PJJ3{&K za^ycz(q@EC{?&OjhxtQK{O255{KKQlj{l0|ug}!UuUe1ROnBtSj!?dsoGhPaPrFNk zdO53>B89ZNt1z#iu+Ow=*bC_i^Qr7)H(lKtm^Xa}#g$>` z0`e*N?SrrHsq+u+_~)h3%trn zH|){jTRcwUGp5UO%dfxCW%7PxnIV|^jFuA3C4`S?kU9sBegoD0BDzl$6o3nS-WTUJ z)#2myPaNWE-BnrZpm;5mcO4Y3h4QY0;=050&8pZH0;KO_4m=MZl+ z!{O`)-JAYwTBpVGjHNXlf#t%RP8LkX-^>3;+Mg_#7WbmzW%3J^bH>RI-P%!}$J?Du`?a2& zGQKxY=%wAi>*|?Ge}BvJ#g8wsPVaC7QNpCw>lN*4AegXj&;F``V8Z&n_zw*PQ&523 zz+Zmi>Loh;#n`_%1!II>f54YD>=eNSeCE(o1QYOyOK5L3BH+uql>Sc?6o3o-^A}Ei zK!-28lEf!G`@ehb%lmKIRK66Aqx~m|;CI%fz1NxGf7Z^Wb#O$Fw-t^*R6+L~3IGUP z;0@Gx7Y#N4~Qs{ z-sqkn;`PsVN3t&+GX(|U0)M;P4(Cd3_XOsTK%ChyB^-~MM1pSr#K>G<10Z-^h+TV$Y^=Fa(O6Zs= zC;%7uvyrj6I(&0g`^8vXj{Y7eT@WSoN5?i%LVs&Xe?-6=eS-8y6cm69{JFw4ujud{ zp!CNfes9_Mil3ppKm>fzXGuO$0^f6lj|ljRwov{d3JSmle$MM(f1ty6s3zh2o7R?> zW8c^}lply--`H1lP6Rx~U(?=EM2>wsQF%`PWeN(w1%B0rZtHaTN-mcA3oj{Kf8rt1 z1rhXT(=k&*e-D%Xh=4b`hV)Am6o3o7=%fYO{f!6qm-vj=Wcinsn_NDV>m}O%ht}~I z)plre8zIb_XutcLYdh5OG&-mHBEGt|Lszwvh@vZN3#Om|T;TU_zvV)m{-{^tydv6C zwqMxKx3~U4`zrc+2JI7&A+XLp@@9r$!g}}U8+4!O+iDaas;}eQGaO14-$HQg@pb48yvF>^Lv{Mw z*+=Rxey!A>A0PG$k6m0xFr9T1y`1D*!|OP-gxcG@u3gYMlRa75+qk5TUH^893$r^@H&34{_gEU@;cD?LC>ZR{d%4d#!=}aLg!4K@1nlJ)wDmt z1x+2|_Kw+x_M4+~rl0^^;L9%2@BbN!%Qr-KOZ)oqEzgwqb7s>1?nKLurgKVP2v>B( zk>rgZOg;}f11|6npMLLXo&NUrR{3MOY(M+)t*cJyo&4|Tv?hE+3m6{-yJa(nW=)Xy zL%W*_rlLObyqNyW6cm69{G0DGe20Hy&lO?|JYN@}_C&}rrn4z7WF3fg@Lz&dx=khMrp2n+) zxcwFFoG#*L7!Eo03;jQf&Y6M&aDmUe^rzQ#_}Kphhq&^45%raSUOyD!*Uxg931Y|CRrv zw*PkC?eYzVXa8hx`Lcq>dwBouq6b?!v@}fi<@~ayl|#^1=z&&(X?<_`zAXAbQ&0dd z@U>lz8==!5`xoU9SAI>|kEj>lCMv?LUXeCPf1>gd|oTF zW7i{HJ$kf5@beR+|1t#y-~u0X=Jh}7@I_Vq79Jq+@&2b?d|dxpG@g-j0_}fF6grh8 zlKx6+H*}~{Cy5|@Vne~S_DcFcmEVH?>rend-~!LRZ_wvDeBuPDKl?Y?zch9v<7-0o z8Hey=B%dh4_$b65Y3NXhx)@ITN?uOvA8$R{P%s6BEOi6?zUY~|$bV2N|D|;&QNDbf z%7%BR$tPCIa$2Hx_YcilAdj=vd*Qz{{HFYF1{`Q_hxgYK#Xr`<M3+hu0J?#kjwEGKO-~)E;&e!R0 z2aTWFYts|^FPf|L`V0B=7v%qQ8<*!)UYER4UxZJo?*j520T0yM}EJ`xXsW>A^Q&3ix8b9xrlgAMZoup8E0i`0KG^9llmHz7h4{ zv(z|Ssq|Mte9_;I7sX}ZtE-?we}|rbY!Trr<=>pg|Lpd(zi@S#&i&(S-toWik`@WS z!aVk8Eq3>t=CQw$Yg;7xb3FD}ME8S&A785-J=yOO=5y%@|8w?j`t--R zz4rb2N@-uSr}{vlfWW@iy@dDUV0^GI_zfFQTTl2(`KQ|#q5L}{P0UsPnZvhBe8{)p zb5&Cl`4`{i;3t;*<(ywzQF(5j==$jk(jV*!{=+54TEcgx-+yCdBKaG9f!gQFf1XhN zbbtDb?@P`f@E;$aB25mHUv{p@Y}b0v!+{g>CYKII4e__Z%=n#SM^ zK2X@V{{s9khX1NZ<90*=0d@uN_U`7#boT8;{t3lv?*1_G0DRmp_Ts~Q!RUpuT>%)d zZ+vZ2!4wpbFTlrNIF9p2DgFJ~g!H$~#b@26*PkC>kpFDp3k_^8;=_aSL2uys=iSZw z%a+O?k1eC`3m$yN-KpWbQLSsSjDY;{R8#Vs7K{&i1CO<9o2ApA@i2|;zUAuAP7z;_ z{=OVVyBEI8P`im;RMgW5H#co35TSP$tdIP_;LBahx{r%B_(w_&Pd2ed^ zTcYM2`pZA(`|2|4YxZd_a`ptLKi~piF!R%=b@&FqMC}(3zIclGg7OFKYmj|I9|q@N zlq=vj@BW~-&c0vw6T zpYWAxzhv#D@?g2UzRb8^;>%D1z;~1XXAWq;T>880w=Fa2`DW>&dLH%Zj!PGZsec!r zkuI*Iamwfd?y2enaDmV3Klu-xeRF7h()>6*vHrwX__!|P0M7eQcZnasbzXsRR!*8dF@Qo4YE#U|B`U{^UkwSm9s?y(k9woMrUuugu#@R*@ zB$Lj+;&I;g!FC2N@JCv%>ZsFSrAw*){es4CPmt{^@t{8a@wkFlf93VxV)GjcBdZ~S zTc_Qa^E|h}VQ^&L!Aic|vo_&7qWqIV}KQc^ig)m~+2zk)O z7(Kh&*s=NgdwH`W6Z7*7XP^GtRweSooUpuBH@R@5;!?*or`5r&MGt_zz|9S}E z01v4HD(;-n|ASwg{aL~a-#2Q0d}m75#>y(fR{Dzv;In=D!+L?Rk=*`G=uhn{4fzU2 zAbWSpB^z}9!!sVE{ufOGh5t0`VW~g=i`aiZ=XT_0)I;J%`tCfbw%8VyV0jH z&PFHqudDj5qaUaqOEAO}7v9?VSrfun%Kzc%b140tMgHGgMx4Le0r=qm-&8MrO5rel z>v2{f{i*Bzd;mO#IspH$PWDx-KkQHQk<#B^q(8H3nusa=g&)=HFXq!9>i6)R$7jbbg&Csfg45 z1#i-P2kSekKiI!}LAuBf5kLJX@!oG#&(BI1%^7}6v=Y?A#DEJ|9$&ieBb|Nsrc?i+ z3(ZAP`im-jD7V1lKK<2uRh2I)pF+;nYTsqd*AB8T@Zo-?wlBQK_Qm>Vlz-EIp*NpH z=}+M^AJ^O0kFTlEj=*<Iz=!c; zQ@zh>7m-J2CFkGYC(7&QIr4f?`t#$OVY2^JkR)tS9vP^Wz(*)~)&X zj~r4W?JgAVRPm+fG(J~{Z_7#0sp${< z5}=$@>JaUH`6ku;k@fbXeLDM2s!Qo_t!rQLWNP?=(%+fyq-I}3MF{+Xj$54lRmETO z`43e6QJ3}iT4o}DL{r4qX^wo4@pf|leP+149_}aO3Hw36;2|HrDSHc!(dq9S`o0|Z z=+AuW-|6r9#i{8p+lOyz{mdykd|O+PePgbDf9dM=pj+{vQ# zETWg|zd>x!2Eo;uS9QGf9A&2 z^miyj;((r%II*gpx}GEFOZ34FABX)kPDHskZxzgKmp_JIdqJVku}w*Cb!@JpB6 z-9v}(Gu}VcgU{NOn*RPRzL3(Vq4?Ify7T^K3Hze|dzi{UvyW?EV{>Zw8dsBc6y1{R z-}jW=alO3!f%eVU4Sv4at3TwA6=YwtuZz!45#N8+|9~D(o7(UL#+Re=?{}*G^8O(j z|MlPtKa-mNK6yfwfA`3KE|UM)JCm;m=`XAv$Wi>F?QKu-+85>Dlp@N%{nA9%sEGXM zvwD14$I6<@RPPHvrZ4}pf0pk-z7E2N_6zt?LtFmr#rK8M-@SK|eLeW1DdHQ2cAl?% z-gLRd4Sz2|_zV?K@GqViu!Ql&lzlP2(PJ2mAFreDHEMp1xkax(gXXVrFr8l^68JXG zQdcDNk1J;--E~iZ8~LN|eK)?y_-tSOQAq0}EDyeTiuj7v_z>E8kbJHs^=I8L^K}qD z*ws)EZdkO>>7U0HzFo?`x7z@VJLrgzzsbCKR9rM8+Q&L z=S_d;zipd9?U$!re8%&s;ftt#t}#2geej^#_Z-(@Ki~rQw@+{EU-@WV`!pJ-^5uM5 zAA$X^Q^eO3eg}Q+g8{Fr{GqPPTn|((U!x9zzxO$tj`!*h<#UYEpYd6h1itVKsp${n ze@27k@#kMxNPKoj**=)yLP|QyR%eFd7a9>Kf0X#r-%|R%9N*yDmo}qxo`C+r{rUGA z)erZlKlpPlFa3pl_}ca#w!o`D)W1z=eNJ?vi!YiYKJ4otdL-As=dD-z>n^VcqMNetg6Bw4I~F7x{w5-v_$(wNu15Mfs}=S4%FR6ZuBX zi-i6B_@FoNai`tO^W#d5Pj)MzCkMOx6Nk4-{b5`Z9QzZSN)YC84LP5_-_be*D@-?N z-g=a#)EEcS#c%Xof#*43-(vMxf}z~Pg(fqG_SDrMrw*s`x!%#V=Wj&*^%cE+;}0aa z|K|5n|M%4&TP{hy9#nt$^*XOsr3?A{s(*gwt9_~cHq(hzEVa%U=@*>W9dj_9Um^T{E7fHIe{N>3%-2Eqpf}(v zxVh7A#%KH^icba`|`SD4yN-f1p4Rx^%3ZIme+nZ)O&#Q+Zy`> z<1-aLq`wEL{bJ^&3GBaY2jE+%=2rt>=H1GUzWVLKJCmr{EIu0uZwVCul1e;Z7hdbSrI^jGD0(%(2& zf8veQ@O6GdrdNOdt^JO?Zuc#_e+0cjzYBg@y2gtS`C~QBk2B|0P54)g2H@L7^Orf8 z&aV)kp#SD8pO>P4v|QH9<>e3Pw^`LKEg4@-r9YG}zjmbZ?+qH?eORU&^G&_}N-mMW zfbR*P-&qA)q+y*vTlt+^Zh7YS#{=;3{C*Cm^D7eV(6HK< zN?jHMRr|^sQ+D}cs0Y9=c=7Km7@w{5hw+1T_fz__-Sr37cD?@m_=477`R8pyKfn(T zT(Ix$J99cSzG7ebvT#4mW1zK%*k8(cOOKD|_j53vUm-A#;m;pWD*NJk5I*EzL%px& zwJ%=jwJ*w-Cl=BCoM(?t;ImW2_m(Qp<3+QS1j!yy<3_*-{UrT~PD1K}q4<|?t-4)@ zFPDZv44qe@e4ar0*M8AmUlL6bAI8`G_WZ8_vQ687~aQ`f06#4YIUx&elq4uf5XXtfz`*&AJ#jm z>94!eld&jye5i`b*YGoqbmoJX$iKjM&V++q*}k?9-(8gcL|+%5@$SFF_lPS0;-5+V zm4^>{JmZDGzF~aD3LpHhFQfL0<-uqFOMKB8$?d;X@#S|DA2U8tN#T0^`f_;j4at(w_&P*!l19?e^v0RPlBEsQ%@Q&-CFthwzC3 zuKuF`65kNC|H{!H%4P7yw`}-{@nL@5yK4OJ3d+Cc)o%G>zMq=@{OuHqr4!y=snVZn zclpaX{13Rm(_0_7(ZQ$mhxTdlM5;eL_~I$z%UAx={rz7*Zj>Lu1&(|RKJWSeIqP$v zKYZW1Y%!HD3tjzLyHe9%{0i0HR^w=p>&FNE;66C?3V!GG>Du)#VamUj2cPkQ#D{S! zaDV&n^se+Atz*Z!jhbhWWLm!)zk<>W`HQ;wVmc?kOq=>p`{+#nY5*GJQb2+K*ts7# z{kN#HFWLvE(fW<(tM2+RTj4{!1kURxIhf9`5ND1~F6Y!`Q6t6nDc+0c24>Y+t{Y$L zPwP*^p7p0;+8ga z`t;|=w@&rnjBjQEn!_>vVkm#|LHPrA1wZYo22T6ASlJili%Ixs=g9=VXo~oP*8lnQ zM-V8hT^IH^*H7^KplaidHpLHdKToa`mZ2j~s_{?}_c{ofpAU!=bm zDgD{kx#=&e@S$7*_m?mKHvReWcAWXNt<&GhYbpP3b@gX{o|^u!e#;!*TtsIyOUyrw z4kJI=bdLF_g3c{E_Xp?=_Adw>`pT)_l>SiuHK6aS#yhm0AO3F?KIjdc{rYh*onIj` z)cA(K{pbJgiu|b_OEBQV{rcZMccN4N`Q{gQrTKqx4?Zid&mVq#82>Y(vl24-V7L0d z3fz#N^d~w2KJcB5M?OgSN`1e4i2LU^(E3JI9~gTiKD7J5qe_vc5(K}44X7O`&OJ(0 zX8$eSk4pHXgP+yY=>@jN50jzZ177{NyBz;Fab@4#s{hf9{A=0oQ9e`nY=sYY1^44K zm+9Mo7`KF91L#M=Nid{8=y&}eySZGj?9Kghaa9T?QZv$<1az@ zI;k!Rc=5_VW-vZe**COkuJgXdG=I`=O5bNtFMXMs{;=;?^seOfjc=>*N#k{iuTv6w z_hgeg1YdLNkAE?~9EI<1H9z}#>R(#fF24AGgim}_Ha;?&6To|QyWE+76;}9mUM=lJyy7;WG{u}*?V`Tma(%(>}Kky5iv>nR&izs{xl>Q!>PZ4S3;xoSfZ}3@0+4wrC zf(yL(@1x}W1BI{dHBx^ENq=_8#b^IV_@W)k#y3mp5Bvmc#Tl%>B86|E(%)9npViLA z7yjnI(Vy9;Y<&KF-QnAH@9XB5T*LkuZ*h?y)B*UszKw2R`-)l- z=T0SM-$zM*R$bS==69*-uh+%$J@!_lASv)U^e+{@5CHi&aDl&7@4Iz6e51JjIN8M) zPZ3{q&cDN#rSL+(8`huX_!sbhp9zuwO}ofVf7bV@>8~NazpYJ9f8*5nb4A;K(|&($ zE9(#aH>AIJxP5h#i_iEWHGEkA7XMD>Q<$%=s(;Pz<#p%>_rak*@Gdpqt;P6kRlcBo zFZNRV)Z?GW4!{ThJf;$W@gaZv1^GsNDc7$A;lq1E>V306>blpfKdk?_joN?F_c9av z(}(xz_2#RPA`B7SSL1T792^esCWg z_;7#g`IVgUN#tMT5BpTA-)>Dy;ESh-uYay;C;R+IM3jBaKGMEH`NMy`TbncM>+0WO zCO@Dd#4(MB7dz>0~vwoKIBT}t@Pgptoe{A2JjEJLR=x+%(U{|{P3mYYR zeC+p}gX#PVf&P(y{B*CHcW3$byH}4T80?A*TZY}j;|Ha_@0&D#*Yx1CQ^dCh`P4T* zw*S>C|ElYLI|2{#1^5Zm8&78aMU?)KKU!oEzSXY&!uwOxAKF*`{x9|m7i(qt?AH_U z;X3$recp^QKGeS`U!JD&#rEJ62U5cqSL*|eg5>fA{a>N#MN`BV3$X7d8pj{Xb<40e9<*z_d- zQYc@pq5LcEa`9OQQ_~;H7u$yqG59@9hpK&NPe9hGOi&-M` zDeMIMmX|;L`R3+Yr@pGIKjxBsZ4W*>MSLhaDe--|IxSea$Ww&r}EkM z;1j>4hVPA05})Zyf0=527}BNRj(&W=d3opao%tL7^7#Pk?|u4ysm9l$DdNNWk7&zT z5b1EN|G@R~@ZsS%hpglIv8C$Yp4pUtA8_q!9!^bv_)c#ABFj0*S++pxHL9+chY$Ck zTGwq8;Y-wSNPp)pA^Upp#Z$!hDdtJ~`j_!s>Kys^rMItX&G`KNk2|=2 z8{*nG{J+%nhxV!Pl`m_es{U2|PQM)iv#t-{upUvTeILn;ICqf#K4$$r5x#Jxs)_s&O%b21>M?ORx&9rE`9l?KpLYNC z@b_fjQsrOdAgS|VSAXVTsp)T%nm>ec1a_P2yI!9D@Z6zhbMtlhGG|i$_27%Ah_8_< zU#tVk=FeYrR9|17H5=?7Lo`{&2tb z>G#O*tG@5kyJ>vV^58T6Ney3O9-XiL@cWO2eCP?>ufMC7pTO(mOX=@Ru759f%NILE zdhU_v2fP^5tN1{z$cb;Cd#Pin#llr!yI!I6mTBK>Ot| z+1DEC+BcdaK73y_)V^=9Z%mE)=TDt8G8LK^{r1X#ypqz zlFJuE^-JQH%j-Tf0$#%Z2JpSLy@50TK1bybwEu47_I-@LFR1caWa{zl_KojuQ{!mR z69k`$aV<4|pDMmH?Kit~{)i}i&|mZss^5lZB=&cR2H@lU9XOcIuMmwF%6uAcA;-bh zWsw*^EeD?;ce@ia`{?>dV|jmvks0C^jQ1R^*B|d|$-#7f-Fa&M@$n9-eT8;^K=Ca6 z0;1iOL^F6+J%Q7nFnP{0gyCr3ZZHP?rV1Pn+fF54iB$kZXU^j{gm({Zs92X$gFG ziumF)mHvGFx8nK9*MrhuwgQH7df+=RZ(#kQ{Ciu?Pdv_|{QJ6#FI+V>{S5<-dy>EZ z;=4b_cVS293EWTzxIc9Do)^6MQ2rgJ`D>;JpQx4^zE_of?PKKsAs7CefX{D7{O@=i zD1P_ar!I5K7nMJd{@&&F@t?WrFPb90^7I$(F8eXij}J~_ek`tE`TJ2X>ekmD%lIk2z2Q??J%aKpzVzVnqgb|1j_imS;x&|fP~e{Z zok0FsjkudX>=f|@tv`ofcSG4B$iDvTS47|B{qIWkFPpTW^cT)Zl+WQ~Q`27!)lWk| z9QrYpeQ_Q7!F_O)&xX3NCw=83tUpuf5A(-cvwz?nR;olOmPRbpLiD$yf4H{BDx+W>|ZO3k`SXmf!p3du0=zg5eLv)UHnUP;Ai+GVAja!d*qQ^M2?Dn{v zf2#6F6*d3Q;`U!|hPVUmznXgeF@6rF^D9J6%-1iF`BYsNSl3{^E$h9~$mBl_^#JaV zzGv?cwlC^mlz(~j`uN)}zIclG;J*&_81NahW&1#=^_QssaUa}YzKlQZkG;C`<@lCV z{=JtbDqknxYaOT8U**p7&88ACRrQZhjzI1o&}%vSTlveK`BfLy(XC(2CVUp*izxqu zMlC(Q$gRovFurT~#wRhpi|bT6XhXKT3jIDh@Pe6M`(l1c8l^vLBBk*LavZ=8z{mTp zb1QEHv9x-2@WejV(N{D%ABA$4FV{==9IXMQZwALiF>C;v#|EAro|@P&`p>(7r5 z>)dQkz@AW~+WnUL{sH|6vCQ4vt(P%_wpoi5=F^UB`4cb8&7YW8U`)*`Y?DiSxt%w$ zps&6s?dbTQV<+ZL$;r*ny{wBtyUxv+QdnS&nUFixc?;hg=v?HR zg){P}(uQ@;UD`En#+X85&OF|2uFQaZ3*Mkp*SjlKuH3<2{@ve5+Rd6H^{|Ti8Qya6 zp8jP2>a@O#_V{AzO8W*{v@c)|9WyncKl3`hFdZ|Y+>6pN)28MGvlaPQq+=!o-~u0! zfA=doeA^X1yFiv#LHNw2wFMLKnK#fm5%3wyY6~XdE4FG2Cg8KLsx6ohfD8Qo`%Y=1 z!}ohcK4EQ9{fGt0`m=}AeX1wSXibN(4^9r9GhyHD5FImN|7~$sO`5k-Q(!;U=-o91 z69RC7Z=94pQHSp%YF}}PHa`k9J-zM zujKnBbdTv3x^L5dU^!nA9-<5C)B9Qfbj*YRT;Lb%dU~b~AMdZ>gs02Km-8*jBLY6_ z`;!C{@P+9f6Y$w|%mjQfI%YxuF7R$WYOUAdTX#r45uY#1J>EydYv03EuUWk*{?+O` z^gXr5qO>2A$g1zq+vNY$?r@YSs#)Km-!S=vb*9uG`w{ix`?e{`BR?ClWi1^F z(M_Xyx+uP(r9%s-UC916!bL3|;{D)l^1G3BQ%i@=qI0X$Q6h3ehJynpBG;a>x0sF(PhUuw4Ktwc>$eIrE{Wp+S0?ljuKgP%(O{WxYo4e1e56P zyj}=CW>Nuq1Alw^U0rqf&T1y{Ma3-VN%o`X#diti&u|*qXNuuadrEI&5tSFc4TrX0 zCDUWHzz|I9tI6|lKK-BQC=jnP56;u5irt~E?)N_c_Tb$Bk37s>wIfmXxevA>qTxEF9aUHn8?J>>H z*Wvqmk$l3uM(WRxZ^E5IM6*agZ`5(6WF%>`2s zz9`*eN)_MXg1Z;%@U^1-NjR7<>+O3+F5PQG<=yP24js5oo|jB-Dwy`4M9;H*CpLBH z(Fdr%O7%&6TvLa{0(o9Mt*Kx_fL+0twz%>&9lkrL|Hi?nFZH*^*S@E%>z(?u zQzj)&b0F0h_9+f={mk`WoX(lJ{)={|_WZM_I8-lFK5uQIb0P%b0x!C4>@Xd^LSFwt zA>Ku{4|tuHH-BKC_we}Ef@zsaWjXEl9-YwIA?*7ep?gf&|Gk8cnXnJMHLkT_LI5uC zjQxdY>+ntOtMJ_?%a8g&u7sm=gHbv=Svmz?buIE5QVO;m2DEroY{)7|)Sj}*iH7}Hb%%cC_7~~fj?p<0+J`x7>HkCszy;pBOZ0Lb zzV8~zxQ1uT@`a!G;@d~L1xue^_+P^a!2v{TLlHeMI>A zyqJ!e5P%E(mUC}@L5J^+T!}AU4!)uZ)dUmp#psv`_=@S63HZcBQX~=Z8Fb8q09@dU ziwhsu;j2Dc>FN79BGo02lb`JrkPh@Kvp+^f#w${h5S~3HZWv z%mjQE9Ww!6jE1vk$A`|&r}TYvnlSpv@`dN&c=HFhmu%|46+fQg z&}VdRQTb8)D4i3n?=J60)@BH%1`tSl_6nk9=SoCHbj*Z+zkyde@6R)I`it(BPuO?r z@ge_4H)RMW=r6jF&Y4vHjc?ANeUvg1`V;hDCg{(gdrSzx1-`TT;7U4t>(%&yxnJT7 zpOZZPQj5!%p49)XmhI4%0i-`VH^0et2=#4I)oj5uii$Xs?#I8*cIc~`^gNAMoAf*r z0&s!%JHP%YfY1Imo5uID6YYU`Bf>)jd||rB1bhZP%Y*=2 z;P3Bv`&AvjZAyRPg|hz8Nuj|up4=$HxkEIMXF050(3uSow=hwnW0 zPeZ|om2Kam`h<@N`0O9ZzC^$mtw;JH0=_WaV@lwoXDuQG-~ul)Iz@E&VteEh;Y(!u zAV_~DU9tre@R>hSdM8TYqvI$M@WsitOu$!6_m~iX3;e`tQxEF!y{7CNJ*gc1)g}EA z0bdEpVgkM}-D3j296DwKK8uc-5P%E3XwiyebofRo`-)4;)}P&#>`4TC)_#&l1blHi zW&%Egj+uZj>p-?(LI5uCF1J?Sro&f)^6!_j^_LSOeGma(=pdChM8IdzJtp8Q{)OyG z1bimlV?qEf@R8$&YTM63_21&hmtDSO^`Q6@0iX3N>5mBb!rjQeM8IdzJtp82^sGY) zAaH>@wMZcu{Oay!pdX@B?7)8y2pe7T;MN;_SV0%F(KdxJom&wU+eJwP$HkO-jVtWDWy&N z9%S2%9K!qq`#Cx%`ir|{{Qd0(Iw#`v#^cYi7YRSn&M?`3CiR`3r}z;e02lZh&y3Kv zUtX^(?PDyK_6_^+!M-_b8`1cQtG|St6zz-ugCqTb*Y2?)i|1d7u5v&L>lchKsK3*d z_Ltl;&3V*R->H$RzznO34Q{s)&{E4hVG?xFXJHI36A{yU6 zm95T3(_50qPh)hRG=6$@b>SU9%~|0aKfTo*KLtMUqtD)vo<{i>>j$wv&dXsM zzuHLSLu&qWi5lmnt4;ua0P{+H^EvMtB=v6GBJ(lw<0Z)7cgu9+rabvx-~#{qluNqm z@O^ejS`ho!7Il^O1upO)d;=5?bBz2x;m2n^ni{?;uf1AFhp*PJ$@oHN|2O!eYM!xq zjUJyN)tFf4xaPCYRTy7XtsjJa`w%{h>qk179> z{(!Hjd&TqzKbd}f^HjNL1>iH3B7ytjJu{ADe8s-?(=&dg`pttc)T3hf_F|vn$E2R1 zKl@gxKdi5Y9fR!K=-BC-bo$%4hT7)OkpBbKJ}9mrzPZZZQ1~L*P5{1ZRJ|AdL8eRS zDF|Qlj0ZPly>xu78VE`E2Lt>o?dNeEP=hvvv6XDUtOr@Wm>K4}KK=`D2G#e-^Ei zTK!RU+=mBr_?{d~_TA#9znoqb(_bCsuU)i~{Xe9?HG5V5n3Y=j^7;v8bsfHaMsoTq zsUSZ1(T@Hj^8xS;gP$&yF3U@Q7av;uk`CV^<7qCJM}I}VE2h67d|#p5R_o9F__9?- z2A|OAkGYHw`S(+`zT5tQdllr*V4k!`s87Z4VV^&&H-i2ix>nhDj?5p1BgOpzF655~ zx>y6f_)xwq;PyQQ;47{mzMU%lnG@xDU*N+&?ZEBVpW#RqiS}u`D;L$$;VU>L8DFGt z#qR=XmL?i|LK zQ#s;j7WRGj7sB_V>mNOKr1%yj<3sx(NPoZwKH|FdA;uS0_}*9f<1Nyk>A{!Nzhe6H z<3Rd@UQMM}PAhU+D_?@xM0mM>U`SsuRV$KyY6^r!p} zL4T`J|0@3=p#c@c*GRShY@hy6zSwHKAqXGr{Pu(!M|$xge+>9TwGR}&;tJv$q{fM? zeaZP_k!l~<2j%r3e7Jtrw7fIC_@KYLIR8>W`iq=jG5rPMOXxL4{gu?K@~Iae^!E;> zKQF$l3;r8?BbD95)5>n2LVtf`XZ7~tgZ>u!>>K-!@cs0l${)%<3~)HgpdX|=Twi^- ze-9nLL%${4Hz()6(ci*nRr^5g&j1`j__AZ;PGx*iU-`0v`oHE&p7O7P_+D22!u%VPEi?T|YU^ zYhUD#N)3|pM`&Qh@WIc3-yb^K2l2YH-1h4WxN!a93Eh*%50F1j-=CcRiYtikB-PJF zIS2iX$Mt~nrISjCXlL!7RA(RS&))x`x=@0la z4<_3;RzZBzeRc#s3;tJBy@zxLH3AoSjTib4(&5YVrN5lP71N);9RPfZ`c1VP{P;o& zDAHe}tXrSarN7g^mimK#!jcN&I~R6T`w;`*4eC1D&ju8yIL@KJi@zJOm+_UT^oR1L zGL8Rygb(F&=wdy- zZ5QF`Hd?WAHHwl`)`|xynxJYUlj-73-TuqKeut^ z2O9Q$T=^-)_44qoy|l0~x_3JNtPQ~=Mc+I4K zI{p2&SLP4+|I1SIJY}gZ_rzxXq90@{JMuLSLH?c-`)~!cUpmRh1$b`3BF8^9{NGno z-xp$gXuiN_nIe2+#CgJ2_#|rA%P`MN^?v_Nd_Pz7l9jl`{3o898X>}bC!UL%Mdt{> z1%B_h8;hOq`)Yqg;N$t7M%=|0R`b~YEk0{M&Br1FKA!8DLxcca;NP!}HP_+e`E}+O zEx<7Z6CrGJl}Hf>55W5U?HG4y04cg*BAJ@dv)8_SR7=UtXNaq2}A zugEi6uqT{$r*|Gl5={KVxd)#LM#9M8*)J z8F@YUY8PYtn9JQ;$G;gQ#$@qJMZ<@F0TiyQg zG4h{iw#!W5vqngKi3imI&j>?qE__>X)XSzpnOjD*58(m#8DE}tOktCE(p^{{y6q0cdsZ)~NkAx83 zXYKWT&)IvmkIwX)|NFlC^Lfs5_S%>AeV+BK`&!R#AmVf$yMg?u=FuMCjSa-7chdDR zEhf6Ap)lzD7dns8d7xiIVQ+4bcn|bfqt6=W`Upfc3QPYqE0Xx^ zH1Vzd*dO10>{kr!7U&1~Vw>v_03t z*k6Cr?}}T0FW;u{0SD}13FFhpollYbaA@6Ae04xrbppcR2Y~PLwxum3zR2I|y});9 z8sS?{`6H_84_d6}Jb6U^2vzXlOXWW?I^K&L_KJ0=k%!3d%Cr^<`@{9;XSQ8W_-g3u z>kiWTHT#z2{BMNuAzi@bx-5C*DkiXwX|nWBWFD7T$K-q-n$COON#R{9iM?5*b>jPK zD-M57+58^p@1pfzmH4G^{sFp?BFFr+neVSZiO-$B{rUR~diuVBd85AGd9B>~ln;5| zZKz}IBl5@8elOnSq;Ex)j_Cis(2t(mO5b1L`QKOyd~$u58(#+7S?oJi&apZK@-J{h z|HvOpho41NIIn)#KpzSGeBW6rsR#>Zone|deFG1MQQ^pEM*U#k4kfc?jY zUQ)P$5BkgPL~AVnmevv2O$sae)Am?(U$Br}_7hON5!+^#^Wmv2H!oq?9jT?6~ zx{oa^m?&>?{LdK|6$~FXoNDa+G2;x`7HI7b;5S^GKOw*M_`=a+S`WQp?9lNA1@u7c zi*5){ymai<1)~dxcP%K$pD4ZMQ3S>m#7j37Omsq6gZ>P50Y12>?O?z4(PK)~^H!ZA z=TGTpLP(bt&<>do+AxbQ_NH=fKl%3|!umw}pdlp5^~pB*vkUJv9LlAJjXZL{ zBY#FjH_^F$BKa%$+Hgo+J@Oa0!4Dk1_Detfb=%2Qry}NaRnJNPcW(Uf&ljIwQ%HjU zyI=wN>m!2yJCpuPLOChM)fAH8|1LbErjWG1E#a?E>#OOSq*MoRgWD?$tNP(z+gRa` zo%-+ijmb5IB;YsiB)mkxAEN(~fIpY+l?438EP9>@_#;!u{~%GS1GvGhs-jA0Z%(Oc4A%GYEc!%3e+Ce;t-IGST0LH-Yk3W9XrmiEJs zq;sP8f1~G%DF2Tl`G}g!?B6nj_A1kLqErWPgTMdKwa5A4zkj-VgV9vsx2c`y#t;90 zR&VkLMuheE(MzfeN&Dscd)mJorfZVm|1aLRx{!o&ub8e$>X57A%gwDWB&9ll8+`c- zS3l~9f73zrhDf2pAJ_6P@aO(U{uGH4_SDT{npjw?|~@# z4V{yJ2OLcgQ~A<2d0wlP_xjJIa(O-6uc||MPUpZ4eqpui$NS+wLw+BRj>yLG4v#%v z!K43^dsBXWfc!I6Ztc+B1J!wPR%;jY z)kNW!?Nm4Zb5EeOIZXcGeyHitxihJJJd^x){z&CJ(Jn4e%(uwCiT0axKV1)YB7bc} zq5WQjs=< zh#*mU;lC<2;~hWzi_TN_Zv<8Oqw633AB;ch2#45zi%I8_;Qt{+|0ThHMlt=D1pg0F z`Y-8ZYM;o%YF^7Bb#~-0^bVeXT0dX^#MKKGeruz`FWc#E`)Nh_)t3G>OPV;;zYWFR zmHd|-YUWU)z3_W8kxP`yADsCI`P(CU^tL0h`h@^D_;qW}Uh1d+Lh2vM!#LX?Kk&wz zH5ZabH6#0{epqyF6Ni95NEL&mRQQcEXn!)%vEqOGob{!C_`A(e`0e5Uj=!`G^~;DJ zBmGPKfwP)B1pMJ(b0H}e{y1HebgcNBgvB;L{P8IYf9RZl$8VDEB=zg8>?!t06Cnxs ztrp~8kSG=Ya7&Vp=veVz*yg}>e)u=dXX~4-@JDFi#BKj!wii)&ypYs@@QdzLp3{Fx zS+f0hA?=@~|B{;0x#Q1o-0>ntB-){!2=A!0y5K)NFC1AO7lG z|Asm${L=rM8-GzY#o%fmIR1xSk!DeQ0^<@gSo#l>`+;#34fmeEc{1TA`Hyx0H~3qt ze)lbZj{k+;bQ~%DX;pto|8Q>n*|NT+@+Y{B{KFC1rxV^&DhYF4D~G-l{ZD$Aq*MoRgJ)!qy2DTZi+?745Pp1zSo%M6 zk%4blvI$TuE$;_pUgym^La7-m(=1Kbv?9>+C)UD z4&Vm=rSOX!Kl}}PasI77(RtMo_@yv(Si=-Gzf_&aMpM6v=)m#nc|mp}DMQPoT~_@pU?hN%mWI)oab}fkL>?Sf1#oJ_169Ipau1QMZr)wc1Q}Y)M{JC_mq*MoRgMVMLtE(S= zOO~H>Slg8TrT+=H{Q#fwQkIZZykFV3@d}+24Ws_0N&dTv*V8p3?8mq0UP<4aNcy4j zRoH}tsL{fH<9==GzQ6tOubM_}&tN9$ zPQBln=#Rg6jEV^OpTu{n=g7YX zU)XTj757Q}QMMm^e{3eLzp$6lc>H@xZ`Ndg{Re1%Sst(-egCz(O4Hqp6Mi9p^CQkL z_@1eO2U74#TGQy#yyk7>_Ze-*5BtfPLG2jnE0XnZPVvWIs_7r)kNu~zXTV65KUhb^ zI7YKv7Kc~R@ZouI=pX#8L!G~J@-NTt@8J2jyJhs$slfUOaf?5Gx&A;N(0_QKN-w?q zOnm>G*EPX@>+(8jal6XzhV!=6KkfMv@c*(pKkkQr)P0nH$#*C4+iBv*cm8zzP2XWV zWIY4F#p~g5|IzRVHPHq=+HQti{}HI}Er0H#`q%76`@`9OtXtF5|NIBIoZ0EMpB`MU z#yA}IUrW3HX!xOb$loC}=}EW#QT{mJw|OHou|CAK{PD~6A@aymO!Vxj^bi^5oxk11 z_z|AP_vaLGx}2fpg>lL1n#&(?TYC6UXmz9W z=Gba){U!cXav2-ddqNz)IFaw4sM=W;!c%bQ9sGiYVzR`qm;ZssY5x4;Bz`+h{QukK z|2&opa#q@3@R3{p2J3%|T))#ZiQl?CJ^la6^XQSwyz3J}%aol&)~R%X{>H3O;YgRF z6naN+5!cTl<_iyo<@e_k?az8sC#zeprFB(Ns=o%SbT{wt#~(OZy(o_(Sof*IW7qQ{ zdHZh87mWW9-`^|8Ygg24`PZX8UqwFt;;PqW`zL`P<^Ke#f302>6Zpl{^zgrjdUmZh z|K{vbIQ8#C>fc2+{uRAQta}CiNuRWQ&5i#HuD@o^B>TT4iQi5W{|~&5&(zvKD=%g} zKdRbAD1Wy7pu+90s{A<`e&7Zl`PGTj9Q?d~Z6D+RwHqbmMYJxD*Oyq+Qs|$?wd4W& z`Sn4z^Gm$;-wNyQcB^y&e!=y%#o@Ko>r(y(`HI2()6*&aA&>iasDF=!A9^?V`Inx`xklra{DFLL{vFHvL-g;=r&`}L7VG)=yQ#p%@Qz^6Kjip!+Q(BQ z{xIW@G5)etHy`oCl|%gcU8)Kwwc{NfD{@P%96^@baGAO#0* z*k7O9-#x{hf6;!PJdgU1Q!0wJB`RI4ng04;+fzjZ{Oh6r`@Q{_{gc#t&`*b*+&RY^ zel+}9r+5V${M{Lo2!DyGwcqAb`59VA?awFG`^{PY_~m!u8_M*tCB35l-Jb{qYAc_1b?ej6bX` z@rN?xymyS4INAohJSZx&3TRSN##hJ014V_zk|WoAV3O1^E)s={%qX ze0p(-LHLi@-|T!Ja9d^qzs27Pgx!Pd_OpF5m$w)v;rOyS9Q(wO{!6E@{qX%&G<^Cg z>poqsX@S!)30-wjFqoA;(?KZm)TH(Ge>FMV7E_ygSkMZ4P20c+>b8-hRT zQ1drA{tynR{0sX(IGx&Wwo?)Amo)hC#e4&{4Ga{U3Z2$Fu z{ez#o^V*7T{a5DlXG0FvOLrvk+iBw8&-g_jFaBcancGDuN3gCO^&0FWl@PESq~9Mu ztr{ZnhbwsXzn1*VS}y$7ed+1{K`u{XCwj*pbp0cKUH{x1Oa)&UdmTih zQKLxzeUtuY&HMfF%XLBW$Wu(*$NNXc2(SKo@_uZw-`jsNIx4-Hv()`a7k=Fl4C!O= zmBLqg-7WD)S^pn#`MKv}(tnrC#Qq5JKzjK1@qCc=tGE2z_bZn(Y(LQd5*}AX`FS+_ z?HPBF`KC)x+UC|j%KzLL)xUO9|8|=AW86+QdEYiiBj9h%s;u+?oVnco1b*lj&*|LY z0PyuKp8rPTkFow?KR2F2_H$_xzcnX4{i8n{JK1ah%h`U6Vd_25f8QZ0U66l~KXu$V z2X64pH%^-C=%4r30Dm`H|7N|F+`nSZO%Ff(Ucj#+;(Y+^fA(t!{CfFwH2g?6+;`)k z&d&Z8^xsi`i6^Q5@@ZDm{vS*ae`Cz2RQA?ib5<%nN3PZK?|ES*BKLoR3v%lm_61&R zaM5pB|0x`0+} zaD9XF-1t_>5xTC(d3S(zF2Q_fJEI65kg-&JY2jUIIX zXImS8sCTu}bF7iK{DD7Hj6Xnr_0}VQVL#yaPWio^#9z$$H_qjcZ2pEeWr(HhU(I~T zAOF(xRUE({*ZNaHFaYCPoSwj`+m(R_QgB`W;Ts-s)(=D(Klc9yzo7n$3%^*99{zK9 zybE>*7*}(<2;sngZOm)`N5c=jgZJ(?(pf)Ks_8$noAm!at$l<&q`)8H4#&~-e-cqhhW;Zw&W3sc`L8P46+GT}H2vc` zc#AJ@&X@S(tbh2o{HYg>zkQI@zqv3y{O4l)P#gc$*L6UDne0#8{#?zYLN3Uy^Y$Eo zd~oS4^&S5t!AfE0${xHyV0}%{50)(o`r~gL0KOKJKfMW!YYr*~z z|3U5-AUuEvQgGnMeV6@wUaqu%;79xUPr@(mOX4>lO%Ffp9C`+fUfj zeKwC@0T-Urc`gT-%wJtHq_(^Kf&Jw5r1rm&v>&l3J^c2aVdu@d{im{@I#ap)zal;R zF&H=asyp^yB=JW%|DylZSI|GwCA3E6_oL}Q z!Y?dl{_`b!J>!Q5IR9Qs_(k6n68@>J$Ncp#_hrZH*2!@)vd=VtMRgIq3| zt(Ckp@jwc0a5&`LH{qquQvao_f7t(6X+Q5}Ch(h!)5AZJ@yE8Rb{b&R!uXrkPi&FL z<*K%>4A1Et`4{0sANuZc!e0_&{3w5}qWV`nkn|rd9#0QH{HhCW{P`(vzoDFg{pk3i zSK!lmHV5GOjXA9kxbrXYM@j#t3%{Kve)y3QS9`If1&p07TOQX_{}F2 ze$`u4K0zdIiC>P%LoXQrF>h1t8F`O9@I5gzLi>}5N@@RX=nmTJ^9b!-BEt8?LUc`1 zssr{9{$l0Z7EAr3{=)dfPMZI<<|X~_iKYJfm-~9;0sRj|{$;;_>MC_5x&AUWf7Ttf za`kBTZ}JPN(9;PP`6wcl(PemhP4D9^F)3iw~byv#VIhag`FaK94u zFL2>God>iDjveNV$4UPsQEmM|h}MsZlBE8vC)3maQZ6Tf2k~!5IOkK??-rgHGuo%O zegJlZbZT_Y(&^HEiZjAaRPZlUMELE8lK9Q1(!-z1-z4lx_ow^) z{0Hr~@2UMyo=Fq_N9{E6r?US=X#cJcrAtc7L>+%)c?sKVFMj zRDM35#BVN75C08Ixjmz`AFzHNe#4P}G5><_qs?C<|Kj=OXU})mPon%s`(f}wT0gKf ziC;XE9{wz})3o;UvHClOp24Ai;J@aM&fhxa58Ds$*Eo&xuM5AOCjLY|J>;!_6a6e+ z|A6>2+5Rm~FRGUR_0ZENqf6)4<^GX~hJQ{r+0TQC?J!JU<{lorC$$rdbN&VYt;tx&nFMqC_<_(AbpJw|(eRnkd<2v|BE0;R+ zce;Pa;ypC}{8om5|8Z-T(!Z*`lkI2u-B@?~8SBSFUA^-xp>;JKUu z+jBtm%l>rMf1>?~^;b7j`zN$DBZ1#sogV(*LQ2oE1>W^DRbJ%shwUeaRH&y zGrhu2eD=j04#P-+AJ5_PV6*ZV*?!R5pUudAjBc4?4)?q56!_=xg0DP&;ki7X9Gm7H zf4iRj(i-n5oQVHitk>fFp1R~zPZ)TR`G-GUnIrRWO!NQWegdsO-&si|B?0yii}G_Z>EGT;o&C-#ea#pA z@r&;jLg*jgGeCI){Kcr3weoWn`oG$^D4x?f@I(IlAG^<~zhM8sU#kPz|JxY}|F&YC z!mroA(!Z^{{>Aun>=Up3p#BYB+(OtrTO`J>VmU2DXyF-&`Zq+^<8(dMq2urIz-tBW z{0sailB0sqwj_SLobX4xv=C<3B>s>|@+?T=kJ0roT~BrB_}@ORYAZkdPmzD&m}#N{P7E02&;P% zf23OrQT%Wczj09u5vA*?4udbi{?A|1c8|ngs^#ATSS{R92->yBVGw2%SUoOh2b|HD;PIRpE@n)0uBucFAhlk3eC z__I2w7Xtqd9=}CD1<}2xg`@wtbUfELY%`*4u_rh{lwd@ z3+f8j&Vd_p_UV71r5iu&r#J0i5FgO`y;IdVj-3L(xk=S%u>bB6#&fn8e>?WmVsSeM z`0H@_fbiNHUi~ze4bNmg;6#z<#(#+SkAF}5kHnCS#P_YNSN!#FZ1dvphV=|@7I~tc z#rYS0@v}L8eZ5e7WDL*K$rC+)T%YlKYngv-ZT#~T>3{5_vG&5tQ-}hHG)Av_mrBr{h-v;rT!mqTQ9DfKsUBT1-!T5tX;BEiF zKXmb{jYVu@WAT^t@AwnV-_d#Ls>b4j5Y6XJ$Pm%j8jIj_jZ=z{%~xQ5`_~O}#?R4y z!}`g<7j$E1m;V#S550j)|1I*r$?wfaIscG%{N#4-r|at^3uql^Yf2^1A zdmYJbC?a&O9|i{?|33O!zcp_ANB+$cRDO1G?SJ2>^bg$N0cwA`@$37+5&v`S{{ii4 z=9Go%)b=1Buno`_Wz|S55?>L z_~rL$-1^77>yF-mXWS5fuM-no|6W*-! zk9fgfoyYAj&ELa6+%Gg2c>BAJFdp`#3eRCYEwMg#jjAtaCJ=l71h@bM|LC%NuXN+D z!u8jX-PC?_;SX*(HvEwk_{9=`{3heiVw_&|^!+Xl0Ke_m8K1fFL;tQpUj~^p` zW1+wPL-YOdTSw79aD(5`>9$Y&@J}NAwhMpsjbqb)ECqgx!*%&Cx?*Ps0Q7TLcGfAFni!*4#~ zZ$EY_`)B;Qy5Vbf5BnMP=z= z&l?Yt{k!l-w;r4R?TEkrLn-ucAH{y4ckn^AMmyhEM*D3Q+s_rGe=*u+|8E}~e(OpZvqQGT|1pX}d-Ke+AK@W&Wu7TYiCFY8%_A9jNJ%RCBx zlsn+J?VCQ$jei;2f5+#@{$2Rv$B5rt>aYJ)_G2;rROQb+)&uxIFHf54#{VhX&!ET1 z{$2Q^?;M-{BPsA3tp5Pxf&OjA5BuQD2^Qvm;QwjXXTKZ&LdO5|TC)FZUG`skZ1`hb z&gk|do>%FTt>G8zl>LuNAol)&-GKl2?cmvN{IH+gQnG&+{@}aEh9Bjmj^9}9pMOop zpUQraF5nZw#xHLCD1U0cK=$v#A1`P8p%m>;i}BC&sy%TA+z5C!`}-FOe+kM@wEsus zko~*xN8c-7{Ucp+7)ZkYxqpxfe<|M&KJ2kGm$>!ciOZiZa{biETr z%Ko=N!5Rl{@Dt~r*47XI6SDkw;SYXrZ1|1k{^e&X{AL;P_cIIc^21+c1KGa|fBYEn zTV=#=9R)we55aRzn0mb%|EOuI{}`jOH`|3j`r)zZ-+abj|Kc$fK9kH;9trzr{5fR0 zeg_qc&H?`OpPM(h@t1P{aY7oVy4;Pw1?%5@lI-7wKlpk1;>Y-pj^AYb zsq7zi1OD7&wLIg8u%DVc$^KpVKBaQk1!Z!!K<_5 z!N5b?v`_ye+k7yfuT<2QI-M%TY}6#ThduYvD;|AN(S`~$fD z{hI18+l4>+Rr%^amIA-c_*1o?fg8MD^nOqM3;aPEe-i~R``=%__{~NB<&Svv-`oGd z4gSqb4eI*of4yA);KCpLx_t3RQs6hsh`-Yb!F7K4qch0|G1*p3x4=lEg<_J=d%BA%NM`k`D-1&c%AN;O-@uU5(<2M<9ahmP7l~Y=I#?R6I9Ba_GpI!Ll z<&59pc}X3=#rU_RiGSdzp*OnqKbiG^HO(K{F8tB&%UAy?`@dzxKVVDdGC%xpQTZbZ zUH1P&`QkU9PEr1E{P*@xfa_oIswZst&5i#%*8f0SKVZ7>2Y)PI{E-y+O~#LYv2I4_ zH-axdyU;Z{(&3(oSVt@vuph%@LxysFSZMRG+w^? zw^QJ^kAfd|13vnV%@f@CVL#mnzZmbb|DVbie~jlPb^VJ?%KlT?PcGX(_<@G~uXE!c z#_iAZY5jod!XG?P&iHv;TE}lP{#5PHV#W_{Z@BmiH~z(pKSJXtmJ5HpobiWvTu8@n zG5(p1Q_sHv4hP?PS{Kjyy}exigzqK$cj1rzT)z6pxR8$DK8pPy--5qXQ2SH2{!xDw z$@c#Qm;E0sU;MEY>&L|F|6cwBH~5x`!#(3az<)RC-*n**{!+g9BhUHQU*=KphuNUO z_n+J*=GH&PKWpwG`*-1wA0vK~ab|J67(Wd0_(?X0C&oV+|0vz?`8=-ijWepYaO3aB z_W!yZ|8(Jx{(5ZsPl=z`Kj`>v#=k#J{MMe%hyCz>NBG4}F8lwjeDT{U@QcmL{!`&^ zugNv+;5)wSuMW!gzYBlxP&wo0{>u^i=k-@X4JS@>@rQZ$#)Ix9{U5P@Y#+5hEf@ZH zIpdFU`#%-_91SNN$6X+kTev`iB8j|JpA6(ch0v|5zuP#Q>0hfgd=Le{Hs( zQ2?xQgoil%r|r34N&Hdve=?i#j~PbmH`dViucJ!R@E`v8ALsosHm5tH!}s1J(~6uR z;D3+(EyeOCI^lWz0Q{(7A9jetbr$4+Z06ISx$-Kv{_*|Ryk9bexi&KUS+CSg2|Et-j(fX?wlKA6g z#1DUU)-&9mWFVy}_7NWBeVpbrbwBj0<3~97#^1Kc@~3u;?I)rCFX`JA>&X9AiP|3( zJzO^Z@8|E0+uHYbhVcH{*t<&q0S1WgmY6|hSB4Ip&w(3!N8NAVmiXfu{whz>4zCxJ z_``pd4Sy@vXC$Efnq+bOU$cK5bG+Jz2mJW%P3SGJUFl*N8~{G}^Z1EQ{^jq-eZuy0 zLgNf!uTSC+{#`cw(5Id2wV%%zzg48dfj`dS;xZMEd~r1Vmwx)dTtED!O=u(Hh9v%Y z8S!r&6jo8Qo}vHu*pDpi3i#nSI`WSyuhPX|@cu(3e)xOjQ~sr6JMX8C{!=#nKa$v2 z?bZJh_5%n1#J~@~iRRRQ*MCrHCE@S*tk<4%#?OOUN?*I#e)*Ic9b?}k zc&hUMa?Yn>p~{cY{|B%W?K>V7d4DSWb{LFPX9$Pfi_e&Nl3V}qf4iK<59P6i_ge-l zlnwtC(7)y{7IuRA4mfVazJIOTzi4uP?>mUA~tB)Z3uaf;U{&*SjV;{Nw zhq7nrAO6WAEmb)1FJnJy@LLIdjuKrz2LA_d*Z2Cn-1^7&M`p791Anw)+4R2^_0dmW z`-h$A`ftqjntc>Mj=&9m5IQym0Zxj#s2Bx zUpZal&>&M{#xPD=czn%TFQLcZHe}5XTO2`oV zpO0pgP5<}~gAr8q2J{cPBE40)3jDp<@1yQt!3Ev<8{_~y_wlrLp795ipC3^B+1^-D z1m9D731|A_e+A{nO{(33_%gYjA6l!zf&YxR)%)xzUOxomxcwaC_I5U2q;Z4K!T*>$ zZ`g5Eeg@fp9lk%ZZXNX>2PD5=X;xPFsYmY|;POQNH{~BX;6DWIFcq2%kG<(_cg{Oq z`5TDjHW&6~&BY?}D-xMVX;0??I@b?_1HhvtSG^_kFZNG;%=vc|`JRyn%AYvnN4*Q4 z%3ph;J;44Zq5tc-zZSdND@Q)tk2OYx!@eC5t{=noU;Z62>Vppme@U_CKXA2dKW|Rv z-)NS<{S>~y`A+LUS{!a^_+xv#_rs2V;BefZ#J{q|xWa<*Lko?YjULAM(PIn4g#{gr zu+gGL!SIp8i^8pM7&|;Sf84m-f*VG5G$xE5H@fh$@x#XtH*oz%d3LF~siQG;)bOF# z87)SPA3HQ#zU}O`t&HpQ!~NC&fkSS%VayqZ{OxG)i~loz?C^0$|AGAnI=6Q;Mvoo$ zFHsm%G!=VJk&fVP2ac>(AuH?LQqBL*0`mXn9IJ~QCjHD*rhm{^D{=%T{j3xZYUofY znX0tg;#zc06dyu)qBg8dh(B(k_tjK&ihSX$JNf<2+l8pH$$K6h?R}na6Tl6A?WBj+ z_~D;FkDs_#m2>e>1rPony(!;aM0g%(>Ci2m2>*GNMDDzn4y|oQ*Gay>+?Ebyk-XN) zB+neWpJ>D*gzvoLM5v^tL-WB>}(jer+KM_;a7DEhMGFZ_~Y!fIs>{Z6OH<^bUUfL%Waj!!LHLCt~mX zyZw~zt}P@1f1LhH0)8u_j*tZW!9BHwq*VBe>0U{|AI_{JB;f$=1kbJ3x>wTTB0}UU zkCu^r$#dg8dKb~7w*j%2CvbCcwSMyN(?`Au@l&pVokVj{?6Hfk;; z72c`vhv}Lm;I|q#7m`xp4>xHpB&Cag)0Rb}{qX<&5bJ-IKYrlNZQoo-g8s!TO@t)q zKSci}0e|uN&4r{?_^l2kA5psahyI=0+YkQ*{cNjc6)DM2$Mrc~9~qmf6&yizAfa(msxF>d+dxU;2rP(Yd5;d_8J66_Tt5>V3vQ zx}OM#Za+OePpP!?O0?`|+HP|Mk&NzUGHNcMsWbMnw@Rkr|EJp&EYscM5dnzbzLkdv|W8 zpWLtcy3ChES;d5}M-qSd8}IqxCEn*-+^^nLOwUTfq2u2)a``!a_``%>9u|McLdXCA zi~i^2Ek4-~|Nha+{=`a^e?u2|+dtB8o9IUEo9fvPt?xs!(s}rgY=?%QMZWSbp!QI; zY=;_mq5Er85@9-*g!~+%|B?oiV^x!$H|cpvUsj|0&!P09_d7(V^3e7F_4cYS`r$ux z9F^x;6-DeQ_~U;y7m~(bLipR!nB$*Reh@*P_?~Pb33%hb)BQxiYtuDJ*S1yo@C*Dg zx>pho9e>twr(EiXzg{J!fBO_=|EcsJJRw_1vIxIT_@l>VI|TgJKDtH({G~MVDhc=v zx+WH;iy`JZB2c!!u9r`!Er}iijjv)WReb0TEQBC5vS^w~#xp^FwKbtEh z<{!=4{`h6P!mWS%W`F#LW_ZKVkA9ZNzaX!{_>kYtENU;crp_oINFO}^^*JM6k@yAs z&&2rK?}R_}W)i=slOF!L-!o2aJmv6RDm?a`TDL@I=Nzq;d*y;%CG>wGjcd&~vi-x4 zi?6eXKOp^o1~vbmgJ+QbUHI)Z@z0C;<1YkG9-jsNU)X;*{1U5CGx~I08`Yi&9&RRb zS2Y3LBkHf)zqq9f>Hi#zzrlaef*C>>@6wRKG23=#caqE6bPC#~L~mr0bCm)PH}dp+j{jYUg=6 zj}hU3{eUm)&~&J@AAEo69UebieSqHgd8P>68+INw>-pP{tk>N3kMYmgFUn33FT%}V zRXFVAPR#RtsLFrHkNPk6HMLK^L2ebKEp>o@xoOwAe)u;Ners0}zo`HJ27ml}s-J&I z;x`#Tc+tI^R!RJ@pBh|#7Vi`yBtLS){`qaj54!~yr>hsLR3aO}x)ZLaI69&G35TBX zy*Z5g1L8mz!~P?LKeG9Fk;V9}21@_H4W6ap*Ku+* z)WA^r8aR>uMXNacJY`n~KX5UB2g>C99^!Dw0sQj{uKv*v{|)V^{V*&`L^>(WnhpK& zN4`@pR(A>UF#ProRr#Hx74x|LqvMZreSvU;AGi?fffzs11>ZjkumI=Rdt|N~zro)> z3Xh=n!_$=#_=S-k{x>lX%HO#F{-3y=5NYnszccy!7j{P_Zx-Vk$NCpsj~E=Dkb_^m zHTU7>4AM+O0ovNJ%{4;po6yXdw?nXVP8Z;uk9lskH{k5X?O6DG4>DdIf2{{QxAVh4=W1#{Je85aZ#Mq_6aSW2 zuH}dSX~G|K;TKK*|H6;-SoQN6RowW$WBb`b_9Hqb^>6=|`2Xhh0k8+yPjxO=5sv)X zVy?HmHQ9bb%)$B`cr--#OJb*nogkF|_fMzx&uNuu4Vik6)zn}A_89dh^|TO}pAMa_ z@*U#2hx3KaV0JY%ah-a z5Y7DY%XvL{06)H`276Ffh1mBn-=VE<=zP5jx1UwzRc(Ht(mK`~mrDkRmsV7NXlbo; z9GErS`TjfFKl9lC;V}Asfz>0qe!xzFU-sYS0sO!6cWNS+dG$XgN8Mq*ROH-W%lQ@J z?YmWYWSzpF%eZ>+{RV%xBFf>V{9Kgz?-eU=b?4tVx&5|Eet(CYC}RDC)!bkII{xo| z@Z#ZU#Nhqj@DN{Ef3jMi0{gc)eDg?EA0vDVha1en=7=BPllC9x@e|npsrc#VfBf?M9r94%6>48f%MYtfBE!fF{%ID zzt#QdzuP3f`5zkp$M-MJ@W(H|e<2UxNBhBCr1Yw;3W4uL>-h1#Fnli~zz<;k7Vrl- z+++?p-r4jpQ_n^`%hUCwp-xOAMFhX{wZ9}BfkLW zATEFG=au~i`9+JRg#K@9 zfBZ46|5a%L+pVVm{EVk0sK?>yKHE0z<%b>^S%dq$93eN+b-R9p=1AC0;2x< ztQUt9uW&-HUbB_FW5Qsc7-B9cX;4@g&+Aez*qaXAw6}aH_)0Ilh(~(-a@XiiTSLf z(eeK<=)wMe_~rT;hBYf7;ARj|HneUIwlk*n= zZT_N=@JAXX@mpsrdxqY@)75_?ZWl%PJ7HBc{l}ZpJW=x`{vds@FiNDaqk-JOf8ML_ zoi6d48vebrsr~a#X2O2VcK;oIef~(tA3dAq<=Z9k=hFY;bB@HX+t0jB%RS$(hy72Y z`6H`hGXIKm{yY5RxgC|t{)@?0N}DF}2kC$K^rPdiRIAGbKl_hQA^SIy_GAAq<2TPB z`zK1+e+#nzmPg{(?WbYwyRMS<6V~jf!ecc4;Ibd<-2YDh^`24r7vssg{aCGNp7G2i zeuMspS|5oY_5)tA(KB~T{YM!;%Kt+bQ~uqWoIf?sQ}|KtgX`r#>?Cx#x*z%M0WN>A zZ!n85Jjm_3SY_}0mp+e!^1eMk2YzDrZjSvM$Az6MSzP~qMdeTEwdDQ<(LO!=_|9zX zJk`zwe)J2(epOGw4lsYDxAS%U(6_-a#PgTjZ%&f>4>5l9Urv|bPq~}E|7$6^>=gLT zptt{6h094Zr0PxJ|J`Ey;r=7ypU(9x`j6H4frZ?TMg0r?n|vL-$GV`?ezO^WP1b+$ zZo2V(nt$PP!#dwz{}HYTl$1im(O=Wr&+E9IfOaYHFV(^g#@B$uu`VLW;dqWu#m&Pq zN@V_xY5n&Nw0_CHx1v~!^*_OPoTO&u$TKUZ}%s=C{E%R9n-_#5#!0)`iCu(70$@%%Km|K z1+TZkxDfQalINR@Z&kjA{UF~Oj@E?u`KxBd?(!es@2)<8%AZD+6Z?Pd6!^EFsa^#A z594;PJ;ba3(jtW);lP9aY$#Wu-|tp)da)kbF<$5$&-dGO(F<<;sDC@t___H(rpV>- zL#va&{&ThQL)gD@K(&)OT4BS^84v7d57rNGIMQWJe}&)7QF=hSnEXPd!`vD_S90tp zgEh$ccjv=oKbKSa3H$Htk6*3}l?U{{s6YSH^6!eC-td5WOf=WR4GtF_y!Qt=+)%|G z?h-S*zk3qlFEM%lAo{;MdQ$#QTvkyr=Wj3P5iTYJi+F8p{VuS*#0#;!FmJi`-NN^ zxLm?}5_s`K=1uo)drE#k-8@C57xX{5Iki7alK8C)($jwtmot`zzbEHwgu@Iz0!|*6 zK))iw{e6r-AiqHW5aZDK)usKHK>xrW%Aoc`Lux<6{>}98TT_&t4Q>6;Of4Mw^zdh# zPg!2*|A!?i9PJ9|Kghtr>lNI;MCM;3Q|bR_F8}LgQ~UWN>c234(KS8%srEzGTgN!H z{e(Mt->>x`DGTRlxQU5{?q(}d5FYlK653&BSf7v4aTURCVTNnO!`ky(7_4%h7j|I-< zT+Wyr4*iC1R`&xx@B%;d-(_7~j-MZ4|9eUQ_7lncYhIKd{!Fc$K|HUrJ)5k5;Jvp zy!S({B7|#l0YB~=@@1Qe(tfc15cs!J`C~ts#BZmG-$wb#`}2YSO$|TdU$#c!H=3#T z2JCzv#@{}Z?0-;F z|7Oqh@b90i^oDhVzu;zi}Q=Y`4{?!9C+`0?}U2G_NU%|uR-g7 z%r`5FL$Lo|{`e1R_J6{y3P0M7h)19QLOXLM+b7CT6psrBsP|yJ8tH=a74IFmdH(yd z{bN)KJ3+|5?P>pxcq@tD{x9*r&izNo1^in%TyVJx{5@F@2nT-TU*KQ*%klS<{geo; z{eRg6!oRChLjTq!>FGbAXD(+DPi5@W(aL}5KekiZ74(aBT*e|5Z#{mIq49?rH2%wN z|L|Y*9-G%%?STI(@A%0m)OW4D?dP>Tu3~+y%75fn-Tu!uSI?IE zkDcJPpDmPsO9_xJ`j6@X`^6&lht~N^nUQ{@X#Yy2UL{d_sH#JGbY1R; zk9=3vp#~XLf5`pS-&S>K!-+JWME)zx@2fgAlcp!k-n3ux_o@zEM27F|hoR?7iN2xz zszy`fW+Cdyj7$5yk9Htkz|Uy3_eVeZob{pfvKX&xmFqy=^4SCEBJH=%eZHDQlPi-w zN`ENpX@r@Grskae&*A5)2}%1&K6$@M_e+xgRpkBlnraTgze0lC1t|F+_QpL`LjKjdNlrSgqjC+e2(%@e48r1UW#tM8DpU!_;*_4-26 z!+$6Qp}llYG`)*@U+&xWg`_tgr}VBv{$f6??@*wPdSB$z`a;s!CF*+V=klBBiJ7{@seNN93ZK3;P zne;yTFDcalxxjDy^@KWp@@1-GLzqid{*&`mZu#JMDtGzmLK5VSE;?OEiruC18*tcP zdCv!umm$Yb)ndxHMAh$8^4L$DPW|T7#cA~^Jze>21Ertk@;`w0>Kt-`U(ogIs($jx z`CWNLcwSnU@3mj)T4UP(TinE<{%r^!ty7Tmw30?OQ}P)1HW89A?&iZL`K-Nk@mt#OcYYIx&ZPbO zCi$xfTteqWTjhRz*Rkz*^}eu4{zQnZed=Pk2b~j59!%HCe&cl75!{ zFz5((qWg(b9gqwBiC2tye)4_zta_gr`*-<7T}lWd$Yt#PvK7;!2AgvD%-9-DFKFf5d_zSW(IyZJ^ zIuu_(H{V3{#TQf&5cQ?>6}10T?#Yx?I*4qeJJpXnG9AjI^bL_c1i#L7C_IcMpgx!& z8hatxM`e27ZaSBg;(%P>U*3QAO@8vVu$6qFZmQj8eNn+9-$ueG>oeoCx(;1T^;>8> z$@e*(6Fns5q3c1qE@=~8w_B3WZTc_ibW)VOU+k^xP}^d4Uiy7qAt{@xIC+0@tgb^_ zsQi)Vx%=xnltMfQqr3+BUT8c0Wk2~=p!_^pm7m5ouY8@UK_}~@;$4j#dW6pHZk2@f zVIzkcQZv`+PUZjhMh>-=@=^OHO7}~8k3^I5hv~nh_vw1<7xH(oqme@+NFMjm_F_77 z`AczMbN`22;Ptc4m-_?H*ZsTASxn>OTgi5KeW#J9@}WvqwWnRaSFZ1rP_sD_wC_WA zsdVRHf%?SCGlV46C-F&!khC>O>Gu=W_ct33L0)sRAtcH6k5fNPF=!JIQHmp%!@(y% z{oHwO|A%vU{%$BWpe*u#4*%hCmQTte5Aam}hudu7c5${!f9O;9%PpIg@@UNCKv>6N zI-xWL&HZ@z70==DR1A6sAJL|HWw(6rkABTklECF3z4RKDevk`1m3)18Jjhz3o`Zag z7Ad)7LsdU5z(7Ympu){v>i$|BZt*-f{Cpd!1mkeX1^!m$leYQE7i+1?D5PJsU)kil zX-ineI70PVyI^e%NJfLjyt;IOL@TMR9f9vb;bbsNnFRZ7>{Xxc`is3nfZy2)d?*e!F zVSHo*`Nx+B<`;7ZmQ6maGqJAlrr#DGH$!?L{l3BYIaf?bKi$u=;h;+W1Np!Y3_q)) zTfWbE{Bva^uYAElWs?u<;Or*e^h;%*@tah>gxx|ua~|hcp3f<(d>>C3+r}*)%FiB@ z|Kx%63k)usd<(Sn$a3CBO%)E;*AwjL`2hPjmEMpK>n#v&@Ox4*q#O9RCwA-LmhUr8 zzg?qL{)2q+GRhZ+9NKu-uUa_l^RN~U`Er*uQd=%?6IUMp~og?PiARo$A`*M}8>B@)a7f!og5aeaq0O_&#y<55Bh@rcJ27H{Ju^}F3)dad~?cZvd`C(^P|N>{N-DBpUVH3 zN5gv)^CNZC_%Pb7J2d}SDi;Xx-BsTADD6@|0P|d$og*HdBj15vHL#lV{ZQB^%9lQe zyy+Jn>Mvia`O-6ay@RcNKLYzx5e|JX!@4KFANIBGaV}Rm+|UKm&hZ@hz%`l9{zA;p zV|~{41JqvMoAj>}8m8pK2rIbs41~Kg8E1H%Z){RU1MiFO8Rq(zS3BP);AU(gsA^C zAwz^WG!_B6p6aNfUFh5O#a7PznzlZ_8;zfZ8YcG_7$cN?GOgqRF2|i@9x`Ph9jW#Q zAw0x>x-bugaktVov>yMg<_W)A0s0?qn_RCS4$?ReogZx+&2Ug8{XorI@#lV-eptT- z`}_~BUyjkZ3H(=ykxD+42jK8urBd1Dr(avY2D?qyf7QqRIN$L+9`Y0XTA5^{VIMn1 zxq|z%CqH$LlrO^bTad5A3>x3uP21%a{1B8m|LDzNx|U zcBl`LE*M9R?Iu5e4 z{Y&T~jiJqlIrA^MH2y@_Bw>C5U?%mse(<&l3Tc^HS4eDS}$ z@=5=1u^Y*MN7GXsdaE_b^EKh=c&bAtjjx&GDE@}0I#dv(^R_e|Mdy;<|Baq6qVd3s zPj#rdYzENySfm@>Pt=3(J4drqNmr+e-#XF!N(&lKYfR4*RpR*@v(u?U5)Q}({>r>B z4*AJ9sk@TTdc4SaG?jez-=_*mkdFqr=>D1l@>rr$zJuh@??pEI(uLq#;68@q?f z^HG%@8cofXSX0Ws*H(5&`tvhsJ~Vb^WrrU9mD0N|*;`&^hbHj-MyRro^w3!}o=E9! z-cZ@0kM5-Bv&moY*vbxFaki4k$fx^>a6m5b(;{sK_{n$oaZ0|}5|w@%$sXPL5958t zXLV?Nw~m0n$Iz}iLegY8{%evw(ltpK4-`Ad7bnp^IebXhBlKTVFTyXn(tO6}bsXB8 zMe);lgw7@HtF6w1JL^z>t&_;FHvN}`19E}azBbR-zjH~6dIIBFvYvCx2mg!K&SpXq z{4d61&8U27Cg5+;p#PHU$l)sT*OAky|L-i=X88n|{?VW3KpmxTHu@ENtYh)_QS>Axh@ z4CT{zjZ~7e=91$LGiZxR6G%A+}F`vUj9A3=#gX#T; zk+*;UpzJ?{tA?Fh(0?CUo$Ta1^6$^`g$mM>FU;$rOl^I6C;02+aFm1>9b|oQIP5B4 z3rBwg{eQea0Ku5&G0$P%boHK9?({3<^cyJahxQdkDf@3U$N9@w`k8tW(l5+@ey~rI zqYKH>!rq(5RdME(BKQY|Gp51>;C&jak!za3k-8O*mnG3p7G;?rBXiQ zWOXOx`-tR=)S^P2_gBVJ$R~EF7r{OupUHkC5FO;hdSjC>= zXndh_e=X-%h|V02`JrqMzx_u}8Get+;jePP9^VH*zTnGZ6#qeZR`a;WKW`Dscltca zf6J2o86!8PCm+`J0x#lC<)87sYn2?h-{1#o^SFV1fznfZ4&SobD|ap;U~V#po|dm# zJj9)Tm_ORyg2tCtCFQe<(vz%F$@s3*rc z%$pc5hu7lw{LOZbdc)xGF#E|cO>esLWs$>wAa|=PDsFbm_XpPx!+xY2-TogZ`O63Y zkC4yedJf}4h_?%mzat#!)MKMJJp%kdo>pH%?)B`)AL$)L1k53y$>)8Kn^Hl_SNfNV zr#h$K+!>Vro~89RTz(oi`^#r&Z?h`aV-ERFoOO@m9|Y~|Aj_9U<0GLLlk&yV zlrPNf6#HUt{Q$oekOTG><$cQtM>-WvRC={;@#eDub5%IL_n^xcX8E$1zni!FBAI?+ zPCwM|rM;;Al7GB-?h5rjdy0ShJ;x1Yq#yRPTT@lLpQA~P+lOW=`$YT$cwGqcCFGun zbv-Arz-`b3Xe34tylW#D8M@9d> zF672OB*Z_J(?geU5{Kh{$anqYoPONjXbQoY!#<&>(1H&uyUS1PA6wXg+Gl|i67pHM zrYGM(PH*wGYNsH2$S3}z^bYy3uN(3u^w0fB%$o-JMVP0tURHS8BLe2R%uVL`2bxTG z%XbRrzwr6gf6piXz$?SfogvF#zCga}=g;K#EoAvZYg9eQ!9wpRKtA1%kiieEz&t(M zC*;e6+}uyr<;&sc5q{R3i_de*cLK{dbvoH+pX0@P#%tc@FW-7C|9ymYfV`g%@}0(Z zi*h83FVw<3uQpEvzwG$_hQas44pP;BNI%Fq^Nxc9rF_NzD7(&O`AXMT5cY_Q3ID3b z?f&w?zbeviYPMSE068FEZL}M;`eAH0@BNVDu2$Y~q+du2HxU7Iq+2$h54rrOJyO0H z%Lo6@v6!qMlKwNr9scskacy}(KKM=2<+<^|;}@jrz;n4%73W`H4yggwrs- z=P>yU@~z4k>-67I|Lx-T+1#Jx_*+uGSeo*g6IA>tFA#armEQ0yzK}}pR^O}pWBk2u zgYS=zSK%Sx#w|C-tX_Mj7C`>Z&h(r-m=;6tHD?EZ&&Go@1`L=zTt8T;Yg1hZr31ulqVLN!{Bq+#|vlwlkem| zPCv9?ikeZm-z%AZ*7Wq`)9nq>SLAd;zYyt{=x=bpusT1Gi}gM{PF91%8!lu!=lg3R z0_M;U(tGyM(kfEEAb%fjKj**J2PpsbPRbXWk)C`PvK<<%4@9r~5jOb3FPhw#Nl5Gy zW;xJK(ft>r96>xtXYi+HEp8^|D`xq!**-tWq4h7FlJ;rxJQBvO!S(Xg-(1MozYW?QPy72We%37?)`!UNH^*H5bH$zioqVActar{&7;o3*L%Kpf`EBSp5$0Rux1R$Y zjxHbGv*PO;E_2I=?;F-zK>gbp$^9KMmJfCbF4IpQGZhmXIsaq7GY1P@K5iC>2>WeD zdn=0{xZ^d}2ah8ecoFN#Vm&oNICG>M_?y;Oj{oKmug}8z&z6NWe)dYzf2Vy{dg+%+ zz6>6>)W6>tLVc}$*A(;l#SQ3tx&xbtnQdslP*Z4y)=l503C5?ePw?({E}SRR&pa;d z-0>ynzrV>psd;BI{UUe!m!Eq2>HBGb0_BTYr26AXr^rfgI>D~KClj6SdD` zM&*Qm)6i^x`63n7iy)sq&VqQc&KTolkYmDNg*Vnmjb|X8`p!||s5cCLk#UU*w~dKT z2;@LKIs6CVZT1fN+Fic<&hiDDQ2u+J_9OE6pn0#qe5N)&*pNDq`FkPrTL z(H_s{2QJ4rHTS2293JBNI^1s}0_M5Q5#Hj2Y5Syn0ZzX@VM1 zn*Wmr(l1r}Y#7gDLT<>XkBb`4+vu~FTpqzcD&*7qCrB@TEU^y}db;YD%dU~~Vg2;S$x5Gf$fd+CFIuq#lmhQ&#C*Z7OH(@ zAOhxi9>MXa#b`PI9^v#u`#R@ZO23aPCH(Wo(v)xBTou3WpZ8%N*F*anC4E<(Z$>y) zLQLU&iFy?J!2JkEI|1_K@gJn?+U6@CaOb~PY@ffKO64czKkOf~@ApqX_`jXW@14#0 zFLIxE{Iea#eR-S(ct60r1dj(p|A#OxbA_r0vibeN5>9XSuWNER816GTV0!y&TS)m# z_AiU?!(`I>9?RvQHS&PJeDE&|`Skr^i1#V%zawDGD$?6~YV{KMR|9-VCPQTEs$<7UHn^XF^$Ve0l4X{lqTt=D($r*{-zodyf4w>go5S7LN3TA10J91_Wac`4If+;`I?q zzY^Fd%FnB6()j1YN&7VZCq4Pzhrd@&55)7wE+wC-wa?ma^@c<52etP=zM<@o5AQJ$ z0rQ}C-f2eU7AYV6pF_T-R6ke?lk$mq>B)zBE2jB>94N0p`C z_vq=B!}6KTyUdv6tj~(GeFnIG7)|MCK9ZC#mZp3Gp3g&l#?gpFlNc9|r*N}X)Z%i| zHdKDf;s6*iKZhY^b{|tT}eBTK-E|KL6_OE=*?UzNA|E$GH`RtPP(y#sy zg$wzEqZ9D+h;Y>J`u;P>r~BK5e7e6~q&MQx)AJWAtDCgXnC4%!8GRp6d_v#X;Pz}} zetPnuKC?CdsN+yyYx(akjB{$`C;C%pM?((yO*LLp>4$WJe9!~V=Nxz8)v|piDuw4ueQ!xSms)GHxaL(N&mF5H0Aq$oqo^{C!+|} zT{2V3r~4;bLF)@lN$(5?Y4$cJ$B z-)m_73Z#qf4;T3r@zlc~=38!$0?%m1*&erQpyfTv17;6-%$d>7KG z&H`__1GzDO3%|IK?_LncDjeqXUSLqQNqUtTA-|O73 z30~Zh-^~u~$w?nEP&*ryn=k-fymzthf#1ZR1 zXRZ1B6Q};;{oz>Oa~7?i5ACUx^nbj>Uq1Lhp2_iSxRvvh)_&2~y&|0^Vf`-OZ}5Av zG4G;{Ukh!V*yQ`cpa@&{t!N2@{=aPJ-G(OM%kz*_$%4u-vA6fp-;|NlX zU#F7qFxMOUIN682)&9ENn;VHpwMLHrI-C442BtI;!BZL~<~xIv8ws1P<1qLS_>f;} zI`eDP?=L6OE@`>cU^b8Z)BIZu&2oflUB zI9%?*lZVak5i?XiLwdi&;}+sZ6^?YGO}#C~6&8#iT4>yCbi3jD{Ly1CDi}U&_}IeH z`D4ZziAxua$sgyOjvhPGXk2vtm<|IP50zo9@(T+K1~hKm(da(5uwbI=3D;}nYg@bD z%Wt?ge?ori@r9$uv>tlH*rDSK3Mk&z7u^t^cL+ly zZ(P=8oC@NZJJfsZ^St|y25|aWhgErDGKw6G=kt11lkwd*lk+jBYc~#e?;8)%UUT=p z@z@o#cbwk~USQSlA^j7lr34aS3hU}%h*H$nZi;6avif>$qhEnz+Kd~goG$JF?|W?j#B%ZKr$zzejuiVn;_ z1fMROeDHr}{YT|r$k&7C^&&SaIRcC)#O1zNs_sX=dh?)?!|I^qGx+|g&#Q2}2l@!| zb?{MtHo8m7hw;Imczh}Rgld6d{3WogZ1P=+d7-bp@?E2aLq2_+9`fnq^pH;EUW-(Bre*`>=YyV@#Qbg@;K6hc_;8^!8sr_?$XiZI=i zun~$*R*94Qa^LO?AxUNFw&&GRGDU1skzu>!J zl&>7~jciwnA)nRP^w_A+O?7H7@||q8GV;yE`qLXf%Kecq=hknl?hjAD?@*5i*E4w! z4EfBToL}Skl=3}}@dC%|l&?PLM^OK8d{BmUh;(2cjq>yR7CqWNtNSm}!2LGs<^GA7 z+-=PJZBh>y`B-mK=lxO!o&UZ2d&-8PUP1lI`11aq)P@q35#qg5G5KF16k$3-Uo+yK z-M#%!w(p;t&%I$W`ClQ#`i1$l&Qa4+TD}9_dXOl7JW&%jDb9hA+P?;V<~@2 zC&DEXr~$m!^u@y|2Wu)u$Kx{R8_q8s(;bXRp`0hRMJ2a`S0=y6H!z>=)j-ZkB2Rn?`rOFLm+wn{GQ*Yqy%OLT3nH04v2oBDSfw}!s2Fi_67rnbu*)oW&) ztIt_`<)^OR6eN#OZd0gHj z5K48C7>a%7#9dw5w3qC6yio3U>MHLG2;II->`P^QexST(AoLCHQ>)lh-XqX7$VeFL zB;g6YcUL}%{d~$z{n{ta550fv{CVcPbj0L;y-(IFzdU`YQd8x={qN;IA|ZWWRcf}# z|E=6tBs5DLYqQmOHK%71NLuw|(y zApcNFZ~fkr^{dDyG!f?HFA_f?-Z$dZDOQ?z-$83*ZW6l-+uFc zMdlMJ&o4B{?SFjAlmmlu?){2NsfQX!U?m8!6yt0s@IGw3sXs=4KTqV5`_ZUw*h%vL zpqzQaV6oBp18VNU#y)aaL#3&wOr&Y|u{&jsS?In}<36*vq0*F3QEuuZcYa;pzxx~c z^rGC~it$(a>2Ue={=xrE`Kw-$I#npI{LAFdNujL#uS%UGMEPU#t)_e`1`FyB zDCY@p|E4?UpMHu9zOTqE(_5yWpMJ*3&v_^6O45COmBXA)okn zz;r>dQ86d!kV!Xjt!FyMVU=h4`r7ifudsi&*Ke*QT@9b{Il{(vN z^~RA1cOS#gC%-hQt|FdyZA<;C(?5av)h{rA)mDl8gX(4HSJTgh%dh8GwMw|ZA~)tG zczzRX)rcuYIS; zKd<5!lRr7Xte+)uPOP21Um%V1{LJ^%c|Sw~{$-vv{&3!j!F@Bw&u2Z_?g>9%x)rV( zce~*S%gZ$GqYLbFxtjaS!6%LkpL!GlQ}5m7yaT=Ezt3f6|Lxs#B`tSuq%uj9uhOaT z^v}eMhY19*2J_Xb^)v?Q>SK8?&vnyXa{+AQC@;h-g7}r(VB}Ai8TYc?*;Q@1Z*`2B z*S5h=^f&ReM;Z6Qbp!;bV)#=A{gcV#R=M*3YQj4n_1}FrOaAwq-%q~~E@1nW`E|17tkqFrP?YQa7C?^}N{>CJpG`a2V@Gy7lHe{@g(=Cmj~)LZ^}ez%33 zk4(4E-Cv(xYUF47P}lP7URoUS%XfbFrmulZV4vD{q#Mso5|=2}2`rTFTrZ-Ro!?Z-kc?~`+X{-=wiV)34TeR;>yKi~P#eCJ$; z-49$a56*N6o`3B`0RsE1I)fiPA6-oM0iEejeZR&FW_Z(o3)+AEK4z>=?)-N8l^v7+ zVwC^HSN{4xnEzRB6BsYpqfL2Xx@^aL8w&eenEt<_Uzj@1xVIo*>RW?jVuazdzYq{V zyH8;VEPlE;?cQ&~@_!V{f7>6V{`D) z{CtNbHW}kgd~i1Q^RWG=JP)ixehKXR*o=Mu_7LO0&42?s)15dk>+tg}I{mqR$@`;< z(?zC#&fvRVXW~sh<>xw?y4%E?@e1xYXZmNy7pO-p z1ke!mCD#Xu7sIDce`tREj&EKT`RDQd754uY>+?sq=GHgUukD!pKi`7%LHrm_27Cv6 z)}Qa7KSO>!e2`{82kj`^zpucz;SX`FJJ*CuK5=CD)QJmmNWVVgF`fQAzr*{rVxLO? zFX54Y`Hsn7$Z=TaFAUPv)90G_@w^!0&Gk?l?iufV>!Eeg&*eI4a6Qz?n0#dULeCi@ zxxeneeFm)>s?(qOpXq;{oPSXZJ@UW4WAd|oP6g6GdmbW?Zf|0pg6=7Q1pR38nO=PZ zd<*h$+(q|H=YY7`cLj+3-T#H_c_F7n0^lB&z@5Z+;_a9%=kn3DIde9PXB3M(s)}$?=MOR_75+W{n3tR ze{}kdaQV5vHUSU0|I`Vj|G}?9PVg~oQNex1>=$z%H1j#@3+^{ofqXRkLgPRA!G1pF zEyEw`^FHWRqRT(qzg}qn9BKa&-5O-~H>OvH%g_Cdlt17711E4lCf3854s$qO#Cc!l z+rxNI1ovGb-d|%}%=|J0{M5scALqrQ;0Lu*Fql6^-B&urD?ju9L9%|4db4&;{x^3_ z{+gcuQ;k8YUT|5+6-zuy0;Rl@yM>PC!bVn-VHV5_AV z7dfaGn9iL)Lb{><%XEo8Zuso~Fx@yW#BqU*09M~@+*??$Wd3IO)MNO={BiAsk}tgS z$07e$B7f?0*@MUZudDuN@(-Q^IZ)3c=oHw;-SQG>bSE^ zJp1*rF7U);#N^4A1WyUFarW`83#vot-v3>pd*>0F{OS?9&wp3wK6!*Dzj}o3``;D1 zZyuq^uO6ZM{da}#mq%#wwa~6A2r zuQYM}IWGS-t&oN&ChtW$v+BFl{U})vl=n2$Y#E6OohW8&lI(A|M%)YO_l)#=4`*ZX(8@@L-{TVyFqi1Jt5ZYfP#o`k&TXD_u}dPFyv zvi=@>#&T)!C}Yk%VJS_CYmAxk>^#W)%e)}=LZcRmS$}`8d@uClaYp{Cl%+JK#~SUNGqL%$E$K->!* zay2C~`X7BiukYgMmN5C%XU5;eH;{jVU;a&cf?U$W8rIRJ5B4%R&jS!m4h#@^Ydy}WDGUTw#I z7QQX5aQoX@Ux-fA{-;{UuEP)p9;kt3*SS|MfbpH~stVC;Mk* z|A8~DgG)p8{t~U8@8HsMF>Cpw7jaWBOB&v~+m(!}~N^K=uXiHiMQ>OXY9 z(X8KL{N5D(_g!WGV!CC6?E6cJk4*o)9z3ExS8&l|?wR1{dw=Ohj9-HHs|M$_i{Q_} z35;J(H1p9G_?)NVx=soBe6J~UMQe#nYgH+Ds-DumTq*UDn5hc!hkCbX>t3qIFTwYf zdny^f%5Kj}oM%X^HS!~ui>*=xU*D*J7@DlZ0*h}v8_cm zKV-x{A@)v8Jk{lY&CbgDM0g^P^}W=eVs^yL^pAYJvr7KdBA5Oj?W`i7?yQ!H`*eNT zA1LO8n5lGJwW5CNHwR4@`TKJIg7bI!{mE22afNwu?o+qEGUXvQ-qeeQsz^m^)vBe} zvGlGX;>!0a(`$;Aruvd$bpDR4EjA=({hnm%qhgn`?^B97D#Z6G9dWOT?^C8Wh2~UWMa#Qc#uz0@6|C{|w?>r*)Tix9HO(Gqh{#tJBmqf=^ zO#j$%#y!~b7P3a_N&I(}`)7q#>`#|QU)hj3%$S|^e)}1xi@oHJ zXuEDMr8fBOH%t8-rXpZ6zIPpR&2`@MWot2inOS5?INx8Z_{7K~FuRKSvz(U*>{lxd z@HIwSwFu0=GQZU4z7)*YvmTg0_uzAXPo~n;58NkbxxUMl-n_RXFi!w$<={^o`a2C) zHuB0p3-w?85)<{%Ad$1za261>*v_DqWt8`Gr&H@eVg1T`9YhV9`ee+2J#QSA|U_9|E~P% z*6{SV4m5o3@1*?X4-UxBewC3n&oZG*j_{zv%2WV2)`&V>N zu?+kO_9L+$L-3D7|Bmar44?O3qNKjPryOg}8P z_jK1^%6r<47}qW``#UJ_p}3FKzTEJcP8VapR^riVu0NLhtJKSH7=IM{-6i0^ig4{B z<30jDwITRJ`IlZ)ev&u;^L??;N=^Tt`;M0S{e0vD%6~lM zad6+Vh4`P0a}xBQ@>k$|gEPwPV+qPnx#@n*pv|9n<>&jbB`4N*L(0nkO}PBQ`$-W! z6^u9KU&MWRSeIn_Ux0l{+{fA+9__sq=?wQRz`x{fn?9z**~`Nv^D9QiHrK|hoW z@-6V6=RRKe(-ZvFGk^>73)8iT`=@}{K)9zC!=Ezfdv>||2ygn2M)`k4(%%`Ldq1fn z6D~i;``nkza6Y~S>4Satl>glTpXt99>;8N%g6SE2uYvh_8RVpU8v%2FANO}qPR5J* zp8C25Ywy+dKliWk{kBKteXNw+zsdV865kp5O|4++eC;Rix0s0lvUvPp+9ifdzP%Og zH7sVK+^cs?JxM&?JH_C~{R_n7FQ*#5)yl-jf0+j`@rO9J z`{3L9T7J%dZN~h^zH&cAtV`~GfyDR!S^4*coGNfH8{gmMd>kdC{LYth&wvo+x8#3R zh^jOo|8rYkuj9&(`y;;Q{Etrmv?u*H|7YcY$wB$X{3Fw!_Y!bkl9EyW$d(d0N1cYvz)kzfIMX`M)!pxl}kpzL)+&K#m$*>xyVo`4 zVfaKpG2f*7nf6DYWAWlMv&4i~`0g%BQ)G8zj>~^d?tKQ$WqtIWU0izmV3Ds_=7Ysf zQ?kOy8+lK@6*}flW3G_@n%YZ4sNHAezospJ6MT=#^%qak?-qIF-6VK;%_B}W{>4`B zqBIpuFy@r}*OX5Y7wU}$-u`_UJ`HsK5S6~k%ZNY;C9?C8?Wp~h@I zD(i_tv92cn#O{~>LWQ48T`Tz~{X|EXGGcFCQ&%}+r)iqxH|?Jz-)bt-`Az1>t%t=w zAtlrHuD$$sgi>v!eiQs74|H^i=Rm4%?x-|PmHB7A-WIRy=+eMLMHo5!n7qEDORjJs zKg5OlCx6*;Qy4x~btOGSrE8mdU%!*$#YeUQxXS9jhtjl7%0o@2ov?p4?NbAMM_qL>j7so>`yatpN1-3Wce{&Vk$vwhutUNZ3!Yu!NE zpBsMc9|j-h80z*-O6j6T+}Te{+-vG}1gG}JzI6KyQ(mRHa@BqTK5^sz5NovT-w@({ zkoXu`iyhlqasP)S|J50}{U46}&j@kHa34F#L5`my6Xh`HJ{#n2!AUi&^I%q=B*4$7MPWhxqsEsn^WxJL`RCGeWPWV#`dNHZzw8)3T``};bGeMiY{nDgS-q!1 zt9F>@;eKu6_BiJeW|(;n%XKaFG}cAwz6AVh0{O}Y|M~!b2>AIl&a*1hJgMOwUjE68 zPZ{#h{4Rpe+=j~H`M+Po@zMQit(bq}ST|<;jjjChd49= zJhwl^t`nYrG(K7}{{;728C$uE3iUwjP*YAR*J0qN_ci6k#s|TEP89qXZa28G9L2!j zfOP@x|1!BrsS|O2O^r4A&`5!gLNvyU`tE((Un%(fX8%r`M+Kh_1=;s)V|9(sOn2(~ zeOu{8{&xRPxxs-^m_JPZ$^PTQcRRb}j{n6R6|*KK<1xM8(UJd}?4zWAEc<^m@?VqQ z->0Ht|DM@Tc7ee=y%013#a}aHt>KbM2nGd|7zEjpx_4=<(^zx%uxz z{cwErxJ)bJvk~nS&m9_DxvFojKc1{lg6kg4*ZI~-cs`czPZlA7HkeoDJDL{wJRhv^ zzGev{lt(WG--14F@Ox)#e7HXL4(10JR|r0HbNHkh>=-^lxfqS@dG?E)#(Q~C4;SKt z-4_`=xz0!&3elfr{-GR~VV#0};=uj}`OFuLS5W7A1^Hi{+||pkSNojMrnDdaO>4Gi!xouXQxJypPy`K>qH zlh1a#UBEr@r~E-Zn19xOv+M?M{^9*7uWXk3%=`XhqaDjX!ScfJgZYYb4QKoHy=nIu z|B=XVyhoh*XFmIx_xk(Q&!WG?e8T**bAbQv@(=C#{nP(Aqo>9viuHHyzdUM-%x~P4 zD_>UQ9m9wFu_zbuVf${EnEICZ1aTuie{?@4*RL%E%>9^LkD}a+S5W77jK?EqZ0xA< zNdX_;FLQ`KUw&^6AG^tp;gfH@midJ1%*1CS?h#>slJN@G=UlHH%=br7zF1$hPNV(@ zpZTo<_inM=wF?3gFw;M>OU`@rn6UaMb&u3Pp7*U{O~diw`TI(E$n*ECPZ-XIzxwMX z)<1X6Hhi{stbdM0|C#;}&xzL<_YQE-$7r-FImgeJ>1cL zKYYsDl7Hr90_)pf-6Hd2AJ@&k-{v&iF?@nJFdX8*`8~=T#DV!Ih(il_6vSa?@Pjxo zAMiabh4lS*`6rEptAc)Go2QP}<%|8pC6~`|Lwr!COVafVvhVvOb_&Ob@B1+S4CX$L z<;Fen;k>K0!qlrJ2%qoxIDO1~(Gu`^4-Vh)NrHbl`Z?rRg3tF%h<^(F-B2DmK9wse z{-v4;d+PP?ZC>ofXBzPNprwpY*UA0FeE+EMe})g|nK}Plf_P-mpJDt4_#r-o?%?&;* z7u56ZpRzGtw0|)3c65K*Nk)#?Br`r^d0P81QxId=^{A9nl`!5B5 zSf2#@9h4uRWi`6bhTrImdo@11ABXS1tP8wvlWFn$@X7X55KrRs$S{Kg+kfIi9N2$h z{BFYj8rI(yB;h?=-KJ3R*=l+uf{NwsXx|;T%?1_CTs<*#?_{+%#cV}cPB{C?dGiapyEJxy^tb!U zdGqtTyHp?XjQmIy(%XCVD$SIHUnTaM4xc6F1Esy(t&K}+z4%vLS0%c)acP}i zSP=U}7cmR%yUo~VdbUxT*2{hc_xlq0UWoH&srGG@rY*9d>D}+rX^DgvqKFIi(@xAR z55p&Yo54GFqbXN<9@UG_+LSyok`aWgBc=Z>?{nC-ySX&r zuf}~^%$g2cAd!>(LFua9T&gSh=<|!#8}c52P~vlAAANH-rD>|zYx!&mOB45N*!9FL zG&LdN%lxDL)^08>*3tH?zuzbK#cQ)&U)&3M=cC0YtB4Er<4<|}-Y|Tg-v#*WXY!A} z$I*+=0#?wU_fSgcZJH5M8s_-A9!k?N+gMaA>!CCi?4FI1`{xVoxktJChdlDFl>HuF z^$jOjz#NT&U%07<(o`kU(kk&q50~m;0OyFErWr6-eJO5*sAS5^RTa>GS}`&0?H|rW z|8T-Q*@hzLr>lCzUH9p>CLa-3>Q(YCidI!dQ`z=wvVZ=W{X=Js8NZjo{Xek&qHtes zIrw9FFD}MeCiL9>@@%I~Z(k|)&toNKoaMluVE@p8+_TW%;<%W2B=H^fZ=2t@*o)6A zXy1crM&G`WEqAXxiH(_}{fR;i`iSZp*+wrZ?hqpy8*%PZ@Dk5_-K) z(zkl?nSuM&9r?gsEaOwY|J-4k>jQD2&h=&D!*axN7J|*@f98imSR8}-LkH{ECE(lG zpFli$o+!8;&2u@ya-^rvwOU(c@TWfs@K=$K^^PUrmz&R240`{l&7SvxT&3Xi9^2RxCZ197 z<5<6@KQZtJbKMZ@J|n;{gU;`d-u6;sFFqrIPckig>)JHP;^Scd0P_v?VE&nf{RXKQ z{N?Kj*0+cczkd|(gmc}B`6`$nh}$a|k5OLYbNXHWd}2e+f+xX8e1?FZeMbi4G~yA1 zJ@r-n4jS#nryTf1K9;^=K_fL4>6qwb(uHzSpQ;y6MO7J1Ejic3hwHgut6;w3_nR?~ zL3xYt!G4(MNykikXMun6WyXKde?^_TbwzKM3fBp&H%Ss&L*w0{nW$IPRdo1Tc zE-?KB8}V+5{6IXD;CEk+bV2@n2>i-G`Fa@q>lXUmKLUPPK(BbA{~9 z>Yv1}4RY@v>=urX9(QO(d=9_X_+uBEcGK9(Rl>I!KHHrFSj>39@SU&x`6L>+7d`^_ zcAvQWkN%f}KN|j!Z-YN#0mA*s#Gm=%Qrs8oOfmT?3ik|$`fG!x_0aglaKryM9KXx> z%Q-Z6zDRZ1F??>n#>AiLi(pmZ`6iy^qq$H&V*QkSbl+4z%mD{hShb) z@VT1nae?AnyVel)NjtU36l7x~kr1^CA=@bh;De*@Bs z;S$d>`Um~Kci#U-=N}9EqkcjDY5%=A7@EsJcDEhF=OFYCttI=E|M`9%g9}YvQbN^TZ{`N%vNfi3=DM3A~9y0lv`6P<=NcA-QLiodd z8f*udzF%^_^=wmbSa6@>d^hSn%C})}ae#4d;)7yUu7{#9XT&_zbFL-+VR3ffALDn< zyXQ_18^2$Br3u(xjQOz%vPVT&jK4ZpY7hx0*`&Qo6|#@s*;~v%w{yvo^Vq4wW&WbB z+*K!ZX~OuIX(0F6X_EWzyy~w%OM4KP^CSgwpPkSN=X-6HniMb>ZuHyVqa!Bgt*B;R zDE}mW6{@`<$Jj(9E}E)z!Ibk6j>JXN`Z=)QN$iF4DdI-``Hoi}8HS&_+sK!=$+S~C zA9?X>ZA%Cezs$^Hm(rt5h>7Rq{YIg#f`_Y~FP8iAiq-QlS1pjcuY^9RFxGZuvD^K6$H{g*L!_Vx{;mG)$j=_o%FSG#n>!n{RR+^G9r|y-o zg!Vtmd~dx{tTa6(fav+9iffBq@_6n0OWdfxHuWzrhT+$9i;Pd|OD#Ot zo#~^=)2F%+r z-%3}9wDZR&D(Ru)V>Oj^3ZY+*r%R*PZ4dWir-U+C5UE;QOKHldh#U3AzZ|oF7=CZx zD&aS*tr9<)dQGo`c=78j^+sYJ*)OU^^SIzDUlz+*Lk~}OG_~y7m zz)PQh)b@!tC2S#`-}Ltt?{#x&gp_wTem_Y3gz_okM*aR5hlk$prtdekukxJ#z&)o- z8S1?EREw__=jZHk{`P_AT?!kvR+_T+p)PEtDuj6cB`J0;4V3YftRJWwTe-yZFo^=W z-&BbAp=NGqr8Mz8jJi|Y3-LUR4F8p;KYAakkt+8a!C&eP?ePbC&&Tt8@X{B75c&0jz(c5jX0~?s&0048Qcde*7|# znu(vC2S4(w8^75jt)5}{efYi~zsTM-6F(;pe&km-e(#>}`g>vc)&IbcU%YqC#4nWx zKk};^zx}`1wlEC8y#n|p`_xSQRArv}5B%!J@1eaGpBjeW{OA1nFVnYX;%Dc0dMPv-99bes$xw{?=>0 z3&Zb%JN)H0GO%Xi=j6eU{OZQ9XzvGh3Bzycb$Ol$gghv-XDI|17Y~h7~*d~l7ng{ ze(LEw^&j}vjo&3JZ|)z4-(|Z0rxp8ugKH*!b{_o5uWtM&B@~a!aMHj!YIV}H0-@^_Pu73=vnfR$^ z^3;FeS2unO7RrL-u5GMM9sv{$%7yH z)s5e$(;uG_hF|A4Ser)qjSsDv_@(mTM}BqV_eiq|M~C4zRoV}4{!1QNGx1Z;=BfX{ zuWtNCKlj&T!tg5%_WzEmnfTdx@FTyv@k^dI^~Es!P7B}{iPlW~oILoEU)}hWI( zF#PTb;1@rpX5yF1gCF_Tjo*1aPwf$gU$d8F|D&h>oIJK>;-{X=Q~!Zq-S`cN9~ioR zxnB0?dfSi8aWxY^I}d*3S2uo{$1iv}EdL$xwjaO92{jWxCl7w)S2up|FC4Zl48JA8 z^^X&4CVr_r_>o`T_;vhwgztSk?*F@Oqd)&8PpX;tsps?5f8bX)e#czDEp+{;YQ7)8 zOj*su&(4D%`PGfz757_Tg_Yk%@A>hIoKiFKbMoLves$xwe%ZylhT->eVE;z^)S8K3 zDi40-S2upM?r-#S7=Cr+{x~%~w|^r!tY+e;QhDk>@T(iYZ`QsL+W+e<{byhQZ+Okb z&(4D%`PGfzVMD|B|4j|{|4y%&_&Is-Bfq-wtKH(X1H#I0RdDsKg zhqp}(!>>%rukEe>M$}CF)C+m)Kk%y?zxq9Y3f+J3jr9K<4}O`EH4{HO4}RoVH-4vl zd0o@6{I@kwej}r6CVoyH{K&6v{1PKajt|4{H0eL5Jozs^re@-o%7Y*I)s5d*6?c3T zhTlTH|KL1N|8H!~#817Lr~U)Ky77BxeV4bx@arS_&-UP#IiqIcXXn9>{OZQ9VD{2^ zVfdxX{r%_2xSENdlLtTYs~f-KOByu~!*5|={XBkV&BQO22S4(w8^4>cxq5CGezj&w z|HV^&ljCb9e(I$>^&j}vjbHCpSC)j~cZ$5f;~W1@sG0cLdGI5@y79Za?CO4D_?_I& zzkee#v1a1uc+3{A@f><;djFjfBuV4s+stu^592)b>lbv&96QQ!*5%l{Y}Pe zCVpyZp85~`YR7NodrybqH($c8`IZ4Z9Qvuh@P z>g7E3ANbXcU(?fPz7U3AO3rUN9{e)r)J**BJou4c-T1|~UH)bmej5Vomyu~T6F(;p ze&km-es7*NA@u&C_}S9_dh%ap{x{IPXm_%(jYpa0?))=d0TdGI5@y77CXxY?XA{CWlOOI}nn@l&tnssF&QZv37b zP#n5{=r6(fKc{BmXXn9>{OZQ9ta;^KVfn9coWJ}=E~%OLIeG9Szq;{zZTu~v_vfSo z_eaDpt(o|x^594Q|2BT5rdOh=bpr zPgn_md4Ftmy-yf?XU{^oYjKZztfjfPmiL&xh<6pp=e?zTmoK_W-sKa@zRM^79ieyegu)!}`ZQ{@Ot%ra=MD9hmhtyHl?ecEePu*3U ztszfvHTFht4J-^N%xyN{+n7j7KzT1{c^iY~-2VR_zY%SZ z((gaFNeA$o(OKrNN^|%*Gyfd;C9cea-~IBA-Zvin#9SrjEPfA){Xh?X5A;yU0skJq zOAjA5+pYibz6;B5<|MiIynhbA)Kz~D{G6-u;P*Fq7jT0IKQYI}oW<{M!RlZSeoG|3 z4*o5E1t`$e&%f%QcZS{H{+a2PDr*l@A7@ThYA5-Y^;U&`9!TCNtr*_IrCw5xr1bla z<65{>DrRk8Ro=p-qw0xS?oYSIv~X!iSKPNgTI_|+*;C%T+P$tyjcwslRO}sbUolGj z7rIF7)7|BL2Kipo{c^!}THfc(oYBIi53Vxd6`tNg-lS`xMl}}yc9ZuyB|e(?{%7*c z7E03!vA2(w_aR2MaB10I5`TG*AuVBPS|w&B_vc3>ZknjF^#T~HKYa0Ho&Wg0$6T}@ zClyKgJt+5npgr5jadx!2Ol09&t}O-Isv>Gv2vM*i&6j1pG?8tCRZN_)`l0Q+VIm!Fy{q_|*746OLcu8sjtZYsLG}(LOTVrvvXrp?9us{m_KV zcXVXN!c}d)GkjY=G%t#H^W8Y-0mCQWN4y!1_ghQ+e9QGsskh4f;S%rQdvd$OJvHVV zns0r1@tOv;YRyZwin}bnPZXE_i#oA(?)|T8!|~($U&QacRsMJ}oGa3PKJiN-p9S$7 z9e5{>FD=CJE+O6PzLQpS1AJXwXm#jFf4J;-Ey4Rl^oRXfd#2w#)6Mv%R5|`oPd)ow z3vc}vRo*P1nmZ=hdT zb%6=j8E49!g?IUVj6IkKd!sye+$rKF#l z+Ow{zy0@*eCl#p<1yX;?dmmMc+p5^9MasFsm}86Ds`$x8YUydl9J!;dN{acJ0miJv zeZ?t7>NttM{yvpxtI{VGslBf<=8A=FRjRB=W!4#U=JvKqiTxE~AFC(*;(OYv$oL|) zS=twSFL_`4ZZVH2%Jz#3#lB)xkvc{mah1QB{U-!Tm3Aui(Cf0zjvk;VxHaR(Z?sO5ms8$F`RhsAcmYH{Qu+Jw#o< zi=?qEgZ~`=CeHG|pVABE+8$%%CQh61J}v7Z3;uZD-%bVI-%bSH-;USrro8WOD{=3A zPdgTPPdinwoBCJpXUG1<``J;%kNUn#mw)TUuMg_KMW@tKiQ5`x@l!X2=Rb{~RvV0_ z)?RJ!PG4l|53topyiaWHZu}vBr{9Kr@QrcLblv~zxcL?F%)2i8>~}Hvqo| zM@ap4SAkk`l?lhbIUK(w@~)It#IG^mtwVcYY?V67f!u+1Vk-Ju=~iakVBv%71MlKd z?h{V+`%?<{kMdnS_&)^vwJ*Uv@Gb+t;R3%uG4Kb>_w$j8uvLojAmh$KYcCS~=0)lm zmux?7+${C!&9&7s;OE>Dj-P&)ODp16$bKx|$uYK)7IRFzY_x*~u*km43O?&O)@O8I z2=_kC{Ic)D;{74w)cJJdkMq61-Y>^{ zOA78S1n_r^V_1Gmz%SxB2I(0A|5C)$?&R<91pA9N+*9NC)X&}Yp8I}xVT-uyg!e~8 zKb3a-#RggY)U7*)-+%o*sX#hp-;)BL`SRbrCuNT_>Be**e&zT>eZlx6-uLFe{>Xo) z?knx@1G(~R-?n4;mGd3T!1yimm_J_@ARcW$_VWwDzXRg{XOchvO~yD)#r^$`DBl4a zY4Q{0UW)N=3Va*>pTu$n|I5HXiu{en{}}kxO7VyOpE=_0IvPLD->1=knOI-OA0O3K z+gSh2565p?p#J0hvx9QMa7$RfqZ|>xCJ!3?*l%O~cRb!PUz_n=i z8LkEX(P%$xxToBivrV|H=U5(#0`ciX0iZM9)T`Q`UmP}nb=ei>gS2D%anDGHSLY4p zkJU2XaO8c^)T7N@+IdfzPa0TPMIUSCQd^n7()Q|cd9_d|BktY#t0$W&ODHB0b}kc7 z9~66`4SK#x+*gQOP2+faWJ^GZGg|^}Q)FTofq1*Aj zCI2G74sU*e*vG$!$jN_-O%AECiw*6%5*r^PI^W}(=Ns#?^{C1d*S zFL9+_v8K=0VfgCtomOd#i}g69P|TXN@{aHH7|%Pt(_=jE_)d@UyyH7P#`BKv^cc@O zzSCno@AyuS@x0?ZJ;w8n@AMeYJHFFnJn#5UkMZu`%cO@M-)ZuW@AMeYJHFFnJbS(1 z-&WH1tRk1Z<2{2w_%Cs#e&nEs=7!-rv%8sLv2I2GROY$7_zoT}{>yu_v9^{=XDpET zY?1MEE6b(DJ!SmaxUQ;bV7WB-3rKdS$Jw<-<4mnaHQ-5B}EKr2$)wIdfNMrRf`i(w6yQ=bp|kS?dI^QYrsSI=i$| z>JM!nySKAT8yZV6691~ZJG=CO;H&K;_jPt@d0Wh1K(IND{N~$s^_yo5GVvh}d-e63 z`v=V1?(o~UkoR+S_*CD@d&yoi`9VDf2K6_Wz0q8^Um2`lorw1TdnN6cXZ^~)!?a(V zr=!mG(@OZu_KWMDU|0M4DcAoP?hpjbbyY{1enA=dTvx4nO4hMdkLMFbl?dd$=jj+|0HV)UeQjfd6+ z%qQje!}7mxdF`P(f5sZeT^o)s&y)3Ot8MOm-SnL%e@d}-6?Of-uAUzxOEL%rlF5y`E+f`-GTdpR`qn&l2;2GEe-G z_$TIdGHr8m>}jVm(iNWybf!m+K9wO5?wU z54uDdwbsRu0L}9;%4C6O7DL>M&?g2f2{7=F?_lHV}Ifa`cKC*4c{JS@ESt@F)m~J#lSzF z^Z1af9Q>dLX|n5VpPltdQ*Zw52Yeg;pj51L0~N*kZtUK0e52Cubrte&2K8oYiHSGE z=XlZqzcwtoo(LR!8TZ7!4dzW_>kZ$6`zJ6zY7a4d;v2>Opj2H`K5V$Z4C7>`D{;Iq zz>mWH7R*P}eHr+{eoqYipjHS5<=Fb#@T)bxRe|}_Ei(U?S|arW=OgYj_!1ZDdj3?8 z`EB_7J#gVT9&9yj2FhJv{@^G1Snr#lI$}R0lrS6LRI756KT z&DmS+We>oYIkWy(F~;AI{W8$6UA~jw{k#*zEaMQWS=;$f>it%^u*qdQQ7=FJwVgG- znU-p$R`gZ{8L3_Pa;2zb2`67VtUlYi`;4}T7g+H99 zErMTv3HW1yZwK5nUl(9~o&H4Nei`xs`K91b;d~h4V}m~feD#Hqi{${;S&g_-?|fC` zLXB^-e%y7_8TekjMbi1+9KOzjJBIIY)DO-kKfdR$ME=FR7|YLc^egOt825#U>6M(f z2cP&p%YH>*{<;+FrL1R(@8O@AaLJFr|L3?*0XP!h33nU!jE@cXM?x;U#MJNk@ZARY z)Vs~Rb&0qBz3kE%u8W>migtM;6}!&ho=#44`Rq4P*ZYHA1ua-l8B3)GV&0D9C*qhy zeaij27Cv|l^Y?U5ypmXFu#YhHFL9ZJ{z3Aj3jCdr z-`Vc120uL)49s+ zJXH3do!!`_zJ1L1$txNwO*5q#D{s%^7X%t7bJ;nx4_$i;A4r*rf__ujl_F zSBhC^fALR$UnSpbnoD~}?1c_NJ)M;Qnhw?B?=SN~61Jx0;=lerc1~lLUX^J@uPPEi zQb)*q=ETM>CC)J6TazWeLLE<*{%Zfa%D$+vO9w0w_cDK3H9_JdL`7VwN1v%(5Qgti z&W~+1`9Xc{$5-k3RN0T1ey*EKx9bdjb3K`>l@7QN`{9`vx+zWX?l1P9^f+^GBaicR zH>GJwQ@{P&ql`K8jC?QT2%b8;$n)J?8j19aREk-sNOyR}|LFbQT$+7@n2*b~ONp<< z>`~{;5rdA8_^s)DX{TL$lk&aLI~NlWwXS+8M&t{-TO^?WmID za_$R@JJKp!e^S0T+8$pi__kF0=>nq^_y1IVBIWVg+NzTM-zN;d^oe?l9`Ll4P?ICsjFH{HQ%|<^L4GO&JwfsFD8ks{drpab3`Aj6J7k-vZvUK zzpMT#X7Q(3s!BayG3iKSzgp@!?QVmfw-9}xPDs&H`g`$z^nS*@o_}^^zL)D9t$K^O zcOBJT>gAN^R0a4${mR?cJQ!9#IBSi=^iLS)iu^5v#dK+Zgcu|q(Kls%OK5|}?-EJ> zrP6Q+4b$dK3~Cix%nhqqSdS-onGxcB-uIN;wP_Dk{6 zSslbbX-}w10{+*&i8lXQcVHcdUNvR=HQxH$LH&Kjx02s}ky;w_CDt>hevxeLD(Xtg zg;sJLz*U@23(mhKIlf*a6@n<1qx(0TdYb*%BG*>nL%)~xv<3c3%y*Dq3Vs#*r$15f z`=DPL!6H1_zL?r3>r!W=V485g=ZmJX>G$Sfj($n_pM(13obX~ zmnO3R*Ey`Vio9jwlX%vINZhGME;0TQ|E-vpNgSgq>YRFauo?dmhay;g^NsP}e#6Av z0{@NKM)Jf{rX4N;|32)GNKZHQ;!Nv(PTyQF&5A5;OEnfVeL;hd(oj4d$FFU_) zJs*z0p5NDs__w?Tcw*ks*vfJk`Y#-p5&weojeDj`1Rq?1@tR#|a3}?T7I3C}8~oP; z^UOoQZ?OvLf_!@z_|vf;jq!&zEFP|JX2#e3+q~g8zZnSP(KvHqWNWh{FyGtBE5*S z1^0z_`0*?O|CP0VzHWZB`V{pK=K&&ytzy8_`O4IXHu!1e2lAufcSL%rOHF={fxipp z!_xgsIVG;J{*9IZrvmz>H*Vh3oBzK7{a^>gm3)6$E-4g7n``ixUmKZ}3jCG!RAed~1+;2hrQ|FrcpXmte-)NMh1UA-$>#x%IbARloSl?~8S=yjo8)e5=*304eb9}}8 zpKpKh_cxjNbH2F%;ZHdYas}qUE%bjl{3}o&a(%=CzZurwY{ZB7T~>+sV_m8z+~?DR_#gDbQ47QHU##)pEw?{8 z@k%)UTz{x8{Ox;p4F9Qr5P#>NzYl-s9uuD+{tn{#@9>WyValL8XB>E<#y^GiwF^=I zyeIhEtEK+O{DQS?$M7G3eu#s46y}4svCcz2^FRCZ+%I2<4-Q&r@)hS}m_M`Y=E(o; z;QmOsx2BkO-vU2|cAw!AHx=MBUv5MDYt`}hyUO66{2}mvca*R60jB*WuCV@%mPCKi zMnCo0N7}gKuR^R3m7xEBSv{FgS)M!Jka%s!@Za>Y!HxTl8G)ad15e;a{NKYm1?wf^ z|3sDFJ@M~7A?|uf_Z9-!#(HUh8Fvup&oFMXiw&Q0C-?RH;{cD|6K4XcTnfJi+Y=A|0&+~cf)07{IyXAB(eJ%DyxGjpO(9zp%mL)>Uv+LR;+*O z0Z)4;6CZ}(j{VXVru-_5YclKyB3&Ht&*3`fkH(*i!H)*U3p2q#8S7`UznO7a1^C(h zFgu(4oFpIXf9w~n27kj6lkPFNPlMlr^PreFEdb6v*?%5w;%O28TIIR@e}g8E89ip= z)NvywL?=&*%MQNjR(5aT;7MnV7&kHJVoJ_x(1a0FT;sTjXIP!5oi(BVu+F12ujh!V zQzsAW++GrHCiEILY2v7}Cr_4`^%^uOKKTG|7{8=uvL|dDMA08`b}{*x^~uHX zkNpSMCnLaD%lz%#oa<0uJ&AIL@Ef4K*x<81nfZiq&-Nk$_j3aLQt&VQ)L)O;;HOca zvmP4)e)c>J%3~D#gVy-{DFZ*K#lWzkU%ty1RblvV>f*;g{^q~NpZ77qTb0Eh_cZJ% z{&pVxQ%{BCPyU}3|3&9@SsRA`RX_Ui&s6Z4!6%5nebMj3Ka~f6g?GL!1i<=-{68!HFZ_M+hhg|P z(f2QC#rps6{|0}Y4=^9enkMRhb>#2EU%h7B7r`Ue{|fJHTHt5#2mjBC|BUT-HweT3 zpkV%g=MUmv_WSU+^Wl$o{(gf$_^mYFFC$r`c;(y8StACt4_^X$UKflTU;Qv|iKdZDTwEwT}@#7y~`v>uV@b}@L z%7ed+cbeZ>Ht zeDtMZ`coYwX@VATrYW}q3jRdtB$g6Z0Ay;?1R_l%nj{aa?kth zE&I>Ktf}}a*)MUW+>di>JC{zD{q)+LnJeyvxZgf4ZZ%cPe)>dHS&Y6@R?vmE%k;K3 z7cOe&QbQfBL&g8w#ebos_^-{0`R!c#MfT_0J!F6S&ElU>*#a?(efn==7Mdpe)3tro z9Ep#R^SQB)-_uTM`a%|NYzZ$a@@Zgbep+O{ z&z#*?iUG ztsXDwFX>g$Tg*an+3&99wf7hQgr1T8>pDKx0+CJVvN^`=94N92Q4x3Q@9n(rPGR^D zsg3yEWZF-?kIkF^Q=f^Che>#Eb#dt!*$=JL-+8l(OSj6s6N&xgyu#~UTv{jjEj3m0 z%Tux;U8rikiIF4UYkC+9=;^n+C`}hiluT-u0*KC50=r73Zc`98L-i_)~^ z8c4W7{1>X)0Q=9yUTFJ~5_pvSFztFRApZZ?p6}lDY38Ei#QJScTJN0w#$P5a@U*CVLRbq~*_k;Ko z??~%n<&uMmu3*p`o+o;`V{3Q(pLNv`rdYf zSLqJLE^QY3^q%!pMaN>7&X#lb?l~mmOg*!Q-&}E)i9f8>TAa&|zgw&{T^Km;aj`Bx zp86vqg-RuvDfPd`} z!?*V_{2}09@-6%yX!tSkzx~?8ljl7QN=hYhFE#lUaG!*pfbJYrzR`<+2b>RAQoq=< zU4;gxP0f zgKtek{4X*62;%t`a89i+6WW1p*&3CDl6lrycE|I^qP!u)1zmAV%DnG)9<913C4 z8vAbT&;0$)U3gvs`P_p0MQOiW#Q(b^fC%zGasFWi+~fY4q3|cdeX)UkB!_Tc3--$% z5BH<7e}((8%D`WW{VUvG9s_^ljYu!V$Do(H=RFE{qb_RnlEy!Q_cP`L|3!koT9mtg zLVX{OKlj%X|HHWt82fP%jN(2a?!P2%yibDsQhdODHsssjFUEdo@`>|e$jg1tl+Qu_ zWc_vw{Mr7r!H4dT1wV#;hjg#Im0As4X56!0WxBN7>c{y+<6Pce^5=(>z>h(v)^ot# zBLx3>>A?FX4fOrN9{ionJBI(!mmr?VR}5##bU(iU7V!`L{6g?w#C~P&e<}k1Iplxx zE%0l<;rFKm{I!97nN0WD!wf$3hv{B8z|Xhg&(r$!BOm@G;m^<5=c*8& zO7OQq-vB-Ja>+_>{XYTiufE^H9@S9Z&@wS_aL)zz9a7i#UTDSoXEpAjkG)~qM`Nqh zCY;M+{aFZ$(b&&QK5;&l=P~e}j0N}o?lkGec9uBv{V47ukH9_muUj1q{-xk|M|;h1 z6Xc`*Pgk1#xJ$rajdQ0C@Jxa4aDVUs(~d6#e=_#vrw%pzG~GitsLB)7pX}}4|IYj0 zPC@>E`&Q|{t|`dgkE6CtbH60+)OkM+@xOujAMGZBQw4}8+hyXv;xU6K`4&Fdg!+Vh z;<+08GVQoYUmNa;r@htme};h1bHC(A!LLBSg8VY@A3!@oehmC5<3HWtSq{E~_MPcS zTw4MM@(p^qceD!deWxXp?+zP(Wzxn$thec}=yRkkg+<)16!8#5{VMJ~;h`59bAlSI{cn zq_#^pn&Ph_JIk4Ep}LI>Uh!sPFO-12)3mnI6gj|rA89E6h2A^bnECrpc4WXPKnKR! zrMA*^^3TR1R#aPQsvK?16=J7pjK04?RAEbbV@`tL@U%LyS4zK;#qZb-giL^(B5nKcS-(=_v9Eos0sQl6e_T`4rQI`UUH+ zTpX4@`h12~spY2R>2nw@#mw^as>WNtfB2-_-y`%1@J~M_W}#;U|I}_A^@?1azk6Qp z!x0*5%l9&0ka$7v=Mk#Z=_&q2p6ldN@qzM<+-nlOU+&it()Ug9{ulXD&5-o4c9rt; zU?-O}{;9#a@Gd`3><`YFCyX)S#U!qpUO;(^JSO1@-Gloo(ho`eh2mf8P{a@Uuc-p_ zgI1-Og>HvA@rcAy3X}N1iXwikV`Pce3SZ{zn=abl@-uC@?wD0dq z_bB#AJ$b9r)R?hfOgi!04E4gDYAHQeQDl-+-G_G;INo7wn)03koU1Q_#d^$F(0v5_ zujZR}hx{SnZ~m*F9|OOzpNS{ko7l?JX*gF*eg)j~-UPN^OTaIA$@ouxCHR%+7`}sh z3YLL?58RWV2H(=Kk+DHxpQd`cy%2Lu>@=Nqr^z7keY?th zdRMtS(U`4$WWH8th_n|vJV(OTv_$3y9nXC1VY)sN`^dnqE}b?_z886tM@xK!R^KW1 zqGHENctSnL!8}aNLUnN;OGGYI*0i>n2|shZ$SYJnLEMY~=@UdAp`(_V_}iyQT!pC8 z<}*e8e*4VL-tw~y=g;*0H};tgRRZrbCU6fiu$dpuB<=&tspypW!Ev~i0ML|^H)rt<1n653ygb)dp7nVaQ=$r_ZN&GIe*1; zs{^@-H`9&xuBTfYoGb*;72zf}8NM#ATJ;F<%M4qM$9$U8%cS#6@Y~Hn{f2p`1o*FW z{Dtv|WPexPfODtm0VdoO`13Ju6B}swtHHk({PZ1We6#_4YK)&$Kd#z${M>))^ochz z>D>Y2n>AhK{<*FVvg4a{U4u8rHPrR^Mz=o^qUP2+Q6TuX8ZZPIla#Ve*Ug-U&i(X<8ll9RTmrgHp+Pk_@(gQzSyK^ z1pI^8UY&3FrQi=jeZh8Y2>8z&DfRwfxqmHFqB26K3y`*$WAeX3h`3Nc_Wk3Z3~PTZ z8GmY(_KbgYubueKl_f3RzEr&@cghQGA7;$zMnOzyS4kdiAHAuKOULSaF;KCb1A!ic!;bY3eA=E zS#SK$n=O%*_B6Rqu}f+6&lBT{<-PM_)#_&>Ok#$Zg@%Y(-=|r1sjSZly(a5{dVM^; zudLq*MRt<#^?KbZS+5gXHWuGI^1YCw*ZU;AxP+%^I5J}9HCgWzN=bi0-`7?+K-LR| z*q9cMkHlUlnM-R$ni8U+r1{YGl$8!$w7&>yI(i zkG!Wj-QT!pJSL!D5c@?Y7DO@sY{0y9td^3gY=vLzo`JKTpebUdDT<5CUa38DfZwH_I4(@SJDeFgPGvbMJ?{nc#YxFM^)+>|X z@5S|<>x^8>z#sB#-2AIB{3`H+8r`R0(S6mqKY7#dXS8p9-Z>w>=}}d%xWMPEOPC^wagKRxE!vpnYe%Y;2VZzQ0jOi*x<) zE&@OJ{zeJ-!S^>J;0NFRCsGq`OU|D^fb<(aRVqZeoP_VE*gNf5 z`klyr*do*4V)#?p|66GI1+ZxG0n+cUhF=K&{SP39cn^l@TEu(1z_;N3=G!2D!uZ4V zew^=Gf**nVahnkCwWc4OO>gWQQJ)*W4fh2o-wNRl0lx{~VVPvyN5Q|5=?eGRe1Lbf z=}!#q7s0&^e9FNOYCt9Xp4Dehz1728{+NE7CH)+E|HgLkMf33VvoSDW`TPIrXArNh z^t07oz9ilK<)Bp&t?_5GmKzT*DeZU_%&(ALf|Bk!CN4+`_{8bD6{Qbb+8t8xR4?gjuZu1ZHsgaGV zb^0ZDHsy@((=8~K{^zZ^^>?S`j-_7=@kp;VI5N2TOb_&53SsfgBSs$fM_Pct41BI% z>$L-|hQfc2pP8;x1ANPMElogx&wBMl@aca9?)L${j87l%w*~r5{lGsH{?I+^;rbu> zCj-*OJfj$MZA_@2oRjd7qHg!c2@aop_#%{#Xcr_enV2%=m=q)C24NF_b^1Q@(qH zDzN{6{n#P!e=y4#$`iV6sww96=>BlH9~0mo0Y3LdrBIHe;P2@DL&S~xIZu!JB5eGg zSZh4yzJ&srZ`nmy#J5b$di?zVnEUqlsH$`AB_f81G7>A%irof~aCPLO5l}W)BLa?s z8WD8@1cL?`Az)O{Q4!;PM8u$oqoPJ@b+o9dTAe1?;w_Axwg;_krygtZQk_~a9JTg) z-o2hT?7bU2=a29Ee%-&{GqcyT-uC+K+peWIJm06IUDnFlwZ@4rti zLim8b?>@4u8}{3G^WJywjo;5j_<()~AdUD7{*3t^iEkQl6X^T!b4w6D(D6R}#fTrE z^DPCWPvBN#y?G+$ixzhCFduIB8oZAmZovUJzvM4}pzqUwi=ZFSL+_jZ*B*aeLudEz`8D>6_;A}^ZN>fZ-#?u{i+_pvD?sPR@?RZ_ z_bU6o0|~zrp!dh%Tp;-$$47vZx0ZT%5y7~BMfz?o^|0kUgnt|MYp*Nypz~*0Tr1G| zvjWZqI{%eK*aDsZa&Rut`L7Jl1v>u~!?{53M-;jQvfU=XY#)=o2m2EM$?xpnFyD1& zsfPsaPgXu++=Q9|=yZMz>4`UEe*{o5#il3sW26rV&zEgIi{WJu9xww1T=d5t$NmdI z54~^tf5HcKoqj**Kkl+uWGigF8NVHCprEw;ZNz-1JWr6$L_FyCCbDn~9@vQcf%&e? z?GX>=NX&m>J~R(MftH`h6A>ej??K4-(_NekG(Y1w7pQ%wa4t~$&f;94_Fcfa;POM! zf0p&XhMpdN54ZRIqexHV0t2zWC-Ku`4AecCPdEE(--1a*h)S+Xdy5nY(@D5I?87o$|s=n z*D3f3I?5-`4bV|OpTYhaz_}jvla$Xbhj@4m!6v1AK8yKhprd@^+APpfK5tJh?-@ zpSmF(8h@<21LKchWB!Kgt?rL(IabTje;t3waC|^Z>Jo`o2W9@h-PW}ZxAENO|??Jwq{GR?&A&>K}?7uL3S{Jj6_t!b1^ZUE&IIB?aZ;#WNF81FvxXKW(_czORJeTqjUQl$l)nmx( z{jKFZmhy*D{ut_4-XZ_k&5RH2q#yaas9(cXd)P@{^EpcS6Lg-4dek1yxZLVjd6)7p zp2hh0T;VZl4+m?y$m@MSbaqg_mU>n`VR@&wwTA}sd-~ISRsVF?=2f`ASLOJ9X}!Pq zVItApf%p4j-l-W zZ_>li&%LM2WEPZ}BTj`r9@*i@lbz~<+(~6-X%i z>u$NWv-Wr0XnRe(%v#JA+(Q3-j${1dpg(TzK!Slv!$aLT>vkW+_aK2)G~Dbq=mRRo+v{^j_Ar7W%%@DR z9>&8w`j^8W7(T(eGmqi>mB3iKU7QR4!t0%u{jmRUKXaF@u1xNyh&%8Z{bNt!`;|a5 z{oTiLJ@6FW@m75Q5@?)n!%IB9pAihj_{Cd~y&d5L1>DDUIr8Uqqz70j{X3*T9qHlW zrPCSTHz5!7TxH#bcW^B*8~rbNzBq-BjX)2*ulj#o+0L5I?r-Ez_KLi(f91cw+P_Nd z!g@cT`v+q0V!r^O`v=nR9byF9|0?`9`a^*BztXr?AW@X>+DC9M(EeBY16&WR+l2UF zJWzNa`vZVs=#Lrfr_OwQhzIR|<#4S)`(FlOd3YcB0eeirEztf~6z2l%e`Rql(Ee8( z=K{4)SKS@%~{(4&KYH$1|;~CVm0)IU%b+x~qmbzNzKeV2fy4qh)OI_`+r=_m;*VB^k{(4&6 z{(4&6{(4&6dgy)C|4C2%eMD#X_x-8%3g>=1K1z2%9~hLj!?oQ1f5*CeXrjEC12?b*`s90%rV4IAzbly^-rWeaJUb(y4|omjVjS(Bdu(?P zFB}j3Nwl*^bocNi%C~bR+WoTb9{vOMLH-N4$HNWmhka1#;;trI+ug$exMh4CKfSvL znSV+Sg1*zB576>j7~S0n?!^3sgzuby_y9WI&P{?Wuvyv<^egm`{kEcCkIZ0uy*Ur* z1%@AM-MKif2U?J^Qhz1RMP34DVEiQMi}mg9;V%!^^f?0%K5*25Hhqa|$OH2IL%BW; z-GV(GlR_SuP17S?x^~^*^851I|0 zGY@bbKzX&p9h@&$9=FFkzW!TKkJ{hz3lpBd${$4e9+wCCQu4cWT*UZjzx=YPL3xMr zH-`9r%C8N^2e;Wfe#U*28lNHLOR9tNQS$%Iai+?TB>(K6g7OvQ7qU#B-s@O8Lh8b9UVU9(4Y>0JlKrpCh*) zfWGtr9q+e^;#@EslORc~9b8px_umi;}#@&+_AK!%-VFoX z3B!?bN%p(_Jv_Y@Zj4);t_Ta*)1h{u|L@NG!=;_I4^AHU&vY^IGi<#e`(XU`F>4O| zE79NFh5dCvGu+7~=)d>J`&EF|W8jbdhwc~sJlsAE>A4a8v#07vrpWSA+))zSz3+I2U|77y8g&$WFxjVt`NZ{F1l766Xf^_05n+{^;@8eL=VP z%ooxd`$s?5M}$0?oL$KpoBSLUbd`+8``{mOU8{exRDcRKDD=BE=l7et35zSwW+zR=ghG~~ay z(`)*Ac%=JYCLP_!#IEh@;XT}sH2m{-_4Tk^?%#0SpGW$7sFM4Kc?0(j=mTQt->2_D z|KKTv1x&_#c^vZbt$jWGVi&@Lf8^P|9^#O9@IIW}D}6mA;7Ael9`zm+Lc&kRQNxGeN>$qDv4zApAa@J|{q* z@BW*Qtfs^c$O65uP|fzgq7MHvciY#xD^VV?e^!sk?RsYa4~JXs$NzMwU8vlaS<7bc z+oj8f@chn}gOER`qA$bmH|0lKJK2{P>c5ODq|Ip|ug@7LL-Tj~T|eb*?qb@U^Kr_f z+vy$8v0YYPQ?}z$+s-PlC8*>1^2hDIhJC1K*Cke7*Z;eb&-|AyZ`p@1r}C>K%$P5& zyYOI{iNcMcn{mi~1D9mJTxxX!P0A95}E@c!8(`P+M(s_X6N=ZOLG~S6 zxi2Suh@B7DdaUDpAKd2^;WeM}yJ~v>O38=cTU1Vd2cOr|=fNt-H*nmb``ujf$LRYP zc)!P!zk~0WNiMASm`d{B=sFbn82QcIKNH@k{UGbV>_lrf_AXi2Hr(1zmNo3y)0*2% z4F2@K=>NT^y|%Tp{zpGa2afDZ)-I%;=mWQE?3j;O2^P@##@wntMsUHtXrD&!ZJgD8 zJnTY$Q`%#bggnqO|9Eg8lLkJ$+t%N?HMkzo@l5>UK1QJPi>5cO2XuZhj&p&|C+2Z3 z=$Jn&g+Fl5E<_&l3+ZbS9-#S}Ta0sHH0pbapL0Fp3#`A<#y594{DJgeBsUPpF+cKP zc3OA*m>=Q!pC5V8#|z`m>Ej_M{V(Wq>){4UxPX>9vyTyUiw6sE{zLQ~i!gst)5pUF ztE~RaXvhOMF0}648Hf+CtB1Y5Fsl!q&+TK1_qX9?4OFsfsS7aJ)s}a@k_j9fD!2U z#Xwe|n$#xEouzZbSNes}-ie>Qlg zhAmoNU(+zg5$=?W7uPIx2C2{aW1O1B)pP4=<~wtjEU6pgEUR5!KYz)^i|MSbsmA9) z<)fwbHOehmvZOxD>18u(7F9dT7cQ3d$U)V6z9cpw;VrALo_FD_>bV_WUTlyUkFBc_iKU3`GG|eB;%s|< zj$AGIV4X8-F6v0zqUxm=p1EY{g*8j3RnM)dTjrcSqC}_$dhbfzzcMK zzuNLi^4IYB$~@n<)=0kNJ#0rV^YqAihaA^yKXkqAhi1vApSAJV{_-~RwH$A2e>q1! z{N9Ki<}@O~~0@kQjDQo;D>{eOY^pz$oFyiMJ|{<^%+I{q1c z$-5E1{XEa{?^77xxL@xc-q;9>%^&NF^}t6huj2r1|9-FggE($* zctLJN!aK{KZ0%6({3-S%vHTDtD4J)-8;QU6 z#{1HHn;i&N+V33B1qs*6r~ioeApqx$fE)9f&VL|$;1A*tck;vD9_0P+ayTon{{bk+ zgrK}XBGVo3!vj{IYW?;1gON78^qbHR$osq`eDnL>9zOfpN@gy{eh=V7%%{uYTn7EX z+MbZde17~7y* zSqsN_%-6pSdEhYgKg6BGxnNKq>yG^n{=k$oacw{N z{qBJ5?~ud!C-N5<>fjd*?lh_j!Pzon-U3>yb~#Sv-5y#*5VH*X7U?zC9 zNiG`b;ZD{UnNVe_rLnKIA_j%9t5b_c?q2O5|93l)$D$|;{-1ApMwd+qhk#DPXo%kZ45;0Dt4 zj~kyEl8{ zc;OV{4~YHC^H>r13v_>A@^<7W5VrSWVn4p)&kv#e-+=p319`wj{p4a_Y7Dvr{d!s9 z+fI1 z*uRqX$@sh7JKhfv=Q`yNc)k8_JINA7TsYExPW)Bdf6#EZJhj9-O@3l|lv?lTy2bMG zpIhD`|Cb9B_Kf}ZDEaswt-SWd_RsCbUr^u{`tQL z_1BWWj^hq}FCAlN2J^XV)sv+BZ?2~V=ck*4!PqYH;QsV|G1F5E+oG+1^avy;9)bD>-$h{u&{_xWwcXCMZ z{x*i(sgRq=`j@{_GWtK`s%O6N*KcoLX*(v~{PtgW*Kh7DTQ0mz8Ja)Ohvv@>;^&_~&xhvEv!VI(#Q$Rc z{NH81+`Fm1pItoH|NA$8KG$!53AV3J9=4I+ZGTzr6FZpK>%X?I4%^qyuVB3&dVl?# zGc2F{(%PTenYlP9ujS(Z_4|{i-DtzjR@wF=#&m_>tEA;B{9dIv<-_k)Y9N2>>|nZ* z%7vkr5>|`eBCCi$Gyq6i+S>0`JR>dNtWM9KK!Tkj{Xlx&(3$&{zm_3uXK;FIa=S{ zn7*JQRQN91D`x=qdnK`c2eiOHDf@45F8BcM^natjdL`D+fXXqra3}Ut!cXwb$!HJ$ zf&F9GV?7L*)CheaV}9Z~tnC36VQc94VXzB*C!gW9tgHFKzP}G^ZNLm{ zD9S=UdDQ?9RYxK|-ypoJ5gzdHH0b{T@x{5I@hHecUjcCwyajiB6x{W21AQ=lmi~Pb zaTR2sPuvll3kq;&dqe*{&=0JRB0d=37Siwo;(vy`%x7GV_ydP_ga0~=-h@lPY}g4jT~aTHRx z9_Xb8WN9<)bbFFmi|~M|p>X4R2j>DkT-&X~yEQHI&e)14{qLFKd}DrJE3e_E^u2(5Z<T>(Fgk8 z;EQd!bjUZ~V#{T|i!CqZukkm$Z>Gh{XB%uj=zQ-5 z+?TIH6`?`_Bj^KBsIfAB?+A4LAQoUhjYmCg_UQNQa{XY2d_ zX?}Pc6WGN6e)F#_^M7AB&4u5JzoCM|q0e{3&b9WYcB22`?tsYL8PM3a0x&Dsn>K`|3qLT@kde67qMcJ#xHw5c#gu?}paF?#|h8)s7s>|Ef92 ztG&mc3-VFQuhjJf+G7RzTCQVgxGwn%)J{LQ{ew#KMeIk%$;Zf-+-Jj8zKZxpq% zj;#UfI*-ObOL<1C<4^5G|381>=eKv(es3CWFLAE0>DYp%qd%w!HR*aqVQ3E{(C0tW z!|;47kc>kR^>=C%p7#aNq#5Tk%=eCf8_?%DvPbv8cbj{3JWuRIdl-SNcgS<#@rgY= ze2Df)o*UOA{uiE|frbsZ)V1#Tc*p~pv~_2zpdUz4K7J1Tf$K+D|NJFAj9|ie>(*a= z9wa&(&n^QeU_Q{r_%wra!ObYHvR;us4QT_s=YMf==6Lu6>nB)Ek;)!;UrP`32;45( z{}|FH=sMB*=c@7iGEiA#^(E&a?|^+bTX`3GBN%rK&F3y4bljw3q`{(v58m->I| z((9&mW}go?*(;J+YoCSqUIF`*{-k?6^6QO39=!e}^2ZDq>>&nYmi$T&8SFv&lV%M1 zL&FDq*nAH15B<@?YlA#Ue=-jHi;f)ZVFKLAe(yw$AK-4)@_C&JmAYO zt^N%33%-{9jnE(6KFCAnJ*z(r{empqqCW@Sf^CS8*uOJ+u!mOYci`_-zzxj6dk*r) z;QqUVJ?#4xu7^8uJoXy_ImX9DdIZ0QKIuDLCNB*Qv!hR>959G7rJ`rxf>pvrYnd6W?K>E)Tzs#|414B^lN&FJy5FcO*`qL7> z)L2{(G(z6HA1@CwX+ZnWkv9k7{ojMkrPGmrC_lMh4f1eV6z&mteh2qgp#5Wm^a%9% z-Z;`CxaxYO7wK^(BfkLY4@-I+q(vb8VM&jJvSM; z$M0F;sc1PaSbyRXC@(#+VR+vF&~qd51JCakj>hxS;Czylrk2?YGqu>Tc z;eNRvK>Gkcf!U88OQ@A&#U%T$zgJ_tf&DIsCzmxrlJ=kaASlll_?b8{H`va(b=HMq#`-~rl{07uMi18Sd<(QpH5pD~;Z)IQTV7pQ$22^&!REWl5o_L)Rj z0<}+P4AKXveMS+sK7MFOH-q{CQ2We&*&Xj!?A~FYk;l6mf!b%Gt-BGZeP(vyeFK2nXYMP! z4**d6jJ|~W22lIV{1Wnj+Gh-53p(s`8^QzBK2tAuHv+ZK2%eb{sC_2B!21ILwa?^h z-Hkx)Gqn}h18Sei*WnMSeZ~>CK<(3QM}7cmpXO<#4N&{cy@2!qYM&1BLZJ4U$F%~r z&*XN52XxryQ;091_UYtsJ)rh!-avSO+NaYBe?aZi;9dySKAp$l52$@6krsj4XA0*6 ztv?fwB79&^^=IZ&+#f*e&&W@Z-+w8H)IQ?~OQ7}{gP%a{Gmp3mI_wjENkHv0g|G!`pBeZG)IJOF z6R3SU&?V@HXh{2;!nr{0Gly#hYM%w13)DVy&?Qj&j3Dj;wa+Nd1!|vh=oYAbMsTe_ z?K3|Y=>yb0Gw>6reX8B4eX4s;_No4ApXyfoRJYn^7GVqYP`lLsqnEfdI;%gcPO|NL z`rhyFf9BCw6sUa`Mj<}|wa+a41ZtnLk+}bW+Gq3_H|RSGl#ee)IPHaOQ80dz_~!}vw(Af+NXoC z1!|uTbP3cxlkgL$eP(bj=!a;FeLB!3Q2TUotw8NFj&p(9XB^iG)IO8&6R3TraV}8% zEI?ME_L;`L5U717a4t~$bRjGF|7D*sge}lR?Na}zfBb{PIN?Kh6PT%h(FfuBI_H+>%R3sCz_Lsp>no5Z<5?Kclu4;!-0Zyx6YwOW}r);_FI6TK2Z{%d;7ohg*o`U=W)P4(7 zkzat?Z*m&!6Hxn2LRO&m8^^go?KcZqK}Y?I^8%pu8%5XxwcqG;xB<1_1kMF&zge6M z)P5a=B~bf~%s_eowcj+t5~%&U@Dr&0#t^nZ?Kc5Gf!c2degd`MJkAAbzcJ_*sQspJ ztw8NJgL8q}Zwl86)P8gD6R7(V6|eMf-LB{QdTuI2Gvy)PB>aBR>GO-x&M^YQOo@aQ^_c-#lamYQI^W z3)Fs{naF=Y?Kg&Vf!c2hx&>;#DfkK0esee%sQo&#pbt>{O(HCT+HV4W0<~X*YXxe* zY4{1$elrMLp!S=CpFr(5g0u?MeqEdk)P6HK7pVOfaIHY?H-fkc)P4&HOQ7}}g`Ys} zH->Y8+HVrN1!})hTq{ufH8>Zj{pN5k_;<12d<^#<&_nH3|BGK;IH5E9edG#T|7QOO z`;DD|`~uW|lM|3%fZA^qegd`M>^S5#p!S=EtU&EIjdOw8uW{iAsQpH9E>QbTK(|2c zHvvC^+HVHu0<~W=9{K>a-#Ee&sQt#^Cs6y%Bd!9q-z5A5YQHIjEl~T-z)zs|TY#TH z?bm@Wf!c2h=K{6g9Ih3p{T6U8Q2Wh6mq6_|g18IRexo=SsQt#FTcGwE!Lt#eTDhn?Mh>Tm4`B%R9GpX1|}a{*8MtR>Awhuzt{4|2KCg@)J<|HFFRa zp!S=ApFr)`Jqz^@p!VxRR-pFl;9Q{gn}n=D?KgvSf!c2Yx&>;#1^5ZnextK-KLNGh zB+dnDzxlJF8&Lbr!B3#}8;33rT;DQ~6{!72s$dU*+HVwo0=3@+`~+&hX`Bnxek0H? zQ2UMHT7lYc0_Os?-x#hHsQsqkCs6y%;9Q{gn}@7G?Kg$I5~%&gaV}8%jY3xN?_$3$ z;wI2T?NNysli?KfYE`~uW|Q}7e0{W?=%pMcu0a}wNu z+OLswKO`+OG>; z06oujRf(Hyzx!OLhP9ez@i} z_mA(a{(b8>tI&DQ=0p6sy$p8lbj<(CcV?0&WBsS^Fb{7_aN<4^Zs6C~!j1iKnE}H* zyf??Xqi_qZ;eHSY=Ym4i`X@_=8Noj`VgCf4ugy5P9_W4^;)DHZ=5PcIoT$5}!EE1*eES(wjrv1Ybbj#Y2dxRY*TDU-dz@033w)NPcC0i1YxLz+d#G zaIK*CE_;3UieX0JP(FJI+`!G0Pe4{sPWkv{h!0TsvrTWd4D!Hoq)*c0;#@HQN}E3} z;v(26=8F8u!%y%f@=xRwNV|ufHodu%kUk&}x9rE!ar&4gOwf~lrOu+uvb_<5EIpnUw{#gIf8uEWw z{C)XZQI7q1Kis{atpRR-`aTO?|6>5^~>vS@-93P_Tk^J_2Tux^h`fC zsQ=IdgYGxgAV`-~1pRxS8FcSj7<9)@47zuO^!*{^K0g%x6`}AB>K@d0;^EkjI(c{b z+N&4JXW!kKfX{aPua0tNi^KmHFRp*Y-+y_H{g*qNP}ZK^*A&=}#c#3Ypf^L&f7#b7 zrm4^8^waO7g`Q8W&9J>9AEBNe{4SfmcgZ2&9C~h1v#0A5K|Pg}KXgZsuOh$t(I8(- ze#BitzJdJVA6q{Cp=`j!_p!-O;`4gWskZ%>>P?R5ax0&WSsvNu9la^&C5JISBT?~Q2x=mYYrHd_74 ze@K45K2J(LACZ6jS3&(BlV7TOcpnSoADnIF^*(ApW#A3eL-|tL-4xkhjPZxLZLrDR zGRRzx{o1m>IMy`Sm}dr=mLuVh{nwG(2b;u}L8b^smh1_8UpLsKQiIF_yszFp7WMsx z!6t@1$9v(1d;W+|^jYbtbbgeQF5>^xVe2Qu{(I~Dwe|ZhUj09|*tieaeE+`sKijp$ z`0M}Nj1uFo|0A&y^L_Pyd~%8L*ZNB1r<{`x=Dqr~{@fA`*!K>c4BQDXe{ ze`Iut3Do~bBfNpT^CvR9#Q5v~e0_=W*Z+~)l0g0MHkTNG{hzq2#C%`($3tN*iGN{qk$cg`#^ zf%^aE67(N;=ZBp6>;LT3663G`v$#Kj`XBfI`|AJPloAuD|4%A0{`%j&w#0m2{hupB z`h4|&6#D%2f8ov&IhbCj#TwM%Mq8UG_50ox8`c@!M_v|3m81 ze;vOzas2uc$4_~VhcxJ$_#Gate>A&)!soY=vu%AC;RP4+y)Ak2T5gAMT$tWr=Y<@~ z7jfLF;YP_<{mIsQ@tIbC1$ooJdYJKa$)C&dv{NJS zgO{zm@-gxgInQLMr;7X%&VT6lKxA4#jx@`i^71%{9BUXK<>MZUcd{^llGHz!{M69A z(LC}ySUzMz^p)2OPc;06}?7s)Pj6wek-xG}P54WH{?kW6p-xYcI+g%vn;(J1we-wF` zgdw{4r~ip}00WJXk1vM18}^d|<;57^z+Ko2&jSEv9|Vr^a;z)%^8;DxPvGkn0{1BB zljq~UMR-8|99(}Wo?m;o$iv5Q$M=Ch23CS5==Yv4+86uTfsN>Yy8FU^ANT_@A0Iym z;rB%N!2QtgJM1dysPmPSn;3xPJ{aJSu=7S=*9*F$ehLw(GvHvf~Qh(FNhXzOp_ zC(!wIgS-$NiT-n3-mlpM`3K1N+~oeHdn3Prx$u|tL=QmvfJJ!zE{X6Gy^y~^0rKK@ zkQPCGcg$ZQe-rl?d5FGm^E>e<+<;4W>T%@1-~@yR{SoA?;11}Q^yIoAzkn9_i#t(_ z@PG&4@ASa^I}qsyZj|_8{Xmb4L-QHuk5V7|-(M@VApI}%pLd@#zqvE}KjrWCLg#*4 zFYg$NcanjMP+y7I58iKIz>6>hyI{}p!TXr(4MRO_*@*ZL*~d6H4fSvq1> z^n<;{SK)cU%|kuB33&r|;Q{CaV(;Pl+c5w5&`=MxWAJ?6T9mJchk9tNL;j2VF}Q&V zP1ZmE_)sI*isu2-D-qr!2oJd8TnxORKmF)X4^1c!`BFT;ef3Zezm?}*@m=lswQvLP zCapVvAM^oR(e07)m0peOft@0c=R=(}NFT5Y@ssB_Q=5i*_*Slmf9Bqy9{z;%B@te_ z5!VByn7{SHzZ>BJM#{^6i0=i6FR%moYEzoYzQFGYS`g8Tw*`3m;~`D0c>AJBsMh=1Wy%fU7Tk6w@TV>}y2Tm*bw zg>f&(^}uE}REg2J9vC(r@yC%k4sPJR5!M~M8R-G$?`z%hbD<9?WrZGHh4=zv=}w)8 z_yTXP;`MlNHYN|x?%^mUum7gcq^$Ihvcs_b7dFuz%!le`0qO1=^p?hN3|Glf=vN{OwP! zxXAe1pA7u{?N9cmqCoqT!F%eBul*@pR}^S}^0?mL{v^5=8Gn0Y&<6S2oAk{^f%c|= zm-qSGo7|?NKzoy3gX<*|+1{k!?{9BX_Y?)%n`F8u(B7CwiURFT?k7dT_U4wNV0(k~ z`P-XBswmLjq+5yt?M(sKtG!EGQz#0yH#yuNe|wX9rYO+f#E~9Q^#8O=#suDP zRJVGiCw%j@s1M#kI-a-op5AQ74}GXg{|j}N*v9emI?kVl-=8{lj@4ssw;eNWhsJWg zGJAsMwcOTne3*>eahG&2}57xjpPeDpG*BI@(*b|Iqq#D ze=_qY$?wsn$uEA}#$V?nTF9>o&3pcg{C_O8^3DM^z0Z3HMr zi@gxB%;+8US1?@H>aQZd@MO#DJVk;$qia&V>{${2`#;fA;a^`c*W2<@47J(KT{_0s z*@rqWAM##UIkbH2>3vH#a2-C}eyrg4EeywH((RPvhdNIGyS<+gOPl(i(S9jkN-zY!W@)`1m`w?8~ z$w>Qzqx3T?uY3#n^?Yxa#y?B`(Gb6te2;48!#DQ+ZzKOKHDs7 zxhy1zhf8@v6@=;EH3d@t`XC?Vk_HVMs+WR$)yp5GH z%`#5I(Zv6&KbZ8GzkFnGVEMrOQ}z+ezg}naDgTHqABWq^js9!-$g};}Q~A*EgP2#B zdK$Ea%W;0l{mSManr`p-0rwB7y!J0QKFRw=`BD~~@O)1>`FA)^qxm$1{7jwiiQ4!? z$)`C_lO9W_$9PkN$0wsUK4)yR@lk#o`JxwW z{FRT;-XGl*>O8l8z-uu+W;VvDt*J}YESf9uR9$@+L2^@D7Smdvl|_(ItE^QOazkFqVPudb8N#A)s= zT)eP;VYPf9EirB33Y&BCjk4-x%N8!HKXrM{@*4SG+46by&Sl;=Sf3G>#Rf2&e`YaUGrbQto~xL1@Goqb7=^;>t|kEQk;0XBozBiYsUcRhm#!Qv;)D!-D|Bz!B+n+t{{|N6Jh)_>> zpNB&}yw8KxiV5%Ma4Em?W?K*G_l9HS!}~(wSQzmNR&tS_@0Y*<3ff(U`KPs^45_q}-g0Dt*r;@x({5}J2m{$RZK7U zdl%6oyx+T&d_?8Z7f7Nwjmwb4?bS3%le(4zb zDeQ0N53}W>ihTIJ$Z_)F_aa;CHb(bX>-|bnzHlxjnBFVNH?6km$}h6>i;d*FFkKz? zK)$TW%BT6B*fjYoKDWGK|ErmN`ZDI*8P*OnwTgZp^;b+ND=J-~>-?EMTU-kPo zoPW)czvb`2`0OPAi^rJ{jOWMXD=!c71@f1kYxOw%KB3kFw~)_{viZhlz|3FEaL3y6 zrR8)k=ZSTHhL*?SbD2N1D=m)<{$Ku52M4L`FWq)5%GU<7kBz_X-J-^_z z*z)D@a{brwQ-l-NuGatBAE*59IZx%1FCssj&ub_jA^+};HeJeVx%)W8Ydnfp1m(-A zr|V-uK1zOVNKXa%^EU?NUGkBTo=Wml{~DB!k^h+Om&U(}{L`U)h?D=>rl6i$@{e)8 zOZC{hgipL{{mlGqp!@}I1@$D!r$g~?B>%{N2IW)aolt%@kxzxfO_Lv#4C-kn|I`&h zK0|)+Cqcf2eC#I6JKtLS&ys(F;dbyv)+5Jw8s>wJM|UzGl;0Y$@`;f)2X#EE$EmNdz1I5h4eGh*avM)G(vI_V{Ho6a*^8eI* zJbb>XK)%3zaw@-z{FCc~@i**8W!96Y-D-cbA~Zj7Amt0%zEHjw`Rkeg&LBHaS3FM?Gu^DWD#^F7yk^O3IcpB_Rg`~O?T+$s^5vXQRz0=k zUB+K|d$;h4I_^VLzJc$Y6iTnqfgYs$eAOAGSHC_mfY-yP&%d(QH1rR59cH$Fw4 z^RPv<%Z*x3pJnB>+_ZCkQ|louH$7SyE;p1_QqTHVEwA!%@^7=>nx(w9L+|MQ{nU;R zw4b<>^VeDOP1IAg!RmLo{@F}k_h)85v+Y)fJdtGJ~ zn>jvFz90F!xlW~gIr%wHGd^6mk-blHL^+-@jAzu+ripx-@u?s`oAFV3mwc((3-wGQ zuj^F0K2u3v*Qu0`k-zuBU_7hH-@@{w`z7P#`*6IZ>r}PmyR$t|K0&@;C_fv>=bp9U zs{SPTj&-eXtbH|-uVsCp@+tDV?q|5Z*F^qv+O_6emV6o4$Mk+}CEuHT+_mLn8~Gcz z+jy#;9QiBAtNae~sXtNvPFue7RPzc3W;X!23k z^STc2l6Q0*&;C&*`D1DK+AoWdPtqk;-J;^dEDJ8n4cZy^6_ zowb|fKx@;9;nsQJ8ue1gxZ zsl3|pg_L);+xUDy`C8hm@?Vf&sr^&NQ`^Tsh4zn>(vDLzZMxE**qqUJQ^!Nf=P3W} z1I&l3Y0NJHA1DX->pi#eSB|H z&&!>c-{@6VpO)V*PY-~ssCa-PEAq1Kl$t`n?FtD>!?5c+^DW^X!*@h{u7;tc-`ht3;9PmZ(+W(G0BoY z=4Kmz<#n9#&SRF>`Th*;Xa3zmUiabTInR`2{B{4q-ECGrJKm;iC-tPc{-C_tTl!Px z&jc&4_SUq+>T$XMC`$WzSM!tdmE_BH{+@OoC%Um#!f7UMt7 z#=nT=X$tdG(!m@pWlG>L-#xE z34g`bU-JCyakw_Z>tBJsJf7!GT+z#e?B~rd#eVXudU^OQ-T60r83A5-;rYk@vzHOb z`$w|a&z}3Bmxo>_8xvoH{o2>}@_PsRFP#4den1uW`zB@o`W;9wP$$7GOQ)v)3X$z{Ke` zKXZ-9Utpv7<9=n6@CP2F+j$@90lq*v7yY?+AP*$|Y>d+n@|hA3?@@o^2KWKbMs5B@ zZbtlob^GD|)Fc0%f;JfKTAoBrr)$WPz}kx%0JiLY@zAm5jg_{CNse}M5v zL;r`crySx393an^^hSJezXey#K>YALg1Z6t3b-Hc>_CKn8Nvr*aikwckVf7M=D?kt z0Qr@W2mU1CSYA-{Eg&KVKv+UJ_+Z2U)R8X1@e6> zdA=oyumt)%O}tBq5$N+YNo)`jTuObJKjHoXW9M4^nMdFTRu9AaBEm~$VZXo*ygx_W zu~wuF(C44CUm!mKJt}+anf-t2{0DoZecs@9v-P5`udK)T*S+62{(Zx?KmB>R{_FU+ zk@eQDi&@Wc+^3Y0H$~)xCIX+dsoctvAiBhv9bcMb@K=_uVibbbX~C`?JdH`bw{}8Sa&~ zUDfrKs(WobwO!Tql`Q9%mDlx^CvUOxY3`%b^_53*!Sp&TZ`(P)rRgmv9}U@Cl>FEb zUqQa|4?+Ddd1lkUJpb1FhE3I-wckVV{DSG;1>gFymJ=Vhml+ExLPg&5Z+PA@IjP*k z`i-bBZ^!d$GvEf~``Jk}Dw)~k9tID`g?OIPNtSz9i~38R@5-K6?jbGyzV|s*jblLk zn;UWuOv3~E3O`0zg7>Xp<_?4hoaS1$+fr@>2i;`lGY`WbI8v%BT%T-4d;w=5+|%(q z;>>an*%7Eu$D+PI6}o}H!YxN~7UY2yq7O&zbjSmT-;DMN&!1)AMtXpF4LqUWy&vHN zN6z%bP3qEe51SWQxBhOLq-XX&F)Qf)&&z^tb4<|P9J;=H$p13xiycyK1f_$6*FPV+ zzE|k_jK;TLxiP?lw*;?W6N>MzRi0w4A^Bg1!pqS=Qc`XNxsd-WJ%iz$w%NKfC*pnr z&Sbce-?0~wJ|HRSgFWTuLl@BP0W0s^30YuL4-B;7pIU+Y0sI>6r5w&P@CW33t^T7Q zuTM`c$NSpLO~dKdH@*h<8h9Gv%lq8Yzk@&UW06OE%mc_T;PNR}K2?SAfZ{9s+VOtg z3*h$I|D*dOKDa)yrQAd7fmUDob?66fc*wf5t6*=yK37_O(KE}9pj0~BIP!>#;Q4iM zKwtJj$OC&ik~SNR&Rg74|Kw%wTRMwY8@)k6p+s>utM|r2GSQme+B8Bl!&5W93ui>)Ea=-$efBA^9}< zCiV|hzM1^NoX1l>Lw=Ix8{^qRzLE3Yn$ORZAEolzzLI~F_e=9(8~HNse^fm=@+;1> z`Ja8*=FblD;d$Xa`INTP40k8_rx|YY%oQF}Ab;bvR)2hj9gh~#&WDEP)62>KR@Y-T z+xXz|VDH$lJ!mIU@`meiYCjdqKNpmD$v1JnROKtlC)j^gK1Ti*TrW|+ihS-8t6$4S zocxXuUrRn8;uGXog!;P;MZ$#*=* z^*1XYCI4IYyEWVj@-fCU-MztMT=Ji@oT$9@HD+gsPg1^-^^VJR*+%k@hUC-ad(d80 ze>3?8t&bkJ_L?ETAN%iy`PM>y{vOJ6O!ooM?z5CX=y~QR`EBImZ&+T}adYHre`a}I zugjBvh4!ue<(=feVtu5%&cCnIemd);4=Mj8`^zf-5&8Fj&-hUOWAazC->ve0B|lO3 zyE0v$kS|P2*fZ++l>9c1&$JvC$RG5u4cBEp?;`&Z!_{?B!}62Ajqa_{Ve4E5>D9K{UgW$hvPr3VD%8~y=7-}R*z!j18h9$Cak#!q^@9qRAqq<`x> z-i2GnPkLmfK>PG}mHw{p$Z3HmR~m|MNl3o0#MgIx9*WPAq3icb`h;;>7Sh*G((5}$ zhOR##>GQ;CJ`~^2L+L*{q`wf7?0J7S^mN<;qVhWt}izKe0XQSQI*s1tc#en%yJ zK6`pRB)?+@uJ`#ni-Y>^3We7iy50??w-MpX_(_l7gzR&DC_N)X_tQv4?~BhT5rDHc>#=E6m?94g(7Ck7Is2_66jD9T@OJB<7>PhJK(8;inIV{5QoO%QiWZ_Qjh3`=Sx%c44d{w;5 zejbvzUh>1;8{eM*wvM&#NLPG+0(cJbPfoyi8Rr81zD8mnqz@>=`bc^t)&siXdf-dB z9_vT$zHkGdA7$g`6yf_3fP8;L(wFOwxByFVz2tAU82SPIzJ`IH;CgfjoWqe{`yu{- z`)9-l>q&_o2p{51=) z0B^&cJQev9fqp>NPsE)#5c+{qSuer+*<-!%{SQFaOR{)>y;Fkp08@{)<<;$t@PV^2 z+{!}U90bKc6Xac)Ps6!jCgj~yFhBAGd_M=6!|M|VBRpWi^$2ei;$MpR1Ghk*I}`Cg z1n~!Aak%k*`plt-KQILG%fcOjpP*p?@?$mTAAgANn+Txa!TabEhe1D}>oJKwa0BN` z`j8*);fOy_3%85=>HG-k1J3IK{kZ?eL3)4%aLf8k4(Ecd7u)G zJyiYkhxUj`|0>Zl;rX=l{ZCSV#n%^`mg{W4D9L(EQ>g!1uW55I^(-szTxjb(jmI(C z@8$SK>(6fNcg1Je@u0@bUq8mD6dQm2=$sg=ACqwV>&Ns-!TK>dHCR8!;UB0UFDVYx zk4g9k>c`q({g_?|d0+h)y&zaWW?n81)Q|3ks6$b|Y5nLf3f7NiNwN1mA*~;?7X|Cb z*s@^#n5hrekD2Ac`Z3WEtRIt?76h)>c`}D#ew=UbwhEWeoQqM2kOTH{QdP~>?VZgs~_Vx7YFLc z#4W{v`Z19z4%Cm4wZ(z@F?oA&pnlBVQ5>ir3r)p=`Z2blI8Z;P?_ zy|Fl0Ki*v&s2}s2kiWkAF@bT7zkZBuMjIX9T|egG_ScVv`;cB={g`+F_t#fHCLb;i z)Q|B;iv#sz>L<9_Ielk0|#Qf2c%H`^LwMe({+%C5{Ux(D>5DwjKTW{<$d|F{RVn?2>rFZ zyl?Ojj1K|-cu~fT-OwM&UWffB`wsMQv-GFFLjQ0dTo06@|C2od`x|~Z$irJGj}G3~ zXbvCbp`Y{*5MFYxK^~g-vHoee1!qPP{tqDk?LZISdf!dxui$#YR8-gTi?M$8$v_X$ z^Pms@iCqIdJRgVq80??uJ;+0O66y8zuWKve_O*XItKr7s^d013R1yxK|K{7oclYsR z$bA6bpYGScH8kGMhUCuYq{ zKW2!2-w}t~KOT;J3{PKpzd8VJU;0l8ji(%u_Z{zq(syo1{`}DRXHL?0F-|`WUB58o zzbK@yQu4!h>+c5cqc@yCb$Nlq^&*$NR7Y~Wxi+XjW@+=t9hQ$Twkv^pdrx40H#vTpCmE-Fm(5n* zEU@#2De?=?3F>bmzvD^E>wJ2e{Brh>b$+>-yuKdCYC(n=ZBSR6RS$yIgNj9?hY5>}m+g=gEhkAHne5JASJBju_9K#Gs+hcUe_*A;Y~K-XhjKA+`K z{$JixNdC86pU`ro>k3c4W8;(LdoXofp`Q1}`Gd9R3hw*9FvK^Ik6&W-XnI@7C$0(d z&y(-U{asn+bCERWgs7?9)GM*bCjzL4uT1@aBL9!oucBcFbc;d1<`&q-X&br(b4 zu-;lr`6TsdeU==X@ZzEC>JiGP_?(p5RVn#@d9Nh-r?@Vt>2=7r>V0|Drnj8@4z4$- zd=>fkLVTQjE!VfTKB*-?mFqo8>ev16Iu6gSw)I<@@=o7={f`__K5)?BAw!296&*Et z%-G{k80U_kIAz-O8L^qC&px|sPVxTTe|XM$@#^_CwF?(5tG{gJD#vlkox#pf=O|~a z<2o_tY^QtwBl`F6e^LKs{Z|}0W}q{$d|>gQqXrKh0->Qphn_I(sA1W; zo>n()(X=Jg>ZdKAK5u%>^u^PcPj8qpe@5MmB{P=ISboaMvFWjSvH7u@*n-%?*pk?? zne%2|ICIg=C9`JFs+qN5^rMg^5K=Pg~|Jn_0hN`RU6O%a=7&H7vZe_Oi=X6|Y*=dT;A}t@pQXZhfHj!PbXb zn_C}leWdlrt&g@o*7|sBruB)|CtH8ox~280)~8#aX>Do!S?jZ{&$T|^`t#NoT3>8S zwq4nFRom5VtJ|(=Thn%JTVvaGZP&Nm&~{_nO>H-~-O`q7yR~g?+ih*@+HP-K-*!h^ zQ`?5NJKOGR+t_w@+oraA+R|S&$P9){jBZTw&&WOZ~J-M3vDmHwDzUjUP`}o?@KMeT>I*p zS2wYqvLUzi#`j+t+Si4-0gh6CG!|1M3@94l{I)cbp54cNQJ*taOeTI<$Y^75#^g z>Ob1)zpQvb*?{tKqX&+528}y=h|>@DC>DvMX7aELmcb~a`xhTQeAMu0ba-^+@aQok zq9aE}qa*PS@;^qAqJMmzD*M;$eK^wHyBpc79XKY#xC#M1H0&!32+Ix(?!;iT$I zCe_TFR8u$klqr*ERpKpilk2Oe)Xbf-bm57UXPsD6Us=7lvU=G`i|eOWFP^%*ZtC*I z)2f$Dt64mK{6xHPZhG}4)0ZrszI4fq>KQX?{tsjC+T2)nrRjZEM(7v#%aPPnF{=tB z!8=*WDltK1CRDtM0IN#M%3^@PA&4Swg#$3jQp=I^uTdE|1a}I%X_T^pgde_=(zdXF^ANH@08l&UV z&haIKIy=tV$D`rNW&dQ{tCnlkI_3Wc)pS%HpI67->bO^{k879XT7R`R>eR+*?PhdZ zD}7dPf7Y&lo;JU{`T5$lCc)l9QyFKdnmX?c+Ln(3&XjxH}ogVy;~t3e68 z3#uQs2dnMD`q%BOllD6OZ#%S9ibs zcXz-1ySrcg^SfXD+1;=H{O(tOardjgy!+MP-TnHX-~IZ}?tcB}cfbCNyI=q1-RoC( zum9-o^&j88{*$}czrK6@`tJ2_?q2`t-RpmL_xjK7UjO;s>%Y2t{V(rc|LeQg|K{%X z-`u_a@9tjz_jj-V!`D`_13p z{q~RUe*4FFzy0OiZ+~_7+h5=P_P@US?O)yf_HXb0^iS@7_xkR4zq$L}Z|{Ehr+2^m z4|l)&k9U9d+q=L1o4ddMZ|?s3Z}0y4-~Ye=_y3uEk2z5II7zno{b*+=+1dFx`O%Ml zlpH*Mn0)s;50dYE_W_j}lcYXMl8eC(-IgS6-gk!EN&g~A`n;!il5DWeza2hqY3_sT z2Y@=TuKz!HFn9Ca2S03$KKfy2^wE1?zGo9_{*&WJ^PjZ0A2J6YG6O%T^e#SNNPL*| zk^-*_yk2Nz*+Q#*v2Z!+E_^*`Eex6$3xi&3A-irZ(36W__sUfqe>)ld+ zaJ#o#+uf^Ymz3p9%bm2#v}~2R{z-q>eKPEKpB_CeJ*9Bwv-0j96ZG;~KN~&kkB1d1 zUskw|xq8cFO+Rh-n)|zlPxsR-+iz#%{eI)>pq^bFocC`I+Vwv5GTVn(31)Boh`&3o z96mihs@9GvEqUA@j*f@vg(`8Lq>bw;6R6t$Hm!18^+2mH>w_8vFl(3fc8y}2wSIBE zb~{K^o2GncIv(~fc#ey9C%x$PFD__bAR@aM z_W+c3v-NFzaLH#~@>wdXdP!Sf($)-#&gEz{Xg9ipcC(YVTm0^gHrw<;dvFb?T(7q? zl^#vIZN7)0l6~E8_rA{hy(^xr!)JEDt`48uY4@(W^~Mn7dEN!Fdh|)}JR9_AvmSlk z15-PD~L48=~--t@DgTYn%X3!t3P${&@zri=-{%FW|41q}gwT67p zkapl-Cp#ZrWsU1r)}#b%+TdS$l>vcSmj|bRsXaU5D^ozM$iHR&t?)0+ZhH-yZ5voy z<=?uBtWq~M9rHb7J|Cc4S83KU{XZUEY>v6d>-zBaWqWjav$nK#(<>BiIrc4$|Lx1( z*G&AmEWxHdNVYZApPkiq_)*u7)(!~pVUm2Vx6kLY7YPrNB#qu^C%M$IOI>n##@lxD z1{+%E2gsZxS^L|agh9lQK6o+K#bYk!tHkv%u5;P@bIrMoBR~AX%IZh_*!t*)Sd)+5 z`~D9feLN57Km1U)rFrj@d})FI7wyLyrgdXevweGUYkhlAA6-7;FFxKaciOF84Z+=J zr{3MY7^TBq#!G#7FzDQ3dfRk)yVrVL?~c2VDY$#}czoGzK337-Qioc!CDrNWN0yc} z0QL^6+X=?G-Q~xqUe+g9c`=SP3|q@8w}Pujz5^rTa7WluW&I2SY3YWMcr z-E+Z3y@R1|Tw>=(mqLo{NKbjBPdRFVR!7~mRX-ZGZ|g_0$j61{kQw&nczJ2LuCw*Vc$C&@wHDKTNFm@(|7Bgh!1Hx( z>%-Pyr>Njww%Z2=@6^~B88B>B-otKUqjUGR~ z9`NI8nBGtj_=35aUew2((FFtDFe$s}fM6Hu+KXX5>j;n$y8(h_sh}$xXfQBQx+y<;qalq)Lo#TFx*=My-QmNU=}>ny?9<9Dq7%4Nq1Wb^ zmbwJL3Y*s&VK3Xw(dA1GGoVBN%|lHdB=axDN^A@!n3v&>0o2EdZg3}QjBZBTNn<<& zq`HNV!J$FnV|YGrH~@FHVfb^|kL>63xn_4R1LC^xB|v*J|4DcI4<730SNzPj7XTyL zGFf1F);kORUc290*%HHlRFKu%wK2cjXrzPDE;xUkf;d>~-64jwv1`u??H^~O-Lanj zah+k3JWlzp^zpDxFP3%>OXdBNXvgysrac{%m?ZUH$p${G1nX4lcj@0!zkk(E;V7ea zW3Rklu9f%dE&6A#KR)lIWxJEI-9x#jhA8*0KdTSRHv_B;Kik9fNuQ=4iphXg!!|_y z>Cx`zyFYz;baHf5d)gmC;qg0K{nDdqH`hN)&xh&DXYFP)?LE64T&BIsv6xK7 zzOiE8Sm|Y>qd_J6Svu^0O1<>U_NSNqudmws_3nAIzMl?gEFg{Q?E5^$c(8xl;2HOC znW4P{9D{!IfZiW<_{qou^0>D{YrVs9_dFdQ*>@e;cO7LQ_T`bCJ>K2hEAJg+i@VwJ zu+9klNke!p=9CUk(yw`%lc4~xT6$LAORA0fuumfkSgR>~rCCiiw5lm>-r*0i6n9v?<*ypGgX6u*34H8qKdq_tMm4Z59o5nfJr75# z_v)v1|EG5Ur}#RJD;vDo=Wv(Hk>Tj@r*_Tr7b<1{<#=vs^@}gZ7Z(@J2XbA%^Bp}z zR<~>FHs0!u5pY(w&%|!fwc>E=tLMY(^ZM|7JOYHzZ=Vd)Z_aPUCix?S(t3}vD+Fye zY(zDNw}Vli=`v*C+K6hVz!Vo>x0`9R-=&UyYTuh)q`gLp@5MOxa{Qoaub-rLZ>fzm ze!^ldY@{*DF#WpDKvOYk~KR0g~2;NjV~wC(fTU42d)plNgF z16;!PH)COjjVOeZKK>uDEzeOSO14IbBDCrKl_6M3feH&wdD6Ps*zzUv+DHL#a*)4#<%AXDH?$Wr5F6{VUsj#MxZqg zwJgAxpBjN)G(S@{`UGw`s^5vz`Y4%1a8AUu0)PdB#b61og zba8$4>Cs;K@#$0K9ud5!jHuCNU7lt6qzVv^d;LB>rp{Fkl2dxCazq=nN0sW)=Wt7* z?rsO1%0`F%K}ENcrIn0sX*ZFLa0_lfMNO#-f$L4Ar-Qxa!bx@aU~kQSi7T`l2lc_H z>8&=;pwW7cz}W#j2!e2MTkm!2!^6xP>*%;vIXbMOGxdeZMnQT<8O?HAKgPd;696P-_0FI&Hm{E`g+y!z+^1bvww%_UykMZB)*eD0>NRyEmq2mxp7|vQ8j&jlvrh+1hh}=} z-C=}w`@v_LbN!y$luHbb5rPl))$($r_v*Jl^HKL5urVDb-?6+LNW@? zIb^uf8hUr$?4RCzaVj^sdC@+kG~akkeu+3W25Uu8 zT<8w}Yo-R)+=F;(Grc~c7_P*QS0Z!!7?+zp;1c1OMgk8vd)< zwu4Q7M{jqt7Pd~qjb8#*erePVQ=1)tGbojS!S;8V|9R%`#y!Y+3(OYc53e;Ykr#VS zK9i{oLD5}{hIgma}SSY?4wTX77);#&`g@i zeBaN1&Q}1q@^*ISz5(*;oqzmG{A)UmQ+o#%;R{?7O3zGoih{Ml>?^o6B;|KT050m^CNGDO8xj&76MBfa(Db zn)Gs+ANL3SZvUeHSYw3az%27@R4-w``d4XcetG-i7KpvTs{ms$a*QVZ=E>6%`V_+mrEb_pl9Pv|slUZdZ# z6Hk~@hQ?`s*y6sQj=u()M(wBLVRw9W**1qBIU@Wn+V5rFLrS0EAU^A2bdG2=te{i);#uKyID`0{MOyPH@2UMsIX{$;3E22FNppWxscf4a4z*I`&a5cm{gAM<`3wTEdBbOArNO zQ+Q~TC_@bmv#P$3bs^+1MgatSN2asz`-!j#;6AT2_C=T>$6fvYtPNehL?hw)8bPvN zy>)3Ij?Jnum3Z>>6y1OuYe?WctoQmqJ31^^4xb!7$MnD0UR!y-{Ss|%`^9tTO$j4#1|QZhpuk|k`)6p7H^4M3oJVs=Mu)*I zQVYRRni5*|n-53*Xk7byG=LsB2MVGi=(k{SVR&ubCi;5K0FZfa>KQXEZ4+qAvd+p9 zQ7JGHn{~Z_<~opUVs1b8Z=OF!QXhti-iD(Wb-f@`{fZF9d|^h@ub5_np@x|A#B3n^ z!`pFIsAr9K8?ri7yS_ZnF6(?Tu!&#;ZqDOo;MzPiqeMd>24smmk|Z%zNf>BWJ2Nna zeWpkV^1;$3wAEiA4?tCeW{@R~!5IBha7)PJxndnCn|vTI{F6iLKxr3{d)g?W*#ZM? zB$7)+%x+_Z(Wy5f!N{PCQb7~i{|fBinfu;+`HR}gE^Df>BilRzk4)HH z$dCW9^HH*APTkI~ER^~hSt6^SeOAAGOhn--8(*~vja1FZm9Q@6|AM={s-Ca}n6+v1 z?jHV{O-a}>h87SoWwgY@mv7RBy|Fv5^e+0S4(BEzJS|CSp~If`&t0f^mfoE0wOi2I z9@vl8LkvG-TPl@2c;FO}@5R~q9bRdDiAD(b^eFUQULOPJ<<2AMorYLWn?S*H;w}G6a??r-0*9bD?+RFM8RBh9o$^BEZQb7ZsTK zY2Sihba~nksuq{*!VhucU0Q&JsQC&)YRR%FF4?^4u8RZ>{RPoNI?;y>apnc&zxsk= zLj?tngr^-zxLv3;UP^c|K#pJrl7)fY6XS(QqFVL`79Eh}YOQcPKy9~iI6!gt7ZOy( z>8x=zt@sFpm41g!=^By;w)FxlCl%VsDMy%1Hou0~K76v_%NzeMTj;4}vK^3*zrYL5 zP``~A1{=4s9AB)&7pw8bT70n{Uu?t|oAJd~c(J+^Uliku_{ppBlUL&>uf|Vaji0<4 zKY2BN@@o9#wfMx1?phIan(?jC%u{KZ38t2MS4@evoZ z5&U-%uXE8N7Ll-TZWXZ`8%t7A){9FkYef@M@EeAv&uo)Jfn<$M`UnGL&LyVf88qey z8uL+dfLFNNN_QT?K+GNf7`3DnRT6Vzp^>8N%QfvBfSh?My6r^w8PBJ5o$o%V99t9sc2~*v13mhb zb}a06m};Lw==#|u^#7o8Pi-Z@Bl}h=2?Z9 zR=c5B$5I3BRc$=H;+0In87Aw}jE6C%g|;pY0OE3$NCSrrK2NFi@UjSg(Ry-xtaMYw=-YmhUTl> z(tMShny&`Y)_j#4o3Em^*}e&%a(1A*-s2wq)f46%GXXoOzIJ28Y~4IZ$=x>&C%ycH z>r*0-IO@i6g84xagp*26VI;x<#jtpFQNK#rq88bc|yz@fx1*asa2j-O1rhP z&-Mi=6?-lNDi(*=NE+1SGGm%lygYN^@$Dfu`t%4Vq*Q)P zisCbJk9PMfyVY`45L*oxYxBzVg9?!lo8N8ZfWk>iNWW0)i=dOyh^vo=;6lf4@3vz4 zv5~4Dr%JhDtL0&5|ERRPzXzsQ4iTI2;yORB9>te64D|$eGt#2YETlF@$QYbxxWeQD z^k!h{5ra#{TgpX!d{%1r&YsoBC*|r{P^n3AAQ)3nLse6}30F(1z^wFLI=p&?2l^zJ}FRK#g&d#ozS^rEPvr;E$N1>KzH{T!;LoWdf z87{rlg+%N0l2$oS-kXD&UqL6xBu)j70Yjux%7um2O6|})y=1~`Y@XjHyfjrpsSr^8 z+vGx7E{yy>;=K^oUi!1;V|sf>Ib3{zQjJ8@8SVt;GRZg{@_@LJ3Cu1}aJD#kIdycU z)nJ-7hcT~H@q#>m1i`8*@5+| zQeE4$A0OQ_{lQW7C4(-_7;*(4a+dsHc`^>HhGX+%S!aj|&Vv9|CgHHVe&k<8)=ioEos9g#bU_dG~HGSfAbcXbE+?)7&g18aq=L6 zn5pN<#RD%F%>6J=F{S3UGv04uh8n~|nq_vQfmd1bHm?BPSfalqgY)$XL| zrdV@=d$Of;+74OPL%s{H%<+QmBr#Rxfgvum2XovlB7CUVB>oncHzP(=7Et}U-^ zZfsgs#>V>c*2>nZMFt7MMC$&?vog>iklOsU58}t<>l%mA#WV!H57NW}faU z-bENNS0A8QBuA#k74>Igwh~(dDu1S^P|jrGa`|i6T>ct9XNdaPV?xi+8(-ED%$eJj z_qs_vA&Y9zM-8#)UeG~C<|K-4{J4DhY2~nbc3Lf;{1{C?-akP+C5akd?c>fq4#K8* zI#145G_!*gU9JsLy-lxN{%}KZ0D=@g^RR^R;6l}S)FD$OevYJ*vWw?Uy;cS*_|S|< zEX71tN0tLwt9*=5{qpkc8DpY#;$ouR8(FONvnpH_HIZ)_5+ODBzk1st)P8nIMnn6w z7n~2~`)8zbG9Qd-eNm`%@%!yrz9<|^&Pbbu$G2qL5Dy^|sa#anROq*d(o?Dx|PzvqZu91Wr*-`_a-^${W7J?YAp_=9B+Ivr~ zq7s0BExs4{Bv1k?U0+QcBTXOS3#6D^4u&*Ff*khRAo!7}hm9)x(3-1u7Awehv(Z#a4<8C|PvjR1ah z)D17aAB_u#&%~7^sCJp?egSnED_L7o)c9r`XZ@ldZfmA4Cb8>8GJ{#?pKPI<4T5&uz6RmCBLaZZ=dzkZH5$1@)q__ga z0hGy~usn%~YY(umj1`EF1?6OXF_{wHNvVhB=3+5CH-;KG)3c@^#@9{thJVoNw_NB&|qk1t>7LKcm&;@b9-voU@Zz@ket?ch_Cs#~*-u&dW zQrk}O7e_A0oR#*Es^z^}|AY)_xh9MXOQFz2CA0Fu=Lk?opP!u`lh0Uw{zT4@3oglb zx}-cZ*^Ksj0-MLXGQA-#2l2$1h~N_4=<^7@eiWeSZ4%vFjq+vY3ej)2xC ze5kmRVqFHEV8j5RVMl&;*Fu}mh z@J#Ju@32lb2Qvr0tg|Q^oGo&^v52sNx<#q=gEZY^!BtZuHaSpEcQZ6s5y z6xS_`w@q8q%uqt*G(Vbd*N@3}wlq$8ZjTlNPL@zR87Yw5&aIH!upq*kCmstIMO>Z2 z>|M3H1-ZqF*QWpHw4W31?DSx(~T%F)(4Mw12uiPfOr z`f5&CW9EZX?nqx@uL#&t9(dB1pBdlDUZg|B-?Jwty9ed7YUO9;gU27aH)GDK5YeAl zW8CG}3c9iQB>b~>R5}Xxi2xudK67vWCoIh|;{gXAUY(Smz@nqvd{X|&X&G7efCZUH zd%)lB;}hVoe$Hrh$@MWaP4w8@K?bf#WDBQCk&~QZZT;oK2k(C}|L_l=zxeqtzWRfJ zbU=!F#pavDG$Uogt;r0G)N@D}Vz;Dsvfai}jh5O}H@u6e=J^mK> zF50sTLS^+FMIyp^dMfO*j((}z1BlQ-J*57U|vyc%C4PiRNzTBTT zVD?s5@D8=&rCOz%$8vZ#B;Ptvd(BYiX6NJVR?V!uNMNIP#f9OW01t4?i6pCk^6TyBVi2J4l$VOQ#)sPKz$Bxhi$-JHyy_w)+pL|`~KIEfmwisuu zW8Vn<3go6+BY8gm@X^OV`tYOeFTcO|{KY5a-i{VzX^m7SJBDgnCug?frN0IH7KESo zP;Px`ou&KB#kHkX%br}_Sl?XPD6VZTTg-_i8tx^@D4|(DdUCW+;%lINxl(Fy{qb(K zRH>ZhnF0aq%qW35;q5+ldyKse-nA4?nzs@3)TG9JVht;nS)Q=uMmFO?C41WGpVvF& z6)6bpplHIYOq_6rKX4BfU)SP1`|>-vIN;8yBIfos3=>oW1!9iDB9aCp2RqI*o` zx&eZ;;8Bee^nY9PvV?Gt4I1IUFA@u2^{f;XP$l=nlPT_sVsd}ie`L(x$B?*JpZb>Z%E6kcaSoh z#EBVKy}rlMorF5@cNONDQWYZwGdg8!y;vC#lPtf>imkk5GkS0I5JVeig0si+tHCMn zj@Vatq?-SrpslEQU`U0H>vygfu#Oj#DERK<(q8$=;Sqk#mE*MYN zeudeMbE}U-9`S_ti{wq+!Rq)#~R*Cwq~4MHM{0k217{ zWm(8RI^&Z;gvt98Tl;bVwMKt#oRJHo1Q$~gLBXVS*_Z2oWXbykkq~g1c|%9iU4@v* z;BPmM>$jEzBpej*9_NvAheF=p+{&d7(cGABdR8N-e{@=dt{svQy3H^UCJm}&9i{B@ z!RjA--f2ZKSzRiIbpScgpYl*11D93!?t{-?zAQ*>(ESSf9>f`Ij9~l0S6|+sM^h)G zxb%eo{la1aiLWFQ7z!J!yN8TFca!zrXEV8JSRsQ_X#!x0R5N>j+dU^+i1pK*^gJfu z1;%I$mU597C`qA#>qs(&rpQ#rm~jYcoLUytv@$b;#*-f7zJHjDYYgv!$E z9V{C2hh7cyhh=h*>q4HZ7Sz*RMfY`W+mIJ(D|FKNprTe5j~w!I6P2{KNsZdc-?v~E ztn|*`3nPyx?cfmr=BFrnHaRceJbhkMJh=c z9}sY2VY*Ew@`HJrE0)V%4*#G34boaZe5Q5EXFokUJvk$af1s5Oun{u3q*L}9w-ez2 zXBa?hdE&uYZCBX{a^NjBVDes}4MjaFZ0+^}z9IGg`!tUds&jJCyW*;A% zwHi%|90OH6{Abp#d8Uw9H=spCI^hNqYacmK*bJEjHkIQY2U&D zw^=54aqHNU$EQ_B*O<xJh1o2qHXK(;DM5)y@j@quu-Ovo_SxuQ?xWF}lfh@CI zGcYLQSq*P9L*Ofv124znzz~vE785IE0&4A^Me%I)iw;ORfUCg+03jV{%An{eg!N`M zgrE`?B-U|^Ae0eCO(fm1-QOf~(DXHAa{Qc`>ds^Q$P?yC-i8ha_sq(bA z3xMk8C0SJCf#J`N1Ox7Zv?#`tB+S_Z;5)HiSqpJel7Mm5m2-(`a)r>!SVDS2H;tla zfix*Afnb5B%k&1}fL!JniOT(4SbS#D8hVb0z@gw-&~PWPoWr(Rilnk9&w}e(J-dd< zsNqV{xzLhWP90EXpxl(i`6TA7`+s=9c5jg}}g4fHl$CRbr0r=(eRl-wx`&{~4c z**mip9!*^Zz~!i#KF5{VR>-vm}L7 zl*Xm;{N=69rDYaKtZZ(q`-cO0<`Go-Vv6Gk)aCf*;n>WP#m11C9rgy2<1&unlRuS z;Ngmyv)^exdh(=-fw7oUBY;%YaCbX`_0eUwhUKz#2l?lm9)5aw^!edgV9#fB6mlVq zq%JzEnq%J|KEF?GUwr4s{c{;YG$WH~7anM~2v2#;AS3ID@-&%}ay@oC#&BDTTQDv- z45njG+kL^RLar8H0Z#)T;lc|#mxTj-DiQC;z)1^6)T8W#>lpr&*#7IBYl=#63&|ss zHq9F|LI(db-oza7QU+oSOwKZK!DG1yBL)%Vi!uo)A|hteG-!lY<8g;CPL;BY)$iOo z4~DbvL z7}$GwR|6AfuTcg{II^9n6p0~R^uQ(}xoZOAN$05+oU57wy^akq^Ti`t)C<=lvlKe- z9a1bHp_VG*3dVdc>oU$v*v1&aJK4sX0)g( z1B3V%znIIyg5ep##ZD#jbIKt>4$-n~WivjEG7JN=g>_N73^;AM2VR9iqWSwC>^^2L zWMGd374(#(RruKRt!W+XB8L?IpE=|K{r0&B_0z@L&lZcTTT8{_Iz$x(#fvkrIxSa% z1CQNUU0Yh)T!OuB0nHZpDzOqk^FNS|?G&0Kc-zUiHjF>t{zcLi@wYA(a+>LY5Z15q)SS4vCXt*~l{e>W@6w$ZjGD?EJ;tn)oDREz z3b?JApgj%Y0q>L3!?LB*ot1Y<)U8%_58?*eBSS9DhsJv`4MLF|b0vudVLc8gE- z$mFR<6%Jh(H3}RuPDyyz80=qQAFQ<4wL&NQ7M;`1N-=gzo&38vZk&g+Z+P`O>{=8L+-3` zz(w4c%sLh0a1#t|j6z7TEZ8fK#gU`si$Ep~uc>Sg3pQN^4m^IxEFBNV*UpDK^4M<{G9;%xzj!x8@6KX^7~~9E#brie&Yf z+Ol3=u?!zAyWFLj8=A7>V{V(Org?_Xf>w`v_lR|{A-E*mk!knQh@776C$iYkt?5JJ zK7`wYYlo1<@<-={Iy6LOb6?!deAiraOofznVw2!>B*^c*cu!+M0*4tOnEYr_9cv5u zc(T+uvOS~GWJ@PaJ~l1XQ(&_wu#1tXEofB}&6PH#aqhu_nM3yGfgg&>xB>}GSI8@p z0FJ{|fai&^$|v81c<0k<*6=)0n)JOxO30Z#WPa_vL#qEbd&n09rq|?6&kU0ZFSojQ zdiu#BMHN7t){ z*YVIf9t4Sj8cgxfRA4GUM8QzGe_Z7lG2`l44z^&L&kx>>N@Gsqtmf*&|mPuR{;7fQ4Cn#+TVcyxL*9C_Ao9rp1*FN=0ui;fSoR7q@(Mwm90wNF!M( zMEqpMNNK-PKCGRc?2# zAyhpkmsEOH^TlH%6MLG}7%%(KYHZc+{>cH!6yzRsg-k50#(tG`3<#EFBH(0M_0@#q zA{$_UW{Zr0uRM)o?9dxyUz`EOs*1g5Hie1hg>#8gs z5{9yQMO7vC^d1_~iTqthP)uP6(ND55s_8j(Of!|pBdUzlDkFG8LRU&H;9%IFthCH35g>3G@4be_f*sPk*Iuo3%QQH-ADP=aH)mOs zVl+;AobF0~RK?^;pZi>uRd?xYV%9@+BBYv`ySPJ%yEmdLVL1u|jznnwp)QD0+)mbC z)iq<>iJ#(Y!UMz zQMl`=`Wn;Y!D0{W3BcrAlnWeEB2{;T8d-~tdf}XV?4%30!;2j>GY#$BO;~^}O@)7V z&mT8R&ApTwWm88jGs$Dct1O#Yr@q0)%F@Qh%2ue0UvkrI4dyeB!hhehBBN*W8-m(mjpgb+jqKRhyxvp0;?a8uOTZOi26q*bO7nn&p$EXbP{q1TI*4vNmzP1X1eNVX zUXHIPsUDK-K$%0x8?a>l*oepsA0=bw-e3OF(43^lQC7TOj9PsK9`t_d=X z-^SIf3>lGh6soDD2m4q6c6@}oEtAJLKwHTZvi)YClzTuQz%F(SerHiz9d+$^12aq>j6pE4R| zS-dyVSh;(6196gkqdHY=?_jm?jmhhNr4>x^dry9{gJS8%<_A^@@tJ*?jh%M0NBkmA zY><^ia2PlssuhUAB3feh95EKi0$E~;Unz*(A$Hf0%6Ko%f;r||j|+QEYb}^i4wGS~ zii$yLV^L0hdms)oRw>?799b9I89}9AQKg2c`ZI~FsQx`8$)hXE7>(jrMkNDt?ie*#`bz@EqJt^~fMuIh zq%w{fHR5O`4L0)WG;3iFLIH)@qnMZ{E_B%%%h)*bT3f`YJ?CdZ6~yhcF@fEs+@QoJ zHPV|Oo#Dgz(V4YM@u)bg0fc27WeXbD-v1x7xXBZZ@@r;d{N{3VH(}BSFWVMe$ZbNq zG>MY~#JvoHtif;{$@~^qUKV%{$upMereQ;tX5jQT=O-TNo2H2|Ijw(r;LNr>CcVdp9U zq!~^49Q@_^lr>wvZ_e27W|8^@m^4XnvS&otH&>R{S69~AqHld`odhKnA zMdgFNW=pDLvXSPukNVX!LM?#gkrfS89jWV$RU4o}{t{5qKuo}@?heJ`B@ zlbW(C6by6m$an)bBG-=;h+BAU!EQt@p`m~;7y!AxB%#Q$rVmkbm@?uxS{eQ}F=%$A z1}6ZBfljlz3=pPOCpp|Jjs7iGAjZpWm^`w@jiigQip9q`6QZ^B0KG^ua1MiJg;@P4 zrA__-j6x$Ou&p;^=$0_jYU~kQpaO|$NkURfRyNc}j0)u5h%qEE9L@p3;}TX^X_>Fb zn&j>np*!~lf|fODSi526Vu5#4T^v7Da-;}G_`7&G1Un+3jfZIxtA=WGayxO2C3M}y zcALI!D(;LvEOkNs>BG$=Xbt3h#v*=2v=7;0zBvluILxki$>q4#u3l&bw zqbbVlxuGP^kcbRfqbxY|=CW06(W?UArX20uOX9F0o{7^+Q;MsldWF3ABgmi$nbwm# zo-w92F;W^ObeBh>XAkE_#$BTjxe00yVvpQH+6UV;VFOH_85mI(r7yUiJ$x7|d&a{q zW*CPrG1H^|hu|eIm;UNw+F)LJAU~w5^IjpphJCnU>L1a9%aRV%t zbe5Osk`6Nr#j9z(nY$rUVoMccDCXWwlk2j`u6Q3=P9VF|1kDx(sp@8 zfk}dbJU6C;8LX59ZCOxSYt)JW`f+ zH+wi0wUJ+zM{Y=CSS_xtEEhMI*SA=qTU_ttB~~ce(1S!yj$0nIMLZZoJ1#uE$*jS{ zm~4s-N~kU3{u*pLMk|=aQUz`S0=ACwwBiMjj0FTt-XEQJUoJE`6TBboL?hQB`aiMW zhB4ZSJqs2Jc5Qi@xoOQo${3Ag62UH2o^yK*rg2Byx4D49NFfu=S}89!HA)M38kgkE z>yy+8Ty^OKRO>=>$zl0xFaW@e`k>}0B<>a! zf|E6gKtz*g8{dHrZk48IjF0oUfL6_*P%o`*s<3HW!HEhq+t^-s?Sn=O2%J(_30y?L zlBF|#n%=^_jMxjEIqt&h)bR+o2DJ+!d{P<+?2_1S7{R~xTklRaQf*hvz=kx0^nr4Mz1{xz1pMa6?d8Rf3-av0paWGW3 zRc5=A!ST~VB+OymI6nvT+<*t(kX4?NRrD@~**xI5t>Q$`B4tG73MoL!cp+e9w4VaO zGxpG+UHc&3$M#P4EM`yFzwBJ;-iGmlk1s`EEb-ZA%;u)YZd=Is~`uJ%?7F zcC0|G)O%%Y6_$#HrR7?2ZF^~T+tRkEOTEl`xD}|rc6?Y_LDFAG&i8E}qWl)k7g2*D zplhO=%49LrX7b-F8DriJ_`dYjJRq%P#~IVe4GXUm)6YH8_l&kDB_*(-2{F&7kdR12 ztJA`u1>SEuVe(Y#>C6xC_l$w5rAUrxmOUU@fyvKO1EiF1{DdcE)4CHL1<#{NVmY%xKtqph@SNRE5CyXatxdgS{bWO63B1AH_ z7)cY1#6lDCQpyH)9=MWEYss7u+}@bg@x&X`I>6f#EyiLQ0`8AgFRW=e5!>AHN@g~k zm_{aNuXe((vz(bjKGKG+o#^!`Dc|uMW7zbL@nWVkleyD);*I!8 zywAyBU>%6fVE-I<*~li#3csZO)t` znR*k%xtTE&Co+9U8AfST<+&R%JFKjSOc1LnNC#MOLaXx3T$AN)`vO`W5Al7gZ0ZH4 z6t&JQM~o9LFa+YCV;CoF*@cQrXcUr;;vAc?LFZ1!_2 zAqK9JpZWJ`==hRdTBqN|U-2_x_kNIPX2T%)Zc% z(qs6JeFttA)5z&1>#xk;{(P*uaD`i#$=bv6}5y%MROH;-1A2un*>D=P+WtBT}~{EYgIyQekE z=isie#pu~HY6H8#6{mw$uL@|ugQXt%m0}&%lv)tjM0(;=+|#`!S>bkL{6kfv(0ZAr{S(6p*@RRC136^} zZOly!VLk;E*mULrvcX>dDx2kN+dKxRm+}F5wW_=|; z6AV|-D-`{XpBDX)NzQjXW0PsB-ZdNRqJ^OyFcOhfW{~Ti945X7LsAHTawcq)M>LA# z%ut)f8ti1F;$rDRgIVEMP`cvXG0rSL!sIViD;ltYd`}y>F!E$!!lF7u8AfxS>m?W= zn4w*T@MZaOigVk_$HK(K>U}_E5A#uwSDFv}v)_1#Q3;mX-iNl(QaTYS)c`yu?@{V7$KfgFl%2;rzq*KPW6LZa>=j_>&(!fAQ7X&;Rfj z|9P^qzOu2kvAMalfv&VsT;5tMA~9L*5p50~iboj4FqD-lS=mdLOijwC`K~MUvXcwR zQ=@(|YnH}_*$!)gsWd4Zi7Qi#oLI-pV^aJ?6(A#vmPygX!C-Ofi_-BaiE@K6pNX!U zyCL6yr^EPtl^=pt!&X&fxu6;FvOrFh7Wi0?2M!G%-ZuEa2WB^Lla^d^VvR<3+TUvR zPf5`W#V~^9^AL{Y3EbEiD4ym?4a*F7-fW?Wm}^-1Og^3#nfRhL7o%+cv(cI50{BXv zd+E@&#Krx1CQXD<%2&^Y@@a4{-CSJtEZ)*;NCP(ZqIAQ-3?9nU!9|1b#9PaSEpvk8 zc7>qCRKfxMGs*IfgpCiNgqqBPRb$g^BSqG>BlGA~#A}OM2c5~Vbs{!}N=%;YXPLxg z(YiHhhE@NlOK~K|Q?NvH06gp2ur!{^*_-S!axTf7@`0p~3{&mw$`nH=lw$(doy1Vy zVmPi?Cc-suwxRwioWeBDG_M5g;0MDQRF{bk(G9SyCB#$$P)q~O#H_@}2&s{C-%L&^ zV^l>u^A0kEO};1}R=&8O!7IjJ>xX2xUE>QXEIH( z-M52&h{}Ua!x5=cQwZmFHV5}9$w7I0WN*LilvmP>xnTeB_b%SgI4In=rFg^`>!g$o z1kNqOjL)k32ysX2VQ;fZfZc9gb0{uL?R6(fVf{hvGW}e|3GW49%vFiCLt>kqpx{hd zD$;C-#M*2ROHp!DWyDMCF(Tn0N}tE7@;Dh0PKDy8f)5(RZv-IlR?T~r-XIlx?i(3) z^G@vH-tWkUpe zb|GaqKC5#Gl6S2HNmKPbv=GM^l30094A!$#oSJCmWc5w(=mB(qE+P97@onDr zCrYL^BOE(eEa7_}tB42%H{Xf@!6aH&nWqwRCzSOT&XG^fEMdg;s6QaJT?u+RXRG(0 z;n3&_qPu`r=jY-9GqSk}j_|ML)%vq(LmkfrLu&r73l0-=3hpBa#@2Qyh<_Il7twnH zno%#zS9;)I$MNIm;$O@9NYB?ufvn~kY1-{fnLkR@lYIUbMR7{^jy8~fkQ?S9sPN}g z$pz70%GTcu1X15-q8wfU+VHlRBcZO_E}_rB z+d}B1xf-m<(y{ym$8{Oljt3OTQcA0F7$=) z)I3tic($DsqH&h1IT4NnQH_!qHOpnEHBkxSn=}y3@&Syb>SRTXgqqEHnU-yWe(E_% zCkjg$TMB=-oqP&42`7d3Vo$kcj+A{8l!~TVlqjxFfm!$tviaZP3QyICo7^|1Xv$tR;i-Ij!UJ?v(7|drNyL!gP@-1|w;Yma#notcb?6jTR09q`qliApj_QPapIr%YWO+Hf+!)wXYgW9`K9#rGW0)JVU{Yy@g z3}@8}wble&$B1apT~%@wqA3z31luD2` zYjtgCHf}S5T$t7bE82a_E(hvF>9ot0VUcRLxXG)hjIj83BKU6E{Up}w-6w~Q)wi5P zd$b)o$iS5)nd2RTAVfuOb*=(LCEL6x=W&nnlQb9E)ov2PxlgE*t7XK*Ut|P51A)p| zXHQG2mUTfhNem^Y&cmcQvXOd(D)e7IHWZDp(C4M(9+m#e}X#)4hk zjO(JgM0e3Rg7M`mYuhe6vc&eBK%ixZcnR${PHN$ybtZM`>BR)YZq zI&fc^In)Z0K(?4G{XyDMHZ%Jea#NUMw+(tma$T`1V&z_eAbzu#A;9G%*l1MH_X%P? zLm?Sv(I{(b2jUV!Xt`h_-U7A6zG!fN1Y{clpLQZS3Ybvc2dt{LhGN0MXpeXp2fWXNLq3xth9*mkcwuhOL zxajf7V@b0%$n&;+{Fzk`6*iP$pBs#}wob9+S_eg?-sdNk4=K>MH0q%6Oit23pERB zZ5{^LQ@^voRRDyE%aP;I+s$9lQ_MkCnEP|qDC;-(q1kE6x9w!?Cd=bg z?`Od}%5ny>7d1`*$!B=(!OH2hrB>$Jx`StPN_}SnNFJNAM!>;!`bE*He5~c0)x?ui zr4|y^ak4dy(`MI9_q5|Yow0uO_{Zf^4ZV_;KWt-3jdz=P?{a6Cmp4{6*aTy3b#;Zr za*718P?T7k7ZVB_TE0UMbvJTXvirVi=^^dEXFGfyk^?b>hJYH`n56<*|L#Lrp1G{u z$daULAkK7ActSf5+t+6Csv7`c)*vO)mqtw!XQ#LQ2Kv z`qC!ZtpM;@_O)Il4mZ9SPoh?Nu&;^!4@QA z(CU!UP{oI0FIy>Vz<9O%^fN|u+7hg|f<}b|&(W^!S9OYSAn+VxP%o)9!2a`amH_Z! z;ZIPR_^LoZr~P&fZ;co@ddsm(inDKu3sCT3E(l5_^fAue?>}uH&V6Z!+r)=SAd&?F zrnI$)>u;hyOgO!nRq4V+jL)K4YH{hP=%1H;RK2L+wBs+d(i2n;WFk~&jXe*tJwiH>Ss3`?4Iafw)QH|{tjOE6|3g|QNIa1%K#^|mCz6hTS9l9w!~ z3u#2*^rVsjHk)9;!4q;FK`Sot?72Q2 zxPuIO<2(9Rf4EPc=qFk2fP=w+z=T{On>rm-w;Yrw!rQ`>D3_nc1cC0 zjwnuyK}qRA?c)(cj$$`AKhdA$>A?YJ;ROaz84GG&33P8;7oMMfoBu<5^kp4u{X_Uv zoQYGZfBwm_*R50=%|2Q6BiF(9AAT#`o7;i^I>qvpET9cRSgMX|)&^M?E5+qC5dDe7FI!;3*!7WV zX$`i>l=HRP5h)Myp1d6KL?|1LZcUGxaO(gLr;Ma}Q{wFJJAXpMh4TvK*)+iIz@Q2S zIfIE0V}%$Ox`BABVFhgMv{tGynrKh{TV7(i-WFGu*4$;6=;eyatR$vF!y2{z1-MA; zupScDb(kUO*|rlLq1Kl;qg6B!n^YFq)Fw{z0s12n&S*SNeRK3?fj)>ZjnDNN0DklQ zEPlUve%3m?c|OzU`&hBiI^FE)9N>*){Z4%_0pT}CCblb^3iiDNXEmd9>*{)>Ti1+? zfJ=cLiK|L#Q!P@F2=f`)3Cuokq6_6n9gZS0w6Icf zK*BjCP^kKED7-$Y5U;*?LP={x4sv3nU@Cbn)V>1o-l_!I-ahZvV;Pmc`dEuTRBD`> z2;ft$d*!GWTK;}r!FQkcU4`=V6y~NR|1LER>RN(HfpFQrNrZyEzij4&HOfQMy;#sP z(W7GSJm_m{y)BnwYS$9)UB_MwjtH2hTK@gno7$56;@@{(clrCyGo`Qdl}OsMES3_` zTntHZD(9fR;kj+FMJ{g?e0*CIr5 zo_uaA3fw)(ZRF?d;P8~&Bu@zv3OO>GoQ)n;->9%3&*z>o zZqRguNwYE}49VR@vzbT(Hi0ReHn74w9wHhp)(7oHF~?6xvKn3P6pI+JrA^{Zq@XVm z_hAFYjn(Dl)y=gPubsA0Tv}U2F(VV5-4>VFvutytSX^FRMnJP2Vz6PQXZw4~VNfl1 zhKvHdN`(URRHnm>T;*`a$QiKMB*DsY!52@eKLbC7Ll#b%P5+x+XsWGp#A6HNAy!D( z$L>~*EBaci8N&R-c-NB?`tQVCF~hA;EMb8mhWDS3IvZ<#fnU7vwvwR1RQen+$zjoD z1z!Qs?!*khH$vFPB%YQIm|W8Z(yR%z_Dkf_LJ-r|6qtU~ocaZVRdX{Lwnmk5(dY;F zvm`>r{Yh$*P)!)`cqAl%PpJ^K+D>#@R9H}mTTp`$$}h{!kHueqpGmeMckhCkNIx_& zU%f>_g|-_ZmN*!*?p609_+WnueF6*n;T-ls?!6WythQ7vI)pP`}ky+%ruVG)g!AEVCSw zV-~%YiTTy5x7ptkpS{<%(lX)RJ~ z*<_JsTR1f%=;yr<1kWc_7GAfNhO?g+@0#4J)+S>94BAt@am)4fpZfuJ~ z>&rzJ{CZuVw?$cu+PQlHhIxj0ndHe~T9xll*G47R+t5pK?s@R-tb%M{wf$yG`JA3S zW!y3QJdZ2vlAx|pKa8Y80+zC?rAbX8=?QwP<)f}s<;!`k8{qXCyush}D|}?@jND4* zyDWFSVk(s`y4WF#V%an>v$z&OH5}VS^pXEG(fO7TJ;|?N%5>{*D>430XmFq!cNP{W z*}z=TGWuf`F%vBlq%B3`@T5PiVk>0PnW({|Fdry@zg2@#(*;Xqn^w7zbL_Uo*a(*+ zx46-4k6t3>`xR4ER9wO;4PUmu#!f{8F%@B0kTKOl7hDr`V=wyb(fujQ5P6&3O^oH} z5!htgx6_h2l-U&wncx0LHqjpghtyP$HVU4p1Ro`n zvLskRFb@08lR{n54m=^t>*!)C(j2|MxPbMo zIPa@IbC~uOKYYP`vY%g}l{sowWnFtUQP~p~M&wuMjIPj?@3_LV@!s++4)$=c(G!wL zJ1px$uM6x;g5D&7+%oq7W>XcE=R)d?rEBD1Jw;yJWh2SPW?+O~l&>hT8IP0uLRzVc z=lIftcf@2AmkC(u;ccE&yEEIA&goeWmNX0tf06B>4&hPc3pP{%CpaK4UVLomM#s+R zTTVdqTy5$!Oth;BenclBx1M3;C37Jxy`0m?3u`+f!t6&!%|#V*t=CtGjjWK8y|m1h z>Li|R!0%a&N|v@Ip1oxa&caswAG=3VzF~87v$(;=#t2}P6zsPq)QQncO9p`~K>^&e<-wB3P{X9Y&lbmeEi3rYnII;3Yb6{n1;+`>w){w~mLepg%t7idgcX|_1HS8F7%A*OmEtAf znrjGM)eJBf9qxz<89eda8xFRD4zUkbP=VeQT$os;!7$Jh(&*ItH}6$E*;m5=Cmt&f z_%_k^WyN)!Q(H}bA2r#6+ci*Zdcz4XSdTNW`T=7V?7)jKilKBC51!g4Q}Si0A%ag9 zR|$`MN;)t`OtGM}bNhz0F`aeq>V{on$?L$e4U|ZcLL+2iKtdz8pGYG3OkOVa+P@$=RZyVss?izP2rW2k-od{$TKgegr zK^0~|R3S?a(yqO($we?kVgisv+qjh2zK{p0VzO)eD0fjkp-tbVJrZo&Rqn}lgONzf z>ayYOjEtc%xXXCXl@7;|nQMH2=2yfjdqIkbnuep1I&7lt!%BT;DkkeqyF2dYdngmx zMO$LGxNFNLRVa&HT7oVZG<@cGG)ay&Q>I#B9uYb{Dq~n4pk1@Li1f4Ya%G`EY%Nm7 zXR)}owYexJY@sll?0GnqDW1XNt$44Gv~HI&RiSg@>cbiLK6v(WhOBe+XACnyvrWRI z=DJQ9awz{$$sD4=?AH_aynq9kp5y0oHdM*1;AazK6!1a@V%B>`Apa*lZ2i@~?e6~O z=R_A-$};yoz3-WpIibT&#O&AzgGP?}ZX_?>yhfNNJ?Qbca}_vk&aPY(4~iRLz`~js zAkMFOi?FQ~t8x|dYdn=?;=408qMjb|-$bUhGjnKY(nTRR=tpAG4|upy{U!v_^W^~2 z4#-jsc@oCe=)C|vW);!lRk>b)?NmKW>srz;>KMIhX$mvd8MUB(nxa>$``61rPqete zoT{rf?`OsUOwc}xyefe5l9(jF9WgD55#pauKPAlMiNpq(03JZ17UAz5Sd6I3lVsza znOY=|7Uwcn2?j2N8$tyu;xUL<*g2j^U~IMK7|Sd{)VAaKoPDTkz#^g-L5Z>iZf13! zSC`B$FJr-1*$|w1@WeM)ltCk2x3WT=u1%^LswnTCuLdI%GOkZBl^`x#@GV}g)RvFa zvoH?MWbMx^XFYIKZe|j;5WrK%$M zL*C<9E0=E!Xf*A+24b#Hkt7PKVZ;So4dsS9vA(+dEpN!cM*rtG{Isj`B6SFE;_Lq&x4p`M+UIAwRk}|fVO%f;^gb5RED=*WPLyV zNz+4pMrMvGbk!Ao)O_&HKV6?N0L~X5E4pw&djGN#P2AKhn3)ES>$ag)##mYk+tn z;qSSKVe{6DO1^-{(#2IYBq%#M{tG`NViUq-=VU~HMq(@=2f?>zbs%fi2NQMD$g7iN zvryB+7b1+ZtPqMXj*of9Od6h?Z3OVw6%}S>O}@5yM!@K@`>KM9gTP_8lj%G|{8of0 zo`cA?ieF7As>oNK^lj4(UC7iAxMS`=&H8=d58t9H6LWA-InQBZp`0~=R;2I?;PEAX zaO#FSAI;{($0TXfZZ!2ARZjp>8S3ci9-i(~CM_nmW(JuSfE5dq92X~jYjVwA6GFGRh1}b z*uq+QJ?7>LtKNoq4sZ7$Z#DvEX?Z4w&4j_CSI)R)*%B*#BIRFSEf|oK-j8F>h$zd1 zRTL;zGBi9Bl$rM%_SC_L6Rn#8fL3{*hWbKTqW`VQ+C=<#-=tgoQ*c63fD$Vp9W%)) zUeillBy7{x?{jBs9mTf*&nwqF-(qgAwo-g-RG(iLw)K6Wtc71VxjK{f=mwy zZBgT}3*FDoCz>UO1V{X$jmP6o+9VtmKPxbCAN8gu&wZ0)R!{+Xh_^(QbI{61z;wEL zSk=3oU-cFa7?#FhqXO7Ohxr{o%e|}K;kB?5K*QXHU&e*651%$OrRpOK=w+&}T{fMlW=k-^ z9C%hr9MK8wTr8Z5dV(rOvErz@d-x70XK(^KiWV>iRUdkyZsu!dC+cQWAfa!GLJ_s) zjScX8V~y?Qv$a+3Q`zfJKBE4y%#(?b*r` zvPtH7U_)uTkmjXC)&K0v=kuRzKVK?rz4&?Y!xX3@f4y!hX;chvCSd77I zXC#tl@qe%30WsYy_KPuM23ej<7_~fw5$4{l^tsquz0G#@&2eByF-NB6EkTpqVZuqV zLhv6-<_)i~=pj@RJu*|OygZRPPZA7e!?nyDku3*3^T55$T~Paf%xJ~k4gQdiEN z%Gp$BA>;)^)0*1QOjF~Y>+FDJbH<61>NO#i$jYeYNq!LT2`iceG!gg?)0eO@?2@7( zQmXS7vh)?`vuzt3Ni*UL+n8s`+y~bW^#edlel$0=3v<{Dz$rG}Nt1{=Dz)JU-{kXC z5@fI^`2s8q4a$uc?Qoe_@|1g$>x+?XG8MIWFb%%0?K&rFCR^_rQA~Dx&RC)H-OwPf zILD=TU*-ssjn7r=>5arE6&j;G4{_2#+u>~}cUfH7+#t@eL0vSfzfV>ZyD6`&Y*Cbk zl_YD+yp&fwg?tN6}1T1*~cu;sHf&-i^x_8f~Ou#Zj4{B?IRI;l7sibu={1SSejdyK9U#$ABq z4)V>xxWU!aAva5uq`82+g8$>|@dC~v_}C>v9hN!PriK>Iylh3FD_Cjm1{SW1=rfxt z!xXY1%#xLGovgW>rFtxv7RAT#v6-uUI7c(;x25~>X@|H)^ADLDs>-Fc3(_j4^L-IJ zgxQngHFA?gHUx+k8O*WB5GW)a%{9H~pXJ_)WKMFu6@oIal+7%bmf4Td#U+!aJksX{ zK^R*1uuM7Lm>M%B_GJo~=`E`TSg(i>L32j8z=3Yi49mB0bO^V+0m}En#m;;4J4D*b$!Kty5gOPn zFOSCZAx!_&g_h!|si6LQGuARqj&1I;_|P`qnswFmIOa;$>aE>gbKk;s zEY-rINdLk8Lz4;;iAIBbR`{ttgrKpxuQ3hPK)OZ|iU?wMz^9X6C}$`gF8sa=-P^U9 zo9k=J=#;sM2W*bZPt7NUBpbBRcmX79@~+h&p$eXNZi%9K4Uw>iiI>B$A|m%7_;f(2 zafWqF`Ek4!W`+x)7@@3jpayc0ZE0}aC@^l%II}EH4L5yOadf$|G#tU)cby|mhHeYuk>}@PMtb+>QvRKQ}x!%RILI}oUO*7YHPsO zQn`9BA;SbQY>MkP;8UlW+U%It9x08YTW?3kAt!%TS}WpxkJt-<^4ZxfAMK7p!kY|t zHY|pAzS3&gdX?~UB7eEnC2mS9hr9aQ-XdUHJeRvHh%QxsNhI5$FgDXwsq`Khs(omb z%MQyk{BR8C`WMbBJJ->AQlO9R(KwbATy}3BJ#ye(2j1f!xd}@ALhiHyD;(C4S3lZa&*HFs6}mP(LoPu-koybz#)R;IO_YH8e3G<#lYx-+UgI zZ&cvC3T^i;j&b+Js1Ex#G!APR9vYqSm!S85V3ChgoPE1KuxMIy-CrWOf5)z~JL>!1 zzJFf;EPEe19b9(fBVC&}*lo*eM7OeOn@%du^qcLMn>ANh` zygVbRlOCcKbU#NTL%G!8VPj6HGk$JTGm(0-&$DVPZPsf(*2_REBLoj{a*Y2{DYp0Tt^AHh}g%8S0XA8u2ko%q0zd5|r> zCnZfW6;v3H(2+l~9 z_2ec%y|K0I%5hUpO0Jgotlm(;wJ9!X|MxRZq_J8j|ItH@;n@3^bVr}BEMgcwn}^mL zm@>|t(o&Cah1-efeY5BErn?p%8YH!SrV66qI#<;)r|M6!A5@XBq)(^K=2Tc13QxV@ zsu1c?I-Xmt_F3tPGL?(V+Q+)F(&W9p+?0?>`v%u^T-Tf~yt3UJ#g*gV)J!cN<_alU zIzS_lG4nMuc%()fM>hK+B#j_Gg_S7)gkOW4gmV@H#8 z=7$L>ZOZuxq*y-YV?cnlyS{Ek6R zcIUHHY5(+@Q<(j9k$P6@-QLyw=1Z8xD#%gfY_XFRno81v$EWm}x427d*Vm*`j~mF; z_0L@Q)zHd8PW3RDrc?iM(1bz5rekid=0!ts%}u4WCT&_8^I^*yE^L*x9HQ)~uT)jH zPKyEM=d+}Uh|NjL?Z_nCVy28p0ZZR^rhRp9#jb@L^i{!gdl06Ava`kuB6RC%zpKTU zaj45W<)ah1+K*?$Bx9`@;vP|&^;yY4MY=O6ec1%FeA)k)>e8<(azuX>OSqr>=HK{`L7_^c#5L2#Sj#;l-1WzuBfAi1T`%W>^v!$fY$)r%d5;J`! z$fhxPn*j>On>#tuw65|d8I*a9+` zBWXiOS6DwXVTf>sH6O`O&GAxwqf*C%9bf##Q*IMg%q z9Pg4vDviCYFof7&lU~pp5jyP`3VRv~G%V=#DKrY1rgi)ZQ$ijNbk~lqOHs92E);9|)BbVA3O(#vnewU$a zsC213Zp16-)SPYN7wc0Rv0SG$6Ir&49nmPl{;9pjBrekr)P5MCO50fOyY%~Xpv|Ux z8!YW!t7PutbIR!razA35CXQsp(R`-SNCGmwh^pphbL(QUnz2_*E49ss%*su`JnY(W zg7k8R>=Zgx#F1>t*|Mbyo4iZ&ZNy{BRn@VA5a#RyBUF;?%g*m5x*~KS9S${;so&#&r z40dOoNptT*{x;dMh+CoKRa(qOV0+bHB6%*W_Mu(JS5{TYQ_u4$zy2eqXVu-!yd48z zKJ;VBNTdv@R43C$tmJ}~8N?rLsRacApy34l*pCj)kKM}3j~f;Z}^ z%bPpsbMaCcvd-qNdZQ`%fOd_v>!vl}u~XKk+~nHOtW=xkPX%QD9f3 zL?<(wEO_OOEjpHr-JXS4kFV{8!)!DVRK&PzWZIe z59ySa4W;O50I=hF;+@V}pL^z%jN~t+bx^9z**D%iv9Io4KTV{ME}G`3HJmAsCU5cL z;j;JFZX|sN{gfWBgdfv7uxVP+9T2lRho~FTHL_}is!l8ixlrAwXQ5!OyaxqS3YHyF zjKO0c@_7$-_N*C}X0Wt9#LTI;jr|j|_1$&~IYZkCob;xTy;m7ySe2#>?OSMRMZ?a$ zJ{-)bC_%_O73HP3)t8pv9Ji^{Z$`-*8Y68>oZF_S{2L2} zzHM-?zJl0@_dhsarw@lqCt#k@n$@m_7bDUDVyfYr3?R0G(IBbQN3mh>7SC5oh&fMtzzH8`+z5bJu#8^>a5rFYAdb z+O^8#V5W4l_h+|&Gc4=fkr#9ggYPo>*$c_FI?i>Qa`q*)v@K_T?AFs9Q>8Q7B{;_3 zSka~_zwFc!A6dH6QPebM&Mrubb+4?%l+*R5y~zKhjFh<>)6IC<$88Q-0^*aXN|w&8 z^ynCG)_otGJ$qul(tqC!{$buu*WFF|Mt1s@)=8vX`{M5lDX=&(i* zA46l2a!i`;qQ8Nv5_#1`-;Ll^sXP;z=9-MxmQ3oKthn=0B4^;)J^8Xo-FYH2{MmDU zi#bQ&_Q{yCPYrrcd3&T{WI5EGF6c@a!KAjS+6eul5#ZHUts)nCY{-LGO& zFRh@g@V=r9(~BJWl?+!dWQ>>S{R}bFfX1Qfard-b2o2djYL(s?PcPs2W`g9XdNYR> zX!CdCO!;Ro( z#ZOKj=D2DJXd+xlV(y&RJT!d^iz{t{;n5&>=#F5I>ubBiKDkO)nlw zk>*lDnX}K<@3_OPX?`3^ZzM)SIl72<<)y-VMZUTNm$&%6%l?YT+v|;-L0eV&!czHx zB^$mLJ|Ow!ee8$yAyr+(p^xq4aDeb2Bha@VXup~ zlCPxyR~01*r}Ptvsm_+AT?k? zGciQx9UPOKguuQ6|3N7YvLEQwbK1D!c*Kog@T#1IkP!JxU#{Y#V8u(f*I$r^Z8aM} z?Ih zZE4Q-eGy-?rt<-8`}1}0xLeN_*J(Q@n+E)7{ynyc)C_<2IrRcxhpf2DS$T+ZNw1s| zWW&Wievw3cmiI8P-wqE;@qy_l`_=E#TH-!-q1*&;u~H*A0XI2}RBN3}VS=CEL{HH$Q# zdmfG@LCkK>cD9~0DEViTY&(`0j?(emUB^_4CUMrZ(+?lhRX2}LyBRy1Zc;|dtOYfg#9@o-l5>TfRT*;imZ~dF zaqL3sHk%l>AoF+6(|1Y3g27taIzGx(MPTiSj5O^S#Uxtg2Qq!}=R1gg&R)kGpZAGM z?_eaEDZ4No*AM@jNMKBd#rmGxy>^yNz0${{WHL`ufc$H~mb4u7o^X$AJ?X&M*CeS~ zws{>|4?<1mbb484Yiz_>($WT#rtbqlJZ*nNK6C70Sq!_I40I7-wtCS%#8i68BjE)>qcdNlHyF^__2tVmZ_J zuv$may9XsmDz^_**NJwShtDk~1&BOzIa%B?a$1f zWNdb`gbmYA=&;`*Md{dCx#ghBS5)1+`^9Bj_1zEcdtr~Z((W0s(pH$>q&d3o`4+Ym zw4-Q++1|97$IEpVn*rCKHmPzt-Q5ek}kGoW`A5BmBwVR2tc~P1yPwE{kVi-*| zPQv!2=~!2)WWxLsc{qooT-u32n#!{tK5|!0b4|&{t7zbI8upIS^cog~Bt7`LTTDz8 zSNOC-eD+PMWn4xgO+@=Kc4qp#y*}`kjR2KznV3ebuka@08H%j0FJnem%)RzvuMO(H zJnhOy0jeJ+(3~et!#8Mj+n&8MpygQ{Q17-+)!3FfT1T2#eJO+{;dTe@9%~5J*b>>E z!7g&{jEv5UXEZdNTkJ;IBQnq2e#5h!s=b)R$#h$B`zuV$R4Cce7ax&eA6Y7mFd@68 zRbZr1E<#M&eXBT+<8Lm6Z)u8htd-H-a+RZA+PzD=NPgZzwiVuxLke`4hwh4P-iK0e z)s+ldBdJMT3$j^2pR_w+XV5ilr}@pws&>e-b~ezIlWBDtP0LK*?!SI|D`z#mx`Y9Q zYu93bO6!vwnAi?Vg!Hn3hDBMPF!q?9Vcm;)%U>Z2Q?aR*YSJ4V&MM8#_9@+IKD$Ya zCwq!^fZ`iyGFEbEM2#sMz)CtFFJrx#+IQl#IU5$t&R@1SUr~Aia`66vdXLBT#F2Z4DGzrVoiuS0bg6Xt$){09zfGN@#Q*EAL zH#-j+&7Jz*y1q_gXF$=0n$CI35T_Js#!i09cKvyxs7g`|c-uxgfQ%DQaah~M|0^C1 zJX_hZxnw^pt>NPYTZnPye*z&$&OkqkhZ7uA6@ex7?G zRdfbU?!JpDK!&K9Ju|d&bL1XBFtw+@t_GbO)-3|F<0Fmv#_-(G?A(&>h#Arw$hwqu zc&;%wwlFrgv@kw5tJ?k_gfK;NZg2;^_Rs@X*-E zY(xL`HS$qinYb`A&Xs$*GI4BiXgKMK5?lKkMrLbF5I!$5L$d=AXS=$DXLZykguunaIad?i+*C2cACi7a|)^$LPFC5c=9G$_4G+a&&l7@3j8 zm3!+4bQeO>!_+1+d&!)_plTEWZp|+6HSzLLnjs`WqNP^7gbuE6v2|geUu0Dq2jj@580V)JiaAMODM|&ttfFvx=rY zul_P?GD*JmtVelW>zMXx^)69T3QS?ju>Zb8>Qq?ZOO)74gT;MyInnv_4Pjr~NUdGV+-DaWl^UunlMdy*l zp7+>w>lFvm>vx{_59i#YZ`D<{VmxB)nIR?23JRAZyc8X>K^5)iks|i*fu~P)p}$3&gG*=9(wq} zk6wC0dF8$~!HJ8Y;l2%QnrNEdrwZZX`? zEE2n5IzPxKPs>*SaH6R21_cUz3}v+EtQZok^2bUHHX2+H$=EfHn#}?;?XUFCnOB0I&ql0tv zi$i>wY;I^^L_09^b93B5tIK($G!HC|jLgpKqXrA(v$I396GMw*b3==Ba|^n@YgDg5 zkIv1Hjtnd`M&}yy^CLrZjiu2c@XZe`4vsAh>XzHN(Yb-Kg@L8P#eu>3;lbgtrEvj_ zE{=>2&FcQ}CEW$4@1-q_4-76W&J7LCHkO8GrE(9e#EJ3w!HLlWT8lpX$fJi2zvHpT zpLp`f)H{z(A3OfkyWahtubQ2k*Xt%L-ArEIUVit!zhC})o_4)3mVasEK@uJFD3Z$M zRi^*t&c|-Ti)N{LqfZR$#;r3iCDpw==W2^mNt5dZf5*6BTHs(wr2}Q-3A&gD9JDf92=q%~Tc(>Ceg~5^Q>%?9HL5xf{pfwVzrfEo=kaDQ zvy5H9e%;;)C4K0I1AwidYype8n9|SgwY`4c$n#ObE9n?YU769?_InQG-IHZ(sSXlo z7|Unpx$`GZrc+v)iL=v{sUm>p1D= z7LK$%mNV&6u=z96>JM9c+P4tZJ`a3|nd*Kuh9qbAJ_kAKs2<_7XnS|uyJK&P-@`>; z`da*`z7#Mp(ik1m4PXk4=@Qq*xc=%sg%N#1Wmp%zHpa#VhBa*H76v{=uZv%`_SO{* zqXTb>V~ATDG)_%uj2qSWSVnc#_P{WA4eEO=gBrZX2kd>Hn7s!zv&AZs!Thk!w!UL_ z{?yzF9k@p);l?=n0E=?gAa)yhT#i-FW#R!lmSSYu&i1`bJCBew7}~~P2d{j7y?S9+ z&Z`;JHpvjBhYlP&;Mw$T_jG?Xh51&7k5jQ-n^wL`ww=-Ze%?V0D0=(CH%ODYL5i5w zB{oX$t$rjWzop6Ah#Rz}AH}D%Y|KJ~PA_@Nxj#);6@DaA^T$tM&Tg4}rp1Pni^tFM zaSH2y({`{$Ay?|M$mREOnd0p>2@V#U@|KiJEhtm>rMIRuZy)QM8pHg^OywBOva>b} z*t834K=q59qj~&Jip^dn11!g`3YdN7jfe8|p(8gPXwI$-ZlQA7hE8?WTAoK>uroXM zu4C4LUBP~fXe^@;l<0K!!tqq3EH~+jOizWoMWSl*+;!}_=FUhw$@NgYbMK1rE!i| zx?i5~a}6;e@oKQWSivC-ZWYdotC7tjK>c4bT{1R(RfvJr-d?gBcoauPWm ztjf7mS#d&3M6JcLCY)|-(PF`^$!E1ig?g?e)JJTkQR)M?8l^Q5OIOsr z+_I~3_03zsHl%M{>9(?=VSO%FcR>#5Q&%HgoMRtD&;>hL$t+fP77B8E@)8T5BX)1-a zutuh38iL81pT*{|^)hIuPv5MP<&9dJ{+4X+)pFwu&qo7LS|FQychM zuoqC#YaLjv+dR7oUbYO*9{gI$`MsOag9(T3{w~* z*3(l*kG%Um*=kik_~>C})ET-{W@^{YJ(~%qPD($tj|EBZd*%dukP`Eumu8!6Eu4-J zuXG!uDcRM}mD-?HDwXN-{S(^SKI0!J64UZ1C%uZT-5XCT-fuPa-N;HPvh~(%XtA~e z%a@a+6FN2ylp9#qCrb)!*uH)yz@qF|bzGm8ud8Eb<$AD%#o<{gv7>|Yqe~+T6N?k$ zb4&U{>)?VGv`gbl!vhO*3%dAvc3^mHesN-9c1XA6YUijiH$LBJ%#JqZ2IdzB7RDB} zQ?xKPJ3J)+{6u4Mwy`*}G&?&!Ha|N!IJY=Hr;h@TjV}s%Y+zAaRgKw&vEfnW9GcU; z+HVnphee9$3_e6!Z!5*`e`~k;dTC;K+hj_Zogj=Z9uThDR24gYTfm_1QVC z@AZj=rP;B?!67UK!%~zN8zZB0i$hD}g9`%_`s%{M#QdmUSd%ubtuO{~eY0?Bq`@`7 zSPQhYpBR_HU~p033xnE)n;(}oc4%>aa8@t>+l7$lH2dUzAoVK07gST146u?>dXmi5 zI+m)lTi(0rXP5`IX^=E_onw^AO1k#f_$-&v*s-u2v{yLA z_luI@i_bBu9Ghqi+xOlz zHHtahYd$eHG@(7mVSVPpmOm52Gb3LG8Wn2?M|5ej zKJz=ES#wm^%#BH0^c@Ucr2Ka+b5x&`6m_~KbaX^$G;I%QdBpw96XO$VJ}s0q*K7XQ zY%fAJH)}rD*XoCd<~7+%9!9lKDxw!B<|W-~*g37JG-JBzw1{Mh1z>|6t*BZKn|ZQ;(%4a_Yyr0|RlEi8?X z4=oJN4-GG=Zw<>5wlF+8r!O`wsUZgRiBI*NS$%4GR`#xjma6mPvm;A$!-MlOcFiql zgI7Dw!^0C&uEdm4ebIAvX>LJl*s-BS@oHX`S{##FH6q;NYhzyBa&AIhXlZt#F(zpl z8JZuHnxqZt!FgRSsGa4-3GT{XTF{44MjFdUNGTn%25QJ=6Ga___t#l7UO!BxEAbg5 zCEIC<-v6M^6xm3f#z>j2`L;XfyUiTX|EO*w21cE8_JgN130beOe)W!1bDH*acMtod zbO^fW^L}xV4iws^in3GBp^2cCHN-tKz6{_@NH zhxCFi8uBZz=)9W3b~o`WuXJ}GpFZ$tK&fFpf!AkWc_qLiw0QEY@;4!S`DOAvb>b|i z7P;l)tO|H92Q3kWQ#uc(V*&4f`DMLks04>Tpldc#@xs*<@)F(~mYcKv{r!-s+z4b-zKIz{zDaEDz@v$ow#4h)V z)DP$+ZNE+=p6u64#`;=&ceh6PIw*C*d&iC)`}f<6LWdqc`taM|uCS-uIS;+Xr(?Xxn3~(guQ#@w{Ly=fco`?i9_q8z%0ljw{|bywjwCqG`|% zIsbc({b@LF9vt8Mj1E*w&tEq5r(rvH%NTL~2h0_+0dYJajUuQt{fG3nRgUiNe(K?) z)0KH3r{r-UjWO2^&|ld!B5QZO|G;@2A3MXq)P3Oiu|r3WzWlN+Qg_`UaI6|cY< z=cKz0)Dy@nuS_=+)-(<6lqqWQLwoBx-AYpzzOqciTWaBhx%K`o z!}dS?xcvsCC(We0`_adbJb2*o`brac=A4VJajsdm-++CdXJz&sJazgd`)`0@f_CmtE*{p~ zh{4i-7)8T04OK}R_>nWmPiyj7EM;zYS=VXq7T5h!y1*}syqh?Kdn&7bcVxuTVx4|6FH!V@)q9O+G$MaU-HM!u|UnIr8{J z4tfnH*;2qDu1aN;YmD*SjuApDJ zgVG*BE4eC_ujXBODG?;p>y>Qv`6QLcwe)yFLNk?C8x@$t8hm$G!qf9=p?;s;_p(Ac zv0#qwU5iz}g;~vj(gLxHDY*hY^EVpXj7NLx^DA|HiF{YrEBeu?`d3)dC`J92MUAa? z7^_uFy=UIl)x{W2CsM?F>tZ1t<=*JOd54yjgaBCm`7;>dQeV(aR9vqmc`^aiaL(ikJh_2c_lt+~=dRAX_W=XCcGoZ{Md zJYw$T54t<^t1}j!`B`@_{g}J2{;s>lYfo8v-_ys{O1l=|4VmgHaOm5qr2BS9Io-U_gXoVA9>Qj?`_{f@hr z@ALS+|Hs39f0N=TQv6j9U;D4_PX3y^7n6H>zr$U8ue;a2%H5eK+?{$dr9bNK=|d_0 z{qDZ{K6fuX?e68TcK6b>yE8}JJ^hTkeJTC)LV}xj_u8DhjpX*d$HSBFcK7tV+`age zyHm&AZ5(s=YJ$JCEe{} z{o0SXd-^Az@pkwrcQ60OV-_wx^0>JdKkDJDKjH3$f93AXhdq7r+Y?-JCm;53&9M}# zl6y;XTaw$I+}7l-OYWNF-kjX_Sxm&!F!pUvi;^F!W?)IHa?n!qqZ*g~Kle^b8yZh>AXS|$i?iQbM_u>zG|GV7o z{q{nKyO%%Z?e*%eQ=ab*cdsS)>K+gG-ILNA?ly+pt&h5UaXf|ZbN6(Qmpk*9sek`t z4_|rA-NxcqS$P-c-Fn=Xm%Y8N{ik<3KmN13S3luyy)W_WjJw5S?p~OG(BK^j-+}yodX~&fUh>x_jmG@9=v4cXy}$)ZJ^JP41t&+xHoFFDG|0 zrC<0(|_E{F%E&!gu*EJUsJX-M#Q9Df~z7UJAO3$Be$2UwYo$ zSBr!(B;k{cy_nu)B=}fB7>99M7&vbBo*EeKmz& zt$X;wR?m0ob;o}?xvxH#;vaFh{)Bd}FV> zeVaZ0!W~}D>D%3%O#C~2&cj!3P58E?eEWUeo%yWKH9~~ep5E#Cil|2lUrz4T z8%Mq)&FV=Pu}M77n6G-#lQN8Y24Z6^jy8i-Bk!(K(a&_3ClQQ%`(oB=^b(yk33Z z>TdB7cQ1~3{jRinIgO339~J-B!+rnG-77!qZt*Mb)<2oje=&u(IG(BGHa`7m!E^Dl zyE7km_w?^1_m|v#_1oON@E7i0{0(=fe*PKDf9cci_Vt`_e4lgo+TXZ)`b+Lk{ieHD zf7RW_@1*z*?$-Y-h5yvung8JKrG)3=fAsLR|K@J-hwe81Uw5zkw!5$Xmb(`}`>fIP z>a)rHBd4=b^YG-KczE*5?q2yTcdz}qyB9v|ZllHFXF8JGnebin^vRU(^k+Q$YQk6l zwnJ8a@#F5E{%&{szQf)6-=y$I+`aTgZ>P(zyE~O!z1?eg`gXc|`MA4Re%{^5p*c&x z{F=Knzv=N;lUu*$;Y)wvZn4wh8XMic7Vhf_?hEereLjW%+TANDzNXST^xLUl_}h|y zmE6AMZ*qf*<+;#1BmIUG4`@6O6)7j-ngrFOwjzYBN(@l(gKN_@~v`GFspzzIFkzR(kV20r}2 ztV;Ot->DyE0bjgc(z!9k0~7Uv&LXu7Uj!q6Nz2?rkHg9cmxfrIyL0tA+__~AF4>)mhg5=7#mtxbRM z6Cdqj^{TXWhX4Z47QuzTsK`n2`7%Dr1wVZp+QjZ$7s`ryQJ2*MBn(gX=?8w}m0aSH zk^TBb{02qhCvWl2vfQdX6l$-)8GRpmqK?oIeV_UQ95}0WtjZ_&_#qd#z=H>uA2dhZ zV*Uvj62c$j8|@OZ0&V;P&ja#P2IWtrc%xa7z>tqV0u1wilN>5C@&-Nd;Cu9oya7*{ z!3X%sFJP+jd9!2&oV4Td)b7Bx3K)3&(2Solt1_UV#gi8Nr~DZI@khBvuL=Uz0fSdL@E@0pT2Yz4*86NRNPtZxekSp*< zJT4FLz{D6rUT_5-8WunBA!FbP7%R6zKQPdV%R^r11VO|fPVwN3egvMV5BQ-YXh0Xj z51r5I2Oiot;K390;|Dg%t>U5KiKnc9!;SU@7TayWgv=QI`a?W4+?`+uLkupzpa(pw zQate8l0#^gV^6@70YC7CjLU%oSbp#@+73K5{Q(C0Bi?9J1o6OFedJPBmCwOL(qrz! z53ax&^nfSE7GO44U^)`b*haa3! zho7>D#qYlsbBQOBILhiu_^D4J#U;a6;%nk8@rF|a9DZnSt;ECoh~Jd_go~QvB)yhs zHd$5Sq~oV-{QPPfuyCt!R#u`1e^1pfVBo0>V=sPw$Wr(j1T9YS9osjVA3Q~|Xny0# znlJ!J8js|Xr$d#)b^Ixg_;#lUcw_?@esn5aaPkK~ z^i=s4^>P{<1|9|svQgZ0v*pF#k#HJ6D|{<M=9_kFd<9FJi;Z_ku z9C^`o0|s3hKQL7pE_zFPlw>f}al0nl$V*{?lMycbkxp5`TWIUm0707ZCiNre>L#}{h z{eo-!-@euSR#wefEdrfj|1V)iJdl_?b+AA)d1FgR^OTOMC`?W1<0g zbfJKMEWr?_!EpIC%cRG_hmHhKnNhB_g=Q768 zSs~B(gKxl587s%V*-ynHzM2=x!ND5tPW>py>fW-d3)lD~oWL+9v3?<*b`u_H%D!$Q zE%LUuwpu(md4M4w{T3K_*dw8jyx*DPjs8~aGA3hff({ylGW(0pR=SnthZ6k8!`j!G zAN*Z7~10H=o`$Y_Xeyzfc3%|*aA3m&7X8ho9)mVq0I>1<5Y&AcjU%(fA zHKUWfTQ;xD@$`3Kpc#6|OFO@)U&h%|lk|DHMQ_dOV*F_rgA@-9K^tLVTMHiA;jn(h znH+W$odJ)W1WZw!sg`Aa!{63oZAW_@zt!=OU+aS0*4SN%Gk7Ug_`%ymPgh5Vkvx=T zDO=jymsM?g?Mo>LBE4~F2tqk=P@;^v!-9`JNXaS5ErYW6D) zzxSt7Hpl~h+M-$)`7N*UT!G->VuE*iN?u7HFnG!kwY^c+_RU@v`HPma9ea{oK~IM` z9q`P{_zh2|^BGwZllFrHd(L#?kMT|VEwH4iyOcDn_OgthsV>fEmto_T23+!5yx5N) zc$IE=@JD}f`n??uzGyX?jn38<%+w}_*!+VY8`O22Pzh zHa}tNfScOO`UP#F9&P*Z+vU(K%F+8 zM?0F#be4Th4Q%BaovALsuwKq|s2^!+cch`u z;KB#i;{mf-t4ZPs>oNRRF9nDLNmQBbbzKY#Kr{DTBWyBuGLY!C1?;umX|q;`jjv( zGX`I@WSRw$=MFI@^Q2hQZG51&G}SCZ+}qr{VDvf3yDOvXVSoUg0F3A9RNwnn`DV>C!*qsblae$wuyj zA%`X#?Hy}@w|+N2lkJ6FxBI?_R`>v-|Mo<;ORTT2k0->m-?s1Si?geNuABDp4W9k;#Z})41e$1 zwV6&eDchaa7L-ty+hX*SM#02GTUTWqzz!Ml!jt7n{v0oJh56xU(BQPy+Jg`99X#}L zJzs~PI&R-yj)98EIvZ>7fQhyMC;gpx!{1hpGrip|OYo1%M7ejS`dS@Z%5e-E9e6BW zGc7J{75srt;-W0kV1A?j%U{m%GTd9=0Zyw4lRbFIT8}t*(yj+TdAFqbop=ptRxay> zkF|W%<_q#lU9!C7=~X6Ne!|bTvf*Knfj;=k{tNN&By<)05?hP+vK$6~vGwL#faj<2 zyp+S#rUsMxzR|p8)21kky`fxI#jl33I$Bvt?=>0Twx$lewTqaDpE@eW>S8o&QV*Q$ z5#T2;Y50wv+S&{+m|Rv>Kaag9+L2XOl%?5D7A)Dz_4}bT|5Bf5Q~cOia9suxZxjyM zHu}>%V)U3tu47wjbzi40ZV`GW9SZ@+8YHQZuLVxJG_+zd&p6CxS z;8~-}5a(;~@y)~=p4F}=lUMsY72Wlt!+}3&hAy6*SEDn2ZbHePK;PR{L_8%)gYH{Gw`p9@rSu~8n;+L&E`&YTFQtr)KeFx4a`fIDQ z{#n#cWf*a04du{wJ<`_5Yvm^W%Kbi0k|s68`W=3eV|6!KO|)72wz)1r-Qg0j7QgM5 zb@+|viU2qL>+AI+-f#+@c;>#~A@Sl+sh`w}Jdc2jbdyO{0>8DF_TBLF3ps=a`d5@2 zc@16zXv7!AcsZU_^jlQ0jK9rwGb^{XxGBm~5mqK;#X23{e!c!>n3kH!0P>)r(b^Yy zO}>Ud@h8g_vqJEM^#FK)k2%F?l7IwE=wslySp$}(%P&sY`~r?IY%SprE1YT5ZdHa) za!Xhcxvh&%*H>wy2lS&{>d4-G#?xD_*=wo*FxZ7&*MXZ1BO42T_<-FKKXA~ApE?$` z?c0c>|6+&1Pr10jz<}xa;n_fVZ|w@q~ra`itS0zHM?re0m5+-zJK%<ay6Y!$U-_o349BRTR-6z7(EWNsudXS%=;jDzEGAdN27q_h2OnU-Lxq`Pg zCJbcj{QQg@O9!tJpTdT_-Bit-9(*Og*Vic^Y&dI-mSy=ZdKAp%Yc4>nElf^ztDNqb zq#Rb#({d`q%XDMww4lFtwY6%Q-l9#rlt0xa(_@h0XQW#}EizChc*Dt}B!y{TBUUc4 zJM@bOSZn`|a{tUY|Bsx7q*LB&uNB`-KM!~#CWV1#?2Pt-5!g3)fah2AZQiQwpR#^! ztBmhudP_}1gr!@1GC`%VwYRf3r(+k2bYpzlqXM7h7x^F{O#WW8e0bP79yW9%zxy!nhGg!Ijn;ikstnPU7On*80`yKGe-GosI>efY_Z+$ zlHMx6!3#d>Nq&Rh!U+HmlYakz*OGL8+k4Bf`Iw|qTH?2H09X()#>ug~Bmf@pz$l`H zasyt|R)#nJbo%&5x+SE)0Wa#Ufe9Ooum^t1x5}h6BTRaUf|(vc2;A?V~Ja z&x$2%^s2#ve()V@0eStpjBMcf_1Ns-exq0G zwR%cR^fcjX{nV!}|4K@C9ER0!x%`y#8TdF4#RDwqE=^@vQ8veuZkWVhT*ocXCPzTn z2rpWP7-IvU8r%xV@I|K)K$!B;v8w#)NdqS7R^I9^)DFW3A|>bcGn{V9$>|b@oNo0Y zPs$H`Zx>b-$7g`{r&6C{3&(3pd>HDh@Rj~=_$%`v^lF)8>yS+UsR?U(xpFxBzP@@sqxej2>yqX>I? z*}tGaO)pj+aMiHWU(!o>OR*W#i^0RMHLF)6emTDejohDrFScu=Ii;KYJ}|T+!cL$4 zwfx4<)!mt&POq6rEgku&%A3_c#kgPmo}ZtcN#y}wwC^x9q*H$CzJ`yu)LnD=>VDQt zmZo$7KtR|KacD1vO@1(nq%ibr_HGJmp=-8B@>~6EMOE@orM1;le&d99Pb<$5DUB!R zFVdm3#^1i}MLngHr|4bN&O4QnA3F>WVSZJ9lD`^;-nE5KI0mb500h3G zv&X7M82TBGDS@!JUprn4Tm7^kh;(ZY)7Cs4M7^#)8oaglrcJqjT0vG@hd0C;oq`|M zPN@Ut@{@u>n4j7#k2gl2)(6l!594>y-3lD#^Q+QFxR8x3(yhL(o*1mvr&2$IZ)wG>Z|T8$FHHMk27@-n}+K5VrceI&S%$zS1s7dFmdZE7M!ro8_%CpBTM9oEyC5lnE8Q zl$ZG5GnvAq8;?`i^Ec~H#rj*fq4Ja8>gPusEo}6ucHkl1^2?|MPQsMi>(haS;fL5~ z0ut#cLrwVw!xQCs$ir42QA|0c^XpY{)$)qfTA-&i%1_N@uuBT0N>04XQhm=>HUyS!cAM}F=OJIbpzHN5oFVim&n{dEy z^3~mA%}UtdWsi~9;Ek}LCg^WlzpO}L;b$V(;Fu={ovO@3 z?Rws}P4?b^SB^Fe9N-0hv$d9|8)1@o(tZ>U;7G$$4l7bU+S7s8pll5YY|P8FJ^69jXXS}>VCe9~;`)w` zhppii#{+!qkrGdsg)-)bDt;mABt6Pgi5s_x5roOZ1^^9)-=|U^pGY_Q*Y>W7^T5#7 zm1Y^zjgedQf==D>0dMP*gwN|s>7H)wz@HR`&SH}ma20soJ>h{K3?r|#eUp(v7<`^u z)~A;O6{I`vs zR6pVr(?7nu0tlG9#M_O`N=lYBzr1RUd#Vyq2XWm(t zBs9_$We;Is`0)^i-X7VbB5dhtLMEO1avm235w`xOvvRi%Iv)B1Fg&CiBIGH-L#WQa z*%SwE=f6C92$R3tMh(wzWmL+CPd0xhe57mjup|19m96m_moyiZJN8YEdf4k)Tg9d^ zepB2k{GmQZbINb{nD68X_(+Eqy>2ae!&l-r;Ync|PgZa3BQNyuW4#3q{6*O=|Ldb-h{2#E5uzakTxrxORmVmvYY&lNAf_eh1F z7T>T6`cm^*`QCnpq@-WwWAFq#-e_;Dp9+le&)UzoYcl;kY9;WJ-}qhYl*P|^aJS;( zA>H`dqUod3{_1>LzJSpv-GYfD@P&Rv7&^6hGJ`5%=o2byQo=@GMc#}a>0b;ak$>Yx z-;f|oMurPq!bV@~7F%F~oBsP+n=OYd9T*PLwKq!o=uIF19(`b)-IP+MtGPN?DT zlR%n6lgk$Y&;TvqsntvVTKQ>wiu|ehGJnSGG)!6FJ;iQe@$$ea%uV{7bKl|7H+s`) z#*AMX$QR+@5A|cb33$S;uQ)`c4<(M0-{rwK97v}6=tztwBCL+yENqO7zJ@v%Qee)z%cOj#M9%|0c)lt+gMcyh3UCT#T16x-Nf zi~K;tkFtIryXm7caOV6y9n0ix8UG}|C=}#J{y4|XLw@L|(%jKO*vd>y$oN~)`<&{DF@!FuvRG>CRd|GejEY;qm})gbyuefh$`0l-B{%U)XE^}Zm51iDO0npPFZm}a|xjm}u0s4#g zxe^|BgNFR@Ume06!tl$=kW1L)&q^=D8)aVrh9CI9AxTZ-7gAYx9p3P{x?=bUtJFN+ zfIp!(T6nLps$bIHvai^VX~y5#YYIC=v(aUhksImMui8Gf%{oP{9gRrm617e-g|NwI zYta||+vTIya@SpD`u6SH?0_Wj&{HiB9>~1hj$j3Tjxtiu2n*gC5Lo)fYu0PZborX> z14+D$zsS{VLPkAI2+ZtIw!}eSPu0S{*q&aY?;2_>e_t03ZCUjtB5R4G)%1ezjNAe9!a- zN#r;B5U50-lj;Iq(%ah$Uc%r@+h3N~*E6J)>GJ0B!cuBIJ={e_Ui$BWBmpJ<)*|Ll z;;QXOdmq+M!;O`XT!#;(>I2S`Pt~)7MDq5zvfJ`cIFHFafXayN-^v^)g-T=5#dahJVw# z^;m>+{vI8<5G916m+?wYPPfIJBtPJ39UvmC`dRxDw)PeanZN@dya;@xE12;cyr#1j zRVea1wCA_+#d3St^E<{UUng`;e<93I`7?gP8{hS=jT>)y%F+y9B8W7?+qZ8w6Bc2U zKd+v_6Q|Q6C%39&;h@W-TxX1F!zZkYQotuhez)JJRi^55mi9e(-6svH6BHYaewF-XzW8 zTGy&*FXBR<#P9Vj>u32p{lL7z3Px1xfPRHvZS5`HJu{h}YJ1RLSTmULqI@b7{51JU z8FIRn;qc_Y`6gxs46%7Ks@ss`}gFj*FPkYF*u=7g>uM{@;zV#cn=#U=p{PZ%> z=865|=C|~swR`P0@9!pWl7`}nglRAM2}J=P`vCzjh}x#Dj^E_fF=Twgc*{1u1p&O* zXKk-u0kE*qtML_`F7Qi#E9#q^|1KY0wN;5;lOItR{U81%^{FhcZA%kA69&Nry&E|I zo8*N!Z_SdPY8XCihPjoubbz&RefQq}eGgdJ>(gNhJ?U0|gENSK6PL=%3b}t2)~d2=ZIFv%8JAO`|*~$IG+0iu@Ws zwfv-*fENX#!N*VVnK>%)%fiV%1-ubTW<7-YnKdkp=cKDRE0Hw#Cv#VG{U%$xcr%G~ zqhIf+cclJi^tH;~rvIe7ytsiQ@R{*hX@p%~R`;TR5w`r0Ab}ywPf)TL&X^zmuKL6$ zR$W$2NVD?gaN?b?w@;hBR7BX|z0ob*+qY}YS}kxRUEH(^5~h5se&QeSYu5OQr$}e{ zAMyY^p$Jpn0}t${dzSQwoc1I?E}sK~U7k)IVHPFg2j0q81Y!7X{3l*N%2WSS2lO*q#7V#E=7HDzil6+M zpZ>9r{;xj}VQr`Aaa`#0aUKTT=$&x9R`Xp);)+gt{}hu=>d#IAY3Rp?i%I=+eCWTT zsI$GZ&E97wTq}OP_19Z}t(E-badp7YPvefc*1cIY2r=;0lD9`Yx7X2;iT ze$=;E{rKdLxpnUZ9(?*zU+))s|I*$QhdvGyaloz2-&b3$_91NTGc?p%lSD@Oyi2=D z{|J*m_FsXw@)l-h=AV_;qcAYoKX`I_(WL_)bxXJQO9B8a_QC@#2j~`7K7wW3)F1MD ze<8+9WCl~TZvCD8jXv`O13EcYHvADNK?|FGsCG>M9KX@KZf5<3IqNU!quCdk9TplRj+Z%Wd z795bV`oSMt52!|g4@^u*CB47Ud%1VN;kSn4{6$56itfAWwc;jwm)85w_nDl4&+yOB z7c-)OaN@ntTNku2#Ph3^Z|gn6COFNu5PmW(w^8J*i)tc&Od7H@bDkuDf13DVRSf*;^^;7$)HCU44iEk`99Vkd zr*V|>DX*v<*k9CL9xZ&+&9`j3rKpq6Pj_TmdH8MoN( z*B@R_7OayyZ)?hX#l9BMF#JZp;&|}Wo=%OI2fxJM+U#sGLweXl89ktnbPX3) zLDIn=Po%fbgK@^-kw=}sC&|L*X=`6wOg8L{2l@9Eb^Y^n;Der^52<2?^f z-#+ExA>Hs7_uTd!|LLnGv1R{jEgsqt_`pv)5vF{`d>--==h9KqLsPcja*K`s-risA zc)jCqI?D1s@yXx&i{G;Mgu(Zs_S=ye(y5PeOv6irrBAVB%jMGsfeYHWCy7kZLV1VP zmIqeXjEUAh#$RtA%G;ja00W1~pS6#_lkD`aQ@jpUDILVN*&sLSe^~yYmpD$dh)oWLg>bE~|WzUL&R zK_BUQ9kO?=xCuV+Z_z*W4e}G0#s{M(m!Ww4)*dqd^lrB+dQ<=1(6ym!y}ipG<2B`h z3;DlYzq)?pH~u@>);`pyD88}f8^nkxpQdZorfRfnoYw-9IBQ(%Le`CPT*vn9n{BL2 zaNv_IN4uGQ#bk;juh-9e3HYE>Pv_d6)g8zKaVAH0^8ra72kk}Qt?P@UgSW6I1J2?! zf3q{V>) z7VrcdZL7J~^zn$Zx@oK{y8Mhn#@DxL>utS$ZZp@Twn0>{TC+=;i34Ak+93*oX6k+S zlS&~`4{*k3N#=ofUU+aW#W_!FU2ANo(&0Q#<6!q{d%uCa7T2|=H_rS9Eh z6(&8&i+m;}MvFDWj=_81{yb%tKE#uISr3Gh;WVH`f<2 z3OIOR`1B{@tS{7CiY*)bJbKCJ1S&w{yxe)7nX0@j?=v8d_L0}}rnnp*__lxjGqZX` zx5F7Tp>E~41Ia##6S`_;4ab|D1S}QJ8>T7k=l1mHw*1F&* zmo~!G8;wUCIG5Ax<#zXK+X1#&USv|=F%a{#T267~m90*XG@2CWvfI9P+im_%9%Yb7 zo9O{8^Hj5ghST}eGbxT#1G)}w=fdQscUxxgRe6d(m$7#3YEUvp6KAv(?YF2Cb+JZ` zIP^=+xW=uB6V^>PNr|Vz#NlF9;E~tjg1%}!D8m2%(gO^8j(UzAUv>OA>EJU4wTZHp zZnQg#vo==_TYOaFyihL~Sm4xXP2-EVZ)ef6@NhkNK-oIW%ISMU9eIm=cNhJ4?HG)@ z89oVb5DuL4s&DfqHVX6*XJwpjY3)e|EQq5XRsvF!;E1z5ET0@r$1++3L0yz=ag@u( zK{}plWx6ibQhdqY0C2dJm#mf<*|!SSZm+kjx$U042_N!&zYd<=cH3>%EvSQ&P%9>p zc2$@<->IKHAl4Ibhg%M}xTfLdQs1}16@*Y!=W^9`WSp@xgpqfmxLtr&HG?x=^=&F{ z+PH3jmr;R(U!e=hYjDKVM0$wIan352CCa64oZHpUmRx}kh*jP)xgMMkj5C7d1=gzI zthX@nJg@5CcgYR7V%@D9id)uqqTG-V{_(cKdgEMKkK2p7{`o`R#L5)o_)HE`nIr&5 zJ&Ma$G=#0SO9d#y*MvR7LF<&|Qa4P!jAua~qZO?Ir%N7m6hAD2xq}2ala1C5+xPF? zyIa9rU&`@SOobM0wcOhNjsN%?FO+5Ix`IxfxLyx6;KQX*iltoQQr(h7dYqNpUfaBB ze7t_^y&gxak_p*}yuc}ryn38IKL;m6u0fS`)7D{%DdTP~zPI+hwePBZL&}R>A-CY? z!F`AM%0JL-5>{KcZnKsjMcwHO+3@<6W%$kWo}awH6|CVg?WS^xKdukXy^}OOgpCI} z{&mObE!((dA=)==fWQ&Qy5zCqp#38*mm$6GrghTeDsjQ5fTJEl?Ig=XUgXc136LJz zjK=@okN)jL@P{YLa1kPVNi*fe1AX2etkFD$ye7N#da-HCrk1wJl2_fHV%eh%JF}}8 za)S>V;vBQQnODhnMpRjkQZy`%x;PKue2H&^dPYp%lwr!D+^=oM9?tc~c6 zi=UbBygnvQ>WG%>^5g{;b)T|$hy(6;i~ox_=L_|6c_W|6m251xZ2RB`mlV!%lLvJ2 zzHciRo)Jf%Q3-k83ckeqGfK{~Q51irY0K|@AusLAgCP!oxJ!n;*b?4 zS}A)rQ~=|A`J${je{HNF4*HJj-<19xl|R$Mdk1Vx2_JCux7XUfQUB!8LmYhuJpxUF zhrEWkwr=yfn>CBpD{*~&b@pDUQ_$C{y#Zmd^JL%y3p&GqemoJ^qtPVf0T=#R!zP!w zs$3~(@Z?YGG*LNDY6XwoV?bVLMs8JZd=VxVIBy1R?RL7oG3OQT zc%lq-tcbF_)T7Ycvu!&zg+7Zb>2uJ)_gL|mo_9RAr~wQn&wId$mS*#i$fXn8HJ zdu@Bis(OP3O{T9?myxuo3^6Ijw8zUK=NMUwhY{KfY(;C8q^0i8Pwq9`Jd6 zWe%O3scYN7@L8PRi)^cJx^;_g3kq7)zeF8Wm-wL99&O|T=k3<1Qx9}5hoe2HtUn%y zY#1#Xpye&|>NtpcN{>h{o%*Xv~&adt*aZIeCvp;jdMA7w(L zj}t0ie)>4^tJIR1Y4qc`w#B8%!=?~mi0^9g_ochE!$R12rA*sylZpDFops{8ADM{r z$8LCty%nwG1>v~Ji>MH$%_$>~F+}PCpS5MtdHLhNRQ&Sq|K1OLH*nNJd&ynD-t}wx z=VL}gad+PN11;aR)Bn;I>-19rA2U0G{KVP7kh&+`34A`nJ!NOLkLkoRx{M_FSDB)2ev_{E0N{M)W%$*9!9`vn z`=Om(`u~GF?Q%5Are!$Q($PL+^dZEIdq$k4CfTU9-Z?h(wu6ryK4kAfz?U!7zM#MU z1T8m9YW(KZl0I5_b+K3a&jl-k`l?XQ|Fo@=!a-i2f1!Arb`CCWi#XOA@j$P2vWSpd z;a`xP;}CeMb_NZc(I_PeJxP+%6?wfm)KL=*@m;OF4XjHC^*7+Wjhr5EAw#>YwyKQ$ zz>#Wj{wKGQbM-*+u+o7|va3cTdT;A1=O4 zI?;zMZ;~NncOkt2`oL1s=(301iRb0-zoU3bKjV|a3B9F3OX_$ma&P^iNAzx+?c%l@wS-@ zn$FA&V6?n$3W)!O79SHiDeb4FiGwe}S9y&ubRcroiO@sc()e=p&O-lHcBZ+pshHTa z_nv{l&c3KGcd=79e!$_<-0>&MEs9Ca+Ui?6c}X0)8MXOh?_c%)tp=NDU-7JOXZjC5 z;x#-Zu|z-iI1cFf+~D}U&HIX9ljuSNWgywUrh{ufwu3KZQr=uH{tLyof4KPYhb^z; z15ao1U)0Lryj#DI9sB&9?*Ld&lwo6pB!qv&`PkVfK5kV1t;YRz#}~Cf!(0L#Hh5hv zipvzOhrC|yCtH6d@d>yj8?8FyW*55x=j}_s0HV@Hx9=);Hab`DxMOFdqy@W$uat@N zdEr~t8ZA1D#8IQN3~=!v%hcJ{Mzm*oh_^Ye5=TkLpz~>c8`)%m4S4YnPQ8^uT9RZWPB8 z@vaM@3P~AC@syjk^HBG!Ie@2qbwy!c-#e$KjvbxisuIHkyiwt#0A=y;Ulh8r!eV`# zG588BN#I6y_Ze56Q^Yea0lEy_;E`9>r^hsIPs+~&9{NhJ@Py4U;=x}l4z%;HC?>65 zQ7$RayQ8QZ1;kV5*J`hAj=eP|B;viF)a7HZ{etxe;_2V?jp{=@^kA3sf1VonLsyGD z5wDSeF02dL``RW&Sm0-bjITY>`ouduj50el7ap?xBlu?W!}Kn)(iETJhl-!74W&Xa zh`G?sRN>lWIF27axIMFM1@IdK+jb7$qW$Vx?e^WY8uTz0A2u#>Uf_`VfF~_&Z3j7- z9_kV@F0aMYUN73Ov^0Uk=ZKGs<_)i}f8F zUbUw%>G)|E9!~6kk6F}R-oT}k8@0Bbt7pzU_=tL}$5UTF@yK7iRe3IXLvC<*yYSL= zOYsAVicHTh{PH(lEQ(2O4%>mXfcG0Z!Qc<@){b;wF~}ds@AFB`EN(#4hTx&Sl0M!Z zR=|koK5))l#3)NVe7LKq>tFdq{4Qy4x5HEY;|V+&KYG6k4tVITKE%^5$EDR#k9df8 z{va=FitiH@^uORw%r7=BDjxX2?HqkfF&^*opv!5r8-CZ9>R%GW4VLnJ!HPxBz%!i+ z*}EQHT9aP}PCw}3m9?m=f`$jW(phMRXB&)w5B?X=vTC}h%O4yM^8b=nM?8Tm;5&L- zJ)5OEe&nh)WRHAZJfrs`AyxuAf?|eRP_AhK;Q-T8?zTHu4 z=b!Od!Cc?hh2Y=U{!MMPwzIY~#Unq#i4(;)>kXI^Kl=gnr`T@;KYUw0zQOyXpU8Lr z6a42Pp0(GVhl@K86?aa?rXEZ|eqk^V9t90PttDly3yYoe-o^~K(h68ZivEHJnqGWy zY;0_prvaKAFI!RZzOOy``0CEqslKU6i}&%NxbTr*{m*~$Ctv=>%ac=mR&H8+OablRH*It0Th z7&27xWcU=1{0Nhj;Jth6^{xB&HyRnf95j5D7kHvSSXTXk{&Fr7#XtScwV(ZF=O_4O z!_tElUmb?9erfHbuq5m|f4J+P{BT#54q z_}vGJ-%=KrF><=3b1Jo7T(Efh#ZTBj<^^Mq%?Zv2<)}CGVoyJ>a%A||?Coub1uOV{ zzCi41!mT~{gx}@gO$f}kJ^DgY3BO5l-3JP+B<(?Gt2CE=TEE9X;=xn$lpJ0z{ZV^B z`}Je;;@^JYX&WF`Tkm3D)!}`fk}}ZJ*7}*^liK(FCZorxn6-QIzG3^fZ2#8n7q$mI zSQz*Rf2cJLXB}BCVSe;ma9FshUHlB8kB7f6!J02-?B7+)pNUR*ufzGpB%_r<1aXSzlZ#ep-I;0Dp7wEvw_-s?`^a z&(sTO$}Wn})IOt12fXWDXkGq9yjIvYE}BxQB;w)2kGmGw;jisT1kTQ}O|y`kiW^5kwMED`qnNv~G(e?AhK) zbq9aG_bpc&6jry+LLicM8zcyIwk-1HoJe2uZORXnMSgBKJBmq~NJV>?(|JgM*nO$n6F{73!tp128|rfB->}O(LLe4GIW~f-DMd84xX6zlw+o)@ro1RoebyTWjs27Z+5- zrS4YS#@1G=ZN;rxtK@&4v&?dm7|{Cl`}%qAea?H{_q=Cc=gi!>%Fs`*dB~qHP%$v_ z6&)1qN|dhNp+ zSt53dN5x|}1!hL+$Nn-*en^>5mGf8|p$j7~R-6ns8K3c}5$4?(#>u&iW2`n6|EPSj zJ+bdDz_(Tu_`>xefMI%iuY1JNUGSAsWtn_#KsMGp>m8LtWt;NxBw2k}r%^aHuVxT; znYhRqe|G-aLU`~t;dpJy`yl)nLq8S!o2BoUeo*>W>EH2-M%6#q4$P~2&_UHO*=)8N zZ#3Xn#i`0Z5%=&}1EcY4Lw=&UfJbI1hMpqffMHoV#@KS9p$828m@|g4jq&64CBxy| zQ14e%IM#!T&rr$9I9Ub+lh>vU#AlAko4oXHXgFD$dU+dvPJQTytHkPReUMs~!5{jd zvKS7<45$7mzv>x0mI0~5P8x<|UU-(l|H4rk>fR{lPIJ$L^5zjoi;n;r_Gz{gP2l95 zCTExPrg&GpE&eIzTt3f7Bg+Z;;*-Oi=KzLN^SppN=j2j3HMftbko8=}Kr~3uPeu8S zrRM~W?|7KyaEHUe18s7SV*5qsGV)j1tX7#%)tA)0WWE`Ld*U>Dn8}N|O7AXr(M(*G zPwf>jR7;Q${z`dD>Z_?kQ(tu%PQ}R!ArF0nSHv}WT&?KG`NfQeh^jc%n(ARr9e_B> zP#LR2kzZ#2C(Z>B$c7`c-0m9xB7BKFHld8Cnl7=Rq(JDKi}F zth8ZA@hel77iTBw$i}h|G+g7zvfS=`h^4E8)86Ptk<0NQ2%+?2spE!qN zP1_$iV!g!spzHyvj%1%#^&&Fpwql&G z6ktra17>)=M}i9}q9M@lF|?=Fne>?shM*jWw8mEyJtn-FVCV>G(bAkH~R2 zfb#@p7@m2A+4f{Q_oVLFSi)Er6I}Y9cm}lE7wo#y?ShMx&9`$Hz#Zp+Dz28l;mRlOBuDQR#{4+VmtuY{DPJ6lA>A zti}g507HM(*8=em#Ob42s^vK|Jaqn8zeH;$N}szH;ycAZDZa7zhT=wiV&#i9O&Aa2 zXL!91A!Qe*DOZT~!><^=e)xJ>FOk2G{Gj%6hn?3raza2@`m6dE&QR2O-~`BaCucI^ zo}~R*|GXv+uZzJOW5T<5lG=P~Woc`rit*3G^Wt2GY1YdYVjHRS8NU!_j}+e}DSyTx z#P8j=+z;G8xH-9Y>ve%8347_2#}Tj>_6sAMp475@Me4ky#hRM%bknb z>o35~2F`Nk8M7SR94Ck7&2UBm__>n9^ws#{ndWFTS-!gl>sup$49ooM`PG*bHk1eB zkY4^1JTk_zv5Ytelg5!dPF6o#pt_p=oIlON6Qi1+Fu>q@{$9|HdlxguglyWQ_k5{NGb)dIIi|st-CRT!O#O(k+E; zB3i}GFUt>{OR;loq#Q>A(cYGwhH1Wt4)HiUMdJ<`R`n0&B2|vCc50@SGlubVjKZJ*tAxMTa2H0I`wpqr+d_u%MVZg zLYMMqKT|z7zEVZkbc}<2ou&kRe~Iv=i~oFl0cK9hsiWFkc#h{(R#XnG98h^cWmRRr zN*b?H>6ke?5ImESK^y zXNf6J=Yl$%KWKcm4!S*ewR|}$@|g-C=lIig*wb|2-m<~cJ(06CUt(bL!zfCycJs53 z*vC0m94lsu9CEI7*me^Ep4zJWyj|9Z2isHckKlsA-w1UW zB}zw$C$U9SyEN)>9&esT1sFPf{xv-R9bOr}pNL}#^9LcfIe5;JlbxJfsMR7ZR7qA= z2bA=np^l!<;PUa7TY)H3F5q_zqbo97EeIp?>O!0^A!ymdk zK6DRP&pUY;QCni?-VkYF2Nj?lRE5Utz8pA zEDh(_-r7yV(x?)#jRl@*Q)w~HI;XDVw2o6_ALL$73yjBHlbi6tAgo-#b*FR_8vyF4 zI#Y4`P@LhQR9#1?G*PWA7tO>Z4mJV06SRE<%t{@U5{BnKJ!HDQ#8;r>iC#{R zLD!^uq~iIZX2(X>|_U49cAOGC%Ck ze3zE`FkW>EKxtR#GafbGF>hf3;e7U0F#&T(f86!ylW*o@Q$I{zW`QYe!PV)OI&mhz zc-TMom!APx@zwZ+C^Rg)2lPV({YU|h0o|41QffI~Ey%=g$&OpIOiItw2uW;0|+x2#H4qcxTt5afoO5BHL zp<$T^0Q}t?!pbITVL=?LKWwBHp;DJSE1WZ(`9<>!=eaMtbMfaZSO}z^S|iZM(*qzJ z?T#)OEw=$z6<$?xRmmDT^Tg^8o1kzvl<4csj;WX4qS@i6$+;GvP51;cms$fSF+gaJ z-SR<~zLL`wCEbiqjb}XaQm{II8_%2MYx%Gr$9i8ShT*P(N|$;!qog-G{IK0<8(z5? zAIq|@n3aY^as=UBuS8y^i#&dE*Agjbzc<}kW*o1B%qoO8J-!%$DRn-U;w zg}f1kX7%g3Va&?ufa$7w=2dDJl&L_RgnOWlv)WyqLRV0)0+VZmoGbAI`Y(K;yD~ky zm%~v`OBvOtReb1B=<*^}FIM77rE`%S@2#w5=J3D?`##6P_nhw?_Py#0qEFV%I^jnQ zryk>*BBu1>XF{(6{c(Gl4;K}q2UYAMa5pY*jq`P!Runh|MdOR|i`Ju^8&Mq2G2H9W z(2dQICH|+q&&<17Z`m(7mVbxy@5cZ*rJ>xEgF?P3 zvgL;>ywYQz;ow#ggwfDDH0;arfD5^(NoQ)(jg`3<(fhthkmgoxPq#D6DwL@J! zZzA~NWzHAz^S3f*zcQyc-t<=HtS)nMkYr4}dQQyLGv^41`ok~V@jzF3zQ7L;z7-TS z23%hmuO45oh~hUy@gMmWe@u(}1)7*kRalG)=(4>~w{as26|`V_ zBXUufeXLYG=BiJQvwiHNblD*)0a6r%g;5|uLfTS7=rCS2=lF2dV2zzG&J^d11~C%9 z_T~vtAmAfkqQ`jI;Te-Ma5DRbRU9-_yc|C;UaAvjnNCipOs9J~-q>+X=_Lgh6Pdy5X zm9q$2xWaNg-LzlfeucRC%r1_eB}4@sG_vv-TAV>k-XW2P8tRIJx&r|DTYJl*e%w&E zUtECP$x($gQk2VCjJZ{LV7*C0HIc4`cS$WCwJ4+|jSL{?WOL_+p}9!V(3fdC#ZAr) zXnN|fZuQ)USkt?mukLoP-tF|=?F`%PRPA=W-A=HZ!BG?3)3L7`gu@@r zBsWo31d1p-hd4z_P)c}FSN0Zgz6gAQy1{VfcbrI%6IJ6x2^=*dRTI{4e_TKD(@%ap z#L&{j;zi8)NGj_Tq@04RtK}91mZPBw03O6z{xC82UwLFo?nEvc2e*mgnPs!rndz<9X^;Qmm7`ovCPwNnld=&)>NFT%QG-kIW5 z$IqLN%1O-tLtykUUiK)Q^5KpWKYX9E`S3hos+zfU*_a0y#DZJoIBG3+E^&4^uQ{&+ zuc7x$M~vu6>Ap~6eX>qsjghP}%`rlbFV(Ys^e?O#sjsBwr_N8!celI0MWdFBG0qtD zztPTU_Cl$zdaN(JO;wu?*fe<4O`E>GY3-)9n?-QZrj47f+O+n%wbusg{q<0n`f5!| z;ZT`dVcL9C64oQQ@Z>Fj)QX=a=4AI_epru=xXIy%&#l~qJ2R}yDttVNZ>!?z_*plm z{~Ov;(jQtXKk8b(LR1VNnB70SFuN*yUbX_=WR9p8e#*xkoSc&rfowqLoihdvZml@D z5Eg6l_;5Tfv#@Hj-@~ND&8lgsujd+M8M6t#%sWPPv#4t3z8^gRCu8H}c$Vum`+_p) zE$lGTz=4KDrJySz1{I0a*Y`8g3~D-q4dnp>l_NxuFT9lnJw&>P2*5Hwdai~(B`S)IIG~jg0m)^HRY^*m-Sw@?^4|1?2LPyY;?An z3ge4HZ(YSD6+&EGaq$-~K4^1wurTeRxiiA^yh4mhRF>yMpJ6x_)G1cvf{5cxf7q?U z=9Xn)yU8g*b~kE&ykX2{ui(MW@N1FhjriTkdi~oI&OtP6KY}{P0x^RSk@453C$f(j zlc^e=Vmh7?fFb~Ix^Y;@DYs*{sm@0%v;my#TYBvbglH6^Nr=C|UMYTmzG!L?O|Z`q zFP$Tr&J#_m#G9+2Ps4C}T)~ALUsCO_tM&yd*7GM0_8m9|__GK5Umonw9^$VW?28H? znheK2L{oyc;P~RRNV`-vjV*n*qF1;gfLn#bkVrhE>*Lm&`HGa>A4uJ}#lG6t2s}DY zp;ga1o+rd^XI>MwQ1AW$mQN33ST@$@v+}bKqUVRaa`X8IC5zjt56S^=`UV>kiFqIl zkK&-4(!~dmXgtbf-!=6jD*7q6Dme;0i6tko~L)z1%Epx2$pmo`gIcFq)!^(fNO@8#YUWZbI z;RXQmtZ#2DG-4jYO;pinn>||@wy`p*%!V`6i6(XqOpaFtDKxL3xU5PsK z0O<)oxH*^b<@Q|f!D_Rsv?uoZ*=mNSm-> zLXi?+y|OQ`ob1a716&*Nh}^#WVu2NWZWglume`m<9E>P5^inO$xCVvtNTyOX9;^s; zjizT3InPkW@<;Ox62TYw=`XLA`{e|$>txNKGk91zyO!eHG? zE}Ru&^$O}ZOGSE#NJBy9U-#2OQI5MoJ>(be0iwL5u)L(Cd>y{&@>!fPY{x4EQm!upG1okS}k5P8#!#NF&#Xli|&th#f-yF%K#H za9%1hm=^G+Z?PWu6(H9%_(3c@AfA83%5!acan1qtQfUA)0cD5?9!v!N&sVIx&H}4V zfYB0E_;UMq5_{#uclEb`xC3Y;^d_i3_TR&&d1El>~a}ADzMMvqeO;4+^j41z0Cmg zZBP%l>S$_i)bop2m&G0H9Bx{REPj&D6B37R-WBs;k0{DyMJ8LcPgYFLcAc6nT9+-7 z%G`~ZYb&OKcW}!&pY@e^65!57UH2J#(HXbt{OH|YH!GRZNA!v(Gn%MZK=k=d`J{v$%d+l8>)(YMaCw$q+hM_t5HPe z#mr-2bgWbqmJb7Z7>XHAR%k>A4Uqx@B+ehpPLh=mKToxBC7jZ*fC8OBbpcW6p%K=3 zIDiglNyBDQ#wYPY3l7fF^C*a$3%5k3_`8vNOYzs^%%yP#;n95ZDaUwJpVZB{GMaNy z0z}R#2xKk#!iU=f#}@Wr^Q1e412B1Tk@l4lZzJK9F9_6M%<^@aziitzc917;ss^M(462uDErus`(4xe}N1D z3vMyvTGH1eo1!Jz zv~)R=<(yP);!{lwE~U!fOOZ~B;6jByCkiis${Gh;s2Nrm^T)Q3hMi32SYEo4@v&Y+ z2A47T*$j*?8$#K`6qi+M%->MujM;1<7`ZdhgEb_{8e69{Z)UHgq3>6uE3)K|tu)&s z+MI{`Bznc?;3%ZJW@C_NpBJiR&vqC1B7@d9EO)E&(3j)XtX;A>a_B`nAw(w+Kmt+a z1RiLt6I_4_ryo>A4rl`E0T19D85Ic&ChnyK!$oeG$Q>*KTn%MK<1o<(H#QeTMVbn9 zuNlha_u`?#!Kyn{1ZaaLh$;=pJ&W1H$`0>Q3d2%xvf%{J%+PpfT@W@fre!(*l5zr~ zN&t8O=atyH5HKo~Mv>KuK+D5wAySh3%#q}Wiu_oS!n9IBF_cMx3^l=xux+}>nw)C} zh4IL0(HtIVRj!M_=6X1M_?kOh+K3u%OcS)5X(Ml;jUbfE>sq$g9S<{-JML}&d)vK2 ze_e5#D^|-dF8q;RtTf!0@%T}hz&NM`RaaCLh&lM?i#ciBl@k4>?WDOca^^xCdouiM zGrJRB2rQeEEvn|+A<`wS`q5aQ9cfq3r~6=KpGLfQ zb!;45B{U2C+#alyQID&W5N}~-&!gr19hQ(5%@ITuuj|$JV3fe z@%OD>Ctki-;V+Pb>L!NNy<6z7SS9}_B~9D9|9 z4e0mN*rLZK)cfa8*OuG5T=(Uj50961D)UjqcvhT*?b&!8X>tG&o&i94$m3jat z6<=8(oL-9{KV3N24go#z2mlm+QPLB)O?#rZvnb3Dmk;(St|ol}ZP1J|aopgbtEqE- zs_`XQJ>V)PTS@CgT775@rIk+$Q*Y<|Aat1s8Gj$cAmh5H$SoPl7v#%Aa`&i=?B{9x zs7Is$k!EwGdBY5P3&dJB&RlBBV4$o|Gq(M7fNyzFxEN~tE)e(GWzyn0BECm>|_so~`znn<|`qj(Dn9c*hv5z0DKatBw)O}T`h{)wJ z>X=D#O3&Cr{8vmfaxx!Dqq|*FXmO_A<6<^uWn7?6bIUz{gDB62mIsxd3y^G2K1zEo zt(COiKMmF*P!7XHa&%+?P7a74MxJrx z(^C$S3n?2%YlU>-ZdU#{t`Aa%lPj55>{n!H4wmz%*P2LPhLynbqpwNs#>Hf*onvTi@&?Y7x{2} zWZ%IgBX3CH&1@H?@LUIen25$_D#K-Z(h8JQ_6Ibv;#Mn?Q>00eSFuCHcYq={E3!_J zVnqrSQToPKy;G*iYmNr_S%OV3j>zT57yPKZZG4oS|6$9I(p2_h{GW32gXf^-hj-Ch zelRZON6q1}^$k*GP}8y_*Vgd-5M2=-YkYlPaEc z$1S$6F(cvN{C|RI?P*sdGc~0rBj_q)>M%~V7pf!vVMy~a8isP-i`T!IJ$Pr2c_lWa z)i^MhI9)xADLojw3NSz!kP#ICd6)p#H6ETR0G>gWu$I0gf`Tt$JWfUL$@u&QG=>g% zuHgfLgh85m9ux=;(^uMRR1c8u0c+TKhf8~qv4w2H;QUM)ve!w;^l*oeOy-gWngeV7w z1LqP`M~FpJM~VeRh8Q6hbWt@r0PX>B7ecd%Zt4WMofMuBo#2QmjySnY^mh<(Djo2vZVT6lR87FI z&#$Z*ClL4+1!7_#Y6DRSDI^(w^D?4uMpR)hh+5>0B6#Av4kI6SfL7Fr*uD9njD7qv=}u;jJd1=G`Xd;$Q+~ zEPMyNQ%=1}RGopgWbx5ihcRZH3RE01S89>Gym4*Fze<_nzAnhjF znU`qy_=B{6uidEV9E|YG~$FV(#PBKs_<6t0W)|1;+`h+6#Cpvgmp)0yAh>xP~D%Ja6 zlW}M^qcbT|p$H>{(1SjR(G>nJdKfZHGR#}Gbj2;%wSCpfzUr_wiUWbE0Z9oT#Ggv)mR@!+@c>7}7kv0W-A23(C>!qERGlrTsR3!#dZY(Z^%MH^eHTw&tfQNMwhVzXv z0q!>&x1vWytOw^wAuG#s0VlP{Sgbma7#I16Q%)#qWC>t2l_Zc7V^Jj2Qi4WB*gI{b zqk>quyig(ZX$(asMRm-3P$bu`{IqoNhO06QBGOk0k5HtqR&WEHu%N0XsZv5e<>5Do zFp>l}!nZdHD~YE|WeTUy+|1EipsH38?$ct|O5oVRINRXHG&dh0*I+&e!3L>m8%dB4 zjw&$2Rb)D;l0XWvCeYL>Qphz3CP|bG*;htJqq{rb%}1k&JTn}mM3L>$S)y%fmUtN) z&XstqJJ>nAb;jdxfQ{Y3rBd@!IaOWS2V!xl+%{cGC(rd@g1D{AN0Be(+Lpwhn{y%e zY2ypSR7c3sC)swb4g+r5IQ__h?O7>j5B1tjP%CgwJS?f~kwv$c6xTbF`f{V^v+Rm5 z2SqjenhK*|ufuU$1_PA@1ta-JO>fY&LQ_Xm;V3!iJk9MQO=+Qg1%f&>K?hMCv!n8J6v=9$T30tRGD(wD1c!Q()tua8%3%@P zV@UfNmn_3T219D+w|X%soL{AMy|Zc=2HB3f9!g?P3iobB~@My`SQucz17r|EK zDB@EKGLw?y8QkF%YZGYd8LAy#pakAJO-V3?)uYo(%4H1v5*C@1lOn11&l<|!4Y?c$ zk_sFJ@p?2ZsTWds!t@hzx)fEuqMqjIN5gCB*#0D-3{T%HqV4Tz>9|M}Els8HQ&1R1 z)`<5VFo7fi2zOLd#aikfrk|a>Vt%}^H2wOgAb}Enxh^L6u z=HFn*bIPO1hNeDr37rT8vO`IaNEYhVhc1~7$(<9*&IyfwZzHc1z_N!u| zz02}2wXR_f(xFRljbtD$=GTUCB^@UHxb)39quqLuOZaq5aEg)BQloq*GxU{h)0!;Q zh=sLet+8D2{^GSGyMo}MBnVcj(CmfnuMNAu%gB_9f*2GN+-G^<>63CJ(h+N7>AD9)oFMv z6tCKaZyXtNFl+^%j?l2gn7MP3h!RajP7m)~Fi863)~+eO8TEb7Mn!X)-e;)t7xyVT zTI)NSuGTcrROG%b<3T!#3QgbFbeE=YTC{0RGMoxONY@X#g=zpEy?s{|sinPD+#LIB zK<)q2NEnTiAGRj^aU_i5js=f|KW@CWWkQV~6P!P&h=%!XN;4_^agSCqFVAmpj1o?| z0{^Bhqo$dmqWzX6g;AMfVU;kP4E0aXV+zt4%b&V9wiFJwc(TzX8S^xQFeYltSqYEf zanC?8n)r$nngzk3qN6$Z?E=j5k@iK#3pu!GJiJ~m0HGUUX*^9NBM%9b3qG7>XyhpK z1v4jn6-<+qPZ^Ay51c~j*2GA4coIB{nvt>T>CnuI@*LEcfwdK{GsMcc^u$jLNaTWnn4?autE8OL3o64r>!~6%aKfHT9NRnCwN=*CBP! z2sG6SthPq2VUs3X06y1>Y-%gAb#j^9@4wzDyx_zZ^1i+qs7h`|FL5rY*o#^hoQ`efvT#3BZzY>UaneY%#$)Z$EiJc0_u zJwg`7vT~YVr>Gz3O^u;zHNRH%lM+qShF+xP=^GUlhOW{48Wpel2X(loYPp$Y%2fQF zHBD){#?Y+t4-Cy{KBMFD)yU9~cA@L&{0c=qO>wJQWklULlXu|c0gIAyZt}EK(OOR5 z(u7ow-&)60v|E*=g=LE3GF9@R7pp-%K>25++%bBE&|{t-?9fO0KNQkR^4>!oBoz<2 zl4cD5-~}pONs*-o$0~m3Ns3MyE$Jn-<7Bu%({&4umi!t`gIdMkr~PxY6u(x};7Ao- z7%I{-UJn2NQuWcktt&26OxptZ=w>rIj_{3BQgVTGX)7A^QedV9Rn>9De#R>l%0F`p zIXdL4ACr;w)0oftxX*fh zk;I5Lt*==kw*rb8zl_X?qw#jQO+k!d!9%ru0&}MW(tU!wk~bFOU+8J}37m+bAPgh0 z0ScJ`aUUh4-U8d zlR>_oCt*rz^RYKsQ?;gQt|=`1OKMZCOX1gwu90>g-P!!|p<^whvvo(bDy?l*Dn3Sv zsFhjg6>UyWG@L~Pi&re$<;aAOKe{H)M>WJbNg2O|!w5i?+QcxHiD!iIWn*ey%q{SS zRoPdN7+n6gaoTgqHoO{AnlnR}AG*-(Vm%CxY48RVj3Zr9EO6<(`=iI{QH4^5vKmhY z6aMJs+9mvz+7*mhsr4Wms`TIrWy7^dK8&s0zPh#pGb!c@J92Co`X(@FtR!?+0ru~t zV%h>V7530{;Dl~eN$3vZ?p#csGaGBvU@nS>?sIh_K`w~7{m?CPk=u>w!_7BIOXK=U zw-yV^jY)1Vj1)8%h0Vm=^}8Z@{Vp#|3vT(;2xF+R6ORy(i2qzNC{=wdoq_#jIcqutW$7!$mu*A;DhburD=GE^5cf3@PJBXoEN zk;XVOPH!a$9e5|OnmmjnLkCB;bTE0m)}^-}cko?mz5Pn6Xb0c2*4rOS0Ud`&4!#-& zl9BQqG4!GeB=y=M6G}*W*OyZTIxibX(=07%GLlz~BWE0b=qS|6zD$#;YsbFE(Is>U z?S&Rpp-?Ij-B$!-Onj~|vII3vuZ4vPPto!k7_)!O zCF917he(!agO=VcqlkjWixNux&?VRQR{M#%IS?tzU*bosZ}Bx2zg%?6kF@!W9e7^! zYeRl(EOX<B_Zz(rV>D&3_i_2PzKdOf#c_as;+Sgq3 z+wtrVjg?X_VOdkRs>4tNzHxMDpumBz#vV{2Mejvw=_qOZT+ltZ$H z!BuQYBB83n1e*@>B2~7p#m4&)6?xBRMm&Uedx~a3q*HA_S~z3TrKzh;cm*Fn7BilP z>aYw(=Po60;Vd`$I8cT&Q0yiIlg`pes+`I{ZpW^R`$QS)!yh}TLtrgs8R0Z07R)>u z1uyl4r_|vaKtmIAnmK{bZpxz@U9=38lTIXI!nyJ(8|kg2(m6JaKfeF+v!OVaNjGxG zf~m??`dL=4-bl9Q^uuTqj+_^=F(+hZ$A|3Dsbg-{>6<8UL=C4boZ3^ibRGtUFB|yrv@&^v zJ38l%$txmvCg%3yZYR<~UykCG?i!|qKJFsj$lWvM#$WbG75siWW854Qp_`e;5rl3IB-M8!k#<=tdCXt>@aYa3$y6#gnP`7YpF~jBh#K5E~YC1pXx_!K^miBK(fdxbZXN!4bnm+cwd_Ryrz< z;Ga_wfnHO{$XDM>ji33#H$GxhoVnIdMLuNkmSkn5nyEv{Xb-VYAU0#PkIItv2^pg# z7zW0dwzd?*jOLlP0@D~Tf(J%LrVFPSQ#)D4WEdSQ2|BMfoVxIDr2hdX>?fa9Sya`2 zRqHR?XY1WafB%#tYl%wpCNf945zpLGck|2{zdUUt{LQOBdUdt3^<4`beyb;sSb zCtutL+zZ`f_d<8(p6dpC5wE`&y53&sX7)n2a4&Szdr`mnd!d`R=en!+A`heYLbqZs z`cCy;=nmWq-M)LF+h;Fyd7Qth%@Jph+*^{Gp2cS^ez?Vtu=tS{Kg#B<^m|)8|AH-U z3M?LPHcA*L;<+FOaX#=9JWqEL{(dUH+r@4txunYY!o6Q2)sTsYkovLoTO5sf=^zZK z90`66WQqKNUmc4N@s}k0@k%(0?_~42WcY;tiFiyVt`GjeIFIxaJhBsQ;K2we#7)at zz9{ZZ^-MDUpe)Yk3ya6GRl*Luk?|7gbC((Sm;C5RU+#Bo zJ{})qi}5MEi7TMY81OAjOrL&cvmWY2$y4Oxf*@hAp$?67#`p>FxjXc2=|K6smeTem zt(4+p1Nkj{>m$jYMb@HPbOf`ah!QTX?Bp{=dsX|V&=a<7Gc z%c!NwEOq2L*Vb=KuJl?YtHjB{7eyKU`XZ9S)mqJm^^?$4OdF}9Pg(}!>|^3-qb5Yl z=)Jfs7OX8f|5nGC$OTDTaw@l03zYk`EaSAL99W8q&G@Z~)x%wFctuZUB^CU(u6bKl z8|OLm@J1rTv39ZLBa*2p4*Iry1?v^^DofwU`&)9!wxS=ZB{HI=v3!PlbU>cq4db^K ziS%rL%%XeFH6<^D&D!Cs^4oG{(o9+BE?v9r zQ{KJDe!Y5ERQ2uG|A3(f9el{}5l4(1HG0gr+KERUJ#9watS_H1XWsmUi_ciPe8pMk zZ@ljMAN=BhN1lGJ>Fsx$9sIF<(T3h`MNy?&m8vT3>-0?zboQS-#2uO$oB;W zSg<>9cSWP8=#mcdin(oon%rkyTG0qvDi9EyMf|AU@uLHFXJ~Ld{z17ctiE3<_2-ycZ%>&B!k4wTZ+Y&Eos3&w10Bg z(c*=loF@MMRuTT{FC}(2yFi|3?%hQ+H;-bq*ME?KdaA6dq6=T@UI}yP#L9)Ew*SiI ze`rqo&d{fkq66ds-GI6a@Cf&R?R(yN*Wvj};F>L4L~6^H-R|vGYiob8J19e{UEXMz zl)oD_zq=XbZEh~*UzRaB*{|_tP!71mUb%MJqo7L*g74v{cH;7?4Yie^=C^R05T*e< z)944vzvf^#q=jy?@7k{>|aiJ_qU+CuTb$LZIl&HWmQ#N!5=`eY?Vl$ zfBzd(msjCkXZW?}21I0DL&~!8`D01z@S^>~G3nwg(^DDVvgIeIy?_KCyT0qzY%S7h zRtfdrG2=Ve3>_>c;w=IjrY}eM%7*WJP@v=KCQd^WyzrAe#KV_$rNkRsp1DF~^AVn= zH(G*5-HDRZyT74S{SC=(cX#u$M^R6#LupVPm?hJAjS`t9)85idb?y4~wVkW*Uuw#* z4ry4AG);33LOGla#+hQuj+o{kn5j&xPO5l&%Pq_ zSGVPZE`1a6MTLN#DW{>PUJP&Q2ddH-xuL3b#+Q9&tNcsXiPMV)PFzzpQT{+L@@|nH zt$Z1Id+~?; zvMonD5w!ObEcKqORx++d6>BqN3irTjD~3G^jQHCM-&V2rP%h4S}q7`OiOqtGxwz^S#kbV~K5u!Bb?h^mK zBvv6-J^VMbj$R8td9o)|#%7>@Lsjk)*Ns^9RxA&(x}`J!|E`fW(cb!ERoCb2=QZ$o z4g5#dK-+U8i`igJ{SCHYh!Uu4CMt&-Z~PA2?&eV^Hq59=k4sORI;&<~P0gfWU17uQ z`~J|U;-v|x53jFT^8K|t2b?K#xKR@Pd2H_O{&@$KbY5MF1;6K-%<5Fh`;4=>p{9>l zpPA~eKC}V5jVQ5La#D|~Uw~D*`hrx$>f}pSyEa&x&Atu#9jw0IL8cq*on(W(w`|yD z(or-ltr7qC2ud5`b%3-#NwVe5eaEbx(O|90enUZ%vr_a545@FhHb6@n68_L`us28z zvG6js274dXpyHo`qG|0qb*1stq zV@wvD)tC9vP16R`uQYAFooD{$tf$|bIkWkMx`qig4eOGoutEO(EoL>`cq0y62%15a zl?^-qiJO*jOe>ooxK!`h@t zHxyasv&~0cx8;5Tz74Mio#NjG4bB%HH{ZHxee0$-9J%GjwL^cjgvX+E5R9cbq$xG4PSY;;L@9UScCTtHf)@F%WG3Mda@Os_{nLp_T>Z;KFT&%f0WR1c_k*j-kLv&ItP`;;1aLnLDjI}v4Dc669-c*#mud(byK`zT zpSORnN{hLNzArtr`_@>=s4*V0| zXZ(Srk9@IV{&kIi8Z}>Y8zcE2g3vVn9TRxIzKrb-@RHNM4tULnEk)GzBUw%E)DhRpq%b0 zzYu@h^5Cy_R?T_jB+86Fb>e2poh(Z9h(TL=!e79jjfh_}a-6lQWlcZ*AB%wDd3VM< zKE0!NeUlHv+y0-HH|Mn`{?GYj{r|h`Lw5(+Z`q&X`Qc7D-ap#oId(oy-}bk8 z+z)J#zTN-KPqUd0AC8abm%REVq{>I!pJ@@sFg%|>!0i@k_JrqH`#62u-{#}#wUr+^ z_>qq7|4DeZmoW@)^Q>=U=x_73zRfd?F?RgX%~7Rc;x|8}B5#Mc(6^8vH9qTQ3-j{_Jcd7OtWKjMsjur(RuOsDC+-KzTY`o!(nGE_eedijJwN`Zx-rP~Xc{zc^v<*R>po2C zpKJM_WAW|9XVO)v<4@ZYi6*nuIlzO-#s86zq5N7f$m%tsG^H$VyI zA#S*-`!EKKi<11pK^N6t^j^nQ9=fi%G|+*vgR>p;i|Q|`b>_MFMKu(XzhBQ*$Ne4n zd-3E%c68i71^;Z)e_Gt%g}Ru4UB{Di5;9yfPo zT;+53zp@7G9`&z``}4Rys~R}*h#@NKjQ?3B@p-(T*TBEM2Dqo<-imuH?zL?G#=ot) z>&i)07kp>&FDG8RYV-Kne>rvk!+tn!fOqWkZ*Ls@()+;(9vHA8RRQnIJKl-3KxnKHGMRI@gyAFys`!{?4WcxpF z?RVx|`=Q6J{m$vuel5N_$Ri|e@f?X|o7VTF5AWG==i6(q+xNRa_~1{!Fgo<3n>23D zwDwQObW!DLYyVhZr2NhPEgl!$6^`;Z`#IZxSv&jF=D{jFucg~Co|c=Pl-c?!F&^6G z1G{0lExs)|uV)#qjWqvdVzZAm5!$?w8yatK%I2+HGUxQU-a$hLpSWuIJnvMSNBI)_ zPg7n)@xP@`enC2~xIt^>kb5FI{o^@`b0( z8*r0{yfY2+~B!xYdxH7oxd!#{3ludb{#%pt>?D? zA}hRoUUIyZ-U^Gi{q6lpd;5{j`>OUgi>RHxInOckm7TurKhGL3c6qn9Qy*`)v;Mai zew?+xveR#Ge=@tB^SJiHH*`|t9n7OsXs>FE8KC7x|J|%!uxXkH~us` z-Yg`~5Yd_xIYVQ?kRsZen1OBI#`+rJ)PPXdzp)aWV`!`m5{n6s>>n$Nv`lf4_^-AU^idnhlSnGG+K1$#05@9*7xm-->kdn z)h90e^18m|&1YO_=5I!BuDM9f_4z7m{kAjlvv$_UFSQf?Y-@k_mbG8Kc%JI7rk%3W z6>sjV|H9h8_L;5x&Aqry?To*TrAoi8{p~y5mA{!!?DF^dN-{m$zrFBBw{!mRg#{{p zQ+_-CY3+m`U97^J@otB2Fa8}}Rd}=CvctbMUiq8r1>64=U4LzbueQ#o?C|aFM{WJj z`OjLDt>=De`w=4J`hAi~n9b<^Qzx-DR4pAG6<0R1TQpZpz<`d)xm` ztNwp!@!Kr^&O8;LIgh#D@}Fwm-+RdNf5hT{W${m2{KHFBdS?9o)f!K~JX86b>oJ>O zY(0PV(bA-T_6WtB{`Ge&{$QB$H~shbR(`6j>+>IFl)kxMu+JkmS1NyV{eFsdUb)yh zFTBNyzqfUNcJV>U{2h9L;>~<9!|IPWS?zbC<$tkN|8p(>3oU>9{P-JI{B>6NM$6ys z|2G$?{G0xDuyww0v2`ACp>=-ob!)sHVcp;Txuw67GG z{~K2SXzzK1v#s;J28&;7@e8f<*D9+&-D3H_Zsqs&cFxa#zmMwgW`2IhIo}&HOjP^8bQ$-tsle-+n;D zeqsYhNva^)=GjtQKt3*zd`zJDNTB&pV0a@4c`b-|C5Z7-5a%gK@DL<<6-PY(w_E+? zU8}!*%jz%tS^dwm_*xZYyao>2l>LjSf}Y^3GiOVm~V44U(^^E$Tv5}1nO0ekwCxOF%+1WJsLsy z_D3yx!F`~H?Y zG`SufZ|!#-YkzFtKl_K3o@?#5U$??PV6C^eTkG9J*7{p$&7U1D{y=MgYCk_?KVNg$ z7*$@gzT3n18`k;2>ZwZK><_kB>wV{m%HN#FpE^?U=KAO0If^&ume*MNqpa(t+s;t> z=KAc8V-;_%N7v6t@=wi7@{ic@Z&v>1zS*~|{mgggD}QrdbCdPF&+u<5e{;X>rHd4A z?#G>enBvX;=Y^A#@m*(KuWznV{-*x-S*&L5KXh1R%?2Yrg&MYH0w3JT+6*rq^kDy{3(t-k|A?ntn&q?`nFprdu@qzNSCW^j1yp)$|=r z-_`W*n#vzjq2%vt{vVotpy@v~{ZP~0nl@{yY7KugIOLKsm)9J6#$*4?-G0*xxBuDZ zkH6>G!`>`=bN08_jN0(@S9*TW<~MCAc+NTgg3fncSY37Rc_no=zx>O0E!}H&&2L-yjh8Q)aMv5#zqze+=M5!QHoy3QKM&rrcKMMn-m>*ezh3u`Gi`qQ zw2_-m+g^S1gZZia+veZy(6oKR<==gJ+DSX|PaZh1tIc0nd`JJ`75g3d;b{jP z-KFF3V{CrLvf_C^FFxhW10T9)^@Rs4-C*-Kyn6SIN6qhX^OCO}b*H&?>=c#%#*Kuv>{in#!_=NSe-~X|CvfF!}b${YD>-mCbt>**&WbyY{=S}wc z)1UPHN%Q=ReIB*iIxo7oo%5+RXQ_T|p3}0=ryjP-bC`91x6-=bGurZBZ{1%$+VZ#0 zyRMy}@?*|>zG9u9)%92Y=7*viEdL$W{i%vdrEkvb`nPj_cH+KD-`wB&z)Ej$iSjqk zC;iTf|KT#_Z|wN4g z>-?(D%HNs`RsPKR)H&8Vw8IMjrp0%#&ew{@s`$)#Rd&)hG+(&A6G^k1{~BR{b8AF=ow%T@fQ|9sCnFI;9lpOLCl`sV!c$CiJEb-!$f z75~*kRCx3J#D!B7Z_ZPPTIZYg^9Ap8QTnF8rn)BinS&H>#@nsd{o(F?mA@HZ2b`yP zGoPGl#rM^tl)o9@3$5@US>-LVo^P6{pU*b^#qR%kR(RXLE<bs(hJq(zf*eQ{)E@ zROL18x~Jt@wn2q6=iPf6?tiP^dDi&Y({kKWn`_t2`{rcHfe6LvZ z|0pZI4~DAr%=1_0TKmm|to`dk>-ywDEB#g0{p!c8>w~5FDn0Z3<*c5HH_x}vw9;#| z{6Dhqms|YL`>FWMI(df`-z`@DF5WMhe#T1gTUPwfS=UeLD^z&1zTRTh-#u1))TNZZ z+0Ry6`Zrqh>LW{)zIpz5*=)s|-xt1QUB4gLsQi2D4tA)O|631G{$~IAx)tBotmhME zS?$+-j0$h|b5-?_oEs{>E>Y{=$-&Vg(W^yWZ52kFc~Iw!$z z9{lFPZyw}$QovmZej)gU;1@#wbjTJ%wivR-;1@%_7_t?Rt$=I=c)C}Ct`ceFKaIHa zLGwWefDQn4P$mcIr9e}l1)v3>C7>me)_~4M*m1x-gdGRWgU&c$9^x1W%!AH2fcc#O zoD7`_z{${=0Gy06O#n`YUoEfz`DI-#M4S_Wh0vV{EJR!rfrSXeIz19N1>ueYPDMT^ z0gK?C1S~>&lYm8#O$JVfY%*{^sy$E~=*^9u3=nwdHAZXgX4|o~qmrA?+f$ebr2|5#ilYygvQ<2Xp zz+(8l=A_-%of7vBU_+_|?chMyfv%8!{B*eQ2mT0b2mS;+2fQyzk=Ih>wG6Zjv=n`# z6n&!%v<$QqWhg}%%0SCNOOa+N(kufl11&{+l%hS#K+8Z&QN~h~u?(~fv>)1|AKIfI z+M%Cpk6Pq?0qSow!0|H<*wsi30w_q z2CfHg0&W3zxP_1vO8z$Rw*z+ocLEPXekX80+;;<{4*^d=_Jk|kZs|h6al3%#gZ4-Z zw>+Ki_5nzTgFhI42gC0m&|^Ulhio|f#^T+8%YhYe?*kkHWPmL6GC&sYZUDnS2Rsk# z0~`YE3mlqGBaJlTDg-T*v=`_|;8ozyz+m8L==1@`!rccLo9+PGLGt~qbL~VYZq(_2(8rTLrkw2nnK+%YzEO1cKT}2NRJqsM$VM2$Iz)axT4jVe$)nPmE z0NmR<99uHJQZwksT*=oC&(4Ja5yjm7zvC5#_ZP@{h}}WMS(j8I8pQg?E_j3S`F&B4*;*g zuLhV4zZzgJ{Az%?=u0)gTrn7QFsN`lJHqYaIG|`(XE6HPVDz^vXcjcz9gxa*2c`<# z@rZ9e`q%{EWVmaA1&F&ASb*_g3oJm~wZH;#An1XhS&WM;#)acP2D||r1)Pd7M**iI zPe%ddCjpBP_aVK~?xDS^!B>MH3_4iOi$^2eX-M;E;56tS4UnG1i9N@%WSaX0G@LLX@8NhOcodGOIo@M~cMHR+>6~=!SGz&Ty zbTFvnEErkTK5NNXl=7IbC;bQ_#L=xcq@*NQ-kKppoU08iwB z3eY0ZB2X991x>k)y;ANCy&Sxx({WwYGhQwVS_E1I>Vo25qMUr_Op8?IY?z}w2IRF7xWREjUC=(DeI%_z{3{Sg9l*A_ z72&ob44%pZEdnh9bwORwKA?T1Klewg5Oy}O3SnmhtAq>cf_8ClbGrh<6}^S)^mafU z&@rH6K)YZ*?+OUF5dKB*D+G$*R|pir|91G_4*v}N%ixy*${@cI@+%=PhrByvzZ3pzu~}P@V^`Wcf;R@|7iI6z-Y*?hx~fTYayQqSuHRT^7|pb zAM&Y?PlIeKFb#1{1*Y}xinUC*vmu)eem3+Ug8oC0)kA*{t=f#-UBdxhcQ}(m)=N4-^1}KoL+3bO1_# zjzA}%6!3rwpc3c_r;`|cP?e*(YD;m3Y6X983JD__fu*1zqKS;~I!2Ylsy1Svf8@l&H&N_YA z?c#1jdu)UL{lLQra})g7rZ+);11R%xF7m}InW*G0qh6#1ik?D0(t`;Pyti|eSj*UFE9WY2n+)D2l%W#pR?yP_I$pc z&(`xf`h$T(fJ1@9fWv_=0waJUfRVshpavKRj0YwFwE%Wq;%HzpFa?+jOao>Bb-=N} zOkfr;8#oR)9{3XQW#B8o2|ztC2RIQp378Aa0~P=afm47}fknV+!0EtZU=C-5Qg5wIJO&+@0x*MJn@0%;%*$Oj65LZApJ208#GKu4exPzq##GN3ci1?UQN z1NH&-1yz9SPyIgz6X3C_yO?$fLnpBzz*PHU?=bh@F?&k@Dw0$sObPMPymzw9f3|j zci=E!DliQ=2ABza3HUPb72r(ZEMOaO5AZnfE8q#>N#GgaS>V^e3&4xOZ-CzdzXN^` z`~i3w_#^Nq;1%FC;C0|Hz+ZvC0dD}ifHwjD{rlU%JHWfZ`@lbdN<1{u2dD!20{ws- za1Zb#Fc62<)xa>|VPGdvi-YH*fJwkcU`i zIshd=N1zk%|Ji%*Fe|F8Z+mwRq$UaqT4qexV`PkF#@y=YppJS#P*8*xP%)PobDPm| zoMW27+-A(%jJb6j#V}fCbPR1q$MD^2uT@REN51E|-tT(<`Yf)SRll{?jE$FYy;cE zcCbC{06Rhp>;yZ*F7OA~6?TI^!f4nX_JBR%Pp}v44f{X|#=uzE7skPO*bnxH2`~{3 zfCFI?90ZeL3bew(Fcqf3bT|YKg~MP591cgok#H0o4adN-kil_qJe&Y0!bxy4oB}i9 zR5%Szhcn@HV^y@4|cVK70W4 z;Y0Wc{tX|)C-5nJ2A%LZd;wp=SMW7_1K+{|_zrm2>MEcTs-PNbpcd+Ycdf1g8leaD zgkI1a`T*}*U0>)2{b2wM1m3l}A+R_s0YhOJ@UGP@4a>l?upBH8E5M4tyH>XntPHEb zs<0Z2fYpI_t?qZQ2CNBd!P>A6tP8wrb-#!8V13vCHiV5}W8ht@+XOa+&0urb0(jTz zwuWtBTi6b^2i~>1onU9!1^xiL!fxUfvx z4uAt;5*!4RVG6XuRG1Ej!VEY9j)Dx1gX7@@I1x^Qli?JY38%toa5|g;XTn)X%TnE>~4R9me z1nqD$+yb}4ZEy$N33K2sxEt<;2jL-j7#@Mg;BlA>Pr}pi3_J_ZK?gh!FThLiGR%Wl z;8pk+ya8`Q4sXHR@GiUu@52W$A3lVS;A8j%zJM>`EBFS!g$3|E`~a6M&3wU)@C-Z) z&q4JvoIB7HmV*^w6WAQKf~}zhW8ol}3{#*L4uJ;WD@$ZiIHY1#W{oU=G|3_rm?);URbw9)~BO1D=O}z>Dw_ybQ0vtMEGf z3%-JHVF7#x-@{LENmGTp6t062eJkARuq|)Cwu5^HRJeQLezrScsUogl^Rsn6uOscUe1NBk5er#XJz}c=P%=biQ21*@(+&M+dj&_IqKj2(eLZN z7wMNGy?j*Pp;3It==VMEi}D|g^rYzbfnSOGw|kWTbu?cOM&<8{@^^~#rqTSL8r63~ zq|c7@Q;|L}`hE9(BK_~0UmowHqxir|jTh^qA^QE4_oMQ6Mdd$>^oNn&BC2nTsJ$`K z?_2B{>C>a~2Sw$tik^pePgMSyNIxFw=cD>xiQ-pB?OhZdzkfveXGZ7CDUsefS}$Km z^c0$_m9ed5XF~|&eyY}{DULiBU*pEM0%@8S4QX4#Zh~=M)@~H z`oO4sMRY!$9-aUFqw{~2NG}!XAENp+7&+y{C~rHTr!v`F#u7iuSIJ&bQ5@^)WGO@2aT& zW25t>I{JOSrbw?5={=+Gt1KDCe~S9IO4Pq0(Rvx&PsdjmM#<}_sQd+yUJ&WmqVZ)> zd#gqBw{x`K7DV~)ME&U-9q*Y@|7S+)!bFbkJj&1(fr*Q>A8^}6a9YqZBhJ{ zsDHOd>;HhLzu!jrXGPz?csz<95b0+k-6N|1_#t|Hi|@CzNAV}4@*76;_xEVNMnvU* zijIG66dx7M|I*RLlB7JzI z4~gn~Fw#dy^SM`4e)(uV>LUF~q`!;m|2B$W8?DcSqV_(Ij{h4``46N1j*O1S!BKr@ zMdkO7>fbZc?NR^6Me){1UlQrhqw{Ni6hA1MpNpg8J3DH>XVm{oqj(nSPows}iu5MY z{M;VtMU%jlp3|cGheY)q7wK!F@jV`ue>Ixl%cJ&w zjN*qx^~Zm&>VNwCR!>LQpNeR_eWKTUr$_z$F}hz*jMmG!QGMq`@iQa+ZB+lj=>F9& zdcSymG@q|W`itmzz8L98BfV$T-|>;YC(7R`ieDKWpVgz|_pj*v&DPO)Ka27YkK%uc z=4*0vKD`j>7bE>rq~}HY)kwb{={F*sNBZqZzZ>cIBRxOTt&#pH(jQ0q(@1wl`in?^ z73psxy&%%xNBW0I{}gE#{k_r3NLNR?Hq!NxZj5x#NcWC(Q>6PvdO)NHMS5_g7mxJN zNG}=bB+|=7dbvoi5b5EOUOCdMMtVe~nGdMLL8Lc|bQD?kdI?{VY`cIMGJJO{{kB#)WNbeWv36VY^(vu=R zInu3>o*L=tkv=riGa`LNq>qa9F_F$9eSD-(jP%Koo*C)WB7H`rXGOXk=_?|ARiytG z>DiIKHqzHe`o>7NNBWjX-xldRB0VS4cSri(NZ%i6AL)l8{Ya!Ai}c(`KN;z#BmHco zJ0kr;q+g8mOOc)z=~pBDdZgcobROxqBmHiq-;ebCNPiURk0bqQq&p-1MWnxq^f!@S z5b5tD{X?XGinO!OS1RrEn94|3N4hrBzmHyDZV>5BBfUkWcZl>(k=`THe~k2AkuF7g z-$?Hl>4}k^6zM6Eo*L;xB0VG0M@IUXNFNvJ6C-^}q)&_VnUQXb^m&oKFwz%C`qD`M zHPTl^`szr}j`VerzA@4_NBXu%-x=wmN4iI(dq=u& zqz6QLu}H^%pC|r%K=I%IiT~cuS<&^cEz;*k`us>=80kwQeQBiEi{4*v80j?9n?-ud zNN*kK?IOKIbi9^~^wN=DF48MTdgVy37U||luNmoeBE4~>M@4$uNdF z&A@Ln@Y@XhHUq!Sz;83~+YJ0R1Ha9{Z!_@Q4E#0&zsKf_7tKzf1nzQCj@sX)HGK2Mv9|lil zl}s|7?jf5zPoUVsMAX#Q%d-U7bPBA3s_^xb;41#BlxGTr%_fS}+MePIU6!8d(bTW5 z=rq$m0(EsmyUJ=aGDC^AA%`Ojjm#Cg^2iAFH8eICK5LvRYe$Mt+N}%Y>e;JTuio;E z0Nn`aVXu?t1jr^$NC&0LUDYS0bwZhKc^*JmsIna84}UWEtqb$`)1LVF1ETUBe!iJl z!=dffTed!Zn$8xVG%1ITBhH^0?eo`=#~P|(N%rj3)NjDRfwzf|<0d@`3!GJSU&wQn z9RIMcq~)hV9*YyFv`Sz4%6I+4AY@$CwGH&8mwcyR8V)lhE0VUqQJ-Wn)UZ+;dDyO&Ho!qt-4uy*jt zjM_%}2BECf$K*?d1F)%<4Hd|o$wX``zKW{adM1kL?Ay0*zkYjZo-7s_pA@biAL^6Y zV-R$t58L$a^=Yl{*L;Uc9!oKtKyqd>3CD{sEXUA{bh7HCP@gPET`MfFp698LQgSp{ zX{@y?gHM)FSDkg&1)p}JqOzKy)z#f1KAD29jdNdo;qp==RZ?f~K98A?b{nJt8QVXL z`YOT|k=p7T-_-hOH7t$Lmru2W`u6QVaPUxhhJ%wPZD zu^~$glP^J3RMP|}q|Dyn#fNPWe45v%FKPJpG+!0SQ;1I`S2 zOaV))uD%BcxT)V2;**mgT!rM?(X;1`U3oG*ZZa&7dx|`+h~elm=BJB1oz?LFvmsCF zT)6#T_i^R=XJ|K^rK~`D&ABPhrjWVs>M;jTo;lHVGH~Y0;d9~3iE<$b!)K{B4H_iA z3OVJw?kV+42A?gVaHdw*EEmd3ZrH+AX1Ms+qo`c6!^L>rP*!i}p;D^ds9SyEsBm01 z)%v6|n^m477kqLZ4+}h8P zWQO=c@8!B9cY?+qCx-eKUS4DgpB;QUSnXm})w$veYe=qC;S}k6rIwYYR?B%Rv(V=@ z^)dW#6_@K+??==Z?z8&Bsdt}$6h66YtFzZzT|UlxRT3XxT1b z7)F?eRf4ZLKg3p6uJ&KPii#1x^o0|+xvRcVzm%<7EBI{k>N&gEHtCk9z2Q6b;?w5B z?8vNc9rC0WnE)9|W3SyTPgabb=nWqfhyDFO;(E7$1T3_gltUfu)$A&yw z5NSvK6wMQ#Tt?(&Y~PE;CmoTO8$J7QTOBa)rr-+~CB27oE<94yCmjhFlcs(zn@`uD zF3OLJJjT^)z~aM}TWQs`mX$AERrlyWWT_QaUVWYQH{NpF?RPyU_!^q}4qkHE6<1$l zoeekJa{CVPRW&vZ7_#&-!$+(&a^uam++kUsCFH6b`wm%Z+2PIWZnW7JTWvM!K=J9J z4riyVqgL_h<(4VX3+>_J3kzIcXltiWFMP7>b*nws>eIPb=Y{5zL#L;9Rn^7aedhnO z`lLTy+yBBB4*p-ItktevudKX$VSN$_$7;6t|*6~2W-bLP|j$$LH8xO!n5*5lf`8?3Ch z5>Bt)_lb|?B8x)ixQXrA;FCr$XDiX1WX`cAxHCR}v$Nfs#!nd$+Rn>{1-ENh!d-AW8{cm4I#VJ~r z!@qDlqgz?&kF1Duy4n!Q#>`&Sl_x7-I^EECrTD6N0pF)@|Ngud;w|D(AM(PLP7VcI zef<+fS(!VTC^mT>o^Ep9kj2^hlK4c0mpyWu?$`gLkSC?+MX0Z#;Y;;}>67k>`#)Xv zg;6lT+PX@ftrr$AuWjWjF4ys<;0sGadJ`tHpZG%G^aCP!VKOZEWE}N+*aH|brUK9fRyc2b3z;;(fCUuaQ! z8MfAizM?Cx@Np{eSp>H-nmOiI^8Sx}90FN2C;YO$N3Y4W zFC5vhYHHu^<_l9wC*KccLp5@x4Gn*~us&Jj;llV$C>uVLlcgN)Diu7JQ5OtZw$+I5 z7l*C7x*_;%kx3(Ly+c_kFSiAn;OaY2%gTTyNqn_Sbmdu7baiOq3*FZLh7~@!Acn2B zcG)hUv?H%{Dl3-{J}YRc!^J1AFjqQZtNgNTs9>Q_KEdNfd!N4jHV$RwO?&u^C%kXm zCHO)&>>5*BySw-fph4WW=$-=TlUn>6m-#*vn z>slVQbyrHBEIhdya?;3Wcz22Km&2{RN9$YYHP)_ zSDz$Fhhz$BR_iKT)WI_i|Id73a#pu??Ni#O!Gi}686`ftB5ONr^k^6LF>&&Wou3B| z7&PP{@r9`hqYF2T!?ix?GP5i_uBkmv%Z4+E`Z#J04X1@X8-uJ@a@)H3bY?0l>eW zvd@crl6!vPD+)5Y3k#nNN4LsZ-F$MM$SwT}@o9hMk`_jNjpY^9$#K3e_^cvXAf(0*|1LDuiTf=^~7 zv=f%cJDMkJs0X)gd8IS>hps%yC~UnP$QWn|_g} znS;9W7FIY!d_~u!0XjX*^1|gw-a_ymWR;L7r(4Kj&DGVd8S-dPW|&i2-XLvcWu;c> zw0t_fx#nrl!mLzRZ*6%v^@7bfTEu5rwkT^yFRV{046W~3_`*=blB_8$tWO#Zt&A)3 ztXjDeP7)vE4Ktz_-umewFU+zWvaqm@)I6J z?0I$YNmf`G@{Ygvt(GT~C7YaZcd1Vr)>*}Uzxbq!daBWIL&MyKWxM+GT<}S4;dT;U zN4%8pCzd_`q4x{re|yyuZqUzT*k*P18u89FHa{?2?H@{l91 z3u~IR$8wg+57y)Z_x`~braH{F3~-S8!nzPG^)22lPa2`;b<2q_e10#lc6qJGwwC4T zTBS-RZC&x%Dzj;=USIPtyOP>LY4PJux)Yq9$UY_dD0v8+nXz>Ckts~@gchw8!KTm%fqP?!2erzm0j4E|1Z9+ex<(uJHAR;RdTw7j{tYo zcI|2>%f7aLAMuGtFHUkOYsUXd|GN7~59iE5p)9ka(rJ5J{fuVG$LG6|0TYnoFuY3-WFdt z3&K?*{P(`qN2KfA`LMe$1bDXbfBPyvDty+CbmtTG6)j6Qt2!+&tPW|FMe}V}Sqj1Q341nCIPGz8y5EiL!fJk64MVe1=w(y>sN zTu*xp6Q5K=?coDde(v%+^>LQT0@rOL@lhLdFPGeK+uJhKC;gFT^gxXYKADYh+m`x%|mCRr9QNnW@Uk>4i@QAI|*R+9QH5v=B}t z+;zu`kFLmZ;0%=8N8_2nC$&gniPYAfZ$3LbVTgYYJ_eze1Nq@>-|NMvTX_E_`8Rd> zI2tmE+^Fu<`iM#s+Q@yHCx?ulHHO>X^C3?TZ#V!llG>Ne$ImEr0=T}sr)4ECY|`$0 z^@ZLP^ZHRJYa_FX`CNVB-c5yE>G}<*kv|+?$($5-RX*ftD*l*!F@@aNhjjDFOvycX znNXI`{p6y_uSWIbeeyaX&km7vj%iz8eCCqj;j7)m^1`f2+iY70pH6D=|NrO9p`ISG|sVP!-A!dz8V{Y~?_jyH2wd%gIi zUFnRhX^zJoT9!O%LA!X5=E*=px1|wZ_{fx{L6_^E)Uw@P7V>#S$dj{I&Rm&;K7HTP zJQ+n;;qqp=Q+?X3ymlh_2Q5oc<};jcJ$p3_khvg@-)G=+$9}vOAF{0YsLeJRW7Ue{ zD|$2v*>>MP0yyVfs!Qe9=`y5gfyShVt?FL(JZ#3v<+UNaHfhO$~F z^pcC)E+J34%ug5DWFd?Vd6d?!g^Au@efFaqozy8>ma1fq!!4@eaPu)dS(4$k!0}p^ zhV8JiC{GW0K}##4!gGU9S4KF*gfGytU2{MkwU>!c2f(qQ!@yGlB-xa znk|~AjxZ7YY*F*HC)Ubn^@VGO{ESt$FQP3^&&Cu@({(zE7>UnzT}`m|lSe$c-Yf0-v^tT|PDA&YkvT-42HE>x`YIljvh*svw&3Ez$6AZM7TT5T z6&GFkl{Vf!f1^Im<|g@d*&)N0UUtP~5M`_QEn4p5{KDtZVM{H&%;w_b&7pkU#_}G- zuYoQ#UVOa4k)IHfIauC{pKN*IVl8jdsr4^~kA|hR)Ov^d!Z{Uw;?RH4;OB!+-h#@N zARLe$uZxdC$XO-7kR{vankQwuwy(t(UL47a=an6|mCD6JpLMA)?{Ww3CBB6VT0X3; z8yNCrvJhN5a+DNE4sFBxaG+b;L~Wbdi5R|d|mh6a7WuzeBlS34Gq0`tvhhw zph3Hfj};*2aI-MD zOuuX^SYEiPgq2a>&@4Wx4z0@ku?RvY`n*%r$A3&-%hZwp3p+@8RCk zBEF(Jor9WPLtf~9*MLU{pC*RG$*S2~>kD^}B5}+@9~t2k>pN9^;We1NG?U-S@7wRB z;IoBdU7TrU!#F4*?$dthqpMX_X9ZsvD6c-`_SmDxC03seCDeFnSJ`5K6_uA2K5aU5 z`|`p^!{O%2xo}PJ@p%qIkd2qr{q6}qS+`sQxn6Ty?(?LU<;8}qZhhtcg7{>X<=Ar2 zi;*&d`j6tWMe!BRgt;@&QWpbqbBP36b0y11p>Ea1R*>DEy88Xv+T}P6gQ;WQA z?F1h&SpcC@>OJ$n@+vCM5?@i798mglf#!)c;R9t3xB*`HU zH=5bvQ-^%kEHCAo=7h4L?ygGj)%t7{(sotNgQ32z>ch@MU3m-r4|n;xCZXc7P?j54 z=!dMnhKA=to|KbjnH07cyL_QO2~@uH3m;R+_DZNPETS+6a=m&(d|C~MO;5s)G>_l! z;GWpK54ZWjL#h`iudBOqjjgF|6ko9@Wd*Xl`Uju*!zTT#8l-tlhn+~=M-wX>5@gY^ zE%(c^p@P^aC+%>_WBj2LGB?c28sfuKuP-77@wJmBcF_95RE5)qc1LU3Fdz6>F7>_k z7hiQXzlo!-z2&o(86nRG9A>n#@(8U@`bC{`g4NUc{t1RwA1qWO!T20NZ;*$eebem4!t3EDZ93J^83!f#n^gAcCCcpaL z^($NK4{lPw{2F!luk0k<{N2A^F}$0<_|MFL8-TcMh!jM?n%`d;sTWq7c z`4|4$CjIZ`@A`Ei3XSgOFMeG?>MC{fcmI*`gl>NM5nZvhcJqfHGg)9pH@|!&TWnc3 zf47h0+{|u%{g^~cv~}}$e@i>7o4@ozU*5HM^LM{Z>e4mnEyn zck_2GD`IoI`Q^{r7F$O*|IosTo!8AjteZdY=9fRES#0yW`T6sJU0Y{2f70dU@78tm zFWt@W`Yv3z%XIVCck?gX&HvxK6;A$DyDIqae^suMh@f$?ve!LZ_7}BPP*%P>D{HA4 zrVg3NGOrAOD_eYrEH1h#{9SCRL;CWi<%`yMb@-dtqT@}@vE@L%Vk_r^94o0;=2Xt_ zVy>iz#rY-YlYHec-sHTLH74hetPwdc`rG>-4GP#!MgMM(F=zr%f|&*qd&8`uGw1 zPZ=@xkcpGVO&sS&jGwfhrca%scKYG1<0nm=e4raKar&6Cy0`z7X@?(#aujXdchcmr zTezl8pBnVI@na9!f1fd9$4(u8D1A^hb^{@>ojS2~I<9FGismOyo<4qRs~a(4%(My8Po{+bMzl_1XWZe` zIC0;wL$}pVpXx?T9Y2ZrlK(X^WbZ%ukP(NDpE_;gl*!bwQ0y}`%y<0XzEh`6o3`(m zNt4!a`|P{_lzm#qOs1)@JAF#)l>MenAG7a)ZqmfDthI>_SSI+ zQFICg_8C8Q>f|Z=us>$HG`;`$=`s&tn%EyRZrs$czu(mHCQT`&q0T`y%|~7vVp65&lCL;Xh#!{k`k`SY*8>L0cUzdR%3*XkLu2!FZ={~n9*Pg#Wjh(-8MTZCVpi}7pyyl@eI zd1l71Y%L@GWzCe%P|fw{S*tX2XV;2gX@Wg3_Q4AXvn~W;{hQlWZ=Q|K|=-}ToW2H z@ZkEQAp_SBpJ=iD@nKW3;CRSL3K=-G7dsFiWZ(tz-5`9Bfd{u38Zz+U2BRSZ4{it= zGH{Et4_@>VAp79hPr-v5%06V^!3{%025w3A!HbrC9)jYr4x7n7xCB3B;K418h73Ho zWzdj;2e&L5+;aG^UbO6k2e&*LGVtJ5Ktl!|+=^((#16-T2e%Sn(^Y`|O!Ug^Lk1ok zF^}I%dD#cIDmjpW2e&$`hOZePcyMdO@9;q;mK=|DYp@S~P5dLUkckF|FBQL7>T_#h zApbsL}=x1Z49lAr2a z#(rsVy(>T7;L=m-U2<);^D-~BynfN635YV>`K=$?hWxlX%KUX_24$bH-x!doN=?Ci9WU7m3~+2 z{Ic54C`foP3DD%T9j^Qy+G*>ER^oVLdJ2*!L3VKa6IUt z4Czefe;n;z$DAI};L2iU4CHvp`vduqfd{uM8Zz)=*P`7qyt~_t{TCZtX%6$lewi;r zXV^rJA=dqoa*%-sHyW7FMCNrb{EyL}ajY>Ol;YoGt~%&5`=u@D%NWM|B02lh*GCx# zq$g3&Q2PBC`#EcIL-NE2$t4Y}`x;j!R<5Xb`2&=HoVvit!%9wOz9fGm<`-XzE_u#{ zxtu@5GpyT@dBd0ANnMhUuXKN%OCG3m=@Zlo9)I~+*1(g*-e&CBd{~_;593@oh4Iei zJXx~Nm3Ux-mzb0l|8umB&1fTeiZ&}b)(_HOzC@oStSgD*&jtLYs(RztQs-43jgTbbKiiD6T8j?J*?ZHyV*?bH#@C-kfa=cUXWjBiJBz!OjIpbX?t z8p5%?lU#6f@RO6R$ML<0b+LVeOX*7no_=|3=`Q9N+#&*ZgF6a8WZ=Oa&2e0;&ZWm-AK*AazBt$7r?`%>pFCabQjec_emCa>wsa5Y z!V;W!$5Q@5jy3olIIj0_Za=}A*pg#OPKHg%$)I#EWywpfVeO!kd%1Sp(ZIcndY<7r zdmm+A63rUO=p$s{!5xQ&4BS?n|MyWpxD7bZ=wIo6+QOea&YB*|^@4l18%2APe>`nH zL?55w8iLIs#g`FxTT>3)Hdt`mV!>^P1;;frBiC_F%V{Hhm~o0efjYUa<=-~Al>IV( z_Xur3hAv&r^$F|IW%}q&taK@4;K7|l4%gu1QOcEwK_+${Ekwx1@d;rhb?i<@mRMle#oHAdMmHTI$>=()|=<`LUIG` z^BSnc8q9g!kfAdf3%Ii=3z=Liv84+enJ?-9k9M2Tzh!w{v^@9V;lx(qQ`Zq_9w?Hn z$^O~&hX<3S*bF?lHtKnhv0}5qjV@V&T=qQ=EAd!&4)KIC*bF?lbKxb%EOv)Rmp?{- z*!RNo^j#jB^ba_XG5(!<7yBvundqfCCfL&Bth@8c-v~di3EjpVGtS3!G+MZTv2M!T zW8E&qFGNEI2@gH;Sa%UV$X;fC=F$iDJ-Au;Ap;M&JS6F2e2{?$cL^FY@ZkQ;KJBDp zq4WgD3+pZ=4>ItOzsR`$f)6stH)Xs_aSx*p9_=n81{vhkk5bLl1K678>L?TZC>CGpqlU5a&oU>>kJ?Re2w zRdNrcF7V*4MneW(EctF%_#1x61awYYZa3xt?fy;-GIWOZP^w@(&BhNIcyQOCAp;NY zS~O(f!Ci-j3_Q5&(U5@$_eZX`%$K_XANy`J?Lmrm@({UKIL9I5!DJaeFa8^;12QN* zMSmquu1C9{IlsB)mj^Q!yw3L}d}GMJiL%UNhRrFHyjtzjgkywGYPhDhlLML9Gthg` z4}m!cs|vJaV9bVfY$cHouALtDD(8qbP(guA> z(JAB0WQ<}T#s3&!Gv?M~Q*;Ji{Ewp{+l%!e%;WkCrI%}6`U=-%NTn<}xf~;`+nc=C zSr@PJevkV>vN`!^4{k2G66ZZ}dOmB2>zap*{giV(k@K4UGS}A9GF(S4kZVJ|OR>pk z+{d_%mALje)=ude>X7;b-d}rcF7LCSpf2GJ>cx6+Pog0M5AG>6WZ=O)O`GJqH(B%G zA>rPX;&&z1Al7frnjVeb9e&@)>tpUE5`TtzBo~{Oxt?P^xM$Ij)6degtXn8OM_trc z{(0!8eCsDWiGF$e^9ys3n{*w^SN{*8Zvb9IDI1D zOYAOUH_7ql_@Bl(yBYOTUn&-IVx@NC?5DhEPEV&V=+e#92c=tRdvp4*A!V>RI%B^y zSMKxl^F`_r7@r6CJoP{Z9^4CP$iRd92U-||#+DwX-WRx6L-se?Mkm}W{Tbw*Ngib6 zl|P`p4sz!+4^MCm_G7KxNIA%)e>XAz;AMXc%7NR6ap6nkwT6Jti+@Yvkbwuc6&f<| z;6|Y#0}pO%G-Tkxwa{9SRP4p_zKfK{%v9~P4R@j(u5B7X3Y9DpCv3B<%6Smny#CXoXk zl7q;BvgBaX$?SuhLJoLHc$jVmIiv>@2RD^Ccu1xZhjcnQSa%3H?3b_}l0%6@4(VaU zz|9~I9+Ja}Lk{T?#K9d&96TgP5r-Voqltq%hB$agjwKE`q#1E=#}Nk)$??P?hx7#E z;7%kC*-7MJ6KoFY$;82(LL59KGs%M-(o>0pJB>J`XAnP~JoYne4rP4qOyb}nIg1$N zke*E(TpMxlkeovta!Ai54(>eS;2}AmIOLFCKpaXJk^>&HOUSth-^KVY#fMGsm1j`~ zoBo-7NG}6?CCLFNd4Hii0Q(T?rw6y zLvjysDBnvCHpRO8h=Ygp0dnpq2XZK*`C*PLfrsQlVvs}n5OHu169*5;Bg7$x(qs4_ zeH8!W_@O)(&<=l&PSH7icTbQH9+D@?g&fkS$Orc{aqy5lLmYBQpCu0NIpW|U=^zd{ zl%GfcgZK-?!9#}5A$^fJq+4^1BhUSl9Pp65L>}ajzDyptdBnj(@(OXtA$^rNxYvk- zhvaqQkVE<}_TMB2>)s#-JS6yX@k{$T7TjCJ!9(&kO&r`e#KA-IEjf^j-IhAH_Yko*a)&b^?55a@=>+i%xe&gWH9CbP4Mr`2!jKG`#Sh{;5GJN#|IgBaQ{MsC)Z0ZIVoh4`!4ov{NN~`NglX2$bk&po9sgd9$b!w z3_Q5E(2xnz53G9|D|KMqD_BA57uffrrET!w-a|tM9^CtA$iRd901IwDe#qF*upZop z_|Pdf126g`_Q8P{`)_=Zfd}_7`U^Dp|Db7tDa9`tx47}_Qf1X=4FpAOjEXJ2ZIu>b_(jGST3^ zM?(f49Ail#6Bv&N_ai>Yz=Qh<4Hg!8M{G0}rkT8Zz+UdZHl% z*9!|?_Iu+OM2nw&53UbB$i&jW3_Sa;2@M(j&ahr!9$Y^x$K8F#m>>fWt`kixlQ_8k zl!pvFxB+O$z{wnorc4GN9CMpO#&PxFSVP%zCMJUGc& ziG5;Ta@o(ot;{}T;3bZAgR1yAnClH>Ra}=KfwY=y6Sx|fT+Q2D;JA| z4-TCQ;v+A^dT{IDgA6>lk+3d4aKFco^`h}-;337IZip7x_u$sU2iXQ_aKt>Mo8SYt z5&MvV2e&aAGVs93;Zn%JgOf6w!shrP121jh%fL%)GxotlDwZ6#1^bXmU$7qBmiQn8 zFZHgEh73G7`kO-Dhk0&doN z`F`wUeQzM{i0Aln>dom_X&U|PPaburhmwPJ+i*W*zeJnvFnrQBImyTPs4H!y4RExd zPoa)h#tbFKoRO1Dp0p1MZDrCf?Ux{7o-$z|&`yFa(MFC<(H`8kSbT0VeC(%#Xb+MZ z-3gSZZV$e) zkeo=)2tIfDni#kX7%RS9{5#Tzlc;Mrb%9%na!?i@F?TX`pp%s;3%NiYCHxt2k4;x0 zAKa?soq`|IZ^%LC?0acrCRXCBk;{IG{&>iwFZgnBGAE}}b_6+4V&7dz9yVd#%GBw; zh1H2chRCmrA(J^@i@KmhT^`cY(cso5cL6?f+|J}d z=?pYvXA;LI*c{Tc@R3`_y0fVZyg(f#sb?MHkVCpIdEiD80}sjXi9-&_2IQQX8SBnPZ;1V#80#!O2fu)?gs(*0LvkK*@c5Gdun#%7jmZ6h zePZeP>_aZ=l{s@i;%nwS#b$C0u*pyCLrR$vWiwf~Vwv9@(v&*DZ9*K7`5E~+ln&!O1t;g0#30>_d`K>)E-1Z0+))=f zIofSb&L#N2qK;$G3Hn$xHaU!+3qhGbCQ>?_pYqPC*y+eq50z_rAzSr86T7{W&d(~f5Bdc56XW&G4w$6VC>@fmcTa@J&gV3@hyc-@GXsR8T4}KmC-A(zY@L`*RjkA>seKLJi=|0L|GSpKj|GL!u?u;;*8?4J$%ah2qJ>;=?W z#W@2>HP<)DA+6y)1Fn|y3Opor&`1vCkoF)4NvD51GUu?Tx<= zacl|eA!#B8<-WxF;e(X@5;nu1^d}DK05rCYbpwfmhhz}@gNb2tNEagq9KL)AITFJr zkS@+XeJo?$5|jfE$x!@|{{$!FKLsmP*7Ewk*5y#D#X_kL3#EGO&*VBRlq#@LqD)?e zt;Rx${hZvAkIoN|6o*85lNQ(tKS zxu4;KQYX-ELODl%sW(68=|y|wq?gi8LftRHRwwF2|r zyOH1RqyOxeRwVXU$`7Y4_DgeUgSOH#<;1rVzLf!+i(Q5Mb7}K@xDYOaS#U92LOryZ zU0u!VzjHXgj@MUey;--4>eOsz)=#!P({5GOZi?lbbvv3q+^p%$v^SfX-yNZOnU(iu zU8|M1xG(Zs%x~>y7Edj|bgtERqT1YSX8Gw!>MxshCtH1&n6>&dv)-)R$>L@+vn4C< zi+-Bl9jWw}g)QcLHOn`fne}Gf2#cG|%zCqKb&H$L%(_3A z-)v^qn{~Td+-zpn7rGelZkp%MHCxo*Y~?MU6?tY;i)UutA1&XkFZ{nVzuC;JH|y5W zcxL62^Hi7Z`1+#WBG0TFZRIRKHSLS|pDo^M*5bM4d($P$^Oom!*ZlN+wcg_HVAXC- zi<`{~ZRIkv-mKfh>M8O}XNBLa+tcbbo0)ZMncr+?))%(O`;+FmwJpD}=FiNgHV$9p z?`8RBGqc{T+uP!1Gqc{T+sEQ&v%*^Y-ZU>*!}ZG-{W6`Ib?aC?W;3(itXtR0TYhRf zEBt2NNUO)JKT>s8XtU+>)n9tp>b2`aa*E}fb-y=l^Ol-+W6W>bn@tP9S#Q>j)%?_K zX4b7|ezTcbZ`Q4EakIJgE1jwSvRQYk>XKP+HaSiGnc3WIdb*W2>&~$9X1&?uOe=3T zH=CYi<;}XYEzkPtj#BMS`(nHss6REEne}Gfh88#LE>K-Eo0;Di@r^9Mut%wO`>M?f zziDsUZEWStW@f!vUJ!)!nwrhb`a&1=nRVkV-)v^qn|0$g?lw{Di}hsMO||l7Gqb+X zMcy>aGwTcgrslVHGP9}qGn<#pv@iTcJ!ai>t;cO<^_k7gdaKu)cAHzC+03jr>$b4C z+03jr>-MwuwzNF6S)nbSnf2y(TUox@%&a%-Mp@i!R%jbvX4aeE7vtVq%Xw=rHJzDt zhgiL4Gqb+1Mcy`==k_;ysM)Zpc!~S-&p-1+w)$s_2TwGm8o5Ef7t2TVrdv$6n=YGn zebbQFX}V-Oy-~}znx1JoGd<6AyXoOKX?~~a8K#qdTK}9PZhF4yQh$v%w`=*b=^3Uw zOncLAfacfVtofPg7SkQ3XPHh0YJP|5cGLB@X!+70jgKVkO}CnMOK7~qbYgns9h%>4dZy_X z)ALQ2Opm(L`fGZ&>CCj7qj5J>+nZs!)pV!n%=D<7LycOuHpD zUVo3qOQvU-_NM2XE-$6|t@mnvTcUb_X}7fM3HNEd)$}~moy%DH`z^kl>iP#%XQoT0 z%ckd;_NJS>=I5p-n0Cu+ecp7l>A??be#vyJ={D1IO?Q}19@6}#6|}w?rZdy?O?R3e z{jk-)qUO&v?T4!_J)-esW!3Ic)g7y-E}L#zRdv&2R-fq^rrS+-nr>Q6^IIR+{1(&m zOt+2DcxkT1n^o68p}O;Ts%M*ST0?cylNwLfR9!Y*UR!mmJamXHTSxT*)6FAQ`=>SD zw2A8Sv#Q%SS3UbV)y-R~Zt1YN>A9xcw$k{7=PiGf>IJ5owpLw!LE|mksc!#=>Furj zi&p=Rs%QRFb!lhSrI%ED(;cQuf6{o zr|IS+R8N?%@unkHFECv?N_E?Z8gDi2K2qIzjK=4fcE_qt{;l!M^eoeDrrpOHZ#P{s z?J_OjVLCrvb@qwoH=U?@foXTL>RF#!d#0N{Q|(UEc-pDD&2)!pe}=|qey;KS9M!YG zP@SG{@h?@kU#NP*SE}8`s?)Dkcl=fLyl+%DU8#ERw-%qRy7ZmtcGa!_vHV+AH~*m8 zo1SC3^?r@#KWjWU-QxH?6tD+XuY4@O( zA5~@f52+qpt-AdY)$>hfkExzhqw&&Q)iY~NKcl*{PIdVO)uS6M{<7)`jjCJTP(7!I z#otuj(o=QwTdH%@x#?0bjkmpRantELs!P2!-t?a8PSd&R8GWq$2O5`Wm&n#KU$s2L zBy1n5mS>sB*7}j^Hq-5<7ZmZ2HJ}mZ2Iin-0%EA>L`ad6>rY z9-7~7y1A$7;Y(_~&2-sxQ*VtoFQxGg)9t1^`)a(LXuPwZEf#Anr>M_b!i2Sd(-nwCqp&fvZBV_ zFx9!~#B|GWjhC0y`0$lfw=bo7j%jat@XA)-(i$(D&X!j_YZZ-mn66({b+(emN3Ev1 zZDrN+Y!%s()l_$wZdqM*`|29+G%e43k*&E|<8w@V(<6VU@uqb(p0BC8V?EXL*HY~^ zP%Y0)k*#x6)uTtME^lV#O}ou4{(FtLY@vFA>834Jx2>n~Y#S@TzUsDZRnOc&b+Wzc zQ5#x)JE)#-+U=;ibtB7fQ7zxWm92Rv)iX`|omG!aHJ0}d)cbaZ9o$jjn z&6`?#e^lLJy1cvU@@7{59+tnk>UPt!P3QY)eE62u-u|j*Z>73rqUx4Ws*?j%H*Kvt zouswaE)p&>LHq-4>t-kFv-g=no+1smjhpTSgL3QU5s#|tc z-F&3#Ii@>~RW0AG3fu9jJ4~0(Qr*6b#?!M^%kx@fYd>H0gk7!v3smQ(oBpg?p3Nd# z=`X717Wy(PKU(A7bf@WZS>tnd*LcU}s!MxVeOIW?O}AXBx^+*DyQ@_<{YiD}-!0#C zcCG66y)@o*lj*%xd($KLQQdsA#`ytp7*G4Hs=evX+f|pxSbcY^o;_A|*>v;1s*`&) zo||^}tDZAX<%&p5!!|5J7I zfvP*_sUA7W^ed|8n(lZ*^_+t=p1!NPeX{E0Ju5#&b?JT8^9uce>ItnDpRam>X>Ypq zV2w9_r17SysBMyX;TmuHS>v-!XQrEv(0H5MG}Jq<&=soX*&(vERjN*oQr%jmIy^^&cyqPt z($N}kGdQvQD%V~U$>10LK@=PJw+DtDnT^g?OnWt;KV>Q*Y&QRUFy6ToQO|PL^o{u40 z>zb-(n{Hc6^{BHo-oCc#`KH}S%Wu&VvyC*~dY;BRH&)$r zzUr1uRJWThn@%p!cJV7VLCJ2a*@V6i@51@l;-ENH1188 zE>_*XwZ=P5H*KSO!X+9nZ>zfg&#IH{RL?ZsZo2+bji=jdyv?-RQMEiHL$-F);rSTo zmYp>|<1&r=T~s&y)$|`!&obS%tLnjJjVHUQE}L#Q-F&&m%YW2(yXn$s)x)pQc=PV6 z%cjew2Vbf2(jFS0Q|LWaw_IiMy;SFg-dnXiQ$x07jOv!ZsrIJlnRa6}F3;4Et<|(V zS3|aT(<5iAZr)e(XPeGUH(jG~Z@SHNhv`n!P2;tE+qIhCX?pN=s$2Hc_$<>Mrkk#} z{QWgP$F!fMI=NBf9g|gen$D-FZo5h2NvrAwrppJb4$seEye(5zx7@7xEz?yex2Wzg zT{hivh{bQUxaqR#_Cqx;&)tx%?J(7IO(!!fe!IrYrstUMJVN6$@6dRDr0S+SRcA-3 zo@KgxwCa&_G~Rlw>UpL+k5fJSE{!KAs2+K@>XPZ%rrS@{_^5j{o|~RyIy=eA->dNs z)3Z(Irt9z1cyhAl&oEs+MRj-v2lG>!se0!9n(t1v_yeljP0RB>WJ^xdc&F($(oT2%{AJTZ6=~<>b&(!#+hc#YmQ@y}+Zo2gmjW?gCad{4i zZ0#4Q?lj$LdctFtf1$?bnJ!ounkz{i5pZcGdGucbcB? zPmMR-sd0J6muxMjXPE9Z-D%p-(fkQ7Ykuops&msF_o|lfqRN(=PF_*ne4obKOqcFg zJ^WRTx0!A;-QqRg{F=tS>Di{6AJq8Z*EQbysOkl#^Cwix_g%yGr0UV8Q`2)zXQoHK zsrj9z+f6q=rR9@c zI{T;UcGFESsUG>B#@kKLHQhW<;}hQ3c&F(Frrj$VZ}~vuO|Pl$G@ZPzdd7T>yEj#j z`cQTDmg?q@R5!n^dXDMb^vHi({yP>o-S)ofc^_-M-E{LOs`L38AN;B6mJe0WGVMQ7 z-SU~nJ3qB}r)vM1>fxWO?)Y4FZaV)$^^7kxo_(ph{!7*Q*Q)24Zu>@c=_`%5eyh6v zYt?1b6HIq5(71e0R<^e9RhLb-n_f`pA2dGqTg`9&+4KU{Wz+I~VcD81{vVp|I_hyU z4a0cw;=zjtFaF}igBK58Jb3ZoWw7AIgBK58Jb3Zo#e)|QUOaeNZ0TJ0mw)#B&h@;{ z+hJ#CID5{Qt~LHYbJ?B{H~*(T5w`!t*~GXfN7LZ)KlET)+>woqtN+ri>2V=@Ghu6j ziN=49SZ>P6EOav=-JTVX|M}woPWbZZ=Zr^BGS+2lHs-4n)2+F%nFM=sEXNMLF)2Nl zbJ?GV9!#e5^J2Rs&yO=XmHo--W+A$n0tXe`m(9YsF(ti_?Wu6OC_R&-#c+LUx>+3e z<#1_SnwIV@hYLAf0grx$dGxp|;$S*#R>Gs7Z5};=+>~QEmowR$fq83X&Ua;d4P2gy zUdSCeTa)h2Ob^$>J=xg^cgyrhuFi_hCiF}WJlvd(p3BzkINFL{ngd(g;pUt;+X1)c z!qJYnJU31n*mtnAH_qf>9~{m@xA(=?yx5g}Ih1>Hv>)@0`IwInz~%XIbRh1?d4RnI z=-ELym#u?wbwRo#w`ETr%7N@J#Jqio_Q|g7Rp{ZN^g@p1+QRhoFnUkUWM>h2aX7s# z`$u4VQF<=7WOJnYV)S?%?#RJ0xVgCc3F=E=_Y@p2iHjDF3=U4i)>1e>OI{kAvvE@n zGY*Bj<8ud7Zz2KK|#}NB{f05Rd;^_R)TM z^z-ba$Gw>DS8*)&<*-c;MnB&^n!f}O<@i$E{_kha$M?%{Wn~=6v79_cFV>*{_k-)> z&o$P>o}9~(TwjZx%bDyv&iUHf^hoZ>&NKAkIy(Oxw%5b<^SCJ+xi5P!(z`Y0)0Z^A zzWfRfHo#GahjQ=^Zf{7B-^I0!aP%=wHpZD;-UR1zAZMR4U)@ympW(i2KF6L%H(%k# zX4v@_o6T`3Cvy57y}kwA`X2Y>Sa!FhyFbvoax9yz=-!X?fgH*8t?8NElkK0FuWmz+ z&L+l%oKAvUyU^V!aA#L}Y8>yTebZupcbv?E!#%K5 z#<^_Is`)+Xp*(t*-{`StqgVG*mpgJXJH63RceHPBoXDeh0FIt?arJ$1CU@m%3A($V z_8DyNkKLv5=>34BCy>1Zuvw074#ctCk?rN_PC$?3wrsDU`wpV#^7!`*{&!zgrB@E7 zhb!XIy9Y;)Ss6!%U}shA9g3~ha9>Vk?=ZUS(sS8f69$|7dz5+sEK^OS*e3wztBG z?8~F~Dvq8&9=&66^yKnTcDClcAJXG(@NmpKV*3QTw-av5iCj97?)voc?`iz+zC^Z9 zqWin*ylm};%O}$dxg$G!(5t7=6S*t9d(zFR^iYoFOtxEevlsI%+1eYA-VHf=vVHLA z9g(BQ9DwaJuzMg*_xPF$-AA);wAXm?(2Zz%8vN=rq&Y>qw97Na|hn;hA zE_Y=AD7raM{b-!a{xRBjKHWbKyBBDGi2HIV*Ds{U$J2+hbAt9=q%IHS=tT94wf`hM zkVDyT({s5myC*a6U84PRPqt2>yO+}KQ*kP1EnL5hZcf8JIg#DV)la8)F9Cg+7sCRm!8Ri>^(_O#=2a{wWqYtT4(&;t{lmg zr|GdA$%Sk`L-!`&d`r${`&qg*5j~MJ+4Si4#Oks&8E!wP{c`zv&6nu0?8)U9=(*gM zoynPZUerFhEyuF`lFrL5*_nd#rI+buO5ByLsc`KTx;-@>$VT=udN>VzC}(o;D&4Z_ z_G{RaTXHIwURR%<`BaYO>KocO13i&_x$-96nUUU+gb_uYn^umrK9WlQrp~9Il0jvbQ!4eq-KQ2N$xD-QVf1+?M^Z zc{!GAL+1T;b)THbqjwjNo^(CB`5(^Yrku-N*{U&b|EbR-2XZ9$kHU`Ht+! zL)n#Ue={F#!hHK*eLlI6?M>-5YvS?09wW!HFAwENu1~;xDkrkFnLgiybVnY_{ucCL zVtOE_awyxA&=a{K=VS9@-dguf#=Nx+9?FhfE783=y*fD#hkEl zpra>~t(kBx*JQiF`B*mcQ1)eSX3j@)N6zK)Ec8Nd$oAgs@5)BD%glSSF9&iW=dv>^ z^Zq{iymBOu-uF3r61grH^5{LFqsQ5o^P_iyj-E)4WN$xubq?Jpx8ztJ$kzVMdvh{x z}1B0CGv?L+919LS^hf{va-Zp!9R=KFFY zdkZn|97gZSv0Sat-NWgLoXXC^bnggyTh3&A5uI<+TXG?n7Nz^+=#iYuqxXxBp6Dog zAlpadTuxj^v?iLV94BcaFycIh6gS=(*gN z{S%n?mZn=L;!F)&SJ%F? z>4ogcfvbJ8y@vLkqkXa!VS7z_F1KX&TzX|KdMx*3=RCT*wz}Mvo%8AbI&@zyZVHM-S!E zcY%z5VtREmb-62>tJOEBCvqaY*U&3l&fIevvclvBBWB=fo4mF-uVua48c*KjTeuVe2hdi)0N%if!K^iKWJ zlk~BDjOO3L@tEJm=2&|09`4Bb`?z)--TFXXHu8TjIv#&tl+*ii`Z2B_PtQNY~ zIgVuO3tT#p9?GF?zN8Q3LJm%1J{{2QlXc(McpzKf;od3q;CtLW6=y$S)56Y=IxqV_ z;m&FF_-7oPj_qG@J&}8|_lNq~I{!aBl+!G`C|AXu2(!GDxp2G{JxT-32^;~VCP6|-=y<$TQ0`Y zD>u{Kqj4%{a_ts+bPT;O7suk}t@P|TT)Iv7g}5yj$76Fl-98a#awdCs(7luBqwfeE zJ*n&_>L=5?vVDs7-$^gzM7COV_bz%OCvtWg-MgEfpNpDTzX%&&cojQ+SkT|E;g6o`UBXPyK*4g57NU+nQzP1<=8w#kL0c#TtRmqrl(ip zz8qbJ{YU8LYFv60$JgLQj;_V#F}iylj^#vlQhFh`Wph3A*5mYCj^yM9y8Q&*+^GF> zDw`*@zeCT)d^2u8MNe+QrKhoXD{jfDJe1At^xiX?mz`&ECdYCv59C5NJ?5=D*w>V! z1bffX?K^QQdvf`CdLburb`SH>3-suIoV_3W~SFn@fOwJ$2VMfoN#qC$+ zmvHhLj$g*+b@f-&W&aIqzez9N#qL}3dpH~OM>_vD-N|*nk0ZGy#~;(pJM`dFTz*&k z<#Gd2ihn1W$SBt>qC0_4X%Hrec$4t9Dj$SobG&&OCMwF zNBI+M|AgDJ^)q%prTf3*@H1@wz_rh@_YY3K(EPvH`w|D%dgK3`&17c+TpQ^86nO9z zHq*#o%hTiDH}cH5{2jLE#MSSyI}aXxN7LvD=fkON&9C`_9?6MZ$mJjD@dC_8vb!KI z{X{Po(Y~MMMR6kg2Dg8qhf8bzSDd@J{5$s6z%99uts&iClOD*{TDXuSx$y_{&f4^W zY}V2K|Iv#LarhTbx75DBv9%TU{=uP~$=25D|I*F2*tI4Z|IfdWd$P4Xy*>dwk~2Bk zLHj18+dJZ(9LUv)=$V|zW+&!H-!(FN61gqAJJan+=&9V29iKjsV|nx)CF7r6^m*h^ zu1=9rZ?(J?ra3)!2I?j1|- z$?kF3n~82h+?So>aeZd(KLL-vvt{&nC#uha)06P%dt63ObQ&JY;Tbrdl^&jjYqQ}@ z?#l7mba!_3bFejs&POqgS~5UUrw&W!8~;TdOVav zxjrvFmbT)EzH`1;7>4_Z3PKTb4`6k?4fO+R;TwV~HTX1*Gx8nLj^ib}} zc0$i9I)5h)7RKq_xUvY&?!|@d-G@it!#8>|Ig`En>9xh^x!jWrxw1Ij>M|e6{zKSX zf}T8r&5}5L6nEuZE*tH8jNX((c`(*fdVMM8V>y%E$LY1D>HZVAFI!Jye;Io86duaK z)3~`Ty^x1;@C-dzj_y8-2XZRcm!~Js(Tg#^fTI=Y<|SOIV&`St9rG*LU6CHji5z6= zE7AQ|aV7_^VSi=y*Kr|-Z{XG{^jsdw{#*2DRo(wKc2>i2A18A34t7`9{JS_C^LyBL z>B0NBko^yExCTA{5SQ1)CdVB){204y(W6grPtHEY^|k5gXLumHU*K>Z?f(*&*2T^M zw`K1uTv?AEe2u$u_zkYr=+U=0m*eknbA7t~1GYE7ZhS^`-}Np&gA-*I{!DlFDG(!D|#lkW$z#6OIy?Je{m>Bc5VEho7T4K z)8SC|r^lu3=>AN&F9$Q@V0(H|#%2c`%!*?*%lyW`ZwJvm=P^Lx;pHE~N$ z*22!7x^Hb9$=+eOxj#KR0(%GGtcgnp>ijsI$njCQ7N{SM2XfrP)**D~G~ARkc{tY3 zpht%?Z=Z>s!*D9cvV9i4bhzfv)_FOSts`{)TzV=8=izFTp2!_JynyZ$39cSPkK~SA$mL_{-lfd9>N)IVtOQpav|q(;{@%$PV*<~{Pnnc5_WFDJ=w^Wlj)J%k_&kt zdpB~vb_(;EoXAOs?wm?DH{nQ5WUEEDZ=r{BEElqMJH2-r^S*3O$C2EUGkGx9@8G^zQ}a`Y^Y&!@*d>|B7o=W$1lUX(A?zL#+2A{@%GY-RM;#hQN=SKHW^JF@$R z<}aZ~Z{qT$ntuyNa`7eZT~4>Z#=#ZX`4hLV()qt}Eyn+SaryYaKT22QU?QB$W@22w zhMvoPIh%y;T}w|V#l104hTZGvVF`C-Z*pv|r)P33hf~n)8+5-M%I=i(LQZA>M&_-l zbf28bl@2|bnjXv9G}yU`9#4xSIk0i*X1bXUH|0VuCrqml!JM3Av^P7{~qRZxi4q))9d%r(*Z{RPvM(2MBKuD; zpRdk*K4uqtPtxNxa60BSarG&kmt)yli$0W{wQ=)l=H2zM`wT8Nz?EmQvx&~j;byqs zqi0*<_H#Jg3fs@?{5Cj}(`~W)0^QvXcjQ#IU)1>>)n&`a{!8>^S6qG>`+ML_wi-Bm zMf>Ew9PX`s8Qt0k_s6`S`m6L%?#sae+W(r)ABcx?EC;XCvw&WD0|y7`yj;kIoFAh8 zCiC8*xR9;GaPSsAlyfn*+kg=oSw^F**lMJzR>ye zaYuG8z|NQS=tk}P3i~(XLUwP%$=CGa9z6I)^Y`NVx7ggLE=Tv{=sUXi5Dvb_&cnEn z1G(`7J(Y9WeuVjYLHFfMb{>NpXhE%&ty+FKWo1n$)Q}xk?j4#eDE~; z{9kqdGk73pFXP~My7L-#hw|$&t>x__Wwsu-olkXvE9ds9KD0xztrEu znH;{48-LTo5AaZSKg7*{=(#+U!;jSer8~LK%hty@v?d+@@7d-PY)^pQPjM_epX2(3 znwL}A{gU3Ch@QxWY=2G9CZ_w};r1jr`T^G_#qpnb^u6|@r}ziElVj&!9LtGZo`P;B z*VMxcKY9W=lG91)W-59%8ScqR3D^Jo-uTgz%UwB|hMrAB_ov09@2MX>W;$H@ z?>pB=Pdq0sPmhy%@K82O;qbrjd>{X;toi@GzkT$?>uJ7>vyJ8dzQ2Ba-$dvC`_B5& zQ*4Tz*|EDBPUKuRbI{Yx)n&6KuFXmJx5kC+Y=eWj=%Jj;L7nc;t@GRBTn=T|p~rG8 zhubml%%k($<5+eAT%VtA9fqq5V6TbG3u^z7xFef!*!k}}=|_)yl=_&D!K3f3AO9SO zOAF)lc$~@JiJD)8o}7e>F`tZ^|9!vx=m}c5zL@r%hKF)^It~}77xGYc&Z2jgpht3L zNt~Ze@5zN+F?8!3?U$1XJ4?~+^KoB}FVeoHbzd6?%i!=5Jd~r$aC=#LA=}Gg?+SV% z`&Z)H^7P;;oQ*lg^%dy$HMms8sT|7T_1d>0-MInxBU{xcCmL4?#j9Bu0ap(rT66U0nM*T z_aDaLS~z+H+iPR@Q5?yIY_FsKI6ae-CvbCJdio@`*2BTm+BfDNuGZ-G^SCFcFKK># zdYIwb2HO8B&g9@V^$qFK>$oRpZ{Yey^x{pN%gH;qvoYO%AG@1i?_(Tqip?ju>S>>x z%IT-{+Gh0RGu#{V=jxlQf1xh>U*hT(bbEk1awjq8@l&BZp!8dJd~Y6z0SP#qq?H}v1^|$u#LQmzM z9REXiccq8_;#7964afgIQQeIm$sO6AfbQ&0_vDsrCZtCqIpD+g0zvkyI(3MaBZwfeqvcN%rso)%a3 zqZe{4r#8L3zwVz7w`G5NY#*TgGvG+JXT+rg>8Tvb!A$g_?9PmXK>KFFh3u4Z;~=^< zE6(Lit{<%XW~2AzXm;!!LJ#J^ne5J~ekk3ZOI^-o?=X5YH@zoE4t5XM{&{d$_U6Ur z2)Z*L?#R~s*lE%;IhNxE=;b4|e?c6{?n1aUj&4_QIOc`1bre09n{u)UeJF>E;^1iA zw-_$Qytw)?bax3nkewy5e=OZHxG!h2cN{%lir$lhrEx8!`^%`y&a&7&Ugwv?UD;V4 zn-l1%+>xCX=+24sP>$qS9?F?qKZ*H5?#gzRedUwsMsCWUoXdgip2B=2$8sWRtxh3avA=|4lUq6?5 zBd4+_SI(mcawJFcP)=n3eC9K`CtIs?pSeKy$!*z_tqXOZ+>m2AlXJOx5%Z4A{*D~T z<%{X5+>#4&FtkTbb{Df5M#%J!Q2=W!X`$g%9nrOWAo z9LTZUms7cV1@pPwmaVn8Zzwyme&c#6xtbox zksQfGIhE_zFki@B*;$AE*b$eCQaUiZm?Y_H3Gec8zF4a|FT zN6zHxjdXuK{qvARxzeF0a!bzSfn3P7o0zw2?CZ!zwr|$wkpnr9GdYs0w=kc|ZP{9% z{no8?Bm1&1r*bGew=o~fEjg11vb_QOYq#t3%84Aye352keyArzc2f8?E&T^IgwMj{2)D-L)r4!SI9=LKg4_> zr*a~jhw0X4oR4KswjZH~a#K#^T+Za$qs$j_BHNp@zx){8$f4}Z138rIDf6-1lT*3+ zI6ap;vcCoQRi2QUv9~XJd|_Ue}Q?s&iS5f zWb-23liPA2TQAWgxgn==Cg-yIGV|89+?U9X?7TvE`C?Id5L08@Vlea_Mz?AO~_J_vJ*cy}^7gC$h5x_c?FUJ-H=^av{fZ{VnEGxhEI0 zd7Ex_WPe)@ZW$zv41Gy_lvhyxIky~;m7jhxj-(%j{nfp@NmCgHf zUykKawm+c9awt1K`>YS?xg5&YF8cM!M)p2p-jlm>AUiodl3Q{j59LhuKW4s=d$PSN z_g6omyK*dtvi&JNk(+WZ=d!gM`)Z#t@5o)*lbz4$k=&9qc_=%(v#;?5^MTx#W7++Z zp2;1#knI88-h+Kj*~q!<$+fST59LITW#?;pDo1iITi?*FJ-IKCL%ERMz0|*D-k1Aw zB)i|y6S*U2vi&{1kejmIVE;fiviAe?p4^oKxl+($Ig)eP`jKw$&Hje$%9-rT)t{IT z<&K=l_RsV}ZpvmKeSSHV>%TCc$vxTHmwEFm-NEzspzTPkaIbct;4i$ zYUYjHmIHYxC$c{c^VZ><@5!EAot7TTZ8?#LawgYp<_kHM?IYOlOsCH$hq5o{awylP zXFiq_IhD&Z&~rJIttR)CXQVrFB73qo6Fra%Ig(p5(-Ya51!r7xsZc7==M17x97x0PGn#9=F)v~A;)qwH{CgkeH91Cawl`EY(RF3peqQ*cW*r{lo_boU(GSqPg5yA_F#~FH|9rix*|Q1-IX-|7`-cdPvB@}diEqXtKi@nJdmB9 z=2xZrui<<(oc3|Cy8Hp|yEyp-TWjLtTijkt^RsO<{_o{-4ZCyTOb+J6!TR)QE?n9G z#}4ku$-KC>Aw63jH#U*0*xpoLN$1DBGOl{`WEGsq#j3cn89iPN$Fk#McXPTYw`F$? zo!^3<${pFPNq4r?{c4vzx zElxJZJvrV4*SFLBrr6pZ#~yCU{$|+Tf$nXNJ8~{pcBK1T&|^83?VadmE1j3^Iu3WH z+uP!bulen8BD>q;>MrzX2b{_2&N$wc9`A}9yJ2fjT;3h04cwFSeQ~k}-QOR(d*bW> zoR9e+&F@7I55ax|JBQ(+?6+`vUwVET?#k{N*xQdD%U#(zlkV(KPvk`Q&ZgH6pl5Pd z4$q-i4y0QVZp*Q32XyaTdP{cC!`4AMe?D%?sa(kB0=j=N^X5W4ki&~~{t$X{F}4oX z{!4HqM{?;fx*yY>!*O&C&SmFX>>WXONnDRaw=Dk(&xE}-j|Ep@Ze~=a|do7gY5)c$Ljo@xGe{F;mUFJ@NV3dlLv4=q-PJ| z_;~C;jLRqBR1W3%5&BT}9>u|l%zKaFft;qeaS}az9OrT&dnfDuC+Mkcp2XEt=&>Bj z_EYrIsdQIv$e!Gj{im7tTFht9;6nDF#m&>SuZOMEarhi=%ii6LVQB5bb0k(`csV!9X8tx0rV4rFsRJ(FX(C^6r?M*FA0{lj(4JJ>8ogn;UQ;$Fe^I-M*1-X3=~H=dxfy%&;+~w!<`(UnkKUFG zxqPek%}?*h!2-B^8$FX-a=swlxt$&_gcI4T;OZUpXc0V+-9@pV&2XZcZ_cQOW!hBD*SH*5u_sOa3 ztVXXrp!-(GnHn>b=6}$K1(rY;CV(WGJ0UXKhgV=t9o$&(qDj*nR=0axA;=(c@R>-uu{n1BV}|%hreLZ_|5n z_6}}+MEBmuZjSAbu=TN=<5>1S*8C^*=o6gF&X>6VDZTg_C!gW`8=e0gr{8LR%s*)U z3%d0)4!*?hAGk5V_Mf=)6*m9izHI-i`L8uU!6xJX{;|Ko!GyRghZEu2xAbsgoXgQ9 zIQWk4Pl~PYH9r|{%W(;tALwQZ+?V4iaigH8(_rsM?97NeKk58z*!o3%b{xt^&gEnd zdgE8-qd9f{H=Hhwy&-m&!<9dLm1dYh1{| zHaMJ=?$)tA8Me2@v7F1*61~`t-jn0)acy#Xv;)p%Z%5piLi=~ZLphbhDe2+P^wLzi zPj1PHuRb+B*af#_vn#fz(Rn$Nlik#()%o3VTQ+-O$JTi{mXkfzr_=epa7Pa1()4s^ zZ*@7?2Ulm%`F(LF=dw4W?w7lAcp&rfO!O$gW@hXkhP_$TkHDp}_Q|1ajic9R)p9{r*-8~aqbIWJpj+~s0eMkKqJdkran1>#oOLykQ z&V_g=XL55sdVG<(99)c>^Xq(DUA8a9;R5tRwid+cW$JQtIW8?kx39o$Ig%?C^(*OJ zIg)D&t6xR$%aPnzL_MZki{em@WcO;ivzX?u!5ule7FQQnzYZsIDp!`E7jh)q*E2tq zjqESUyeIeMP&S61$Za{7OH0w68`$5JJ$WEUa(!v$Gr1=hvROv^Ze(9ucIDEt^gwRP zu{@A7*;|fztHZujHnLfs?#rA}N=AGx%yZzdp8Jz@ePVr48u*i`p+2@<5JXqSrTMK6)8vV}3<_Bi;8Jb~cvZ(7c?yiNj6k z`MdI_ntvacJ)FoLx%iOoZ$|e%!kHY%W^?WTm~L&MeV^f6w!XsYmh@D1x5DN-y0f+X zJx=6Yu5Lrm3VIEz#J16$` zP@fyu_r$J)`?9?-t~BW0BDg1qE^h3reOuyae{9!r?EqYCkL?4o*%7C5xSJf%gS~Nf z5cUtkgM;ORaq|!ywQ&D%Y@LSvBQ$?HHcj<2@j#Bw#;qgi<{WH~lh4JOTwH*gM`{0s zcqqpg;r7w=RJM-6c3XYSm*enQdVZCB9FA_qrQ@;t0ZvZE)>nAg!a;$nr(^pkoXhT? z*gcb;P3MjO{h6JElNoUNjEQGTfKV6}Wq|`c*i%1t&4C+=|WBIF^&^aef=U z=-}dZ?A(geJFt5@4ifC$i<3KXcpt9bg_HYrUe3F?b~inG0B5rGp!z-ZRPM>4txG&p(slP_g{>B5@SeuRi`yhOs?#a2F%ibGw zYXasI*^$d{((?)Fne0!5-M6%VV%(F{Npbi#J)8`e`Zy`!SdJ&h&O3Bx3LMF~TzZ!t zPf2gd;Z(Tvp3YB=LphVJ_vyhj^rmc2i|r5SW;&e6$@IAPAw8A5ay}Ei{SiHy8CP;_ zmvJgPviX?q%}F<(U~4YT%i%mY{FENdhpV6AXaPKs?FF&_Io)0qn=h~uYSUggde?SH7W}Rp|pcTn)FsrMqk3+IQGn6X&wE7OsC! z59M5T)>i+4p3AxHucKbjopo_v_GSM^?Uyq-SdV%CCwe6J% zHrwI)Z#eO_|973=9oL39mV0uv2i^Na=l8+`IhDQtY2V)JvcC^*{YiHYz_q`ykrUZJ zkna6Wj{{uD!9lqBkIo;AhjJlz{-q~}(CgOZ{JC`)ZcKm^IhC!$>1IN@D@U>?_vLVG zej?^$xh;oBu+N>C9yIY_%;V%q^m&fL-AS<(;qnyNxg3X6VOJi=zU)m+59O}xUBUV4 zH0oF4fo!hAjcMt*Jdop9_uF*)YFxIhEtv=vr6c<2!J5 zHo8f0BD=CZJKd9;awZSu@E*=*bLjKP?wmNdm!8Vmeb}E%_ur3mIg^9A)w}9)A^Q$J ze3;&t2j_AwyN}T8^U^&zk?lw6mHBkvV>ppR*_mJGQ+h`>kL&ybx?hgv=n1;Lpw2&u zL)m!>59L5^EW~^w_ht8K=4%!0lRL66+Y8gvXPNKI<~iJ0gl@g4eT(AYB|MPbSMhK$ zdh{A@EspKi)#d05TwRi$O|<#=Kj%`}niy9MJ(OeFn}l9oik`@k>`qFzmsXcsvNIXo zT88e)4cV77Ih~yO_Oi@7Q{mcj*q#=f<#8y-a$2KTSJe6SaUzFuWhL#~klvMZ*;|?J zZATxhf(yB^D)zUh_vJ*ct)_XoD+fC;Us;_V$}KsP3%S@ypU-99^KoqrobRfAYvN!x z9Lc$Ctwm4wqnFpl(f+tC+Xv$6I&}XaY^{rPxjE*8=|ed>1V`&>Ubbr397+%5OdiV4 zVf4oO%m;EVr-#$S4d}%Y*x3+gP27>)BXMOTdMtP3WE{P^G2K2IXL2q#Hldqi)a6L7 zZmRRg(o;E-YaZP?PUq!Nu5U(9Li#`sPr#kcwf{t1*#gIMSGG>3`&-gIxi81Ew-wzz zh56o?PsQ%m^i)n|ucf{XJ(DxpKTY@7>A9TA&gpcsEj^ZFIhU>N=;jRO8*(7`WcN&Z zeS78$IhVb&=-v+W=xm(JsqF4Z56+>davI^EYl2dX(YxKeIj&s?b0{h3& z^C@vT#QxN{D~Ho+{&;$5B;nD z4ji3=!#S}zRp;l%xoqaaL5prLfW6bOyCCk%!9v(SUHc7goPqPDa3MQO+FXUJb?$Y_M>CWA_ zkbAQEhHmcByxfut*}9h=e9L@O&g4Q4zoR$q(|vL-``^>+_tVV}xG!6UdY2x{ne6;X zuRTByU>H!f8f5H{f)biYyUskdje)(U>ozo3H8aVmTu%!4z8j%zti~}aP&P6Z^Y&YoXD~4-%M{5^gzz!A^N>B*Bg8{+sW z?EitY4{`M`^bax|M$nloAJ15<2gTuLSBHMFgdwY5=7dvR)QQsMxd9WuZvcD_cpO+r& zf$jNlF1KWFPr5ZfJ(ZiX*@s?PfS$;)oXVvI>CXPl7qWX0E?4OOAvlwh!*FY1dT<0b zi{Pk^y>7tJCA>aL3j8499C=>kWBL_0O=iHV)-Lj^s?v z&DXfOK6bvr-UitE7MC`Zzr&dv7V4YOgP-wmQ=G~T z59hzq2bu%^{sI4&O;x{ zW_Oa9Lv@bbSF@k+j1e>2hsf|^DViM?SpmxNO~ljao9eDUdWMbA4MO^ zj@&quc_a5_Pj(N}=aFMMl&!<*vFyv%(cIUQ{bOFK$6Ajjw7;5fQ(bYG6; zNVZO)JC`xvl-n-iOlHQXexq2Gix{BVB6WN?j_hNciE@bx% zdUP$_J`=|`%4gyHCft*Qn{oYYdM0ObaEtmmbpKYI%ZXfz==N>&L{4RMuJ+$aFJ$*# zoSsK_@5Ao-*pp+~dXQeffF3`J+ZW>KF~dEVeGiksQd$^K}0*y8Qy~%chT;SJLBmuyYm8-od|rW}GjC-CN})uy-2{s9qqqQ=hwx3*=&Rd_v`*GaP0x?ZjZeOakL9=JcN_I)E~yq-gqcm`{BVO^iU2S z#kpL_?m^7=9#fay6cISx0T#8HTI**O!3Pt&cl@KAOl++o=F1s9mYZ^P2fg~Ly4;q7JL$F8=%L(^y}Q+4r~7h8cJ859-k=+~ zB|G=h?KkQFC+)t&+$QjS|0^K@(?yNx3e~^@qMHR4K`5q+ZfX>gfD=d}LIATg(M=cK zbkR*0gfb9{=%$Nqy6C2hZu*_f`!m10f9&t>o_lkiN#=Fl-|ttRNruUu^E|9|56$_P$pCiXMG~+j8(L_P(K8zu`ITk~S~N6pWVi$AF^j5FCN;^1d`ya={>*jo(8a=tirf1x`i z-1!yfE8)g(*j)uXzvE<8oXP$gIQ)Zdt%ECn;$U6ek<<0%zcjxg_Ki9Dd%-`jF$9~N zVRNYZ7Pu`(TjOXJdgS8PFzoJvgW>XSxHv10_r~Sfv_BS?3OE^uV>uj;?b+$Z{v*VJWy0`}&l$8uW^C#ugy_YT0hoE?apbJNX9>asl<*XN<9Q*dEkY#gM0*_LxT zJeVGu%m;_#WIi1I6Fc)``v}}8dq-h+0lISxHWt+WvA8K)$Km2abmK%E$+7G#ta~TX z6FHU3Bj{m+p2_JcxKX6%a#!|GS6_r~pM@)n;`9RCTMQ=`;$U&jUxvLUuq!8nzMSqZ zse5uN2UqIeQuOc|T(+>$!d*GL5jRKDliRSrG`6Q>YZ>g{g*&o&H?A(L`}e5JULW?B zqo*^ly*zdw!nvFzxUm8~dIXnBIC~tYa{MIrSEL)yV0R^)KaYzmWA_Cd$cdcG>Fe~; zD$Iu+9LwgLxV$Po{Rro);rL@5*y>%)ua2|Nv9Shrztp@Oevcb#(xV@>zn12I#rE1b z{~dSaWVYQ0{<-I@OOI#A9XXm42W7f57dF4_Z3{=Dkz(=Ai`gI)kv zHlRmxB3ld5s~gho5x6H?i{R!z=-#5Zv=I)L)V%DC#IZxSmc`!2+Fu?QHo?gXxG4uK zX?_$vlT$fag2?iwWosgCc=SXrjKSUk^iZ}Y zV`pEw@8h0qO~vV0dUyzq$6@e#;v2Xb~dHV>yK_ux>@`f%Z&bnkwg$k7A1dIa5l2MJWf5sjpMQPA$Cqsm)mmu5xsJv=0Cyd zpg+UmN%Ztf?4FFBuW@(KIc_#I|1B<_f^)ep+uzYUvMZNQWj^|Wp2_)7xN(~LFSvX< zj(^8J*)sMR`1??N2HltiduQToHtd{*-8pejHs-^|*>rn;+>pHmuz3zWTo6Zcun;bt zt1dTWe_?vzJaxG?=%VhQPq!AsiR>(a{R`;vQrNl>nU}q=!TAc5Ot?T3}j$~smT)AF-Z`_gHeX!G_$8t+H zN7Kz4=)PQ+Q#q4uPtUuN`B0AKTrS>3cgHXv$g$j&y?yD`oArD-mIJwP3q2Uid~?v_ zaOqaMJs$VT?tZ#|o9@@J5#wC;WqYFf?Q~}fw(r2vH0)1TKN_2NVe=Rq$;PqRy_;?v zhf~>Y;8GvmJq5?IaV|FRQ@;@BvM;+c=(*gMy^ENy-cQfuRQ4{WS011{m*S3`$nJx> ze;eI=7$-4q$l>kSc!ciVf$Oq8UHwtIaVHMsR5l)?M|Wvo4(`TX+3v&M2O#=joXo$jMXmo@_jW>n|{$$hjOoORuGRJvddylb*`4oXdr`=x&Gk zK#t|!V1I+|zsx!1vHKxCmfM5=gzkJq&*ezAKcyEwru%YDj^sp6 zW$P2>jV}9vY|EMK$ zW&b;R>07$_J#NXdT>6gg{Xmc8R5rh-hdXQd$*CL+qgVcl1FQ;-U8?$rI z9?rZihq5R4MHaxUAm(XBbSAIgrL%bx5Om=EPXIhL*2>8TvZ&Yaxu$;MpR zpM&{WHs{3N-1JyB=E0@8=#ku%t$FFix#@`<$&RT$4?UHeaxRDS(#`ppZhN6>RQ8FY!>DbkY_ zacvRot)l%!<<)R5+cs`2roOu77su{8*joaJ8{u?G9BhM|7EZRujgi>e0Xs|Mco%sY z?C*w4%VML7`{ZCx94@E%F*sTtXZzyH3fdo!^Fi;2gAzTJ%@uJz*kylz=8cu;-UQs1 z?TNU$vhGd8{wlh62rjIO%|me@+b81U>h$1j+*kuU58!xRoIHr#GPa+<>3Z0F30v!9 z;}zVN6WQH>9=uBL$mwgiwjtep9e3qSuKj}^chqI?4eW13H{ZlPIhO;6p1egbY>fT4 zaZ|S5!KF>;k=&9~xj2gMyvuwj$8t}$-=o(yWj>QTvi~u?vpL=F;@%cGl$#aoeMYyp z#HpOf))(|}E8UZ=t+6A=vh@}7{x}XPIGdGj?2O~>ak{7GuT&q0b2*T$tLRT?%#*2 zlQjPTE>6aQ9Lny4baM(ll|wmrNZnVLBiT;q<%9IRM>RhcM~~r->^^~;2h)Q#_NVFo z3%GbF_CLktV{!Z$&W^+R=koE|{{kl`X#Xo*JW2as<488XQ9oJpawvzndPDo)YG1Z~ zz|JZ3Ozx9&xpXSs`H}gS?8??@^yDXcEW173Kb`K$u^h|x8QPa4Irx?R%9+~#9p`fP z2M*7oM}O&gAWMdfJJBRMd9XXY&=c*59K9w`MdLG@LRb9?! z)AP^QegSvnSavUwj=B=kNf0Ewy&fcE6`iACzr0GXMD~#raxeBy#_oOCI33q!;Peb^-!Gqu+p-aA{sFpm9u6MV`~|r3 z5RNXy9of1Vw-UND9fyx$?={W0ar`z;pTh1txc)Q_KgRB}IQm?E4yRw?>hsw9L4E{)=9DiJlny4E*yem%aJ1^%^~20axFY*TQ{oV}F$V9?mw$Nrt_xaQZ$r zx542D*w_}AKg7ZIxcCvacfh$E%fZL=bg;|8PRz%j(4(Dk?Ne;-ip?%IcGJ9U?|~bi zX?`#5f3Ep4IQjyIHSB(ctpjlBYt2u>g>P^+8K<)C<1nX3a`9W7$PGC^g!%S&^q_&0 zA8~jZ?)-$^vo!xR_HM=9-*9}V{5$q%;L@KsdjK1M;ph?Ek^SdzeaPGce~ye7aCNBs z3Jzw$mfVw**Xijny4S(A;W&6(_h!ZMJGd)n@8NJZy7>_f3Yz~I+q2{F6P(D&kJy@v zp8bX^bK|@)df?+q=f$3hi}T3~;6(Np#`XE>#t7V#<3(}2fcoOtT@br+TlSWs2Meh$ zi)#zxu!OA6cl zx-kK_WOE{}tfJ>1fV;AFAa1NmcjT_@$?j_OOitx+68lw~9!|!Y98JNs)#*GxJ2Ymwb#s>8KB;1ni2DUe(Tc_h(&d=BUM)dF!+;nh!rMxlr zuEx$LIK2jEgT5Arqtvg%_NLgp370m*nH&%LW_o#ZdT=Xl%eh?Mf*##QkL7eajw?#Dus@b=&V!5Na40uq zXI|~g#(X#&&%8B1F71cS1#q7n%H{p(&Vuwr_7=ikjUJA`)&$KLaV#5);POPewJ6SH z!@}JI=(!vmD37F@lW@8m?#adqxH*~bt%U1Su(L8Q_}X6$*ABvwjg6_;UL7}NcTHSA znC|^ueVX>y$L=B6-4GWK#pXu1D?1LZAEx<@aZmPTudcocJ(rzP+CN#|+Zz8uT7qnP)$q<7?GE8Rbuo^FlJW3aIeZphiLxOgnx z-3^CwBAdt2o$>VU@i^HJH&4Jp4VO>Ek=z>e1iEvQ?oGsP**^dWC)51{vDLt-k9%@_ z5N@8LdsA`oRBRlIjni;;1a?lx-jO&N^l>;lgB~4^8)xd?N!UG0`*I@3gFRGlFrUkr z?43;yPoa0@M6R4e&*eVZI+gj-xpYTv%DHTvr~9WdAIZ+?+CQIeoPnFNBNr~9$8sq9 zXEI;BknWwOec1}tn{@jeoXP$LIJk&zHnDp#b}qs_*}oi@FIA6l@iLrWg$tMC;A-5I zL)o}O^KxDGu3~cL~-nf?DkpsDUrS8e89A3wK^(wk~z4qn!X6#=>4{y`_wb;4? z7q7#a+>*T+^q@u0pTy~n*n3vK38yJ;->mr;v44yFGA`eWomX%ohi~BUHhTCjuEsce z4;OA%&u~+A-p9o|=++17viYIJ2^dydIOy{*F5j)01IijF~^|M{za>t~`dF zIdLNUbK&aax<5D0;{s>%n8i#Ts=W_iSdQ@b- z_$)RS#ckPM3XL2HYFVgL0=!KWCD>r0gS$gSZ zx+%wUAiJ;7L%AbIa`jbuE*r05V>#|OWmhi0uKDHZxtx`7(xH1RV*d^7tc+`K;%pUM zc?%n>;e60*$ZylFwQ%PhY?g8RT^wwPjSRd0z_IK(xbZ&S8HK$MaIz(iKE&3xxbqP< zx5M?1aVDFe$UD#rpJI0>oXMeF>(Y%~=+0+2k^5w8SM|^7p`6LdZuG_%x_1h;zSccC zk-byt)on**}x+eMgVa!p8SF2ys(3&&Aar=#Jc$txM_A zPxMqS|BR!{=pEU-T=#nPL^giG{uR0>8&_iYSGsi-F8qd#t8pTGa`kt5D5tV_E%VJk z=&5Y|i8DEpHz|o_0V|HvmjuY8x?Y_N7d$RK$y|oxUd|&&E{|nbv!0v+k4t$-JSHkuPTv%E2ax9x8>BcH_V_BTa!E(5g zs<>ohXH9IcF0X}iIbRR=)}Z?vVRJ2PZHyB+*#uYDrbk=g@;W%!MtxoEY>Rtxx*cwo z>7J|o^)$aD?#kxQIQlz1-4(aj$8Ht-8{lYnY;K5yJ#j84d*S9k=+-{Cyb<5!NCL^jncgXu)C?|ecad#=Z9#1a~vOvD_h{8j&s>R8uu!6<5(PT ziJcR0VQcN5jJ<7eD(AA_pf|Ur$EV?ZJDi`1D=v1(4_vGYU&F@H0&%?n^ z*t-O`cE;|dxV8(nFTaU9{|ZaBIU$8vBLcB^#%YTT8bYjChT-MkhT_rRIlCmYx6 z-kzFo;atw-#$MXLfo|=M(;IQ09NmPg`_TQHbx(F~!Qp7Sbt^7;IG5XUavR+nLpSfh z#=i1hxFyH3GgkNRre|_;4{nU3hke){kJEc`M-J}8{(f|C1}^N6?fY>{HXgv08acxOklA%QEO6WM6cb2*UXuefiXLQlWJeS^;R`cI`hzvA|3*!>f? zPRHI~*g8Y=#@K*s4gDuEPGoCSdie_N%aI&xLH8nhSi#1X*xV8aawwZu(fw`cJvrSDx35-rv40KD zcE#(^ewywwd-Z+>2(YV#3dt-3@2As)-8*w~=?%agKi8vkf0ocD;^9N$% z7932%4LO~HOSjT9AGhS>AZ*`8kEY^84i3g{O!ubYOtucewcF{=p|~e|a`g^+C?|4! z81vQXbpHrkxf2^l;*M;}mAmNiQS@B4kHOL1x_2D*?~zZyW*-jah8)YeY@N=0@jmUJ ziz_pDg`AegZo&?vu^ivGXL|nvQ#Na+l`Y>UZPH zQ@SVj$(~$#njXl_LEp!I>lwQH2<|+qdAaf&wjZY#p2txeXR`S;uD?L{p2c>Gljm?- zww}k{i*!fs$i|EG=q25g%P-?Vj%Du^=7U%0>6^*Nz;@ z)%WR{oXXKq=4&6&gIREQ(8JU})c$a6euT~0a5U%wc0Z=uv*S!oWbYH*liPAG+n>^n zIdor+{l#%ECrjYQcXWG6T=*V)BXLi*m&ctS=&@Y?QTr>= zYd_(1WnBCjXRG2&4p+l|kDjlIE5BfWEu6~HDBSvu?ro0iziWOAT>1mYaxD8>(rbUx z&8;>67k0MAhA}Vy_vjsPCMUb%z9H%paXJiJlW=P|_7272Y&fiAuYjY&ad*(CV}DM~ zpNXxxG#}zbPS3^h+;rVSt=Dk6Bt3l{x0b^B z8@O)a=v^F)RL^j2X&kOi$#dY=2EJ{EZ&Sbvc*2vimLbja8U8 zzQg9K*p%yX_&wcNjc)&d13Bs8s;%e$j;+;kCO75$PrA1T-5oN1;Op2}6B|RZFI%&y zuSNG|UykHdPGx&-=5sle&0*ZjWm~SU!@M(`-jM^@S(l#9O7F_%Y}hT+138s*xw0NT zDlp%cojGys@AO#CWOr_QxIW!m5Z5=rnViesLUeyay1xugHp0=exZ+@UdEAq&5^ilw zw^qi%CODLPa<;bSH>D@*V0$xcu7@)@mus8TqYdcJ7TDMjCvv(G_A7K}QygrGy$X)D zQr{kTw#KH5Yun&VHnzpaPV_!Gkt^G2e`k6s`*LM_dbo?8CwrrDbq9JRCvq~8UfYSD z$*G*n<(=vNfy{U1O!ju68C$uIk?5*xVhb$Efdt^JB5KCw5Q4)xB^Q z;%skhMcDIja2;-q!RD>l7>lFZ)aCdN+!#kU?!?x3oZXFka&iw2_tU)@IM^S%58zTw z`w!v51kES7Av=#~ej?p^6!*#5V>mp3Zaj_S1F_w~t;slf3nx=>@E(qQY<+-(gVg21 zRP2AKdvY#Y2h+2U=zX%?#f@on`!ifRMDuc=?0!zK97^|o#NETN(Zfj{`+wlR!?F3N z_Wy~Kq5BQ|^SgWm_J-k}oDau+N2(Wa?I>(5guP>QZ!KIsUh`|?OitFv&WUt)L)?>7 zIXH`cV=dDuJ1e zL6e@#g^O@}1idL6M`7n;x_vZGC3N>V>|Tnk<8e0V6E%MsJ&=o+<4|tMk=&CL zxpoEfsoa(`xfIdelXzZBjvLs!lAgLu~gDY@$13i@88#R9=J(q*4ae5Qoz6RHC*8H{D zx<&V{$HuKVY2lV^-hiFk=$_n`6S)%8^BbAZWann=-%fXK!Nwgpmg{nOE4?(GZr_f( zvLm~9>Uo1*4(`zN?oyX?Ih#%o?xwqU;=(;RlS4VWi*EPP&AV}*?B9d^d$lk3WanOb ze4m~-0|zs3@HNgKR{sXq9>G?QGdY*5kJ96B>8TuihbxcKz3*{bwti55oSw>w9R5gm zo}jxw;Y2on*8Y?9OityvNB7$F;1`_B?yop_if;dgji+%g*JbB-^=CBy2ae=SEn!kL9kM%fa)y|CgTk0`}#moXDkA-PnKN`)lDv?GM3SIhVbc=+RJmNA_mH z?#uK{Zp*@g7TQ0szkL9N9%*uT6HM%n!j%2fdt=F|Lhq606-RRI$Igp(> z=snq!Yi}^0$z9o>llj`4x+iyKdoK02=((KB{@ir`ZF(ekWPcud^&Rcci!(VivHLFF zo)0H-EIaSft@-JFvLlx=x-YlnOfJ7qHx^(&mL1vpfbPjnIg$$>(i1t5jRm=v%aL6B zhar(SKcRr(tSCUQ`z{6ZY;sPFZ*&XN3!=d^X8JwXR;$#zM-dbTh8Tj zPIs4LzfTV2(zo@CB5^(Va^xh)&Z(knmfzMRO>VDHgWxleYNW54_hJ&;?nu{^!>E8UTsaxNEtqlYUn z-<16lF8)r><)$31sQw4tT1oqIA{YOpXL2YTD>HBYrTcPAcK=4V4Rhf8L@XzAunOHB zLN`{$sT|7gP`baGx}3}IEb6wp?5wW)!|0iu$iW(Pd$^vzCXQuaF3n00<)&<}#k@Hi zJ(fc`m5l=3Uz>Sf&g5M7)={6G`CQKBa9z4L2i-2?RE}kLPP(-oy)8R(c`kY;x8&gO z%opdT8|&ky?90V@=%L(@%?+40=cNa7Q?@o#H|dewl#{_eAKm*0^9?zb3-i;Rjnw5- zHW#4#j=G%7g$3#6#`L=E$z9plgkD`p_vDV8$j-ugJ)@XU z$>CySTYYTPRkEncR@w3iE}<^?W&y!!7AO+1v`(mta1SdvYZE zOX~G(&3q=Ovbz-B-G-jZx$IhWe_MJ-Hn+pxNV>T_&gD?{m!@ZOM|NH2tIKGA2b{^F z>@7>Tc2t**ov^nYJ(4py*qL5ip6>60d$PSNZmdAhAN^yyvM zJP21eWImDGa(F1+{|DVT3}><RB(aC%)1<*uB|-X_fZ z|75-+XL4nfo_7SjPflceQ@VX5J(5GYxEb9%ir$n%xv)7smTR(oH1nAp$?g`qcMQEP z2XduC&*emR1Ln(H(yilhPY&h!R&?hCbvc*oThqN0>A7q)aI_8GJ{4ED#m1SqzMb}E zV|yIQzHElfo38H3z8uJ@9Ln|%%qMavyJvH+up>Q}8**?C-PlRbJ6Eq)PUKwn&!hW0 zGjE)ayK*eocA+~LsLQ!r+m#+)NY7=zsr$R>{zd9?Ec;d6zgS()Wq)^i9?`u$uyqyg z%D!CNlb+m0xA)e5j61S%J1*}-_vKiQ<`vExk8a3f*~I_vQ3mT=(hG zd)Pb(+Zm4J?0xJ^rNj6LCH_PGol; z?3_fm=EZH2gv%Fde`TD?q3ks2-YR;&?5~C! z7tvE2moCPc+#K{8^ztQiYfapeZMk?U-B?Rqwl~7w<#bn0Wlwgl(0zybj_k;lNc(c1 z9B<6LdnG-U6FHMhSJ9(Qn2+UHwyxH`9Lkw&TtkmXu^-CO=GePdT~6hEYkG7YJ=qqQ zugBr`xFdTz;ChR0?1YOqU{h|$!OnE+MtZ&rPUUzvT)T-L?SajkalAL~lY@P*bBpec z!G&9KIu=KAFbR57tZD6ZX7;95BjkEAdc_F ziJZ^C{zG*CF&rh>dJ=mNW2cSHN3i<>EJyK?#!z4;{F z{6_cMx+f>HpVKQ((XDTBTh8Rl)7t-zp31pgen$J>(_3;Rm!73ZKhR@2m96LK#*g$+ zwq@gax+nW`C}(maS6*N~m-}SvC+?S0x+{lrAot{0uD!^7CU<1>XYN&AqC0Xd`?B>i zJ(5G&=&^6ULiglQ4&|Pl$lj~W=W;4rzi`iajqb{^9LUAj>9O39Gr1?5zjCkEVcwBb z*_WL+=#d=Dsa$-MZv4i*K(^&v_T=hY%!hJYPGtLSdM-z@^}9Zw@6cU2kOMiFW4Zb+ z^O@Y1%|EzjzejiErtHgwj2_9poXQSxBldQEW2{?1G@beJ(4|R!oc5uOCQoh zxhW^I@ew_jec2kqekQxJ`!Vx@+$YC!=@WV;H)V4u_X?lVZMiO|veBidvoIgZ#xQJr zrhU04dvZq(<;v&GJHy#eWouSk{etewZ8?z3U(#bamNVJlGIXm|&-!UJ`sqD-__r9n5awTW#cEhGdJ@s*_sF2Khpy_mecv^wI1DF0Cxwy5RQJK+as|1D~{z< zb{C^Jf7A1p#NO{XS{B#;kXOLvKe4$IHvYot>ew~r8~8f3*TJPB*jOJIhvH0*<$N=` zH;kTFaAi0Sx5Am6Y>S(-(jynUvter|oXf_pI4aPSaoCyz$J1~+Ck_t5-dyrgIG9`W zXUOy7>?~Y1v2_m4W$!#3&qt3g!1eiY-o*9-^2N9#dskzBA-aDJHWtRgwK$Zs>v3fS z-MtAHirABDa&j|0m&04Izli2h z#*)~(ANR@jgSfhs`oo&HaP%~`M&j&Q+?LZ0E-XWL-@t(!zNx+}J$(y@vi&wTmZRGr zYkzrce1dy&{w1!K^t`WeCR^WNZ$)}8XR`GjJz9w#eUHm4W9tVT%l5Ch^*4I_o90*1 zeYqw3ztgQ%)#XSI|D=1Xsmq-~8xse3b<6p{)#x0qm{M49^F_Km;a7KIgzb3>EZhHbS>;`fX#KW zxgpL*VQVAZ+Y~ote{*$*p39LOZ=t?1-LK$Cj<>|6P3Wl{%Jx?D!YJ*_b=lgQ-jhSQ zzA5wWHtMpyEv|1ykLBK=x1$G}(=$1fJ(phFg6`~qyRt7=D)f9udMaBx;qsRBXlLA( zgI#cCD|#%qWP3Ndy*1sFn{rmAm$soNyW^Ie%Y|*}{+{$uj^v(f?M-iN$Gou*E^Lo& zxhBV>>A4(uIB=QI#$tB|Y)--Hj@bXF=6A-y5xBGq4o}0i-EedUHmf+5135a2Uf!La zoQ;h=uyYP>$kw^Iv?o1052vzuKCbOWk1oK*-Z;My$8ylb&OW*)$Fg@3-5pJjFT*7d zr&r*f97eb?hHl@8vwbyx7Y@f^|3Pf-CqIVm{ju?+_GSBN+^o^v*KuVcPUTcKI_d|| z6S*TtZ_w)p(w(=lI|=7>o*w#Cni_vEH*lGxa6LA5rAM;08?LnIp`6Ngm0r6+_jbp| zjhdGmvb_i0x=HhU;yyXv3wt-y{qgcG*gXKdx8g+Z$mW6c>TPsq63*mE_G7v=nO?XZ zo71py2M*;x_70(2)9Lo1xKB0?!|t8*MDEJb;q>NRbnldY4NB7WU+3wT+ z(ey-i0_@+bejF~}Cm)YfIXDqFX3&$9uya4QPu9Gg%l-qJZ_v#LadZlfW&d>Cc!-|L z#RQvY>b~rrrTK^HVTheauzNPnWcwV=KT7w`#r9*me;#hjiClf09$!TFp1|S7IG3GE zaPTBOxD*%LIK2$_$?@g5{1n~40w=N;VdrVOc_nVk#?`p`4BfZ}cV+Wh>_1C)TiARK zdpF=n_HV@Y^Yl!P<>)4Q`2~7#GfoD53$CPe>o%OqnOuF5p2YNA4sXZ7OS*ptHebf> zblj9v*?NWU-AQi^`Yv34m2TXF+j1gTU!zBT^j!Au#lh>ke;+P(}8}vkO z%h7{$?@hY@5YA;U!NFU)|1dV+#>S&Kk`vi}haNpfZ_EDUxcaW{J%MxCd{Tao9uGRh zX`5buUw#@FKETm4xG9IvV*5k7{~S(a?|JNgL^og1{KvW{o1b7Sr3Z2<=d$}Ez5OZk zxg2$I`ZC@53_GvjRL*4ob9&gJTVG)R2kd=?jURDWj(*0iuj%P8xcUt?f5(L!2XaF; zjROb%{u_Kt&t&5}Yz(2-bvt#o|?azT*vM-l@qNj7x6WLu5S9ee-%izZE*l}=W$ovBzw?7KIL$SAoJPS^?#O5%Z?~S{& z;nb50IIQ7t4(w0B_MAALh_gW-p!vDz_JO!GH+H9BV;-DM#pb-&JQNp9%^!`s^I@Gt$@5Ws@l>KG3-=}-a;aqOZ?!ENN@^pKK=2yVp1Grei&V#rmC$hC7-Fldw$${*y zr2VJq-pV+64u^lk;Tt$w75i^udo>)qgH0RT@8Vd_?3+JNqjz+Ks11cw{a zlaaW!5w@4Zv4evZabsg_tb_}j$Ts#y;dFKNO|kWN+}up_o8Zpo*xwSjD)Lsiw59A~ zZ!7HWgezNPb7!2&c@=lIp{IM|=C;`KaI_t^Wn+6B$iAG)ne6YU`>yWSaJ&P~WphUy zPN0XfF%cU((M{Qty~%WYXYEhHshs)P+lB5;#a-DwSbbM@IgvxTw43@g=KEw{E>-Ed z+>*mXm@n;44-Um`**gqZ_n`Z7BImNRCq1e&pUCmy*xO6@|A~8YDA)GZzMRUjZ0|!) zWw?I^nO4K5sw z;~YnF@+~eOLwCQ&shs_QYXRN-2^+`a@Mj#!Ne?^6>E3UeKOXzPYhJeg!nG6Vjxl-Q z`<;0rPUO1m525F>GZfcOV&0quXL2aJC(~28CFgRnq5Wa(2eK`9Wlyf0!h9z8$>wnO zi>J~PIh6fb>E>yA-fTFPjRFo&rw6iihURCd$8soF&!pRP(2cWjCb#5pPP!Y?6S*V% zbJ6Q()2+F2;T+A&v22){KbP*!ulwiWXhB>&AG;%PE{8=NT|iG4(f)HWT&^{B zZ!z5)^pe=PnC>ryTXJq;_Y(DyIFYTTv3)5$DB;p&I9U;Q<#=TrU9NkpVD}1atcr8l zlIs!Ok&P>{Cx>z%n^)0uxh4Cn>3LVH%em~^^yW46P`0kcvD}hVxpW=fS%dvdPUPTv zdL|n!Y^=$AAX{?b2D&RZ#^2E7NpaTnd2fa~|*=m1>plaIoE_hI)$?B0*V zlW-;{Cu9EsdT^SDTUXPYPtwC{vE9aQ3wLDiMqGbN_in<*)7ZROUAAw> z)o1A59k?rJ(>4FB_V2^~b2yQ6*}tD2JWtPM;{_Zi^o|@piL;a*wXydiww_X#!)I{t zlICB)m6x&e3btOs{#)v=;^ckozJ`O3a98%e!1?RipKr>*_uu;4IGZ0A-ob7Wcja_( z+lWjL3+a<(G9@jl&L1=}BJ-_||ZUK0l&(yeuH=_4GKaa*?5$F+}j ze*>J!iCp=F9&SiaWp^X&eM)y6+?Bmeu-~PpaxRCX)IXzVa#xNvrPn^Edz;~o9Bq!> zFX+}5>atzY{+IMv?#kYlbpI3ypQJ{Xf6=@6H*=55);;(C_TKnu|N8QbT=$~?=HArt2aX?e@c7YVr%awUzCLZ{>#^o{X8vMi|6zZ> zG1JD({8#eknm6PB;`4FXm=HKJ&Ex>cD|KU!3;0tE* zlxY+8JN)0BigYLXukIW?e%jy%KYHeG&$J0s_%>jqy3_p+cLrWg|JT<4&l$s5kdMp0 z{lED9Oq+W6Xn$I5>i99^Mvv|Pc^aRanZF-_?$rOo9X>w?AAa!Ye}5;{o#a2GS6N8`J{{1JlpZ{4uou?V6pA7(Fm#?_3k(}JZ1~XOL%G!deQ*(H;7;>j zo_A;e`_J^hz0m(Qb8hDI{_KB$=8tKI@w{s${~w;a)3hm5`@htNjtGa$7;@H-A>ojf z27W%LA9EPPE}q5McjVA{<|+&wZp}Ti|K~Y|4_$HS@Oft|EaV)jai2q`wkzN zHx_gF_3r#gqlg26w`(j2z>~}&?I0e`V>Y{jEWGN0s;vfio26^w>^IPYvGxy%T)?T}>we~ua3(mnUT?IAD_8|Z4cbE|l_-z3`4ln^giLU#; zaJ1Z2v+JV}F|3I37e&GBYwkuzkpE8PMJLBd9@hik3%I#o{ttd!{z}|2!-^TZm7Epl z#2LnqApckT<^MD4V^kE>{Xyib z$D(SX0TzGl*@X=#!ptD4_QN^3(DQJ3HV)B6zk zC!nW#Rv*2cN7FN^3M!v@-!0NR9r!B18i1y^3HT?V*D~ga8ocNzf*k?92a%sH-w%NI z0$u=UdcOevarCf9q4ub1Z#p%X(~T!srD&t(KBZrKIT+Auc%(>gBJg>D;{lr98sHyC zZ_U^-0liH7X^U8U6JX3DbcI9Ac!||;S2)7vm8ORkL9gOmIHNxwZ!+WeiVtvdG#`^SAA9lzm4Dl#MLy;O zZwD*^Xg*E@PH8YcR`v0bDx5eC^6xUP;FaQdlK&W9RUGeX3M!v{$WNF1Vc?Ggo&;!m zKL$=|PK2yi zVHe)USPz@6uAgVOF;slFX?&j7K-jJ&xQ(mJ=ZN9d0NhVAH%+yFmiP(dV`Zx1J=UF>eY@~_7GCa$86E~#pAm3a1<@-(GcLDC{m+yyz&o?UHHso7w zc;&|1xFPif`5x|N=9t%CgI2hzR4|(YNIUV?Nz{>wc zzG{Ha8eZ0Tk5fK}f_!`W<$FKy?*JbDU*sFCNWt&l6u-uh0&+Ku5BlXBc^qpnKng(V z6Ujjh*rN<@l+kUDGK}UR-*)7o<**WXCt%$t$QR?Jsy9%tHN0Bm3bR)6(h=mluV20o z1Ai27@RQ`*I!@Pbc6190E>n}792lQ@1e!BhK4gA}HhX9)1O0S&gkMpB~^}Lp6=b9C(Iy*?+UC_UG+eRM%8x zn?p2@Gfteu?^Y+vr*b-VF3wLH_y9%0Wh z*2_+P4vW6{L);iz!{bqxk3_>hR=7MPPRpsLD^BATYN@C4-P2f5_a4yE{r}s*p9DM& z(0u$AIHl$@efoC>>ru_e*6qu;6_v3ZOP%Z30mcrpFL5LJfN6|~mO3JybVtfYQ@B>x z8IgBOOCl4Z{214f>50e4sdWO_@DU^A%n7GL`LUj#D0VS6j7alAeS z_$t6!fadeFz$sO1^!a>b!;$hry^!{mnqk-1`4-l-!AO4&g8*7W%!#HqqMIi$YDV*6 zp6B7JC{HemHp-Eb;X2w&% zp!u_Y==0aR)aOgLTP?@V&8xv8*ef&AWyZI8Dy($2DPgJXjrf>?LfVm!rn3h4Ho!Rm zP3LpKDP@EGLU-p!%3gz{-eN8pepW()jc@%%?=#a3>!#pgaR#qe{WmSrM zBO7?wLrXf#8p_Tw@?#5%&LPm#{Jal5^&@6v0Ggi;;FLB7^IGB5!TD(cLzzSD^X40j z9b#E^ovN;#Z(!6-|5X^fFpETaiiddIitRLPq*|W^_yRORt{WUL@@~&D^tH%Wm>$ z^L-B!rF5s%-C9uhwjUS!|)l(U1}}{Z~IN-1`AU4JS(rXo2JM)G4Aq225W|sCUS4cSnhc;>(udjh%)cY zmUEQvQNQ-fu{(8v z`rW{COy5e)wYt~*FZP_tdd;=!`lzXHZ~Fh6q8?u6>b6E*f8u}gW&eMV`cJXvOq3f3 z_dc|mc!^hHxe2cn&51i0GbMBRF+6NKB4k?JWc)4`e~5Y3LLQg7h?(ck$#uD*ZX7L) zyWvu+jF+C_t>)Ieb#g<##U6tfB-!~oyS|xiXp+rgH-4PgX7P|n^0>&y?0B<`w7B13 z?#wtZ-R7NVS!EUnQ6gNz$Mz>|#$|r4Jr5b~@E&By!>T&Kyr&p}Gk$GQcRx~o4kI3=atSl7uIgYyzFnI&3yqs|F~5%SbNESOR>?%nRpyS=0`KJbwCbRl8u96V{T@R7HK4|5 z+%ukIMjc=nK-ceQfm7Q3MZbRAdXDP6ZsXK- zn7W>K8&(hLy|(dlr-_f5k>~SSINcB`FSE->&*!t`Ou%%Pp+?hVG3&TBXt~@)%|@8X z<4(kLQdZhbzz`8Gi%JiSSaWO~{x;k+zurV`AiRo@E!V+M)b z$oT0ThJYvuaR01=D&N~Er(QQ0z1ZIY$^cppvw>4OG(cb8ubt1|Hg`+0{GxCNEmxy} zQouLxV5FfqdBVjA?O=HJ9H){`XW?+nj+O8<2E{bDV{8#VIR+4xSXhnW_j6uKbercC z=w|EzA9{TI7V!H4-vMYo9|KNld$8UZsCQEK`mPn5*RO&D0#s0&{ViTs#}?ZtJ-tVI zv5Af|U{R<56acOdM)pN!jEeFqE2E|{kGWxwdsZV@M(%0)YH6zqSN*h*gb$zzghx(Enovc^K(6LN=sM!{ppq9K9HX! z8`rPuB%>#B)O8=j%Ev8&k$s67H(?Ewv~pI)(F2jk>ls#U45OdpMZhD8Y&e$8^Z2of zD%Q*M3ko{~KJvhb&kupuzW_M`G@oApPU**=3i^LwPaeqUQrN3j&w#@g*=0p9`mvz}3h;WYiwke~S}d2nj2$V*_puWkX%3Y#z-!D38LHvlvCb(F z#R>coE*@b#hS^A!4(rt83ko}o^5%h&JS;TBI3Nws@>mI+(#~N2vTl%eK4blMxF?{> zZlWq%Ze;(4bvc$kVU)?i#?a&u=;3EmbC%$6D?&tU0ijo2#z00Kvl^|CUe>?i<*)WM2|cY}N22=Hj&DI;Q19N#NL+ z6fGHbO0X8SJRwcfGf{9^Vpf>gKzh=NWQDY4spCr1p6U&8MGU_}>C~^H+_9{Fzp{(J zGClfDNIKz`oLkSmdFF94(s&!!a{I#;b*v6;lu!!GByk@reXqfO=h}W1N56fgZZ*?SO6BSbMruk_zBqKSQ zbJ0@2!myXJ%GoBfmY-!!=Cu+0lTydxg1YyBZ(XkYfIkd)6rjuXJ>Zm`Vq@=ra-SugKl>h=SnZuh$C=701h|D&bPft&Krri@*@DV~UV3po~C zoY?`G=n+{b&iJWvQBtJ5Tr_*WcPn~V6#u3Tk%KQdP8BcbrGPs84dFX^i&c*0Up!m} z<4O_>=B%0Fwk#L6jp02M<2g}sj=giVoAG-oY9#8&tjtKyq23skWs;@xc($E-^_lspacwVy6^F|m3@MOO-4dRSMfu_g)Q-!Y{Y>7?yd;N4 zZ6eQ=p&{JGL zi*Iq`GEvizbf}i=Rb6^AiCRoKQrZ~xbHXw4+yrK3T2ruPT*{{F{o0;03X0y_psV}Q zhrrFB!{!6fe3byFln&Na-7AkAABeA6>$i5U+79kg9cL{M8Rge89EIS9a4!M! zCx{_j>2ZzxnFWUHFAfqzJJeo>_RDd3b&|Dj*bDZf9mysI{D*`^1?@@{^${1;>07#06T1LAX*u}jwT zgcISZQd^)~o&XEB;SHhhlmpav!ZHa&s;~VSD+^Q{qZj4U z^8OX@-vE9G(DME>a7q<{p5vp&OOm-7FFPhJ$9Or-xCxujVKiPg3oP1IDy%H{_g9PU zeF^YW0cQX-y-whi2I@m~d#CZ4=#f*G=$J|L<{3SpH;PAz9+idCo|Of<8T*l+UI#w` z{I7t205rV|UiazU`QLthh9gIh&qR;L=l%Qvem7_P`AT(tU8vjLj=D`!*K3%%ja1jA zche~Sxs>s3OO4V~EDvLHm+VZ6Txl+u7FjQXfwnm8Li|Q zC#s$^+2T_f4e9g!f%;>9QC9o~lbMPmp42dXY)v@7hVM#pMVov0rX1vAxGh=P+T=r>J+E_DJ z*yi)B|9IWJ(Qi-28^!h;1)c*`19W>j130C1d;Rv54eq-A25l+R@l}S+-EO{|h6mF) z=wP+zMB8fA)O^&SO*;bE+@!4{dn9UOYB(vG) zcR%>agCAO-JO%t2KrcY^`wDPM#}CrKx8X>@s_mOs2J=j+>$EM7QGT}Zpj*oqsGTvE zM1d`m^63ufHXJI_oeF$5U>-ozT@0MkVEtUv4dj(VR|nlQjW^v&>gr_toThD{l+U4n zZV&R+{rz6x4*?zlXu3}Vr!?ynzkd40v(7bC&_=!fqgktKC6)C;;|pFbU+R~&O_#M} zOF`um|7DS0E%4!hQ2a&>%Z@`#?KRKRO#bX}Ml$lvf(}LObfxoPRjTx3^!uzXbjk;J-g%zN=Pr zA>S&ayvle2`Knzb0VuLt>Q`8*8#`+y$-G`+;He0rw`>z308tXmpJ(4myGhBvN;CA@Qo z+V-{I&ak+8ox%OA{41vMo>wCxG<|c|DaTe7TQ8BVk)vWI$r4#*yU~;^^=RzE80y&x zUJ5mRG9s(I1pWt{yD8d=J&hrWE#|X>HR0BRl0!$pANAKR;N5`B0Gj{%g3q;GSl{*d zLdM}nWq8=b9)|4-yVC{av|jObZj7pNz>}Ad7#TxhZdpr3o_je-YYeiEa4QG%Lndyy zN!W-CqlW)8unwahxB2`TZ~5{g{$jv0fE+;cH!k>G^QG^aKO8Vx(~P>z6z(F!bp_OO z9W}g?TbS0cH{fNs+PFfML@Jsu_A#*Cr{5jqPxP+?{&~O`0h<0@!RMN;zW1k3;z<>% zpoMIj<`@<0jjl?pq&!g~Lg2%Tp;=Ah4b%bQ4;|1w9OO%M-Cx7%3WxzHQNPo4^u3SX zmTlYHw{BUpeq-k>9FfA8nNh`zcbNZEqdUld8S=^_AIg6l@bdu|0qAR#|8C%vw4SAK z@{#M$h7qf}b_9fmH{u8wm9d+xy4W$QE;2p?CysW%!>kKB%#MP}uNV31@$!A(E;K+9 zfTnv+pb>f}u)7V^%N<4c_tp+pWrcgaE46j#I2GHudvX&qo$X`raLUrHtXbSSU?%*XgUfiKo zju(kzKY8dO|7%N!5Y>Dt3kgAZ^ql7EgdEDlwQpHooxr%|pvFp~GLf&U5cK0udy z{D1rM{z_2pf%?%S%iVeQdbQCJ9bc!?o&~Uts;`;Gt*|)S*rMinS)8*l)OZ5xHNmG< znpGK;ntC1ftPF1BCN=<8l`4<4Z8JvN=07nplUK3{7_@_QaA!ebyTP9x=k@`=AMhYR z^M439C9Qw%2<(-*T^`B*nqq}z3U5F)UnoQ8tojdbyd-LPofQ!!Jb|6@7{xFI&1}o& zu@uUZvfUU>B**i+8SgXu8Hdg-DEiHB7vI8Q-L@OG@xBC z+_IUD`l4YSw;Wxm-MB_ZvEcy+(`mEOd|pB2w-5Ph`8)#r`+y$-G~IWAQyR?gVeX;@ z)0ed`UNmzFXk`i;A(D9zNgk@5`Wgv1c7 zenHV``=6p5js@NUSPjtpTmqcZ(!kC=(Eho03l0^kGif}tpM8ei&Def+zPi>zH(}I1 z%Z+Re?Io;QUcySf3VSGvVKC)luAQSf<}oH#^IENe=(wPu=sgX(df)pV@b>|K3wWV% zXW;pxV*4Sb==5#dI=9jx$=P&%b$H`qzt+?fw{3349me3V@cw z*ML*HGw^$8e}3RN_fd2;!P9C1VSp@v63J<>cBBsW zF4>NA%xgbVIvsu%hH-I$vNAf5XC8MNm(B-%Dc}kKeU0c`3!KudLF{h*>1nB89ykN@ zK>bc*b)~9^1TcEJ;3_`t&b~T*Txm={o4P?;+?IFwU zi-DgASO%a(bm|B3^Xf-O7pugmFEK7CQ9m{I2l@B(%m04h-vvAd(DHixmqYk6ga+BBj>jI;@pz?|Tt|+%!;9~(30Gi%%;FPjg`0aSv z^+&enE|A*3Vl$bu;QRD>-}mWe@f^Bz{R`6g0*)BWbqZ-O*Tb@(VNeidv3m}uYaN*z z7B0kPrYb=C2u@p=p#V;$U zd)x1ebmsv-6R;AX>Fx$jXN@!V3@$@|Z5oI8 za0jXoD8fftS?)%0Fu*yH3xN}vqD6WoQ({wSP1ymX-$wrZKF5wL3X1M4ps(Bi+ra+> z_zOVuC;s5`H&{QPyJ+#EMN6s8w9m$7p$bQ2hF)wui*;8WHUeo;?P5A_;d6u5V{`{} z+mUY`98i6%0KOTp6`<+19QNrB*58A3VkDUMzj080&BQjP;cu4FT*G4!grq6T^Be$- zXY}Xc{Ddh2NLVf2IA^RkPPEvqHZR5b3W6}!D5A`(a!+^D3O22Om?X(#t#5ULIJDSMSt$^iZJSoei^4%6ivP#Fq?7QHVwPNF zqnbjn8^F5dh=uYLm;vFP5(3@)NpgKFwb_>~94qo05!KLD1-csDkcXbHZUg=ez+C_> zuP1?1Y8$u@?psf+!&F?`QG<6pWk&~Kay{< z|Ea_EWd3_k+(zcVf8qvS_j<--;5Fx!duh*ACMkonK!M}+-dF+Fa^!g0BcuZGbSy3#1rohBM)9Q(sk>>4Z)gJR5vWrvo| zwguB^WO&?`P%sXua$zwH<(O?MAlwGH^W6=? z*{i~MOVp&xVIxiQGO9a_T_)U!ORzwRI3ZXIsMEo3t4c2C1$0{$&6i+7Ck1rJ=qQdD z67l`4WU^jKBkej7r^*~Iv8j?JIaykQ7I2pMCdUSdSNaQ@!rp@7`)Tm6>;F~YhXL;a zborLO=a;WL@NXEje58nnE8Y)O`M#pccPf?dx59Wu{@==%8>DH*o9`+FY$Dm8O&sV7wuEV4= zqE{Ht!qc!E6`k=lpVYgYP_QkoxUsfqwt6yHjMjV!$8mdUc~sZ-NX~w2pkPc_)t;eiLvImJXG#kY`ZaKT*kzOe6GAmo@LIG z3t?K#%B!*a!S)-Q_cETGWiH^!QWVh@V={7vGaYLCioP$(+O#$Fq=aSR2d2n|a;Mb` z8FA9(kd0GX?U}B*-0mpw=!#^=XgIsM*v-QdFg%@zPMZGjM50kx#_KYCG#wemuiOgttEOg8-pI^rAYZ35XTf3- zJI0CFQOC>VGK)$6yO?;E!$U4QG;|j;zs{oL%&#$?mJ|5(%)WueC-G{uzuw#Ydda?D z+}Df*J_S$!=z6&yIHd=7`StPil}FXfYN*;N!V4{NzUePP$a6tNUWNa|bXh(pXe(R`G_LSl}#64)TcZ}-dVd{8WJ zCGhcpi2z;R34is=`$5nS_dIh{dExkm#V-Yhp*iF}uI7+;{o8M(no8~o84p9-TEVOP z{>piIlziJ^5rH!Rhn_VYMZ?2HT?&7jN?r{kYtj;@n5V)G4W?7*ThJc`Y93xV&=SEO z=17}o(kO0uTuNn?az}HIEKUCO2?3h0H)T1e*27?X8YbPS1wWh-a2K%2!yZ_RtVyDs z!AXH5#}RTiw7eX->E|WNewFTfJ~6O)`JazgPg(V;@1{@=+{cv73+1D|`YSx0=3isx ze=uH?NW^oEw<=2gc7dzrxJ#GM;gg32BG<@C3Fy@u2>Bp)3iP7UAT~ ziYOddsF#zA9A9L&=e9~@B4xc(4HN0H)fH$uA{idR_CX zShChc%ViFhhLZXfa)@&$ku?r7f>&ReeM*kp z7Veh(T%06!{>eh*{5Q<}EQ3ov9Gi!+iRLdDtM%Igs^93{@3)8jsBgWmc>?%zfENI| zJ(PXuw}+j<{&e4faf!}=&)uq)$eFG;=%C5HYztbzeVF?qHD2la!u~+aaa=wbgFgJr zvA{Di3;N457kZWi&v>4T!whiyvf*(~cAFHBW#Ip24h zKL1_dPx~kA0)8#vdVuEt>%b`uc5ZVmct3f|R`SBk6gEJMS33>d-;Kp?w8pBv)U+=% zYp?|MOl)DGzXLyO_&BJdfv9va;Nt_((R_ISfXxHY3ebE!@-Lr{4}ReHt2{r_kD&AH z6{~ir0AA$ue`#8I^LN94AKd(u!7qO(7RJxnKwiN}#r_9_3QHQ7#hT!>0EbJ1JmNT>lfWq=UV<-F!gl0vXSi8w zUKlwq>N#1J<8b`S+32iy5M1XHCNZB%%*kf8^|7BP(0A&C-)H*&IDu|rR+H}*u{+#3 z>cbG+S$Q)y0*P_zE62dOay@trraI;}LScAeX6@FHrK1mFP2C)4=LFMPLBHbMDTEGy1rrQFXQaZ3N_t}s7(benl z6e66Uq-Ps%f#xs{w`{WgfF48+M5W${#r%4ed|nL zy*Z*CK_V;3L7WtvlLGT#{$N4na~Sz)dRRysVL%L^>E(b^(&KO6`LQCse(Stc`%)_D z7UOTASPrvqnhMx}LhFb_djh)akgs0HTnPL!z^4J4?)AVa4dyp+>qUOL-M$6_#4W+*P{=em~$rfR+!|Wb`%TvSt2!)Ys1fJs9{7 z^b^b1tk@RBG%MUnroU#uPsunx>iecqUgJSU;e-YDgE;q<#E#1=#TH``UtAjVI4tJL znx-sH(YXUu7%o=bky>*BHh;rl(n(B7F|H)MK zF!pY2??=7o8ecYbv7tYL2L#l8*aAh%%VJnKgk*9goOZCSPq#F=Q?aqr*rax+<&- z|wKWvW)t{@0hq;uzR_C|<-e+$*9{8nzPXn}^=eoX}4|n|=Is5&(PtLdcV%+QBPEyj`pstq)b^DzE$sF}C zS;_f3p7EjhXgSv$A!nT9FUq-rFU zyx#uQN6PtehUg$i%DLt!IZrIgd3qD%TtjmHGZQ_6J!SvDD+JOr)f=oRzZ*Ru{AJy^fcCdF(@Z^?d#i@E-!61!#Gk8}j9G%R9at zmPL=;ufc;#%j2N=q>r&2^UP|c@qE@ z$kIp*(LfLxcA|9SkyvV^*KUPlr+KR_99$X)eQFd(u%l2)dJG%mPH(YgU2B>+^EPCJ zlvWEiQpm*0Aee-VH^OP54vr?0$A*b2$97U!>?h&MM?@Dp8{~}WFuB+{fme-#M%9+p zX<2Pco0NEq#Ptl0J1LyGSOYESADO61W)hPHt-9`Hb~c`8c~;FT?Ua0kv9aP#=n+K5 zPCHRr*tfs#%kzUkUevzeJ80wp)c`He>A)%Jd3oSDKoTa7(rInqw@HQ7!|<$Eb@Vn2Li?jvB`lp*SGR%bqt2l&z7E7U$I# z;03@efTn*Ea7udyS(g(1`C}CQ_K7I}I3rvN_$X!@@Kr?mSfzx+GzII=ygP##SI2i=S-_^|LFs=A z>Q+b;=cN;YuK;ucH2q6}Q@ZS2pZ@9R9oarNu0gQ&RU5kCV5|D*HuTY-Gj!7CKX3|_ zR6-VHsOsooal%A|o74fu)zR6j8G7puKGkQa>o)~O=V{Q>^W>|*-vGQB@Iag#weJn~ zkD8AyU0`FH(LBwVM?@ub`JfsC2Coyu`q>}QX-gLO^K*c&0;~n-a`ytKbku%c)ALW# z!_xekvNXFSd3A{smO~wkIba&6Q)Jkr0*Z##P16#--dLN{$${D0LKC} z{guEe^{nyR_rQ6O=x^KDse;I5+IOm10OTJ)cn6Tj334>F5EhzooO4HwD8;>)s%Jy^ zxdnXe2OYgWcn0`ufL{VM9|$#~_=pGRpZfGyLAxV9wkt;Z#|IG|=cC_!nT~Kp;e|Zr zUMOF{R8+vs(Z^QI!UA5zu^x^i)(zG&mL*LXkIHM{r+k9=C9wbp(}KD!10R~tjlj!&XY4oO*x(?7WWdz4B8Gzn@<|v_xR)%iwlpCvlG6W6}_z4WtrSftnFJ;GL_}+?cmMc^HpaMT&^0yf) zg+uC(M4!R$;9q<>_CQX$KEDh69l&9LmgDELA77shBQ~w;BnLUXdu6)+!YPjP%vXwk z(Rt?c)%6CZZdrA`-G6w8tEV)bcOLh5&$z~_=S>#vk%la-txtu?fbU|7;C+_Ky$D<+ z5g?nVO6*dPmzCM2(k;1;$vw<1P4kMZW0jb>48=4|Lqc}c8($VHt8RcP4FAEIS$x`w zcvZ9;;x0lRK|wzyv_vkI6Kl(4IT=pK4HO=aV{HudY3NHRr_czv9L|;V}3PEnJbt$q_{K2*V0T zCuKwe2DL3b7s-|38si9Rpkg>JK!~eKzK%Z%K@cAY|5>1$u@8LZaVNeX2L1-%R{+iT zO*xh}$7gA3-avd6Xf711!72H+b!ar zRbw6NRLZ2qf5rK$od4peYo;FGoaV@~220j8l*$w0@W^VwvWYxp19lgm&+(mnq0xe%hJ1>TPLxNY&3fbozsM|?P4+qU&8F6aCi-tIPP?6R&We2jxTB82ufts z19ZEZ0i4qAU_Uc(KHa!t>)K8|uw=SkXYeR!g+sx(Z`0nr#wvj$kIT()xtN5-WC{w4 zw4KYTMaG$YIgT6$J`M%X=VuS->GkXFz`p_b7C`g!0B}l2*&Frz-g(ZJm7fa2RJ6Cj zIyG*I@isy)HIc<}Y@fxkC!l9k7U`vd=KxgzO>ZdhkE9puAMl2#6>B<|FYNT4jz>0u z;2h(RAXrNThiZa{19~``*f*Z<0)8#vdVr?)HQ*r&S=`D(fs0lyru8=&d#1x`uZ9kt#`>odFjGnY6u zK<`Y1d-rsb^y$W45XCtO-^5x8<(z+f*w_=$J%oJqy7@h#QOymwTldke15RnMb5S(P zFIlmvYopR86>jEOh)shnZQNhEu`f~+x4qN|iC8*NlUwjOZgs136rd(q4cQkcx`Z0V zp+AWFa_9oRJm}FlekJf505<`&9QFaHln>6cj|g-^-)D1F8X<{*}NfIbZeXk6Q-B zL+m<|zVe3dy2eC9yn>vG&Y;$Kg9SBB4Y`8Dr7<#8X2MQAG`}tmfF__Q4TtGf9~e*J zo=}G6WWtHbC}zYIw8wEoJH*(V3tKs8PI0mt=C5$t$>Cfm!%CnMBXP+v3LX`HK>1pE-$v&{`Uqsf3;FR?EwtK+2;BzRx;7UKfAYRL~ylZQx`WID%Kqp~c*J21Z zS}*6uTiC(WV;(^)SH$7s)>sv65Ko5jFca{DRw?cCg}JSduNvTufH45gS37V@>w&Ew3klKL>aLp!xbOa7tQU1ILX4eD%qT7;IjM9eEy5ZnR=w^)Q`cwnA1C z(-eYi3fo0cSu#`466LH}QNj7~5?@|zb;a>)A@Gv{rvWryTYytK%5Ni>r$|4&8i##! zFh+Hny3=U=Ho`iBk7zm%UOaOw;-U;qqQ)lRm{S9b8O^0W{Rff19#5YI{!_p!08Rf* z;FOMvix!OI1L*sMcx$`yp;?)P>qrX2xON>;`E&<#o9m0~=LNt|0h|HQbT0)?>D7Vp zM?QisUP`xpy^7D7={QJx@AX)}xBduDFzBJ9ENn3FXNgKE=}8u?I4T~Iz_4P%5gr4F z>G&qz=J&7Oj4zj7(9eTDjc@-0{EvXY05pFHP(|z+hXy$Z9_R&EVRY41Q&>i0zR~&x zyj2bh`UdFiJy|Cz3}c}+n$@W6@SaAWemn9n;9o?49q>y4mjg8Yhk#S+3gU-M3C;)W zex&MU8wJH&%X2mgjHdWM`b(jj@WY&CkGx0;IQ10{X3@!4V2R$N}M*b~jajch`b)O8KL|Dp9-Y+ey(ItrDZ$4f0Uo5~<)63^7gp(|TZquoqg z>Yv+b&-r}yfUfTU4*-7*@Hjy8^&D_Y1LOQ3Ay4$PRU5ZbmoH2}T@E)|JB^1iJ7M>N zs;m`g?4!jf7Dhe?1G?E^MY>~wPXZhR&~)blr!?5OZ$9x~c6 z48t;)v}Fo&LpgRBo;4P8vPUOQ;c1pHj=x5w&ri0Y$j@ZpQvuTfl<4{~d~Aa)Zg?X) z)cTDZ)ed1MZJhD5ywR3NJk2DwbT+4gA>{*ld-~Da5By2M(*Rxmis2tGca-0!tGDO# zH?Qv838I;fw`qtO4@d%rlQ{lCepa+%!k=ZqSu%#<2BBcW0_Q2ANaC=YW(9ONbbP?7 zf|kQWBoh%$3V8AfhVxwb7M3g3c+LTEMk_|TY?SdXq9Ffe$V=yc7VrxJmjHBm_W-9f*!vPmX%&=r3EB}=U^~69?Er;DY|AjpRlxK=aWJoKkZzt_|GZ_Tyub z-dAF1J4Fp@dwr|-EcNgbGy)jz7Lx*~?VpaZ*Q!DD_OM}~vpX(=*OwqB_GHg%oSc&g zvW0U$&YKMX%E`0%Xju8{gd9r|9#D7lT#V@P@^V<891dR=F&t(|lQ|djU5szB$y)p) zE;)E9aZTAqr+`TB5mjAoJ-vhiKl=b84SC^OSR|Slw3Rjgp%V?X0xMrlJ zXQEQ~+unfQyirAZoxpDZ+yu~aZW-;%`IW#9w*9Ol^;0W%Y}^op&2Hb?c`~hXsf{0E zyU~{rl=pytE2szm+N$uY{Aj&7qwP-H_$NZ_jj&=?YT0n^cJg&l8e%VGq9Z`)eqZ(Q-W~dC*sO+{(LzTT2$ll(bogC62wofJC#HFM zX(g{fbn_GxH4e_@hr^yd0n1uINj;s>Zd$a=JUItQAkte)%V$w{-MtGxTHclten8ZmQ4?Y`mh?mA_29=lKuu9d~af}}D zbDHZjzGsBbccHO3uAKq=EWi$c=KCSwl)8iZz95JLqWPxv4)yaH#rh}Cd*FDdy3=fR z{jzDaT`Cc&i{@;E-E?9WY7ja)984tBC{F!_Bgt~SvjW~)iIj?zNWrA(Y(&Vj;bfh2 zpT~vXl7jOoqi`yyl^t&mwOSeM8kF**{qn?{itTtL@F{=-K$qth;FNX;=l&kN>d1E7 z*MG=#p+~N+J7{lQ2Y8SU+q8WJhiwqIwF$@Bs47U8KAaDSCj^~YNeHFBv2pc0fgzwe zXQyx$nzq6!2w4>82QV4{7dQxFQ|xR+8_IBe2jjvwm^B;*RI80;@ro#%D)ZOJ?M;69 z-Uk1=orRk*w*%4uN_3qy$oz9ex%vi%pn$ibi2-g3hr(!F=q@HsiZKyI*N`~CY4R%k zuO8vr@n1y=X0m{vouIAx`6BQh!0rDVepVp@+17y!wHR$J##8;-@dCol&AuECgN9yb zgx=3-tfjq5OdR5w;2q4#!wSC~wMi96GTQK|psC(Ohjoe&h!O z`a3}@k7t^ft_OZU;6VVfN%Wr|>+>>Ykoft!K9+QDUmCbN^|0><)mwJi>gKb*BedyRud<5qi#4+%?OJV9h8^6S1w+z-)^ncsD5>v4JA)}MB!>mqoT`6n^*mb_e%!e4- zwlIgALoqqDnG3<<7n$<|94f`h5=(@^3Aa4^H_W_Nng@lv58@Nu-25IhzeF!Yk>}=4 zHBXd7R$@ewPn+iVP3Lk38)WKq^JEwTHk)s9^EFeBwx8klQ_|ea@MOMjLbCEhTGjDr z4>zxr^x5;m+>KWSm~dP8kjc;Y`}dX1L}k2&SRLk@ruj=#zQ9^*y>Bu%pA}vjOpcVJ zQh3=Fhe&aNXt_swuLBOo#a8xJL}o+#i%;FfM) zP}_6$_&%VW&Yg*vc5BhZ5gg}-;yHRT*bg}c$7%bvZM<3ne;2PTnuw1ULmXRRqc2P- z24U=0%_EH2UEtL}cu^NG3;u&AsJI-SQO_az2DD6#(Y(O%Va(oMB?7ULp@qQ3b%H%l z!a-F|wnGzm`Xc9iWrU*@rCKF04D>q9CiR# zDR>XrK>r7*=GHFNuTNR9Vw*a^xQG4Jk3TTsIugNM-1u8*4b<7Q!Fm&mh`5!aa2Ng` zRm&;-RKAec5w}x(z7B$}9zS0I{yN}IfaYsKo6px#`j|iug?j3%6A`}#rpfrvF;e_C zVmy)wC({Xet1vGY7zSvX<-$f77~IkG1lCR?@d}fu*@90oG2>IqG+_!iZOmi%E0e!R z3>ci=N2^u+o8$ElRndh1AN&CEeeoki%j1ul;taEc;_3u+LZ&buHqA#(SszC&;%jG_ zR|qs^(2Gbk>dS>(=F=2Ja}k`7iDo4k>hNvi(eGE>wZ#?O{1^Hy77RBt^Ir5w6MY^3 z2fxrolzQ+d!kJYf@E!0<5ebonEgLW{z0b@KSlsiX-U;?nMAkv=h>OK8m@ETM@kN9x zIY?s#=C=_j>OHo7FJ^0uDSyT=*~fGp;g<`TFfDAkiAV8eibKFllv975S8di?b>>i4 z4Y&yD9GtZ(IPskzS z7pg2@qYW%N2bBfx>3E3%mVRj%-Klm=m{$eq zm>*Gs{ib`8xmH%t`ya+Cfl+R>-AoBYf7ZE;Fef6v|8VSEVIWqyy<#0Oj=;;)C>@^Rx9eNbZXG<+{P->44*(tl=yv@)a7u%{w@q0`d{aG*HigUS zz|bTt_C62Kt2i%L!wO<|FxQIlSPUI%6d%Fo`imvx+cVSWBR{do$2j1V0aF2*k7I#T z(tcM1<9M!thd>`2sX_tq$0nTyfAdOSPwvo_SX9prj_9d;j9EeXk+0sr-3$CNz!LyX z_if;m?p*JWy939YqMw4VfFU8YzsRs3ScVPsq-PNc5`ustPSnB`0c`>93V2@$MpuNf zbg@uI%m^sJ4dXwU=)~KqfT`3z+vl%sQc*4^0bc>=1Ze&)1x{)3xJ}xRVk^RAtk_02 zWK~h8K|wch8d!uT{010U;8}o;STqiw0_?89BtnCGP#b|E9F(urJKy*mpRZof)$6)H z0EcV7kpgJG9tN)X3eLsfa`}<#caj^7Yg<=r9NwrLJ@guW54%HNMKyS}+KA%s6k31Nm@#4RL z{}u2LfaY`TF+QK$2U(}|=ac%Zu69HTWh%}9dEhN0W-l|1AA{Khf~O&J1>R$f<07y} z#;fh2R+9W<$jp`D(I$ILj>qaMctuo>Rn8gPMUstyQ&LpaBG|_yz>8{rRUD3DlRm*_$eUQ<6MtqZfnsuVRB`*1%gP&MO6i zW*}@#R=_1Al0t-9rA5L^Cfe`9+wcPGm=ZU8t)*K8D1Wvm%=XPi*^4t7WsVa2OYiM zc@lUp;6;Gu<9EO*bp-MmI4;tAX_v2Azf-BSGF_{&C;trX$qReAacT{pVR_+Lr~4G8pw`~-*8sFfR?BR?7k-va(V z;O_uUuX=`0?~x!*+DDXcaVLTRt5*bOIxa>#m<}K_ekt|UA42nvBfVKZ9xMAW_9w7~ zAij>n(^d;+>J&V0V-#zCH80?J+dNSSRt|*|r&BSFF3`{8PW*KPzX5O)K=bzqa7t}~ zUhVCRkDQ+&{{>39nd!O&J*Dew-8tdcUh) zGO%VnUOTz|JoN_1OxN?uJBC=Cfkp0Kwf@YaXE#EEP!B=hIuT|jlX+Oykhi%FuNb@% z5;}Gd6Z+A;jAOj$jfAdkBg%ir;1OF;+Ev>C$@S?m5LT&mr)u z*U^6j{tqh4tYUd;fKwW59ZhEjP@J{Y{+c(zSHfvRIX;VEstBQrSHxnkgg*;s6yaTx zrZ8R#z*PfUK#iV8jKZltKV1Pms{hM?UkA7Wpyk^We6Hi}>${fks;!-fy3@x|D|v6= zJ?1ku7`I?bt3!>$WrJd~o`FRfZud1Bn z`XG81!~pN<%RO?7p7C|h*vIQF&fv?Lm$PAiL+!y=86vPlc63x$MFh;@jgBE3u^bTq zCohL%)9TcyZx!4<4M();+la@2U#xL2 zW%d=&)WN^?N@icf+$}+#o|!kR5dHBDFleq|4G2? z0jnnTNiA}WY!Jf`Unl_|0cfDph*lP@>iZ_b_vA+A+zLm|6LaBPFdNZpsDB?r2gAQ- zhKKP^ngG^o8@-|lQS|Vp z9gE(tTPoZ!39E^o<8fFMq88r6+Ze(7k>|8P8^1V)9U^38A=L28%z1@5{?(0m&G0IY zm)XDP_V2hHmIzzI&B|DP-ibNLNZNO^%5klx|1hMoDl**eG40#1$^II{d0cyQB)7vk z8!KHNFUgH_hRbQ$EScfCw4qS&urUW9@%Ac=4v3*?!Eev1 zm!(+5;7x|~o*yA|d78k!35zw+ZC~&6xd(jc`SP2SaZCrEcWoGf z#hu#xkz+Ld*_!Fi`RhtD@>TmAvO{05)@_JBW{}Zv`np-j4PW=yVyopH{)`ajz2rz^&VP2?}T%c88``Fz{6YRy{*}Pj12zFP{fmRo^*(W+y?rfq-z!%7-nQ)*;#4f`7kIx2 z(XE8ehF+PA_n;EpVF=w`s+W~UPe8vH`Rn%c4)FH?9{@D{isSt94-)sgX?5qy9c#(> z4XtSBR#F9!B%1GIh$KDrr_A^^SV44DEO;bzl{RMO2p|n^oERN&Pm(LmD4YTbIP2c* z%cTQ!b-io{eh%QgfEVIuF#ltp6GZK!J<}{>>MR`2#hEjV4=^-w##~0Z;`afa-hOoc z3fw!M8&QBR|1RL_`-7ZMZWyt4)yyqWfNa^gv2*K^?U-zFc4#|1^=6(6QyU3m4}0HK zI*_MuL+gCQHeQ0S12lm8FP`GFykn@PA{49*pBb7Gaik%PR~cI&JC+<%X;%#qi0c+n z#~komd;{<7ti>UdBz$LGy2GOuZ?vcM3T=vCB7Bpg{Y# z`f~0?`LvwhCwu{7Tmf|XzX1GyU4Fd#vaj^LY?q_#7S}SeTTH#jHC}@5EM8yDr@(om zmd7!S)Jew@RyO2>E1eRoJ|$fApvDqmfe@ycYV9Ppx$#;+9x-Zb0eM&mYXQkJYq~Qd zRqm2B0LdlJQV-I|lO*sSXsr5060XsRF~JMMtE?zD%Ve&UrmEo%-YGd{7$kEI<6q(Y zeYi;)UFZ06c^l={a!D=Z#z;UDK+B~Q`2RsJ8{vyi;TZj;ZsApit=K5Q@c>r=y3I8> zWbf9LCNa;td?@CG2-Y?T{SD)`6M_l?adAAm2D)jFHR8-1j#$$l4R4n-@sGe3bFN>G z{oqsY-+o0rFM>ZeK$oKcoKo8$`|Xcx-!!=`-mzH?JacFEE6)Kc&qH)c_5(VIIrR^w z@rVZvs)c><&{70GYH;j$N@90- z3&-V)412_>x4Gp1?^W}0=*Xs1QjQpHEQ@nfR-LS$QfhN+vb>**mtjP~k?wLC`hS$2 z31C#!)%f4L^WMCf$z*1dNitaoB!ngG10ste1P}#8jG%ysm;}P2gv10Ct$wD~g}M>f zTD3J*Yq7NzTWhh^O4VA|indy+R%t(5(fTRvrt^{E7_$Jlj07WN5Ul{^L0BKiHD_T;y^{@6ib3g zfojpaCH`SYx-qx&tg!kKsg20DSjfuAAPAO~9$Dcej`J3%neMFm>PU}@eMr?KHt#uV zmYS)dTz^t;Sott;j7!Pg!ZP=8%AY2APq*3XBVV}PeW4!5h7&eCv7pt}Mn>Lf7mhC(!`vm?A;(i(A5Z;1Z4Nbv%p{jm9mifOJSCN?<(bv7FlDQU z)kTSQ8Q~7at?X1v_C0M!er`*}clVsqGa{$DnbM2w)P=5Wg2$;{w$rYrs>9rck>^5c zsQt0+G>5*T!V7V%+33D)hp7iJ&?cn$g;4k?cVKittk|n00Ijm``fW8`t>5qd;Qh&b zO`N2x3ZNP=@Aq(UY5C=|S!-p+`m0~>l;YZ)X{a_q&u3Mxia zqi-%GG@GtmXFJn1PYv5NKi$wX=h98!+ktxk!_VB4H9t26ak$H_KJ;F=c9rI*Z`0;_ z{%Q1632ttXOZxOTW7f_x0#%DAu#FHJu0}Biy>N5uvuhBIq00F!8Zd_9?oNC-gy zGFwpk1=~H}I|Dzsl)A&l$F%ILb|mV4&n~)yqm_qDbKKN$mHdevin=%QrlrUs={u_` zD7=XMJN_HneT9D(f7Ny$wV6)yHWK7p^*y`r4prRZo)+^;9j@Dw&Z*tG%vN7iD9avI z&b4y=!vkfA?bl%AJ?yw%k5ez>VD{^W!FK_V1!E&4l+RyDuSXf3nP)ez-w=q_=Uday zx4J6^!M78Zy%cGM-62fcEw)b{XJv2DbZeI6-cJ^M1~3~i?`I#lw0!y_OrFt$4o-1|C>r&@SEO0Rq-jQ%k zG+9Evb|UYOP zQnid1R>b1w@9c?1T=Fs{oaJN&5mi>$J+{gNlZ(cD^{UOz@$Cqk%A7!`r@yIN^!PL^ z&5h5A;4Q!!z>Lo>aB2DEd(P2wOje9{#60_i{P@BN4ACzg>xn8Eq7=gs!&S*+Pb?_q z$YZB07$oV|l5mEC2&GdjUWAu1gLi_rFp74Vf5Fj!vIAc<4~Y~RQjtozVBkzFyRrn2 zP?t-#fu^tNenggOK4o7R3_cc^0GNKP2);Mxm-)<{W1=?pUBdlKgS>IMHQ9(F^yOpQ zdSU>Hx#^2ko)Euigk9T9M5(eT7jAwdTVcpgZF7Wrz}%mjzOMP(4t=vvJPrO5um>>w z{R!M3=YIE^u5&l88XGWqdS~leiJk0hY;WH%8>{n1KO0IqI|4QbphcYCWOY|dJZa3X zMAeG8w8%Fe@ZenmAK6oK<8(CmiNMK#;p3aZ_eQVYzwVXquGj&6f7k4|M;t@ZVKYQ; zgsiRAwan)fzWi8E@WHDSf6iIo%|UAH*tqBmA?Chu^s9_P<0 zE=`;u#Ub*@C0swD7ZuK(iTH+cdD3&Yw^xtnfq+kW-?8P&Dg!D3(~kw<(o8?PgLtXj z`(D?&fnZR1&yCN?oSiIl_Aab()y!GupUatDfQTl=QxYu3Flhj|ITKi?kjc;zIjWR5 zE^Hp*oXkYth@#G~H7s;@e?#-x8}K1~{s{b0;0eI+xhMGE%t!OtpHKe^3$y9$VMeQR z84d=7db5hKvH6w)(XXA#xyeV(x&8zA6>txz4_?% zXG7UZ{oF=VR>_fMTi+fi@0dJ`2|bjCvuXZ){(Px|GyU7x zw+D)LjIt!;B@dJSJw`M+>61dy$Wm%zOt8IVD7-<=^9O7PPe%}PifjHF1Nt&vXM&#t zd;u{0Jr#VPU%n9OVo`fLRd!nm5cI|3j{g=Dio_Pr{exp|l;a^$!VZV)PP#%>;^9E% zK4eMK1r1B2hpT#iQ|k>5ev>MgQou}jH{&as^_h&!+8aYC(#5V@W0H!}zgG<|YkCwBx-g~ILCE*~Qyd63+ zs0T+9KN|7f@HVWUb1#chv~L_Pn1oR2KamV2z!EVR;XZ_fqtu{K@#V<1;c&rusw=fg zwIwM2QcD#NY7E6jXGv*0!;O0*kj?Q^OXB6yD_;8^SAqd&xYyZfx?F~PLPd0x{B)Cd z+U_IL$#?9?oY0Ap(^Oe>S$MSjqHT9N14Eroz1dMx_Xho^fA#cF-lumuF;74lVEUg0 zm-c2*U)Q`>v!9s$&oXJf8aJ}{6{Dz}dxve^K0*WEPQuv&9oN5-QEZ z)o4P=XSwq*Fp-|_K0TfdO}Y8B6nq`90Wkg84lZq75HGQ(U%Z4FPw}_$d$8NS1;rYQ zkq1MfUz_`pW8LW14!|>to1qv+%T~k|rz**IF}4)RJ!%&YODrv!RU1o($0yxnEagp2 zR=TBKs;aI^w1g`ZN~9y4x%QmU|~%z>t1^ zH)~f>GZ&!(_ccE;MW*AMvR54jOa!9sOpG5p*7v!r4h#>bY)S>Lvk{hZQOGO93c~R- z8h&EqeBXv6o+U#Zu*5^wqrMOv&Wo5;T5-lG_XZQPNY0k6&gya zr4bYsl9THZ4&<1d*R=#_XFU`7S=pq`gaMqwDKS>tAAa%L;B}ud+4=K z@_~12tEn;;?YQv*Z>XP#Z%LNxVom@|d zS8;kO>fZt2xJbb&Dt$3RquA_llOLWaW0q!0v9h^ou2CZ>{ff7nr$b;yx_6UjdrLniz{;akM%h03;HSRO|4Q^6etADI1B}sX5pa>q@v4Py!B6i-o2gjFQ&YW0-o<%8B6@X-MsBgb9} zej{)*VEEVrE-n9kp^+U}Ga-jb)625p#YJN(s<*ixV1$dJjgBOc`3a6f55j#kj2a%Bo#S^Z_%XnI!0>w) zxU~HDKfieVthKW{TgkvIEO*>4LT`^POXDTHi_oH`aGXnp2A~>Fgv+@R#1olnKc&}v z1hY18H5Y8ugCq+%&1+$3i=ro}M(m~I&=&Je0jFnl1_$Np&^+b;A1*g}U%fS7oukem zDl>QsF#1#7uLJOH)TE%`P+b%sCyu+JtuV?S@ z{^Ix_Ukv*n@7VXUEayI4Xnnsx@-?Tz<*~ZrXrvPN_;j4&sj9HiokNBL_5iYwOTclg zXnKU;DM_<7lI$quYu$C^g;w%enmuA%B#YjBd}M;;nJY*onQ29i`V#-3ATc-`9paW2 zm${{01>t&ws}?(?tBc0?-_v-#RE6SUkGe!v5&5Cwq(4s;Jr63c{1kPW6Mn(A2{s@a zaF{dMUZlQm^W!nwJ^^K+Y$&@P*W;F5lheP?178lT1kAWS04}Zk$9lZ#cYb!<)^s+v zk)|oI8X!iztHp@BW7`ySVprUHpl}?A7LFW=2xfxOs43J6XI}ZpSVeRg)*uxgFv>}h zx+WcoW6Cd#eoRjaUgyVQ{EkRWsi!$^fRipPl5di~w7!_|q z8%ggwo&cWE+4dkZAo#x-$#2k=@{j%YjP7^++T1!g3j9RiWWemO#feA>cfL56{kL{L4HJ z0XPkix7(lOE7TcO1l3}A$FrK>J@8}pnfJj%>+p9048N1X{}sQhTl;hT8{v315cL6$ zUts%6ih`m9DKDi)>);!9!0ICWU4&yUF~qM#DYq*Y9pP{Vf~i`odG+Z(r}^CqKW06C z75pyX+koNs=JlH2jy(SEYgZlJN#$~XOMKm7JN%;(0qBpOb$N>WLZl*|h{sFCtl*`j z&@n+N95GVjuCS_LV7M+^jw?-(#8MV|ULiw$HnALS#qrdU-Z9~Dg;<>_6qP{wjIWKK z5uOkm!3k{_wtHt6e8HPQP0ZumO_5lk9ls#H&|T!Vsf`qrQ}M6Z@tesEMRHfjdUx3T z)9IyQiq&mUV~H1!`&8VGA=f=NF^EKm4XA`SlR_?9CMrd!@|4U$zt2REif5s=h<`W6 zUB>^nxv;LF+}%o@F83R@uh}8M^~sQ3uexon{b+`L1JkY-^f>Ql9F6^qX=5dUG+@Sg zEx5FNaRtFRFO-39yjCIm{#GLL=U(MluN5)SsY1?m3i>&zV*Ebvd6GJ*Qfic_pK-&M zmsKUGt}4~2BX;E2cx9r(&AQ`aHM+wjSSX50qRi4*nLE_)%-goZHYI-3+D^9nSGpfN z;j;!l3B)=-2q=_o?i@p3ve4?_#VDN^F1+$lRkRWXZO#(1b1X|401PqY~QQw9crZHZk+pR z*t#b@t}LFIgj)ieC@yB?;fhz5)u`G`sNBW3Fwuw&Vu(8`1 zJ<6N!o)}t02sIV|GBND7)rp3*=qoBbk|?W5*^pc33_;MTl3L*0D5f;HYDDPt(3--T zoOBZ+ClH)4lo9xu3NNzXvzXHb{~kRKTj;0RpDqLc3UCWx#^Fcc((=g_UF(`x z`?`T%yU~|JDQh9`?tg9TKuN7SsyLP`!vl$Tg_?Ghn=nG_Pv)(K_s7rqWucC_Lwm-!SmeBP`NJ3-_?;-HX(oZ zFv;nMDRaI$D?A2CyQ(BZAfuBaomzMVRddlLC1c5(Y;r7)7Ejm1{Ja=HCt-xTB}n?n z`SiN(?*aN#Lw}^diH*t{3XA|uf3E|VcIA1xzfT7KR(<_lb@b-8jy{ht!Z{yu{cGFx ztXFPto1aIQH23Y8bt4gt_1tPaH27Vd6@MbYGJHG&aw$cqT&dngb-#gl{wE~RkFM8| z@+uM`n{08oE<-(e5pxFAr6Zn;8L1AXCUqd-er?rromU-aru&w1 z%I$he=$40<%Du>M4R7jx@26j8|BJS>_W>Ee^m`n*w0wChYe=Yd!z+HghjJxak(T&87)`(Sj;^+RN~<8Vp*gxovQ}>msrND=`GFA_JE%7^E2?>z^?(r z&pW~Q`S>|BO~B_fbmM=(P}4rm&y=%r<8uP|65tfT@Ut%X-rOV2rx_nyPS$s=>k`|K zpIR_oGkH+Nn!m_eP#rf`omeRfV5%01-^Q+h?hc-7_RXJxKLtDo7`p!lE-jxN+OpQC zDaUumlM0RMeB{nGwQ3-nkf+9=BpQuY73W97s(m3Y;h_{7UBTZ5MvL4ec1w9R^U34* z8&0;qeKh-y9+$?>9Dgm~=K>c1hQG(arRCk%WkdpRh+Xzmp+{_cm%ZHod6{|ya`T@H zTfMeOojA5gqES%-rN|+f#*#OHZKEnuIy5v4X$n`59vq0JdJDH{c+YkNjEMg5$*hq z;xy0Iu9O>_WG5*RKlO#u2mF5mx;;GCyx;GEKMFhn7`lG~mzMAS5(h?@6?wN>H+F6A zY{j_P;a|ENyJeHg1ZR;{p_$Kibv;RqqpAkoT0Bxr_&rHKXJ)zel+d_6v=$8fCpfvw^ z{5guhSZwX)DqnGIRq3!a+U9s0R()rjXl=-{qK1&^S?bUhBPrEm zluVo$SrjHh!?{~|#1tKsnw~f!5-SL2P|bVMv0_-B_gin4a0vc zZx6*-)!Rz_Rk=&q$SUq+PDT?0BMr`McMPfeu<5yRD$jC!z0X%(ArO30XuM0&wh)?e3c)(xvLh>a)NN9lw#ZF+)X4+G1%VsH2yZ3@g#XWW zu2B4R|4E{0pLgFTyUmULB*dyeC)DMeFCFD%6_p=vzq<8o+r!B&dIr5 z;1>d40?a)57Pz#0{$;CMS8ramiRs(gk<%PyZeI?Gp<_Qc03}2JMrRCGVb+)c=YuVh{ zB`fP-)*2VEv@TL7z}jE%VhO`q1osLKw%_oMDV~lNUHIu#ANqSu?>{s@-Ow}lfm^}9 z3)}}7ew;0upPg&;I(jzHLz{C%{26^#W^G*0u1s()WYG-D{|f3w%N0k3R=Vx+4zBHU3Y`$atC%01@tBvmK$MMErDO;|ix`QG zs|qJ8$#k%a&NQm~lrz*Gz_RW5r|wT9{F?rp34S(k9$@-&J-D=d@oxS4 z4o=$E0+g+PMX0AVHcDioZ{aI~KADVYs#wZ4)%g#XAOENM*#kYp&)>m60X_|Q5Ki*> z%^b?d#?5WM!AInVGHXGZbtfNws|o1LJvV1pY6U+F*bJC{-v%x%-amh4kcZt@}CGq;8&zq)8@Z zvQGGti(lp0f2`FV@X-Ms^FA&EzYh2cVEA|rT-v{yADWMj&Hllby8|yEg9Svt*y>v1a-7 z%fFE0a{~BGU=CpTYy+2O>?WU$LowsEsq@@pTYXj=+HfKk&*-ulaQjyhMxnSS)ZJIr z^H~;G!_tUeEY4I!6{bt6KY%+DTwNl?ya%YUp<*Ma^w^ruUGQPX^Ecps0^R`(pT+0@ zr+iW|Ql!GqFxf-I!$C||!X%d*pGg*CJ|=sV=C29*X5M`P{4(GQ!0`7YaB2U3-mPBW z)zR*UL1b!fvzdDpgBZnEsHFsht5*P~@{uY8u%P()4_uSIFp?Tvf?Z&%|DOm*!@#Ev3F%be@`kScof*PmCW~NAuSUeKUTKfghGeE`6#C)isD~GR zi=swuEhaK_3`BtqmqZg-YFwgwh*^_6LKD7paW>LkSHF+!g*iTEfzJaL0EUlc;L`HF z4|XlXM>=~HUiu4{S>N~7AUG~c@pOs&3~Cto4+?9#+j*|(|AXMWfX4ts_j&MtLwC() zKgCKP*~dSRY*Rq5ygNs4H27rT2*A*r4=yd=c(dy<Tfc^EB{oRz zKTcB4iF!08^)l_G?GEVQ#Pdym?*{(~@Cab&SAX$e)6Wslbo?WPz40xZAKw(Cs4sVQ@ngBkC_hs2M+0xLxQa-5t~Ku>-!%e*H!8tAJ|&)31BM zrPXZI@?QUXf$N$#u5MqmMt16^r^NK@$voyPc|A;VQzwd_x@gJIPbtxmvEAutcfh`*f+{ z{YuITH$D?)>zf8=17qY+cJL@8$xR_y!-fzn6^)!g&8IS~=9n09aV)16C}|0)xWoMz z@EV-L!m6Z4R1+N_ZPyNk)oz75SFNyzIasWPuiXjVk0;^N==I(Je;3#fn0_4bCEbsF z`AN8!N~*d(@g|e~ZG_$N!w`Z+>XcyyN%xIQ}3b9_-igTH2v17Q) z4H6|eD;ba0@symwl|zGTpJ#X3owC7y95FE$@ZV6X`QHkEW?tL@elPF?!0`VPxU~Fo zQNTa>P5OLk8t>GX{sPMW;+2mN3faq;7mg@+2uLd=I%gdEH)KbAMqv#(Xt<9kB?0#9+M!ohNRQXaF9xlkza7_rf6e=yN|--Ie&h;QdeV!Zgsi<@ zExLS<=%y)lSz=;>c~XhVuBwZs zPl?_7YKWbr@vEGG#bv-hLe}?*YeWE=~#6_IlqxiPe6p2$nj}H zKHWOsYBArr&c>h2X&bq2P?QQKfCr{ zjf1?^9u$qfTjn6~%4}pGel056F{!3A4ntTBqjrp%B_&=p77Dl_Gup|4Rg!#J)tawH z=$d_~4g6f-0>JQf3%E2>->H8-puY9uzaQVRPnc`GOIEU|?Hd2vwz}DLaNxk5dN2nm zwp50>0_%H8g+F+6uo;aBIO`aw`Pv6v!&hu8v3@`uVEDQpT-u#Mp5~*2deS*PL$JSS zzS!>SS%WfMcCoPei&lBSTT*Fq4;2zdTxcB zPW+4)52g;#cs0>gRd$4M*&;$wk|8$!p|!HvIx2%!+9d`o!wi(e%@HqIRB)(q*|&(<@ zU#mBu+s$)pc&@DLYrwAuz7o(9if`tzW4E++kr+d^)YVqwYU`B(5?k5?PU0CA#m!Kn z((&N-G}AmMHAMIG0M9n_A$hs7h5;i1)6X_=X=Xk=ly5$mWMjSdi`pUZUDhpT9ymo>?SY3%3h8# zIwC<*r>Tj~&lN_!Q^<5lkP`lB!*xG)!KdlRtKfeC{s@?U`~_T^sVkNZ?6;qp*K2Y~ z-_lKsNVL@0MoqP9HEA?*A+aIWQa{yFPe6AH$_8_;oCMwktOg9-^TDOvnJ3Ru-#Yi{ z299KSRP-(L=c(pJxZ61Z+$x40j>S_7tTU?@mi*LZoXX2w{ZEiW@&p660c7k!3>TR2GP)BB*t%va2 zLMMjbhj^_-urZ==l8iS5%1$B{rw#5@tJd2#8nXsrB+N(b1Bo<%yD<0cosF@j~N>mE)@ItQAtHk z5iO9Jq7-Q;L>bCX;h%aO$D=u2ZX^EvjKv&-EM0kfx`_$;^sxNus>QuOo!O=MdacN&bKsi_epIm}M@-03fpyKlINs*fUY{ zw-x$^zq`SI2s{WF{$2+E|Kx9$_D;<-ErZ9qd>(t1bunIALn3U*yh=GrV_t|Y*zkB+ ze;#)nuKBC)$?da}uX8c56fpc<2QF=EkgqLr&7tGhyqZg5>#Fs-+*gnNGJd5bQ(f%; z{E{CC)A+n&y$E;I{YnghKhl~a`W51|Oj2d$X+^9M&sM^lk#?lQ&15H8%TJXYR~1^v zytd9F+3Pt}fpOc-EQO&dn*V+9XU>UF!OO0}_5&FH7lKRMbED>aUr_(hoD+I#9@2#! zx(h20?!x`J`WGM613Y^S$hsn(q&u`^>oGYLLrD*JJ-lOS#W!?$`KR`a`aDQ<@zi z$cr3Bt|Y{WKQ*z~z+@E>JqW=_7Nnw$lU8pGK2=8%8Io|+VPqpX%4?W7(>odm^2zAV zxaqifFuRmYa>-Ih_1#*ML&^p+Qe6<9s1_ibo{BhloEls(SW?#Mo%<-=-yZtYr}qK> zA@Cqz`ujY%v`xXex~E?}hJH_nbh)ud4%H~8xyFZVYajirW;UhNk$#c@Ox?o3IEsQE zXB%w|{uTj0HP_|VfO&x7rx{$@{-BOqe|esm*r0T2%Vy+df72kZQ6S6z*tV|5 zTP-*4qxr=Aj@dP+XNf`gweO&l!m;Lo6_O4PHD-kARBzBPa zNzbX~Oem-(ekqg;lYY%To*;aG^scf=5Y;aGg0#k&n!o+fH~Vb(24X;f6kzx(2bY%5 zE)9Ra!&Sgw8f!G7;xX2bOHIXJ^nOT-y#c+Z;CZrsF9g2=*ajGS_XXb@{~+^e-j|dy z3kGCnC#kXKbhNKpCnHnyRk49Y2Qe~_qy6(o29MPkwd>JF5oDuBMG+NTq9mE_Xoct; zjE3al)Z<~@m|Jhf;MG7aVE8){Tv|RouZ)NAB`h^AXI?kRnaw)eT84)s6<~@<>Fh<4 zwYd24>U>v%`OY+Zbihh>w&r6ibj-ZI1^ipUcL2l3Q{d9_`Q^dKtiA=-bcxKGQOue} zFWP>hbNnsvEv(1!Lu`QLdnc_n+=#Aah1viwsiQR?sjuYb$1w2mz(m0CF$-K;etnT% z=Of0pbucDr-@m_#`@^C&)>bwix$=-MTGZXka#j}BcR;^~=bQO?7x;a^{eYqWDENOy zzeUrZ6xetcZLn^Jerb;W%7f|eH~qgU7hhZlJ`O#CX7vH zquXJ>9J<%Gci4;kpI_8I3Eh0~X7J;>2m5ELI3}JONTRxw2lx5`(IoO6E>Z}0BSK?i zIQmp@77ekHpr?h2d7aMe7X7wVNoNm86;lU>PpUo1j-aZO(XxWsoLI>LYzS%YlTJo- zoYZrQCtOLJ&j0UU7#>t=Zuky6w8$?+-ar+RAWWXTzIr~?d^I;7(#>G8EQyvIeA2<`Zo>ZaNkK+zli^7WeLQwTcMC1|vdrA@bM9BgI zVtv~c=~~ZLgD@5ZgC+xUg66jye$0Ej68tN`Er8+oL2zmP-)3ccTN zz4p-i1(h;ZwVG9hqTx~PvAfe2O~ayFU8{#ecVf2@8yR)l(cGrpvP7v{ITj}kbXvo` zk*s=5suPI@I14)fEJ~nx1tu11*Sn$V;k0{ypMPQFB0X+9;meHMGvL1l_5gve~hw zqj#3s$9-Y3=Bx2GO;_e$Gx&O-4KRFtIru)`e(m$6)2}xC%HOU(w5>n%F;z#pv^rrX zNirZRP5Og1P+e;qMs}T~`PdWC@z(+P-++GrhK~YN0n*I=Y(C9CEnZ$@Coniub}w&u ze!0DS`GV({$E=f3OTHMME2f;{RB}Att8j2Gxft{);4gBrroSwBzR=$Q-UXZk82UE^ z-y6E-)6n-Tg%DutUjx$F^*GX;M8cLEiL_Su3%JD4x&`9lg;P4VHvDQNm&eJ}NY|Xy zEYW=Ig^syTekk}i$Oj4-K8Ary%O~Hi*|525U9Nyn_GGps9RO)(J+`KkC>;L~ObJWc z{|!T)AMEH$5(}J!JyKZO5%9APdWN5iz%KG&NxU{_I)Z%lyuu5&3 zw^33AI}HhD5Odk>kcNQ^nE@yOO6x|1;6zMbeG+c+gHy4zYMqnF#Y`wxHMyz zF#AD{{yd2<->~6e9%RH*SFzMnRa%s^mT=SB%eh#bC>}!Oc(E7>#2$#ZiigBIG*N*} zd9Ce?^ojAKX}KPk1JF0~FmoriKwvmv_?rPPtvB#H?yuKayK0fItUZ`L|Hj_&6qjz_ z2Dk*Tl*dE0@fMY~DOPHi#6?<y7km<(4BhpZ)k4_SW=B~T`p;A0s}y6QFb1RUJBz*k9l;C)J639+WrG(R=p z%<(e^{CMC*!0^)!F74t#|IcW_{l#c5uW!k!a!BD&WRP) z;Tx4K;r2$_ygHnBxY8hffTJhGrzegDNBbddwbgfQwJ0HE7|TvsM)k{RDwaW} z&Zv#rqkC7tNBOsM>th`F1mJMM@Np!#w0v;_qPGcnXq1$^Q>`Uat(|UEWi5+XX3J{P z{q5#CW*y!Peg|+DVCXymE-l~rgnn^hKT=M%i9?F+Zm^z^-f~qQ1K@IESvAfi+xJ}W z2sgbE#JAcc9r-6^q2n`BQLpx3XM7 zn*7Y)zmqpgn0Wsl9&If-+UlW7`y?epWpxL18iQy0au0YHa5iAZ^P=E;Bk!2cjjfyd z(iC=(dwsE#;OU%)6b66kR9!M+Et_uLV>6)gM#WRKN}S7twzORV{U>?8>E|2Ze*pd% z(3F1WpRb#QtcZQSQ%A~Lma=x*@{0VnJ9vKf+qwPl81O~F62SEDd~j*61?R>+tMq-L zfB#PCXcdpaOw;c~RX2&N%d#Kh)rxmOCE+~f)Nt3uE45}qE)V5uAnq-`z&RRoc!xS6 zG`LUfv{J3JG@sBn{eKJmufRuu;V+y`yPQ#6Bf^p#a<{W(s{2kzb0-8d(zaM1({`=WH zc|jLg%P!!KSUA=jC0SaDt|E6MIok`vp)|i!Hdb(1YP$ovjrZi}t^q$6xBxKy{w}z* ze@B05vrZP|7YUrr_MHGG&)_xmav&&PL$Q~PCTf^0gsS2%M8ZzHNFw_Z>FQ)C&9|=4 zo1eYxB=u-;_uju&kIw=4FymADUHo5wk$~az0JyX%&*=GE@{7-($BSDx9Zks$7LI?D z?6EJyNdm*>9brkPxa_&8^#ROQP~EP;DT@qjRO9@64GF`Y>s911C#yz>hTGK?*$toTE(ou(Nf>l|BH1Sg@7kcpx#@ek^>{A$ zR^Up&jPr}&()K^B$M>FHpFhqg=dyKl+gJDk%Ih`)%CajQs~Z7@5#~zBKEX&1{pkjm7Ri$jlyxQxTgt3R3`VBuQQ7}$WdFMu%`QD5EtDFH#)0}6 z=w=CDL73+!UeWmLDk@7UKLUFRBFx!2`Dt&v=I=@9n|b{v_@9CI0-l7kPXa$Oa}JpM zM!=V^`dZcA*5LGa;L`H>IUY<; z#-ZEZDBiTK@}t{-u^%bxA~ab`DI@vMwS% zwIZDHypk{m=LmDIrre!O0aG=aO`gB8PWr8$qr7^NtEw`DOAM_-N$!r~Ux-5Sa4I>V z4K1e%T1jMtH`l+UG;Y%UX@XzVpL4-41}+0kf35?UmhT=M%#(xm*mQ#&2Lq`0xa>UZ zX;P+U#cxm~p}Ec|qZYSz2lV&yd_(`A;E^8?`v@5N8Swvr{vyUR9}h2n9uJM1gZ}e; zL;t_PzYJUn82UGX{|EG!b|RPMW8js~VPJPae=pBBa>ys(k^9kq0fv4ST$;I0_1A~j zk32{Y>C^Kz-7CA6E4$Xqs3)0CDOF5DeC%&=GT^ggIc}7KfF6st#C2<#C8O0v6e;N2 zuy&lS$EQ1>FY@vY;Jv_|fZ^{a!S_Z^HlO|Gdk~bGX;{kKScR2q`R{CNVlB%p5|#{3 zT=kt9#9{ls9`#&6jpW#Kj^-nR^l9ExHTV#q9x!}N1($Zua=qUA>uZ8}+OEagbjMk& zwB_4ut5FKDM3B`gxfu@>ZRrL)fAL@467-+vn)h=f_}745z|j3JxU_tFs(|jQKwM3C zENhQg%e$3K_LD|GA z0-UVVoQs75>*ouak4EU2acu?P1Z)8eAD4ss|2~ip?g`>%%zXCwkfNJ@YI>*FUhI2Q zAInc`MKAgbLSLpap=0rSNzNra%v7`00RN%<=ssWbu?ITl9`qi#+DR>R!0?d;muBRE z{_BePIV{JkR<+~T&WKFe-EBW$KaT|qWGJ5n){5Kk7qaITlcR&`@t8(zw@3}-9kS*_ zp@JK@bMBek%-+e{xCh%r43R9i z65~%if=-}@{3GnO5$Z3y#Z^wKFg4keo%THEX&d(}tzFyyMcto$@LL1Fvd{iq`tf7* zAAsr4aByk){EDSNo3}_F`%Kf-l$x|wAUJ(MvaVqy*+C);Co+S=;qX{EEGQ$TMY&oleOr{Kju!3PvD^d^Bz%eOzU9u`UHW!urso0?@5y6tmC zR@DJ)Qe1t-GidIR-_v;Qk<<#iz<6R-Vs>2qMnzO#?Y)G*OtH^U)n>l!xLA+J)_}f@ z$4%h30k;E&zk7o3%{Z7(GahT(TQ{C9(=DAUMOU;U%UwcrMO4lcO%dKDe)p`s0lfn} z&+HGehwz04DgZ-o47jxZdJ;nqzmit-27IHKl=)b3lWo1mYZ!?z7-OTNvYU>s8KM>v z&K76=cV7~`|KR!3-^;+S2Ce}N{jUYzn|_+lKKh1u&3JkJ3#|8`i;u9@hg4$+)E(X( z(AyV0&!7L`p8%f%hMxPd?ysR^J`KIi8!2ezUy8!kiZC}57rmbfTYH1&&*lF&^XoM5 z)xcW7Jii@W+Ov85gu2$RmEEkZxl1w%JK}(0tq>h*f}jc3(RfGK6|cEekKaz7XZFu0 z!CwM?3mAHT2bX62EY}6+jp+}1V@N{E>s3D?Sl8}V6RZ^&=i!`^hS zIE+o_r?p}y&J5^7hOnGn))l9nB=;b560!0U6m%;6+p76^5;|r)_JF?$>;nuR2f(G} zlcQMQdOSFCH~B|ym9^q}F?I`mIY+9f>sKY3zG?o0z8v)bksRIS;H|)Vz|cJ#Tv|Ro zAF&VXSNVzZ`h1fz4HFS!7tM%SE4SO$5b?+*5Gu4t?p0rKf{k=XKz~>8e3{q327eWJ z9WeCY3cfe<*?gLL;M2!m(z-?Vj_mPxDz02>O{!J{sEy9so~TCqE2-vk-QVmk-5;TM zH287ALcq{l8hmf)n9oD#8JD;|dPjeTUQa-;H+Y`V`yu#4z$1X6_hj(Bp<_M|p|^Vd z+3Wpmp?w4weTLu_x__yk<@z@qd@L{?F!YWHzBhEt=OOgkQQfcE(0{%$}2@m6SXw!`ape69+`( zcTuhs*S z{=8P-5Z^-yJgzT2_RslXFL}$cZbube#T6?;DM+ehO7s`!bSToy<;*DzvG2z!V^VLi zj4ZNMg;(0*U-WgQ9#K3%x27J=@07>&_zAyr!50Hd0K@OP;CpjV?k~T~s~mfn%$~;M z@HNbwzze;=dIxFIPh0_8)TtC-(01*myf>h`gXfy}`Y8Br;MahmTmN&-*G)nE)@v{8 z`??t??hXDhLD|`BKd#=8yw4;fUHO<}U5vOwP9BjW(PxYqkYp1auhQWdRR*eY5y%*k zrm*60cap?{JE$9}onRM}@y{(S5hvr!kmBe-{#KQ&<1S=bFRDn&nPR8y5__5#Wq-Jsr3_FnZ0N%{ZgSbIYm z=Agt`OWl$B33Jt9lvyBZCv<~tQ!{hKkRef~1IhCy!z=kS3!{K#-KAo~LQT}joM(@< zhxqh&+@Sf*KB4*X-#hpTz#_o#yFB>b%un-a#=nnW|KO4LZx-|YPPOCv#pf0?l=la8 zw+GJ^x(|at4*UWzbe|8tH}uTsXXvgGvtu98pY|u3y;1kG{1>_RG6sAmFb6R7wt-9A zcfEcePxgx!^xsKm>!!_}LXREfet!qi*9CG$SS$aCkb+uWrW`rXNkLSIQ74k1{1ei1 zbh3K{UbjepE*Pr+5Yf?xgN3AWPZ`++D*@t6C!kyttdXsRxWJ>ZlOjI)?L){vCl(Qyua`;#z zOS8RLJHD#+)-BcaIr#RSsbZjzbiC8 zEJ<8ErSgn$au~5`OY8~$p112}%}@PPxqW9U_21#-XBuUQ7KP0W6k}{g~4P_L|icT(i~B_U4^H~&f|N3;q% z-Wl#`{QgoKQyv?Ze4RRnT>A3GOiYK0y0T}uv&D$$V{>A~6xl(qmYks)BnwZ5OfWo- z5N`PsKh<41AY4kCea?jlQABKiq<24_U7YKI_m?G2Z64NtyRm6~Vs|zn}xk85_&k6Wv>E^_VT* zSV!1LgxbRuq4A*#ds<>PTCWYN+?`uEEpZ+&JE^D4j@$M7*~R#qbKwQ>Ujx4h-if@K zekZJhz-%y}8$o0v`*E2c*f*eDO$Y+a)s+av=X~v9)rs z^*V8Cn9U=kArw8QO8bwnYVOedZw;O)``fMHcK~+*W`2Dy_}=Vm=F{wN+@L!3B9-l? zrVhK^%6jXsXphJmU|AJPUmvL>sOcTxd1ie@pJnWTG+^ir1(#<0jt=y@Kd$bZ&kofr zA-2i-B$7s^5I5Knm@jcS61S>3N=A=$8qnm3SCNt&P%(nyQv=>*h~eiAH# zB#4w#~UH4-< ze42Im6Yyt&-GJ%GsONP*dV{(d=LetWeFpPYcVd@)ujA{BAMjI(ue{8&9wnuY$nXk% z9r-9CKeJKB${3f1%(VDx4}SK);8nD@-9_Tr27r zjZrao=mf_t7$JJTWzKliE8*3|y{TsR6h|tV?EQ}JS2ui{d3r7QH-WnW)32w%rRDR7 zql}3;Se)#UoN+b2yONz9D6^L6$2$uWvh$GXF6pp)+aoDl!mI&9KNn+HxW-m9nZNgF zep0)0<6I9u5tsrPewKnu%cm!m`P;ernD)*_QEaeQGfmqhyHxUYY7Or~hhEF(M_j)e zL#pnRNZ(x>ije4wd6G`H)+1M2Xti~{{;LA;Az0{wKw=a-#qr^0deH> zw~wU^QU+mwgdSvw7E_t*lVK5*sZZ;N$(&7ANZwsfK)?P4-EX0P6u1;WIu0=OPYb>` z`?C2o^UtTh*>@!r4#@T|jsl+5wA#7}1_~kXq2wVahonSY(s!S=?hX3S^UeI<3H~JT zEMVxr11>F}zs1^f#DeUxN(Q(XUdDY@t6nR2rLE+Kc@xXn{hCohm1#;oV)4lB!b_Isrxj&@?Yil@loKD zfT@6?HxFD|KE0;@zFVmC>{FbLPxj6M5Ie)FS%YbDyT$!*k8~ zaVPkLz{5Zv-CzF)bd4S;({xFQ_xuZa;iG|x^1@$msg_#nl!fc5q0W9q;Ro5ZoMXtX zfk8GDro!ArhZ^=0&LWBST{Hw4&Q~fpQ2}X)Dq8PuKvQr!$slY}-jL7&9Y-jUjtr2z z9L^v5x|VY8{q$T{5NxPVf?8u_p+`qmykNO*srXMLgQ3D@-W&DjA-EyS7O^uOvXsz z75H(TzZVq^+;#s@^Hcv)j-MmI=Kym7!_RW?f6I?%Crw&lJ3B_E!$#{?Vqary&@wEz zRf;p`C^apZ{5)`fKz}>WH{a;V zQ-T+1I7C_)PX*0qZge4PqRG|hEnE5FOjhbgdR!V_&hfPb{4}5mFnpZ>?(-Gc zxy}B3$hz!kXJmX)SzGg(rdhig7j|P&K@am2Z~0H*91Q60b5)Vh_nKcJiaO>Q4P8hioJ z2pGDjflJHhH|FmPM*r=n^@Hk@HmaIh=Mr1GENkL$_2s}rW!FwU&f9se>F-0}j{{Ev zhVF~t((>9FI<9jVlaJq#elisY@A)A zsnROuF!f}oGM)x#_pG zuHlk5XN#|swyhT1+8&Z&@!Q_u`AxyIA{ueOxDo_ndGjz5vhOcAWyI@K}!}aC1rJf~o(B-x#ptGCjWT7i`_JY3)><0{; zfv@WR&%ILXXKo7OnhhP%({zfEn8A}B#q=2`(D|Jq>tctrStv#j)WXA1qmN~B##NT# zh!vzUax>LzNqZDSF+%50M!Br2ol?7jv<@;Djl1+XbU?p8;O|oKtAHNB@OLw~wDa@$ znQ8uVf@H@@_c=Q!jDQ7yBfh*Oq#M>tbHS4j7 zHcWaRw+!@DQ7;vBN>PJ|i#WMQ!-wN#kD8f(L%I-NndhxxK9l<1z1j}L@hQ&VZKug@ zwts8eRgns>SbfDNF;|7pEqQZ(uKPFTce(y81YZF(0j7Vy2bXr>5k1egJbI`;u(NeT zYco}3g8q5k>S^~=8$ZGjR#JUn^DpB2=KPdRZ)a_Mh(2fa7?Vzer%*ax@M4k$A zn4^RnKxOcFhzuxnZUDcjB4R*tX%ntTH%rJ-pem&ZymJz@+zUgJc>BvzV>BI-kRo@4 zzk5nRi~J$Oq6*im5;8s%tA!5bM26X?*i-F+p}VDv*50Rradbv>F0>kvDSms=x;WLjgl?4ETRSPeSIkbpe8xa;fTPpX?6kZ3&(y z`&1A3SAd%VL+|$Bdm}H6?&tqT|2kXOY-nAz$@H>gaXYPzd)Z-cC210;&R)mb!%eD^V$gFrbkk9^P|y5svB(eHDz~c?<=2yU+VXv_#@FZ`H&;D_K313v={zb}AGdwh%DU;EcfSWT7E zwanH{n|FrgfmPBL0l9?g&?4Vx=Uckb?l= zPi$l)A!+r(Qm=++S}_}!Cgdy`Ix$S-6xpHFw-LzgxjxgWUu%9F;m7EyP6s~|Xa@|x zUjvucvHA1gmyt3ujRz!a>HubXRV+(W)AKSoh2EGm$K7I`TulU%A z*`Iwwv*UBq0XGzLwpwnqF%?LFsOBaisbXxZREOY3RIK%?uSx>(*a1J0Kjru-2Ok2| z1BRa!;L?mesQq5yN=U)$crr~XE~zg^bOI(mwb;Bp^Z)@rStg~C zr{{pr1&#xx$JA&{KYrAp6iB_Q`OEIht?&8ZOMvBo;co-Dw0!mf_}kRJwjXnIVeYH8F!v>-ynJslXOn6eg$T%7>5&XB?AB84r7{|(MDP&u>e!MeuAnYGAQTSO zB6(xLNR25NmHIe7(Rs9zvm>z~L;3rR zR3y5PRdI5f6hCSNv&L~_ZYkf4^Ct6iX?&ymO<5}osjz_QcS)dZk@@g@-OmpCVfMX? zz^?+X0Zc!?11>G!dFG3rotylwW=Aq_mdmt3k###6*^A?D3R4_xNhF%W<<7s1kL12{ zR4{+Cf6#m!fQ}jO1jf}0pc*iIj02aJZ=ErVJ5E~HN-4r%H|d0zQsIUB(O!6|z-EH1 zgG#{9GTy{7$^}2zGnOB z>7_i#L=@b`iaO*Hf9FdV-Txi*KX|^-FMF5VKfox!(0>eE+PY)(y4m-IL)Xv2{a?C% z)4Ij2ZOtHI-Vt1yLKKH~w#dXWvWC$M>{!PX&ZoI(xwQc{^4v%x2oFhYn{Y}2- zPkMY(|D*da<5LSh1Q;ItPQEek!+e_eLiLZ}AS}09%B|fg@fToFcLdMvIOw_Cz;6Y5 z0W{WET~)mJC|2{4_(f6;z)g4( zQawjf5;apeI5gZY3D??XvfB6V)8n@+=!cBoI`DR&6EOX}I{4mr(RzjDjJIMK%?4&Fhi$0{L6DU$ch1xM{9E4E^!EhM7y565e+c{?F!ZOsugBS( zpZ(<-O@F*h>4vAp<>3n=v~&1gM0)pxlS(8d^8}RwOP$I{G>nF+!mB~m!d)W8ZHFbt zvR7#aFO3Zi-v-K<4fT_k%yTZc?MgM&j^X0uCyA4Fw(A|ucMp7-{qc729{@iB4BzMM z*L?50QLo2kw;j4J(cjK#UbU`Kuf^+JU+4aTUW<1}tbK5g*PD&cm#@i9P$O<6{YZx5 zSiVbeXwKM0iP&WCh-f%HPEEnzWGXmowOrO}ts0ziOOxTztjadEi50ooJKMoPl>CzI zUCUETud}@y`JAj`+idT0yZAa=U2daq!yh(SlW})U0joVa&zs_s!p4>Ar?ZI~Co3{C zJB5Gvo$|;zpCHDDpu!4LSqx#)75Hm*z4MXn{6jfMg__j_#& z?>`tPdH?&tKasy9kD75D2rkXcJM(GgAD@ex*R(c@W$G9|Q%%j6Y;5*bgOC}2hFe8R zttyF>%gW(!MZZQj7(r$PR&&cbl^S(?@Lu27{H%kXxfg8#zXbR)VEB0sT-u7D?qB11 zhrU-o^jf^_1HJT4sg2QcsbjqhBa-x@1b-DSbCIMPfwi`h3S``j!b#GSx(L+?l3kD% z1W^Rb3Rk&U8dbHI7)beNVYkVdsCH15M@j=|i`VYIXufOynwyW~z^4L70fz6j;L`Hl z3*??6Y&$y9#Y|2Fl=7v_yRx*H4)A4i6O;}<-fhJ8MO^{W8N^N=AsI}Qs9Hv=F(d;f z3vJN${#Em}GoUN)_Zje)fmZ;-*T=#4`PMgn;H1s!Y!=?qjdQtbj*|hs0sCJWS-LS@ z6V!@EB~8Ir)W+CoagYxCiPVo!Q>pzDtlaMZ)%?u;Up)@O&r0wOKnGy>c{KRGJUCCc zeDTotOIg;1t>?@UmX4RV+-*M+lK8^2FNCY#IM&BywecFfKd1U`UlHUolJNi{p~c9J zG?@ETj6=0tRmY;Z;NghJH}EaBdMWiTp?FC#h}j~NB**a5C-694`khGmcn-H|S#9r! zxn8XVES`n@O{4VUESHm zooUW&yIL7uziKVeBD&IIh9`VYGOPvJCexok7NHx?QjSSzUi0`pF z{-*hCfDf~8pA0Ucbf*K--ry4#opcW3|ZHZ_sI*-TuO2@#K}*@ z_8lomyCr0vDXJo=k{lZ!^F)lzC*TuG98E}(J?$(YG zHJlxB!o|sO{77#W+d8i+N%ECU1Ur!Yne5ezVvHF>LNGOgHFktM!;4VIHm=aH#M~;m zMvqpF&I-GnVoxub>$J7w6Fp9m1G)KI34SCn12Fx$8(dnxd)Yc&m$pOpuI#a_GQV*B zWwPEz2e5+AS)y{`TDrfo7NraP;)7I%CAEs%K@7>Bqtx>d|2ay@98!dceT2H*wn?}H zRND<|u#G-Zu7uf7gZ}?r_fO_Y27E9u6fpfiEco8c6Z2{2i==Fj&Zo1}>1Gss8fG1t&3CM9|7!jCdz^pDW*Yt>vg$fn zMVFB1v`SXd0Pe%7Se$Th-*F&TA?v07GNPN>>h9jfj=CwV;;`X}%hvYxe18@HXHq!0`10aB2DS zv9@k$T}3JqSw;q8My)(}WP=644 z$hLq;pD3f^JwEG6x7_j5&>!o33){F;86q4%P={E%9nE*-lN{dz!IuK30*3FG{;B!C z^F@8G-1O^1&lf5#t!6E3{C||434C2uweZj0=bU@ay}46zliUn##tuoxbfSgQHl=i+ zlr~a^0t%f6NSn|B3PK6Q!@}nTKD!<#A9KWu*y8zli5@;k;LI$vZ0FlsQJ0l ze^8}5b6IdXI&^ONsFsU^?P7yak@Bxr0a1F%Ex9mQj1c7~j9k`Jbd!4HE3k{|9ne1x+%uKSlQg1+T zcV?LJ>ltk4dM6MiDDke~Zz?=J*qB|Ut8&@052(T@y*gc0GE1$goK`4=i*>IGKB3*~ zlsCe=#GQhGydxf>y;;+rR{VWn-nbC_O5ke1_NV*7CE5MZ;Q3U%P9a>2G;yMf7Fk8I z5wL=w*Z%hg#skq)$`aM-T(W>iMFQ*4Y|*T~P+uMEAa&;qKX1nLWWM+ZcyDf!A}y{R(Hv3izDJn8+3TVb zznXB~7Op+ygz0Qpi()b29y!XCC+F#oWF=>pigNCZljn(RI;41k--#VV1z6T! zU7kEkqrK$KiW>)&^D5Ow!ko?2?bz;~NU-33agEbaVd|q@x&7z*v%ud2tORU*TnH{{ zD8FH%ZD!5@7p!64EN}o|>oC{(NV9BqBcHCLyz&7(j=q@g)8uRW&-38y=$!8ZmTs*! zbcgcaE_CDQ-}j4p__rf1zgs=$)6LQfIfC^b=T%_Fo~kA~oi1VSYtT(NUqoQb)j(E2|E@2kQl|Lr+)NvfuKCx#RUhS!?zdO?`F4m*x9<@Y{jA0L%B2 z;F5;gXKpZhfTzTM4ciXM4s*5)!&kNQ6L?4DDZH~zo+hmxSs+z#ofEa|82z%i9*3WN zwc*Ec2ly#~*8z=y`Jh;$*K%%rV zrr$&Uwm$9x?*l#xSo%+ZOB%X9u+Uw%xqJK39Q3{u2YYS#J(ItT=Th)tKs{jTPmI5} z^Pzp(c@e)uD8P!Gw9qiYmcGO38!?<+343}eeTG6$(Uqp`HKyKolCLfI&ER(f_X3t~ zgKzj6s{b0gZO|=tJmPU~deoJJ)1kn5YJ_y);d*+5Uyo=KtJwxURyGOz9S7Es0!PSL zTGUkmK6%A7o^D=pD(VAecsHgKW9Et|FXxLPEwYp7Sxz7^d0)wWm(Q~X(V3XnqC&{V zi#6Dc3sgSk>oa*J5?1+})JR?hki?UkzLb*mB!vhQueL(DR(t z^PHPTCOH-xLqHCD2_>tJ#4w<~J7RhV$j{O{1kQb>69AUpIpC5W-eBhG?v+Q**K{sX z&By&$tY_w}d|NYLyoi|M1g{3pwEg87@UH>S z1GXIB1(!6`eqwMb+K$IQZuM;E;Hb!G71n99q8=S(!pnh}ZbM-5mGLnPd=YReVCk-j zzqjMUKJEB8obCnGBDy%ySeeCG87?!$4(HG)+0|ooB_iY`CWsm_vJ93MyM~2ya@h%;D>ypq0T)=@UvmfrLmjswmmYBw#hvDE9KlWTDCKJZU{zdk=2)H zM4g4RPfm+y(F;VHFdtdMNHj`8NgYjwzYgfzcDe|BCvXK|`TGjEr2FDHURqGY+x>6`ClG?Z`;{E zkJa80{};rPk*L+%X!Q}&>RrxtEvyfrOdURo;*sG`3;PV3Jxcpxe)^zi>+?zQuL92l zmY=$m;kPP|KQh?;c z)N=iJq>YW7Wwfc^Zuqt3xf%R^;KP6|&r9Hv?0v$YV!NUK`W-0GdQ?fIcXZ#a*hZcS z6o7GEjO)iSkU>2mnJCLnCI+d9Hq)bW&AzTcEMAVU$|U0a+(Zt^rBMJx+_WgKUd`oP z-eUNyDlvRWKR6M50k9abe6Ehax8v+!>_=z_J}*G;$7r-iCJY_dNDEAKRzIbjN5{|t zh~mYEdr4)%OO@8+gNJ_bi1N}-TdU#cVd&X<`v&;;fY$)akCQ&K-Ui=i9@Y<}-Y)3g zwAO6G+crjrDuq!Rga29Oe0NMFc$B?oI!W9(Ehif<#|=Wj<}dH!ZeNZwaxqg-vj{O2 zO#la54WAwGVfkDSz74n(uzY?FT+)4U{Lr?|gU0_r`Z{*~Zo9tWI&Z_AEbg+u zlj~q?5Aw+p#55r%eObnn;*g1hpuCnwb1BO2exifRn~EHqF7z%%51z$5QR24g%lZXN z`^Fmn^O=G5vJSiz7!O$f7lKQ&>*delacA3o^Qz7bbjo7)3G~HHT~z7Um`}$^Sc|YM zhw?6NTNzGV-JnhxRbwl6I^+BK=pASH*aIEAZhsQ|ao{Py^6_nON!EYW?m_+;koOOG zujMG~TaFhc2-&jp%)t(96p<}N9wOSt8~RmQx8F`>4ERi74q)m33|vy@ zS55o9@cfbO7}J-HVNH+zv$1V>!utnZXZ5#J&I{v4(2k|df2@4zG}2#MGhG%|5+eJ#ojwAb0-Yk`e`t*@8CB@NqZ>S?f^ z@`m-@J7hL1cDyb#^nSfeD#~|0JAn)P5Us>=N}CwQ6)zP#1YKm2k*~_r3Oo{BzYjLU7lpN_dWot2bOXF{b+iSn1l;+3S#X}ug z-d7_!RxXYW>iJdJkgKhyQ{#2JTsO;o5e+_tmO4xSLg}9p3N4B_zi+xJk5f7@UzLK_ z0Zo7{&-vhzhCGMRZbasj619I@!kMM4ZnM1eq>#G9{gqCdw}Kl5ApX_{_?XyaW9RmVcGIC zHi{-HYDpY}3S zKf=#>;H!akfaPa%{Jq^L*{7W^u_rMsb#24tieahWe&)7GN7>JG$8?{L^A)<^1m6#Q z2e5QsiNCk>?9x{L=(OYPf-Q{&tc)9a1%lXBe;{t)m9z|#9v{Jo`PpZ)X}(k`(R zV9K=rNGf!snWo(ikxvV6g-){Eb!vb*z|#3Ya7l+gV#e>r_-W}Ff3@qO)pQ{BQ1C`d z9Y{Uny^%ry*_(D=n{=Aame=0I0Ri`iiFw&EIbBwTjXg2}->vY66?G+!!G?RgRYNGM zdZ7sN=OV1B(yaum&1HfXgqCUdYNapdc%DG;rc3Wq{@todKH^%F>#TedHK9Z+R&QJf zCs4K@n@pre2NRL?FZD;e87zT^1^9FFQ*NUkg>QMUe7Zg^fRU96sN%8;rOaZPS2#JG zMl79FW(Lnw@K>|cKbup6s+ob-;zIv8UQgvx@nrB1sk{ux|JB@vdv|E>rz*(l7Z8I7 zuNZ-Iey*wC6&0rbq<*)6?*y&@Z2f*D{@%8qeGaPMrCnPVcF8E^z|EdPz2)!n@1JAc^~JErDUhu|%ile)(X`&zsP*`!c7}buvIHVELH>F3Ik@ z2m5P`+dJZ?gCc5t4)em079;8#8#0^+j+=L&`&t$}jJLpJJOh*_aw_X6b|H%%Teev$nxFnp|V<+V=J00FDsTd>b3Y>n;V>jUY;JF z$5|Wtd8Z}IaQJ>2r^Jf#>O}ih1kfnKNnL}VNg%kA!GvEpaYL0&r8fjygNyUsS>5CX zP3~Wn{+sgHX4Ds+mjRsKdcPl=91wpouzO%5&& z=LFZ`Os_(m#f|4)cP$@P`ez1b;VrY3%oARtUsoHJjr3|f!r@^3iTax8GR>j`&s6N_ z64>7ApfZK5!7B-bO3KTi%2tJgk(_vt3Nn5sx?fqT-|vObxT)#x6*`?;lAh$w(ce;P zO0Xm`!~L@ICa6j70^8sXOH6woqCM?+NL9N|1yBXp_8tc=X(+jCe46W~wF?cWSi$E- z&X;Bk_p%5{%0020VlP_3NF0SeBrY^0zuuVsPV%?(-v_=2xDT-Op97cl&*(=Qsw=ON z$>Dz@o&S4W=fDiPRUeV4$s^mMPE!>w`oBr<<5(adEu`8+K>4(y&Ewq#=kukeUh*{q zd^Lej0j2|%ua)4Etl!HOdyd@S#dgh7FX)0lVVphu(&(Q)Lzsi(<@`1QEx#t@!_u{+ zW93Sa)6=nZ3C?D@H52w;QeG3jh(_a-VsvsKa(cH+KBTAN!`9zR;I9Ec1T3F_1eY|F zJaE&NHF5$rnhAp&@$utDBF9x;tkx;c-f6v-!yL05i1}!*HFRX2Uk=_4YzHhKe~7=g z`>_|!KeE0e`@pqk-$RAnmxvU0e@KO?K9#huOlW(P&hy7NhINQlN1y?eNaxv(F!*;xq(Vk!2^ZLbXnN~wY4u{7uS z2x(YS>sK`tb?wC3Ne}STfc+?Q7A1d^NBh zu=TKExcT17O9sm)`bDG6o!>B%=9{5&@Px)x7N76I9_8Q897b=sMY*>sIx*7=+SmTA ze2VNUA!i{uL}tapowFc{8(u{LvE_I@EGQS*MP{szz{*?ipUshCBF}ZeL@`OgDcy() zqE`D`13f7}R%SKwY`j&u32&F6Q1tIm6}Kxxb&cN%U5oIuRMw(#+>d31BqlkTR2@E%O3QP?ik~hoiJt6ph@CV#^%3QN zLguUm`f3gb80y;z>|9gdPg9?E-FzN=Kk!|^*7qfKroOHJ|H1W*Yg#mxWR!M4JRoZn}(JWd>^G~F%0j0kKtzp^ejJ};MW2-0+ye-4Tc}<|KiYXN6rh;Jvqw2Yov|p_v^jc zm$cfi=SHvpmv~8ZW$vkT?wu`;W7FKeFXWTv<=3w@mHhKYKeU#J&1kN0Z*lbRErqU}rms7k|O zzL<|p)IACP7lrdLcWt6wU$27eleUv{U%b)OV;}Wo>+#dzPXbQ^wjQ4ckLLLy{7Y>% zVwFPvlpOc!Yn>P7)FO(D43RYIk&d&>W6E%xhE0ZEzH#6_eacQT?{Vi(O92z zu)f=d&aTz$;V+J*94mh-EAtewIsYmOyX~xgI4SYa(#PjlzMOd9cwR@aBMiyx##qPF zB1kcnq;ib`4nBjR)Gx>~{Uha_L=-VFN!=G3e)qwTt)G{{e+c{-u>AfJT+&ech)50` z*HPPh*ge-yq-SA5e8*f|o->h(FW^)%5)h5j7xX(6$X{gW&uAK;zZm>9paYO38Z1MO zH(7m6C5?Ahk9R&j7c&|5epo6+zip56-$Pz@p8FK|r-9ELmj94;wzPpCWou z&I@yW45B4=BTd=aYOQX;2%H(UNlMIoZs+iB|g zVdyvTiR?4J4E`P96~OYB8DaQ)GrqswS9wMBdwZUgJ_&!@OjL@d{rSJ^m-1?VetPuU z^ip29^qjAsG?`chVmdB?Xh-6|uQE|nLL4KuJ{~)SGb2sxDz_{dR0OU>maP?yj|X*P zow`(dY2OyZ?+W;__AZ;icLG-cmft>bNkjQbJA4eSVhEiD6l56vRylXiYfP}uNsOi~ z(ddC$k6Wqok_gjPVfknn>ChjLHM6(N@bf108lWfj_cnORNY}{$mY;>-l1_}{qYgfg zNBnGEwOUrpl{d_Nbc(E8nHh$exYP zrdL{-&Q6+?no;E7RW=VcQL2Bh%z6j94WGU6(EuO9=SRVx06qs;K3@Tsl#k*Hq&RIRqd13xI$JuJ~?T+)1a^3{~KH#>) z^0oDEpGW0;<`$Ik$axrBP3P75wW6F)YKZgSPhNIj{0;a);E#vpKX_h}{3ov3-nDtt zntlgwgV_I>u-_5q-!|IRf$+Z!{B+>V_%o>&%eQ?FmH!dNIM`ndr#q(8N1k^6dkXw( zz&8QgAASHXX|R0ci2A}de7UJDudSIm{=7&^g2?wyM85O0Y3@fONgdJ&7xC@}nk&D} zv{OUNKsl#@p9stWEd7P?_qLq&c?A8nU6y=9z1X*ma2{A7yB7Kzh71w^?J>Px^0Vdr zH2AZ?zXO)u8{m>Qo@4e)gXiIvFFv)xw=X(=**!l7S@J|De1Gd~xflIn6-sjkI$9Mbv zeKw8)M|mGJj7J?o53XwF4tjx7UMXI$0*XyqluZ2~R(bl{sVmxauU-{-ir(m~-{>si{u?2jXue>qo@MvoV{Gn* z*wwo_8*%SAD=#&4JH`(5kMqGd0h<9^-d*65h7GY_jSE|7YiEp#-?H^R$|0~)in9jl zu7tTS5mS=+-U!8&AL~X;_xU(qspnV0e*ydouynm~hOQl-_Bl{)Tg^S{S6mnOsA*TF zob}HUv0XKW=duZWw<<-VmBrv7aK*tU1LI`k$_Avz3fg@78myusyu* za>Lh~FNs`Te{@U|&Z_m!qRPsjX9dAvoR8UYG*$9E5XJ322wD?XBJB$k`QNLWX@0z&%L zawc;30aO6CzODtAv?6Z*755(5{^(0@Bhb?79UCqIqvG(Qe2e>jt$OuaJgB(7!1=B} z5jjE1JI-t22#zQP;an;|T_;P2w@*T%FP1vkIAf$Ihw}WgIjK~tK#clksw#<@S_*M` zsW*}VhOh;^JUI@>EQ0yL7#)oCtAdgVo{RW95Z#fpbvx40Q!uFsac_Hq*PI-f*xPR~ z^lcShwI1+I&i5UqTfnXUbM+0>6}pPzS+=gpXB!Y zn_UjR2G{`D`u!=mq^d6(y4!ye_bcPPal-b?y4Q7X+Hz6UrS`jj3SM&6e)sg3=)mg_ zhR$2uW{$*}*$Um_Ch>Za4e}mJ$4E36=#A`ITtw8wQy^|Y=!VG9%S1iPo9<%qWj?{1 zHy1VxO7kDwp~(O7$#nY(gES<{Pdk=kJXIws%>-|j0W?v!LHbTNwOVaZo4M|z!f`1X zO|1uRjmtlIV0~W!egUu=u;srHT+&hgpyKkgLF?+gWZlwLo7XK{FW1S1_9=5hXZ=#= z2Gsb+$Pzb!fayF;YP-$QeVTmjzG6T4E5K`jrTY_bN&kfI8C3rux_2CtZcj|NZOQ=M zMc~VT(*aBOT=0K|E*9T|=ss{vy8C0g50kGQ$IpVl1bhdubaPV;U2AXLFPDnzdDYsr zryJCe#p8Jw&K`QzTUw$6uKz#Rc@!UexUs_Z|9FA}BCgYAcrigl%T>Y*)Fp%b7!-m~ z1udPcaW#w&lSsjc=q~h?M!n2i=AMkm0Nrig@9#D3v;w{ws1O;C7lUsHE{%DW@i=0L z^LERa4dT7Odpn!>HLGNF40ARP!(DzH>HJ`v|GvZW{~q{HfL{Q%UeeP{y$luCns!*X zWvvPA43T2@OCr3fWLe*MBQCEoQciOhS(=!ya|J{UOw(GxYFOMzcZgaP{@=n9go6u{3p0vZ?!2RP`3joVc z4Y;HwL-?IG%xt5ss3mV@6Z8L4=fWM%y%_o6^DyZr+Stlu#Qva7&o;7f$?rf+e<6*HtH8XC@Dwbu)l?3K zfizs&+!TLNB`P@Ribw8)A29XeOdqJ1a`55u9;WWZWj*x^`>2H%ivih&4iNU%8^m@stPMOaJO*ZlycfXX!z@czMc0z2mTE39ANo- z5nR$xa$v(B(HK|l=#;VKwRg->&V^?Z*0f3wV<*m`iqn`rKFWo9j_Fn%KQMl$fX@a_ z0xaE?;F5+KzemvRubNA#nd7BqFkpRH-1TrvLXV|pYNTdTsZ1FIIjW8O6bnBVoH1WL zdrW=og>D<4$vAor{F}gwfaU8q;F7k-eh;14uII4!k~?o|qS)~v@yv4JmzDD^-H4|X zjqW85oY`k&0=!FL)yLGHPDxa*E7_EmN*g)t_ZU8AoG`%0so-Y==K+?Fo53Z0HjcYt z?|l#B!|449C+#mtml3zP7yg%a4(P_JMHmYe;AX6w$%=nBLXP9r)Y8-vP^C-Au#ZQ1OyzKQWOM@3~QYhhp0b4&==f zVG;j&y>4SVO@-l24LuvLkf}nG+GY03WO9)&s-20P*+aE|$ndifdR88BIr!DUb%5pP zZg5G~Pt4%`sp(G}B3-cd#nOeBIj`f>hlyXR1{L?%f@wySjnf;`JwU#;9{vm-oXFW1 zuyjwG8`I60`+`56cI3T*r5ktQrUS|QGjAl-f#m)Z-arI!;k}CpAu>62uEzbX()T6& zzxa#vaBSTR*awVep$sn!m-)X{{UP%vNS7T#YU}&t1*^NMdE8P3OL%{7e0F+;hWo{CtoujCOy-2bp!r z_NFjIc^OwmmHy)JlnUGhW>9&-pt&xX<1Thj@c}(1gO7w{qI`Nr*DMN8(bsvixRhrM za$;F>R&``-pDH}BvYG50eflp6QpP_gf@<^c{$6hhGIQ5UPRNX{8HbB)c_Sf2%La0} zBJ(~~^f)h+WKMiuh5W}!nV)*Wq9i`9#L-^ahqQh`S2Tq6Sti2@u90iKviB)}xAGFL z{09;Ayaun1!&FLN-df(|Rk>8g<2rm%B^um%e@r$AtHRIAi99SL&dHd{eE+-h<_Ld8 zg(LZ{{M6RL|Lq^~-=h!v<>5GfaP=h<{kCl8a7un#WvZW2O>>0rRpD4D)tvfI{(JOc zzdRhzUse*_h*{ zu#hP~2Mf}{`S=ytLBA^={yzF$=l}oj;OG2f{%R2Y@(fxP7`m2KA6dNqPijzsmEu(u z%zqsFeN9-*RGo9oe27ge71#f};^FV3-*x`~{|rj9*bx#&9V5H>x-e0)#KxOzQPlkuSEOdyYQ|v*PL7axsq`%>TvqbB@BYOP z-}e1G6M^_BdRB+M3GYk^4BsnSR_7h}vYN6aIU_wL_@qiL_Rmt6=@H@2@zhrOs4BnH z4JW&^aJ;FfxnI@ZGq19cvu9R zeTMGCa0897F;F5-rQ*zNqbRzMGdj_ZHsG!r?uNApK>D=VpCZthjOZg%@gMkyhoGOZJ z$?1*hhw}&M4+Eb9Ob0Ce?}JO4@rXGG&G=+2$BWPF+Yay2#r^7TKQdT;%GfQ}zJyGq z^Oj^3Y7^z)RBbuS8Zu4{n3Su>g^lP)m$TjQ#`trq>&m@!W6)IaYP07|38tQn+x+76 zU=(h~nTK*sqF$WxYrLQ|n`Wk|_J;?@;iyuidi?jK_=yBCdOwWkaG(hp0Un{oCd9p+)}7yx-O9&8MeSGlQ|-QP&A!U8YSF7fIeC||9GOz z%4J!waiTO^-jCr2C;n`5KUOu?{MWSjDccZELOJSyY4lvZjIKON<4WqMI#DeiR1bX9 z)XSoU1O4a%@YTRNK$6J2hB~K;xBkPs(0HeFywk%D1a-^=KF81!BWMD81>Z7s_8vy( z1@M=Em*0WT5%bZOuI-!FU$$fuS6Wf%nS#?p2g3I7?5U7lQ_`c$-J?UgKxV5|vo^ zPZ9@#boM$7j#+NDdd&2n&wQWpLtJFF(yqtY6nR4%?T(;cb27e9s5n#*x7PzEi>G$++ z1P1#5JPFUk$Sg{{?6&tw42sVGP|n*v*SWaO>^36RvtH!^ezM2l!YFeg?1t zuzcJM9`P}R+)m;WZC$q^y7oDs_m;k)OPnpQl{yU*(a?~;je1@5XPy_u@8q+M{F(pB zkEN4z=#S?0d#wDU`}>B!SD|mu{eJ=Xm$*(6u>73}F3IZOS-ll2pJ^F`#g|0DYMlU| zh(gx&2lVd#i1dmJyHd`UPitp&<0!nwrs=gQ3H4j*jmQL9;!}<;G_e3BQ-wNtF4VKR z^^^AtVfh)wwLMQ#-)n~7o8YH`_afK25BzJuHv!A<&8HcD7sc@!H};zTZ25&-akSBC zf>s_>`x24;)la?X(Hy--E=e?+oapYRazwS4kQg&dF<@#7Q&=iK zppwNDrg+Wwh^0U=6)Npk>#27te~$zYsczQ!bbW2$EhTEae`e}@*_?#K@zWTDbCL^^ z8T`RaOU`B@aItPCwvkw8RFC&3GpZW1uHWu2VDByXx; zOq`BY@k2`e)!YO0{@B#>!MGlydjN2Esp}*FThBRgNml-3pXlR=3E-ygXmi!j%ocX* zY^NdeTq9e$7HvY2?vLqo#Q6xFmEdcD_3>x24%&R})3#$2?{pd?QaM|dvqjj7(t$YN zz2srX|8wBq0bT(t|6`UJ{)e(-l>8|O1iT(~b)@L>`Dp9W+Bk?6WLr2NljQ1 z$zMxGr5Zzok;CyYfVi3okNK?v>$4=$a)zTJuje#ITJLBp1nCL&enYtgkXDihGKmx_ zUUw?*B`I>0_W#th!%q0L<+ua9CE>44>Le*C>{Kl`-&9oAXeT9{fZIOAt%ty$1HJ}Wx~IO&@O5af8UOeF;HY^31ukN~iKH~>aewLkL#rP5TRM7-h+cEN zI$M8F&~&ysNzaL%b}k6L0y?z9MuZ-@=H@M569(}_V@z$SApjNTQ60on|iVOK2?M4 z%%nY5ZP~O&*1BHxbzd%hxBj>9^s)QG`wYE3sT)yGIg1s~_kt3XlIYtgSaZAQ6CrN3 zTbsd)F_L%Yao=xDB9A!Yzk_NVp)ws!Az11WIfp$4;-`ZS>^iz~k)ir`6L20Om3PjeT^ z?je&-DrN{eQf1kgFr7;0=P_}oRKB%P65c%4EP;#d0lmkV;(j5&hX(&C- z!@GdjCbEWVXX}~Hr}0h74j2=Yl#hQ*$0=hY+(JHmG2L$RZQ#AM>owpX0X_~`x(C1| z9g6*?9(8}WX~X(U*P45v?)zmUwg?yvOa!t(EieNoSX)1VMIh{C5=AdpQr|4kzIl#urfo3Ue-tSrM%U$N4|yP1ZY|j^CU5YB_75olXFs3!DsC zzL$VY8Z7s-{c$r575gsq+GlWowRM*BJbs%-%Ju66&nSWO``(z|9`dvO;@`kO3w#c+ z^!^<@qBn#-m(XL4+)k`oS?k*;3(4uuk02>RS-eX}dlqMZOfNj!rw-d^x`D&LMR z5jn_8@jAND4+$K63*CYmS5mj!qy2l?q>BC}H_Ng?Tc;}}zuuVsp*VjjZ*~Q`kU$k+ z>5l-HWXoxvw!E8VBegu51mz4<$k$+Bw{;qEF!4vhADX!0Oa*s0Q8v#0m~MBRuh6{( z{BGc0z|#Ff{Jp&|J~Sxq@nLlPhrC3+66eRvH~*=e&qfg^YgxqQ60L;moqQ@)>T?3m z8<$(}_AVNjZ}!;krrOWB6%$V-Rqfj$DP}W@osaC26le8U7xQ=?j1Rz`qH+ z09gKBi@&$^c3*t&Zu#4><*=HQ7V}n)WywMc-RT^n&s1^RZNWU6DQlfLpL71l(5*Um zV4j==J`Fe?kR+ShJ!35T9rfk(v4rR;#BKioX9M7oSeR6+Pe ziW8;%G5tPh*>UnD_?LiZ0bA}D!6n&wXK=X<58L8Z$y>Sc0@&E>yovSuM2;-n_s9S} zzkdR1|8rdK^9IV@3O);%3s}0l!6n&q^HJqzx--gB#kL0(%Y%exZ36<9#q9(i+|uZc zSLM3ETW#(Q0PBH^{_5!gO+r~pSS>5mGU^$CPX&FHFpI#+>@ulm}N ztmD#^KcMxJxXbMQU&H^a@Ye=^(qDcJ{x{+G-2?m&2bZ)qj+^{Y9Cyn0m(5s*Z|mH& zCK3qs5`gLbBDH&zN6NY6``YPfWHBk?iDQ^<=AJ7E#|NjlWo0-d5IONB-q~EiACEXE z{};p0M(DLePxyH+_#MFAfUVDS-(&cxy2tdVJ%jYGH*D>?)bfKvxu3iLP^w42l87Fs z{6o0w;EeIASUdexe@We`en%=Xma`m3mK6H7C?*Ga9EJCP zq6w+M2xhlDwh)w;0R9E;YBX`#IVUE#C2nJ)#;wN5O8>WdWexE)-2kSV+>+4aIjJHw zH8@3dn_txWOz(rr9g}#EKF;6mhxHuu_x;_}=~ z$ehivUF+;zi_TA|>y=plHKaPG47%pZj5{ReMd~E=P){Zz&{3j60rT^=irj8zs13J3{kndySh4~0BH~{ zcK2ykgS#XU;?7ryfx;3zib0j+td>k<_>%}4DKt|?r^FeeC}43b%+{yi1-aS^ObPtj zy0A4;bKZ!9DvWV)<4n6msZE_6J!f1nP(RDS&jT(1EZ?_+OB%}mLO9XOSr}VCVMoUZzyXG#t`9x$b3X^3xd`$az{$I_lVDDmDi+Z>T*P; zF{6Fj@Oc0}>^}Ex@We{jNdcD6{ib*~ojxn>pSB3suXXy_DHJN{D^wt$6g=iAD; z!D}o-^#_MfB9|8nkrJ-~XAYuf9x4fLF)FfL3L0T;97o+qtF6y9{PjTJ^7kR|PXUhs zmcKW^|5g4v*R9$X&sW!)TZTZUtDTQ(=W(wwoCq5jr5FQ*j08_BL#Sg+5)7k7VYDdf zht5X*gkdzI&idjRe%n?JtVfH%&jQW`EWf+JCE4}JuE$4=!>B$lSOdRXr9M|aCnw0@ z0$9cQ@~f~ao=iqEK&ef1Ycna1wK)WW;)J;n32nyVs4>zw-sc;>o`(7DN<$fg!OrhJ9h z$n24ADB$8jLgkU%u+A@3AU@4A@#1u%+&>978G4l0aZ$F64H>_z^xTvD(}-8NgiYc? zglWlu@J|KCBs)dXujXD7KiFO>8&vs?_4r=VSV9rEuq0S@oQz+SUrB8(qg14y>%7O5 z_pnxD^bW7hoyL-WjrL6_*Qg!ZQ>K32r2JN{^jGk*HLg<$*!sBvT+*wt-^%A>eb*z} z&5qSR^<(4M=<6od?QsuEH|t3_2NI&wiJKW552L^~5&06jWz>vI0E?15YD96>%udZq zrA8on!Yxdjo-VOji6Q9+`3agKpA7QZ8Uifv->mS+cBxDPUIfFBM>-SCqB@EcU%KhP zN6HSX{`=t1w%e27F97=i%m1Qv zhX3ncHT?fAe%f|3{I5qOC^JL-K7B|(tJOaJLOOaBpXJ_V=Z$&it>koslF2X(3*6DU zoPB+XTP1g{600b9OF;F4y<=g`6Pxhdba?H8?%=5jB8Ii7<8XXg#d z`2g0bBlJW?q$)XpUlkpz@-?Ph-Q?RqzA`Sa0lyx&DW)am8pAik?0b$%R`Ktu(YnN%%!H{ zBBO+H-Y_97O{Ed#}+;^fjO7vh)u5$rvs$DasJMQ1N)gW@Md5%VC%Kv zB2%y1zi;|OTg{RB;bNy`tM!2YtHc|=I^h4Q>jNq#*f0+r%k;8DE(fYAuK`&>CTx(PcC0YzY!%wK z4M_U)^-FZ^lng>Hu~opAAevpcydKTMn7JWx*ImnP*J$00m1F~8pTrW?#7pakmsFm3 zFU8u@NeQe~EB*HhlR2)b27YRPe)Lbh8Ti&i0eKwSu@yIK+&uC@NwhM*rV|gSM31XJ zth_c=t45(Pu70T0GcGEaZ>hvHu0AW6vjnWvtHb=6g$r5Ot4VS1pAP|mA0a4>$2reDO9!mX;?-`fA?lv z$y@IPQ@$SPSozLf;GYM+3|Kzg&4!O5_tP7tdJNlSd zo{Z7o(0a2eQBRvGPe;tJwAV)Poxl}>3QNrx9wF1g;2M+sL__BI(Rvih8D6HeC5Lf# z4HBP`emV-Z`zICd(&ynKVq4td+oqZN?1ujtartfpzYVw@u;sfCTvAUQ&tdR>Fx%XbaEW;{+;Mfjp&{& zbhnD8hLksom~)cXYU%dIbYCUkjWONdf&Ur!3t;K`7aO{ZF8Sx>6?K$CcT88*n2$j? zKRq7*`} zrOS!Eb%$#7QgxFUvW@r{6#=1hyl&Tv?eyv#i1|4HJ=@>@EPQN57Ywlc3I%tTjz{RlHX>Z6ec&)BQr=OB*Zuwxvq>wVV? z(&JG6^znnhbSSlh4(M^JslR%hp5qN)&b9%*YQe|Jd%*Iw3tZAemzw(d0C#MX`rFG? zj^T?BBl%OG`kiU7dw9UwBkb99BO6KF+_NgmVW$dP5DzbGL0S25ug+J)*g3l5=mYPV z__;7jk>dJ8;{sB`T_6XkVlKigQ#J`Va-jAmve6&s)^j-90*Qr-d_yz-XRFw5}Y z3x5r~7ydsA{sizj!1DhRc$8xOmcji5ImN)Z>BZYubZ;?PWCHx~ z5E*++$*8nn4GY^6<5kpWXB$4Mb_~?xSnw&pbinel5M0v!e>QHUpLX0UmbRCFNja~% zo9LrlOnNyl(kAcWnq7M3zL;(=`8JTRl>g)4PXM0-EZrBuB|RV8_YN*U<5gx4dsR~G zep$|FH;Xj)hfkW!Hax#1m?xK}{lEvc`>$N8eMJM3t&t z!d3nx!_Qvm*>m7mz+VQw2Uvc71ukhQyI$G14os`Jnqk@$O{>^se*tYMMp#<>P8_Nnag8KY?R>WRO$rexEduC~hp{ z9DVt2?4Ly?3ooHLJwx>2RapvsaMi?A!1N&63vP5y{+c>GuCQ~msh|DOZGo=zpPzvL z5_k)+eEkVr((^;_FSf7R6zx0H`ap3U`d#>W}aeoM7@uQWGV) zTu{n=5;`k5InNDecMGk)`EmK7ZTrUo@LvPJ1#J1>2A4FH-M;WOCE8eZ%;!K;xr`dP z)cLcIFB+~3xEnwv&uh1};5ZEn4BbVS4VcI;I9C$0hZp+z$Fc(-)+aimM)Qu&=Ow9 zY0H#z`RUHn9Lw>6uFEAV*vu#sUiQay+b%cxO8;5}z6>}WuyoIfzqjWA`?Twe=uJhD zckGeP1pB#SjrNre6EVFAsg8_YC;gfad{A?`3dFN7ZZW_h$3D&1*WhF6~;h zZWUXXekpdLZS2I*xnhCS$99fsM;f&4FsnmnWlX=}y#wdd_ zE?IY4*IHt1%kgoZvumF7cP_2{L~Z0dXOXGbLvdbGubC@2`vXmYE!TE%N%oxj@St<* zWcLPa{UVY_rRY3TP}U2DVIHG4Bmg6a;;spojAK&F_NMR3vKggvt8$705hEO zBpH!hz&g%kZ{)x{us5dPLH<^raS`|xKo4N)=XV+Ud%k7%k=}2Q+)oasFY!H^4uo%d zZ-nYV_*VLjklMYv%z4_MoGQT=(OiVgbt=gXamrgbEMK2Ly;hG5D=*TWmoR5n;RLKP zoe!{FKrAJu$&HibjwTWuU|N@|To^9O=?SNVi+MdYT#}m~c7)5z7KAx2qgor7@{%eW zKFR7lqM+~As+L~Fj+(pjF*F!|*dy!6RpFyv{$om?sORQhmx~j3qTZP3(xm2fo}zN#580a4`mN%>CE4K#u;uwJxTN$7)6Z3vj8K4C7Yt-OQCyd7iHSyyqOrzPN+`$ z`ZRC6>FWn#x@|oJyLW^zxEs9uMCYCt64&m1n{b0O*q>z{;(ryVNKY}56 zRh-PU!c%wow9?wtxLRVUlore`@T(H{wC`-g*Nm$N&IhM}Zw4*~EMLC`m$dfFrr!5{ z>Bw>3z2=ftojarpHSJG)-+d{e_9u2HqQ~^;^?fROjD9HryZv(j$%I)x>czr!Z9J{OH9T>v}|gKQA#+oW=hEdT~?dpPBv^y;HRxDds*u8M7T#Y zE1RD+oaQg}(QlHUy*H@O))s?g?aW|KYHB*H_0iZaEs9<8*k~*MIi)`#!69+&HHka4 zsT`}kPq6{T!YFx{<_y>O9#bzJ*9`QFHQ-x;O8{FhH-Sq!YQ2u_sMkniZ83wZ*fyT_ zngvu#n|(r|UE0VD%)JWB*+jP>2m2)m-E9zR^6fa^@bM~i>^T1w`0s%~0hW)yflC@{ zoFB$Up?#i=@$;R%$>B!6Hp-i1Xa2o0y+zj!^oR4nF9vo1mfr2)k{*uZ-VTocDfI9I zxh{(5)Th2@4kqt@P!R?Q1wx8{1A#9nKEXW_Gl`5^;*D{O;b?TYg4`JCpyLU$GE-ly zFNjXm?JG?^9DuH!AN~OT7vOJz<;%Oy@HN!@VELk>7P^2;7_1Lc(YZXNgz;4;9{y9HcQ!^LJid|=0s<3i|d>t4IAbNebtqHJ(>q-*d*q-(J2 zQ6vx4!Ep@PQuh&bD?}Eu*n1D1@>|4DC*PH;9>MQ8p>~EbbQ&osyl9@LfdIfQxZF67dQXEN)1P+X_Ap* z>_7yGKfCp&+}-4B_lH-5-vsOiEZw`oB@Mpsikw11bnA9;a3N}A#*avkI?=fXc_GGq zVo=xbS)(VWcYyrt{^KC{{{nvnEIs!oLvQeW9MkLS?k5+yY3Wh(ox3?QHJYtXl^y=b zZB6+)$j_EwQGg6Dd1d8m#}BVYlhgFW6;R~Wmc*O<6@Jmzy4C84USKX*NmxwZEjyO+s zsOvT8I&Y#bl)B}*K4{@{ELw@)SQn_WoL|Py9?epsCyU%xaX6ECWeVf`hw+JP|AmJC z_FD{pGLDvmzXwv)@8TQDwvZ7F@!c z!W8{FEEtnmp{t;zjx(q~E>#~)O?koD!MWqk@z3DS7cK7cHNpBMU9GTzn6gBIt>D&= z!Y|fOYL;AL$0O#h#`jwtJ_^o7z--#IZHuXoj`t1p!`0vy1D61{J{|&>WbKm&pFgEO zF2py0R7cx|%qbG9qlWEIkGdAiLezruXon)3q}&CxrvlViQIrU=MJBFv`DopO;zEmV zjzokf>YJ6G8ZAuiU53Ad(6{5n-;Lc5Py<;0&H|TI700#ji~X_M_S&{-{q`OGlLE`Z zcg=FJT_o&;4$#hz;IWE`K`BoE^_+?%q*aj15Xm!}B>p%a+k8UAMUk$#%fJYhTMrJK zL1fABKPu5mWVed`fwH&T@cl4+S-zhIe+l?5VEJBh>p$mvZP%q+&ai`}S3TxNcLVDT z=TCV~k4S$}3C^Q!nM429E%CTB7fdITc_ODJrkK)93#Vo$`jh+1GS;7fa5l*{oKa7t zJDg^s>z>0?FtJht+;;O!2HY_7S>7GbHAs2%3 zN$|bEX8~K@FM&%MEO$E057Sb_PDiX0FC%k8msBK9(L;XUw$0EBZyTUj1KtRX1T4Mr z;F1Q@lm2S`Y8*xI^`i-P$MklRpDo|5;P(L^1}wdAf=e25oQOO6)7bcgfm&$t-Q5|YQoUa`Q1aTQ*g zhzKw#ES7L^#Vw{>z)jR=c{TcR#c}SOU}fr5f1x|qJH@StYhv$CQxAJ7XIoqkUk85$ zcpb3ykiR`{m-rsJ-w%3xzKrT&xhUA2LWZ)Rz1>V;Px44n6K`tgEgYdIQClM@Edj|z z8@LRZAS&wI9O^ppd(+OUBz}9Q)^PL|WuV(tqFFs+x4BNk<%Zvt@MF&bSAgFL>;^2q z_kl|q9RKEsel*uO%R6budems6l|fd8=}~8TQaODb2S(7@n^-MdsVR(s1J8>KWTQ)$l zOS@Ry14X%VE_<)3k8bGL{mymZw*z+rmXDXgB@HFdiP~>L=Z?s@y}0sO+3kEl0v}(a z{zp4sr6vO1D*aKncxg0qbVFDXRJk0N*z;iVjC=cHoyG#cfw&?$!soj5&LAb#^%KQ% zX&0UYR~UX9?i}FvMDY2*DS+j79k`^S_Gc|)B95uD)(MB5S2my}oQ3Dhoo6ua5Z@f4 z4!}W$#T|WKF`pF!+D^|3{8nCR_}L3RI}hv!e+&3MVEGyQ0mDycw;BI~*iC#-Z^l**(D}vb)ZY2|AyjgI#AeBKul5pTMOtjys z$6%(xX*58&Ok5IIazlrWM@cqWCKbDw_%(c5s~1K`^r*g8US-PD1HX1We;E8R;In`& z&wg-8yW@CYgU_YMD36F3DUdl7=4<1ceo8dXVbRTb8mV)}c? z-_9FPfeaIG-%++PrF~ zZ2sk@s?dEF;-zcU#m)^`}e;9vnhB5!|$hZuEGXqfLCFiO!POVdwGQYvc0Abfo-W2Y(TG z8L)i(DE{7-+dhvd|H63#rQgscOkA&=N26NDU`yKjJdIVTl&9f3L$_s*DWA}t1%5KH z2(WZdkH5F{>~j#^le^3n!^(D43$9V;IZr`#ys30TZ1gV|PESm?FV0u!egXVB;A?=T z`%?V9rDvam=q{HKh_=Q1i9d5R@dGj4s(S{?I|+OSa3WyoE{MOk^z8E(bdM_Y*N-Oa zv|n%Pxi`*N%KIts$APB+OLt%Vy`^WLgXvznZe91$1^)I?l>1`3;k^UpZ31rv#sik_ z^!R&A&pwYu_oxDY?hFV{v)pcRlJp8|Ik96;P zu+59c702ZtWjQY6Vf_>w&_v44XKQ4mIT=&=8x4KuLj&cm1Ro8I11$a1;_q#F?eoZT zciE~&VEvkjyZ9v@GRr=V{t0Z9vsjk0_q|4CQ<;EqJ`YX4K(Fw8IfMLEX%jZb*?*Ja zYfns9`oW{%PXM0-EML#X-&=m{a}ZziqouIW-{Wt|4H|B3Hye84eFODS2R;&L1uVVk z@%NUFeGa0x97Ex?GOMmUFB;&NICnr%L^KR?*%Pje2l?KZZcm)AlyeXGgTO}tOZPMJ z_m-Z04x-z^DT`>&M^Jv?Sd`mtG37l(zIJ`h+z$>62Q1z3;F5;Yvxxg$2QeZbT3oq= zedyF^8~PD^T;w=F5U(KRkB@?xIA?NS5>2PhftdbI^0)o|{ooG*4*{0`7r-U`lYUS5 z*qDP}b*nkZtTyME+qLsFY?Px=mDVS7u^Q-eJT1%0-O9VzE-P%T;`V=Fp#2-bM+0L4 z%g?m=gg)!F^83wKAsLL%#N0vIqPlz$XAp_w(SA{>eT9 zy7PCMKpnm61u8-oH9|#yk1D9DDre}G=?lez!*TwL86a*9^6j`aF8_lAd^CcO0VV>L zkNMycAMdojFYJPklWcsI!&msf<^IVE-+r6nqc^4_TXjeN=xvp=FQyyz4YdDo@G-zdz|x%)e{bp8=Mi+55>0F2JQ)u?>RfR} zIR7e{0-xjJHjhg*?}RYr&NHS!YxEgWBlN!Cl)ER+U&{SK@DBqYk3SQA0!wd3Y^Qt# zT?tDVYa%u6^&SZx^GZ-LekE{rO->!pm9_khjsB*yw-RhJVuslQiP<_Y8p+*v8b0zL z9+($e!P|lPfUSqC!6kLX`ruWMA4AR}{Pdf=Vsrc(6&V}nqSu4GNx|L+J?AMkktiTF z%#RqJ@EY01Ri#?}aid#{lk{t!tXR?PkD889n`{2y3|(6f$3IYsrD_2;!RzEy z)q9uWe?R=KfIq3nUx51`;hqn${D1RfaX(hZj<37yNPE5wNQh*sDn+0nn|f3C=H8!D zy{R9RMUVeUM~?>*?@vh~J~z!dq$XpHRH_>r(y30g3s9_X3R~S4v7zMDonk}F0TG=} z!g6@ub-n*`GwBTOcgn*`J?tZX*)P3h7FXz4K3}5>KTx_|Kk9~Cs=n{JeF;J?{Fmn+ zRDMnPg7P3~VW{N{mm9vyptSB@9(MTe87B3f@}E@hQ!0_d$zcjX6fGc-t`4rp5ZirCWqz#P z-zooP38(m?AH3itb}PTJ*?URtEW><>-OM#gY8r4fEtk#{H`1Pr<=XfJ59n4j6G48&hI^s*fjI9s6WF}P(lgrcY`Gn?>xp~ zBudB<;>iblq{6XJ$jAL*tO3pqAV2%^973pe;J<|l-DJn9ca z|G#i~4}Hwf9QZ--7C&;cf5`Xb<5=WlexTp?Ge71BZ}h1``QZ0{Hp@iL_eM>w^mB`+ zG7TrgJ%(p>MCW9Pa#11sm3XHxLPH(Q9ll*ov0!Zxk^TJPvY0JfFgct(s#HzwX%Bro z;Oz{DUU6eDyTdN`dR+G%H?%2uj~iW+@d-Ct$^N|?{JOw)H#9d$#kjGAuUE^T-;InHwh@@?QwVB4i{AxoNO z;%-bc?W=9)8ynh}v^JiwdA&T+VAOV*dUo@7!n{Z`^fNZQX3&-$v3+(Kt{y&@=fxRb zb#(T$NY3aOQxasKVfIJNV3Ca<9KV=jLB>Gnjo#_1;1iqNGHr0hliJ?mPbKZ0jeHz9 z5mktJ;~aT;%{O>-SMwz2uxW`bv^KnvqKqEGlAWVjvCNgpt6E#TzSgakiHb#i?lHe|-9GonfnTYz`MmGEl~Kwg z1fD>TjE<-r=@nh#7jiim=WS%8Xckq5=P}?Jk&QIxFp*~}^EPI}r=m0clj5WNT$;J8NVDw5%~d?c;~p=gjY2u9R3czA z8psGaJ2#D|B(8Bib|@-v_sC30ojRY^<+9?jq`hY&*Mkkf+Iu~+qNQk?KsuE)vDKD)5u9~eA-uo@I+qb z1}2NJ^W)e)jXhgNk1p}XFv2p13N>Z~;5p2g`Fvi@`!V5Zv;{0C3g(U?$C~_)yR3Bk z65B<|FdyUBU(@zSb|>3`QsfFS8(8~qLY8zO&APkBW+G0sGl6kK;+d?>29TS8Cp_)~ zu6Mr@bY3I(3PWKc=}gQj%ZmmJUFutS^W={_4PNW}0vHx4ODAU}yE$wO@VMZSODt2RZs# zo_zu9*VV|9_TQ)5i^wO^wBya~gg{dZ@_XDKT`fN6>w59wkn=dPPh{5%Zuf~(QIr+) zrZE+u&<#(Z9WN~)_(mRaDuTSv<(bnkR(BCOJX#c)FiJiR4(EX>vBJF|pB6EzkQJ3# z@;y)lg4ulTO^y=xpD_5(W zZ(#kNjV!6RS^K+vV}HL@yUw-i^pu+c=I4Bqm96dp_v5@tm1H967rC>G4KI`JI*F0M zzQ{7ABV3x5ksag`934M_&raljwc7D+mxviv-j?KZpab91_HM_XIQGbS`zZ1kz|+9m z`v+u6cboN=1IO2uz3g8y&}61{qtT(*gebRUK$4c1*-HYV2jZ$7@83mCSI#Jq~ z@qu`7Z2q*o+}qsLrWa>T!$17<`rU$zdfdq78F$M~AVRfz2ivMmxbT z*HiDhjU9X8iNhoL_bcQ-fwzFQqqtk!@uumg>^{GLdDkbpDK*EcTHfK_s1|C@V=(o4 zw(D_v2$~U#Ud0ohnfTjCNCGhaPLy~|}D09y`=)1U`P&za4M8 z2KhG739Nk|N0yZSd0K5dd$mt4PcGlA-a;;oT%74Fd(w5zD`kX{$+-S-nT|Vy&b#W| zI(5%${yy~E@wRu7KLCNxY0jb7VHjTKMP7MyJj2Uu z92q?(S{po(_XSZl)Cykc)kY^oD03QaH_jzPVyG{G^%$5D?CDB8gH(t^p%WcfY z^*!$Ww7ayyqt)y8X^W`>p9wiHGchoW2me{#L^q3R8}n&d!$cmv%^e#amqWBycVuXk zKYS9)A=tI_L0Pw?_H5tcFQ#?=vg_aL2DaM;Wj!zH@``^xY5#oWC14q__MeO_>9F-y z)--4j@~bNsN1SD+Iy(ZaDwT37*Ux@MPwe}ecPDynzI7wN1YQP~H}@&c8!`QegWCtq zx6?UiOuluyFS$=h9GSiP?Q;S3U)~dveeZ{ydziOJ_Hp(WyX{f9^(> zbl7~9R$xFr{&J9f>@&Q5=(W7>AZLDo>p!r(tC1z8tAAxv%=s^Oa3&|a@KMc<*hwuS z^Zp)kUMKUCS(i~>%(ww_BD~>2Vj))K(EZv)eJjY!BUC~tczl|yoJ33UGuJ1av&}|T zLB+nhS9Ct^!d}~seHFO}eAD#BmkKN>XMuGqOlmkyzD?0!#`7csfBXxY}#-=E#jr-A_%q8-8iOpGE#Y z_#v?NUCwhxNh_A?cEFj`e_U5i8`c+H)Mm%YJ0d^J{vhmjL<&C$lT#1mI8U;|EEXa( zhlFAuMOQVO@x|ex{BR&Lf|+I6(P1ntn@U{$K#@06_GQe9R35hnE=bjl$!b>MD@Qz_n%AJ-qZFYFh(Yf4~xP`OXP%ao; zUYN_|K_(4lv!{8sd!3tG$PLVvVdHYO>bzL+nAoatMojYLDVIqqoG16Y{tK?xCt*ac zmYL2a>^<n?K745$@39eq0g_LD!h9e5A<^Izt9DzN$Ylc#n5mA$F+uX^;M z`PX*b#aq_Mv#oJG{$uX5zT4yP5308!^}0~K&QY(Isn;K*9@byduScoF$E(-P>h-5u z;fK^eOVsNq_4@O4Iu6x0LH(dqy?#UMOMHnk{#S|99hu1@1@f9vR|dx{KWxc{oqRm=}8_r{j6={ox(MFKe!(UJi& z8MzD=&pevlio4xqTX^J={T-h^(sHKG_v$&*Y}FqNjWt6 zVsD#-N*>|e=!WibLks0)Qh)XAb*lbY&;Z4U84M4Giwgow6fE|S;TcdR^{;qTF|!1z zTbmhwI?bK$U+aaQ_56!?sG4~+A3Ws77Lie9UX?q>=anUBa~MkgxSMr+=8CM}xtZ-* zH+qG$ID7%P&*kNyTX1!7nYT22t_+rR{6*KpmainoNv=o!ICvP?diX13N$J+(t!t=n zX3nz?G~~x_X5CY)0Bi!C^3OyTLfz;-&*)1QAvB8V@#M2sFjz5Sx*za;_Kszed%j;d zCOAs}pY2yOLxP=TGt~b_Gw(1s!f`$k@F$5KHGkE1mpzlT`xxX8fir=%yAxSbI=dU_ zKBw4SiKR=y8DJv_WAnE>r-yM3nNmokMPF7nNIcEFU^pV-3*e_fyNk!Sn&pDtO~)?6!XW$k*l zo2n&dMH6GswGA8AsR_6}?j8n(=!EXjLjlj~w*@jFu-$zv>byc{lyH@P2AdJ^Oo{9! zC@WP?#WZ0THvW$UhUXHpPyczD%>L$aQ3?Goo<`*c#sx|v{2yb2wdci(rGLSi35l^D z2^IuL@>(k2r_09ecc3(w!|I9wM?C^y#P2)0Wn__O(+AT|7#!++V_N{h^H zc+8Y0$ZIh%u85SH&;6p~To=fj8vKlp(=oOlni`lInC(`$Q{BV__}D>Rp1UY7+kSr& z`G;U1u;m$fR+s1QG~)xRJY{BREpZ*%n$&$b%qCWf-&Iwo46sjg01jfm(OO zex#vbe#~c9epX(=T-FW+D87lZhKT7DqjS~d)=#_sU5Q!WT(AE}+q)WjZ2fCTz5(0< zti656l3JR~^=8028)YwZJK7qkdonhlZps;X@zem!bG(Vg*9V=uK+hz0#-*d<>fR}*f`-wT8j<2=7maT9kI!yECByZgbJOIgC$2GUq`j?5v;Pm{Niwu0(+C=8Bnacq@VL{>y1jfIjh1m*!?WG! z6#sT3KLz#x>)+SSaXT(y-)+5;@hjQO_be&TrE6MSn;KdZv_& zOs1;0@ONAPpG*2b4Y?A`0hWJ}Ic|CF`#}DsY_pp5+%ms)2=f8MyWQv&zq^n>1s(&I z_i=OF^4a$UFT4NBhD%A#_{6ahXXFy+ZEuO=Ottx3?HniWItPtD;fsBXz5l>SVEM)% zOR_xnJ(aJuq5hIX`F4d<`8o|>9s2Be{Ef&rgWC*;oJZ;Ax0Ov{lUL@A%O3CbDS3r=1&F#v7Bz@gV zW_A|TMx9yAk$);@CUM}R>=~uT39J2CTp-jnsn6I^V|c`lOObB?Hv? zSL%ASR<~a*?X9(JzO6n=wxLB8XR`QNWf=M!)dyM1BxF3@rbn=D5ul`+m6mNf@GAxjBoS=L3sVTDX{R{5SfAKj*vb z_W;HN%YQR+s{f~(_#l>F#!=R(XqFN;FTq;W&FU#Np85>Iy2*zFLAHTC&YQ}qQp&8iE?bzuM>*{#NA6z*WHV-))Ykt7j4iUAIID+MIpzZ9cnbny?ir)9hP0d~z-Df5ETZ$F&+v#H?;!_XAodBccEpf}%7;}A z?aQ0k#ZVs2B`nF0PvF|Jbg}boZon8sl?<4yGoZ%st~Ppww;lOva2>F`cbMZg-|f52 z|3i4y6};sP?o~!LN1dfRTxVBkhF8u~TGgBRkXNbBvp&P$i++3mk?~@{$pX1Rl3Z`n z#~o{|m-$Mq%`zW@Wex3I3go_N<(AExWxe3>$DY;PdQnPd%ySmab6#Ub;P6NmyIR}$ zT^Tz6>kOyl!&c<0z%{_;!>#7H_20hRd}!1QwUSxSXh+0ZRN?$FS2h||JFAS6&>+e) z{4%`z&}*-^e@A{7ybmmIzx{co-=-e$En4LKeOO71$85v!wai|3`wZ`1 zqgQzUfP4V_4OrfPnd6qvzW3)ny`hzDLf7=aNwD;frd~*qq>||yrlC}_?wWo zfJ=ep|CBkN?tItzJ&<22eNja%*Sik6-YvR@A)@>#ob)+`j2QTt@o32~h6;nMp_OT& ztUIpcKV*g*7{;PWIK@BT9q&y^w2u{;+TMfMWA7UazfZgaa1^liE<~2}qqOscmNrUB z4LBK!YR=^z^2F0Joke?zK~Pv4ou8LcoSPqFINgtw^Y9~gI#xaC`eThrS=yfMhEMYE zQRFAV7lF0s6?5FiQQ19Uyr8lE5PMYS)qF&rL7c{=dC`rY^J-CLte9oI8GeWdqs7c& zjt(2eL}V|sILkWQ(vG|I2DGc)993Z*oFKQ*aK`nylIZxeAsTrPi#HjM47b0mS`}F zS~k#TepLcsulNpY`vaxX?2J5BVZ37Y$Qa|%gqHZ;*kVGON124f7Iv)Z_eSLV!9xC* z8HgJ~6@iiL>_w4v3F&CVdh$kSt^~#932C@rpb9dV>aVzs>NTPy!+sJq~Txj!(@GE zLT&?B1Izz}Id1E1*MNGP;8z>Ku=h*C1j^@kp3DHO`LjDLoL308IPYgoVXuW44-_-# zU*3nm3l(c&^@^~;2 zSi39Caa(`wyRFBYM;i2bQ-4S(4?m@BMhCj1uLe zhjpNRc`({K!@I%g72fNRZv}S%%lk2NJYD@JlN(v{qE>9tkjM|`;Ud%w{y{LU-*4Tb~DUxzGdgMEH%_C>LN6TCpJXiB)vWWXQz zf04<6;lI#eT=0(143bJ7b(}!dvoUO~Fq*v`g6dX>r#F!ckOSTX(AAxU@nZOk9Tqe5cd;GarMPvjwL;BYDy4>zJi$pq5r0uExN%H(T z8@UN=0@j}InB&DJUn95nf6gRTX+XwyyKKHH6Ll6oAsPD-pZMLC+zm2Z&n6)A8SZC4 zO70Vf^OQCxH#(YGP7M5e!w7dKSxcZQp3cf0WFS0T#Xce;SdqR-V&?#f#K93iJW6Hr z8*V602)OBPUT95ldZd`3Y0AOaNbO&IU(&xt$R~i4f%R{-Id0Dr`)=zE;}>dbCM{Z1 zeaeVn_0+{~^(dw|Ua-dLAWE3T1X4}91ec{{?=bvbM!%Hzmyo{(z78z^3+A}xweOaH zU9)0NRNMUOnG9lGaEfz%#$-mJRUF!q&eCj?iHd>yk z=7ycMi=0o&>Jqk~4C(KG_9>d#W^a}4S$ajLff#uz4j$1zao`$zl-5UPgztUi(5uY-1eUJ=c_=?=p4862m(p?ExG_vCqPwlUaWGyHl@@b&Q{cF zf^vmSW8l0Vr}M@6mG)cg7>-;Djsn(>N^?A2e}d-~jj2_#RaU&jq*}5++FjG8v)hu| z0#mv)6@I;aT;TK={tlyG_&)_?nM^MU?M3(<@cCgj&0UyIXgou}cR zpf5Eir?kHn;2mjjz8i$dyk$%z^H`d zGm?(?8UAfXzwqCUd>?oKSpHq+xb@e*Tff@~MOWY6*nGmKmSn4x-*QTG#JO;T^Guki zTH5)Q+WDFZ+V2BKukdF5nsWdY0?RuRS(4?m?`e5e%Wrv~&tUSWVN`0I9>crA=oQ}U zk#7Y%faSf*9JhS-JuRzz zb7SUwubx__x~#XlJ|}kKLSHe__-}Z`jz1&61H9iR?Z`wP%6~Imwy1i{Vz>Hc*}MD} zclp?w_$+74@?~XS*>SUIGtH7frD&4oU5#GbpSu!yJGdQK|L;VWl&(KlHl?ApwV45U z*{p1G`AQwWl8GwKt#Zk4sbo;=IL5SYbMJ8-A2>I-D$uyn$~-t@M;|`V9XHt-nL+-)iJ_pviE`H|_b|+FnuHC~MnqWmG2?%5`%uApYB1G|bHE zVuh}3+7o0RBoX%c8R~LR6W>tEA#a8rR&Z>HOk}Da-xIcfg-a-8jgJ$J!jKY*ZCU`Rc#_(-R;kyZW z2e@kxKAw%LFiWdq8MzryHZZas* z!{y}};;mq>Di*1Y_&^QimD(mT+LeFWL%t(N*u7bfv$RsPG*CO8lZq}cvZ`yoM*i*}neeEikL>P<0&Th{9AnmQu zw7ZH3 zrRC(2j`8XUm3_TFx-5m&lGLHbFa2b3|ZMA0q6Xhscf9M!>wS8rW`WO zw2QL4xuhAUoY58MU-5Sv^3~uvAij$Jn~){#xlil2JhuFW&+JRN=ClZOS2#CD`08@+ zXmz{aVR(Ac6GxBm^dbKN{0Uf|zamSjGWk0g&m8(RUVf*$<_=dgZBJpEsr{*XGs$xT z@+z5HSt-2BraL;?onZb4!F5XPvji^yIn?-!AmU(I!K=fF3v(}#};VLOOZ&U-Zw^bua>0zA?y>HVl=Y6|`0h>NJ7DvcRPCH=oNqON8SZK3oP%G$dZbO z$luvBXU(iK1uCaVhdoCgK9slO7|qL$;0fLWkSl;Q#k`4~p?#!y1J=c`1K35Va z%O?j?FVwu-&>Kgu_o*8t0VBeJA@L-1Bs&YnGMmg@D;M0KcB zDRC}6-k&$NMDzBdH;!K6eI5Dl;D3PSeIHrU>LK!Z&fFOlGiQ*~wuH^8lsK23Orh>xs{QRjZydei?@y3_58ecp z_piv3b`8Nhb57N)%GtA2??^J*oJxsv>8TXnj$<`%)!Rwl(~xVyI$(L5kR_E3kpo58C9yc zq=?n!s3UPQ?MWe4+8if-oaQh7r`9k0Q<2NTO!Jw1)%MqAQ2x@UhK=jEzGl&H$a22M zszMpD(f6YjMqf*czT1%R03SA=iBA#J?k4nZS-Y{RUd_-<-o5Gj?;l0@LABA_gAP0Y z_hsZCgP$6`sdiqtiOn|kt}-Qn7VQ!&)dtBj8%Zhh*k{|A--9pZl+c|4e;KNGc1 zVw`0*+GacNs2g&9E1WXUlDG|ax{Tg!=ol`)NAGROo!}!zujIqQ2m0R+GA?A6n32Ix zO9t@Lm4WSSgDJP@GVUU`-jd;J9EJe`<_mjFky75tXW}8p&8@q{hGg_-q#T#=8a;TR zM~TD)mFkx3dJzAgWIddXd<>`tHret@SqF!qe$BD!UU7x@t_OoZQ;(Is2kHY#GP?O_D#0%&62j zJ$OPMgv2b#gMe=gjq*R`DW6Fm`BC|`9^T+Th6&U_Qz-f!me`9gYAl5DOFtHLdXCrm zw)&mqxX^m!Ca?+EWb>`9p}i4{b1^m7c{z(90lLog8a-Y5H>w^!hWuIZxfDI}``X5O z@j8l*sPi_pf>P`=zwa~OmHPH~!$7nL+g9e?R@@YNICMSnljr98##Nlz3n(C#dG>G(66G+Gfe0Jmdl}!h9yaSU*^u z*4|Wqk*rRRqde}s$nFNRI!d2)3=3xlWc;Yx=-q&hVty}rJCJVzw;H`tpUWN`eEefm z!=?>u+BVd(htftB!p5&zq)w${oj0@Dic6hL$-x)v4w2Gyx%9#jH@v?_ehut5ynLMS zXH7$!@ZipH+!^lNmSfIN`4TB^^u_;`^kWwCT(AJxWb?=9BWf8c3sG6<>_nw*eS);t zMqi8ht>nuM$Tx!>>GiE`UMIm;UzEDd%i}o&wNhC?a0?nS8SU36wv6-SZR)+EM}L!2030tWW`8~Fdg-+S&~2tQ&?P}FMJ4<)>-KWqIV@74wPY6^;+ zlgBi=r8O?d|DHRWW$?y-{yU0ml+r9$DtR=+RIWnFRf={L8}i97Y`yC|RoC~P50drs zhsdvhp8=Z&)KAsPuB0+mI?v?m{F8{Q8RU#s-D~s~JAUH)or+uzW&)cA=vAHQS?HbR z^eVk_c}dk9J5AfW4IRQH_5T*++rgbiuY4Xc?Sj>>n&c&`PT?fb{g&N4%F++4XmfZD zVf5}r2jNVV-k%}=0{q(O6`QR-+Ls0s-Dd*kPH?stNQp@AL6@-7>Ns^qZ`}2rVMgyf z1Tx|{N;yGnQ3w8p_S@SPAL?3wvaE2KJWUMP^Kv=a53Q0tzXOOb`V zQPNQ{UDpqp_TTdp@sxjy{5tp}u*sHJ{ic>ghK|AQG0saxDIPj;qc0xNzm4TwzRY~x3(`ibG3{Q={vC7M#-ZseV(-#efv}Ny^H)l zpnbLKoVAy>Hw>=ro)m44(_!>g@!K+fE%o9wOfFGtwrMVH)$wz<#L~;JWU-*{YHiqJzKK8Hgo3n%O4uaRE^`+-fm{+uAS zaw%1wbEcRAE_R+7D-=S8GD&A?eesCz#Q9h1O(pUiFdx`t>-nJ?pYNwJZuGV2->Q0e z6Y{N~Geuv&dML)4R`nBdZQ|v1w5k?}GGWGm)J8uTCsW86`CQc^nX4jK3jW;Vm|Z~P z8@zg#$W4oQs*6FlXF5xjR+YK@nnp|iUg_9MMyn2+ZS^GMr5>W64zK)Dl6+TvM&{J4 z*7;YL;X5oTR{6IHxdpTXn{;{DfP<59aW4mTC$Q=PX;^;m!yEXIoYG?m>(Z!D^8Q{_{NJOPyH&y>klZ)-#Q zme$P`)E{|7&wTH3`Ubhj=vkejrwMr@Xi3pi%YaF3dviHteWxRz1FJ|<0rs(@5@~6OO zhSDdOJ+1G>RDE%yuP;U4KadZC_lD3%T$F^uS5g#K7=2Y)$@_wnkWU3Gfh5VA;(`75 zmMu-|YBx4-Me8W1(;el|z{}|(ukvT|v&QJ(i7q>yxf}Tj@c9(|RRi>IV}NDtC59jd zLCl#TXS-EhXY}qjI;8%*gZw@SWFK1Y>)3mn5D+p$?{ma*b$Q9NEsNEQZo}|@ha_3p zb&jr&y~Zc;^Eb$^gE!LnDUnU^^O`Vz^0JSha?daI zS3UEdI{qWF9_K-Hru5}qdYNvfG;ikrTqVmTNTr@Soxj_LCEL-Pk#7fg0h?0t zcT=;P(E6incJ$p`64>*0=@!Z|*82Mvkp4?$0k@G5PkqGN8cdiMfs%7;m0-W~~?p)Lw; zm;8*5T}W(aC_$b|(D#*}BB@EDGH@r~kWLv5vD{&5YlXy0(%}6sv;JkNhV8&6V)-9H{zq@;GmjA+8Q}3o{4|DMCfZtPhE7Qm)^VbOZjH(lODcQ zX!(xzBWax*Qr4t=Q~P9o!!HK?)f~GIOo(C2Jo9y{&dY@S=6UcJLNM7lFai7uC!f)*J&#REH0XGbyr@2Kv{g{ZJ ziOw8z&x0;GgXKTlp2Rlj{Mw6-ER2!s{!fu#1$~3)t>4((*06pZu9l#>#5q-)I8d!q zVf4leeP^`Mdo=P)FbCLV{Z{ef&^igNlbp3uod(rhXY_7M(R(BE&EWPy^vbGZ)Q(5( zc;_-vsq4)^gFB7hUadpbn?B^+!Ra~|hodZT+r~a+7|3T!3 z!J~udYhBaS)_}SKOfR78ChDy5qBPc|>qTFRzP};A4cEEh+{0;J-z+Y4JiB093)oqDiF`tL!6{;4rI1dp1UfOz{ zojOaU(nV=X)pKuTX<*c6jJp`V6(f}Iitilc2GFEGQ(0p3WAmEL&BBcXe#Noy&QZKq z6G)u!+lp6LaWaYjrPd8#wx8;puDei|^Io`Y{{0I1H{kU__*>fv4=m-pX-%6v>Mkc2 z%blGJwb?6xZev*AqX;^U{<4vb1@MWqFN=_ufa8Eo)<4#btg`WkQ6EQroJhb{xh*EA z+vx4kI#j;hi~JCHWDvdbko#En&q~qlSIkp+x5#-;R^g~W$uTJ>c~uX(4;Y^P=!|2m z*nbfD0}vQBi2Y5C>$k4M^5L=UTxl1^IlshuojvTIYqTd8c*HN#`M*Nz(&dj_4;ly8 z&v?ux)$(+?>)Bogj*FbPB}7W12ndyetS)1zpNdDFhHp;_-}jJz0A3k{k6{+_%u=cd zGQ4!_RW@oB7|W$`ODej&>K0G3(SD+3^?8o&GZ5yI{+xVOx*yV;^XOojW2QpXY}ENu zH(KSf%9l3eOTcCNGxg0xy=iLHLrP?QCRvi{yvR=WB%`m+=<80=_jTmwz}~_1UD|dE zp|{aig|;f^6+(U4VwCYT?Wy!S^w?UL(H|>G+Itl8G*F>G>u0a2kA}mqI9XN24>|7y zbybu`LKt<0lqxCzQ-GUvzHCe3*^YcGxML8WO0YFYheFide^MGL|;LQ$)94UTPfC6PR{%qqc1)tnIA_Z&jfSyXZ`X+#VsPY%g|Ql zd>d^x2P7B7d)=ONSpQS>-h_M$*fEG+`YW3o(7Oe_Tbw@C)#vn9Cx|LXK2h3L$6F+7 zr+gyc!kLZ~o$ zYqSnk-|LVY!9|1Vr9Yrz{rfcwPm?xasq>p~4(p2KX@63+o~(mW9Y%k5ivF)7KL_>> zqQAM#&Pt4+JmPF8$K-n3Y5h;plOOk;LNF58l<=Pi@at;ny{uVJbkL@D88FgU-n(=e z^ebJ)k&XVdY4btb*)F>R>5lWa(P^uAvU)oQtp6!`FGAi7 zTGQ#>x<;*h9fS8{oL7~xy7fpZjy3Cg+nu8KTgZFCi-YJ@{d`WHZ4J_+8;RzT&Rb}f z%B5?9&WH-5H$E;oj(rO9>EJ9NXRVw!=ORlwviRj?Hrv*3+|ssTV{_x=>FYP4NXI=K zv&`uXERzs6Y%HX-I!=eNV;4Mj-q?4Md%+KZwc{0JNdwn$OT6ata+%UqZn>EYsdjRd zL&9BC&w{$>RgQm^}kR=^~U$rXI6=oIHTun%p=tBes0M0^oupeR9h#(Fu?*wE?1LL0_;$M=L%_Q8qRYV1f5~0}#&gK4Cccfm(*L|_h&ldDr z-dmCH0v`dEcPFx>Bk|WxTuxJhN>4?r=G~88%j+J+Ju%1ymNySs(&7D0vdR{3Q`jyf zdWGXNYq7zP>6nzFr`zz>q1W$p zktH30e-gS?wv9-CPNL_4;q6AR_45Vfm%tAU*AbnUDQw3$(PJF{7-eTgyE*SCCG}S# z&j$;E^{X0L(vkS3HdGkWE9#5k?L@Ej>(j_jfiD5e`!uqo!gh(u z=R$S1pOvhq@h#flNLiA19P(r^4OrfzktH30zZ=-$N5;$sJuSNo-!}AFKRc1{0}ler z_X%W4hxIeb#?<G(h$;EH%XB{U z!ejH{b>u&R1HjtxH)Kfz_ixqLb=6Ngch32G_Kqs<^Q7(H>i9gUU&hvuwqMp~_^PKR z`A$c!1@*x4H6lw&TfbA;^oDFX&2(P6$!FlK_o|hLotJC>y3uF-`!@3TKrgU-KSY)^ zlz;P%z`xiPnlC;*$u|pmF*p`jzT=T4rS~s|Z3zE*3|}YutbdOoe-1naEZ>)qB^^OM zt~INE25q0JuhjmrXGVgr7oud z`Bd;BV0lkRmUIOEvZaZHxL>+uy{fc_bmg@k!`p>k>+e^Qp99|kmiKvNNryc@2e1y( zrB{0T3~%wwB=3CWC14q_yvHL;8mgV0dA>bq29TdG*A!NKY;&CB%r&L%TAk0G=(YZK zBYy=v3oP$9ktL-q-*eNl%K4fjmFvS4F>p>W*A}JlI?W%eO!7}ho(1Lt%Re7k(h-#N zrh0MX~*M99!(O)%->lj!H ztY60=OB%v2It5$m+vAtVZK+zyLq1rL_@rgcy7;+sW}Ux<89-I>D^-O*M@oN-<8P7E z+YYyM7&|+$!{);;k^cbx1gxEZMV6GdzW;ZuEULMR+A?2y**~MU0H@pa<8~BCH zuhp}Y_TG(rA9w&*dmloUG}L)AXRdTe{wsNVNN=sr*ts7&Y`)H)<2%d2iNM-X z=hc7B%A&egq%)gS%c*!1eOcgq+4YvGe%^r_b-wPz9&7KPkpB+;39P;EAWJ%u`no(W z)sNlulJ&AaJ|$U;WxvDZp*FVqs^7S#txf&PR@%W^X`YANr0rcXH)-#E$Pa@@fVFoQ zvZTY;+y92OhqmtB#?AxSVe|EzD&JWH)&Xm0BeJCbFkjo^Q<53m#(-r1e2q^zq$D;s zG^~?}wehvh%^OV%F-T^|w(ETE#y)F*@jTxd3&sI!|53=2{-b>U?^u6m=3`HbvA+fT zto^qm-wi$rto`>QOBy2oZN-)SY7*mRgJhY~(`$J9&}(_$MSfp6=WDJby1t~arE~`! z=Vnv?(Pi~FAa4ZC!1~pSe1v}SJV`}*PuHc_dJJz5dM)qIkzWUY1eW*D$dc052b-Jy zSkn(B#c$F6RxL>KUVywFTnH@hW@Jf6P>zRexQF9KHLplm_2@w^K7cX&ovs>hh~KLD z_n_bU{VMW)@FuYQ2aqMDZO^UWgR_6e2&Otxq=STm>p;CcnRNO)K9Yy4`6p z{+2CF`rCv29q>G`{(cWxQrddv-{M6{f3HE_4sHe3-yO)3{=@Q3Ux<{v zt(u$qUqIH>)B99KnEo>1RNSuX=RWMS=f~p3^mo7sz}kN@vZVj0y#6cJ51Rc>r?G!0 z_F4OXirfc&3#|RGBTG7x{9i?nMx7Q?`Sn&^x^pvU)`IwQcKERWnS34WUM03e=WAJY z(ym723&AEJX~^qHqW=GT*35UJ^BsS_Q)BqMQ~3XZ{2urK*nIJpXj_KtZ_h~fxBoqB z@@vjN^ww4R-fQez0lzJ`TakBwJB>|4=Fhov{$s1oaiZrq{yEByiaSjGPqE`4$o~TF z(qujbktGdLf9z>^O2ejA?6f1#<%()PsV+<3=Ar<&D6F@SmOC|X4SKEr7a?y2mjhcq zS0hVGd)^Jodb?bX%H?wO3zz}SS9!(Uj`bPdz38>PdB-wW1B?cicPz4`A^c6$&_S+8 zYu2r6)t%SW3kWmQ4%Z-6->LIu1N_#$Zsae4r-8NatH_el=F9)yx!b1J;pT8t4ch#=rX(q(QA2E9OpZyftA4Wo`EcB2!Dqv5&9guW+ZzX>r!rw zYSkoyA(~q!{$ZUzJF&ys`8x6+z?;UlA={Jxj&-*Ab?S^g70Z+MT!(xMxEqP!v zGVa z^&dN|o%bO>3?2d2&RxiohNy@3yj!=n@ys>)LCBy(Y)Vg;;XR06%R6iZZ6$~U%R2#C z(qYfLBx~IYMs=pk7`h!`ZS!R7MwO~RqWx__ujRc3`A%>*u)H5dmUIOEvI$mOL%LR` z$ME%`&+;8a4xGT+ZeaN`ktH40&m`NB&wXm{(SEK*ujSo>dPto`HNGs0EgHEwZE|@VBjD(;C?z zTUF(B<2dn;X@9%XYyEuz`DO59V0rf;OFFE-{a6oep*jp-{NyCx9OQ+d8d$z#ktGdP zk7pji^LFQ6?O!MQtbd4A`svpq)b)nDt z_f_QQz;}S!Iz8 z^Pu)~JNm4jpF(~dd=6N?r;sHbfuB5ct#9CtRfTL#cMH;Cc%2U=c}tMXz%*caE086n zEl+#>7{GcySImgqf^=|R0w(EItDBH6?e8}9T7U0H{sedwSl&+~OZvC`J$=pEjScB~ zL`t30VfYWC-|~-K={rY($-weYN0xNh@=f|}*^6q9FNJ zfVJ*8+xhLJz=6}EI=|HqYkxPO*Ye(kyaU_?Ebl$Yl8(UNwo5myZQf|y9Wd8_mUp5a zkU3y@`_OB7|Aibmow@J8^2U%Q9oFCetaU4KcZT%!+3nK@&JC{ex9bzy-__`~ye-IE z!DYbmUWqJesCK!s^8EE1o7c4K{fKJLmacER>`)Gr;=sII^T6$}MpxZkvjR&2pZuQ%@d}cerY* zM5Uf7k^EF1j~?<>7H=QQkSTh8S4rGkzV!Zku0Q&-9&Z!41IrwH;Yf z+IsPS%&Wl%cj_L|^`IBKtzUme{s%Y+tY7aUOB$lQY%#UTEUk5GRN$+0ml3DW@UA#3 z$-54@8MFb*yA@f|VcXOGtZ5%ac06k8J$kLbBUW<{55@z_I}usZ5dI!gl4_Vm9@M9f zb+X)aBl~Zw=LquLz~<8C^*lf@pAJ#)oKIT`(rE?wSr*kbLw9QitM6R`PuE3%{^>Zh$~vg@RI3h|9FTx3hRUN6yjp(*F4FzB>?lsTyH#kDkRq9);y;9SEJwZ z??dhbuL0}#eq>2Q_K%Z9nla&t^@V9ND^|VY7^mrkez{!E>| zMK#-1<~~N|0$emb3T3Y2d`A0MabD8D$B{n=o&u7FtatxsyjtNzS2+F(=4%=I52o0E z<@vsIJ-7+j^0@_B(op9+`w7aOWB-YJswf7}@BdyQ<=3Q)11|T<6OT8XUgKXc_S^cm z>H=aAgR_C8A-lJ(84 z^$m^n(uy>w8->Bf+PVyHacz=!F7hI<1X$i>$dV4*ejLI&$UU$q`mFZ16TQ~oSCM}U zUI&)<56F^+@b{1^*~;Kz;(Bez{gPL3-SM1x_&K_Y*VtKAm$dU*RaA&YvLv7W^JqJKsQ-l(s+4dHdh6vZ(H<#N^!Hk*k2c2h>ss#ozUW&ey87 zNqY|>e*nDtq`g68N&ikgB?3}IqMph>$vP@giQ?z#yQ9=z>DDzwmSl?gp+~qMA|BMB zhguuzFB$A7s%1Fj+Da6;w!_U5!_jV?FE#jW%Q0siaU(!6u;n-kS<;c87ymEGl{C#- zoynICk`MSTah9$}z7^~MHec>UmNZ0tv1cAn`Wb3ET{Yn;V?Fb{(F}bg)+ZX?KJ;4N zcaVb(jDY~ln~5wbZFvmBT35~B$M{+X_jJ&R#*~Hsb)VDqU^RLz?>6MC!L`8h-heD= zsCH-0?BoN$6rTsZCFnD}z38>Pe@1=>ybmm|w_fw6Z$}1YEo!;TZFXDK(#&ttECAr2rNHuEfh=h#zh}%%_?>*ZoMz@##pgBeUi4bt-y#1E{1aH- zcabHf_j@qbq7L_A_iDGp&AFP%xIe^k;9TTgkm&Hop3?j)8k77NB3}&Jf#u(dENLje zD-&+_8*Iz3Ib>A_>+lS34|=WNeaL?XZvo5uHnODjey3r@^)Dt}|2?h)r`g-AUGMmU z_PcsRGJe|0$Y+7`faR}8mbC0l9Veyw9R1$V+S=UOR(@)O1OU&kKAR`5BYEQbfXl-D z;U(UM!cyj~O03_He^K-8LZ9{bTgZFCi-tq`wFC3l@RUta!m9Sxrp=9$%M+`*AuMvr ziX5lf=#Moe9 z)#ZNPbvBlI!@W|k&?^DaOuVb`MtBR{5q?%s-8_Ct``3wn8#n$DJLiMnFZNRyp)E^b|vc2M9)X$X&##!Zlsh7ttO`*V~ zz_jeCK{r&v?j`er0k1Ha=`D|zju;=D7Ay^pA^38@o0L}^E>i!G3zlXR7A>PF7z<_u z+3nFI=53J|biGlk*0KztPpt!Z+MNFzllgTfas#*!Sif#TmXxNx8o$oi%+R8Qoh+(8 zkCvbiOrSM**!{BWyzG|d6nK$XjB?A2c*8QhXf)f4jv7%M%m|I87_T42?JWFbsPQ72z`PBliZNIKXz6*R5*!=nq zvZNKewLQBY>t|ODi=-x(*KCn9tf<%B{C(H$b${c1pSXyRx@_o)Bw<>k zv1oP?fhuyM!OTKR^0LfvBfN2uaA7n!o|v^_YL!3Ro9e9%jdCZtC%UJ)g}OCzdcUge zjc-ocI}>>cSPrbcw;@Z~f0MRzMaLla9^ats?cki0^YU$%6Z27bCp#6prIBK97!4!F zjwZZiXn2sV3<-MaO)ByV_%z?k2t^6N8_nYAu;RSnh_D-uWaa0Df+K^Yf^IMyC#JAU zyqZ{3r~2c!1{3BscmxGgl<-ZPD(k_!< zRo4uXU+~-f>T@4*f91M;%u`Ws*Lc5Db@pu@&v?^maf(<9oa0N#(V$o9XGDs;aHZRTfghvQtBK4D#JsbD_qpsft1>e7oX*ES zW2fAAyoDUNnDz=-KkASrRhjE(=eiU>S~%N|-Po{Z^A-shN|`?#P-XrgMK6W^+n}>6 zP?}TWRTAtpkG5cUtsp8_OjOVt#x){ewr{MNVI!#Ea1+&^svea+BkU)rPOERp*oN%|<>3 zR0GR*k~wa9-Za;-B%f?ZlV7*2Hsb7ZYn^o^-UKdKsylK*3SpPw+lfBgFL(m^Y49~* z`CdSll;*m!@+@;@S!u4w`SCJ#z|9>Sb{=zAIwzJy3u4jC>@05t4lnb=iTg%pug>4% zwj}=yOrDJGOG2Ey;@c1wMI_&ECM{RV7&BNv_1d ztMj9*J;`5wKTFYY)7(UH<{{kH9`-%V75dra#rceyH#Ax!|*wmB-{BS}kZ_ zP%J{U=?JAx{82X&ie(p!3Xh(i8w(Z$!=dS6FN^MKRxsm)ss75qhXTWca=rRAkNf=j z-dK0Odse7iT{&A`)aBKSy*B^$BmV{b4OoBvg)Aved8PQXOa~awub6Ul1P6|D_HrLn zq?^d26Xn)pcvoyq^41}@f~~;vegauid#%aG3sSB#Wm8gk?agC{d#QAmR?15*9j4vx zzf@;fGLb$7@qqnEo_|zeVs0!j$t%nDvU8%DCya=e__G3)5xHP&@t1p5ra#y7J)J)X zj2+UBzl$8&=Ce#DX=e_yB-@VL_e47`t$1uyt{W@Qm27Eny1WL*nc+>>*NlpnG|y`E z*zqeoaP}bjA6)p4$FVQ*-%QtpwcCBPmic9qx^)SAQ8pWZf=XG4}YSk#MlWTkc;j z_dnI%EN{6t+nu61n6V$|{M&~96^4I1^2fjf!1BL@ENR8Vn%{5I@9?i=>yIVvCpYME zhN5owPwo>g{mO@U6B9lca9-u^x6t(q1KGixXm*Z&zL((!+14!_U}O4W{^)VRVWCLy zXgZw5MYF`NM_q5ax6#{R&KBB-m$jYo%jxG}hvd_Aiy3@_?TYjkdI?-3n|H5}KayR$_uzW8dOIoo; z^V#ty_+$j)R4I{8n&3NJx6_@YUQ6zPtlRDOoUULg%O<0tXk@J1Vr5PWl!zVEyjtQ& zvJ($-*N?Ov#aATjM=A1DPywtRRmhT_I`#KK<`-Z2kI0yCHsn4qX{&C28 zD_FWBykzdu@Vr@}VUe;?-h^OyncP+u21|+~;o_{UahXSF1&{Yu6izycyN`$;j6|cs zoZ$FKPEKKLJR8x5!x=L|!OWH6)1*cp>;2mE8{BpNgkV+ZT36lVckk2w)Lfa&w+oTC zfh&Ra=Of6H{(k6rRW{}1rcIn$>!gB9pF!UB8FrgG!xpMD>`iXrLJaP(Z&%cxMW=m4 zIP7O-OqJ5RFf`v?r0P`HPqjUL@Y(bH9pva$#JvO7o=M1Q?O8>*IcC-lw5QX(PuH*N zJ5(OO?>cvdIpNsV94 z|Dv4BrVOxSRYQY}6@7#KDqLRnggK|PGQ4r@#4>hR$jgh!20eLxFn1j1)z3BWemJTP zuYWZ$?ZH@J^I+eIC&G)|{zYX3=(ZBmc`n;75GsvRu-O= z>BZ?U=7fXg;ptxN6fc%lT_SQYJ}fdVyp-{+tb(Jnh6hh&L}+**XGCy}7YNG$k{ceD zRTeG@j+wq=uzsyTmNcPJ z`}Lyf&yjDZB)yV4((C@t{k{y-jr>0C-;?e`p0l>pTSk?*RIWA)ybHWmdbo&^dVa0> zcN+b2o;-y7BzO*3{)}rizb!BO4!_*p3vtaDZm>S$^YXmQZPrunNr5i}{Q5uvJG$KO z`cZ=IpY&sIacFVQ;>hCY;^#w)y#+Ui7yQ{9_9w64&z^U`UvP8S+aBgN^@UKu^P%7m zLj}>`u!2aipdcrhUl0oR%El#C-YB%QpT%F`Y-V^>7V}p8Ui({hee%3N75V>R@4e%rs?xaed(OS*o;#DtokeH3XO$KoCMNg2bVS*n$uw0wIPX_Nahh!Pu}XcGj}u+8d&4!Jf73vaSU?Yt5>Q zth+0}?{m*RnGlNZ=Y9Wp|M(p~&)nxuhVwkpyPXL;(xmwZH=Z%`~ z^7^{DOXk(~TfS`m;0jumC70LNLc&&LG4?WD0l3yFlC7S`qwGayypHQ2T|0|owS-%B z9PTnJ17Ssed-<*~|8JMi_(qk_IX_iz-GC1P3uUjJG{cI8!?mpQ}Mk3d};Zg3;agFtpLsUhrlTvRQ?{{?FP<+bN}-H zIrrdam*4&`O6^aE03QRG0MPtT15WAf4*L|p{Zvd`ItF2ZsNrW-^~Ujj_YscqI9qIF z7NKY6S>+O~_V9N1KDGLEHzHrXFS;N2lYnOcn(nK>4^FolCO;nCnmC5C;TX!EWS22x zJ`s*uBWTs%0K)!4qxmOQ-u#PG<5U^&et;N2(;WkxQfP*n$F*HkTY2lLs5SFIk^H= z1&6x!7Z$bBNV5W~Bf20mjLQ(YQ%;9nr~9I>{+C~Vq76dSzi$No2;fP8=Hpx7lnyXI zRMai)pYVEi5*@jl->H}TxNB@-Pja-o5JZuIYuW;KDBxteqAwP7;Sv$Wb*EkEC_2FN zuuc*gPQDxNOJ{>;T2B)Pu)F(N@j3XC6rbaO9}k!Z(0pD2oYH~$97qSER%8lzi~4+? zgeR@(h)*a||Ksr)0iV(idVKa2ZhoMROB_bnI63yX>_J>Ev+h$|VmdDs%`oC z0@^Akw~LigEYmX$<11!$B04*MQG8tux>{bh0lyn?A3*c<2yjZ%JKR5~`I_#yP1AYbIYJjG@3HZV3PF`}#e(0{Z_D{Fc z80Y2JihMO)>vEJA5Cv$uQ-B|g?zFna4U1~WEm<^=`bFg<@cpao1jqpl1Z2a^W(#{0 zbq|Gi*olNPU>ZVopU;Izi{!f5ICLn;$YnB|X321=bg4aVW{B_WO+n2}@p-k+2aSVw z0N(<54xssb;bz5WgKxL8X{VZpbp88EpyJKE*L@ti|2=mx@A+2G`=GSh%I2I`09cXi z;&yflffdUVx5()NEGkRgVy6UHS6Svp9jt)MyUFfuSEmeEx$NO~bGifTDSNr)P7h$c zWgoYv(+gN%S>g6}`T*-EE8V_M1+e~dfZNZh1U68{-2To0U~!pn2RboegXCa0?j(Q> zk%zd0oWa0`%3KRZ^UFv z%*_xGfAmi=`DV<`5~zUaTQT`|%*_#~g6KOj`RACMCr}B|zr^JB7?h=`hUi~o^4*x* zS)d}Ke~ZcYVlI@Xz~7I_4`ObyKxITfjL97_H!4sa(T`&Cm#gCL zSb-{wu8zw!ad*6!0Q~&8TpM>Mib=rN#pMNY_b@RT_=RzKQQVy(4hMd5T&|D1Q$;oK zOX9LQ?j9kMz%Px<%i``dF&+5jad}1DogrodzcMa2#N8vsEZ|qg<<)WbC@~xOHF0@u z+&x+x1N^$Uygu$8D~ViEAWt71vSMr;_~6Rdx}^I{E@hPH13`%P6Pf}Ts|Im zPZwtZe|QG8h6iO;#_)rCN7_iyXP^nir)Shm(RuB z)l96Rx98*Xg}8e@6Km=1#kkxSch@m-0lmExmoLZN3z@ix-d>5zSL5!*OsuE3*W&W^ zxO)i`&Ghz0T(-pBOPRQg-u@JqZ^qrrnYe=9-iph&zttP9`?d+ZS=UGw%M5iM#0S?{WEM+`XHL zd+6<}xcoZq-pj=A>Ft}i{5J01$HZoO`z|h9=T{DI#75trY`-3OR>klucX%OB(J zLrgqOZ~u(TU2*pjCLX1?pWFwWf`JcG^6cbzM?Z0vP zOWb{$iLLauCoY>3?lVk0OK;~SV#aAa9?C%8@-*M zkZTj}OH8~>Z|f5Bf`t1D6R*i~Z`0f533)}reTRuZ)7zB^xgp{Hg^BI-c2z=NopArk#Jlu%O+sFqaR0`{ zd-Qf)LSCP6-)G_jdb=SZZ%nu!GO>f+Zc50F3HKu=KBl*u6Y`dX`w0`D(%Y>Gd0WE$ zjET?b?e>JcBjJ9*#7=sFvdY+?H_Had82?y_AqIC)^9U zxQO0fNyt|d?!{cJr?=M<^7Vv!2^YZk(5s+{R!}?q}-D9C%~tZa%<9`0G~<9XOsQ} z_{XGtF6mEz&nM*zNq+)-F)6nt{R!};qngUr+iI;2TNVlJqCQ zKPBaxNmosPZzbj1Nq+)-Cn^7&^e4c-B<1#`KLP$VDc?={6X4&H^1Y-#0luG(}<<6u(0scKHzfAfQ;8#icb<&>z zze&n(ll}zwT~f9t{R!|NN%?(JO@IYIB;~3`)XnNfxuy|ybAF>-+vwNLx<+|HqhB`{ zHp+_{{kplhQLb*kV1+1%*Y&83arLA?P^em@_NRkyN$KII0-psq2B7z+#{;L-@jT>&Q+?vuG#DNb63s8HBW zPZ+6n7u^J%1-!ucVjh9hU>A0x)q{;<*`7YA@?<5yP2gASt+oJv3Gg~V%Wns8O21a0 zFxL0V(=fiRF5zSOGfEP)^KpWUdK6yk9|C8lb~V}R^HF(6%I;%4@M(Zq0L@1&a7tzV zxrnyE=qOjuh?oRheJ4fL3c*0>Sq7a{GnBXRW98WWK`6ucEI!EVi!F^x4x5pGCGw|s z^cwKL0zLp}`dG-~#eps`wauXNr#`@H#*}K=bh=a7wo= zQ+&)jT|GPULDp~M8ka04QM9mEOwUqmsrR`aW@99k?}YIz@ndDcVNZ1KVrK_u@L_0Y z3*gC@PHq%k&B9=?RQ6-=k>qGkW!&kPfumpn;}!Uhh0RiUoQX7%1Fy;SumMj7YXf6< zFnby+gymbAIl^me#P7xxs(ksIQsaA1;Bmkq0A0Ruz$xwS;D4yfw|LIN+G&gG)Ok?D z#bg5!_C{KqqO388g$nr;7NJ%@6~4P&dHZ`cPf_%*M*g~K@llSYI#!PDpdPT$% zLAYCx(?y^%P#TzMN;)%~X`cnZC0IpCZ)PkxRq%uK=75(0pGAoYJq& ziyq&jFgc=OWL2F2&AJ>xjGoVoccEHOheo**FI2<_@e%OV0#8VreLl8>jy^~G0r(z( zbytdyF2E^uJfG^=K0Q9@+@Bg~!&_97W4xMt97YR}SlCHN+?6AF0gs}k$v`IWM)H`% zZ)SWfcxpXO$z=iP4F)}u%UQtJ11<+>x!ez&Qub-89vAp}?T-9VfANNmhiKTC4CpnL zrtmko(F~)13>}d%p5w4%MFXKU3~0QY)jJH9;O##JaSx97%sh>%GZbIO-6=Wc0xt%X z0W@F3fK&Q4IUQcRQdxDJfn`hx3|-8OCvgCkPGc(Ut}K>=V*tm>4}=Wk9A@FuOD#Sh zYeA<3-;jK60e&yw4*<=_%fKo9TDu|n_{}EIb2uE)kHqs7jK)3jM1nRaf2$H0T4X}4 z55X)=okC+>a;B0?{yizV3;;e7Fb<&kSpb~UugQh@(aopkG#u3}0vv`Dag6rdXu=^0 zsw{{((c`MGXV7l(ZW+YgK;rIE#>ex?ZR@etvlM@ig1(;L-v<5(U?)KH_cL%xljp1U zbfEctMtx&D4yz7BN2>-DdYui|{%!_`F3gDFY{d)H784)!*36W>Zp+z_#m{!o)BWuS;O6hK{sL%zx&WuN%(u%9 zt=RwgsoRrx4BX0|W8X2>%4UD3Mon&f3x3Ah5>2WUrqm-b--M}y4Y8(K)#d=+!y6ny zr}Z4gR|Dv3zAglQ72tY+=Ic4&lsejtb{q$&*4k#6n)m1+I3EYV&$10@RdA1(3G*(2 zlXDjaJUD1IVXZ7oyNf{Rh-|o6!v!B)E~ed&y4fRgp5iZZUuxdz13Up33efzG1x{)3 z0wpi)m(-Czl3Qwdv5{TD$p7bA#MCkF0DFh0}3}d#x ztuwaz^qY{sF7KtlZv@;5(Dd&HPHF$;oiJx2KPcU4@I3P9!U1lT=bobo-w!8E^ocdz zaqcQu2rJT&HGca?zMAeT;LU(50h;cuz$q>A_aoZxPSx-9#=6CmYv(T;hfSF`Azwff za&Jt?&#~>y_!3?x3Ha1bHoZxBiZz4x@jGCvPrnuUYx?33h=Bpf2Wa{OfFGQGvhKtM zZ45NA3%#-*eY`+ zJa+PUJeM061)?xLF61HJ9g7ljxOdas>?{$6NjRLTz?jF`GQLpX?g%?e#b4!vsrniN zyc#eAp!r)2oYMZsZ`v1(oHlym#A)6p-ioaEZ7)%6o3LOCRC;Dv0zop&U{N68x+bhC z4dZfV`3|zp7b-p;1)Y4*q4m=1z`q212he=vJf!&8zCn%CgRg5pzY!m!moI}V!536P z6aNp}!&nnv>3yE=efHXe;o~{B6;}xa%6RwS>HJVD$IP;1y38Ey=A`GkvUn1{$+e`F zPEC9U?_o{jGkBh?4dw-E+oXs3y;$+x0KTexzRv-^4zM1e`Q8AW(q!M?b>H^x^*=S< zt@PSE?&P{9Sj3mmP*;iOUP=9{VZEZa1NrIp^bg?w0{j=C>4}FGy{-Fg?=;?MyFN@P z$9ogXX~yqCZYB-q<1EiQ4*a(I^s14c?$2|8Hv&!pXnHRJr?mg^eC)}~=Pc63H4WFH zObsUib~A5;yBXnD(xUuuET@ZPxVy;0Gb@b9Ikr=51%`@IVa)Ck9zqxaXIj_U;b?ks zA@9>E*xl(CERgAiyf0e2$TGW|86pcVWYe?fLQ;=#zMb(LHj8)0P`&X|CAa)X6ra?- zx&!YIhy!#v#`u5NepmXb$BDK8E4>kCBONx`FR*DwDQ(=+oS>No=Ua%ci1+i1u}C17 zDZ0(bSIh4P;6DTQ05siKA3d1-yt$YrhF10v_f~2Tss-DX>hYQS@@n;#rKTl><(Q}}_p~bz z>8VqI7iOLa&z68w&=r+f=43coa9RgAO1m95myB+u@z&-8gb@T^S^m_E7b*C3^#M3u-gQ};Sk-!$zQrR0de*UfP z^0yzii~t}VKmJ~g4z$nL@~7u0 zr5>^(bac`OP7B-Exy)$7nj6EQO*?8V_s#Bfn9|qF6d%n#AG<+E&!5>(Lhk`6186>C zz$qPQ|E&2?`)8k%ys8H5orlBhdmH-`Gp?W$0<`eOaK9;}>2VZRfc;cOHQb=&(F8hL zPjxNu-vNFP(0sfMoYMaHAA7f#z4QzVP)Q@9XV}JGW-@V$jkGGbojdefmTpNpo~Rvv4m+F&49U*?5cMvlV=lfDh__@@ee*0EGa}XB0T4 zmHz(vJwM*)zT<*Ahr+?o?bvLxW){7~<8LQ3HgS9ye`)W&igP_hzXAD|Ab+BN4)BWr zmjX2X4Ztbs{;&N?6n%utRTWADQq_D^AO+3c#%^K8@8Qo*p*(6-$lR*i6uljOenjsl z;2eut8=&cB0;i9>E-)BI%r5%V0N450bx0i4nS{p0^9ZfZtj z*6E6+!L!f_85Y1e3Be^$KU;l%7J#1SXBqHSfXjRys9kpS=U6;v*@6mOv9+=R?ZT?8 zhKs=!Kg6?qbhKe(2Wx|x);+?R>EGxmrs6-Y8EJO!`%abj$ zoN#BHNH98zhF=2nd`_tRt(%m*oaa*fWdlzDMgu4vkiSLHig^4rvGLSy@9}gFWrQ9< zACu_=A(`P)e+I^Di%Gtd8>M?Q909{U%Ah?dlf^cECD7Q@p?SA?KdUpI4o**~7{$!Q z7K(SO3L|(UbS0B_~q1&#Rt} zE-(yh&lU>d-6P6N>}{zU&R;2!`! z2Wa}=_b)x99I5b$!~YN^4Kq8uK-8~P$C&_YhNA=Q`4r6 zjX`AD#=9)rC_rvVsuc8V)Qg{QwaUYj)6u|>1Dwz<-v#aS9bH>T(ZbF`re_)RC9-sg zbugY17!`p2A#8y6sf6YgkqYP$$484#zoi}h_ke#0_@o{Ewe9JT^T!!syvKx*DUi<& zKcD<-8^AJq?qu>;xU z6FY`+pQ^7-?eh5p@P`3Uw998xhkPK`Ri^PV!^Z$6PHG?2{=8P`iI{|{#A)Mu3oTH$ zP48PoO8140;T135FZODq?c1#WHT|xwg)2-|DI)M7fB(~H-mJ>i{8DQC-30tTzyko? zj~@n3spCBd?dH#;2UYHKZ|bM4!^NqQ`~7y0{PcX}zHAv8fE)lN>K_M;le0IKA;zc7 zyEwJl&vzE`(EGZRfj0qG19UlV15RmM2m29Bw{w@&uc)XcP2fcD4xiC;mXh^>6}SaceetumYYYc%NcX+RF+c zI16_3&^2SuITefiV^|FiQ)>7|3L=Ko@}R2E7Vuw!cPigb;DJ{W>l~oVw+T2Uy}#*L zz8<~ip@6vSvuB0c;8>COF%@XJN2-9w{r873SD{>6g>f!I<%Hm+>^d1-=2$(1m6I?B z+7689T_+Z>14GQo1*oThlf$iraz*hv#xG;}&<&)U2=fa)nCrNmU^9on=;(QL+P++_ z5NY@Zq1*(VCEcOsWRc_cbwe&9ZD*9@4<(ouc}9O=r80o1>s-bW&m#*OM^olt4q%8G zj*9123mS6sBT7E4D8Fu(=4)6B0(t_peEtTUQb&D*uKz~pUB=O+#9oX1l0?%3&>L_h zU?QLl@PHD{)3)&>V)1)o$;#=2b7vkr#2kd^w>L6#9dialG>4kiZK7E&;T&~2 zt8u_*0A>TU+_K;J&F#v&(|J^#y2`VO-D=V5@Hvic&gX2MG}c(rU`}SXonFjmimo9G z@q!(!1j7h<(lt~j!XdcN%EB!ACL+SQ7S9d@3qk=nnMPyQL^&zxwL(c3@3t-cNt!DP2*@)BboX^a)tPo?igrjJ2FOe>aO+;?T4RVND^C&|!Vus1K zGw+?j(yibGF*4ZIhDE2$!YI=zP;Na8$p^1vfpo$iqQxLC1KlJL`~+yt7A3bD$VIoe z<-jimYyfDvZ39keV~6;Ay1mU=wq$-HR=aY}T-D-W=gT4#_hTxc0FVWUdHwJ))7U9O zywuKs#sePbwi|R2>!}Q0`7VXRa|WeLm~jXBAy#(R?DS4>*3X7n6z30unUbxF-$+ZU zp1T1b2^a^^{H_E}Nym5B>&W)}4jho;cMI`546rZ158}!M#13f3uS5L8j?761zv+AP zo96S|r1;(OjN*4I_|fuh0sc?G&j8Ku@;@nlH~IHz# zA`;H1PBMb6k9kM{F4Bo1{E)G|Cv%(Oj2XiWdE!Y{OTw_`zSTUwTYJFbX@uHH;c9dJoWhe0THxcs( zpyhHga7tP(D>v;c7w_Kn(v9IO`AuQA5pwY!->A3u)uZyJFv;adMEa0QE|u-%LeB61 zXL9j!IG9}eE4f^?mt3w@a)Dm1O)jq~xwN9(l_)pOkJej=g$l?9Xt|UEr_}L0RJWJv zIgLwe^#qVtGuziPf6lfr;~rQYq#;aw7i$#hA4gcr)!a<^ZG2tPZ$SQfy>%h*D*@L6 zH2qtEQ@Y1L|J`)e-u2R>*Wt?-d)HT`Zm}wE;aBiCc$%@3ZQ({mKfan%xhKGW`y%Em z+;_a;mmm2LM*dWO^KHa@29y9a{U3o-dh}66chh5g)A!0hLq*iVDdRcnK=DuN^l+^p zyReespBUJE6s9q1EE03!qGr*sM!mV=nn6d z<{l=G+rYcJL*#LyKiqox7AD4HRTsf6FB}(T2{;VXcT;5+*6l7%6m4XByjc^#!0u%d zkV6A@MwXQw!rezQ2cfcZ%`8#wHZ$`n@4sHog0xcTDu?qdtQRKno>)1g10rkLipX*~ zp7LLwwL;#`+&h?~{?n1>R4?xQHXgj6*+uAar^-(mn+B(|&^jOAn7-Ae3N?e~)#s&tvLCq4u z3JlvJtM3RIyO<#~!pR7kBGO@7-d|Q+%rHTooQ~~K7sO9x#U%pKOY#^FUeggCu~hV4 z>)l&%Bjanh)g8;!fmWr7G3j9z9LC@z&fH<_P%#Cr$(h4gn4V__tI zsNX(YKUC%03I0pKKlT5A1OElUx2rPIey`&>wl3E^irzK5wvochbOrBSjkAKZJc2UM zv2DXB*`e~UMqZAe|8c-i1S|w-`JDrtQb#`@O$Ra~UkEEQ3u}fD2-P8$PzZynWT-cu zW(CqrEOnubI>9p~Z1(AHL%wbLKH%R0egtT`-T$iS?sH#~zu#ePU`3maLl0yJaF)`UF8FV&F%wk?3a{|FM{K+)aGIMZ=h;T! z=Kxj%bUCj9PN}1voo)vWo>}L_rITxyE}gz$4poPWl@&(2AO*meh-r2%Hl3Ye=n;`l z#1#>A7i{=W@HYLeJ|8HjdV#X6#1HPuTikWrL=IT~V6j;+i0I#kThhi$}rIbolxA zWW9W=#xE3qHK4EgI}P|czlYcw@l8Br+k6L|Y5%`+|nCS8NXWX<1i(4!* zScZ*D#GGIl`(>zOam7I(i^jiY)-1ge+u`%I8+0{ax$j#>6wnQz`5FTJf8lG)l2fRS zW|b77GxmWB{YzYp@&PQ6J+{D%*Ne#LYpUm}SiMuprwMd4AJ+rF8?YIm`Dg+Dzwj}m z!RslcD$4_)w}6wY83h={4UP^vH_l9QVUP<$%K)?_K^{QhUl<3iMHF-pYW4Zb{~*QJ zP~Z~)QvjN;(}DjleAUjwqNeslFJhO4wHA28wKl}udfZEa?vqOzickiuQ7sCE3nL$i zkj27wMK7#NxabOnPBzqFnTGKZOWCs+Un)6n13x8Th~~8~fd2s44bc1^{-NS`SO+^T zJ>KAg*p_gvpsOFbZ8x+IDwHWoVp!cWd_x7A${XW zgrthvVhA5*hfIW`f`$^k+eFx@h?SjXBAiuP0CsCr%t`1=2$0IVIpt`fz4$NQn%&s? zl`2m&_?_jK=P}?<0iN~CK=X9OkE`8r|J}YEY9brGWN`y-4;@9lha3a0;V20{KE>!n zkq#?DFka;*cA=TvGR+W1tWYF?4XWkjg}{3s2jvn<`Hpe&YsFvXj#T@Y3Va%17Jw4* z*U>(0e{w#2Nh1`E%8(3Z^ItQ3TxN!_WW$^aT`tDd1AKxbTVhFTn`XJUm@_thp{5E$FYtU2BgANgMKvmNwGK#$tNH^Bc*^gl`QlMS5GX5arw`x|P0d>*FE zsrT-(X<{#UXWG&e`*+Ov7&A^0W`3wmc|W)mc?R>ntQt5!lz2<-9~2)opi=@m#K*b7 zZvxx~&~mB!RPiy(zejV^`n~sq?c3$Jx|Ox_Qq7{cnSUxS;aHiLd!Jpr&-3{u&;)$V z-gk^$xZx-}l!2h)<3c71l1rj++6kmBmY#RVt!3250E#(V!4Odm8rYmYgH!<(LweuyjK6L+{K2 zn4-Wc>xVPUY*<%2p?os9!(@}+Ut-CVQzuXAJ40U2#F0`;y41Cgoo5b|rEm`!Ju!`z z(~{@YzGfDG$Fgh81-v&q)}BeB=`!+T^5PSFBBqAdj1UK&S=R{f6LG{~;&mCmqHc#}_Q&vZ>1Jo!5!fhW zPK7;cnu(>qH`=E;;WX*cH5)PyBS)I-67CsR_t`1m`p=kkDxb)U(NHS?rOL4ueCmDh zy}(}vyaCYdId=Q@3j3bhq~@<_3zjq@s>ZTZQ-N#wMdllH3CU{VJ?gyAv);hL z)Yt3=+`$OdRYs`Z>TJpa-IO3Qb+%l1GE=36)SQ%t!5?w zurKj~hks4MUoQ&cc2S76lzM`9HYO|=TJ0`4alj?P0h#88v0Z7ft{~bqdlY}ops(BW z?Z6)bJPy$OJqw&t$NPFTf8%IQRSOwv#+%vON-Yv1waB*&&OfuG{4btfbPB&ar5|lD z#(VijcBby*>IS?YAO_I%hXJQl?Z-9f*bYY`8f<;r2^r|G2Yo2bVaI9Ak0PuC*g%=v zEp!)IKf8BeWJh8UEwy|#RxMfS`pxmV` z_Ic(THfyopRgbg0m&>L1Si`)>a_@5;UPv;xWg7JZoJ=%CiO2+2pet>_SXWFqIIZPw zXbtpQxI^28B`h>9j=(vRb(*sn=g&^qDYbFedUqV=;XherPEK$%pB}JdM?1&NGS5!$ z!%J`jo;B5}&UPXePCT)0ff-*E9cQ4K;O8;99`|Aj_z{V20ZY(#L-=$tu?Me1VAc}h zI2OXE3It*$z(@?Ad%+`zU?uP6gpSC>>HJ)V%aU>M;|vJl76HNY52LRJ;v_WVZdP^=0CXe31^!HTw=}Zxm`>)PE^l9RX;txOsz+U z0G|Yy3effQ4sc4lZ&mdYtJ%ALPN+Lk*UgUbrPhaGwj+GK`C*tu|1K_U-~-^fmYYi^=#x>u)cxPGaAWEz2z?mcqqO$_@ ztri}TlBqOT{T(#+l@qeypW5M&IO5)K6lPS&qw{4>T+ zV&D2YjY`)q|5xzmM)|0H4hKFLumGUT{}^yeYp+)2)_x7TU(WaXr8mdWA{@Hir<6AL z7xj2hJx=uWz2u5UedgcNXfn%S)ko9e0Mz}lFq*RMz8Rq|&|zcV31*qOwmksForho_ zXg|S#Jsbk5>1Jlb2ej%YHq;?Q6kEsvh}nA-4U0E1`#%<f1V<#WDHty7AD zPXJ5-=<)@=QRSQL*K5b};SSjPd3xfZ9=NsOJn?h^+gcFa=ktE%eKp|e0>6+in**$j z?%8~NB!QM$Ol=@L4F|eiFu39z4R@Rt;)tvec8vj?r8_6{#t7z?bcCq2u#U}`=uC$D z%q0}DGtk@aV_!uvKS?`5mp#J&IE;=vBx_7WX7V;j4|u;44i3*RVet47UG1`vBd(%I z%;I=wxLqJJ(9t`Kd>p{fi1e@>EP8O8n}|myID;^x$Fq<)V+%%>Tcx=lQRhk9bCpC0GK0+u;KOh8d&C#;;a-EQgQ zNKfU$gwh@sObZ+aIRg(iF*{8hkud^4gtE^PIimxEV2nxG3b_pD3pubIjpOo68jP~x zxikn)Tj>Q(6k$n^1+13^LDU@`G<_{U@wagJ^9??7;Eg_kWcrJV`jJ+ zU7Q>&LyEC@2|58`b;Ic#IhVpzg5EPr<)A=1RJkyKD8yAeg(7VP6*k)`8l9HQkKv+w zCZZWT-C%jj;5gWg^Fa_ru*@kxf;oYSp#nP2_y*rvhnTZ8gV=kX=N#eYUa-U?mVE5$?7{Df{7eay(jnI>F-zwxwbUy|D4d8o#ru%Q; zlnzc;AMkEvXDYfkF|u7tD!RwFqg&No(Vg&pYJG4F@MVBg0h(^<4~p)lM^rnH`TllV zu4;btt%8c1%tHzo`FQjF>N6A$CW_gY|U7*DdJ?8EpN2KQ~(L}=#e61Q=7v8|~xDXb9b9jTK$ zW}0wmvzxORE;Vo!j^bxCBo3`%Qxr(!5!evrd2~d?``P&nzjHd_R}AOMCC#NosUrPkhxZY%PgfOl#i!5?w{4=4d>x@Q8X)Z+l- z(Hw7me*{sVr^&alC#1KZywHnS_C4F_7=5C+?V=<j08*XgBV>%jidY=C2Vg*!7~%u@PGO{FU5c9cW!^L7E3|Fnz{K$o*Oa7q_-u>aTXv3)to zdry~jBYP8~W*gZJ{3g)*o^IWn4pjgzvS(t+QOt(Zag8&N=1x(}JZ?8K{)N)+g7X1> z{e!-)hs%LK2G|17{JphH@wan{>MtGlS&F~0OXtpMz=gqne6Ahr4%3?qS7m#TSJc#a z4~}s#Ltcdkar}NEMZ3f<-h_P^4`pKFumS=LN!*14RYp*n$I%vAEg%r64SEcPXP0Ks zlfsYmYc(9Ax0y(Lua!~14rhQdA3UdGuOdBJ>WwgUMn1mAk1Uz zh@1+j4@%j1Hik|bXf3>k^9>wUwbz>Xc$1@T^#^h#gXRg2g#O1}Z5Wn{{&(+~z^?JC zct@40-&sGU=C>1p*8>^>x_(asPU%2)#$FFY-_Am?EC-b~A2#qsxPe|GC?aCY;Gt6W zNJVcO@~gsE)UV$M{yE?)fTs5Ya7qvQerO%rlbUZdRg5TSr~w66n0<|7@1@kYj%zpW zxB7IecBjfY6Zo-!IRH(!4mhQQmUH?NFDS@f#r=8j;?|5(<=l+?s*oR*^Ht#Q0Nw>? zdLIL)^c%{VqPkac*FYb&PjPYSx1wM9uhh6Q5%>{+nE*}yIN+2Hq(5pWXTR4XuEvRH z)7ZV5!Gx!XA4j4-9Dz0Pz`Dh!y9xQ~@oXFL7Qj0IP4|7^lzt=KRN32;|MNcNjgm2{ z+&z9yt(%4ep9we`py{6poYH~x`=jU7kD4=gp*L;OlvRD1GOb|My*(2PRxPK};Ix`! z%NvExFb_5#I1-dOCE=VfED^Hvcmez#!(O<>(foctdQRn7zx{)L73h2IA9&%vv5p03 z{!adn;_pD~o*DHXYoiy;p=b>VJHWwKl@H_n=Mi}Ri}js7Y!@O~u=bP2f7P1%8?plP3vpchBlv*5^rtgv;9bm3wqRI_h*|6z(V z8Mt?6gE$QTIV=PC6fXWp7C@Y6F9;DKGBgN^uqc;<#Zi1VR8SW&JKxL^k9gVKO4nGJ zH!;zdxVW8}whjArSdsTv??F;tA=HsrY2q%9k@O{=R)D@ZpNX;b1%7=kGqLH8(;J=} z7;MCFP^xmwv@c^Ow(y72`~A4DdtllGk;i8fcfvbddC9cybJ!g37F4Wf4pa5M74@q1 zrGElm@?V_e19ZLr2{@$*{`pFeOVoU-=Xt;0QRlFte9?M?vlf1h={=71KA%HqNql#t z_c^xR=f&z*N5?@V&M(5p*SELi#u{uDApa{BiUctU~DeP`Ft@^@rWzAd?j2IGqU|XHCc( zhd58;5JPkv&3-R2tQ+}H%sQGOqDBQ<&gjNsaf106!Ek5ryd=dZXkp+(0J9(#fH_P8|=LQJVWK*jJ))^_*UTe05$`3eQpCz=|Jn^6PDJ_ zX`H*jzXY%r3i&X|ooejBd3Kl+X2`~$!z08PKAp-$pA z`R(}XHG8+`i3o^Sr_D#l?IG*Y>~^2)l$!B;^|)O&G|FX;@G< zcXHiQ&nT|u6c}Z9!m;u9_eqp6|7o6imltO#ZVa$shY7YxEe{IDyXq4v;b zC*u+)r`h3GI*75+?0~7k*wGMIM=QBN3E8Hnz|B3lM^hNMZKsW&=Ydn|IN!GO1JtZ( zgK>1wtg6KbKJp`i_8AtysD$ntx^(2z?9)ZxXrtR3IPMiTh61!4MgXUDFn@W^fv+9a zyqaaGku#1Dg7RhDumHwQh>WOqM_zWu=41T!kNmZM<{sb=03HEo`i}#r^c%`Oug!o$ zX={Fjw#GV&Vv}}Ct)C;uD!SNUw$UvG-V@Llpy^fur}V4kZcp`4=!kw~vkYq%QOzf+ z4L-e<$WNE^O5oQ6HUc!gTY*#h4dv7azf`}TT55j0B4156&4QCJAQzzNb^=c6 zSIfB<)qM+Ed7P4K4f50U&H}y~unwT$%=#Ra4xDANP&>u-T`( z9rd6)E`pVLbbqy+dr@tR@9<;C_zqRatMXPOUro0G_$h$X0lK_r0jG2@ z|J}jI>aM$&kdO6Bywb2%8pc@Ohqi+7Q}O9;MZTKu2f#l9eCE@ldHKM8y!)kgEM$AE zVI6Cf)Tnaxuv7U@1YQl84$$Q~5;&!UmTS;&FW5$(?$yXwm+KMWj{~;&w0@;r`=!=a zFppb&%u(fYWQtA+@Nz(JfG%GJa7qU&-++Pp_+9_VI`~~T`Sco)pDx!L;OhVv`!o(- zuDz%XK|OhX*IWI3TiWHj6Zm(49{{=>yMX^%Ir{fkCq1{>C3qshUQ})4*VIw^8j6rZNMoVtUeO`+uGY+y|{XR zJ!!5gPb82kPbKhSfRO-AcPwy92kuV?pqkgPo*|T_i%6C~LYZ&C6T~oxo zw|yolL=_L?6%RXn`c-M7O)oPK_%gt$08RgW;FMy195JnT>nMjFy|g6Y*GCms3n^HU z9VT`Vrvu<%4qh%62%!_=Zm=`Y#s#neYY3FHxO@giMx_W$19RD|K!J^2C2S{n0c=5| z5ge0X;hSv-1db<)tO&;mJHCm)#Q+ys;5+QD;Xo7yM*mEi4rB1oObg+7DK#uma_$il zZTsx$z~=$#0J@x~0H-vjR>@hP*Zz7rr!OIqd$kU8p*8$I#x}F=WUjP}z0MKW4C**o zRZca%)4Y@UQ8-wb+SVYq)+zqBf&O67r}p?I@bq-7Z2+3TOMp{y{J8BpPTs!!dEZb7 zO)nH3b)FWs&GybW*5Z7FwXnY4=Sc5!Hkr`vVp{^nt6(%Im~N$qc?32Gum?;J4u#q9 z6uuA}qa57xlL-jounHj$;1OJ8;Z_6tJccv%${adcc5lhO*l7m2U{A1&9cIO;a!VQ%zgL4F&F@y=e+0bf z^GNec$MJvP`W)*IgSubMQ&({v2L_Kb-h*jPxm6DN`1B&-6ulw9M*_wHw0sT+PO0Ph za7VhMmozpmZ$L0^*xq~Yx)t6h4Q)+q8T7roD8kc^h@ZERW`KVDC^Zq3oa~nybY_7L zwdW^+{|wjz(0u$WqWHMTzxU?1j4RlhsBs0B!{1n!kmc~5%zIp_9?!#e7+=owKIeF! z_o}~CcrUoklj`-Qba-C%qXRmOGdLTPa5K)okl7D1vpm04+`!=Fi{QLrj`-b(>svs- zaSDe)FL11R1rsoryns0uGdSg1(cZjMK@b|5F7ToV-oTs!=LCWES70@hYuHQ^PINd` zLx2!l1OlhXmG~wQBn1jAnq)@cC^Ne%>UHUBE+G z!pHz(j0x5PYRAoIDn26FDL&%B zhXJYpnvc=I_s2&&y;Db)#-`SxNr08RfH;FJ!yZ$Bt? z(o^i(OCeKzmMXWClcL)n_%OgofTlYZIHg~gzb-Bo5PL0Y^BT@<6aJ@I{{sx~`c3b2 zqv~wMM>FVXedvS0p9VY!(0ptIPN}26YR6)?@4szJ+PsF-+F1CA88!ecKs)QP;N@G{ zr1;3sP03>z@G*di0L{k~;FLPb;~?$8W6^T}%&XqY5LIy(`xtTnAif}u#5_f0$vKMt z)yQABgU5lt2zV8s>9+u<^qbp3JL)xeQ6%r{85EMc7y?mR07SgA`oTU9UBOGu=PEu* z@>1){{=kO;MglY+lYvv(=iK#Fm}V?mR6+5gd@HV+Q$e*0^wK|5=PQWv{Lt|M@Ajdk z77Vw&Y>evj{PH7TeGYOr@IL~!0W{t3fK$?O5%m3?OZTQbc`Pkp8%ChohXAgoE$9G% z#2D~1jGVoFAodD9;7dm?y`@ZMPYlzZVKCxB!Rgn62_IRBA89SbWjcpwHgSKC;yf-3FgYQ>@*qb1K;o* z`169d@n98GZP*-UBcug#X}VDHxdVLYcGL>oDZt(cp!tjgr!?93kJ9{VKF8NC^Vw{8 zgrngk0DS>rKzHae{=@!h8qKicDuio99`A+=t!%q22VwBN)4g&r2>Z)&8IfM3jak-d zxaD*_>w<$ICDEpf6`yOthXX!Ho;Lu$4X_EI`Md`>rIwCyvi$b$Z9=Bjk6l?y7b9gg z3|!(Ezp%rNX8|}{32V(ki%)Mi@+(1pL=T4KMkhcQfTlMXIHi5;PknmRYL^|pr2d3O zOXe>0de|E3S)Cz}UvNhn?s|yAE0F38aXp;wJX>H7m!3@Jc8e}%ESLJR3of6O? zKJEqn7+?!P^YI;UO8eN)_!Tr?ij1lFxsA?J4^y0I}QzgBa|Sny^PPk_fzkb87^0BQxiK2=ynU z<_1{);o+sGX2nkn=ncjiIypH+O@!W`LdGQCJH0a>jJ# z6X0wc%M2faztLrpNAr<9Fo+Ldf#2cRh~N{pN<;9XD<0A*Gg8o}67J;VoTEEc7R!=x zc4ar&eOy|&M0A}Lm?UJL%*W*?EEBq%GsUEgNph0NH78NigNuKX^|!F8xsusCxb+;I zUILG?U~%9$z!t_ToZfP3s5tO;Dxk;aYm{7jbV=L(==;7GLnPbeph=h{Kan>HGqB-m(Gg!tZ zvV>JfyF1l#A~&e=ImM}VTn>B$U<^Q)?@8d4v>l0~{dE0y+`fEXR~)&_yY~epJV%xA z4wMiDMZ_$xpl>_IU5IQ=cXjl~M%v2E^op8bW}aOD-xa$jKMZ$4lQFV{IZO}->***O zM-i#G3Si6u5l~S>Xi6nsah+~v0m2(*i%3;h>MnhuDD<9)mnf}MvQX}uO)Fwg#rAp$ zoX^;~RND+0;QtPfRzOs#B=%O+~^WT zfCjV(j++W(5SQ(gA2oxNK-aZ=Ilv?Vm$MY&{ zAsgQ|;BLN6@wFLr^?d#c@a=&20h+I`fK%GXKE`jS#8>sQ#=W^}Vl`A*T~S%9IBpuC ztKIuR$I=%ee!xpiZ4teEYi?J3RF3vZ`=Gmk-wU|EUH<#TmuQ<0Q~4i0r=G%96(ava-11UL`ET^| z-;KPq9A#HwxPVN6mSZR2lnx}vDGTS-(Uv-^p&BcVHGH8lvj__tX&56t^W4ZCN=`M% zN6$y~z)u030nl{L15W8c`-iD;rzJAY?8HmZV%ETe)|l@bi5`Y9Yp5PCZS?82AipYn zL-XIqz`p{t0yMp!fK&Q(mKvY6-b2?9T`xk*38J}?ok~W)Yxq^nIID;^P!BoM*Em(( zsmfPXmRi3|1wIon8=&c(0G!f+)-TD$T8>9}a$JPQSA?s$Ajnbe?VLCJ^fn{E668na z+Y0?8)i|-fc3BKjmHk%;IIrex>cr_)2u(Yc*|<6=U!yd9XcW9Oo4{RPtEM z@>qMqXU&sC$z6)SS)i}^I}P}1zy$!!-)7*yO>Q(wbYPFfcDyIHbGY#)xC>dfci$Bb zOK^ZmaVacB#P69U91h=;Bn|O5GV3S^u<~xj-)_*?{1umDo&!_@G=J5=e;a?3(OVYH zIh9U~_Nv>9QZj7f#s6(YMr$jg)nL^kuS=v>t+hh6DpjkgwMwl^T&mQST5V}x zTWM>nwSDdX``mL+W(Wz=|HD>4AF+9FGZo^3a%+*>gInohBbD2Bp(wH1bq%9I)xK z1X;pC{+pxxVEinlV)dd`OL^kiW4zt$Cq6+o34cT1rrBmWoJ*?kWg)vm>DhJHwVXzo zCHJMBr*E?zrJ5fadv?NiK73OD{S^5X@CLB4dE}?T=F^Ew7oWFk-C5Yu zr^WlFd%LGvyv^!%PmK8*!)|s;R7gOv>%!~8q`a1cj`88Kd>2=rsVasK90DW;ochm* z0kaa~2cWy(8%bvm^s9yxW%bhivj#BanqHF_dPIL5dinlP8DDPIu{)GHK5S##9y0N$ z8Io?#ry$P+^}xnsKC*D+I+Sm5!E|vmM=StOY=<}VwW|irA(&|kySE|-OZ1`Hx zXX}9nkskw30?YR-vV^YMA6i$Y)@FnqA?Ox{bQ_${p*un7W_o>G-ki3GFEupHHvqXB zj0Bc%Eb^E0QOZ`DeoLD2^6UiOUja59mi}4m&RV{N#svbo-hJ(wl_rXYXH&%E>@w-t zhR*reEA_)4ko{`b0D(=%QOFV=kNl_X`Tl|9^s2$DR>|2y2xlS4-OfX|S-%}~=HosgKeiBic$ILu+l`ovqAE;q*l-Lp zc|E*RB)lHu93sWdwZv*ks=GTfsAWd&*m!rhzv`*S>k^gX#3RV#3letz#Kf-=`|UXQ z>&RQdt-!`_2eO2&#@8(6tzMH}&}+i?yA0jJJIH-DcWven2iH}}n6iYL>~z0d4CmQ$ z2!Cxjz-@ZM*s&iTJHATPur3NxK!TL_gZA4;?U~`9w{%tGnzf78if^03GF74huXs?6i|C=Jdsu5|vF~}3ZWMKJbAxr3r&u%8lApAg= z#gESIUUVQ~tBK!M^x69GF61AAhk@mL8d<^>U9>ZkxT>D`l{Czt9vnqIxS6YBoF8$t zZXiu#H*d78XdK}!w)J33#G4wK=B-2?3Pu3SI|2Dnyi`%EmxlZ2I#55|Id$DnO?)?@ z*T(l&^wORUEuepcQ&uVze*i(8$x*i&iTnoknYtLL{ z30=)=NBzDvvIR)WF$4IG(%s#xZ{*G#w*5$FwJhrLb<@3Nh;l~8e75s5V@C@-_3+4Z z^Z@cx;8|ep_ye+p(1(4?F@*-@F$Wpu_zNayHeq9i8Ss5qTjv z16clL$P)HNep);B1JnGBAB|gFs)p0(o^93}ofk1+u5{04**TELXH2|zqSwZ|75N45 z3b4F;ktK8)Zz8=kJSNqomPpGn<5EfWHVP%FUK|^$yZgsUr7%Ztlm?^jS;Jd(WV-$v zi#!QT1D1C-vV@OL>%1IFelJ_Ga;ZEDrq?TV?ql;odl=*c-XBI~V7e z!`wk^vFsM2Ti#G9_0zqtDduAv-HS{Ox$_q$9csp;%l#DOlfXh??YazE!tQ6Ibl76v z?KnpE1IP@Nwe9=HwwB1Yf4I)_(6)Gf@~lp+!wuF-#_ zw?o0L=6NmV(x7xc@{44+UvH}ZA3KOff5nT&p3mT`;Iou3_6a)OKzCs68G|gLtM%V0 z8yZdJ#T2P(QH#YH$Tj*4<$QoOwM;-2bINQGeLz#H7*2E0o79;q`Mc*)q&1W!D& z<67jKz&2p*xD#1ISL@zW&kxTX@=T4R?zl#uf~W5?@j)*Y*TnR?cT>c-AAL3-oU!Z; z1l@q;8;LBTt9+QYc)6LdrBmH8BOZtyenvF5Me&EP0zS!yX5`z!oxs}j6taY_@&S8R ztqFTN&1z+4!T5+(c$1hG*UKHA zG;5b+mW;1yXB#eK$A%@NS7#;TSp7goIcn>O= zJ0d#Cu07au*w0PFtHz$1ap`to67q@Q6kzSS2w6f`{b2eEw61sYh zu&Z%}lp~&`so|5-u^8}ZeSPnVM!$P2(3!16UAOX#Ye4cCus zHM{44YW7p@{4r^&*<%h>&7PW3%{mRQn{;S{*N%(cMgBAR8?bhY{00c+1lWC>l>H>)xx70$`5Z~j*~cje2jpDr7sX_@s+^RJCPP4L-qPc!oE;7(xe zc?wxVSK}V)KXda04|vD=?;iz+U;j0|Y3xbWrPHSzxf&b+tUV_nOZez3rvK1!9bnqJ z^`=y}s14z>eTI3q|IQ>_VI_WTyG)*X?-V`7cJrO4w~Re4@KwMk`Sl?3Q{Y)(?fDQ{ zLRa}UjmzX$FJ5HIP_ycoWe;G}VP#q4+s2-niD`T4kmrDTz}mAG`B3(VlY($&l>F*w z%xB#W(-;UE-ZA#H!e`6ROUUnm4}i5NHp$qt`)ek@c3*Q~e{`nJul;JTxy0?_kHgO1 zfAC;kWNM*lhpL4ZOD&|sfttj7@4LpX`S8~9S@P{Hf_Oo82AJfh)#g%%+!5K!c zI36x^d295{@Y!$st+8h-d=>CXe%*`wWAFs9_PmWOp{wV9?(z-mm$cW69iOx(N)Go) zYyH63Q#CdHoE?cg4IB@wJ*$u?=nXTEMl(VUOB^O9`SzS-}{wI9CesAoU4v)2C0rGON3RpX? zMwZZ(9rz5f^M(hTa?4?v66&wmXYAPnpY3;ig#2%@<=C`6<;W7Uqw~`p+p)9S=ZB>8 z(WY3ol}hLgQweR?&YRfO5GGIN7?@v}QRhbQ^sqIn|AVn-IegZhi;=GZTYycU9mo=% z?r=`n&Ks;dz@ApT5L zUclNj7Fj}9^^Q!QnR%pxYo5zF+iaa_H2UBmY-XZe*hi;)}A(G38zKpi=DF$ zY{$s2jQL;o*?rCIvpZu)m_Q7_?!&4nVFH!VX4vVT_6$3fX^V9C!)gA=*i|tjZP#ez zso*$Z?OKlfC3a=3|955=9@75{yITHa?AiryJ;YK!K8O4!cn?^+*zp_MRTZtHcTBIf z>;s7Ag}KHxy1#Yp$6;c9$YgmBX=2YixW>*Lhuxs4w&$BJTk2zDS3SJbBfA=q8^H!( z?YbFR!be@qS4%r$=7n3;cT5>S+m!Jg+W7}odi%T4u@?J4|otNgf_NXtmAT3Es-6 zd2<^6V(d8|K5Nfa$Tx%AfVJmwD0A7_Z_x9O@B4^;6lGW--?k3fFZ!zGXq(| z^k}`w`cbg;ldKw>n(}^AQ!X<#<-^PwV$70*OOj2Tb2$-7v5P|M-;6z5BR(nLcOgFv zo&(mN-$j47cG!1oPjp_hgacQq;a1s-Rn2j)Yju78$mGO$eoz$G`FQ2R^VaoQ^=~Cd zKA$u3W1YWW7k#YtTgjs5bJ(VhQMLLxV_e%O#;%%K>G_!H$aBGbVC^~$SwhEian>%* z<;e{r}^)O_a5}7_$=x1G;$mG6|lU&MwZa=T;M^xnM=1NoCQ^l zmn)8iH0wWbAP}$@npw;C{Al`z;jfyV=AVQ-3!Dfn|H;UQ$KSrRYuIOp!CB zL|*r);cYg0ntNZmHb7q%SiSVA&Eh)5pVsRbUl40 z@=~w@NRTg1zoS#$BOyKq;&YsZme{@@nz-gOlWx1=uxzSTY$4!wRnEKN= zvU?LtV%|npiLBQv?vePXiDxVNO3^3f<2B^>zz4wc?L(H(wZEPWwvxt6c^9 ziag*fGcI~sBfgpw(tIZ)pAHrQ%eMqsLdWMnBYw81&ZP?_8-v?7kdi`$^^1w`=jsy2 zyM&cb{EA1u>gql>@!g63_V^;d2Yw4I|L>3`ba^iJ(CpPXE*vl?z=Ac7$MWoHxGM=n z-_D4?=EOAreB`fy#lZ3}LzZwD@wZ2kV0?iSB&D=EqiO37U>A>i= z^ZgO;J?ORZ-i`bccokUQ*O4V0cD|=s=KnMCPMwrqPZ)$e6x09-QjgVkx&OL-|J+QTZ@!#Q+nVq6$q)b4*%|3? z%+P-|^0nal|4u(g88R9Ag$!+x{ypfj>9-&GQ}8cf)9(vp35TkOM;vj4I8d`SaYI;6 zE^<72$kTMSSr4iI!lc*qlhb@>AfFA^0L!-ySwff3<*5g-l{9`$4y;O5{JHuO`2?Kh zdQy8wG4&tA+lt;=^h*8zD)P;z(2oX|_pSL6@1g_y_3P<|RIkRr;@tI1CNJL*9(Z9v z>H#;Lw4M~c&d7Luz^qg~V%}ahZ_k^zE#~d`@axeBqv3?`S5v~*H_f+pnzxs9_{*W; ztNHTEQ2uK8`lb2#K73Fz)KYmiC0e!hWThxUQc(ZpU3Y1UO~_J z`BOI}FO2ERuX2WSjtVZKk&d-Ta>6f_|DyVmD4t3b7x-r^jm-%YA{dJ8cq!j3>aLOk z_Dv6WU+($d(dw)EvxNIq@2`pI(=)DJplD9XD3|f&g7o~rOymXNbYRQhMq~-QJKXaV zmOpN4T)dnr!b>g2#aj*t$iJ^To8+=?_OElY)x$M`&c`QsZjhT5a3sLvg^j`@e9*ef@2?o|5wX86FUEq@Is8ZoDUFXE-9&!!416oZR?R?DllC-7GFIp%nCr z#{;(f%OyTRcvBZ!`QtGz0Ho9Wy5cBMP$<`X>~sp)*}i+mI~2H5y4L6*>Q-@S>?`ZX)aR+f0=##nqe8NX<~t_z<}?%@2wuk`wO z#kpRhjA6qNE;?rz;Z>F-6s`hr{>G~uSYGDg6yKzDW3jPoC%hs_e*YAC4|oSyyLz8y z?AmvusqYR*XLHF?bS#o-`rqSlf@PoA&1`+K%+_z!Ts(7UtkNsMr@Y4%+j0+VztDTU zpG^t$xlKh6ip7#~Rjmj2_XiNaagwC|n82kH3Akbai+_PTI#Tt=O6Qsg>@PL;H)3B^ zWdG&Jo58if+J6(Wgnk|NwT9_BPb%&9!?e+UxvdNi_QVd_FW24h?M0t$AO4E0PxqYw zSiVYR341&2TTAn`J5eZa)qhe?YSpU8J{cCwm$|DV7|z}GNh+|w)5=dS(9`^3UXC2H zeo%SqRHf7>654u1@rQ3dpC$h`A>Ryc1J<6078`qd?KAne{_*Htq8`S7V)(GMTh*t{ zyK~Y@o@(